summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMarcus Huderle <huderlem@gmail.com>2018-06-25 17:50:27 -0500
committerMarcus Huderle <huderlem@gmail.com>2018-06-25 17:50:27 -0500
commit605f8ac1141daf66d3428923e004f82f5a5e1594 (patch)
treea3e5fae5d271175c7f10b6b455fcdc7f0fdd553e /src
parente88e39d5fda1644f77e41fd652d4310612da7532 (diff)
parent659437f07a44b6f560bb58d6c12d141ed8ba7643 (diff)
Merge branch 'master' into contest_link_80C2020
Diffstat (limited to 'src')
-rw-r--r--src/battle/anim/alert.c33
-rw-r--r--src/battle/anim/angel.c24
-rw-r--r--src/battle/anim/angel_kiss.c50
-rw-r--r--src/battle/anim/anger.c31
-rw-r--r--src/battle/anim/aurora.c48
-rw-r--r--src/battle/anim/battle_intro.c2
-rw-r--r--src/battle/anim/beta_beat_up.c27
-rw-r--r--src/battle/anim/blow_kiss.c18
-rw-r--r--src/battle/anim/bottle.c42
-rw-r--r--src/battle/anim/brace.c36
-rw-r--r--src/battle/anim/breath.c45
-rw-r--r--src/battle/anim/bubble.c53
-rw-r--r--src/battle/anim/bug.c230
-rw-r--r--src/battle/anim/bullet.c31
-rw-r--r--src/battle/anim/copy_orb.c41
-rw-r--r--src/battle/anim/cube.c42
-rw-r--r--src/battle/anim/current.c1348
-rw-r--r--src/battle/anim/cutter.c144
-rw-r--r--src/battle/anim/cyclone.c27
-rw-r--r--src/battle/anim/dark.c228
-rw-r--r--src/battle/anim/devil.c31
-rw-r--r--src/battle/anim/dragon.c228
-rw-r--r--src/battle/anim/draw.c20
-rw-r--r--src/battle/anim/drum.c32
-rw-r--r--src/battle/anim/egg.c130
-rw-r--r--src/battle/anim/energy_wave.c164
-rw-r--r--src/battle/anim/espeed.c70
-rw-r--r--src/battle/anim/evasion.c8
-rw-r--r--src/battle/anim/fang.c27
-rw-r--r--src/battle/anim/fight.c462
-rw-r--r--src/battle/anim/finger.c256
-rw-r--r--src/battle/anim/fire.c178
-rw-r--r--src/battle/anim/fire_2.c322
-rw-r--r--src/battle/anim/flash.c2
-rw-r--r--src/battle/anim/flying.c635
-rw-r--r--src/battle/anim/flying_hearts.c14
-rw-r--r--src/battle/anim/flying_path.c80
-rw-r--r--src/battle/anim/flying_petals.c108
-rw-r--r--src/battle/anim/ghost.c617
-rw-r--r--src/battle/anim/glitter.c51
-rw-r--r--src/battle/anim/glow.c55
-rw-r--r--src/battle/anim/grip.c40
-rw-r--r--src/battle/anim/ground.c125
-rw-r--r--src/battle/anim/grow.c16
-rw-r--r--src/battle/anim/guard.c35
-rw-r--r--src/battle/anim/guillotine.c44
-rw-r--r--src/battle/anim/heal.c27
-rw-r--r--src/battle/anim/heal_bell.c132
-rw-r--r--src/battle/anim/heart_1.c13
-rw-r--r--src/battle/anim/heated_rock.c129
-rw-r--r--src/battle/anim/hidden_power_orbit.c120
-rw-r--r--src/battle/anim/homing.c22
-rw-r--r--src/battle/anim/hop.c66
-rw-r--r--src/battle/anim/hop_2.c20
-rw-r--r--src/battle/anim/ice.c495
-rw-r--r--src/battle/anim/kiss_fountain.c13
-rw-r--r--src/battle/anim/leaf.c246
-rw-r--r--src/battle/anim/love_bg.c6
-rw-r--r--src/battle/anim/lunge.c339
-rw-r--r--src/battle/anim/lunge_1.c124
-rw-r--r--src/battle/anim/lunge_2.c163
-rw-r--r--src/battle/anim/money.c56
-rw-r--r--src/battle/anim/moon.c14
-rw-r--r--src/battle/anim/musical.c393
-rw-r--r--src/battle/anim/noise.c18
-rw-r--r--src/battle/anim/normal.c240
-rw-r--r--src/battle/anim/note_rain.c25
-rw-r--r--src/battle/anim/note_scatter.c54
-rw-r--r--src/battle/anim/note_scatter_2.c57
-rw-r--r--src/battle/anim/note_spin.c51
-rw-r--r--src/battle/anim/note_wave.c143
-rw-r--r--src/battle/anim/orbit.c89
-rw-r--r--src/battle/anim/orbit_fast.c63
-rw-r--r--src/battle/anim/orbit_scatter.c31
-rw-r--r--src/battle/anim/orbs.c207
-rw-r--r--src/battle/anim/osmose.c31
-rw-r--r--src/battle/anim/perceive.c30
-rw-r--r--src/battle/anim/poison.c202
-rw-r--r--src/battle/anim/powder.c54
-rw-r--r--src/battle/anim/psychic.c468
-rw-r--r--src/battle/anim/rain.c37
-rw-r--r--src/battle/anim/ring.c312
-rw-r--r--src/battle/anim/rock.c325
-rw-r--r--src/battle/anim/roots.c81
-rw-r--r--src/battle/anim/scan.c52
-rw-r--r--src/battle/anim/scary_face.c12
-rw-r--r--src/battle/anim/seed.c37
-rw-r--r--src/battle/anim/sfx.c8
-rw-r--r--src/battle/anim/shadow_enlarge.c4
-rw-r--r--src/battle/anim/shadow_minimize.c4
-rw-r--r--src/battle/anim/shield.c16
-rw-r--r--src/battle/anim/shimmer.c17
-rw-r--r--src/battle/anim/shock.c65
-rw-r--r--src/battle/anim/silhouette.c8
-rw-r--r--src/battle/anim/slash.c79
-rw-r--r--src/battle/anim/sleep.c61
-rw-r--r--src/battle/anim/slice.c62
-rw-r--r--src/battle/anim/smoke.c22
-rw-r--r--src/battle/anim/sonic.c243
-rw-r--r--src/battle/anim/sonic_task.c152
-rw-r--r--src/battle/anim/spin_finger.c73
-rw-r--r--src/battle/anim/spit.c31
-rw-r--r--src/battle/anim/splash.c16
-rw-r--r--src/battle/anim/startle.c17
-rw-r--r--src/battle/anim/strike.c49
-rw-r--r--src/battle/anim/struggle.c44
-rw-r--r--src/battle/anim/sunlight.c25
-rw-r--r--src/battle/anim/swipe.c37
-rw-r--r--src/battle/anim/switch.c70
-rw-r--r--src/battle/anim/sword.c27
-rw-r--r--src/battle/anim/taunt_finger.c56
-rw-r--r--src/battle/anim/tendrils.c63
-rw-r--r--src/battle/anim/thought.c64
-rw-r--r--src/battle/anim/thrashing.c24
-rw-r--r--src/battle/anim/thunder.c29
-rw-r--r--src/battle/anim/tile.c219
-rw-r--r--src/battle/anim/tile_in.c51
-rw-r--r--src/battle/anim/tile_out.c81
-rw-r--r--src/battle/anim/twinkle.c30
-rw-r--r--src/battle/anim/unused_1.c64
-rw-r--r--src/battle/anim/unused_2.c90
-rw-r--r--src/battle/anim/unused_3.c49
-rw-r--r--src/battle/anim/unused_4.c58
-rw-r--r--src/battle/anim/unused_5.c13
-rw-r--r--src/battle/anim/unused_6.c26
-rw-r--r--src/battle/anim/unused_7.c21
-rw-r--r--src/battle/anim/unused_8.c54
-rw-r--r--src/battle/anim/unused_9.c20
-rw-r--r--src/battle/anim/uproar.c16
-rw-r--r--src/battle/anim/water.c188
-rw-r--r--src/battle/anim/wave_finger.c39
-rw-r--r--src/battle/anim/whip.c93
-rw-r--r--src/battle/anim/wisp_fire.c49
-rw-r--r--src/battle/anim/wisp_orb.c55
-rw-r--r--src/battle/anim/withdraw.c2
-rw-r--r--src/battle/battle_1.c470
-rw-r--r--src/battle/battle_2.c882
-rw-r--r--src/battle/battle_4.c1728
-rw-r--r--src/battle/battle_7.c169
-rw-r--r--src/battle/battle_ai.c106
-rw-r--r--src/battle/battle_ai_switch_items.c1008
-rw-r--r--src/battle/battle_anim.c86
-rw-r--r--src/battle/battle_anim_807B69C.c6
-rw-r--r--src/battle/battle_anim_80A7E7C.c58
-rw-r--r--src/battle/battle_anim_812C144.c1843
-rw-r--r--src/battle/battle_bg.c863
-rw-r--r--src/battle/battle_controller_linkopponent.c706
-rw-r--r--src/battle/battle_controller_linkpartner.c659
-rw-r--r--src/battle/battle_controller_opponent.c812
-rw-r--r--src/battle/battle_controller_player.c1162
-rw-r--r--src/battle/battle_controller_safari.c144
-rw-r--r--src/battle/battle_controller_wally.c448
-rw-r--r--src/battle/battle_interface.c570
-rw-r--r--src/battle/battle_message.c80
-rw-r--r--src/battle/battle_party_menu.c52
-rw-r--r--src/battle/battle_records.c8
-rw-r--r--src/battle/battle_setup.c110
-rw-r--r--src/battle/battle_transition.c21
-rw-r--r--src/battle/battle_util.c652
-rw-r--r--src/battle/calculate_base_damage.c16
-rw-r--r--src/battle/contest_link_80C2020.c148
-rw-r--r--src/battle/contest_link_80C857C.c2
-rw-r--r--src/battle/pokeball.c54
-rw-r--r--src/battle/reshow_battle_screen.c66
-rw-r--r--src/battle_tower.c111
-rw-r--r--src/berry.c59
-rw-r--r--src/berry_blender.c143
-rw-r--r--src/berry_tag_screen.c6
-rw-r--r--src/bike.c148
-rw-r--r--src/braille_puzzles.c17
-rw-r--r--src/cable_car.c30
-rw-r--r--src/cable_car_util.c8
-rw-r--r--src/cable_club.c4
-rw-r--r--src/choose_party.c114
-rw-r--r--src/clear_save_data_menu.c6
-rw-r--r--src/contest.c300
-rw-r--r--src/contest_ai.c13
-rw-r--r--src/contest_effect.c1163
-rw-r--r--src/contest_painting.c21
-rw-r--r--src/contest_painting_effects.c (renamed from src/cute_sketch.c)2
-rw-r--r--src/credits.c26
-rw-r--r--src/data/battle_moves.c4268
-rw-r--r--src/data/battle_strings_en.h4
-rw-r--r--src/data/contest_moves.h532
-rw-r--r--src/data/field_event_obj/base_oam.h (renamed from src/data/field_map_obj/base_oam.h)0
-rw-r--r--src/data/field_event_obj/berry_tree_graphics_tables.h573
-rw-r--r--src/data/field_event_obj/event_object_anims.h886
-rw-r--r--src/data/field_event_obj/event_object_graphics.h1319
-rw-r--r--src/data/field_event_obj/event_object_graphics_info.h227
-rw-r--r--src/data/field_event_obj/event_object_graphics_info_pointers.h448
-rw-r--r--src/data/field_event_obj/event_object_pic_tables.h1879
-rw-r--r--src/data/field_event_obj/event_object_subsprites.h (renamed from src/data/field_map_obj/map_object_subsprites.h)172
-rw-r--r--src/data/field_event_obj/field_effect_object_graphics.h149
-rw-r--r--src/data/field_event_obj/field_effect_object_template_pointers.h (renamed from src/data/field_map_obj/field_effect_object_template_pointers.h)4
-rw-r--r--src/data/field_event_obj/field_effect_objects.h (renamed from src/data/field_map_obj/field_effect_objects.h)106
-rw-r--r--src/data/field_event_obj/movement_action_func_tables.h1356
-rw-r--r--src/data/field_event_obj/movement_type_func_tables.h438
-rw-r--r--src/data/field_map_obj/anim_func_ptrs.h1519
-rw-r--r--src/data/field_map_obj/berry_tree_graphics_tables.h573
-rw-r--r--src/data/field_map_obj/callback_subroutine_pointers.h442
-rw-r--r--src/data/field_map_obj/map_object_anims.h886
-rw-r--r--src/data/field_map_obj/map_object_graphics_info.h227
-rw-r--r--src/data/field_map_obj/map_object_graphics_info_pointers.h448
-rw-r--r--src/data/field_map_obj/map_object_pic_tables.h1879
-rw-r--r--src/data/items_de.h698
-rw-r--r--src/data/items_en.h698
-rw-r--r--src/data/region_map_layout.h2
-rw-r--r--src/data/text/easy_chat/group_name_table.h29
-rw-r--r--src/data/text/easy_chat/group_orders.h51
-rw-r--r--src/data/text/easy_chat/group_sizes.h29
-rw-r--r--src/data/text/easy_chat/group_words.h51
-rw-r--r--src/data/text/easy_chat/groups/actions/order.h168
-rw-r--r--src/data/text/easy_chat/groups/actions/words.h166
-rw-r--r--src/data/text/easy_chat/groups/adjectives/order.h84
-rw-r--r--src/data/text/easy_chat/groups/adjectives/words.h82
-rw-r--r--src/data/text/easy_chat/groups/battle/order.h138
-rw-r--r--src/data/text/easy_chat/groups/battle/words.h136
-rw-r--r--src/data/text/easy_chat/groups/conditions/order.h150
-rw-r--r--src/data/text/easy_chat/groups/conditions/words.h148
-rw-r--r--src/data/text/easy_chat/groups/endings/order.h150
-rw-r--r--src/data/text/easy_chat/groups/endings/words.h148
-rw-r--r--src/data/text/easy_chat/groups/events/order.h56
-rw-r--r--src/data/text/easy_chat/groups/events/words.h54
-rw-r--r--src/data/text/easy_chat/groups/feelings/order.h150
-rw-r--r--src/data/text/easy_chat/groups/feelings/words.h148
-rw-r--r--src/data/text/easy_chat/groups/greetings/order.h96
-rw-r--r--src/data/text/easy_chat/groups/greetings/words.h94
-rw-r--r--src/data/text/easy_chat/groups/hobbies/order.h120
-rw-r--r--src/data/text/easy_chat/groups/hobbies/words.h118
-rw-r--r--src/data/text/easy_chat/groups/lifestyle/order.h102
-rw-r--r--src/data/text/easy_chat/groups/lifestyle/words.h100
-rw-r--r--src/data/text/easy_chat/groups/misc/order.h96
-rw-r--r--src/data/text/easy_chat/groups/misc/words.h94
-rw-r--r--src/data/text/easy_chat/groups/move_1/order.h318
-rw-r--r--src/data/text/easy_chat/groups/move_1/words.h162
-rw-r--r--src/data/text/easy_chat/groups/move_2/order.h400
-rw-r--r--src/data/text/easy_chat/groups/move_2/words.h203
-rw-r--r--src/data/text/easy_chat/groups/people/order.h162
-rw-r--r--src/data/text/easy_chat/groups/people/words.h160
-rw-r--r--src/data/text/easy_chat/groups/pokemon/order.h416
-rw-r--r--src/data/text/easy_chat/groups/pokemon/words.h211
-rw-r--r--src/data/text/easy_chat/groups/pokemon_2/order.h514
-rw-r--r--src/data/text/easy_chat/groups/pokemon_2/words.h260
-rw-r--r--src/data/text/easy_chat/groups/speech/order.h132
-rw-r--r--src/data/text/easy_chat/groups/speech/words.h130
-rw-r--r--src/data/text/easy_chat/groups/status/order.h230
-rw-r--r--src/data/text/easy_chat/groups/status/words.h228
-rw-r--r--src/data/text/easy_chat/groups/time/order.h102
-rw-r--r--src/data/text/easy_chat/groups/time/words.h100
-rw-r--r--src/data/text/easy_chat/groups/trainer/order.h50
-rw-r--r--src/data/text/easy_chat/groups/trainer/words.h48
-rw-r--r--src/data/text/easy_chat/groups/trendy_saying/order.h78
-rw-r--r--src/data/text/easy_chat/groups/trendy_saying/words.h76
-rw-r--r--src/data/text/easy_chat/groups/voices/order.h138
-rw-r--r--src/data/text/easy_chat/groups/voices/words.h136
-rw-r--r--src/data/text/easy_chat/words_by_letter.h8
-rw-r--r--src/data/text/easy_chat/words_by_letter_de.h2046
-rw-r--r--src/data/text/easy_chat/words_by_letter_en.h2042
-rw-r--r--src/data/text/move_names_de.h357
-rw-r--r--src/data/text/move_names_en.h357
-rw-r--r--src/data/text/species_names_de.h414
-rw-r--r--src/data/text/species_names_en.h414
-rw-r--r--src/data/text/trainer_class_names_de.h60
-rw-r--r--src/data/text/trainer_class_names_en.h65
-rw-r--r--src/data/trainer_parties.h9815
-rw-r--r--src/data/trainers_de.h9717
-rw-r--r--src/data/trainers_en.h9717
-rw-r--r--src/daycare.c768
-rw-r--r--src/de_rom_8040FE0.c2
-rw-r--r--src/debug/ereader_debug_menu.c362
-rw-r--r--src/debug/kagaya_debug_menu.c16
-rw-r--r--src/debug/matsuda_debug_menu.c10
-rw-r--r--src/debug/mori_debug_menu.c4
-rw-r--r--src/debug/nakamura_debug_menu.c2386
-rw-r--r--src/debug/nohara_debug_menu.c965
-rw-r--r--src/debug/sound_check_menu.c262
-rw-r--r--src/debug/start_menu_debug.c7810
-rw-r--r--src/debug/taya_debug_window.c1085
-rw-r--r--src/debug/tomomichi_debug_menu.c4497
-rw-r--r--src/debug/unknown_debug_menu.c2
-rw-r--r--src/debug/watanabe_debug_menu.c3749
-rw-r--r--src/decoration.c341
-rw-r--r--src/decoration_inventory.c139
-rw-r--r--src/diploma.c6
-rw-r--r--src/easy_chat_1.c4
-rw-r--r--src/easy_chat_2.c34
-rw-r--r--src/egg_hatch.c26
-rw-r--r--src/event_data.c2
-rw-r--r--src/event_obj_lock.c (renamed from src/map_obj_lock.c)42
-rw-r--r--src/event_object_movement.c8045
-rw-r--r--src/evolution_graphics.c10
-rw-r--r--src/evolution_scene.c54
-rw-r--r--src/field_camera.c432
-rw-r--r--src/field_control_avatar.c511
-rw-r--r--src/field_effect.c551
-rw-r--r--src/field_effect_helpers.c590
-rw-r--r--src/field_fadetransition.c134
-rw-r--r--src/field_message_box.c2
-rw-r--r--src/field_player_avatar.c728
-rw-r--r--src/field_poison.c59
-rw-r--r--src/field_region_map.c4
-rw-r--r--src/field_screen_effect.c117
-rw-r--r--src/field_special_scene.c12
-rw-r--r--src/field_specials.c111
-rw-r--r--src/field_tasks.c63
-rw-r--r--src/field_weather.c4
-rw-r--r--src/fieldmap.c112
-rw-r--r--src/fldeff_berrytree.c16
-rw-r--r--src/fldeff_cut.c158
-rw-r--r--src/fldeff_decoration.c31
-rw-r--r--src/fldeff_flash.c144
-rw-r--r--src/fldeff_secret_base_pc.c3
-rw-r--r--src/fldeff_secretpower.c217
-rw-r--r--src/fldeff_strength.c17
-rw-r--r--src/fldeff_sweetscent.c38
-rw-r--r--src/fldeff_teleport.c24
-rw-r--r--src/hall_of_fame.c16
-rw-r--r--src/heal_location.c6
-rw-r--r--src/hof_pc.c3
-rw-r--r--src/intro.c26
-rw-r--r--src/item.c218
-rw-r--r--src/item_menu.c97
-rw-r--r--src/item_use.c215
-rw-r--r--src/landmark.c98
-rw-r--r--src/learn_move.c1066
-rw-r--r--src/link.c6
-rw-r--r--src/load_save.c12
-rw-r--r--src/mail.c14
-rw-r--r--src/main.c2
-rw-r--r--src/main_menu.c32
-rw-r--r--src/mauville_man.c239
-rw-r--r--src/menu.c36
-rw-r--r--src/menu_cursor.c4
-rw-r--r--src/metatile_behavior.c1095
-rw-r--r--src/money.c4
-rw-r--r--src/move_tutor_menu.c1063
-rw-r--r--src/mystery_event_menu.c19
-rw-r--r--src/mystery_event_script.c6
-rw-r--r--src/naming_screen.c152
-rw-r--r--src/new_game.c2
-rw-r--r--src/option_menu.c6
-rw-r--r--src/overworld.c871
-rw-r--r--src/palette.c4
-rw-r--r--src/party_menu.c200
-rw-r--r--src/pc_screen_effect.c261
-rw-r--r--src/player_pc.c6
-rw-r--r--src/pokeblock.c18
-rw-r--r--src/pokeblock_feed.c4
-rw-r--r--src/pokedex.c95
-rw-r--r--src/pokedex_area_screen.c1425
-rw-r--r--src/pokedex_cry_screen.c896
-rw-r--r--src/pokemon_1.c2
-rw-r--r--src/pokemon_2.c28
-rw-r--r--src/pokemon_3.c114
-rw-r--r--src/pokemon_item_effect.c88
-rw-r--r--src/pokemon_menu.c93
-rw-r--r--src/pokemon_size_record.c12
-rw-r--r--src/pokemon_storage_system.c2
-rw-r--r--src/pokemon_storage_system_2.c22
-rw-r--r--src/pokemon_storage_system_4.c18
-rw-r--r--src/pokemon_summary_screen.c85
-rw-r--r--src/pokenav_before.c66
-rw-r--r--src/record_mixing.c2
-rw-r--r--src/region_map.c193
-rw-r--r--src/reset_rtc_screen.c12
-rw-r--r--src/roamer.c10
-rw-r--r--src/rom3.c60
-rw-r--r--src/rom6.c55
-rw-r--r--src/rom_800D42C.c119
-rw-r--r--src/rom_8077ABC.c185
-rw-r--r--src/rotating_gate.c142
-rw-r--r--src/roulette.c10
-rw-r--r--src/safari_zone.c4
-rw-r--r--src/save.c3
-rw-r--r--src/save_failed_screen.c6
-rw-r--r--src/scrcmd.c75
-rw-r--r--src/script_menu.c4
-rw-r--r--src/script_movement.c44
-rw-r--r--src/script_pokemon_util_80F99CC.c14
-rw-r--r--src/secret_base.c99
-rw-r--r--src/shop.c40
-rw-r--r--src/slot_machine.c26
-rw-r--r--src/sound.c24
-rw-r--r--src/sprite.c1
-rw-r--r--src/start_menu.c26
-rw-r--r--src/starter_choose.c10
-rw-r--r--src/strings.c4
-rw-r--r--src/text.c12
-rw-r--r--src/tileset_anim.c576
-rw-r--r--src/time_events.c2
-rw-r--r--src/title_screen.c12
-rw-r--r--src/trade.c130
-rw-r--r--src/trader.c8
-rw-r--r--src/trainer_card.c18
-rw-r--r--src/trainer_see.c261
-rw-r--r--src/tv.c49
-rw-r--r--src/unk_text_8095904.c2
-rw-r--r--src/use_pokeblock.c12
-rw-r--r--src/util.c4
-rw-r--r--src/wallclock.c8
-rw-r--r--src/wild_encounter.c24
401 files changed, 104433 insertions, 31987 deletions
diff --git a/src/battle/anim/alert.c b/src/battle/anim/alert.c
index 7cd42c17b..04ae15a5e 100644
--- a/src/battle/anim/alert.c
+++ b/src/battle/anim/alert.c
@@ -8,15 +8,46 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80CF610(struct Sprite* sprite);
+
// alert (red thunder from the sides of a Pokemon, simulating more alert behavior.)
// Used in Kinesis.
+const union AnimCmd gSpriteAnim_83D7428[] =
+{
+ ANIMCMD_FRAME(0, 3, .hFlip = TRUE),
+ ANIMCMD_FRAME(8, 3, .hFlip = TRUE),
+ ANIMCMD_FRAME(16, 3, .hFlip = TRUE),
+ ANIMCMD_FRAME(24, 3, .hFlip = TRUE),
+ ANIMCMD_FRAME(32, 3, .hFlip = TRUE),
+ ANIMCMD_FRAME(40, 3, .hFlip = TRUE),
+ ANIMCMD_FRAME(48, 3, .hFlip = TRUE),
+ ANIMCMD_LOOP(1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D744C[] =
+{
+ gSpriteAnim_83D7428,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D7450 =
+{
+ .tileTag = 10075,
+ .paletteTag = 10075,
+ .oam = &gOamData_837DF54,
+ .anims = gSpriteAnimTable_83D744C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CF610,
+};
+
void sub_80CF610(struct Sprite* sprite)
{
sub_8078650(sprite);
sub_807867C(sprite, gBattleAnimArgs[0]);
sprite->pos1.y += gBattleAnimArgs[1];
- if (GetBankSide(gAnimBankAttacker) != 0)
+ if (GetBattlerSide(gAnimBankAttacker) != 0)
{
sprite->hFlip = 1;
if (gBattleAnimArgs[2] != 0)
diff --git a/src/battle/anim/angel.c b/src/battle/anim/angel.c
index 5ec083887..be5b82ea1 100644
--- a/src/battle/anim/angel.c
+++ b/src/battle/anim/angel.c
@@ -8,9 +8,33 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80D2938(struct Sprite* sprite);
+
// angel (a little angel descends from somewhere towards a position)
// Used in Sweet Kiss.
+const union AnimCmd gSpriteAnim_83D7BAC[] =
+{
+ ANIMCMD_FRAME(0, 24),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D7BB4[] =
+{
+ gSpriteAnim_83D7BAC,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D7BB8 =
+{
+ .tileTag = 10220,
+ .paletteTag = 10220,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D7BB4,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D2938,
+};
+
void sub_80D2938(struct Sprite* sprite)
{
s16 r5;
diff --git a/src/battle/anim/angel_kiss.c b/src/battle/anim/angel_kiss.c
index d5be6e2af..64abff6cf 100644
--- a/src/battle/anim/angel_kiss.c
+++ b/src/battle/anim/angel_kiss.c
@@ -9,10 +9,23 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80D2A38(struct Sprite* sprite);
+
// angel_kiss (a different variation of kiss_fountain.)
// Used in Sweet Kiss.
-void sub_80D29CC(struct Sprite* sprite)
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D7BD0 =
+{
+ .tileTag = 10219,
+ .paletteTag = 10219,
+ .oam = &gOamData_837DF2C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D2A38,
+};
+
+static void sub_80D29CC(struct Sprite* sprite)
{
sprite->data[5]++;
sprite->pos2.x = Sin(sprite->data[3], 5);
@@ -50,38 +63,3 @@ void sub_80D2A38(struct Sprite* sprite)
}
}
}
-
-// this is for the next file, but i didnt feel like deleting it from the original 80C file.
-/* void sub_80D2ABC(struct Sprite* sprite)
-{
- int var;
- s16 var2;
- int var3;
- if (sprite->data[3] == 0)
- {
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
- StartSpriteAnim(sprite, 0);
- sprite->subpriority = sub_8079E90(gAnimBankTarget) - 1;
- sprite->data[2] = 1;
- }
-
- sprite->data[0] += sprite->data[2];
- var = sprite->data[0] * 4;
- if (var < 0)
- var += 0xFF;
-
- sprite->data[1] = (sprite->data[0] * 4) -(((var) >> 8) << 8);
- if (sprite->data[1] < 0)
- sprite->data[1] = 0;
-
- var3 = sprite->data[1];
- var2 = sprite->data[0];
- var2 /= 4;
- sprite->pos2.x = Cos(var3, 30 - var2);
- var3 = sprite->data[1];
- var2 = sprite->data[0] / 8;
- sprite->pos2.x = Sin(var3, 10 - var2);
- if (sprite->data[1] > 0x80 && sprite->data[2] > 0)
- sprite->data[2] = 0xFFFF;
-} */
diff --git a/src/battle/anim/anger.c b/src/battle/anim/anger.c
index 011aa68ce..a50404ddf 100644
--- a/src/battle/anim/anger.c
+++ b/src/battle/anim/anger.c
@@ -8,9 +8,34 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80D09C0(struct Sprite* sprite);
+
// anger (anger emotes, usually above the Pokemon's head, indicating annoyed emotions.)
// Used in Frustration, Rage, Swagger, Torment, and Taunt.
+const union AffineAnimCmd gSpriteAffineAnim_83D777C[] =
+{
+ AFFINEANIMCMD_FRAME(0xB, 0xB, 0, 8),
+ AFFINEANIMCMD_FRAME(0xFFF5, 0xFFF5, 0, 8),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D7794[] =
+{
+ gSpriteAffineAnim_83D777C,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D7798 =
+{
+ .tileTag = 10087,
+ .paletteTag = 10087,
+ .oam = &gOamData_837DF8C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D7794,
+ .callback = sub_80D09C0,
+};
+
void sub_80D09C0(struct Sprite* sprite)
{
u8 bank;
@@ -19,13 +44,13 @@ void sub_80D09C0(struct Sprite* sprite)
else
bank = gAnimBankTarget;
- if (GetBankSide(bank) == 1)
+ if (GetBattlerSide(bank) == 1)
{
gBattleAnimArgs[1] *= -1;
}
- sprite->pos1.x = GetBankPosition(bank, 2) + gBattleAnimArgs[1];
- sprite->pos1.y = GetBankPosition(bank, 3) + gBattleAnimArgs[2];
+ sprite->pos1.x = GetBattlerSpriteCoord(bank, 2) + gBattleAnimArgs[1];
+ sprite->pos1.y = GetBattlerSpriteCoord(bank, 3) + gBattleAnimArgs[2];
if (sprite->pos1.y <= 7)
sprite->pos1.y = 8;
diff --git a/src/battle/anim/aurora.c b/src/battle/anim/aurora.c
index b24809264..5aff17f48 100644
--- a/src/battle/anim/aurora.c
+++ b/src/battle/anim/aurora.c
@@ -9,23 +9,65 @@ extern s16 gBattleAnimArgs[8];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80D33B4(struct Sprite *sprite);
static void sub_80D344C(struct Sprite *);
static void sub_80D34D4(u8);
+const union AnimCmd gSpriteAnim_83D9190[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D9198[] =
+{
+ ANIMCMD_FRAME(4, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D91A0[] =
+{
+ gSpriteAnim_83D9190,
+ gSpriteAnim_83D9198,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D91A8[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 1),
+ AFFINEANIMCMD_FRAME(0x60, 0x60, 0, 1),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D91C0[] =
+{
+ gSpriteAffineAnim_83D91A8,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D91C4 =
+{
+ .tileTag = 10140,
+ .paletteTag = 10140,
+ .oam = &gOamData_837E024,
+ .anims = gSpriteAnimTable_83D91A0,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D91C0,
+ .callback = sub_80D33B4,
+};
+
void sub_80D33B4(struct Sprite *sprite)
{
s16 r6;
InitAnimSpritePos(sprite, 1);
- if (GetBankSide(gAnimBankAttacker) != 0)
+ if (GetBattlerSide(gAnimBankAttacker) != 0)
r6 = -gBattleAnimArgs[2];
else
r6 = gBattleAnimArgs[2];
sprite->data[0] = gBattleAnimArgs[4];
sprite->data[1] = sprite->pos1.x;
- sprite->data[2] = GetBankPosition(gAnimBankTarget, 2) + r6;
+ sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2) + r6;
sprite->data[3] = sprite->pos1.y;
- sprite->data[4] = GetBankPosition(gAnimBankTarget, 3) + gBattleAnimArgs[3];
+ sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3) + gBattleAnimArgs[3];
InitAnimSpriteTranslationDeltas(sprite);
sprite->callback = sub_80D344C;
sprite->affineAnimPaused = TRUE;
diff --git a/src/battle/anim/battle_intro.c b/src/battle/anim/battle_intro.c
index 5a6789743..a189b1425 100644
--- a/src/battle/anim/battle_intro.c
+++ b/src/battle/anim/battle_intro.c
@@ -461,7 +461,7 @@ void sub_80E4EF8(u8 left, u8 top, u8 c, u8 paletteNum, u16 e, u8 bgMap, u8 g)
u32 tileNum;
s32 x;
s32 y;
- u8 bank = GetBankByIdentity(c);
+ u8 bank = GetBattlerAtPosition(c);
DmaCopy16(3, gUnknown_081FAF4C[c] + gBattleMonForms[bank] * 0x800, (void *)(VRAM + e), 0x800);
tileNum = e / 32 - g * 512;
diff --git a/src/battle/anim/beta_beat_up.c b/src/battle/anim/beta_beat_up.c
index 3af6dd926..166782362 100644
--- a/src/battle/anim/beta_beat_up.c
+++ b/src/battle/anim/beta_beat_up.c
@@ -7,13 +7,38 @@ extern s16 gBattleAnimArgs[8];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80D6234(struct Sprite *sprite);
static void sub_80D6278(struct Sprite *);
// beta_beat_up
+const union AffineAnimCmd gSpriteAffineAnim_83D97E8[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 20),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -16, 60),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D9808[] =
+{
+ gSpriteAffineAnim_83D97E8,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83D980C =
+{
+ .tileTag = 10143,
+ .paletteTag = 10143,
+ .oam = &gOamData_837DF94,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D9808,
+ .callback = sub_80D6234,
+};
+
void sub_80D6234(struct Sprite *sprite)
{
- if (GetBankSide(gAnimBankAttacker) != 0)
+ if (GetBattlerSide(gAnimBankAttacker) != 0)
{
sprite->pos1.x -= gBattleAnimArgs[0];
}
diff --git a/src/battle/anim/blow_kiss.c b/src/battle/anim/blow_kiss.c
index f585b74bc..0235794c2 100644
--- a/src/battle/anim/blow_kiss.c
+++ b/src/battle/anim/blow_kiss.c
@@ -8,24 +8,36 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80D1F58(struct Sprite* sprite);
static void sub_80D1FA4(struct Sprite* sprite);
// blow_kiss (a heart floating across the screen.)
// Used in Attract.
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D7AB0 =
+{
+ .tileTag = 10216,
+ .paletteTag = 10216,
+ .oam = &gOamData_837DF2C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D1F58,
+};
+
void sub_80D1F58(struct Sprite* sprite)
{
InitAnimSpritePos(sprite, 1);
sprite->data[0] = 0x5F;
sprite->data[1] = sprite->pos1.x;
- sprite->data[2] = GetBankPosition(gAnimBankTarget, 2);
+ sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2);
sprite->data[3] = sprite->pos1.y;
- sprite->data[4] = GetBankPosition(gAnimBankTarget, 3);
+ sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3);
InitAnimSpriteTranslationDeltas(sprite);
sprite->callback = sub_80D1FA4;
}
-void sub_80D1FA4(struct Sprite* sprite)
+static void sub_80D1FA4(struct Sprite* sprite)
{
if (TranslateAnimSpriteByDeltas(sprite) == 0)
{
diff --git a/src/battle/anim/bottle.c b/src/battle/anim/bottle.c
index 5485bcf5d..83a539f89 100644
--- a/src/battle/anim/bottle.c
+++ b/src/battle/anim/bottle.c
@@ -8,16 +8,50 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80CCF04(struct Sprite* sprite);
static void sub_80CCF70(struct Sprite* sprite);
static void sub_80CD0CC(struct Sprite* sprite, int unk1, int unk2);
// bottle (shows a bottle swinging back and forth.)
// Used by Milk Drink.
+const union AffineAnimCmd gSpriteAffineAnim_83D6C00[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D6C10[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 2, 12),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 6),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -2, 24),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 6),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 2, 12),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D6C40[] =
+{
+ gSpriteAffineAnim_83D6C00,
+ gSpriteAffineAnim_83D6C10,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D6C48 =
+{
+ .tileTag = 10099,
+ .paletteTag = 10099,
+ .oam = &gOamData_837E0B4,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D6C40,
+ .callback = sub_80CCF04,
+};
+
void sub_80CCF04(struct Sprite* sprite)
{
- sprite->pos1.x = GetBankPosition(gAnimBankTarget, 2);
- sprite->pos1.y = GetBankPosition(gAnimBankTarget, 3) + 0xFFE8;
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankTarget, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankTarget, 3) + 0xFFE8;
sprite->data[0] = 0;
sprite->data[1] = 0;
sprite->data[2] = 0;
@@ -30,7 +64,7 @@ void sub_80CCF04(struct Sprite* sprite)
sprite->callback = sub_80CCF70;
}
-void sub_80CCF70(struct Sprite* sprite)
+static void sub_80CCF70(struct Sprite* sprite)
{
switch (sprite->data[0])
{
@@ -103,7 +137,7 @@ void sub_80CCF70(struct Sprite* sprite)
}
}
-void sub_80CD0CC(struct Sprite* sprite, int unk1, int unk2)
+static void sub_80CD0CC(struct Sprite* sprite, int unk1, int unk2)
{
if (sprite->data[3] <= 11)
sprite->data[4] += 2;
diff --git a/src/battle/anim/brace.c b/src/battle/anim/brace.c
index 19ea4297b..89330788c 100644
--- a/src/battle/anim/brace.c
+++ b/src/battle/anim/brace.c
@@ -8,22 +8,48 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80CDF0C(struct Sprite* sprite);
static void sub_80CDF70(struct Sprite* sprite);
// brace (the Pokemon prepares to endure a hit)
// Used in Endure.
+const union AnimCmd gSpriteAnim_83D6E80[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(8, 12),
+ ANIMCMD_FRAME(16, 4),
+ ANIMCMD_FRAME(24, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D6E94[] =
+{
+ gSpriteAnim_83D6E80,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_EndureFlame =
+{
+ .tileTag = 10184,
+ .paletteTag = 10184,
+ .oam = &gOamData_837DF74,
+ .anims = gSpriteAnimTable_83D6E94,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CDF0C,
+};
+
void sub_80CDF0C(struct Sprite* sprite)
{
if (gBattleAnimArgs[0] == 0)
{
- sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 0) + gBattleAnimArgs[1];
- sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 1) + gBattleAnimArgs[2];
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 0) + gBattleAnimArgs[1];
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 1) + gBattleAnimArgs[2];
}
else
{
- sprite->pos1.x = GetBankPosition(gAnimBankTarget, 0) + gBattleAnimArgs[1];
- sprite->pos1.y = GetBankPosition(gAnimBankTarget, 1) + gBattleAnimArgs[2];
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankTarget, 0) + gBattleAnimArgs[1];
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankTarget, 1) + gBattleAnimArgs[2];
}
sprite->data[0] = 0;
@@ -31,7 +57,7 @@ void sub_80CDF0C(struct Sprite* sprite)
sprite->callback = sub_80CDF70;
}
-void sub_80CDF70(struct Sprite* sprite)
+static void sub_80CDF70(struct Sprite* sprite)
{
if (++sprite->data[0] > sprite->data[1])
{
diff --git a/src/battle/anim/breath.c b/src/battle/anim/breath.c
index 831b222ad..87c737fac 100644
--- a/src/battle/anim/breath.c
+++ b/src/battle/anim/breath.c
@@ -8,25 +8,62 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80D0930(struct Sprite* sprite);
+
// breath (a puff of smoke, usually from the mouth or nose of the Pokemon.)
// Used in Swagger and Bulk Up.
+const union AnimCmd gSpriteAnim_83D7734[] =
+{
+ ANIMCMD_FRAME(0, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(4, 40, .hFlip = TRUE),
+ ANIMCMD_FRAME(8, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(12, 4, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D7748[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(4, 40),
+ ANIMCMD_FRAME(8, 4),
+ ANIMCMD_FRAME(12, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D775C[] =
+{
+ gSpriteAnim_83D7734,
+ gSpriteAnim_83D7748,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D7764 =
+{
+ .tileTag = 10086,
+ .paletteTag = 10086,
+ .oam = &gOamData_837DF2C,
+ .anims = gSpriteAnimTable_83D775C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D0930,
+};
+
void sub_80D0930(struct Sprite* sprite)
{
- if (GetBankSide(gAnimBankAttacker) == 0)
+ if (GetBattlerSide(gAnimBankAttacker) == 0)
{
StartSpriteAnim(sprite, 0);
- sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2) + 32;
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 2) + 32;
sprite->data[1] = 0x40;
}
else
{
StartSpriteAnim(sprite, 1);
- sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2) - 32;
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 2) - 32;
sprite->data[1] = -0x40;
}
- sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3);
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 3);
sprite->data[0] = 0x34;
sprite->data[2] = 0;
sprite->data[3] = 0;
diff --git a/src/battle/anim/bubble.c b/src/battle/anim/bubble.c
index d6ec06be9..e024091d7 100644
--- a/src/battle/anim/bubble.c
+++ b/src/battle/anim/bubble.c
@@ -8,6 +8,7 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80D31C8(struct Sprite* sprite);
static void sub_80D32E8(struct Sprite *sprite);
static void sub_80D3370(struct Sprite *sprite);
static void sub_80D3398(struct Sprite *sprite);
@@ -15,33 +16,69 @@ static void sub_80D3398(struct Sprite *sprite);
// bubble (indidivual bubble that floats around)
// Used in Bubble and Bubblebeam
+const union AffineAnimCmd gSpriteAffineAnim_83D9148[] =
+{
+ AFFINEANIMCMD_FRAME(0xFFFB, 0xFFFB, 0, 10),
+ AFFINEANIMCMD_FRAME(0x5, 0x5, 0, 10),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D9160[] =
+{
+ gSpriteAffineAnim_83D9148,
+};
+
+const union AnimCmd gSpriteAnim_83D9164[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_FRAME(4, 5),
+ ANIMCMD_FRAME(8, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D9174[] =
+{
+ gSpriteAnim_83D9164,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9178 =
+{
+ .tileTag = 10146,
+ .paletteTag = 10146,
+ .oam = &gOamData_837E0AC,
+ .anims = gSpriteAnimTable_83D9174,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D9160,
+ .callback = sub_80D31C8,
+};
+
void sub_80D31C8(struct Sprite* sprite)
{
u8 newSpriteId;
- if (GetBankSide(gAnimBankAttacker) != 0)
+ if (GetBattlerSide(gAnimBankAttacker) != 0)
{
- sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2) - gBattleAnimArgs[0];
- sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3) + gBattleAnimArgs[1];
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 2) - gBattleAnimArgs[0];
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 3) + gBattleAnimArgs[1];
}
else
{
- sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2) + gBattleAnimArgs[0];
- sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3) + gBattleAnimArgs[1];
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 2) + gBattleAnimArgs[0];
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 3) + gBattleAnimArgs[1];
}
sprite->animPaused = 1;
- if (GetBankSide(gAnimBankAttacker) != 0)
+ if (GetBattlerSide(gAnimBankAttacker) != 0)
{
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
}
sprite->data[0] = gBattleAnimArgs[6];
sprite->data[1] = sprite->pos1.x;
- sprite->data[2] = GetBankPosition(gAnimBankTarget, 2);
+ sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2);
sprite->data[3] = sprite->pos1.y;
- sprite->data[4] = GetBankPosition(gAnimBankTarget, 3);
+ sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3);
InitAnimSpriteTranslationDeltas(sprite);
diff --git a/src/battle/anim/bug.c b/src/battle/anim/bug.c
index d57a1046e..c4c7fe937 100644
--- a/src/battle/anim/bug.c
+++ b/src/battle/anim/bug.c
@@ -3,18 +3,202 @@
#include "contest.h"
#include "rom_8077ABC.h"
#include "trig.h"
-// #include "util.h"
extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80DC824(struct Sprite *sprite);
+void sub_80DC8F4(struct Sprite *sprite);
+void sub_80DC9A0(struct Sprite *sprite);
+void sub_80DCA70(struct Sprite *sprite);
+void sub_80DCB38(struct Sprite *sprite);
+void AnimTranslateStinger(struct Sprite *sprite);
+void AnimMissileArc(struct Sprite *sprite);
+void sub_80DCE40(struct Sprite *sprite);
static void sub_80DCA38(struct Sprite *sprite);
static void sub_80DCAEC(struct Sprite *sprite);
static void sub_80DCB5C(struct Sprite *sprite);
static void sub_80DCBB4(struct Sprite *sprite);
static void AnimMissileArcStep(struct Sprite *sprite);
+const union AffineAnimCmd gSpriteAffineAnim_83DAA80[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 30, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DAA90[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, -99, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DAAA0[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 94, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DAAB0[] =
+{
+ gSpriteAffineAnim_83DAA80,
+ gSpriteAffineAnim_83DAA90,
+ gSpriteAffineAnim_83DAAA0,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAABC =
+{
+ .tileTag = 10153,
+ .paletteTag = 10153,
+ .oam = &gOamData_837E014,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DAAB0,
+ .callback = sub_80DC824,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DAAD4[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -33, 1),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DAAE4[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 96, 1),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DAAF4[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -96, 1),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DAB04[] =
+{
+ gSpriteAffineAnim_83DAAD4,
+ gSpriteAffineAnim_83DAAE4,
+ gSpriteAffineAnim_83DAAF4,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAB10 =
+{
+ .tileTag = 10161,
+ .paletteTag = 10161,
+ .oam = &gOamData_837DF8C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DAB04,
+ .callback = sub_80DC8F4,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAB28 =
+{
+ .tileTag = 10180,
+ .paletteTag = 10180,
+ .oam = &gOamData_837DF24,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DC9A0,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAB40 =
+{
+ .tileTag = 10179,
+ .paletteTag = 10179,
+ .oam = &gOamData_837DF5C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DCA70,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DAB58[] =
+{
+ AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 0),
+ AFFINEANIMCMD_FRAME(0x6, 0x6, 0, 1),
+ AFFINEANIMCMD_JUMP(1),
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DAB70[] =
+{
+ gSpriteAffineAnim_83DAB58,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAB74 =
+{
+ .tileTag = 10181,
+ .paletteTag = 10181,
+ .oam = &gOamData_837E11C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DAB70,
+ .callback = sub_80DCB38,
+};
+
+const struct SpriteTemplate gLinearStingerSpriteTemplate =
+{
+ .tileTag = 10161,
+ .paletteTag = 10161,
+ .oam = &gOamData_837DF8C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimTranslateStinger,
+};
+
+const struct SpriteTemplate gPinMissileSpriteTemplate =
+{
+ .tileTag = 10161,
+ .paletteTag = 10161,
+ .oam = &gOamData_837DF8C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimMissileArc,
+};
+
+const struct SpriteTemplate gIcicleSpearSpriteTemplate =
+{
+ .tileTag = 10262,
+ .paletteTag = 10262,
+ .oam = &gOamData_837DF94,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimMissileArc,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DABD4[] =
+{
+ AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 0),
+ AFFINEANIMCMD_FRAME(0x8, 0x8, 0, 18),
+ AFFINEANIMCMD_LOOP(0),
+ AFFINEANIMCMD_FRAME(0xFFFB, 0xFFFB, 0, 8),
+ AFFINEANIMCMD_FRAME(0x5, 0x5, 0, 8),
+ AFFINEANIMCMD_LOOP(5),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DAC0C[] =
+{
+ gSpriteAffineAnim_83DABD4,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAC10 =
+{
+ .tileTag = 10212,
+ .paletteTag = 10212,
+ .oam = &gOamData_837E0BC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DAC0C,
+ .callback = sub_80DCE40,
+};
+
// used in Move_MEGAHORN
void sub_80DC824(struct Sprite *sprite)
{
@@ -24,7 +208,7 @@ void sub_80DC824(struct Sprite *sprite)
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
}
- else if (!GetBankSide(gAnimBankTarget))
+ else if (!GetBattlerSide(gAnimBankTarget))
{
StartSpriteAffineAnim(sprite, 1);
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
@@ -37,8 +221,8 @@ void sub_80DC824(struct Sprite *sprite)
sprite->pos1.y = sub_8077EE4(gAnimBankTarget, 3) + gBattleAnimArgs[1];
sprite->data[0] = gBattleAnimArgs[4];
- sprite->data[2] = GetBankPosition(gAnimBankTarget, 2) + gBattleAnimArgs[2];
- sprite->data[4] = GetBankPosition(gAnimBankTarget, 3) + gBattleAnimArgs[3];
+ sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2) + gBattleAnimArgs[2];
+ sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3) + gBattleAnimArgs[3];
sprite->callback = StartTranslateAnimSpriteByDeltas;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
@@ -52,7 +236,7 @@ void sub_80DC8F4(struct Sprite *sprite)
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
StartSpriteAffineAnim(sprite, 2);
}
- else if (!GetBankSide(gAnimBankTarget))
+ else if (!GetBattlerSide(gAnimBankTarget))
{
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
@@ -62,8 +246,8 @@ void sub_80DC8F4(struct Sprite *sprite)
sprite->pos1.y = sub_8077EE4(gAnimBankTarget, 3) + gBattleAnimArgs[1];
sprite->data[0] = gBattleAnimArgs[2];
- sprite->data[2] = GetBankPosition(gAnimBankTarget, 2);
- sprite->data[4] = GetBankPosition(gAnimBankTarget, 3);
+ sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2);
+ sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3);
sprite->callback = StartTranslateAnimSpriteByDeltas;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
@@ -83,8 +267,8 @@ void sub_80DC9A0(struct Sprite *sprite)
if (!gBattleAnimArgs[4])
{
- sprite->data[2] = GetBankPosition(gAnimBankTarget, 2);
- sprite->data[4] = GetBankPosition(gAnimBankTarget, 3);
+ sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2);
+ sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3);
}
else
{
@@ -112,13 +296,13 @@ static void sub_80DCA38(struct Sprite *sprite)
void sub_80DCA70(struct Sprite *sprite)
{
SetAverageBattlerPositions(gAnimBankTarget, 0, &sprite->pos1.x, &sprite->pos1.y);
- if (GetBankSide(gAnimBankAttacker))
+ if (GetBattlerSide(gAnimBankAttacker))
sprite->pos1.x -= gBattleAnimArgs[0];
else
sprite->pos1.x += gBattleAnimArgs[0];
sprite->pos1.y += gBattleAnimArgs[1];
- if (!GetBankSide(gAnimBankTarget))
+ if (!GetBattlerSide(gAnimBankTarget))
sprite->pos1.y += 8;
sprite->callback = sub_80DCAEC;
@@ -193,7 +377,7 @@ void AnimTranslateStinger(struct Sprite *sprite)
}
else
{
- if (GetBankSide(gAnimBankAttacker))
+ if (GetBattlerSide(gAnimBankAttacker))
{
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
@@ -203,9 +387,9 @@ void AnimTranslateStinger(struct Sprite *sprite)
if (!IsContest())
{
- if (GetBankSide(gAnimBankAttacker) == GetBankSide(gAnimBankTarget))
+ if (GetBattlerSide(gAnimBankAttacker) == GetBattlerSide(gAnimBankTarget))
{
- if (GetBankIdentity(gAnimBankTarget) == 0 || GetBankIdentity(gAnimBankTarget) == 1)
+ if (GetBattlerPosition(gAnimBankTarget) == 0 || GetBattlerPosition(gAnimBankTarget) == 1)
{
s16 temp1, temp2;
@@ -220,8 +404,8 @@ void AnimTranslateStinger(struct Sprite *sprite)
InitAnimSpritePos(sprite, 1);
- lVarX = GetBankPosition(gAnimBankTarget, 2) + gBattleAnimArgs[2];
- lVarY = GetBankPosition(gAnimBankTarget, 3) + gBattleAnimArgs[3];
+ lVarX = GetBattlerSpriteCoord(gAnimBankTarget, 2) + gBattleAnimArgs[2];
+ lVarY = GetBattlerSpriteCoord(gAnimBankTarget, 3) + gBattleAnimArgs[3];
rot = ArcTan2Neg(lVarX - sprite->pos1.x, lVarY - sprite->pos1.y);
rot += 0xC000;
sub_8078FDC(sprite, FALSE, 0x100, 0x100, rot);
@@ -247,12 +431,12 @@ void AnimMissileArc(struct Sprite *sprite)
{
InitAnimSpritePos(sprite, 1);
- if (GetBankSide(gAnimBankAttacker))
+ if (GetBattlerSide(gAnimBankAttacker))
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
sprite->data[0] = gBattleAnimArgs[4];
- sprite->data[2] = GetBankPosition(gAnimBankTarget, 2) + gBattleAnimArgs[2];
- sprite->data[4] = GetBankPosition(gAnimBankTarget, 3) + gBattleAnimArgs[3];
+ sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2) + gBattleAnimArgs[2];
+ sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3) + gBattleAnimArgs[3];
sprite->data[5] = gBattleAnimArgs[5];
InitAnimSpriteTranslationOverDuration(sprite);
@@ -301,13 +485,13 @@ void sub_80DCE40(struct Sprite *sprite)
{
if (gBattleAnimArgs[0] == 0)
{
- sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2);
- sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3) + 18;
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 3) + 18;
}
else
{
- sprite->pos1.x = GetBankPosition(gAnimBankTarget, 2);
- sprite->pos1.y = GetBankPosition(gAnimBankTarget, 3) + 18;
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankTarget, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankTarget, 3) + 18;
}
StoreSpriteCallbackInData(sprite, move_anim_8074EE0);
diff --git a/src/battle/anim/bullet.c b/src/battle/anim/bullet.c
index 1dca0b886..764903247 100644
--- a/src/battle/anim/bullet.c
+++ b/src/battle/anim/bullet.c
@@ -9,24 +9,47 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80CFFD8(struct Sprite* sprite);
static void sub_80D0030(struct Sprite* sprite);
static void sub_80D00B4(struct Sprite* sprite);
// bullet (shoot seeds as ammunition.)
// Used by Bullet Seed.
+const union AffineAnimCmd gSpriteAffineAnim_83D7614[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 20, 1),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D7624[] =
+{
+ gSpriteAffineAnim_83D7614,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D7628 =
+{
+ .tileTag = 10006,
+ .paletteTag = 10006,
+ .oam = &gOamData_837DF8C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D7624,
+ .callback = sub_80CFFD8,
+};
+
void sub_80CFFD8(struct Sprite* sprite)
{
InitAnimSpritePos(sprite, 1);
sprite->data[0] = 20;
- sprite->data[2] = GetBankPosition(gAnimBankTarget, 2);
- sprite->data[4] = GetBankPosition(gAnimBankTarget, 3);
+ sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2);
+ sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3);
sprite->callback = StartTranslateAnimSpriteByDeltas;
sprite->affineAnimPaused = 1;
StoreSpriteCallbackInData(sprite, sub_80D0030);
}
-void sub_80D0030(struct Sprite* sprite)
+static void sub_80D0030(struct Sprite* sprite)
{
int i;
u16 rand;
@@ -50,7 +73,7 @@ void sub_80D0030(struct Sprite* sprite)
sprite->affineAnimPaused = 0;
}
-void sub_80D00B4(struct Sprite* sprite)
+static void sub_80D00B4(struct Sprite* sprite)
{
sprite->data[0] += sprite->data[7];
sprite->pos2.x = sprite->data[0] >> 8;
diff --git a/src/battle/anim/copy_orb.c b/src/battle/anim/copy_orb.c
index 4fa8ea163..d554a7e26 100644
--- a/src/battle/anim/copy_orb.c
+++ b/src/battle/anim/copy_orb.c
@@ -7,23 +7,54 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+extern const union AnimCmd *const gSpriteAnimTable_83D62D4[];
+
+void sub_80CB4CC(struct Sprite* sprite);
+
// copy_orb
// Used in Mimic.
+const union AffineAnimCmd gSpriteAffineAnim_83D65B8[] = {
+ AFFINEANIMCMD_FRAME(0, 0, 0, 0),
+ AFFINEANIMCMD_FRAME(48, 48, 0, 14),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D65D0[] = {
+ AFFINEANIMCMD_FRAME(-16, -16, 0, 1),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D65E0[] = {
+ gSpriteAffineAnim_83D65B8,
+ gSpriteAffineAnim_83D65D0,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D65E8 =
+{
+ .tileTag = 10147,
+ .paletteTag = 10147,
+ .oam = &gOamData_837DFEC,
+ .anims = gSpriteAnimTable_83D62D4,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D65E0,
+ .callback = sub_80CB4CC,
+};
+
void sub_80CB4CC(struct Sprite* sprite)
{
switch (sprite->data[0])
{
case 0:
{
- if (GetBankSide(gAnimBankTarget) == 0)
+ if (GetBattlerSide(gAnimBankTarget) == 0)
{
s16 a = gBattleAnimArgs[0];
gBattleAnimArgs[0] = -a;
}
- sprite->pos1.x = GetBankPosition(gAnimBankTarget, 0) + gBattleAnimArgs[0];
- sprite->pos1.y = GetBankPosition(gAnimBankTarget, 1) + gBattleAnimArgs[1];
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankTarget, 0) + gBattleAnimArgs[0];
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankTarget, 1) + gBattleAnimArgs[1];
sprite->invisible = 1;
sprite->data[0]++;
break;
@@ -35,8 +66,8 @@ void sub_80CB4CC(struct Sprite* sprite)
{
ChangeSpriteAffineAnim(sprite, 1);
sprite->data[0] = 25;
- sprite->data[2] = GetBankPosition(gAnimBankAttacker, 2);
- sprite->data[4] = GetBankPosition(gAnimBankAttacker, 3);
+ sprite->data[2] = GetBattlerSpriteCoord(gAnimBankAttacker, 2);
+ sprite->data[4] = GetBattlerSpriteCoord(gAnimBankAttacker, 3);
sprite->callback = sub_8078CC0;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
break;
diff --git a/src/battle/anim/cube.c b/src/battle/anim/cube.c
index 9adf46e32..9d713ba46 100644
--- a/src/battle/anim/cube.c
+++ b/src/battle/anim/cube.c
@@ -9,15 +9,51 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80CDFB0(struct Sprite* sprite);
static void sub_80CE000(struct Sprite* sprite);
// cube (shows a sphere sharpening into a cube.)
// Used in Sharpen.
+const union AnimCmd gSpriteAnim_83D6EB0[] =
+{
+ ANIMCMD_FRAME(0, 18),
+ ANIMCMD_FRAME(0, 6),
+ ANIMCMD_FRAME(16, 18),
+ ANIMCMD_FRAME(0, 6),
+ ANIMCMD_FRAME(16, 6),
+ ANIMCMD_FRAME(32, 18),
+ ANIMCMD_FRAME(16, 6),
+ ANIMCMD_FRAME(32, 6),
+ ANIMCMD_FRAME(48, 18),
+ ANIMCMD_FRAME(32, 6),
+ ANIMCMD_FRAME(48, 6),
+ ANIMCMD_FRAME(64, 18),
+ ANIMCMD_FRAME(48, 6),
+ ANIMCMD_FRAME(64, 54),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D6EEC[] =
+{
+ gSpriteAnim_83D6EB0,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D6EF0 =
+{
+ .tileTag = 10185,
+ .paletteTag = 10185,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D6EEC,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CDFB0,
+};
+
void sub_80CDFB0(struct Sprite* sprite)
{
- sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2);
- sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3) - 12;
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 3) - 12;
sprite->data[0] = 0;
sprite->data[1] = 2;
sprite->data[2] = 0;
@@ -27,7 +63,7 @@ void sub_80CDFB0(struct Sprite* sprite)
sprite->callback = sub_80CE000;
}
-void sub_80CE000(struct Sprite* sprite)
+static void sub_80CE000(struct Sprite* sprite)
{
if (++sprite->data[0] >= sprite->data[1])
{
diff --git a/src/battle/anim/current.c b/src/battle/anim/current.c
new file mode 100644
index 000000000..af72edef0
--- /dev/null
+++ b/src/battle/anim/current.c
@@ -0,0 +1,1348 @@
+#include "global.h"
+#include "battle_anim.h"
+#include "main.h"
+#include "rom_8077ABC.h"
+#include "sound.h"
+#include "trig.h"
+#include "constants/battle_constants.h"
+#include "constants/songs.h"
+
+extern s16 gBattleAnimArgs[];
+extern u8 gAnimBankAttacker;
+extern u8 gAnimBankTarget;
+extern u8 gAnimVisualTaskCount;
+
+extern const struct SpriteTemplate gBattleAnimSpriteTemplate_83D97D0;
+
+void sub_80D648C(struct Sprite *sprite);
+void sub_80D65DC(struct Sprite *sprite);
+void sub_80D6658(struct Sprite *sprite);
+void sub_80D679C(struct Sprite *sprite);
+void sub_80D6A1C(struct Sprite *sprite);
+void sub_80D6A6C(struct Sprite *sprite);
+void sub_80D6D18(struct Sprite *sprite);
+void sub_80D6D70(struct Sprite *sprite);
+void sub_80D6DD8(struct Sprite *sprite);
+void sub_80D7230(struct Sprite *sprite);
+void sub_80D727C(struct Sprite *sprite);
+void sub_80D755C(struct Sprite *sprite);
+static void sub_80D6514(struct Sprite *sprite);
+static void sub_80D672C(struct Sprite *sprite);
+static void sub_80D6874(u8 taskId);
+static void sub_80D6AF0(struct Sprite *sprite);
+static void sub_80D6BB8(u8 taskId);
+static void sub_80D6D00(struct Sprite *sprite);
+static void sub_80D6E38(struct Sprite *sprite);
+static bool8 sub_80D7194(struct Task *task, u8 taskId);
+static bool8 sub_80D7470(struct Task *task, u8 taskId);
+static bool8 sub_80D7654(struct Task *task, u8 taskId);
+static void sub_80D76C4(struct Sprite *sprite);
+
+const union AffineAnimCmd gSpriteAffineAnim_83D988C[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 20, 1),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D989C[] =
+{
+ gSpriteAffineAnim_83D988C,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D98A0 =
+{
+ .tileTag = 10011,
+ .paletteTag = 10011,
+ .oam = &gOamData_837DF8C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D989C,
+ .callback = sub_80D648C,
+};
+
+const union AnimCmd gSpriteAnim_83D98B8[] =
+{
+ ANIMCMD_FRAME(0, 6),
+ ANIMCMD_FRAME(16, 6),
+ ANIMCMD_FRAME(32, 6),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D98C8[] =
+{
+ gSpriteAnim_83D98B8,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D98CC[] =
+{
+ AFFINEANIMCMD_FRAME(0xE8, 0xE8, 0, 0),
+ AFFINEANIMCMD_FRAME(0xFFF8, 0xFFF8, 0, 10),
+ AFFINEANIMCMD_FRAME(0x8, 0x8, 0, 10),
+ AFFINEANIMCMD_JUMP(1),
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D98EC[] =
+{
+ gSpriteAffineAnim_83D98CC,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D98F0 =
+{
+ .tileTag = 10282,
+ .paletteTag = 10282,
+ .oam = &gOamData_837DF94,
+ .anims = gSpriteAnimTable_83D98C8,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D98EC,
+ .callback = sub_80D65DC,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9908 =
+{
+ .tileTag = 10011,
+ .paletteTag = 10011,
+ .oam = &gOamData_837DF8C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D989C,
+ .callback = sub_80D6658,
+};
+
+const struct SpriteTemplate gElectricitySpriteTemplate =
+{
+ .tileTag = 10011,
+ .paletteTag = 10011,
+ .oam = &gOamData_837DF2C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D679C,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83D9938 =
+{
+ .tileTag = 10001,
+ .paletteTag = 10001,
+ .oam = &gOamData_837DF24,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D6A1C,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9950 =
+{
+ .tileTag = 10173,
+ .paletteTag = 10173,
+ .oam = &gOamData_837DF54,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D6A6C,
+};
+
+const s8 gUnknown_083D9968[][2] =
+{
+ { 58, -60},
+ {-56, -36},
+ { 8, -56},
+ {-16, 56},
+ { 58, -10},
+ {-58, 10},
+ { 48, -18},
+ {-8, 56},
+ { 16, -56},
+ {-58, -42},
+ { 58, 30},
+ {-48, 40},
+ { 12, -48},
+ { 48, -12},
+ {-56, 18},
+ { 48, 48},
+};
+
+const union AnimCmd gSpriteAnim_83D9988[] =
+{
+ ANIMCMD_FRAME(3, 1),
+ ANIMCMD_FRAME(2, 1),
+ ANIMCMD_FRAME(1, 1),
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D999C[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_FRAME(1, 5),
+ ANIMCMD_FRAME(2, 5),
+ ANIMCMD_FRAME(3, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D99B0[] =
+{
+ gSpriteAnim_83D9988,
+ gSpriteAnim_83D999C,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83D99B8 =
+{
+ .tileTag = 10211,
+ .paletteTag = 10211,
+ .oam = &gOamData_837DF24,
+ .anims = gSpriteAnimTable_83D99B0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D99D0[] =
+{
+ AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 0),
+ AFFINEANIMCMD_FRAME(0x4, 0x4, 0, 60),
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_LOOP(0),
+ AFFINEANIMCMD_FRAME(0xFFFC, 0xFFFC, 0, 5),
+ AFFINEANIMCMD_FRAME(0x4, 0x4, 0, 5),
+ AFFINEANIMCMD_LOOP(10),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D9A10[] =
+{
+ AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 0),
+ AFFINEANIMCMD_FRAME(0x8, 0x8, 0, 30),
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0xFFFC, 0xFFFC, 0, 5),
+ AFFINEANIMCMD_FRAME(0x4, 0x4, 0, 5),
+ AFFINEANIMCMD_JUMP(3),
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D9A40[] =
+{
+ AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 0),
+ AFFINEANIMCMD_FRAME(0x8, 0x8, 0, 30),
+ AFFINEANIMCMD_FRAME(0xFFF8, 0xFFF8, 0, 30),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D9A60[] =
+{
+ gSpriteAffineAnim_83D99D0,
+ gSpriteAffineAnim_83D9A10,
+ gSpriteAffineAnim_83D9A40,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9A6C =
+{
+ .tileTag = 10212,
+ .paletteTag = 10212,
+ .oam = &gOamData_837E0BC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D9A60,
+ .callback = sub_80D6D18,
+};
+
+const union AnimCmd gSpriteAnim_83D9A84[] =
+{
+ ANIMCMD_FRAME(0, 3),
+ ANIMCMD_FRAME(16, 3),
+ ANIMCMD_FRAME(32, 3),
+ ANIMCMD_FRAME(48, 3),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D9A98[] =
+{
+ gSpriteAnim_83D9A84,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9A9C =
+{
+ .tileTag = 10213,
+ .paletteTag = 10213,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D9A98,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D6D70,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9AB4 =
+{
+ .tileTag = 10212,
+ .paletteTag = 10212,
+ .oam = &gOamData_837E0BC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D9A60,
+ .callback = sub_80D6DD8,
+};
+
+const union AnimCmd gSpriteAnim_83D9ACC[] =
+{
+ ANIMCMD_FRAME(0, 3),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D9AD4[] =
+{
+ ANIMCMD_FRAME(2, 3),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D9ADC[] =
+{
+ ANIMCMD_FRAME(4, 3),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D9AE4[] =
+{
+ ANIMCMD_FRAME(6, 3),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D9AEC[] =
+{
+ gSpriteAnim_83D9ACC,
+ gSpriteAnim_83D9AD4,
+ gSpriteAnim_83D9ADC,
+ gSpriteAnim_83D9AE4,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D9AFC[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 64, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D9B0C[] =
+{
+ gSpriteAffineAnim_83D9AFC,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83D9B10 =
+{
+ .tileTag = 10001,
+ .paletteTag = 10001,
+ .oam = &gOamData_837E024,
+ .anims = gSpriteAnimTable_83D9AEC,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D9B0C,
+ .callback = sub_80D7230,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9B28 =
+{
+ .tileTag = 10212,
+ .paletteTag = 10212,
+ .oam = &gOamData_837E0BC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D9A60,
+ .callback = sub_80D727C,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83D9B40 =
+{
+ .tileTag = 10001,
+ .paletteTag = 10001,
+ .oam = &gOamData_837DF24,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D755C,
+};
+
+void sub_80D648C(struct Sprite *sprite)
+{
+ InitAnimSpritePos(sprite, 1);
+
+ sprite->data[0] = gBattleAnimArgs[3];
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2);
+ sprite->data[3] = sprite->pos1.y;
+ sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3);
+
+ InitAnimSpriteTranslationDeltas(sprite);
+ sprite->data[5] = gBattleAnimArgs[2];
+ sprite->data[6] = gBattleAnimArgs[5];
+ sprite->data[7] = gBattleAnimArgs[4];
+ sprite->oam.tileNum += gBattleAnimArgs[6] * 4;
+
+ sprite->callback = sub_80D6514;
+ sprite->callback(sprite);
+}
+
+static void sub_80D6514(struct Sprite *sprite)
+{
+ if (!TranslateAnimSpriteByDeltas(sprite))
+ {
+ sprite->pos2.x += Sin(sprite->data[7], sprite->data[5]);
+ sprite->pos2.y += Cos(sprite->data[7], sprite->data[5]);
+
+ sprite->data[7] = (sprite->data[7] + sprite->data[6]) & 0xFF;
+ if (sprite->data[7] % 3 == 0)
+ {
+ sprite->invisible ^= 1;
+ }
+ }
+ else
+ {
+ DestroyAnimSprite(sprite);
+ }
+}
+
+static void sub_80D658C(struct Sprite *sprite)
+{
+ if (--sprite->data[5] == -1)
+ {
+ sprite->invisible ^= 1;
+ sprite->data[5] = sprite->data[4];
+ }
+
+ if (sprite->data[3]-- <= 0)
+ {
+ DestroyAnimSprite(sprite);
+ }
+}
+
+void sub_80D65DC(struct Sprite *sprite)
+{
+ if (!gMain.inBattle || GetBattlerSide(gAnimBankTarget) == B_SIDE_PLAYER)
+ gBattleAnimArgs[1] = -gBattleAnimArgs[1];
+
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankTarget, 2) + gBattleAnimArgs[1];
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankTarget, 3) + gBattleAnimArgs[2];
+ sprite->data[3] = gBattleAnimArgs[0];
+ sprite->data[4] = gBattleAnimArgs[3];
+ sprite->data[5] = gBattleAnimArgs[3];
+ sprite->callback = sub_80D658C;
+}
+
+void sub_80D6658(struct Sprite *sprite)
+{
+ u8 bank;
+
+ sprite->data[0] = gBattleAnimArgs[3];
+ if (gBattleAnimArgs[7] & 0x8000)
+ bank = gAnimBankTarget;
+ else
+ bank = gAnimBankAttacker;
+
+ if (!gMain.inBattle || GetBattlerSide(bank) == B_SIDE_PLAYER)
+ gBattleAnimArgs[0] = -gBattleAnimArgs[0];
+
+ sprite->pos1.x = GetBattlerSpriteCoord(bank, 2) + gBattleAnimArgs[0];
+ sprite->pos1.y = GetBattlerSpriteCoord(bank, 3) + gBattleAnimArgs[1];
+
+ sprite->data[4] = gBattleAnimArgs[7] & 0x7FFF;
+ sprite->data[5] = gBattleAnimArgs[2];
+ sprite->data[6] = gBattleAnimArgs[5];
+ sprite->data[7] = gBattleAnimArgs[4];
+
+ sprite->oam.tileNum += gBattleAnimArgs[6] * 4;
+ sprite->callback = sub_80D672C;
+ sprite->callback(sprite);
+}
+
+static void sub_80D672C(struct Sprite *sprite)
+{
+ sprite->pos2.x = Sin(sprite->data[7], sprite->data[5]);
+ sprite->pos2.y = Cos(sprite->data[7], sprite->data[5]);
+
+ sprite->data[7] = (sprite->data[7] + sprite->data[6]) & 0xFF;
+ if (sprite->data[7] % sprite->data[4] == 0)
+ sprite->invisible ^= 1;
+
+ if (sprite->data[0]-- <= 0)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_80D679C(struct Sprite *sprite)
+{
+ sub_8078764(sprite, 0);
+ sprite->oam.tileNum += gBattleAnimArgs[3] * 4;
+
+ if (gBattleAnimArgs[3] == 1)
+ sprite->oam.matrixNum = 8;
+ else if (gBattleAnimArgs[3] == 2)
+ sprite->oam.matrixNum = 16;
+
+ sprite->data[0] = gBattleAnimArgs[2];
+ sprite->callback = WaitAnimForDuration;
+ StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
+}
+
+void sub_80D681C(u8 taskId)
+{
+ gTasks[taskId].data[0] = GetBattlerSpriteCoord(gAnimBankTarget, 0) + gBattleAnimArgs[0];
+ gTasks[taskId].data[1] = GetBattlerSpriteCoord(gAnimBankTarget, 1) + gBattleAnimArgs[1];
+ gTasks[taskId].data[2] = gBattleAnimArgs[2];
+ gTasks[taskId].func = sub_80D6874;
+}
+
+#ifdef NONMATCHING // couldn't get the proper tail merging in the "CreateSprite" switch cases.
+static void sub_80D6874(u8 taskId)
+{
+ u16 r8;
+ s16 r12;
+ s16 r2;
+ u8 spriteId = 0;
+ u8 r7 = 0;
+ u8 sp = gTasks[taskId].data[2];
+ s16 r4 = gTasks[taskId].data[0];
+ s16 r6 = gTasks[taskId].data[1];
+
+ if (gTasks[taskId].data[2] == 0)
+ {
+ r8 = 0;
+ r2 = 1;
+ r12 = 16;
+ }
+ else
+ {
+ r12 = 16;
+ r8 = 8;
+ r2 = 4;
+ }
+
+ switch (gTasks[taskId].data[10])
+ {
+ case 0:
+ r8 += r2 * 0;
+ spriteId = CreateSprite(&gSpriteTemplate_83D9938, r4, r6 + (r12 * 1), 2);
+ r7++;
+ break;
+ case 2:
+ r8 += r2;
+ spriteId = CreateSprite(&gSpriteTemplate_83D9938, r4, r6 + (r12 * 2), 2);
+ r7++;
+ break;
+ case 4:
+ r8 += r2 * 2;
+ spriteId = CreateSprite(&gSpriteTemplate_83D9938, r4, r6 + (r12 * 3), 2);
+ r7++;
+ break;
+ case 6:
+ r8 += r2 * 3;
+ spriteId = CreateSprite(&gSpriteTemplate_83D9938, r4, r6 + (r12 * 4), 2);
+ r7++;
+ break;
+ case 8:
+ spriteId = CreateSprite(&gSpriteTemplate_83D9938, r4, r6 + (r12 * 5), 2);
+ r7++;
+ break;
+ case 10:
+ DestroyAnimVisualTask(taskId);
+ return;
+ }
+
+ if (r7)
+ {
+ gSprites[spriteId].oam.tileNum += r8;
+ gSprites[spriteId].data[0] = sp;
+ gSprites[spriteId].callback(&gSprites[spriteId]);
+ }
+
+ gTasks[taskId].data[10]++;
+}
+#else
+NAKED
+static void sub_80D6874(u8 taskId)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x4\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r9, r0\n\
+ movs r5, 0\n\
+ movs r7, 0\n\
+ ldr r1, _080D68B4 @ =gTasks\n\
+ lsls r0, 2\n\
+ add r0, r9\n\
+ lsls r0, 3\n\
+ adds r0, r1\n\
+ ldrb r2, [r0, 0xC]\n\
+ str r2, [sp]\n\
+ ldrh r4, [r0, 0x8]\n\
+ ldrh r6, [r0, 0xA]\n\
+ movs r3, 0xC\n\
+ ldrsh r0, [r0, r3]\n\
+ mov r10, r1\n\
+ cmp r0, 0\n\
+ bne _080D68B8\n\
+ movs r0, 0\n\
+ mov r8, r0\n\
+ movs r2, 0x1\n\
+ movs r1, 0x10\n\
+ mov r12, r1\n\
+ b _080D68C2\n\
+ .align 2, 0\n\
+_080D68B4: .4byte gTasks\n\
+_080D68B8:\n\
+ movs r2, 0x10\n\
+ mov r12, r2\n\
+ movs r3, 0x8\n\
+ mov r8, r3\n\
+ movs r2, 0x4\n\
+_080D68C2:\n\
+ mov r0, r9\n\
+ lsls r1, r0, 2\n\
+ adds r0, r1, r0\n\
+ lsls r0, 3\n\
+ add r0, r10\n\
+ movs r3, 0x1C\n\
+ ldrsh r0, [r0, r3]\n\
+ mov r10, r1\n\
+ cmp r0, 0xA\n\
+ bhi _080D69B8\n\
+ lsls r0, 2\n\
+ ldr r1, _080D68E0 @ =_080D68E4\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+ .align 2, 0\n\
+_080D68E0: .4byte _080D68E4\n\
+ .align 2, 0\n\
+_080D68E4:\n\
+ .4byte _080D6910\n\
+ .4byte _080D69B8\n\
+ .4byte _080D6924\n\
+ .4byte _080D69B8\n\
+ .4byte _080D6944\n\
+ .4byte _080D69B8\n\
+ .4byte _080D695A\n\
+ .4byte _080D69B8\n\
+ .4byte _080D697C\n\
+ .4byte _080D69B8\n\
+ .4byte _080D69B0\n\
+_080D6910:\n\
+ ldr r0, _080D6920 @ =gSpriteTemplate_83D9938\n\
+ lsls r1, r4, 16\n\
+ asrs r1, 16\n\
+ lsls r2, r6, 16\n\
+ asrs r2, 16\n\
+ mov r4, r12\n\
+ lsls r3, r4, 16\n\
+ b _080D6992\n\
+ .align 2, 0\n\
+_080D6920: .4byte gSpriteTemplate_83D9938\n\
+_080D6924:\n\
+ mov r0, r12\n\
+ lsls r3, r0, 17\n\
+ mov r1, r8\n\
+ adds r0, r1, r2\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ mov r8, r0\n\
+ ldr r0, _080D6940 @ =gSpriteTemplate_83D9938\n\
+ lsls r1, r4, 16\n\
+ asrs r1, 16\n\
+ lsls r2, r6, 16\n\
+ asrs r2, 16\n\
+ b _080D6992\n\
+ .align 2, 0\n\
+_080D6940: .4byte gSpriteTemplate_83D9938\n\
+_080D6944:\n\
+ mov r3, r12\n\
+ lsls r0, r3, 16\n\
+ asrs r0, 16\n\
+ lsls r3, r0, 1\n\
+ adds r3, r0\n\
+ lsls r0, r2, 1\n\
+ add r0, r8\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ mov r8, r0\n\
+ b _080D6986\n\
+_080D695A:\n\
+ mov r0, r12\n\
+ lsls r3, r0, 18\n\
+ lsls r0, r2, 1\n\
+ adds r0, r2\n\
+ add r0, r8\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ mov r8, r0\n\
+ ldr r0, _080D6978 @ =gSpriteTemplate_83D9938\n\
+ lsls r1, r4, 16\n\
+ asrs r1, 16\n\
+ lsls r2, r6, 16\n\
+ asrs r2, 16\n\
+ b _080D6992\n\
+ .align 2, 0\n\
+_080D6978: .4byte gSpriteTemplate_83D9938\n\
+_080D697C:\n\
+ mov r1, r12\n\
+ lsls r0, r1, 16\n\
+ asrs r0, 16\n\
+ lsls r3, r0, 2\n\
+ adds r3, r0\n\
+_080D6986:\n\
+ ldr r0, _080D69AC @ =gSpriteTemplate_83D9938\n\
+ lsls r1, r4, 16\n\
+ asrs r1, 16\n\
+ lsls r2, r6, 16\n\
+ asrs r2, 16\n\
+ lsls r3, 16\n\
+_080D6992:\n\
+ asrs r3, 16\n\
+ adds r2, r3\n\
+ lsls r2, 16\n\
+ asrs r2, 16\n\
+ movs r3, 0x2\n\
+ bl CreateSprite\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ adds r0, r7, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r7, r0, 24\n\
+ b _080D69B8\n\
+ .align 2, 0\n\
+_080D69AC: .4byte gSpriteTemplate_83D9938\n\
+_080D69B0:\n\
+ mov r0, r9\n\
+ bl DestroyAnimVisualTask\n\
+ b _080D69FC\n\
+_080D69B8:\n\
+ cmp r7, 0\n\
+ beq _080D69EC\n\
+ ldr r4, _080D6A0C @ =gSprites\n\
+ lsls r3, r5, 4\n\
+ adds r3, r5\n\
+ lsls r3, 2\n\
+ adds r0, r3, r4\n\
+ ldrh r5, [r0, 0x4]\n\
+ lsls r2, r5, 22\n\
+ lsrs r2, 22\n\
+ add r2, r8\n\
+ ldr r6, _080D6A10 @ =0x000003ff\n\
+ adds r1, r6, 0\n\
+ ands r2, r1\n\
+ ldr r1, _080D6A14 @ =0xfffffc00\n\
+ ands r1, r5\n\
+ orrs r1, r2\n\
+ strh r1, [r0, 0x4]\n\
+ mov r1, sp\n\
+ ldrh r1, [r1]\n\
+ strh r1, [r0, 0x2E]\n\
+ adds r4, 0x1C\n\
+ adds r3, r4\n\
+ ldr r1, [r3]\n\
+ bl _call_via_r1\n\
+_080D69EC:\n\
+ ldr r0, _080D6A18 @ =gTasks\n\
+ mov r1, r10\n\
+ add r1, r9\n\
+ lsls r1, 3\n\
+ adds r1, r0\n\
+ ldrh r0, [r1, 0x1C]\n\
+ adds r0, 0x1\n\
+ strh r0, [r1, 0x1C]\n\
+_080D69FC:\n\
+ add sp, 0x4\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_080D6A0C: .4byte gSprites\n\
+_080D6A10: .4byte 0x000003ff\n\
+_080D6A14: .4byte 0xfffffc00\n\
+_080D6A18: .4byte gTasks\n\
+ .syntax divided\n");
+}
+#endif
+
+void sub_80D6A1C(struct Sprite *sprite)
+{
+ if (sprite->data[0] == 0)
+ {
+ sprite->oam.shape = 2;
+ sprite->oam.size = 0;
+ }
+ else
+ {
+ sprite->oam.shape = 0;
+ sprite->oam.size = 1;
+ }
+
+ if (++sprite->data[1] == 15)
+ DestroySprite(sprite);
+}
+
+void sub_80D6A6C(struct Sprite *sprite)
+{
+ u8 spriteId;
+
+ sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->pos1.y += gBattleAnimArgs[1];
+ spriteId = CreateSprite(&gBattleAnimSpriteTemplate_83D9950, sprite->pos1.x + 32, sprite->pos1.y, sprite->subpriority);
+ gSprites[spriteId].oam.tileNum += 8;
+ gAnimVisualTaskCount++;
+ gSprites[spriteId].callback = sub_80D6AF0;
+ sprite->callback = sub_80D6AF0;
+}
+
+static void sub_80D6AF0(struct Sprite *sprite)
+{
+ if (++sprite->data[0] == 3)
+ {
+ sprite->data[0] = 0;
+ sprite->invisible ^= 1;
+ }
+
+ if (++sprite->data[1] == 51)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_80D6B3C(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ if (gBattleAnimArgs[0] == 0)
+ {
+ task->data[14] = GetBattlerSpriteCoord(gAnimBankAttacker, 2);
+ task->data[15] = GetBattlerSpriteCoord(gAnimBankAttacker, 3);
+ }
+ else
+ {
+ task->data[14] = GetBattlerSpriteCoord(gAnimBankTarget, 2);
+ task->data[15] = GetBattlerSpriteCoord(gAnimBankTarget, 3);
+ }
+
+ task->data[6] = gBattleAnimArgs[1];
+ task->data[7] = 0;
+ task->data[8] = 0;
+ task->data[9] = 0;
+ task->data[10] = 0;
+ task->data[11] = gBattleAnimArgs[3];
+ task->data[12] = 0;
+ task->data[13] = gBattleAnimArgs[2];
+ task->func = sub_80D6BB8;
+}
+
+static void sub_80D6BB8(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ if (task->data[6])
+ {
+ if (++task->data[12] > task->data[13])
+ {
+ u8 spriteId;
+ task->data[12] = 0;
+ spriteId = CreateSprite(&gSpriteTemplate_83D99B8, task->data[14], task->data[15], 2);
+ if (spriteId != MAX_SPRITES)
+ {
+ struct Sprite *sprite = &gSprites[spriteId];
+ sprite->pos1.x += gUnknown_083D9968[task->data[9]][0];
+ sprite->pos1.y += gUnknown_083D9968[task->data[9]][1];
+
+ sprite->data[0] = 40 - task->data[8] * 5;
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[2] = task->data[14];
+ sprite->data[3] = sprite->pos1.y;
+ sprite->data[4] = task->data[15];
+ sprite->data[5] = taskId;
+
+ InitAnimSpriteTranslationDeltas(sprite);
+ StoreSpriteCallbackInData(sprite, sub_80D6D00);
+ sprite->callback = sub_8078600;
+
+ if (++task->data[9] > 15)
+ task->data[9] = 0;
+
+ if (++task->data[10] >= task->data[11])
+ {
+ task->data[10] = 0;
+ if (task->data[8] <= 5)
+ task->data[8]++;
+ }
+
+ task->data[7]++;
+ task->data[6]--;
+ }
+ }
+ }
+ else
+ {
+ if (task->data[7] == 0)
+ {
+ DestroyAnimVisualTask(taskId);
+ }
+ }
+}
+
+static void sub_80D6CCC(struct Sprite *sprite)
+{
+ if (TranslateAnimSpriteByDeltas(sprite))
+ {
+ gTasks[sprite->data[5]].data[7]--;
+ DestroySprite(sprite);
+ }
+}
+
+static void sub_80D6D00(struct Sprite *sprite)
+{
+ StartSpriteAnim(sprite, 1);
+ sprite->callback = sub_80D6CCC;
+}
+
+void sub_80D6D18(struct Sprite *sprite)
+{
+ if (gBattleAnimArgs[0] == 0)
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 3);
+ }
+ else
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankTarget, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankTarget, 3);
+ }
+
+ StoreSpriteCallbackInData(sprite, move_anim_8074EE0);
+ sprite->callback = sub_80785E4;
+}
+
+void sub_80D6D70(struct Sprite *sprite)
+{
+ if (gBattleAnimArgs[0] == 0)
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 3);
+ }
+ else
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankTarget, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankTarget, 3);
+ }
+
+ sprite->pos2.x = gBattleAnimArgs[1];
+ sprite->pos2.y = gBattleAnimArgs[2];
+ StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
+ sprite->callback = sub_8078600;
+}
+
+void sub_80D6DD8(struct Sprite *sprite)
+{
+ StartSpriteAffineAnim(sprite, 1);
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 3);
+ sprite->data[6] = GetAnimBattlerSpriteId(0);
+ sprite->data[7] = 16;
+
+ if (GetBattlerSide(gAnimBankAttacker) == B_SIDE_OPPONENT)
+ sprite->data[7] *= -1;
+
+ sprite->callback = sub_80D6E38;
+}
+
+static void sub_80D6E38(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ if (++sprite->data[1] > 40)
+ sprite->data[0]++;
+ break;
+ case 1:
+ sprite->pos1.x += sprite->data[7];
+ gSprites[sprite->data[6]].pos2.x += sprite->data[7];
+ if ((u16)(sprite->pos1.x + 80) > 400)
+ {
+ move_anim_8074EE0(sprite);
+ }
+ break;
+ }
+}
+
+void sub_80D6E9C(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ task->data[15] = GetAnimBattlerSpriteId(0);
+ task->data[14] = GetBattlerSpriteCoord(gAnimBankAttacker, 2);
+ if (GetBattlerSide(gAnimBankAttacker) == B_SIDE_PLAYER)
+ {
+ task->data[14] = -32;
+ task->data[13] = 2;
+ }
+ else
+ {
+ task->data[14] = 32;
+ task->data[13] = -2;
+ }
+
+ gSprites[task->data[15]].pos2.x = task->data[14];
+ task->data[0]++;
+ break;
+ case 1:
+ if (++task->data[1] > 1)
+ {
+ task->data[1] = 0;
+ gSprites[task->data[15]].invisible ^= 1;
+
+ if (task->data[14])
+ {
+ task->data[14] += task->data[13];
+ gSprites[task->data[15]].pos2.x = task->data[14];
+ }
+ else
+ {
+ task->data[0]++;
+ }
+ }
+ break;
+ case 2:
+ if (++task->data[1] > 1)
+ {
+ task->data[1] = 0;
+ gSprites[task->data[15]].invisible ^= 1;
+
+ if (++task->data[2] == 8)
+ task->data[0]++;
+ }
+ break;
+ case 3:
+ gSprites[task->data[15]].invisible = 0;
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+void sub_80D700C(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch(task->data[0])
+ {
+ case 0:
+ task->data[1] = GetBattlerSide(gAnimBankAttacker) == B_SIDE_PLAYER ? 1 : -1;
+
+ switch (gBattleAnimArgs[0])
+ {
+ case 0:
+ task->data[3] = GetBattlerSpriteCoord(gAnimBankAttacker, 2);
+ task->data[5] = GetBattlerSpriteCoord(gAnimBankAttacker, 3);
+ task->data[4] = (task->data[1] * 128) + 120;
+ break;
+ case 4:
+ task->data[3] = 120 - (task->data[1] * 128);
+ task->data[5] = GetBattlerSpriteCoord(gAnimBankTarget, 3);
+ task->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 2) - (task->data[1] * 32);
+ break;
+ default:
+ if ((gBattleAnimArgs[0] & 1) != 0)
+ {
+ task->data[3] = 256;
+ task->data[4] = -16;
+ }
+ else
+ {
+ task->data[3] = -16;
+ task->data[4] = 256;
+ }
+
+ if (task->data[1] == 1)
+ {
+ task->data[5] = 80 - gBattleAnimArgs[0] * 10;
+ }
+ else
+ {
+ u16 temp;
+ task->data[5] = gBattleAnimArgs[0] * 10 + 40;
+ temp = task->data[3];
+ task->data[3] = task->data[4];
+ task->data[4] = temp;
+ }
+ break;
+ }
+
+ if (task->data[3] < task->data[4])
+ {
+ task->data[1] = 1;
+ task->data[6] = 0;
+ }
+ else
+ {
+ task->data[1] = -1;
+ task->data[6] = 3;
+ }
+
+ task->data[0]++;
+ break;
+ case 1:
+ if (++task->data[2] > 0)
+ {
+ task->data[2] = 0;
+ if (sub_80D7194(task, taskId) || sub_80D7194(task, taskId))
+ task->data[0]++;
+ }
+ break;
+ case 2:
+ if (task->data[7] == 0)
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+static bool8 sub_80D7194(struct Task *task, u8 taskId)
+{
+ u8 spriteId = CreateSprite(&gSpriteTemplate_83D9B10, task->data[3], task->data[5], 35);
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].data[6] = taskId;
+ gSprites[spriteId].data[7] = 7;
+ task->data[7]++;
+ }
+
+ task->data[6] += task->data[1];
+ if (task->data[6] < 0)
+ task->data[6] = 3;
+
+ if (task->data[6] > 3)
+ task->data[6] = 0;
+
+ task->data[3] += task->data[1] * 16;
+
+ if ((task->data[1] == 1 && task->data[3] >= task->data[4])
+ || (task->data[1] == -1 && task->data[3] <= task->data[4]))
+ {
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+
+void sub_80D7230(struct Sprite *sprite)
+{
+ if (++sprite->data[0] > 12)
+ {
+ gTasks[sprite->data[6]].data[sprite->data[7]]--;
+ FreeOamMatrix(sprite->oam.matrixNum);
+ DestroySprite(sprite);
+ }
+}
+
+void sub_80D727C(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 3);
+ StartSpriteAffineAnim(sprite, 2);
+ sprite->data[0]++;
+ break;
+ case 1:
+ if (sprite->affineAnimEnded)
+ move_anim_8074EE0(sprite);
+ break;
+ }
+}
+
+void sub_80D72DC(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ task->data[6] = GetBattlerSpriteCoord(gAnimBankAttacker, 2);
+ task->data[7] = GetBattlerSpriteCoord(gAnimBankAttacker, 3);
+ task->data[8] = 4;
+ task->data[10] = GetBattlerSpriteCoord(gAnimBankTarget, 2);
+ task->data[9] = (task->data[10] - task->data[6]) / 5;
+ task->data[4] = 7;
+ task->data[5] = -1;
+ task->data[11] = 12;
+ task->data[12] = BattleAnimAdjustPanning(task->data[11] - 76);
+ task->data[13] = BattleAnimAdjustPanning(63);
+ task->data[14] = task->data[12];
+ task->data[15] = (task->data[13] - task->data[12]) / 3;
+ task->data[0]++;
+ break;
+ case 1:
+ if (++task->data[1] > 0)
+ {
+ task->data[1] = 0;
+ if (sub_80D7470(task, taskId))
+ {
+ if (task->data[2] == 5)
+ task->data[0] = 3;
+ else
+ task->data[0]++;
+ }
+ }
+
+ if (task->data[11])
+ task->data[11]--;
+ break;
+ case 2:
+ if (task->data[11])
+ task->data[11]--;
+
+ if (++task->data[1] > 4)
+ {
+ task->data[1] = 0;
+ if (task->data[2] & 1)
+ {
+ task->data[7] = 4;
+ task->data[8] = 68;
+ task->data[4] = 0;
+ task->data[5] = 1;
+ }
+ else
+ {
+ task->data[7] = 68;
+ task->data[8] = 4;
+ task->data[4] = 7;
+ task->data[5] = -1;
+ }
+
+ if (task->data[11])
+ task->data[0] = 4;
+ else
+ task->data[0] = 1;
+ }
+ break;
+ case 3:
+ if (task->data[3] == 0)
+ DestroyAnimVisualTask(taskId);
+ break;
+ case 4:
+ if (task->data[11])
+ task->data[11]--;
+ else
+ task->data[0] = 1;
+ break;
+ }
+}
+
+static bool8 sub_80D7470(struct Task *task, u8 taskId)
+{
+ u8 spriteId = CreateSprite(&gSpriteTemplate_83D9B40, task->data[6], task->data[7], 35);
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].oam.tileNum += task->data[4];
+ task->data[4] += task->data[5];
+ if (task->data[4] < 0)
+ task->data[4] = 7;
+ if (task->data[4] > 7)
+ task->data[4] = 0;
+
+ gSprites[spriteId].data[6] = taskId;
+ gSprites[spriteId].data[7] = 3;
+ task->data[3]++;
+ }
+
+ if (task->data[4] == 0 && task->data[5] > 0)
+ {
+ task->data[14] += task->data[15];
+ PlaySE12WithPanning(SE_W085, task->data[14]);
+ }
+
+ if ((task->data[5] < 0 && task->data[7] <= task->data[8])
+ || (task->data[5] > 0 && task->data[7] >= task->data[8]))
+ {
+ task->data[2]++;
+ task->data[6] += task->data[9];
+ return TRUE;
+ }
+ else
+ {
+ task->data[7] += task->data[5] * 8;
+ return FALSE;
+ }
+}
+
+void sub_80D755C(struct Sprite *sprite)
+{
+ if (++sprite->data[0] > 12)
+ {
+ gTasks[sprite->data[6]].data[sprite->data[7]]--;
+ DestroySprite(sprite);
+ }
+}
+
+void sub_80D759C(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ task->data[15] = GetBattlerSpriteCoord(gAnimBankTarget, 1) + 32;
+ task->data[14] = task->data[15];
+ while (task->data[14] > 16)
+ {
+ task->data[14] -= 32;
+ }
+
+ task->data[13] = GetBattlerSpriteCoord(gAnimBankTarget, 2);
+ task->data[12] = sub_8079E90(gAnimBankTarget) - 2;
+ task->data[0]++;
+ break;
+ case 1:
+ if (++task->data[1] > 1)
+ {
+ task->data[1] = 0;
+ if (sub_80D7654(task, taskId))
+ task->data[0]++;
+ }
+ break;
+ case 2:
+ if (task->data[10] == 0)
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+static bool8 sub_80D7654(struct Task *task, u8 taskId)
+{
+ u8 spriteId = CreateSprite(&gBattleAnimSpriteTemplate_83D97D0, task->data[13], task->data[14], task->data[12]);
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].callback = sub_80D76C4;
+ gSprites[spriteId].data[6] = taskId;
+ gSprites[spriteId].data[7] = 10;
+ task->data[10]++;
+ }
+
+ if (task->data[14] >= task->data[15])
+ {
+ return TRUE;
+ }
+ else
+ {
+ task->data[14] += 32;
+ return FALSE;
+ }
+}
+
+static void sub_80D76C4(struct Sprite *sprite)
+{
+ if (sprite->animEnded)
+ {
+ gTasks[sprite->data[6]].data[sprite->data[7]]--;
+ DestroySprite(sprite);
+ }
+}
diff --git a/src/battle/anim/cutter.c b/src/battle/anim/cutter.c
deleted file mode 100644
index fed3598fc..000000000
--- a/src/battle/anim/cutter.c
+++ /dev/null
@@ -1,144 +0,0 @@
-#include "global.h"
-#include "battle.h"
-#include "rom_8077ABC.h"
-#include "trig.h"
-#include "battle_anim.h"
-
-extern s16 gBattleAnimArgs[];
-extern u8 gAnimBankAttacker;
-extern u8 gAnimBankTarget;
-
-static void AnimTranslateLinearSingleSineWaveStep(struct Sprite* sprite);
-static void AnimMoveTwisterParticleStep(struct Sprite* sprite);
-
-// Animates a sprite that moves linearly from one location to another, with a
-// single-cycle sine wave added to the y position along the way.
-// Used by Razor Leaf and Magical Leaf.
-// arg 0: initial x offset
-// arg 1: initial y offset
-// arg 2: target x offset
-// arg 3: target y offset
-// arg 4: translation duration
-// arg 5: wave amplitude
-// arg 6: target between double battle opponents (boolean)
-void AnimTranslateLinearSingleSineWave(struct Sprite* sprite)
-{
- InitAnimSpritePos(sprite, 1);
- if (GetBankSide(gAnimBankAttacker) != SIDE_PLAYER)
- {
- gBattleAnimArgs[2] = -gBattleAnimArgs[2];
- }
-
- sprite->data[0] = gBattleAnimArgs[4];
- if (!gBattleAnimArgs[6])
- {
- sprite->data[2] = GetBankPosition(gAnimBankTarget, 2) + gBattleAnimArgs[2];
- sprite->data[4] = GetBankPosition(gAnimBankTarget, 3) + gBattleAnimArgs[3];
- }
- else
- {
- SetAverageBattlerPositions(gAnimBankTarget, 1, &sprite->data[2], &sprite->data[4]);
- sprite->data[2] += gBattleAnimArgs[2];
- sprite->data[4] += gBattleAnimArgs[3];
- }
-
- sprite->data[5] = gBattleAnimArgs[5];
- InitAnimSpriteTranslationOverDuration(sprite);
- if (GetBankSide(gAnimBankAttacker) == GetBankSide(gAnimBankTarget))
- {
- sprite->data[0] = 1;
- }
- else
- {
- sprite->data[0] = 0;
- }
-
- sprite->callback = AnimTranslateLinearSingleSineWaveStep;
-}
-
-static void AnimTranslateLinearSingleSineWaveStep(struct Sprite* sprite)
-{
- bool8 destroy = FALSE;
- s16 a = sprite->data[0];
- s16 b = sprite->data[7];
- s16 r0;
-
- sprite->data[0] = 1;
- TranslateAnimSpriteLinearAndSine(sprite);
- r0 = sprite->data[7];
- sprite->data[0] = a;
- if (b > 0xC8 && r0 <= 0x37 && sprite->oam.affineParam == 0)
- sprite->oam.affineParam++;
-
- if (sprite->oam.affineParam != 0 && sprite->data[0] != 0)
- {
- sprite->invisible ^= 1;
- sprite->oam.affineParam++;
- if (sprite->oam.affineParam == 0x1E)
- destroy = TRUE;
- }
-
- if (sprite->pos1.x + sprite->pos2.x > 256
- || sprite->pos1.x + sprite->pos2.x < -16
- || sprite->pos1.y + sprite->pos2.y > 160
- || sprite->pos1.y + sprite->pos2.y < -16)
- destroy = TRUE;
-
- if (destroy)
- DestroyAnimSprite(sprite);
-}
-
-// Animates particles in the Twister move animation.
-// arg 0: duration
-// arg 1: total y delta (the particles rise upward)
-// arg 2: wave period (higher means faster wave)
-// arg 3: wave amplitude
-// arg 4: speedup frame (particles move faster at the end of the animation)
-void AnimMoveTwisterParticle(struct Sprite* sprite)
-{
- if (!IsContest() && IsDoubleBattle() == TRUE)
- {
- SetAverageBattlerPositions(gAnimBankTarget, 1, &sprite->pos1.x, &sprite->pos1.y);
- }
-
- sprite->pos1.y += 32;
- sprite->data[0] = gBattleAnimArgs[0];
- sprite->data[1] = gBattleAnimArgs[1];
- sprite->data[2] = gBattleAnimArgs[2];
- sprite->data[3] = gBattleAnimArgs[3];
- sprite->data[4] = gBattleAnimArgs[4];
- sprite->callback = AnimMoveTwisterParticleStep;
-}
-
-static void AnimMoveTwisterParticleStep(struct Sprite* sprite)
-{
- if (sprite->data[1] == 0xFF)
- {
- sprite->pos1.y -= 2;
- }
- else if (sprite->data[1] > 0)
- {
- sprite->pos1.y -= 2;
- sprite->data[1] -= 2;
- }
-
- sprite->data[5] += sprite->data[2];
- if (sprite->data[0] < sprite->data[4])
- sprite->data[5] += sprite->data[2];
-
- sprite->data[5] &= 0xFF;
- sprite->pos2.x = Cos(sprite->data[5], sprite->data[3]);
- sprite->pos2.y = Sin(sprite->data[5], 5);
- if (sprite->data[5] <= 0x7F)
- {
- sprite->oam.priority = sub_8079ED4(gAnimBankTarget) - 1;
- }
- else
- {
- sprite->oam.priority = sub_8079ED4(gAnimBankTarget) + 1;
- }
-
- sprite->data[0]--;
- if (!sprite->data[0])
- DestroyAnimSprite(sprite);
-}
diff --git a/src/battle/anim/cyclone.c b/src/battle/anim/cyclone.c
index b1210bc54..8b868a436 100644
--- a/src/battle/anim/cyclone.c
+++ b/src/battle/anim/cyclone.c
@@ -8,13 +8,38 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80D0118(struct Sprite* sprite);
+
// cyclone (creates a circling motion like a cyclone, usually a wind sprite.)
// Used in Razor Wind.
+const union AffineAnimCmd gSpriteAffineAnim_83D7640[] =
+{
+ AFFINEANIMCMD_FRAME(0x10, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0x4, 0x0, 0, 40),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D7658[] =
+{
+ gSpriteAffineAnim_83D7640,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D765C =
+{
+ .tileTag = 10009,
+ .paletteTag = 10009,
+ .oam = &gOamData_837DFDC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D7658,
+ .callback = sub_80D0118,
+};
+
void sub_80D0118(struct Sprite* sprite)
{
InitAnimSpritePos(sprite, 0);
- if (GetBankSide(gAnimBankAttacker) == 0)
+ if (GetBattlerSide(gAnimBankAttacker) == 0)
sprite->pos1.y += 16;
sprite->data[0] = gBattleAnimArgs[4];
diff --git a/src/battle/anim/dark.c b/src/battle/anim/dark.c
index 055cf5802..59db85342 100644
--- a/src/battle/anim/dark.c
+++ b/src/battle/anim/dark.c
@@ -21,13 +21,17 @@ extern u16 gBattle_BG2_X;
extern u16 gBattle_BG2_Y;
extern u16 gBattle_WIN0H;
extern u16 gBattle_WIN0V;
-extern u16 gBattlePartyID[];
+extern u16 gBattlerPartyIndexes[];
extern u8 gAnimMoveTurn;
extern const u8 gUnknown_08D1D574[];
extern const u8 gUnknown_08D1D410[];
extern const u16 gUnknown_08D1D54C[];
+void sub_80DFE14(struct Sprite *sprite);
+void sub_80DFF1C(struct Sprite *sprite);
+void sub_80DFFD0(struct Sprite *sprite);
+void sub_80E0A10(struct Sprite *sprite);
static void sub_80DFE90(struct Sprite *sprite);
static void sub_80DFC9C(u8 taskId);
static void sub_80DFD58(u8 taskId);
@@ -40,6 +44,166 @@ static void sub_80E08CC(u8 priority);
static void sub_80E079C(struct Task *task);
static void sub_80E0CD0(u8 taskId);
+const struct SpriteTemplate gSpriteTemplate_83DB118 =
+{
+ .tileTag = 10015,
+ .paletteTag = 10015,
+ .oam = &gOamData_837DF2C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DFE14,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DB130[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 1),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DB140[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 32, 1),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DB150[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 64, 1),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DB160[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 96, 1),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DB170[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -128, 1),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DB180[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -96, 1),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DB190[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -64, 1),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DB1A0[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -32, 1),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DB1B0[] =
+{
+ gSpriteAffineAnim_83DB130,
+ gSpriteAffineAnim_83DB140,
+ gSpriteAffineAnim_83DB150,
+ gSpriteAffineAnim_83DB160,
+ gSpriteAffineAnim_83DB170,
+ gSpriteAffineAnim_83DB180,
+ gSpriteAffineAnim_83DB190,
+ gSpriteAffineAnim_83DB1A0,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB1D0 =
+{
+ .tileTag = 10139,
+ .paletteTag = 10139,
+ .oam = &gOamData_837E0BC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DB1B0,
+ .callback = sub_80DFF1C,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB1E8 =
+{
+ .tileTag = 10145,
+ .paletteTag = 10145,
+ .oam = &gOamData_837E0BC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DB1B0,
+ .callback = sub_80DFF1C,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DB200[] =
+{
+ AFFINEANIMCMD_FRAME(0xC0, 0xC0, 80, 0),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -2, 8),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DB218[] =
+{
+ AFFINEANIMCMD_FRAME(0xC0, 0xC0, -80, 0),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 2, 8),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DB230[] =
+{
+ gSpriteAffineAnim_83DB200,
+ gSpriteAffineAnim_83DB218,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB238 =
+{
+ .tileTag = 10155,
+ .paletteTag = 10155,
+ .oam = &gOamData_837DF8C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DB230,
+ .callback = sub_80DFFD0,
+};
+
+const union AnimCmd gSpriteAnim_83DB250[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(16, 4),
+ ANIMCMD_FRAME(32, 4),
+ ANIMCMD_FRAME(48, 4),
+ ANIMCMD_FRAME(64, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83DB268[] =
+{
+ ANIMCMD_FRAME(0, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(16, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(32, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(48, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(64, 4, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83DB280[] =
+{
+ gSpriteAnim_83DB250,
+ gSpriteAnim_83DB268,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB288 =
+{
+ .tileTag = 10039,
+ .paletteTag = 10039,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83DB280,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80E0A10,
+};
// used in Smoke Ball escape, Sky Attack, Feint Attack and Camouflage
void sub_80DFC24(u8 taskId)
@@ -49,7 +213,7 @@ void sub_80DFC24(u8 taskId)
bank = gAnimBankAttacker;
gTasks[taskId].data[1] = 16;
REG_BLDALPHA = 16;
- if (GetBankIdentity_permutated(bank) == 1)
+ if (GetBattlerPosition_permutated(bank) == 1)
REG_BLDCNT = 0x3F42;
else
REG_BLDCNT = 0x3F44;
@@ -112,7 +276,7 @@ void sub_80DFD58(u8 taskId)
void sub_80DFDC0(u8 taskId)
{
REG_BLDALPHA = 0x1000;
- if (GetBankIdentity_permutated(gAnimBankAttacker) == 1)
+ if (GetBattlerPosition_permutated(gAnimBankAttacker) == 1)
REG_BLDCNT = 0x3F42;
else
REG_BLDCNT = 0x3F44;
@@ -123,10 +287,10 @@ void sub_80DFDC0(u8 taskId)
void sub_80DFE14(struct Sprite *sprite)
{
- sprite->data[1] = GetBankPosition(gAnimBankTarget, 2);
- sprite->data[2] = GetBankPosition(gAnimBankAttacker, 2);
- sprite->data[3] = GetBankPosition(gAnimBankTarget, 3);
- sprite->data[4] = GetBankPosition(gAnimBankAttacker, 3);
+ sprite->data[1] = GetBattlerSpriteCoord(gAnimBankTarget, 2);
+ sprite->data[2] = GetBattlerSpriteCoord(gAnimBankAttacker, 2);
+ sprite->data[3] = GetBattlerSpriteCoord(gAnimBankTarget, 3);
+ sprite->data[4] = GetBattlerSpriteCoord(gAnimBankAttacker, 3);
sprite->data[0] = 0x7E;
InitSpriteDataForLinearTranslation(sprite);
sprite->data[3] = -sprite->data[1];
@@ -257,22 +421,22 @@ void sub_80E00EC(u8 taskId)
int var0;
struct Task *task = &gTasks[taskId];
- task->data[7] = GetBankPosition(gAnimBankAttacker, 1) + 31;
+ task->data[7] = GetBattlerSpriteCoord(gAnimBankAttacker, 1) + 31;
task->data[6] = sub_807A100(gAnimBankAttacker, 2) - 7;
task->data[5] = task->data[7];
task->data[4] = task->data[6];
task->data[13] = (task->data[7] - task->data[6]) << 8;
- pos = GetBankPosition(gAnimBankAttacker, 0);
+ pos = GetBattlerSpriteCoord(gAnimBankAttacker, 0);
task->data[14] = pos - 32;
task->data[15] = pos + 32;
- if (GetBankSide(gAnimBankAttacker) == SIDE_PLAYER)
+ if (GetBattlerSide(gAnimBankAttacker) == B_SIDE_PLAYER)
task->data[8] = -12;
else
task->data[8] = -64;
- task->data[3] = GetBankIdentity_permutated(gAnimBankAttacker);
+ task->data[3] = GetBattlerPosition_permutated(gAnimBankAttacker);
if (task->data[3] == 1)
{
sub_8078914(&subStruct);
@@ -403,7 +567,7 @@ void sub_80E03BC(u8 taskId)
}
else
{
- task->data[3] = GetBankIdentity_permutated(gAnimBankTarget);
+ task->data[3] = GetBattlerPosition_permutated(gAnimBankTarget);
if (task->data[3] == 1)
{
REG_BLDCNT = 0x3F42;
@@ -435,14 +599,14 @@ void sub_80E03BC(u8 taskId)
task->data[0]++;
break;
case 2:
- task->data[7] = GetBankPosition(gAnimBankTarget, 1) + 31;
+ task->data[7] = GetBattlerSpriteCoord(gAnimBankTarget, 1) + 31;
task->data[6] = sub_807A100(gAnimBankTarget, 2) - 7;
task->data[13] = (task->data[7] - task->data[6]) << 8;
- pos = GetBankPosition(gAnimBankTarget, 0);
+ pos = GetBattlerSpriteCoord(gAnimBankTarget, 0);
task->data[14] = pos - 4;
task->data[15] = pos + 4;
- if (GetBankSide(gAnimBankTarget) == SIDE_PLAYER)
+ if (GetBattlerSide(gAnimBankTarget) == B_SIDE_PLAYER)
task->data[8] = -12;
else
task->data[8] = -64;
@@ -611,7 +775,7 @@ static void sub_80E0620(u8 taskId)
// }
// }
-__attribute__((naked))
+NAKED
static void sub_80E079C(struct Task *task)
{
asm(".syntax unified\n\
@@ -783,7 +947,7 @@ static void sub_80E08CC(u8 priority)
for (i = 0; i < 4; i++)
{
- u8 spriteId = GetAnimBankSpriteId(i);
+ u8 spriteId = GetAnimBattlerSpriteId(i);
if (spriteId != 0xFF)
gSprites[spriteId].oam.priority = priority;
}
@@ -791,7 +955,7 @@ static void sub_80E08CC(u8 priority)
void sub_80E0918(u8 taskId)
{
- u8 toBG2 = GetBankIdentity_permutated(gAnimBankAttacker) ^ 1 ? 1 : 0;
+ u8 toBG2 = GetBattlerPosition_permutated(gAnimBankAttacker) ^ 1 ? 1 : 0;
MoveBattlerSpriteToBG(gAnimBankAttacker, toBG2);
gSprites[gBankSpriteIds[gAnimBankAttacker]].invisible = 0;
@@ -806,7 +970,7 @@ void sub_80E0918(u8 taskId)
void sub_80E09C4(u8 taskId)
{
- u8 toBG2 = GetBankIdentity_permutated(gAnimBankAttacker) ^ 1 ? 1 : 0;
+ u8 toBG2 = GetBattlerPosition_permutated(gAnimBankAttacker) ^ 1 ? 1 : 0;
sub_8076464(toBG2);
if (IsAnimBankSpriteVisible(gAnimBankAttacker ^ 2))
@@ -847,7 +1011,7 @@ void sub_80E0A4C(u8 taskId)
if (IsDoubleBattle() && !IsContest())
{
- if (GetBankIdentity(gAnimBankAttacker) == 3 || GetBankIdentity(gAnimBankAttacker) == 0)
+ if (GetBattlerPosition(gAnimBankAttacker) == 3 || GetBattlerPosition(gAnimBankAttacker) == 0)
{
if (IsAnimBankSpriteVisible(gAnimBankAttacker ^ 2) == TRUE)
{
@@ -860,17 +1024,17 @@ void sub_80E0A4C(u8 taskId)
if (IsContest())
{
- species = EWRAM_19348;
+ species = EWRAM_19348[0];
}
else
{
- if (GetBankSide(gAnimBankAttacker) != SIDE_PLAYER)
- species = GetMonData(&gEnemyParty[gBattlePartyID[gAnimBankAttacker]], MON_DATA_SPECIES);
+ if (GetBattlerSide(gAnimBankAttacker) != B_SIDE_PLAYER)
+ species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gAnimBankAttacker]], MON_DATA_SPECIES);
else
- species = GetMonData(&gPlayerParty[gBattlePartyID[gAnimBankAttacker]], MON_DATA_SPECIES);
+ species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gAnimBankAttacker]], MON_DATA_SPECIES);
}
- spriteId = GetAnimBankSpriteId(0);
+ spriteId = GetAnimBattlerSpriteId(0);
newSpriteId = sub_807A4A0(gAnimBankAttacker, spriteId, species);
sub_8078914(&subStruct);
@@ -926,7 +1090,7 @@ static void sub_80E0CD0(u8 taskId)
REG_BLDCNT = 0;
REG_BLDALPHA = 0;
- spriteId = GetAnimBankSpriteId(0);
+ spriteId = GetAnimBattlerSpriteId(0);
paletteNum = 16 + gSprites[spriteId].oam.paletteNum;
if (gTasks[taskIdCopy].data[1] == 0)
sub_8079108(paletteNum, 1);
@@ -958,22 +1122,22 @@ void sub_80E0E24(u8 taskId)
case 1:
case 2:
case 3:
- spriteId = GetAnimBankSpriteId(gBattleAnimArgs[0]);
+ spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
break;
case 4:
- identity = IDENTITY_PLAYER_MON1;
+ identity = B_POSITION_PLAYER_LEFT;
calcSpriteId = TRUE;
break;
case 5:
- identity = IDENTITY_PLAYER_MON2;
+ identity = B_POSITION_PLAYER_RIGHT;
calcSpriteId = TRUE;
break;
case 6:
- identity = IDENTITY_OPPONENT_MON1;
+ identity = B_POSITION_OPPONENT_LEFT;
calcSpriteId = TRUE;
break;
case 7:
- identity = IDENTITY_OPPONENT_MON2;
+ identity = B_POSITION_OPPONENT_RIGHT;
calcSpriteId = TRUE;
break;
default:
@@ -983,7 +1147,7 @@ void sub_80E0E24(u8 taskId)
if (calcSpriteId)
{
- bank = GetBankByIdentity(identity);
+ bank = GetBattlerAtPosition(identity);
if (IsAnimBankSpriteVisible(bank))
spriteId = gBankSpriteIds[bank];
else
diff --git a/src/battle/anim/devil.c b/src/battle/anim/devil.c
index c628abfc0..8183be2ba 100644
--- a/src/battle/anim/devil.c
+++ b/src/battle/anim/devil.c
@@ -7,6 +7,37 @@
extern s16 gBattleAnimArgs[8];
extern u8 gAnimBankTarget;
+void sub_80D2ABC(struct Sprite *sprite);
+
+const union AnimCmd gSpriteAnim_83D7BE8[] =
+{
+ ANIMCMD_FRAME(0, 3),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gSpriteAnim_83D7BF0[] =
+{
+ ANIMCMD_FRAME(16, 3),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D7BF8[] =
+{
+ gSpriteAnim_83D7BE8,
+ gSpriteAnim_83D7BF0,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D7C00 =
+{
+ .tileTag = 10221,
+ .paletteTag = 10221,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D7BF8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D2ABC,
+};
+
void sub_80D2ABC(struct Sprite *sprite)
{
if (sprite->data[3] == 0)
diff --git a/src/battle/anim/dragon.c b/src/battle/anim/dragon.c
index dc2c0bc50..163529ecb 100644
--- a/src/battle/anim/dragon.c
+++ b/src/battle/anim/dragon.c
@@ -5,13 +5,6 @@
#include "sound.h"
#include "scanline_effect.h"
-void sub_80DF81C(struct Sprite *sprite);
-void sub_80DFBD8(struct Sprite *sprite);
-
-void sub_80DF9F4(u8 taskId);
-
-void sub_80DFAB0(struct Task *task);
-
extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
@@ -21,13 +14,194 @@ extern u16 gBattle_BG2_X;
extern u16 gUnknown_03000730[];
extern u8 gBankSpriteIds[];
+void sub_80DF5A0(struct Sprite *sprite);
+void sub_80DF760(struct Sprite *sprite);
+void sub_80DF6F0(struct Sprite *sprite);
+void sub_80DF760(struct Sprite *sprite);
+void sub_80DF78C(struct Sprite *sprite);
+void sub_80DFB28(struct Sprite *sprite);
+static void sub_80DF81C(struct Sprite *sprite);
+static void sub_80DFBD8(struct Sprite *sprite);
+static void sub_80DF9F4(u8 taskId);
+static void sub_80DFAB0(struct Task *task);
+
+const union AnimCmd gSpriteAnim_83DAFB0[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(16, 4),
+ ANIMCMD_FRAME(32, 4),
+ ANIMCMD_FRAME(48, 4),
+ ANIMCMD_FRAME(64, 4),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gSpriteAnimTable_83DAFC8[] =
+{
+ gSpriteAnim_83DAFB0,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAFCC =
+{
+ .tileTag = 10029,
+ .paletteTag = 10029,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83DAFC8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DF5A0,
+};
+
+const union AnimCmd gSpriteAnim_83DAFE4[] =
+{
+ ANIMCMD_FRAME(16, 3),
+ ANIMCMD_FRAME(32, 3),
+ ANIMCMD_FRAME(48, 3),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gSpriteAnim_83DAFF4[] =
+{
+ ANIMCMD_FRAME(16, 3, .vFlip = TRUE, .hFlip = TRUE),
+ ANIMCMD_FRAME(32, 3, .vFlip = TRUE, .hFlip = TRUE),
+ ANIMCMD_FRAME(48, 3, .vFlip = TRUE, .hFlip = TRUE),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gSpriteAnimTable_83DB004[] =
+{
+ gSpriteAnim_83DAFE4,
+ gSpriteAnim_83DAFF4,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DB00C[] =
+{
+ AFFINEANIMCMD_FRAME(0x50, 0x50, 127, 0),
+ AFFINEANIMCMD_FRAME(0xD, 0xD, 0, 100),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DB024[] =
+{
+ AFFINEANIMCMD_FRAME(0x50, 0x50, 0, 0),
+ AFFINEANIMCMD_FRAME(0xD, 0xD, 0, 100),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DB03C[] =
+{
+ gSpriteAffineAnim_83DB00C,
+ gSpriteAffineAnim_83DB024,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB044 =
+{
+ .tileTag = 10029,
+ .paletteTag = 10029,
+ .oam = &gOamData_837DFF4,
+ .anims = gSpriteAnimTable_83DB004,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DB03C,
+ .callback = sub_80DF760,
+};
+
+const union AnimCmd gSpriteAnim_83DB05C[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_FRAME(16, 5),
+ ANIMCMD_FRAME(32, 5),
+ ANIMCMD_FRAME(48, 5),
+ ANIMCMD_FRAME(64, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83DB074[] =
+{
+ gSpriteAnim_83DB05C,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB078 =
+{
+ .tileTag = 10035,
+ .paletteTag = 10035,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83DB074,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DF6F0,
+};
+
+const union AnimCmd gSpriteAnim_83DB090[] =
+{
+ ANIMCMD_FRAME(16, 3),
+ ANIMCMD_FRAME(32, 3),
+ ANIMCMD_FRAME(48, 3),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gSpriteAnimTable_83DB0A0[] =
+{
+ gSpriteAnim_83DB090,
+ gSpriteAnim_83DB090,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DB0A8[] =
+{
+ AFFINEANIMCMD_FRAME(0x64, 0x64, 127, 1),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DB0B8[] =
+{
+ AFFINEANIMCMD_FRAME(0x64, 0x64, 0, 1),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DB0C8[] =
+{
+ gSpriteAffineAnim_83DB0A8,
+ gSpriteAffineAnim_83DB0B8,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB0D0 =
+{
+ .tileTag = 10029,
+ .paletteTag = 10029,
+ .oam = &gOamData_837DFF4,
+ .anims = gSpriteAnimTable_83DB0A0,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DB0C8,
+ .callback = sub_80DF760,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB0E8 =
+{
+ .tileTag = 10249,
+ .paletteTag = 10249,
+ .oam = &gOamData_837DF2C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DF78C,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB100 =
+{
+ .tileTag = 10029,
+ .paletteTag = 10029,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83DAFC8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DFB28,
+};
+
// Outrage
void sub_80DF5A0(struct Sprite *sprite)
{
- sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2);
- sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3);
- if (GetBankSide(gAnimBankAttacker))
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 3);
+ if (GetBattlerSide(gAnimBankAttacker))
{
sprite->pos1.x -= gBattleAnimArgs[0];
gBattleAnimArgs[3] = -gBattleAnimArgs[3];
@@ -50,9 +224,9 @@ void sub_80DF5A0(struct Sprite *sprite)
void sub_80DF63C(struct Sprite *sprite)
{
sub_8078650(sprite);
- sprite->data[2] = GetBankPosition(gAnimBankTarget, 2);
- sprite->data[4] = GetBankPosition(gAnimBankTarget, 3);
- if (GetBankSide(gAnimBankAttacker))
+ sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2);
+ sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3);
+ if (GetBattlerSide(gAnimBankAttacker))
{
sprite->pos1.x -= gBattleAnimArgs[1];
sprite->pos1.y += gBattleAnimArgs[1];
@@ -78,13 +252,13 @@ void sub_80DF6F0(struct Sprite *sprite)
{
if (gBattleAnimArgs[0] == 0)
{
- sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 0);
- sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 1);
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 0);
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 1);
}
else
{
- sprite->pos1.x = GetBankPosition(gAnimBankTarget, 0);
- sprite->pos1.y = GetBankPosition(gAnimBankTarget, 1);
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankTarget, 0);
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankTarget, 1);
}
sub_807867C(sprite, gBattleAnimArgs[1]);
sprite->pos1.y += gBattleAnimArgs[2];
@@ -96,7 +270,7 @@ void sub_80DF6F0(struct Sprite *sprite)
void sub_80DF760(struct Sprite *sprite)
{
- if (GetBankSide(gAnimBankAttacker))
+ if (GetBattlerSide(gAnimBankAttacker))
StartSpriteAffineAnim(sprite, 1);
sub_80DF63C(sprite);
}
@@ -107,8 +281,8 @@ void sub_80DF78C(struct Sprite *sprite)
{
u16 r5;
u16 r0;
- sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2);
- sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3);
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 3);
sprite->data[4] = 0;
sprite->data[5] = 1;
sprite->data[6] = gBattleAnimArgs[0];
@@ -123,7 +297,7 @@ void sub_80DF78C(struct Sprite *sprite)
sprite->callback = sub_80DF81C;
}
-void sub_80DF81C(struct Sprite *sprite)
+static void sub_80DF81C(struct Sprite *sprite)
{
switch (sprite->data[0])
{
@@ -169,7 +343,7 @@ void sub_80DF924(u8 taskId)
struct Task *task = &gTasks[taskId];
u16 i;
u8 r1;
- if (GetBankIdentity_permutated(gAnimBankAttacker) == 1)
+ if (GetBattlerPosition_permutated(gAnimBankAttacker) == 1)
{
sp.dmaDest = &REG_BG1HOFS;
task->data[2] = gBattle_BG1_X;
@@ -196,7 +370,7 @@ void sub_80DF924(u8 taskId)
task->func = sub_80DF9F4;
}
-void sub_80DF9F4(u8 taskId)
+static void sub_80DF9F4(u8 taskId)
{
struct Task *task = &gTasks[taskId];
switch (task->data[0])
@@ -234,7 +408,7 @@ void sub_80DF9F4(u8 taskId)
}
}
-void sub_80DFAB0(struct Task *task)
+static void sub_80DFAB0(struct Task *task)
{
u16 r3 = task->data[5];
u16 i;
@@ -252,8 +426,8 @@ void sub_80DFB28(struct Sprite *sprite)
{
int r6 = (gBattleAnimArgs[2] * 3) / 5;
int i;
- sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2);
- sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3) + gBattleAnimArgs[4];
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 3) + gBattleAnimArgs[4];
sprite->data[1] = Cos(gBattleAnimArgs[1], gBattleAnimArgs[2]);
sprite->data[2] = Sin(gBattleAnimArgs[1], r6);
sprite->pos1.x += sprite->data[1] * gBattleAnimArgs[0];
@@ -264,7 +438,7 @@ void sub_80DFB28(struct Sprite *sprite)
gUnknown_03000730[i] = sprite->data[i];
}
-void sub_80DFBD8(struct Sprite *sprite)
+static void sub_80DFBD8(struct Sprite *sprite)
{
sprite->data[4] += sprite->data[1];
sprite->data[5] += sprite->data[2];
diff --git a/src/battle/anim/draw.c b/src/battle/anim/draw.c
index be3a280af..08b09337f 100644
--- a/src/battle/anim/draw.c
+++ b/src/battle/anim/draw.c
@@ -12,12 +12,24 @@ extern u8 gAnimBankTarget;
extern u16 gBattle_BG2_X;
extern u16 gBattle_BG1_X;
+void sub_80D0E30(struct Sprite* sprite);
static void sub_80D0D68(u8 taskId);
static void sub_80D0E8C(struct Sprite* sprite);
// draw (draws the Pokemon into the world using a pencil.)
// Used in Sketch.
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D77E0 =
+{
+ .tileTag = 10002,
+ .paletteTag = 10002,
+ .oam = &gOamData_837DF34,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D0E30,
+};
+
void sub_80D0C88(u8 taskId)
{
struct Task* task = &gTasks[taskId];
@@ -32,7 +44,7 @@ void sub_80D0C88(u8 taskId)
task->data[5] = 0;
task->data[15] = sub_807A100(gAnimBankTarget, 0);
- if (GetBankIdentity_permutated(gAnimBankTarget) == 1)
+ if (GetBattlerPosition_permutated(gAnimBankTarget) == 1)
{
task->data[6] = gBattle_BG1_X;
params.dmaDest = (u16 *)REG_ADDR_BG1HOFS;
@@ -59,7 +71,7 @@ void sub_80D0C88(u8 taskId)
task->func = sub_80D0D68;
}
-void sub_80D0D68(u8 taskId)
+static void sub_80D0D68(u8 taskId)
{
struct Task* task = &gTasks[taskId];
@@ -108,7 +120,7 @@ void sub_80D0D68(u8 taskId)
void sub_80D0E30(struct Sprite* sprite)
{
- sprite->pos1.x = GetBankPosition(gAnimBankTarget, 0) - 16;
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankTarget, 0) - 16;
sprite->pos1.y = sub_8077FC0(gAnimBankTarget) + 16;
sprite->data[0] = 0;
sprite->data[1] = 0;
@@ -120,7 +132,7 @@ void sub_80D0E30(struct Sprite* sprite)
sprite->callback = sub_80D0E8C;
}
-void sub_80D0E8C(struct Sprite* sprite)
+static void sub_80D0E8C(struct Sprite* sprite)
{
switch (sprite->data[0])
{
diff --git a/src/battle/anim/drum.c b/src/battle/anim/drum.c
deleted file mode 100644
index 7937d040a..000000000
--- a/src/battle/anim/drum.c
+++ /dev/null
@@ -1,32 +0,0 @@
-#include "global.h"
-#include "rom_8077ABC.h"
-#include "trig.h"
-#include "battle_anim.h"
-#include "sound.h"
-
-extern s16 gBattleAnimArgs[];
-extern u8 gAnimBankAttacker;
-extern u8 gAnimBankTarget;
-
-// drum (using hands to slap the Pokemon's belly in a rhythm.)
-// Used in Belly Drum.
-
-void sub_80CEDF0(struct Sprite* sprite)
-{
- s16 a;
- if (gBattleAnimArgs[0] == 1)
- {
- sprite->oam.matrixNum = 8;
- a = 16;
- }
- else
- {
- a = -16;
- }
-
- sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2) + a;
- sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3) + 8;
- sprite->data[0] = 8;
- sprite->callback = WaitAnimForDuration;
- StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
-}
diff --git a/src/battle/anim/egg.c b/src/battle/anim/egg.c
index b3de1dbb1..5b6d56dac 100644
--- a/src/battle/anim/egg.c
+++ b/src/battle/anim/egg.c
@@ -2,121 +2,15 @@
#include "rom_8077ABC.h"
#include "trig.h"
#include "battle_anim.h"
-#include "sound.h"
-
-extern s16 gBattleAnimArgs[];
-extern u8 gAnimBankAttacker;
-extern u8 gAnimBankTarget;
-
-static void sub_80D13AC(struct Sprite* sprite);
-static void sub_80D1424(struct Sprite* sprite);
-static void sub_80D144C(struct Sprite* sprite);
-static void sub_80D14C4(struct Sprite* sprite);
-static void sub_80D1504(struct Sprite* sprite);
-static void sub_80D154C(struct Sprite* sprite);
-static void sub_80D158C(struct Sprite* sprite);
-
-// egg (a hatching egg)
-// Used in Softboiled.
-
-void sub_80D1368(struct Sprite* sprite)
-{
- s16 r1;
- InitAnimSpritePos(sprite, 0);
- r1 = (GetBankSide(gAnimBankAttacker)) ? -0xA0 : 0xA0;
- sprite->data[0] = 0x380;
- sprite->data[1] = r1;
- sprite->data[7] = gBattleAnimArgs[2];
- sprite->callback = sub_80D13AC;
-}
-
-void sub_80D13AC(struct Sprite* sprite)
-{
- s16 add;
- sprite->pos2.y -= (sprite->data[0] >> 8);
- sprite->pos2.x = sprite->data[1] >> 8;
- sprite->data[0] -= 32;
- add = (GetBankSide(gAnimBankAttacker)) ? -0xA0 : 0xA0;
- sprite->data[1] += add;
- if (sprite->pos2.y > 0)
- {
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos2.y = 0;
- sprite->pos2.x = 0;
- sprite->data[0] = 0;
- StartSpriteAffineAnim(sprite, 1);
- sprite->callback = sub_80D1424;
- }
-}
-
-void sub_80D1424(struct Sprite* sprite)
-{
- if (sprite->data[0]++ > 19)
- {
- StartSpriteAffineAnim(sprite, 2);
- sprite->callback = sub_80D144C;
- }
-}
-
-void sub_80D144C(struct Sprite* sprite)
-{
- if (sprite->affineAnimEnded)
- {
- StartSpriteAffineAnim(sprite, 1);
- sprite->data[0] = 0;
- if (sprite->data[7] == 0)
- {
- sprite->oam.tileNum += 16;
- sprite->callback = sub_80D14C4;
- }
- else
- {
- sprite->oam.tileNum += 32;
- sprite->callback = sub_80D154C;
- }
- }
-}
-
-void sub_80D14C4(struct Sprite* sprite)
-{
- sprite->pos2.y -= 2;
- if (++sprite->data[0] == 9)
- {
- sprite->data[0] = 16;
- sprite->data[1] = 0;
- REG_BLDCNT = 0x3F40;
- REG_BLDALPHA = sprite->data[0];
- sprite->callback = sub_80D1504;
- }
-}
-
-void sub_80D1504(struct Sprite* sprite)
-{
- if (sprite->data[1]++ % 3 == 0)
- {
- sprite->data[0]--;
- REG_BLDALPHA = sprite->data[0] | ((16 - sprite->data[0]) << 8);
- if (sprite->data[0] == 0)
- sprite->callback = sub_80D154C;
- }
-}
-
-void sub_80D154C(struct Sprite* sprite)
-{
- if ((u16)gBattleAnimArgs[7] == 0xFFFF)
- {
- sprite->invisible = 1;
- if (sprite->data[7] == 0)
- sprite->callback = sub_80D158C;
- else
- sprite->callback = DestroyAnimSprite;
- }
-}
-
-void sub_80D158C(struct Sprite* sprite)
-{
- REG_BLDCNT = 0;
- REG_BLDALPHA = 0;
- DestroyAnimSprite(sprite);
-}
+#include "random.h"
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D7594 =
+{
+ .tileTag = 10175,
+ .paletteTag = 10175,
+ .oam = &gOamData_837DF2C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80794A8,
+};
diff --git a/src/battle/anim/energy_wave.c b/src/battle/anim/energy_wave.c
index 8111f70a3..9ac362b57 100644
--- a/src/battle/anim/energy_wave.c
+++ b/src/battle/anim/energy_wave.c
@@ -8,8 +8,11 @@
extern s16 gBattleAnimArgs[8];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
-extern const struct SpriteTemplate gSpriteTemplate_83D9130[];
+extern const union AffineAnimCmd *const gSpriteAffineAnimTable_83D752C[];
+void sub_80D3554(struct Sprite *sprite);
+void sub_80D3698(struct Sprite *sprite);
+void sub_80D3728(struct Sprite *sprite);
static void sub_80D35DC(struct Sprite *);
static void sub_80D365C(u8);
static void sub_80D370C(struct Sprite *);
@@ -18,15 +21,154 @@ static void sub_80D370C(struct Sprite *);
// Used in Hydro Pump, Mud Shot, Signal Beam, Flamethrower, Psywave, and
// Hydro Cannon.
+const union AnimCmd gSpriteAnim_83D91DC[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_FRAME(4, 1),
+ ANIMCMD_FRAME(8, 1),
+ ANIMCMD_FRAME(12, 1),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D91F0[] =
+{
+ gSpriteAnim_83D91DC,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D91F4 =
+{
+ .tileTag = 10149,
+ .paletteTag = 10149,
+ .oam = &gOamData_837E04C,
+ .anims = gSpriteAnimTable_83D91F0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D3554,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D920C =
+{
+ .tileTag = 10259,
+ .paletteTag = 10259,
+ .oam = &gOamData_837E04C,
+ .anims = gSpriteAnimTable_83D91F0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D3554,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9224 =
+{
+ .tileTag = 10264,
+ .paletteTag = 10264,
+ .oam = &gOamData_837DF24,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D3554,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D923C =
+{
+ .tileTag = 10265,
+ .paletteTag = 10265,
+ .oam = &gOamData_837DF24,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D3554,
+};
+
+const union AnimCmd gSpriteAnim_83D9254[] =
+{
+ ANIMCMD_FRAME(16, 2),
+ ANIMCMD_FRAME(32, 2),
+ ANIMCMD_FRAME(48, 2),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D9264[] =
+{
+ gSpriteAnim_83D9254,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9268 =
+{
+ .tileTag = 10029,
+ .paletteTag = 10029,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D9264,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D3554,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9280 =
+{
+ .tileTag = 10165,
+ .paletteTag = 10165,
+ .oam = &gOamData_837E034,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D752C,
+ .callback = sub_80D3554,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D9298[] =
+{
+ AFFINEANIMCMD_FRAME(0x3, 0x3, 10, 50),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 10),
+ AFFINEANIMCMD_FRAME(0xFFEC, 0xFFEC, -10, 20),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D92B8[] =
+{
+ AFFINEANIMCMD_FRAME(0x150, 0x150, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D92C8[] =
+{
+ gSpriteAffineAnim_83D9298,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D92CC[] =
+{
+ gSpriteAffineAnim_83D92B8,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D92D0 =
+{
+ .tileTag = 10149,
+ .paletteTag = 10149,
+ .oam = &gOamData_837E10C,
+ .anims = gSpriteAnimTable_83D91F0,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D92C8,
+ .callback = sub_80D3698,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D92E8 =
+{
+ .tileTag = 10149,
+ .paletteTag = 10149,
+ .oam = &gOamData_837E10C,
+ .anims = gSpriteAnimTable_83D91F0,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D92CC,
+ .callback = sub_80D3728,
+};
+
void sub_80D3554(struct Sprite *sprite)
{
InitAnimSpritePos(sprite, 1);
sprite->data[0] = 30;
sprite->data[1] = sprite->pos1.x;
- sprite->data[2] = GetBankPosition(gAnimBankTarget, 2);
+ sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2);
sprite->data[3] = sprite->pos1.y;
- sprite->data[4] = GetBankPosition(gAnimBankTarget, 3);
+ sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3);
InitAnimSpriteTranslationDeltas(sprite);
@@ -86,15 +228,15 @@ void sub_80D3698(struct Sprite *sprite)
{
u8 subpriority;
- sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 0);
- sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 1);
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 0);
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 1);
sprite->pos2.y = -10;
subpriority = sub_8079E90(gAnimBankAttacker);
if (!IsContest())
{
- if (GetBankSide(gAnimBankAttacker) == 0)
+ if (GetBattlerSide(gAnimBankAttacker) == 0)
{
sprite->pos2.x = 10;
sprite->subpriority = subpriority + 2;
@@ -126,11 +268,11 @@ void sub_80D3728(struct Sprite *sprite)
{
int var1, var2;
- if (GetBankSide(gAnimBankAttacker) == GetBankSide(gAnimBankTarget))
+ if (GetBattlerSide(gAnimBankAttacker) == GetBattlerSide(gAnimBankTarget))
{
gBattleAnimArgs[0] *= -1;
- if (GetBankIdentity(gAnimBankAttacker) == 0 || GetBankIdentity(gAnimBankAttacker) == 1)
+ if (GetBattlerPosition(gAnimBankAttacker) == 0 || GetBattlerPosition(gAnimBankAttacker) == 1)
{
gBattleAnimArgs[0] *= -1;
}
@@ -149,14 +291,14 @@ void sub_80D3728(struct Sprite *sprite)
InitAnimSpritePos(sprite, var1);
- if (GetBankSide(gAnimBankAttacker) != 0)
+ if (GetBattlerSide(gAnimBankAttacker) != 0)
{
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
}
sprite->data[0] = gBattleAnimArgs[4];
- sprite->data[2] = GetBankPosition(gAnimBankTarget, 2) + gBattleAnimArgs[2];
- sprite->data[4] = GetBankPosition(gAnimBankTarget, var2) + gBattleAnimArgs[3];
+ sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2) + gBattleAnimArgs[2];
+ sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, var2) + gBattleAnimArgs[3];
sprite->callback = StartTranslateAnimSpriteByDeltas;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
}
diff --git a/src/battle/anim/espeed.c b/src/battle/anim/espeed.c
index 469522092..a4f11c823 100644
--- a/src/battle/anim/espeed.c
+++ b/src/battle/anim/espeed.c
@@ -8,11 +8,7 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
-extern s8 gUnknown_083D7A00[4][2];
-
-extern struct AffineAnimFrameCmd gUnknown_083D79BC;
-extern struct SpriteTemplate gSpriteTemplate_83D79E8;
-
+void sub_80D1A70(struct Sprite* sprite);
static void sub_80D15E0(u8 taskId);
static void sub_80D16A0(u8 taskId);
static void sub_80D1808(u8 taskId);
@@ -21,13 +17,53 @@ static void sub_80D1930(u8 taskId);
// espeed (the Pokemon's width decreases as the sprite becomes vertically compressed)
// Used in Extremespeed.
+const union AffineAnimCmd gSpriteAffineAnim_83D79BC[] =
+{
+ AFFINEANIMCMD_FRAME(96, -13, 0, 8),
+ AFFINEANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D79CC[] =
+{
+ ANIMCMD_FRAME(0, 3),
+ ANIMCMD_FRAME(4, 3),
+ ANIMCMD_FRAME(8, 3),
+ ANIMCMD_FRAME(4, 3),
+ ANIMCMD_FRAME(0, 3),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D79E4[] =
+{
+ gSpriteAnim_83D79CC,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83D79E8 =
+{
+ .tileTag = 10207,
+ .paletteTag = 10207,
+ .oam = &gOamData_837DF2C,
+ .anims = gSpriteAnimTable_83D79E4,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D1A70,
+};
+
+const s8 gUnknown_083D7A00[][2] =
+{
+ {30, 28},
+ {-20, 24},
+ {16, 26},
+ {-10, 28},
+};
+
// apply espeed
void sub_80D15A4(u8 taskId)
{
struct Task* task = &gTasks[taskId];
- u8 spriteId = GetAnimBankSpriteId(0);
+ u8 spriteId = GetAnimBattlerSpriteId(0);
task->data[0] = spriteId;
- sub_80798F4(task, spriteId, &gUnknown_083D79BC);
+ sub_80798F4(task, spriteId, &gSpriteAffineAnim_83D79BC);
task->func = sub_80D15E0;
}
@@ -51,7 +87,7 @@ void sub_80D1638(u8 taskId)
task->data[2] = 0;
task->data[3] = 0;
task->data[12] = 3;
- if (GetBankSide(gAnimBankTarget) == 0)
+ if (GetBattlerSide(gAnimBankTarget) == 0)
{
task->data[13] = 0xFFFF;
task->data[14] = 8;
@@ -62,7 +98,7 @@ void sub_80D1638(u8 taskId)
task->data[14] = -8;
}
- task->data[15] = GetAnimBankSpriteId(1);
+ task->data[15] = GetAnimBattlerSpriteId(1);
task->func = sub_80D16A0;
}
@@ -123,7 +159,7 @@ void sub_80D17C4(u8 taskId)
task->data[4] = 1;
task->data[13] = 14;
task->data[14] = 2;
- task->data[15] = GetAnimBankSpriteId(0);
+ task->data[15] = GetAnimBattlerSpriteId(0);
task->func = sub_80D1808;
}
@@ -169,8 +205,8 @@ void sub_80D18D4(u8 taskId)
task->data[7] = 0;
task->data[8] = 0;
task->data[13] = 0;
- task->data[14] = GetBankPosition(gAnimBankAttacker, 0);
- task->data[15] = GetBankPosition(gAnimBankAttacker, 1);
+ task->data[14] = GetBattlerSpriteCoord(gAnimBankAttacker, 0);
+ task->data[15] = GetBattlerSpriteCoord(gAnimBankAttacker, 1);
task->func = sub_80D1930;
}
@@ -239,3 +275,13 @@ void sub_80D1930(u8 taskId)
break;
}
}
+
+void sub_80D1A70(struct Sprite* sprite)
+{
+ sprite->invisible = gTasks[sprite->data[0]].data[5];
+ if (sprite->animEnded)
+ {
+ gTasks[sprite->data[0]].data[sprite->data[1]]--;
+ DestroySprite(sprite);
+ }
+}
diff --git a/src/battle/anim/evasion.c b/src/battle/anim/evasion.c
index ded8428d4..c60618a49 100644
--- a/src/battle/anim/evasion.c
+++ b/src/battle/anim/evasion.c
@@ -23,7 +23,7 @@ void sub_80CE7E0(u8 taskId)
u16 r3;
u16 r4;
struct Task* task = &gTasks[taskId];
- task->data[0] = GetAnimBankSpriteId(0);
+ task->data[0] = GetAnimBattlerSpriteId(0);
task->data[1] = AllocSpritePalette(0x2771);
r3 = (task->data[1] * 16) + 0x100;
r4 = (gSprites[task->data[0]].oam.paletteNum + 16) << 4;
@@ -32,7 +32,7 @@ void sub_80CE7E0(u8 taskId)
gPlttBufferUnfaded[r3 + i] = gPlttBufferUnfaded[r4 + i];
}
- BlendPalette(r3, 16, 11, 0);
+ BlendPalette(r3, 16, 11, RGB(0, 0, 0));
task->data[3] = 0;
i = 0;
while (i <= 1 && (obj = duplicate_obj_of_side_rel2move_in_transparent_mode(0)) >= 0)
@@ -47,7 +47,7 @@ void sub_80CE7E0(u8 taskId)
}
task->func = sub_80CE910;
- if (GetBankIdentity_permutated(gAnimBankAttacker) == 1)
+ if (GetBattlerPosition_permutated(gAnimBankAttacker) == 1)
{
REG_DISPCNT &= 0xFDFF;
}
@@ -62,7 +62,7 @@ void sub_80CE910(u8 taskId)
struct Task* task = &gTasks[taskId];
if (!task->data[3])
{
- if (GetBankIdentity_permutated(gAnimBankAttacker) == 1)
+ if (GetBattlerPosition_permutated(gAnimBankAttacker) == 1)
REG_DISPCNT |= 0x200;
else
REG_DISPCNT |= 0x400;
diff --git a/src/battle/anim/fang.c b/src/battle/anim/fang.c
index 5ed7372a8..c35898eea 100644
--- a/src/battle/anim/fang.c
+++ b/src/battle/anim/fang.c
@@ -8,10 +8,37 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80CEA04(struct Sprite* sprite);
+
// fang
// Used by Super Fang (and probably Hyper Fang, but the actual callbacks are not in this file.)
// (Look into this one later.)
+const union AnimCmd gSpriteAnim_83D7068[] =
+{
+ ANIMCMD_FRAME(0, 2),
+ ANIMCMD_FRAME(16, 2),
+ ANIMCMD_FRAME(32, 2),
+ ANIMCMD_FRAME(48, 2),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D707C[] =
+{
+ gSpriteAnim_83D7068,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D7080 =
+{
+ .tileTag = 10192,
+ .paletteTag = 10192,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D707C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CEA04,
+};
+
void sub_80CEA04(struct Sprite* sprite)
{
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
diff --git a/src/battle/anim/fight.c b/src/battle/anim/fight.c
index 0f46187f2..af2af1981 100644
--- a/src/battle/anim/fight.c
+++ b/src/battle/anim/fight.c
@@ -21,11 +21,30 @@ extern u16 gBattle_BG3_X;
extern u16 gBattle_BG3_Y;
extern u16 gBattle_WIN0H;
extern u16 gBattle_WIN0V;
-extern u16 gBattlePartyID[];
+extern u16 gBattlerPartyIndexes[];
extern u8 gAnimMoveTurn;
extern struct SpriteTemplate gBasicHitSplatSpriteTemplate;
+void sub_080B08A0(struct Sprite *sprite);
+void sub_80D902C(struct Sprite *sprite);
+void sub_80D9078(struct Sprite *sprite);
+void AnimBasicFistOrFoot(struct Sprite *sprite);
+void sub_80D90F4(struct Sprite *sprite);
+void sub_80D92D0(struct Sprite *sprite);
+void sub_80D9378(struct Sprite *sprite);
+void AnimSpinningKickOrPunch(struct Sprite *sprite);
+void AnimSpinningKickOrPunch(struct Sprite *sprite);
+void AnimStompFoot(struct Sprite *sprite);
+void sub_80D9540(struct Sprite *sprite);
+void sub_80D95D0(struct Sprite *sprite);
+void sub_80D96B8(struct Sprite *sprite);
+void sub_80D97CC(struct Sprite *sprite);
+void sub_80D98D8(struct Sprite *sprite);
+void sub_80D9A38(struct Sprite *sprite);
+void sub_80D9B48(struct Sprite *sprite);
+void sub_80D9BD4(struct Sprite *sprite);
+void sub_80D9C40(struct Sprite *sprite);
static void sub_80D927C(struct Sprite *sprite);
static void sub_80D9328(struct Sprite *sprite);
static void sub_80D9404(struct Sprite *sprite);
@@ -38,6 +57,381 @@ static void sub_80D986C(struct Sprite *sprite);
static void sub_80D9934(struct Sprite *sprite);
static void sub_80D99F4(struct Sprite *sprite);
+const struct SpriteTemplate gSpriteTemplate_83D9F24 =
+{
+ .tileTag = 10050,
+ .paletteTag = 10050,
+ .oam = &gOamData_837DF34,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_080B08A0,
+};
+
+const union AnimCmd gSpriteAnim_83D9F3C[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D9F44[] =
+{
+ ANIMCMD_FRAME(16, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D9F4C[] =
+{
+ ANIMCMD_FRAME(32, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D9F54[] =
+{
+ ANIMCMD_FRAME(48, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D9F5C[] =
+{
+ ANIMCMD_FRAME(48, 1, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D9F64[] =
+{
+ gSpriteAnim_83D9F3C,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D9F68[] =
+{
+ gSpriteAnim_83D9F44,
+ gSpriteAnim_83D9F4C,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D9F70[] =
+{
+ gSpriteAnim_83D9F54,
+ gSpriteAnim_83D9F5C,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9F78 =
+{
+ .tileTag = 10143,
+ .paletteTag = 10143,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D9F64,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D902C,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9F90 =
+{
+ .tileTag = 10143,
+ .paletteTag = 10143,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D9F64,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D9078,
+};
+
+const struct SpriteTemplate gFistFootSpriteTemplate =
+{
+ .tileTag = 10143,
+ .paletteTag = 10143,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D9F64,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimBasicFistOrFoot,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9FC0 =
+{
+ .tileTag = 10143,
+ .paletteTag = 10143,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D9F64,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D90F4,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9FD8 =
+{
+ .tileTag = 10143,
+ .paletteTag = 10143,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D9F70,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D92D0,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9FF0 =
+{
+ .tileTag = 10143,
+ .paletteTag = 10143,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D9F68,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D9378,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DA008[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0xFFF8, 0xFFF8, 20, 1),
+ AFFINEANIMCMD_JUMP(1),
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA020[] =
+{
+ gSpriteAffineAnim_83DA008,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA024 =
+{
+ .tileTag = 10143,
+ .paletteTag = 10143,
+ .oam = &gOamData_837DFF4,
+ .anims = gSpriteAnimTable_83D9F64,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DA020,
+ .callback = AnimSpinningKickOrPunch,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DA03C[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0xFFFC, 0xFFFC, 20, 1),
+ AFFINEANIMCMD_JUMP(1),
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA054[] =
+{
+ gSpriteAffineAnim_83DA03C,
+};
+
+const struct SpriteTemplate gMegaPunchKickSpriteTemplate =
+{
+ .tileTag = 10143,
+ .paletteTag = 10143,
+ .oam = &gOamData_837DFF4,
+ .anims = gSpriteAnimTable_83D9F64,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DA054,
+ .callback = AnimSpinningKickOrPunch,
+};
+
+const struct SpriteTemplate gStompFootSpriteTemplate =
+{
+ .tileTag = 10143,
+ .paletteTag = 10143,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D9F68,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimStompFoot,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA088 =
+{
+ .tileTag = 10073,
+ .paletteTag = 10073,
+ .oam = &gOamData_837DF2C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D9540,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA0A0 =
+{
+ .tileTag = 10167,
+ .paletteTag = 10167,
+ .oam = &gOamData_837E05C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D95D0,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA0B8 =
+{
+ .tileTag = 10208,
+ .paletteTag = 10208,
+ .oam = &gOamData_837DF34,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D96B8,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DA0D0[] =
+{
+ AFFINEANIMCMD_FRAME(0x20, 0x20, 0, 0),
+ AFFINEANIMCMD_FRAME(0x4, 0x4, 0, 64),
+ AFFINEANIMCMD_FRAME(0xFFFA, 0xFFFA, 0, 8),
+ AFFINEANIMCMD_FRAME(0x6, 0x6, 0, 8),
+ AFFINEANIMCMD_JUMP(2),
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA0F8[] =
+{
+ gSpriteAffineAnim_83DA0D0,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA0FC =
+{
+ .tileTag = 10212,
+ .paletteTag = 10212,
+ .oam = &gOamData_837E11C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DA0F8,
+ .callback = sub_80D97CC,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA114 =
+{
+ .tileTag = 10257,
+ .paletteTag = 10257,
+ .oam = &gOamData_837DF2C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D98D8,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA12C =
+{
+ .tileTag = 10256,
+ .paletteTag = 10256,
+ .oam = &gOamData_837DF3C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D9A38,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA144 =
+{
+ .tileTag = 10143,
+ .paletteTag = 10143,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D9F64,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D9B48,
+};
+
+const union AnimCmd gSpriteAnim_83DA15C[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(16, 4),
+ ANIMCMD_FRAME(32, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83DA16C[] =
+{
+ ANIMCMD_FRAME(0, 4, .vFlip = TRUE),
+ ANIMCMD_FRAME(16, 4, .vFlip = TRUE),
+ ANIMCMD_FRAME(32, 4, .vFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83DA17C[] =
+{
+ ANIMCMD_FRAME(0, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(16, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(32, 4, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83DA18C[] =
+{
+ gSpriteAnim_83DA15C,
+ gSpriteAnim_83DA16C,
+ gSpriteAnim_83DA17C,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA198 =
+{
+ .tileTag = 10245,
+ .paletteTag = 10245,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83DA18C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D9BD4,
+};
+
+const union AnimCmd gSpriteAnim_83DA1B0[] =
+{
+ ANIMCMD_FRAME(0, 6),
+ ANIMCMD_FRAME(64, 6),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83DA1BC[] =
+{
+ ANIMCMD_FRAME(0, 6, .vFlip = TRUE, .hFlip = TRUE),
+ ANIMCMD_FRAME(64, 6, .vFlip = TRUE, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83DA1C8[] =
+{
+ ANIMCMD_FRAME(0, 6, .hFlip = TRUE),
+ ANIMCMD_FRAME(64, 6, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83DA1D4[] =
+{
+ gSpriteAnim_83DA1B0,
+ gSpriteAnim_83DA1BC,
+ gSpriteAnim_83DA1C8,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA1E0 =
+{
+ .tileTag = 10246,
+ .paletteTag = 10246,
+ .oam = &gOamData_837DF3C,
+ .anims = gSpriteAnimTable_83DA1D4,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D9BD4,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DA1F8[] =
+{
+ AFFINEANIMCMD_FRAME(0x200, 0x200, 0, 0),
+ AFFINEANIMCMD_FRAME(0xFFE0, 0xFFE0, 0, 8),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA210[] =
+{
+ gSpriteAffineAnim_83DA1F8,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA214 =
+{
+ .tileTag = 10143,
+ .paletteTag = 10143,
+ .oam = &gOamData_837DFF4,
+ .anims = gSpriteAnimTable_83D9F64,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DA210,
+ .callback = sub_80D9C40,
+};
void sub_080B08A0(struct Sprite *sprite)
{
@@ -50,7 +444,7 @@ void sub_080B08A0(struct Sprite *sprite)
void sub_80D902C(struct Sprite *sprite)
{
- if (gBattleAnimArgs[7] == 1 && GetBankSide(gAnimBankAttacker) != SIDE_PLAYER)
+ if (gBattleAnimArgs[7] == 1 && GetBattlerSide(gAnimBankAttacker) != B_SIDE_PLAYER)
{
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
gBattleAnimArgs[3] = -gBattleAnimArgs[3];
@@ -108,8 +502,8 @@ void sub_80D90F4(struct Sprite *sprite)
gBattleAnimArgs[2] = Random() % 5;
StartSpriteAnim(sprite, gBattleAnimArgs[2]);
- sprite->pos1.x = GetBankPosition(bank, 2);
- sprite->pos1.y = GetBankPosition(bank, 3);
+ sprite->pos1.x = GetBattlerSpriteCoord(bank, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(bank, 3);
xMod = sub_807A100(bank, 1) / 2;
yMod = sub_807A100(bank, 0) / 4;
@@ -196,12 +590,12 @@ static void sub_80D9328(struct Sprite *sprite)
void sub_80D9378(struct Sprite *sprite)
{
- if ((gAnimBankAttacker ^ 2) == gAnimBankTarget && GetBankIdentity(gAnimBankTarget) < 2)
+ if ((gAnimBankAttacker ^ 2) == gAnimBankTarget && GetBattlerPosition(gAnimBankTarget) < 2)
gBattleAnimArgs[0] *= -1;
sub_8078764(sprite, 1);
- if (GetBankSide(gAnimBankAttacker) != SIDE_PLAYER)
+ if (GetBattlerSide(gAnimBankAttacker) != B_SIDE_PLAYER)
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
sprite->data[0] = gBattleAnimArgs[3];
@@ -275,8 +669,8 @@ static void AnimStompFootStep(struct Sprite *sprite)
if (--sprite->data[0] == -1)
{
sprite->data[0] = 6;
- sprite->data[2] = GetBankPosition(gAnimBankTarget, 2);
- sprite->data[4] = GetBankPosition(gAnimBankTarget, 3);
+ sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2);
+ sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3);
sprite->callback = StartTranslateAnimSpriteByDeltas;
StoreSpriteCallbackInData(sprite, AnimStompFootEnd);
@@ -319,13 +713,13 @@ void sub_80D95D0(struct Sprite *sprite)
{
if (gBattleAnimArgs[0] == 0)
{
- sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 0);
- sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 1);
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 0);
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 1);
}
else
{
- sprite->pos1.x = GetBankPosition(gAnimBankTarget, 0);
- sprite->pos1.y = GetBankPosition(gAnimBankTarget, 1);
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankTarget, 0);
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankTarget, 1);
}
sprite->pos1.x += gBattleAnimArgs[1];
@@ -372,13 +766,13 @@ void sub_80D96B8(struct Sprite *sprite)
{
if (gBattleAnimArgs[0] == 0)
{
- sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 0) + gBattleAnimArgs[2];
- sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 1) + gBattleAnimArgs[3];
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 0) + gBattleAnimArgs[2];
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 1) + gBattleAnimArgs[3];
}
else
{
- sprite->pos1.x = GetBankPosition(gAnimBankTarget, 0) + gBattleAnimArgs[2];
- sprite->pos1.y = GetBankPosition(gAnimBankTarget, 1) + gBattleAnimArgs[3];
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankTarget, 0) + gBattleAnimArgs[2];
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankTarget, 1) + gBattleAnimArgs[3];
}
sprite->oam.tileNum += gBattleAnimArgs[1] * 16;
@@ -423,8 +817,8 @@ void sub_80D97CC(struct Sprite *sprite)
{
if (gBattleAnimArgs[0] == 0)
{
- sprite->pos1.x = GetBankPosition(gBankAttacker, 2);
- sprite->pos1.y = GetBankPosition(gBankAttacker, 3);
+ sprite->pos1.x = GetBattlerSpriteCoord(gBankAttacker, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBankAttacker, 3);
sprite->oam.priority = sub_8079ED4(gAnimBankAttacker);
sprite->data[7] = gAnimBankTarget;
}
@@ -448,9 +842,9 @@ static void sub_80D986C(struct Sprite *sprite)
sprite->data[0] = 16;
sprite->data[1] = sprite->pos1.x;
- sprite->data[2] = GetBankPosition(sprite->data[7], 2);
+ sprite->data[2] = GetBattlerSpriteCoord(sprite->data[7], 2);
sprite->data[3] = sprite->pos1.y;
- sprite->data[4] = GetBankPosition(sprite->data[7], 3);
+ sprite->data[4] = GetBattlerSpriteCoord(sprite->data[7], 3);
InitAnimSpriteTranslationDeltas(sprite);
StoreSpriteCallbackInData(sprite, move_anim_8074EE0);
@@ -491,10 +885,10 @@ static void sub_80D9934(struct Sprite *sprite)
}
else
{
- s16 pos0 = GetBankPosition(gAnimBankAttacker, 2);
- s16 pos1 = GetBankPosition(gAnimBankAttacker, 3);
- s16 pos2 = GetBankPosition(gAnimBankTarget, 2);
- s16 pos3 = GetBankPosition(gAnimBankTarget, 3);
+ s16 pos0 = GetBattlerSpriteCoord(gAnimBankAttacker, 2);
+ s16 pos1 = GetBattlerSpriteCoord(gAnimBankAttacker, 3);
+ s16 pos2 = GetBattlerSpriteCoord(gAnimBankTarget, 2);
+ s16 pos3 = GetBattlerSpriteCoord(gAnimBankTarget, 3);
sprite->data[0] = pos2 - pos0;
sprite->data[1] = pos3 - pos1;
@@ -525,8 +919,8 @@ void sub_80D9A38(struct Sprite *sprite)
if (gBattleAnimArgs[0] == 0)
{
- sprite->pos1.x = GetBankPosition(gBankAttacker, 2);
- sprite->pos1.y = GetBankPosition(gBankAttacker, 3);
+ sprite->pos1.x = GetBattlerSpriteCoord(gBankAttacker, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBankAttacker, 3);
bank = gAnimBankTarget;
sprite->oam.priority = sub_8079ED4(gAnimBankAttacker);
}
@@ -538,14 +932,14 @@ void sub_80D9A38(struct Sprite *sprite)
if (IsContest())
sprite->oam.matrixNum |= 0x8;
- else if (GetBankSide(bank) == SIDE_PLAYER)
+ else if (GetBattlerSide(bank) == B_SIDE_PLAYER)
sprite->oam.matrixNum |= 0x18;
sprite->data[0] = 16;
sprite->data[1] = sprite->pos1.x;
- sprite->data[2] = GetBankPosition(bank, 2);
+ sprite->data[2] = GetBattlerSpriteCoord(bank, 2);
sprite->data[3] = sprite->pos1.y;
- sprite->data[4] = GetBankPosition(bank, 3);
+ sprite->data[4] = GetBattlerSpriteCoord(bank, 3);
InitAnimSpriteTranslationDeltas(sprite);
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
@@ -564,15 +958,15 @@ void sub_80D9B48(struct Sprite *sprite)
{
u8 turn;
- sprite->pos1.x = GetBankPosition(gAnimBankTarget, 2);
- sprite->pos1.y = GetBankPosition(gAnimBankTarget, 3);
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankTarget, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankTarget, 3);
sprite->data[1] = gBattleAnimArgs[3];
sprite->data[2] = gBattleAnimArgs[0];
sprite->data[3] = gBattleAnimArgs[1];
sprite->data[4] = gBattleAnimArgs[2];
turn = gAnimMoveTurn;
- if (GetBankSide(gAnimBankTarget) == SIDE_PLAYER)
+ if (GetBattlerSide(gAnimBankTarget) == B_SIDE_PLAYER)
turn++;
if (turn & 1)
@@ -598,7 +992,7 @@ void sub_80D9BD4(struct Sprite *sprite)
{
StartSpriteAnim(sprite, 2);
}
- else if (GetBankSide(gAnimBankAttacker) != SIDE_PLAYER)
+ else if (GetBattlerSide(gAnimBankAttacker) != B_SIDE_PLAYER)
{
StartSpriteAnim(sprite, 1);
}
@@ -644,7 +1038,7 @@ void sub_80D9C80(u8 taskId)
task->data[10] += 2816;
- if (GetBankSide(gAnimBankTarget) == SIDE_PLAYER)
+ if (GetBattlerSide(gAnimBankTarget) == B_SIDE_PLAYER)
gBattle_BG3_X += task->data[9] >> 8;
else
gBattle_BG3_X -= task->data[9] >> 8;
diff --git a/src/battle/anim/finger.c b/src/battle/anim/finger.c
new file mode 100644
index 000000000..66ca4ca06
--- /dev/null
+++ b/src/battle/anim/finger.c
@@ -0,0 +1,256 @@
+#include "global.h"
+#include "rom_8077ABC.h"
+#include "trig.h"
+#include "battle_anim.h"
+#include "sound.h"
+
+extern s16 gBattleAnimArgs[];
+extern u8 gAnimBankAttacker;
+extern u8 gAnimBankTarget;
+
+extern void sub_80CEF44(u8 bank, struct Sprite* sprite);
+
+void sub_80CF040(struct Sprite* sprite);
+void sub_80CF0BC(struct Sprite* sprite);
+void sub_80CF1C8(struct Sprite* sprite);
+static void sub_80CF088(struct Sprite* sprite);
+static void sub_80CF138(struct Sprite* sprite);
+static void sub_80CF158(struct Sprite* sprite);
+static void sub_80CF228(struct Sprite* sprite);
+static void sub_80CF264(struct Sprite* sprite);
+
+// wave_finger
+// Used by Metronome, Follow Me, and Taunt.
+
+const union AffineAnimCmd gSpriteAffineAnim_83D7238[] =
+{
+ AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 0),
+ AFFINEANIMCMD_FRAME(0x1E, 0x1E, 0, 8),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D7250[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 4, 11),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -4, 11),
+ AFFINEANIMCMD_LOOP(2),
+ AFFINEANIMCMD_FRAME(0xFFE2, 0xFFE2, 0, 8),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D7278[] =
+{
+ AFFINEANIMCMD_FRAME(16, 16, 0, 0),
+ AFFINEANIMCMD_FRAME(30, 30, 0, 8),
+ AFFINEANIMCMD_FRAME(0, 0, 0, 16),
+ AFFINEANIMCMD_LOOP(0),
+ AFFINEANIMCMD_FRAME(0, 0, 4, 11),
+ AFFINEANIMCMD_FRAME(0, 0, -4, 11),
+ AFFINEANIMCMD_LOOP(2),
+ AFFINEANIMCMD_FRAME(-30, -30, 0, 8),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D72C0[] =
+{
+ gSpriteAffineAnim_83D7238,
+ gSpriteAffineAnim_83D7250,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D72C8 =
+{
+ .tileTag = 10064,
+ .paletteTag = 10064,
+ .oam = &gOamData_837DFF4,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D72C0,
+ .callback = sub_80CF040,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D72E0 =
+{
+ .tileTag = 10064,
+ .paletteTag = 10064,
+ .oam = &gOamData_837DF94,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D72C0,
+ .callback = sub_80CF0BC,
+};
+
+const union AnimCmd gSpriteAnim_83D72F8[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D7300[] =
+{
+ ANIMCMD_FRAME(0, 1, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D7308[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(16, 4),
+ ANIMCMD_FRAME(32, 4),
+ ANIMCMD_FRAME(16, 4),
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(16, 4),
+ ANIMCMD_FRAME(32, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D7328[] =
+{
+ ANIMCMD_FRAME(0, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(16, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(32, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(16, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(0, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(16, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(32, 4, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D7348[] =
+{
+ gSpriteAnim_83D72F8,
+ gSpriteAnim_83D7300,
+ gSpriteAnim_83D7308,
+ gSpriteAnim_83D7328,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D7358 =
+{
+ .tileTag = 10214,
+ .paletteTag = 10214,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D7348,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CF1C8,
+};
+
+void sub_80CF040(struct Sprite* sprite)
+{
+ u8 bank;
+ if (gBattleAnimArgs[0] == 0)
+ bank = gAnimBankAttacker;
+ else
+ bank = gAnimBankTarget;
+
+ sub_80CEF44(bank, sprite);
+ sprite->data[0] = 0;
+ StoreSpriteCallbackInData(sprite, sub_80CF088);
+ sprite->callback = sub_80785E4;
+}
+
+static void sub_80CF088(struct Sprite* sprite)
+{
+ if (++sprite->data[0] > 16)
+ {
+ StartSpriteAffineAnim(sprite, 1);
+ StoreSpriteCallbackInData(sprite, move_anim_8074EE0);
+ sprite->callback = sub_80785E4;
+ }
+}
+
+void sub_80CF0BC(struct Sprite* sprite)
+{
+ u8 bank;
+ if (gBattleAnimArgs[0] == 0)
+ bank = gAnimBankAttacker;
+ else
+ bank = gAnimBankTarget;
+
+ sprite->pos1.x = GetBattlerSpriteCoord(bank, 0);
+ sprite->pos1.y = sub_807A100(bank, 2);
+ if (sprite->pos1.y <= 9)
+ sprite->pos1.y = 10;
+
+ sprite->data[0] = 1;
+ sprite->data[1] = 0;
+ sprite->data[2] = sprite->subpriority;
+ sprite->data[3] = sprite->subpriority + 4;
+ sprite->data[4] = 0;
+ StoreSpriteCallbackInData(sprite, sub_80CF138);
+ sprite->callback = sub_80785E4;
+}
+
+static void sub_80CF138(struct Sprite* sprite)
+{
+ if (++sprite->data[4] > 12)
+ sprite->callback = sub_80CF158;
+}
+
+static void sub_80CF158(struct Sprite* sprite)
+{
+ s16 temp;
+ s16 temp2;
+ sprite->data[1] += 4;
+ if (sprite->data[1] > 0xFE)
+ {
+ if (--sprite->data[0] == 0)
+ {
+ sprite->pos2.x = 0;
+ sprite->callback = sub_80CF088;
+ return;
+ }
+ else
+ {
+ sprite->data[1] &= 0xFF;
+ }
+ }
+
+ if (sprite->data[1] > 0x4F)
+ sprite->subpriority = sprite->data[3];
+
+ if (sprite->data[1] > 0x9F)
+ sprite->subpriority = sprite->data[2];
+
+ temp = gSineTable[sprite->data[1]];
+ sprite->pos2.x = (temp2 = temp >> 3) + (temp2 >> 1);
+}
+
+void sub_80CF1C8(struct Sprite* sprite)
+{
+ u8 bank;
+ if (gBattleAnimArgs[0] == 0)
+ bank = gAnimBankAttacker;
+ else
+ bank = gAnimBankTarget;
+
+ sub_80CEF44(bank, sprite);
+ if (GetBattlerSide(bank) == 0)
+ {
+ StartSpriteAnim(sprite, 0);
+ sprite->data[0] = 2;
+ }
+ else
+ {
+ StartSpriteAnim(sprite, 1);
+ sprite->data[0] = 3;
+ }
+
+ sprite->callback = sub_80CF228;
+}
+
+static void sub_80CF228(struct Sprite* sprite)
+{
+ if (++sprite->data[1] > 10)
+ {
+ sprite->data[1] = 0;
+ StartSpriteAnim(sprite, sprite->data[0]);
+ StoreSpriteCallbackInData(sprite, sub_80CF264);
+ sprite->callback = sub_8078600;
+ }
+}
+
+static void sub_80CF264(struct Sprite* sprite)
+{
+ if (++sprite->data[1] > 5)
+ DestroyAnimSprite(sprite);
+}
diff --git a/src/battle/anim/fire.c b/src/battle/anim/fire.c
index 253236805..929828ed4 100644
--- a/src/battle/anim/fire.c
+++ b/src/battle/anim/fire.c
@@ -6,8 +6,170 @@
extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
-void sub_80D5038(struct Sprite *);
-void sub_80D50E8(struct Sprite *);
+void sub_80D4ED8(struct Sprite *sprite);
+void sub_80D4F18(struct Sprite *sprite);
+void sub_80D4FCC(struct Sprite *sprite);
+void sub_80D4F5C(struct Sprite *sprite);
+void sub_80D5074(struct Sprite *sprite);
+static void sub_80D5038(struct Sprite *);
+static void sub_80D50E8(struct Sprite *);
+
+const union AnimCmd gSpriteAnim_83D9450[] =
+{
+ ANIMCMD_FRAME(16, 4),
+ ANIMCMD_FRAME(32, 4),
+ ANIMCMD_FRAME(48, 4),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gSpriteAnim_83D9460[] =
+{
+ ANIMCMD_FRAME(16, 4, .vFlip = TRUE, .hFlip = TRUE),
+ ANIMCMD_FRAME(32, 4, .vFlip = TRUE, .hFlip = TRUE),
+ ANIMCMD_FRAME(48, 4, .vFlip = TRUE, .hFlip = TRUE),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D9470[] =
+{
+ gSpriteAnim_83D9450,
+ gSpriteAnim_83D9460,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9478 =
+{
+ .tileTag = 10029,
+ .paletteTag = 10029,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D9470,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D4ED8,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9490 =
+{
+ .tileTag = 10029,
+ .paletteTag = 10029,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D9470,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D4F18,
+};
+
+const union AnimCmd gSpriteAnim_83D94A8[] =
+{
+ ANIMCMD_FRAME(0, 3),
+ ANIMCMD_FRAME(16, 3),
+ ANIMCMD_FRAME(32, 3),
+ ANIMCMD_FRAME(48, 3),
+ ANIMCMD_FRAME(64, 3),
+ ANIMCMD_FRAME(80, 3),
+ ANIMCMD_FRAME(96, 3),
+ ANIMCMD_FRAME(112, 3),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D94CC[] =
+{
+ gSpriteAnim_83D94A8,
+};
+
+const union AnimCmd gSpriteAnim_83D94D0[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_FRAME(16, 5),
+ ANIMCMD_FRAME(32, 5),
+ ANIMCMD_FRAME(48, 5),
+ ANIMCMD_FRAME(64, 5),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D94E8[] =
+{
+ gSpriteAnim_83D94D0,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D94EC[] =
+{
+ AFFINEANIMCMD_FRAME(0x32, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0x20, 0x0, 0, 7),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D9504[] =
+{
+ gSpriteAffineAnim_83D94EC,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9508 =
+{
+ .tileTag = 10033,
+ .paletteTag = 10033,
+ .oam = &gOamData_837DF94,
+ .anims = gSpriteAnimTable_83D94CC,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D9504,
+ .callback = sub_80D4FCC,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9520 =
+{
+ .tileTag = 10033,
+ .paletteTag = 10033,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D94CC,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D4FCC,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9538 =
+{
+ .tileTag = 10035,
+ .paletteTag = 10035,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D94E8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D4F5C,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83D9550 =
+{
+ .tileTag = 10029,
+ .paletteTag = 10029,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D94E8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D4F5C,
+};
+
+const union AnimCmd gSpriteAnim_83D9568[] =
+{
+ ANIMCMD_FRAME(16, 6),
+ ANIMCMD_FRAME(32, 6),
+ ANIMCMD_FRAME(48, 6),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D9578[] =
+{
+ gSpriteAnim_83D9568,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83D957C =
+{
+ .tileTag = 10029,
+ .paletteTag = 10029,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D9578,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D5074,
+};
void sub_80D4ED8(struct Sprite *sprite)
{
@@ -20,7 +182,7 @@ void sub_80D4ED8(struct Sprite *sprite)
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
sprite->callback = sub_8078174;
- sub_8078174(sprite);
+ sprite->callback(sprite);
}
void sub_80D4F18(struct Sprite *sprite)
@@ -40,7 +202,7 @@ void sub_80D4F5C(struct Sprite *sprite)
{
sub_8078650(sprite);
- if (GetBankSide(gAnimBankAttacker))
+ if (GetBattlerSide(gAnimBankAttacker))
{
sprite->pos1.x -= gBattleAnimArgs[0];
sprite->pos1.y += gBattleAnimArgs[1];
@@ -62,7 +224,7 @@ void sub_80D4F5C(struct Sprite *sprite)
void sub_80D4FCC(struct Sprite *sprite)
{
- if (GetBankSide(gAnimBankAttacker))
+ if (GetBattlerSide(gAnimBankAttacker))
{
sprite->pos1.x -= gBattleAnimArgs[0];
sprite->pos1.y += gBattleAnimArgs[1];
@@ -82,7 +244,7 @@ void sub_80D4FCC(struct Sprite *sprite)
sprite->callback = sub_80D5038;
}
-void sub_80D5038(struct Sprite *sprite)
+static void sub_80D5038(struct Sprite *sprite)
{
if (++sprite->data[0] < sprite->data[4])
{
@@ -98,7 +260,7 @@ void sub_80D5074(struct Sprite *sprite)
{
sub_8078650(sprite);
- if (GetBankSide(gAnimBankAttacker))
+ if (GetBattlerSide(gAnimBankAttacker))
{
sprite->pos1.x -= gBattleAnimArgs[0];
}
@@ -119,7 +281,7 @@ void sub_80D5074(struct Sprite *sprite)
sprite->callback = sub_80D50E8;
}
-void sub_80D50E8(struct Sprite *sprite)
+static void sub_80D50E8(struct Sprite *sprite)
{
if (sprite->data[3])
{
diff --git a/src/battle/anim/fire_2.c b/src/battle/anim/fire_2.c
index f9c9b6d3b..b055d7c80 100644
--- a/src/battle/anim/fire_2.c
+++ b/src/battle/anim/fire_2.c
@@ -9,18 +9,180 @@
extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
-extern struct SpriteTemplate gSpriteTemplate_83D96C4;
-extern s16 gHeatedRockCoords[7][2];
+void AnimEmberFlare(struct Sprite *sprite);
+void sub_80D5210(struct Sprite *sprite);
+void AnimFireRing(struct Sprite *sprite);
+void AnimFireCross(struct Sprite *sprite);
+void sub_80D53B4(struct Sprite *sprite);
+void sub_80D58FC(struct Sprite *sprite);
+void sub_80D5A20(struct Sprite *sprite);
static void AnimFireRingStep1(struct Sprite *);
static void UpdateFireRingCircleOffset(struct Sprite *);
static void AnimFireRingStep2(struct Sprite *);
static void AnimFireRingStep3(struct Sprite *);
-void sub_80D53F4(struct Sprite *);
-void sub_80D541C(struct Sprite *);
-void sub_80D54E0(u8 taskId);
-void sub_80D57C4(u8 spriteId, u8 taskId, u8 a3);
+static void sub_80D53F4(struct Sprite *);
+static void sub_80D541C(struct Sprite *);
+static void sub_80D54E0(u8 taskId);
+static void sub_80D57C4(u8 spriteId, u8 taskId, u8 a3);
+static void sub_80D59B0(struct Sprite *);
+static void sub_80D5A74(struct Sprite *);
+
+const union AnimCmd gSpriteAnim_83D95C8[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(16, 4),
+ ANIMCMD_FRAME(32, 4),
+ ANIMCMD_FRAME(48, 4),
+ ANIMCMD_FRAME(64, 4),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D95E0[] =
+{
+ gSpriteAnim_83D95C8,
+};
+
+const struct SpriteTemplate gEmberSpriteTemplate =
+{
+ .tileTag = 10029,
+ .paletteTag = 10029,
+ .oam = &gOamData_837DF34,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = TranslateAnimSpriteToTargetMonLocation,
+};
+
+const struct SpriteTemplate gEmberFlareSpriteTemplate =
+{
+ .tileTag = 10029,
+ .paletteTag = 10029,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D95E0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimEmberFlare,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9614 =
+{
+ .tileTag = 10029,
+ .paletteTag = 10029,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D95E0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D5210,
+};
+
+const struct SpriteTemplate gFireRingSpriteTemplate =
+{
+ .tileTag = 10029,
+ .paletteTag = 10029,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D95E0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimFireRing,
+};
+
+const union AnimCmd gSpriteAnim_83D9644[] =
+{
+ ANIMCMD_FRAME(32, 6),
+ ANIMCMD_FRAME(48, 6),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D9650[] =
+{
+ gSpriteAnim_83D9644,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D9654[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 1),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D9664[] =
+{
+ AFFINEANIMCMD_FRAME(0xA0, 0xA0, 0, 0),
+ AFFINEANIMCMD_END,
+};
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D9674[] =
+{
+ gSpriteAffineAnim_83D9654,
+ gSpriteAffineAnim_83D9664,
+};
+
+const struct SpriteTemplate gFireCrossSpriteTemplate =
+{
+ .tileTag = 10029,
+ .paletteTag = 10029,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D9650,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimFireCross,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9694 =
+{
+ .tileTag = 10029,
+ .paletteTag = 10029,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D95E0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D53B4,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D96AC =
+{
+ .tileTag = 10029,
+ .paletteTag = 10029,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D95E0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_807A9BC,
+};
+
+
+const struct SpriteTemplate gSpriteTemplate_83D96C4 =
+{
+ .tileTag = 10201,
+ .paletteTag = 10201,
+ .oam = &gOamData_837DF2C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D58FC,
+};
+
+const s16 gHeatedRockCoords[][2] =
+{
+ {-2, -5},
+ {-1, -1},
+ { 3, -6},
+ { 4, -2},
+ { 2, -8},
+ {-5, -5},
+ { 4, -7},
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D96F8 =
+{
+ .tileTag = 10201,
+ .paletteTag = 10201,
+ .oam = &gOamData_837DF34,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D5A20,
+};
// Animates the secondary effect of MOVE_EMBER, where the flames grow and slide
// horizontally a bit.
@@ -33,22 +195,21 @@ void sub_80D57C4(u8 spriteId, u8 taskId, u8 a3);
// arg 6: ? (todo: something related to which mon the pixel offsets are based on)
void AnimEmberFlare(struct Sprite *sprite)
{
- if (GetBankSide(gAnimBankAttacker) == GetBankSide(gAnimBankTarget)
- && (gAnimBankAttacker == GetBankByIdentity(IDENTITY_PLAYER_MON2)
- || gAnimBankAttacker == GetBankByIdentity(IDENTITY_OPPONENT_MON2)))
+ if (GetBattlerSide(gAnimBankAttacker) == GetBattlerSide(gAnimBankTarget)
+ && (gAnimBankAttacker == GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT)
+ || gAnimBankAttacker == GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT)))
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
sprite->callback = sub_8079534;
sprite->callback(sprite);
}
-struct Sprite *sub_80D5210(struct Sprite *sprite)
+void sub_80D5210(struct Sprite *sprite)
{
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
sprite->callback = sub_8079534;
- return sprite;
}
// Animates the a fire sprite in the first-half of the MOVE_FIRE_BLAST
@@ -76,9 +237,9 @@ static void AnimFireRingStep1(struct Sprite *sprite)
{
sprite->data[0] = 0x19;
sprite->data[1] = sprite->pos1.x;
- sprite->data[2] = GetBankPosition(gAnimBankTarget, 2);
+ sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2);
sprite->data[3] = sprite->pos1.y;
- sprite->data[4] = GetBankPosition(gAnimBankTarget, 3);
+ sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3);
InitAnimSpriteTranslationDeltas(sprite);
@@ -92,8 +253,8 @@ static void AnimFireRingStep2(struct Sprite *sprite)
{
sprite->data[0] = 0;
- sprite->pos1.x = GetBankPosition(gAnimBankTarget, 2);
- sprite->pos1.y = GetBankPosition(gAnimBankTarget, 3);
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankTarget, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankTarget, 3);
sprite->pos2.y = 0;
sprite->pos2.x = 0;
@@ -157,7 +318,7 @@ void sub_80D53B4(struct Sprite *sprite)
StoreSpriteCallbackInData(sprite, sub_80D53F4);
}
-void sub_80D53F4(struct Sprite *sprite)
+static void sub_80D53F4(struct Sprite *sprite)
{
sprite->invisible = FALSE;
@@ -168,7 +329,7 @@ void sub_80D53F4(struct Sprite *sprite)
sub_80D541C(sprite);
}
-void sub_80D541C(struct Sprite *sprite)
+static void sub_80D541C(struct Sprite *sprite)
{
sprite->pos2.x = Sin(sprite->data[1], sprite->data[2] >> 8);
sprite->pos2.y = Cos(sprite->data[1], sprite->data[2] >> 8);
@@ -184,14 +345,14 @@ void sub_80D5470(u8 taskId) // initialize animation task for Move_ERUPTION?
{
struct Task *task = &gTasks[taskId];
- task->data[15] = GetAnimBankSpriteId(0);
+ task->data[15] = GetAnimBattlerSpriteId(0);
task->data[0] = 0;
task->data[1] = 0;
task->data[2] = 0;
task->data[3] = 0;
task->data[4] = gSprites[task->data[15]].pos1.y;
- task->data[5] = GetBankSide(gAnimBankAttacker);
+ task->data[5] = GetBattlerSide(gAnimBankAttacker);
task->data[6] = 0;
sub_8078E70(task->data[15], 0);
@@ -199,7 +360,7 @@ void sub_80D5470(u8 taskId) // initialize animation task for Move_ERUPTION?
task->func = sub_80D54E0;
}
-void sub_80D54E0(u8 taskId) // animate Move_ERUPTION?
+static void sub_80D54E0(u8 taskId) // animate Move_ERUPTION?
{
struct Task *task = &gTasks[taskId];
@@ -309,7 +470,7 @@ void sub_80D54E0(u8 taskId) // animate Move_ERUPTION?
}
}
-void sub_80D57C4(u8 spriteId, u8 taskId, u8 a3)
+static void sub_80D57C4(u8 spriteId, u8 taskId, u8 a3)
{
u16 i, j;
s8 sign;
@@ -317,7 +478,7 @@ void sub_80D57C4(u8 spriteId, u8 taskId, u8 a3)
u16 y = sub_80D5940(spriteId);
u16 x = gSprites[spriteId].pos1.x;
- if(!GetBankSide(gAnimBankAttacker))
+ if(!GetBattlerSide(gAnimBankAttacker))
{
x -= 0xC;
sign = 1;
@@ -346,4 +507,119 @@ void sub_80D57C4(u8 spriteId, u8 taskId, u8 a3)
gTasks[taskId].data[a3]++;
}
}
-} \ No newline at end of file
+}
+
+void sub_80D58FC(struct Sprite *sprite)
+{
+ sub_80D59B0(sprite);
+
+ if (sprite->invisible)
+ {
+ gTasks[sprite->data[6]].data[sprite->data[7]]--;
+ DestroySprite(sprite);
+ }
+}
+
+u16 sub_80D5940(u8 spriteId)
+{
+ u16 var1 = gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y + gSprites[spriteId].centerToCornerVecY;
+
+ if (GetBattlerSide(gAnimBankAttacker) == 0)
+ {
+ var1 = ((var1 << 16) + 0x4A0000) >> 16;
+ }
+ else
+ {
+ var1 = ((var1 << 16) + 0x2C0000) >> 16;
+ }
+
+ return var1;
+}
+
+void sub_80D5994(struct Sprite *sprite, s16 x, s16 y)
+{
+ sprite->data[0] = 0;
+ sprite->data[1] = 0;
+ sprite->data[2] = (u16)sprite->pos1.x * 8;
+ sprite->data[3] = (u16)sprite->pos1.y * 8;
+ sprite->data[4] = x * 8;
+ sprite->data[5] = y * 8;
+}
+
+static void sub_80D59B0(struct Sprite *sprite)
+{
+ int var1;
+ if (++sprite->data[0] > 2)
+ {
+ sprite->data[0] = 0;
+ ++sprite->data[1];
+ var1 = (u16)sprite->data[1] * (u16)sprite->data[1];
+ sprite->data[3] += var1;
+ }
+
+ sprite->data[2] += sprite->data[4];
+ sprite->pos1.x = sprite->data[2] >> 3;
+ sprite->data[3] += sprite->data[5];
+ sprite->pos1.y = sprite->data[3] >> 3;
+
+ if (sprite->pos1.x < -8 || sprite->pos1.x > 0xf8 || sprite->pos1.y < -8 || sprite->pos1.y > 120)
+ sprite->invisible = TRUE;
+}
+
+void sub_80D5A20(struct Sprite *sprite)
+{
+ sprite->pos1.x = gBattleAnimArgs[0];
+ sprite->pos1.y = gBattleAnimArgs[1];
+
+ sprite->data[0] = 0;
+ sprite->data[1] = 0;
+ sprite->data[2] = 0;
+ sprite->data[6] = gBattleAnimArgs[2];
+ sprite->data[7] = gBattleAnimArgs[3];
+
+ sprite->oam.tileNum += gBattleAnimArgs[4] * 16;
+ sprite->callback = sub_80D5A74;
+}
+
+static void sub_80D5A74(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ if (sprite->data[6] != 0)
+ {
+ sprite->data[6]--;
+ return;
+ }
+
+ sprite->data[0]++;
+ // fall through
+ case 1:
+ sprite->pos1.y += 8;
+ if (sprite->pos1.y >= sprite->data[7])
+ {
+ sprite->pos1.y = sprite->data[7];
+ sprite->data[0]++;
+ }
+ break;
+ case 2:
+ if (++sprite->data[1] > 1)
+ {
+ sprite->data[1] = 0;
+ if ((++sprite->data[2] & 1) != 0)
+ {
+ sprite->pos2.y = -3;
+ }
+ else
+ {
+ sprite->pos2.y = 3;
+ }
+ }
+
+ if (++sprite->data[3] > 16)
+ {
+ DestroyAnimSprite(sprite);
+ }
+ break;
+ }
+}
diff --git a/src/battle/anim/flash.c b/src/battle/anim/flash.c
index eaa38e5b7..2799046c8 100644
--- a/src/battle/anim/flash.c
+++ b/src/battle/anim/flash.c
@@ -39,7 +39,7 @@ void sub_80CE3EC(u8 taskId)
sub_8079BF4(&gTasks[taskId].data[14], &gTasks[taskId].data[15], (void*)c);
b = b | (0x10000 << IndexOfSpritePaletteTag(0x27D2));
d = IndexOfSpritePaletteTag(0x27D3);
- BeginNormalPaletteFade((0x10000 << d) | b, 0, 0, 0x10, 32699);
+ BeginNormalPaletteFade((0x10000 << d) | b, 0, 0, 16, RGB(27, 29, 31));
gTasks[taskId].func = sub_80CE4D4;
sub_80CE4D4(taskId);
}
diff --git a/src/battle/anim/flying.c b/src/battle/anim/flying.c
new file mode 100644
index 000000000..e8c50816c
--- /dev/null
+++ b/src/battle/anim/flying.c
@@ -0,0 +1,635 @@
+#include "global.h"
+#include "battle.h"
+#include "battle_anim.h"
+#include "palette.h"
+#include "rom_8077ABC.h"
+#include "trig.h"
+
+extern s16 gBattleAnimArgs[];
+extern u8 gAnimBankAttacker;
+extern u8 gAnimBankTarget;
+extern u8 gAnimVisualTaskCount;
+
+void sub_80785E4(struct Sprite *sprite);
+void sub_80DA034(struct Sprite *sprite);
+void sub_80DA05C(struct Sprite *sprite);
+void sub_80DA16C(struct Sprite *sprite);
+void sub_80DA1EC(struct Sprite *sprite);
+void sub_80DA208(struct Sprite *sprite);
+void sub_80DA300(struct Sprite *sprite);
+void sub_80DA348(struct Sprite *sprite);
+void sub_80DA38C(struct Sprite *sprite);
+void sub_80DA4D8(struct Sprite *sprite);
+void sub_80DA410(struct Sprite *sprite);
+void sub_80DAD30(struct Sprite *sprite);
+void sub_80DAD84(struct Sprite *sprite);
+void sub_80DB000(struct Sprite *sprite);
+void sub_80DB194(struct Sprite *sprite);
+void sub_80DB1F4(struct Sprite *sprite);
+void sub_80DB288(struct Sprite *sprite);
+void sub_80DB374(struct Sprite *sprite);
+void sub_80DB458(struct Sprite *sprite);
+void sub_80DB564(struct Sprite *sprite);
+void sub_80DB5E4(struct Sprite *sprite);
+
+void sub_80DA0DC(u8 taskId);
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA380 =
+{
+ .tileTag = 10009,
+ .paletteTag = 10009,
+ .oam = &gOamData_837DF7C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DA034,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DA398[] =
+{
+ AFFINEANIMCMD_FRAME(0x10, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0xA, 0x0, 0, 24),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA3B0[] =
+{
+ gSpriteAffineAnim_83DA398,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA3B4 =
+{
+ .tileTag = 10009,
+ .paletteTag = 10009,
+ .oam = &gOamData_837DFDC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DA3B0,
+ .callback = sub_80DA16C,
+};
+
+const union AnimCmd gSpriteAnim_83DA3CC[] =
+{
+ ANIMCMD_FRAME(0, 3),
+ ANIMCMD_FRAME(0, 3, .hFlip = TRUE),
+ ANIMCMD_FRAME(0, 3, .vFlip = TRUE),
+ ANIMCMD_FRAME(0, 3, .vFlip = TRUE, .hFlip = TRUE),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gSpriteAnimTable_83DA3E0[] =
+{
+ gSpriteAnim_83DA3CC,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA3E4 =
+{
+ .tileTag = 10154,
+ .paletteTag = 10154,
+ .oam = &gOamData_837DF54,
+ .anims = gSpriteAnimTable_83DA3E0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DA208,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DA3FC[] =
+{
+ AFFINEANIMCMD_FRAME(0x10, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0x28, 0x0, 0, 6),
+ AFFINEANIMCMD_FRAME(0x0, 0xFFE0, 0, 5),
+ AFFINEANIMCMD_FRAME(0xFFF0, 0x20, 0, 10),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA424[] =
+{
+ gSpriteAffineAnim_83DA3FC,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DA428[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 50, 1),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DA438[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -40, 1),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA448[] =
+{
+ gSpriteAffineAnim_83DA428,
+ gSpriteAffineAnim_83DA438,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA450 =
+{
+ .tileTag = 10156,
+ .paletteTag = 10156,
+ .oam = &gOamData_837DFFC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DA424,
+ .callback = sub_80DA300,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA468 =
+{
+ .tileTag = 10156,
+ .paletteTag = 10156,
+ .oam = &gOamData_837DF9C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DA448,
+ .callback = sub_80DA38C,
+};
+
+const union AnimCmd gSpriteAnim_83DA480[] =
+{
+ ANIMCMD_FRAME(0, 0),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83DA488[] =
+{
+ ANIMCMD_FRAME(16, 0, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83DA490[] =
+{
+ gSpriteAnim_83DA480,
+ gSpriteAnim_83DA488,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA498 =
+{
+ .tileTag = 10270,
+ .paletteTag = 10270,
+ .oam = &gOamData_837DF94,
+ .anims = gSpriteAnimTable_83DA490,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DA4D8,
+};
+
+const u16 gUnknownPalette_83DA4B0[] = INCBIN_U16("graphics/unknown/unknown_3DA4B0.gbapal");
+
+const struct SpriteTemplate gSpriteTemplate_83DA4D0 =
+{
+ .tileTag = 10155,
+ .paletteTag = 10155,
+ .oam = &gOamData_837DF2C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DAD30,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83DA4E8 =
+{
+ .tileTag = 10270,
+ .paletteTag = 10270,
+ .oam = &gOamData_837DF94,
+ .anims = gSpriteAnimTable_83DA490,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DAD84,
+};
+
+const union AnimCmd gSpriteAnim_83DA500[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_FRAME(8, 1),
+ ANIMCMD_FRAME(16, 1),
+ ANIMCMD_FRAME(8, 1, .hFlip = TRUE),
+ ANIMCMD_FRAME(0, 1, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83DA518[] =
+{
+ gSpriteAnim_83DA500,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA51C =
+{
+ .tileTag = 10162,
+ .paletteTag = 10162,
+ .oam = &gOamData_837DF54,
+ .anims = gSpriteAnimTable_83DA518,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DB000,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DA534[] =
+{
+ AFFINEANIMCMD_FRAME(0x10, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0x28, 0x0, 0, 6),
+ AFFINEANIMCMD_FRAME(0x0, 0xFFE0, 0, 5),
+ AFFINEANIMCMD_FRAME(0xFFEC, 0x0, 0, 7),
+ AFFINEANIMCMD_FRAME(0xFFEC, 0xFFEC, 0, 5),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA564[] =
+{
+ gSpriteAffineAnim_83DA534,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA568 =
+{
+ .tileTag = 10156,
+ .paletteTag = 10156,
+ .oam = &gOamData_837DFFC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DA564,
+ .callback = sub_80DB194,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DA580[] =
+{
+ AFFINEANIMCMD_FRAME(0xA0, 0x100, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA590[] =
+{
+ gSpriteAffineAnim_83DA580,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA594 =
+{
+ .tileTag = 10156,
+ .paletteTag = 10156,
+ .oam = &gOamData_837DFFC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DA590,
+ .callback = sub_80DB1F4,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DA5AC[] =
+{
+ AFFINEANIMCMD_FRAME(0x10, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0x28, 0x0, 0, 6),
+ AFFINEANIMCMD_FRAME(0x0, 0xFFE0, 0, 5),
+ AFFINEANIMCMD_FRAME(0xFFF0, 0x20, 0, 10),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA5D4[] =
+{
+ gSpriteAffineAnim_83DA5AC,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA5D8 =
+{
+ .tileTag = 10156,
+ .paletteTag = 10156,
+ .oam = &gOamData_837DFFC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DA5D4,
+ .callback = sub_80DB288,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DA5F0[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x0, 0, 0),
+ AFFINEANIMCMD_FRAME(0x0, 0x20, 0, 12),
+ AFFINEANIMCMD_FRAME(0x0, 0xFFE0, 0, 11),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA610[] =
+{
+ gSpriteAffineAnim_83DA5F0,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA614 =
+{
+ .tileTag = 10272,
+ .paletteTag = 10272,
+ .oam = &gOamData_837DFFC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DB374,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA62C =
+{
+ .tileTag = 10273,
+ .paletteTag = 10273,
+ .oam = &gOamData_837DF24,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DB458,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83DA644 =
+{
+ .tileTag = 10212,
+ .paletteTag = 10212,
+ .oam = &gOamData_837E05C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DB564,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA65C =
+{
+ .tileTag = 10284,
+ .paletteTag = 10284,
+ .oam = &gOamData_837DFFC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DB5E4,
+};
+
+void sub_80DA034(struct Sprite *sprite)
+{
+ sub_8078764(sprite, 0);
+ sprite->pos1.y += 20;
+ sprite->data[1] = 0xBF;
+ sprite->callback = sub_80DA05C;
+ sub_80DA05C(sprite);
+}
+
+void sub_80DA05C(struct Sprite *sprite)
+{
+ sprite->pos2.x = Sin(sprite->data[1], 0x20);
+ sprite->pos2.y = Cos(sprite->data[1], 0x8);
+ sprite->data[1] = (sprite->data[1] + 5) & 0xFF;
+ if(++sprite->data[0] == 0x47)
+ {
+ DestroyAnimSprite(sprite);
+ }
+}
+
+void sub_80DA09C(u8 taskId)
+{
+ gTasks[taskId].data[0] = gBattleAnimArgs[1];
+ gTasks[taskId].data[1] = gBattleAnimArgs[0];
+ gTasks[taskId].data[2] = IndexOfSpritePaletteTag(0x2719);
+ gTasks[taskId].func = sub_80DA0DC;
+}
+
+#ifdef NONMATCHING
+void sub_80DA0DC(u8 taskId)
+{
+ gTasks[taskId].data[10]++;
+ if(gTasks[taskId].data[10] == gTasks[taskId].data[1])
+ {
+ u16 r0;
+ u16 r2;
+ s32 i;
+
+ gTasks[taskId].data[10] = 0;
+ r0 = gTasks[taskId].data[2];
+ r2 = gPlttBufferFaded[r0 * 8];
+ for(i = 0; i < 8; i++)
+ gPlttBufferFaded[r0 * 8 + i + 0x107] = gPlttBufferFaded[r0 * 8 + i + 0x107];
+ gTasks[taskId].data[2] = ((r0 + 0x101) * 2) + r2;
+ }
+ gTasks[taskId].data[0] = gTasks[taskId].data[0] * 32;
+ if(gTasks[taskId].data[0] == 0)
+ {
+ DestroyAnimVisualTask(taskId);
+ }
+}
+#else
+NAKED
+void sub_80DA0DC(u8 taskId)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ ldr r2, _080DA15C @ =gTasks\n\
+ lsls r0, r5, 2\n\
+ adds r0, r5\n\
+ lsls r0, 3\n\
+ adds r3, r0, r2\n\
+ ldrh r0, [r3, 0x1C]\n\
+ adds r1, r0, 0x1\n\
+ strh r1, [r3, 0x1C]\n\
+ lsls r0, 16\n\
+ asrs r0, 16\n\
+ movs r4, 0xA\n\
+ ldrsh r1, [r3, r4]\n\
+ adds r7, r2, 0\n\
+ cmp r0, r1\n\
+ bne _080DA13A\n\
+ movs r0, 0\n\
+ strh r0, [r3, 0x1C]\n\
+ ldrb r0, [r3, 0xC]\n\
+ ldr r2, _080DA160 @ =gPlttBufferFaded\n\
+ lsls r0, 4\n\
+ movs r3, 0x84\n\
+ lsls r3, 1\n\
+ adds r1, r0, r3\n\
+ lsls r1, 1\n\
+ adds r1, r2\n\
+ ldrh r6, [r1]\n\
+ movs r4, 0x7\n\
+ mov r12, r0\n\
+ ldr r0, _080DA164 @ =0x00000107\n\
+ add r0, r12\n\
+ lsls r0, 1\n\
+ adds r3, r0, r2\n\
+_080DA122:\n\
+ ldrh r0, [r3]\n\
+ strh r0, [r1]\n\
+ subs r3, 0x2\n\
+ subs r1, 0x2\n\
+ subs r4, 0x1\n\
+ cmp r4, 0\n\
+ bgt _080DA122\n\
+ ldr r0, _080DA168 @ =0x00000101\n\
+ add r0, r12\n\
+ lsls r0, 1\n\
+ adds r0, r2\n\
+ strh r6, [r0]\n\
+_080DA13A:\n\
+ lsls r0, r5, 2\n\
+ adds r0, r5\n\
+ lsls r0, 3\n\
+ adds r0, r7\n\
+ ldrh r1, [r0, 0x8]\n\
+ subs r1, 0x1\n\
+ strh r1, [r0, 0x8]\n\
+ lsls r1, 16\n\
+ cmp r1, 0\n\
+ bne _080DA154\n\
+ adds r0, r5, 0\n\
+ bl DestroyAnimVisualTask\n\
+_080DA154:\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_080DA15C: .4byte gTasks\n\
+_080DA160: .4byte gPlttBufferFaded\n\
+_080DA164: .4byte 0x00000107\n\
+_080DA168: .4byte 0x00000101\n\
+ .syntax divided\n");
+}
+#endif
+
+void sub_80DA16C(struct Sprite *sprite)
+{
+ InitAnimSpritePos(sprite, 1);
+ if (GetBattlerSide(gAnimBankAttacker) != B_SIDE_PLAYER)
+ gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+ sprite->data[0] = gBattleAnimArgs[4];
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2) + gBattleAnimArgs[2];
+ sprite->data[3] = sprite->pos1.y;
+ sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3) + gBattleAnimArgs[3];
+ InitAnimSpriteTranslationDeltas(sprite);
+ sprite->callback = sub_80785E4;
+ StoreSpriteCallbackInData(sprite, sub_80DA1EC);
+}
+
+void sub_80DA1EC(struct Sprite *sprite)
+{
+ if (TranslateAnimSpriteByDeltas(sprite) != 0)
+ {
+ DestroyAnimSprite(sprite);
+ }
+}
+
+void sub_80DA208(struct Sprite *sprite)
+{
+ if (GetBattlerSide(gAnimBankAttacker) != B_SIDE_PLAYER)
+ {
+ gBattleAnimArgs[0] = -gBattleAnimArgs[0];
+ gBattleAnimArgs[1] = -gBattleAnimArgs[1];
+ gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+ gBattleAnimArgs[3] = -gBattleAnimArgs[3];
+ }
+
+ if (IsContest())
+ {
+ gBattleAnimArgs[1] = -gBattleAnimArgs[1];
+ gBattleAnimArgs[3] = -gBattleAnimArgs[3];
+ }
+
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 3);
+ sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->data[0] = gBattleAnimArgs[4];
+
+ if (gBattleAnimArgs[6] == 0)
+ {
+ sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2);
+ sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3);
+ }
+ else
+ {
+ SetAverageBattlerPositions(gAnimBankTarget, 1, &sprite->data[2], &sprite->data[4]);
+ }
+
+ sprite->data[2] = sprite->data[2] + gBattleAnimArgs[2];
+ sprite->data[4] = sprite->data[4] + gBattleAnimArgs[3];
+ sprite->callback = StartTranslateAnimSpriteByDeltas;
+
+ StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
+ SeekSpriteAnim(sprite, gBattleAnimArgs[5]);
+}
+
+void sub_80DA300(struct Sprite *sprite)
+{
+ InitAnimSpritePos(sprite, 1);
+ sprite->data[0] = gBattleAnimArgs[2];
+ sprite->data[1] = gBattleAnimArgs[3];
+ sprite->callback = sub_80DA348;
+ gSprites[GetAnimBattlerSpriteId(0)].invisible = 1;
+}
+
+void sub_80DA348(struct Sprite *sprite)
+{
+ if (sprite->data[0] > 0)
+ {
+ sprite->data[0]--;
+ }
+ else
+ {
+ sprite->data[2] += sprite->data[1];
+ sprite->pos2.y -= (sprite->data[2] >> 8);
+ }
+
+ if (sprite->pos1.y + sprite->pos2.y < -32)
+ {
+ DestroyAnimSprite(sprite);
+ }
+}
+
+void sub_80DA38C(struct Sprite *sprite)
+{
+ if (GetBattlerSide(gAnimBankAttacker) != B_SIDE_PLAYER)
+ {
+ sprite->pos1.x = 272;
+ sprite->pos1.y = -32;
+ StartSpriteAffineAnim(sprite, 1);
+ }
+ else
+ {
+ sprite->pos1.x = -32;
+ sprite->pos1.y = -32;
+ }
+
+ sprite->data[0] = gBattleAnimArgs[0];
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2);
+ sprite->data[3] = sprite->pos1.y;
+ sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3);
+
+ InitAnimSpriteTranslationDeltas(sprite);
+ sprite->callback = sub_80DA410;
+}
+
+void sub_80DA410(struct Sprite *sprite)
+{
+ sprite->data[0] = 1;
+ TranslateAnimSpriteByDeltas(sprite);
+
+ if (((u16)sprite->data[3] >> 8) > 200)
+ {
+ sprite->pos1.x += sprite->pos2.x;
+ sprite->pos2.x = 0;
+ sprite->data[3] &= 0xFF;
+ }
+
+ if ((u32)(sprite->pos1.x + sprite->pos2.x + 32) > 304 || sprite->pos1.y + sprite->pos2.y > 160)
+ {
+ gSprites[GetAnimBattlerSpriteId(0)].invisible = 0;
+ DestroyAnimSprite(sprite);
+ }
+}
+
+void sub_80DA48C(struct Sprite *sprite)
+{
+ if (sprite->data[0]-- <= 0)
+ {
+ if (sprite->oam.affineMode & 1)
+ {
+ FreeOamMatrix(sprite->oam.matrixNum);
+ sprite->oam.affineMode = 0;
+ }
+
+ DestroySprite(sprite);
+ gAnimVisualTaskCount--;
+ }
+}
diff --git a/src/battle/anim/flying_hearts.c b/src/battle/anim/flying_hearts.c
index f20416535..2bba6c4cb 100644
--- a/src/battle/anim/flying_hearts.c
+++ b/src/battle/anim/flying_hearts.c
@@ -8,11 +8,23 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80D2064(struct Sprite* sprite);
static void sub_80D2094(struct Sprite* sprite);
// flying_hearts (hearts float upward from the bottom of the screen.)
// Used in Attract.
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D7AE0 =
+{
+ .tileTag = 10216,
+ .paletteTag = 10216,
+ .oam = &gOamData_837DF2C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D2064,
+};
+
void sub_80D2064(struct Sprite* sprite)
{
sprite->pos1.x = gBattleAnimArgs[0];
@@ -23,7 +35,7 @@ void sub_80D2064(struct Sprite* sprite)
StoreSpriteCallbackInData(sprite, sub_80D2094);
}
-void sub_80D2094(struct Sprite* sprite)
+static void sub_80D2094(struct Sprite* sprite)
{
s16 y;
sprite->data[2] += sprite->data[1];
diff --git a/src/battle/anim/flying_path.c b/src/battle/anim/flying_path.c
index 70c418afc..b190e9e8c 100644
--- a/src/battle/anim/flying_path.c
+++ b/src/battle/anim/flying_path.c
@@ -8,8 +8,6 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
-extern struct SpriteTemplate gSpriteTemplate_83D6884;
-
static void sub_80CBF5C(u8 taskId);
static s16 sub_80CC338(struct Sprite* sprite);
static void sub_80CC358(struct Task* task, u8 taskId);
@@ -18,16 +16,80 @@ static void sub_80CC408(struct Sprite* sprite);
// flying_path (guides a sprite along a specific path.)
// Used by Leaf Blade.
+const union AnimCmd gSpriteAnim_83D6830[] =
+{
+ ANIMCMD_FRAME(28, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D6838[] =
+{
+ ANIMCMD_FRAME(32, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D6840[] =
+{
+ ANIMCMD_FRAME(20, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D6848[] =
+{
+ ANIMCMD_FRAME(28, 1, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D6850[] =
+{
+ ANIMCMD_FRAME(16, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D6858[] =
+{
+ ANIMCMD_FRAME(16, 1, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D6860[] =
+{
+ ANIMCMD_FRAME(28, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D6868[] =
+{
+ gSpriteAnim_83D6830,
+ gSpriteAnim_83D6838,
+ gSpriteAnim_83D6840,
+ gSpriteAnim_83D6848,
+ gSpriteAnim_83D6850,
+ gSpriteAnim_83D6858,
+ gSpriteAnim_83D6860,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83D6884 =
+{
+ .tileTag = 10063,
+ .paletteTag = 10063,
+ .oam = &gOamData_837DF2C,
+ .anims = gSpriteAnimTable_83D6868,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
void sub_80CBDF4(u8 taskId)
{
struct Task *task = &gTasks[taskId];
task->data[4] = sub_8079E90(gAnimBankTarget) - 1;
- task->data[6] = GetBankPosition(gAnimBankTarget, 2);
- task->data[7] = GetBankPosition(gAnimBankTarget, 3);
+ task->data[6] = GetBattlerSpriteCoord(gAnimBankTarget, 2);
+ task->data[7] = GetBattlerSpriteCoord(gAnimBankTarget, 3);
task->data[10] = sub_807A100(gAnimBankTarget, 1);
task->data[11] = sub_807A100(gAnimBankTarget, 0);
- task->data[5] = (GetBankSide(gAnimBankTarget) == 1) ? 1 : -1;
+ task->data[5] = (GetBattlerSide(gAnimBankTarget) == 1) ? 1 : -1;
task->data[9] = 0x38 - (task->data[5] * 64);
task->data[8] = task->data[7] - task->data[9] + task->data[6];
task->data[2] = CreateSprite(&gSpriteTemplate_83D6884, task->data[8], task->data[9], task->data[4]);
@@ -44,7 +106,7 @@ void sub_80CBDF4(u8 taskId)
task->func = sub_80CBF5C;
}
-void sub_80CBF5C(u8 taskId)
+static void sub_80CBF5C(u8 taskId)
{
struct Task* task = &gTasks[taskId];
struct Sprite* sprite = &gSprites[task->data[2]];
@@ -244,7 +306,7 @@ void sub_80CBF5C(u8 taskId)
}
}
-s16 sub_80CC338(struct Sprite* sprite)
+static s16 sub_80CC338(struct Sprite* sprite)
{
s16 var = 8;
if (sprite->data[4] < sprite->pos1.y)
@@ -253,7 +315,7 @@ s16 sub_80CC338(struct Sprite* sprite)
return var;
}
-void sub_80CC358(struct Task* task, u8 taskId)
+static void sub_80CC358(struct Task* task, u8 taskId)
{
task->data[14]++;
if (task->data[14] > 0)
@@ -279,7 +341,7 @@ void sub_80CC358(struct Task* task, u8 taskId)
}
}
-void sub_80CC408(struct Sprite* sprite)
+static void sub_80CC408(struct Sprite* sprite)
{
sprite->data[0]++;
if (sprite->data[0] > 1)
diff --git a/src/battle/anim/flying_petals.c b/src/battle/anim/flying_petals.c
index 4eeaa5215..4696cbc6c 100644
--- a/src/battle/anim/flying_petals.c
+++ b/src/battle/anim/flying_petals.c
@@ -7,12 +7,110 @@
extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+extern const union AnimCmd *const gSpriteAnimTable_83D6424[];
+extern const union AnimCmd *const gSpriteAnimTable_83D6420[];
+void sub_80CC474(struct Sprite* sprite);
static void sub_80CC580(struct Sprite* sprite);
// flying_petals (petals fly across the screen.)
// Used by Aromatherapy.
+const union AffineAnimCmd gSpriteAffineAnim_83D689C[] = {
+ AFFINEANIMCMD_FRAME(256, 256, 0, 0),
+ AFFINEANIMCMD_FRAME(0, 0, 4, 1),
+ AFFINEANIMCMD_JUMP(1),
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D68B4[] = {
+ gSpriteAffineAnim_83D689C,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D68B8 =
+{
+ .tileTag = 10159,
+ .paletteTag = 10159,
+ .oam = &gOamData_837DF24,
+ .anims = gSpriteAnimTable_83D6424,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CC474,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D68D0 =
+{
+ .tileTag = 10159,
+ .paletteTag = 10159,
+ .oam = &gOamData_837DF8C,
+ .anims = gSpriteAnimTable_83D6420,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D68B4,
+ .callback = sub_80CC474,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D68E8[] = {
+ AFFINEANIMCMD_FRAME(256, 256, 0, 0),
+ AFFINEANIMCMD_FRAME(0, 0, -10, 1),
+ AFFINEANIMCMD_JUMP(1),
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D6900[] = {
+ AFFINEANIMCMD_FRAME(192, 192, 0, 0),
+ AFFINEANIMCMD_FRAME(0, 0, -12, 1),
+ AFFINEANIMCMD_JUMP(1),
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D6918[] = {
+ AFFINEANIMCMD_FRAME(143, 143, 0, 0),
+ AFFINEANIMCMD_FRAME(0, 0, -15, 1),
+ AFFINEANIMCMD_JUMP(1),
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D6930[] = {
+ gSpriteAffineAnim_83D68E8,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D6934[] = {
+ gSpriteAffineAnim_83D6900,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D6938[] = {
+ gSpriteAffineAnim_83D6918,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D693C =
+{
+ .tileTag = 10271,
+ .paletteTag = 10271,
+ .oam = &gOamData_837DF8C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D6930,
+ .callback = sub_80CC474,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D6954 =
+{
+ .tileTag = 10271,
+ .paletteTag = 10271,
+ .oam = &gOamData_837DF8C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D6934,
+ .callback = sub_80CC474,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D696C =
+{
+ .tileTag = 10271,
+ .paletteTag = 10271,
+ .oam = &gOamData_837DF8C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D6938,
+ .callback = sub_80CC474,
+};
+
void sub_80CC474(struct Sprite* sprite)
{
u8 bank;
@@ -21,7 +119,7 @@ void sub_80CC474(struct Sprite* sprite)
else
bank = gAnimBankTarget;
- if (GetBankSide(bank) != 0)
+ if (GetBattlerSide(bank) != 0)
{
sprite->data[4] = 0;
sprite->data[2] = gBattleAnimArgs[3];
@@ -48,12 +146,12 @@ void sub_80CC474(struct Sprite* sprite)
sprite->oam.priority = sub_8079ED4(bank) + 1;
break;
case 2:
- sprite->pos1.y = GetBankPosition(bank, 3) + gBattleAnimArgs[0];
+ sprite->pos1.y = GetBattlerSpriteCoord(bank, 3) + gBattleAnimArgs[0];
sprite->oam.priority = sub_8079ED4(bank);
break;
case 3:
- sprite->pos1.y = GetBankPosition(gAnimBankTarget, 3) + gBattleAnimArgs[0];
- GetAnimBankSpriteId(1);
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankTarget, 3) + gBattleAnimArgs[0];
+ GetAnimBattlerSpriteId(1);
sprite->oam.priority = sub_8079ED4(bank) + 1;
break;
}
@@ -61,7 +159,7 @@ void sub_80CC474(struct Sprite* sprite)
sprite->callback = sub_80CC580;
}
-void sub_80CC580(struct Sprite* sprite)
+static void sub_80CC580(struct Sprite* sprite)
{
int a = sprite->data[7];
sprite->data[7]++;
diff --git a/src/battle/anim/ghost.c b/src/battle/anim/ghost.c
new file mode 100644
index 000000000..85879c86c
--- /dev/null
+++ b/src/battle/anim/ghost.c
@@ -0,0 +1,617 @@
+#include "global.h"
+#include "sound.h"
+#include "constants/songs.h"
+#include "trig.h"
+#include "rom_8077ABC.h"
+#include "battle_anim.h"
+
+extern s16 gBattleAnimArgs[];
+extern u8 gAnimBankAttacker;
+extern u8 gAnimBankTarget;
+extern u8 gUnknown_0202F7D2;
+
+void sub_80DDB6C(struct Sprite *sprite);
+void sub_80DDBD8(struct Sprite *);
+void sub_80DDC4C(struct Sprite *);
+void sub_80DDCC8(struct Sprite *);
+void sub_80DDD58(struct Sprite *sprite);
+void sub_80DDD78(struct Sprite *);
+void sub_80DDE7C(u8 taskId);
+void sub_80DDED0(u8 taskId);
+void sub_80DDF40(struct Sprite *sprite);
+void sub_80DDFE8(struct Sprite *);
+void sub_80DE0FC(struct Sprite *sprite);
+void sub_80DE114(struct Sprite *);
+void sub_80DE2DC(u8 taskId);
+void sub_80DE3D4(u8 taskId);
+void sub_80DE7B8(struct Sprite *sprite);
+void sub_80DEF3C(struct Sprite *sprite);
+void sub_80DF0B8(struct Sprite *sprite);
+void sub_80DF0B8(struct Sprite *sprite);
+void sub_80DF3D8(struct Sprite *sprite);
+void sub_80DF49C(struct Sprite *sprite);
+
+const union AffineAnimCmd gSpriteAffineAnim_83DAE48[] =
+{
+ AFFINEANIMCMD_FRAME(0x1E, 0x1E, 10, 5),
+ AFFINEANIMCMD_FRAME(0xFFE2, 0xFFE2, 10, 5),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DAE60[] =
+{
+ gSpriteAffineAnim_83DAE48,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAE64 =
+{
+ .tileTag = 10013,
+ .paletteTag = 10013,
+ .oam = &gOamData_837DFEC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DAE60,
+ .callback = sub_80DDB6C,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAE7C =
+{
+ .tileTag = 10013,
+ .paletteTag = 10013,
+ .oam = &gOamData_837E04C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DDD58,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DAE94[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 10, 1),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DAEA4[] =
+{
+ gSpriteAffineAnim_83DAE94,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAEA8 =
+{
+ .tileTag = 10176,
+ .paletteTag = 10176,
+ .oam = &gOamData_837DF94,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DAEA4,
+ .callback = sub_80DDF40,
+};
+
+const union AnimCmd gSpriteAnim_83DAEC0[] =
+{
+ ANIMCMD_FRAME(0, 2),
+ ANIMCMD_FRAME(8, 2),
+ ANIMCMD_FRAME(16, 2),
+ ANIMCMD_FRAME(24, 2),
+ ANIMCMD_FRAME(32, 2),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83DAED8[] =
+{
+ gSpriteAnim_83DAEC0,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAEDC =
+{
+ .tileTag = 10177,
+ .paletteTag = 10177,
+ .oam = &gOamData_837DF74,
+ .anims = gSpriteAnimTable_83DAED8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DE0FC,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DAEF4[] =
+{
+ AFFINEANIMCMD_FRAME(0x200, 0x200, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DAF04[] =
+{
+ gSpriteAffineAnim_83DAEF4,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83DAF08 =
+{
+ .tileTag = 10188,
+ .paletteTag = 10188,
+ .oam = &gOamData_837E07C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DE7B8,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAF20 =
+{
+ .tileTag = 10199,
+ .paletteTag = 10199,
+ .oam = &gOamData_837E074,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DEF3C,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAF38 =
+{
+ .tileTag = 10200,
+ .paletteTag = 10200,
+ .oam = &gOamData_837E054,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DF0B8,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAF50 =
+{
+ .tileTag = 10221,
+ .paletteTag = 10221,
+ .oam = &gOamData_837E054,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DF0B8,
+};
+
+const union AnimCmd gSpriteAnim_83DAF68[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(8, 4),
+ ANIMCMD_FRAME(16, 4),
+ ANIMCMD_FRAME(24, 4),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gSpriteAnimTable_83DAF7C[] =
+{
+ gSpriteAnim_83DAF68,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83DAF80 =
+{
+ .tileTag = 10253,
+ .paletteTag = 10253,
+ .oam = &gOamData_837E094,
+ .anims = gSpriteAnimTable_83DAF7C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DF3D8,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83DAF98 =
+{
+ .tileTag = 0,
+ .paletteTag = 0,
+ .oam = &gDummyOamData,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DF49C,
+};
+
+void sub_80DDB6C(struct Sprite *sprite)
+{
+ InitAnimSpritePos(sprite, 1);
+ sprite->data[0] = gBattleAnimArgs[2];
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2);
+ sprite->data[3] = sprite->pos1.y;
+ sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3);
+ sub_8078BD4(sprite);
+ sprite->callback = sub_80DDBD8;
+ sprite->data[6] = 16;
+ REG_BLDCNT = 0x3F40;
+ REG_BLDALPHA = sprite->data[6];
+}
+
+void sub_80DDBD8(struct Sprite *sprite)
+{
+ s16 r0;
+ s16 r2;
+ sub_80DDCC8(sprite);
+ if (TranslateAnimSpriteByDeltas(sprite))
+ {
+ sprite->callback = sub_80DDC4C;
+ return;
+ }
+ sprite->pos2.x += Sin(sprite->data[5], 10);
+ sprite->pos2.y += Cos(sprite->data[5], 15);
+ r2 = sprite->data[5];
+ sprite->data[5] = (sprite->data[5] + 5) & 0xFF;
+ r0 = sprite->data[5];
+ if (r2 != 0 && r2 <= 196)
+ return;
+ if (r0 <= 0)
+ return;
+ PlaySE12WithPanning(SE_W109, gUnknown_0202F7D2);
+}
+
+void sub_80DDC4C(struct Sprite *sprite)
+{
+ s16 r2;
+ s16 r0;
+ sprite->data[0] = 1;
+ TranslateAnimSpriteByDeltas(sprite);
+ sprite->pos2.x += Sin(sprite->data[5],10);
+ sprite->pos2.y += Cos(sprite->data[5],15);
+
+ r2 = sprite->data[5];
+ sprite->data[5] = (sprite->data[5] + 5) & 0xFF;
+ r0 = sprite->data[5];
+
+ if(r2 == 0 || r2 > 196)
+ if(r0 > 0)
+ PlaySE(SE_W109);
+
+ if(sprite->data[6] == 0)
+ {
+ sprite->invisible = TRUE;
+ sprite->callback = sub_807861C;
+ }
+ else
+ sub_80DDCC8(sprite);
+}
+
+void sub_80DDCC8(struct Sprite *sprite)
+{
+
+ s16 r0;
+ if(sprite->data[6] > 0xFF)
+ {
+ if(++sprite->data[6] == 0x10d)
+ sprite->data[6] = 0;
+ return;
+ }
+
+ r0 = sprite->data[7];
+ sprite->data[7]++;
+
+ if((r0 & 0xFF) == 0)
+ {
+ sprite->data[7] &= 0xff00;
+ if((sprite->data[7] & 0x100) != 0)
+ sprite->data[6]++;
+ else
+ sprite->data[6]--;
+ }
+ else
+ return;
+
+ REG_BLDALPHA = BLDALPHA_BLEND(sprite->data[6], 16 - sprite->data[6]);
+ if(sprite->data[6] == 0 || sprite->data[6] == 16)
+ sprite->data[7] ^= 0x100;
+ if(sprite->data[6] == 0)
+ sprite->data[6] = 0x100;
+}
+
+void sub_80DDD58(struct Sprite *sprite)
+{
+ sub_8078764(sprite, 1);
+ sprite->callback = sub_80DDD78;
+ sub_80DDD78(sprite);
+}
+
+void sub_80DDD78(struct Sprite *sprite)
+{
+ u16 temp1;
+ sprite->pos2.x = Sin(sprite->data[0], 32);
+ sprite->pos2.y = Cos(sprite->data[0], 8);
+ temp1 = sprite->data[0] - 65;
+ if (temp1 <= 130)
+ sprite->oam.priority = 2;
+ else
+ sprite->oam.priority = 1;
+ sprite->data[0] = (sprite->data[0] + 19) & 0xFF;
+ sprite->data[2] += 80;
+ sprite->pos2.y += sprite->data[2] >> 8;
+ sprite->data[7] += 1;
+ if (sprite->data[7] == 61)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_80DDDF0(u8 taskId)
+{
+ u8 spriteId;
+ REG_BLDCNT = 0x3F40;
+ REG_BLDALPHA = 0x1000;
+ spriteId = GetAnimBattlerSpriteId(0);
+ sub_8078E70(spriteId, 1);
+ obj_id_set_rotscale(spriteId, 128, 128, 0);
+ gSprites[spriteId].invisible = FALSE;
+ gTasks[taskId].data[0] = 128;
+ gTasks[taskId].data[1] = *gBattleAnimArgs;
+ gTasks[taskId].data[2] = 0;
+ gTasks[taskId].data[3] = 16;
+ gTasks[taskId].func = sub_80DDE7C;
+}
+
+void sub_80DDE7C(u8 taskId)
+{
+ gTasks[taskId].data[10] += 1;
+ if (gTasks[taskId].data[10] == 3)
+ {
+ gTasks[taskId].data[10] = 0;
+ gTasks[taskId].data[2] += 1;
+ gTasks[taskId].data[3] -= 1;
+ REG_BLDALPHA = gTasks[taskId].data[3] << 8 | gTasks[taskId].data[2];
+ if (gTasks[taskId].data[2] != 9)
+ return;
+ gTasks[taskId].func = sub_80DDED0;
+ }
+}
+
+void sub_80DDED0(u8 taskId)
+{
+ u8 spriteId;
+ if (gTasks[taskId].data[1] > 0)
+ {
+ gTasks[taskId].data[1] -= 1;
+ return;
+ }
+ spriteId = GetAnimBattlerSpriteId(0);
+ gTasks[taskId].data[0] += 8;
+ if (gTasks[taskId].data[0] <= 0xFF)
+ {
+ obj_id_set_rotscale(spriteId, gTasks[taskId].data[0], gTasks[taskId].data[0], 0);
+ return;
+ }
+ sub_8078F40(spriteId);
+ DestroyAnimVisualTask(taskId);
+ REG_BLDCNT = 0;
+ REG_BLDALPHA = 0;
+}
+
+void sub_80DDF40(struct Sprite *sprite)
+{
+ u16 r5, r6;
+ r5 = sprite->pos1.x;
+ r6 = sprite->pos1.y;
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 3);
+ sprite->data[0] = 0;
+ sprite->data[1] = gBattleAnimArgs[0];
+ sprite->data[2] = gBattleAnimArgs[1];
+ sprite->data[3] = gBattleAnimArgs[2];
+ sprite->data[4] = sprite->pos1.x << 4;
+ sprite->data[5] = sprite->pos1.y << 4;
+ sprite->data[6] = (((s16)r5 - sprite->pos1.x) << 4) / (gBattleAnimArgs[0] << 1);
+ sprite->data[7] = (((s16)r6 - sprite->pos1.y) << 4) / (gBattleAnimArgs[0] << 1);
+ sprite->callback = sub_80DDFE8;
+}
+
+void sub_80DDFE8(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ sprite->data[4] += sprite->data[6];
+ sprite->data[5] += sprite->data[7];
+ sprite->pos1.x = sprite->data[4] >> 4;
+ sprite->pos1.y = sprite->data[5] >> 4;
+ sprite->data[1] -= 1;
+ if (sprite->data[1] > 0)
+ break;
+ sprite->data[0] += 1;
+ break;
+ case 1:
+ sprite->data[2] -= 1;
+ if (sprite->data[2] > 0)
+ break;
+ sprite->data[1] = GetBattlerSpriteCoord(gAnimBankTarget, 2);
+ sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 3);
+ sprite->data[4] = sprite->pos1.x << 4;
+ sprite->data[5] = sprite->pos1.y << 4;
+ sprite->data[6] = ((sprite->data[1] - sprite->pos1.x) << 4) / sprite->data[3];
+ sprite->data[7] = ((sprite->data[2] - sprite->pos1.y) << 4) / sprite->data[3];
+ sprite->data[0] += 1;
+ break;
+ case 2:
+ sprite->data[4] += sprite->data[6];
+ sprite->data[5] += sprite->data[7];
+ sprite->pos1.x = sprite->data[4] >> 4;
+ sprite->pos1.y = sprite->data[5] >> 4;
+ sprite->data[3] -= 1;
+ if (sprite->data[3] > 0)
+ break;
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankTarget, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankTarget, 3);
+ sprite->data[0] += 1;
+ break;
+ case 3:
+ move_anim_8074EE0(sprite);
+ break;
+ }
+}
+
+void sub_80DE0FC(struct Sprite *sprite)
+{
+ sub_8078764(sprite, 1);
+ sprite->callback = sub_80DE114;
+}
+
+/* NONMATCHING */
+NAKED
+void sub_80DE114(struct Sprite *sprite)
+{
+ asm_unified("\tpush {r4-r6,lr}\n"
+ "\tadds r3, r0, 0\n"
+ "\tmovs r5, 0\n"
+ "\tmovs r6, 0\n"
+ "\tadds r0, 0x3F\n"
+ "\tldrb r1, [r0]\n"
+ "\tmovs r0, 0x10\n"
+ "\tands r0, r1\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _080DE1AA\n"
+ "\tadds r1, r3, 0\n"
+ "\tadds r1, 0x3E\n"
+ "\tldrb r2, [r1]\n"
+ "\tmovs r0, 0x4\n"
+ "\tands r0, r2\n"
+ "\tadds r4, r1, 0\n"
+ "\tcmp r0, 0\n"
+ "\tbne _080DE13E\n"
+ "\tmovs r0, 0x4\n"
+ "\torrs r0, r2\n"
+ "\tstrb r0, [r4]\n"
+ "_080DE13E:\n"
+ "\tmovs r1, 0x2E\n"
+ "\tldrsh r0, [r3, r1]\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _080DE14E\n"
+ "\tcmp r0, 0x1\n"
+ "\tbeq _080DE158\n"
+ "\tmovs r6, 0x1\n"
+ "\tb _080DE162\n"
+ "_080DE14E:\n"
+ "\tmovs r1, 0x30\n"
+ "\tldrsh r0, [r3, r1]\n"
+ "\tcmp r0, 0x2\n"
+ "\tbne _080DE162\n"
+ "\tb _080DE166\n"
+ "_080DE158:\n"
+ "\tmovs r1, 0x30\n"
+ "\tldrsh r0, [r3, r1]\n"
+ "\tcmp r0, 0x4\n"
+ "\tbne _080DE162\n"
+ "\tmovs r5, 0x1\n"
+ "_080DE162:\n"
+ "\tcmp r5, 0\n"
+ "\tbeq _080DE198\n"
+ "_080DE166:\n"
+ "\tldrb r2, [r4]\n"
+ "\tlsls r0, r2, 29\n"
+ "\tlsrs r0, 31\n"
+ "\tmovs r1, 0x1\n"
+ "\teors r1, r0\n"
+ "\tlsls r1, 2\n"
+ "\tmovs r0, 0x5\n"
+ "\tnegs r0, r0\n"
+ "\tands r0, r2\n"
+ "\torrs r0, r1\n"
+ "\tstrb r0, [r4]\n"
+ "\tldrh r0, [r3, 0x32]\n"
+ "\tadds r0, 0x1\n"
+ "\tmovs r1, 0\n"
+ "\tstrh r0, [r3, 0x32]\n"
+ "\tstrh r1, [r3, 0x30]\n"
+ "\tlsls r0, 16\n"
+ "\tasrs r0, 16\n"
+ "\tcmp r0, 0x5\n"
+ "\tbne _080DE1AA\n"
+ "\tstrh r1, [r3, 0x32]\n"
+ "\tldrh r0, [r3, 0x2E]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrh r0, [r3, 0x2E]\n"
+ "\tb _080DE1AA\n"
+ "_080DE198:\n"
+ "\tcmp r6, 0\n"
+ "\tbeq _080DE1A4\n"
+ "\tadds r0, r3, 0\n"
+ "\tbl DestroyAnimSprite\n"
+ "\tb _080DE1AA\n"
+ "_080DE1A4:\n"
+ "\tldrh r0, [r3, 0x30]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrh r0, [r3, 0x30]\n"
+ "_080DE1AA:\n"
+ "\tpop {r4-r6}\n"
+ "\tpop {r0}\n"
+ "\tbx r0\n");
+}
+
+void sub_80DE1B0(u8 taskId)
+{
+ struct Task *task;
+
+ task = &gTasks[taskId];
+ task->data[0] = duplicate_obj_of_side_rel2move_in_transparent_mode(1);
+ if (task->data[0] < 0)
+ {
+ DestroyAnimVisualTask(taskId);
+ return;
+ }
+ task->data[1] = 0;
+ task->data[2] = 15;
+ task->data[3] = 2;
+ task->data[4] = 0;
+ REG_BLDCNT = 0x3F40;
+ REG_BLDALPHA = (task->data[3] << 8) | task->data[2];
+ gSprites[task->data[0]].data[0] = 80;
+ if (GetBattlerSide(gAnimBankTarget) == 0)
+ {
+ gSprites[task->data[0]].data[1] = -144;
+ gSprites[task->data[0]].data[2] = 112;
+ }
+ else
+ {
+ gSprites[task->data[0]].data[1] = 144;
+ gSprites[task->data[0]].data[2] = -112;
+ }
+ gSprites[task->data[0]].data[3] = 0;
+ gSprites[task->data[0]].data[4] = 0;
+ StoreSpriteCallbackInData(&gSprites[task->data[0]], SpriteCallbackDummy);
+ gSprites[task->data[0]].callback = sub_8078394;
+ task->func = sub_80DE2DC;
+}
+
+void sub_80DE2DC(u8 taskId)
+{
+ struct Task *task;
+
+ task = &gTasks[taskId];
+ switch (task->data[4])
+ {
+ case 0:
+ task->data[1] += 1;
+ task->data[5] = task->data[1] & 3;
+ if (task->data[5] == 1)
+ if (task->data[2] > 0)
+ task->data[2] -= 1;
+ if (task->data[5] == 3)
+ if (task->data[3] <= 15)
+ task->data[3] += 1;
+ REG_BLDALPHA = (task->data[3] << 8) | task->data[2];
+ if (task->data[3] != 16 || task->data[2] != 0)
+ break;
+ if (task->data[1] <= 80)
+ break;
+ obj_delete_but_dont_free_vram(&gSprites[task->data[0]]);
+ task->data[4] = 1;
+ break;
+ case 1:
+ if (++task->data[6] <= 1)
+ break;
+ REG_BLDCNT = 0;
+ REG_BLDALPHA = 0;
+ task->data[4] += 1;
+ break;
+ case 2:
+ DestroyAnimVisualTask(taskId);
+ }
+}
+
+void sub_80DE3AC(u8 taskId)
+{
+ struct Task *task;
+
+ task = &gTasks[taskId];
+ task->data[15] = 0;
+ task->func = sub_80DE3D4;
+ sub_80DE3D4(taskId);
+}
diff --git a/src/battle/anim/glitter.c b/src/battle/anim/glitter.c
index e6c101de3..fb7443575 100644
--- a/src/battle/anim/glitter.c
+++ b/src/battle/anim/glitter.c
@@ -8,9 +8,52 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80CD140(struct Sprite* sprite);
+void sub_80CD190(struct Sprite* sprite);
+
// glitter (the sparkling effect seen on Pokemon, usually after healing or a beneficial effect.)
// Used by Heal Bell, Cosmic Power, and Aromatherapy.
+const union AnimCmd gSpriteAnim_83D6C60[] =
+{
+ ANIMCMD_FRAME(0, 7),
+ ANIMCMD_FRAME(16, 7),
+ ANIMCMD_FRAME(32, 7),
+ ANIMCMD_FRAME(48, 7),
+ ANIMCMD_FRAME(64, 7),
+ ANIMCMD_FRAME(80, 7),
+ ANIMCMD_FRAME(96, 7),
+ ANIMCMD_FRAME(112, 7),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D6C84[] =
+{
+ gSpriteAnim_83D6C60,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D6C88 =
+{
+ .tileTag = 10049,
+ .paletteTag = 10049,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D6C84,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CD140,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D6CA0 =
+{
+ .tileTag = 10049,
+ .paletteTag = 10049,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D6C84,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CD190,
+};
+
void sub_80CD140(struct Sprite* sprite)
{
if (!gBattleAnimArgs[2])
@@ -43,13 +86,13 @@ void sub_80CD190(struct Sprite* sprite)
{
if (!gBattleAnimArgs[6])
{
- sprite->pos1.x = GetBankPosition(bank, 0);
- sprite->pos1.y = GetBankPosition(bank, 1) + gBattleAnimArgs[1];
+ sprite->pos1.x = GetBattlerSpriteCoord(bank, 0);
+ sprite->pos1.y = GetBattlerSpriteCoord(bank, 1) + gBattleAnimArgs[1];
}
else
{
- sprite->pos1.x = GetBankPosition(bank, 2);
- sprite->pos1.y = GetBankPosition(bank, 3) + gBattleAnimArgs[1];
+ sprite->pos1.x = GetBattlerSpriteCoord(bank, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(bank, 3) + gBattleAnimArgs[1];
}
sub_807867C(sprite, gBattleAnimArgs[0]);
diff --git a/src/battle/anim/glow.c b/src/battle/anim/glow.c
deleted file mode 100644
index 63466c0ff..000000000
--- a/src/battle/anim/glow.c
+++ /dev/null
@@ -1,55 +0,0 @@
-#include "global.h"
-#include "rom_8077ABC.h"
-#include "trig.h"
-#include "battle_anim.h"
-#include "sound.h"
-#include "ewram.h"
-#include "palette.h"
-#include "decompress.h"
-
-extern s16 gBattleAnimArgs[];
-extern u8 gAnimBankAttacker;
-extern u8 gAnimBankTarget;
-
-extern u16 gUnknown_083D7A5C[5];
-
-extern struct INCBIN_U8 gBattleAnimSpritePalette_206;
-
-// glow (a whitening effect where the Pokemon glows white in a cycle.)
-// Used in Heal Bell.
-
-void sub_80D1ADC(u8 taskId)
-{
- int i;
- u8 sp[8];
- void* src;
- void* dest;
- void* what;
- sp[0] = IndexOfSpritePaletteTag(0x27DE);
- for (i = 1; i <= 4; i++)
- {
- sp[i] = AllocSpritePalette(0x2710 - i);
- }
-
- src = &gBattleAnimSpritePalette_206;
- dest = (IsContest()) ? gSharedMem + 0x18000 - 0x3800: gSharedMem + 0x18000;
- LZDecompressWram(src, dest);
- for (i = 0; i <= 4; i++)
- {
- what = ((IsContest()) ? gSharedMem + 0x14800 : gSharedMem + 0x18000) + (i << 5);
- LoadPalette(what, (u16)((sp[i] << 4) + 0x100), 32);
- }
-
- DestroyAnimVisualTask(taskId);
-}
-
-void sub_80D1B80(u8 taskId)
-{
- int i;
- for (i = 0; i < 5; i++)
- {
- FreeSpritePaletteByTag(gUnknown_083D7A5C[i]);
- }
-
- DestroyAnimVisualTask(taskId);
-}
diff --git a/src/battle/anim/grip.c b/src/battle/anim/grip.c
index dbf7a1562..1ec779c09 100644
--- a/src/battle/anim/grip.c
+++ b/src/battle/anim/grip.c
@@ -8,11 +8,45 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80D0178(struct Sprite* sprite);
static void sub_80D020C(struct Sprite* sprite);
// grip (does a slash which is capable of mirroring for the effect of "gripping".)
// Used in Vice Grip.
+const union AnimCmd gSpriteAnim_83D7674[] =
+{
+ ANIMCMD_FRAME(0, 3),
+ ANIMCMD_FRAME(16, 3),
+ ANIMCMD_FRAME(32, 20),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D7684[] =
+{
+ ANIMCMD_FRAME(0, 3, .vFlip = TRUE, .hFlip = TRUE),
+ ANIMCMD_FRAME(16, 3, .vFlip = TRUE, .hFlip = TRUE),
+ ANIMCMD_FRAME(32, 20, .vFlip = TRUE, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D7694[] =
+{
+ gSpriteAnim_83D7674,
+ gSpriteAnim_83D7684,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D769C =
+{
+ .tileTag = 10138,
+ .paletteTag = 10138,
+ .oam = &gOamData_837E054,
+ .anims = gSpriteAnimTable_83D7694,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D0178,
+};
+
void sub_80D0178(struct Sprite* sprite)
{
s16 r7 = 32;
@@ -31,13 +65,13 @@ void sub_80D0178(struct Sprite* sprite)
sprite->pos1.x += r7;
sprite->pos1.y += r4;
sprite->data[0] = 6;
- sprite->data[2] = GetBankPosition(gAnimBankTarget, 2) + r8;
- sprite->data[4] = GetBankPosition(gAnimBankTarget, 3) + r6;
+ sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2) + r8;
+ sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3) + r6;
sprite->callback = StartTranslateAnimSpriteByDeltas;
StoreSpriteCallbackInData(sprite, sub_80D020C);
}
-void sub_80D020C(struct Sprite* sprite)
+static void sub_80D020C(struct Sprite* sprite)
{
if (sprite->animEnded == 1)
DestroyAnimSprite(sprite);
diff --git a/src/battle/anim/ground.c b/src/battle/anim/ground.c
new file mode 100644
index 000000000..a523df20e
--- /dev/null
+++ b/src/battle/anim/ground.c
@@ -0,0 +1,125 @@
+#include "global.h"
+#include "rom_8077ABC.h"
+#include "battle_anim.h"
+
+extern s16 gBattleAnimArgs[];
+extern u8 gAnimBankAttacker;
+extern u8 gAnimBankTarget;
+
+void sub_80E0F1C(struct Sprite *sprite);
+void sub_80E1004(struct Sprite *sprite);
+void sub_80E1078(struct Sprite *sprite);
+void sub_80E1078(struct Sprite *sprite);
+void sub_80E1108(struct Sprite *sprite);
+void sub_80E1728(struct Sprite *sprite);
+void sub_80E17CC(struct Sprite *sprite);
+
+const union AffineAnimCmd gSpriteAffineAnim_83DB2A0[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 15, 1),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DB2B0[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 20, 1),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DB2C0[] =
+{
+ gSpriteAffineAnim_83DB2A0,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DB2C4[] =
+{
+ gSpriteAffineAnim_83DB2B0,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB2C8 =
+{
+ .tileTag = 10000,
+ .paletteTag = 10000,
+ .oam = &gOamData_837DF94,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DB2C0,
+ .callback = sub_80E0F1C,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB2E0 =
+{
+ .tileTag = 10000,
+ .paletteTag = 10000,
+ .oam = &gOamData_837DF94,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DB2C4,
+ .callback = sub_80E1004,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB2F8 =
+{
+ .tileTag = 10074,
+ .paletteTag = 10074,
+ .oam = &gOamData_837DF24,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80E1078,
+};
+
+const union AnimCmd gSpriteAnim_83DB310[] =
+{
+ ANIMCMD_FRAME(1, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83DB318[] =
+{
+ gSpriteAnim_83DB310,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB31C =
+{
+ .tileTag = 10074,
+ .paletteTag = 10074,
+ .oam = &gOamData_837DF2C,
+ .anims = gSpriteAnimTable_83DB318,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80E1078,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB334 =
+{
+ .tileTag = 10074,
+ .paletteTag = 10074,
+ .oam = &gOamData_837DF2C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80E1108,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB34C =
+{
+ .tileTag = 10074,
+ .paletteTag = 10074,
+ .oam = &gOamData_837DF24,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80E1728,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB364 =
+{
+ .tileTag = 10281,
+ .paletteTag = 10281,
+ .oam = &gOamData_837DF54,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80E17CC,
+};
diff --git a/src/battle/anim/grow.c b/src/battle/anim/grow.c
index 8788b32fe..ad535ad7f 100644
--- a/src/battle/anim/grow.c
+++ b/src/battle/anim/grow.c
@@ -8,22 +8,28 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
-extern struct AffineAnimFrameCmd gUnknown_083D7714;
-
static void sub_80D0904(u8 taskId);
// grow (grows a Pokemon then shrinks back to normal size.)
// Used in Swagger and Bulk Up.
+const union AffineAnimCmd gSpriteAffineAnim_83D7714[] =
+{
+ AFFINEANIMCMD_FRAME(-4, -5, 0, 12),
+ AFFINEANIMCMD_FRAME(0, 0, 0, 24),
+ AFFINEANIMCMD_FRAME(4, 5, 0, 12),
+ AFFINEANIMCMD_END,
+};
+
void sub_80D08C8(u8 taskId)
{
struct Task* task = &gTasks[taskId];
- u8 spriteId = GetAnimBankSpriteId(0);
- sub_80798F4(task, spriteId, &gUnknown_083D7714);
+ u8 spriteId = GetAnimBattlerSpriteId(0);
+ sub_80798F4(task, spriteId, &gSpriteAffineAnim_83D7714);
task->func = sub_80D0904;
}
-void sub_80D0904(u8 taskId)
+static void sub_80D0904(u8 taskId)
{
struct Task* task = &gTasks[taskId];
if (!sub_807992C(task))
diff --git a/src/battle/anim/guard.c b/src/battle/anim/guard.c
index 211e0e841..341f74372 100644
--- a/src/battle/anim/guard.c
+++ b/src/battle/anim/guard.c
@@ -8,9 +8,40 @@ extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
extern u16 gBattleTypeFlags;
+void sub_80D3014(struct Sprite *sprite);
+
// guard (moves guard rings upwards)
// Used in Safeguard.
+const union AffineAnimCmd gSpriteAffineAnim_83D7D4C[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D7D5C[] =
+{
+ AFFINEANIMCMD_FRAME(0x200, 0x100, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D7D6C[] =
+{
+ gSpriteAffineAnim_83D7D4C,
+ gSpriteAffineAnim_83D7D5C,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D7D74 =
+{
+ .tileTag = 10244,
+ .paletteTag = 10244,
+ .oam = &gOamData_837E13C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D7D6C,
+ .callback = sub_80D3014,
+};
+
void sub_80D3014(struct Sprite *sprite)
{
if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && IsAnimBankSpriteVisible(gAnimBankAttacker ^ 2))
@@ -22,8 +53,8 @@ void sub_80D3014(struct Sprite *sprite)
}
else
{
- sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 0);
- sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 1) + 40;
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 0);
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 1) + 40;
}
sprite->data[0] = 13;
diff --git a/src/battle/anim/guillotine.c b/src/battle/anim/guillotine.c
index 15279d5e2..eb1bc7733 100644
--- a/src/battle/anim/guillotine.c
+++ b/src/battle/anim/guillotine.c
@@ -8,6 +8,7 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80D0228(struct Sprite* sprite);
static void sub_80D02D0(struct Sprite* sprite);
static void sub_80D0344(struct Sprite* sprite);
static void sub_80D03A8(struct Sprite* sprite);
@@ -15,6 +16,39 @@ static void sub_80D03A8(struct Sprite* sprite);
// guillotine (does a reverse grip where the slices can reverse at a given period.)
// Used in Guillotine.
+const union AnimCmd gSpriteAnim_83D76B4[] =
+{
+ ANIMCMD_FRAME(0, 2),
+ ANIMCMD_FRAME(16, 2),
+ ANIMCMD_FRAME(32, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D76C4[] =
+{
+ ANIMCMD_FRAME(0, 2, .vFlip = TRUE, .hFlip = TRUE),
+ ANIMCMD_FRAME(16, 2, .vFlip = TRUE, .hFlip = TRUE),
+ ANIMCMD_FRAME(32, 1, .vFlip = TRUE, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D76D4[] =
+{
+ gSpriteAnim_83D76B4,
+ gSpriteAnim_83D76C4,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D76DC =
+{
+ .tileTag = 10138,
+ .paletteTag = 10138,
+ .oam = &gOamData_837E054,
+ .anims = gSpriteAnimTable_83D76D4,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D0228,
+};
+
void sub_80D0228(struct Sprite* sprite)
{
s16 r8 = 32;
@@ -34,16 +68,16 @@ void sub_80D0228(struct Sprite* sprite)
sprite->pos1.y += r4;
sprite->data[0] = 6;
sprite->data[1] = sprite->pos1.x;
- sprite->data[2] = GetBankPosition(gAnimBankTarget, 2) + r9;
+ sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2) + r9;
sprite->data[3] = sprite->pos1.y;
- sprite->data[4] = GetBankPosition(gAnimBankTarget, 3) + r6;
+ sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3) + r6;
InitAnimSpriteTranslationDeltas(sprite);
sprite->data[5] = gBattleAnimArgs[0];
sprite->data[6] = sprite->data[0];
sprite->callback = sub_80D02D0;
}
-void sub_80D02D0(struct Sprite* sprite)
+static void sub_80D02D0(struct Sprite* sprite)
{
if (TranslateAnimSpriteByDeltas(sprite) && sprite->animEnded == 1)
{
@@ -62,7 +96,7 @@ void sub_80D02D0(struct Sprite* sprite)
}
}
-void sub_80D0344(struct Sprite* sprite)
+static void sub_80D0344(struct Sprite* sprite)
{
if (sprite->data[3])
{
@@ -83,7 +117,7 @@ void sub_80D0344(struct Sprite* sprite)
}
}
-void sub_80D03A8(struct Sprite* sprite)
+static void sub_80D03A8(struct Sprite* sprite)
{
if (TranslateAnimSpriteByDeltas(sprite) != 0)
DestroyAnimSprite(sprite);
diff --git a/src/battle/anim/heal.c b/src/battle/anim/heal.c
index a8c14ea1c..c2bce0e77 100644
--- a/src/battle/anim/heal.c
+++ b/src/battle/anim/heal.c
@@ -7,9 +7,36 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80CBAA4(struct Sprite* sprite);
+
// heal (healing sparkles on a Pokemon)
// Used in Present, if the move heals instead of damages.
+const union AnimCmd gSpriteAnim_83D674C[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(4, 4),
+ ANIMCMD_FRAME(8, 4),
+ ANIMCMD_FRAME(12, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D6760[] =
+{
+ gSpriteAnim_83D674C,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D6764 =
+{
+ .tileTag = 10195,
+ .paletteTag = 10195,
+ .oam = &gOamData_837DF2C,
+ .anims = gSpriteAnimTable_83D6760,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CBAA4,
+};
+
void sub_80CBAA4(struct Sprite* sprite)
{
if (sprite->data[0] == 0)
diff --git a/src/battle/anim/heal_bell.c b/src/battle/anim/heal_bell.c
new file mode 100644
index 000000000..09029c9ff
--- /dev/null
+++ b/src/battle/anim/heal_bell.c
@@ -0,0 +1,132 @@
+#include "global.h"
+#include "rom_8077ABC.h"
+#include "trig.h"
+#include "battle_anim.h"
+#include "sound.h"
+#include "ewram.h"
+#include "palette.h"
+#include "decompress.h"
+
+extern s16 gBattleAnimArgs[];
+extern u8 gAnimBankAttacker;
+extern u8 gAnimBankTarget;
+
+extern const u8 gBattleAnimSpritePalette_206[];
+
+void sub_80D1C08(struct Sprite* sprite);
+
+// Used in Heal Bell.
+
+const union AnimCmd gSpriteAnim_83D7A08[] =
+{
+ ANIMCMD_FRAME(0, 6),
+ ANIMCMD_FRAME(16, 6),
+ ANIMCMD_FRAME(32, 15),
+ ANIMCMD_FRAME(16, 6),
+ ANIMCMD_FRAME(0, 6),
+ ANIMCMD_FRAME(16, 6, .hFlip = TRUE),
+ ANIMCMD_FRAME(32, 15, .hFlip = TRUE),
+ ANIMCMD_FRAME(16, 6, .hFlip = TRUE),
+ ANIMCMD_FRAME(0, 6),
+ ANIMCMD_FRAME(16, 6),
+ ANIMCMD_FRAME(32, 15),
+ ANIMCMD_FRAME(16, 6),
+ ANIMCMD_FRAME(0, 6),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D7A40[] =
+{
+ gSpriteAnim_83D7A08,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D7A44 =
+{
+ .tileTag = 10205,
+ .paletteTag = 10205,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D7A40,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80793C4,
+};
+
+const u16 gUnknown_083D7A5C[] =
+{
+ 10206,
+ 9999,
+ 9998,
+ 9997,
+ 9996,
+ 0,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D7A68 =
+{
+ .tileTag = 10206,
+ .paletteTag = 10206,
+ .oam = &gOamData_837DF2C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D1C08,
+};
+
+void sub_80D1ADC(u8 taskId)
+{
+ int i;
+ u8 sp[8];
+ void* src;
+ void* dest;
+ void* what;
+ sp[0] = IndexOfSpritePaletteTag(0x27DE);
+ for (i = 1; i <= 4; i++)
+ {
+ sp[i] = AllocSpritePalette(0x2710 - i);
+ }
+
+ src = &gBattleAnimSpritePalette_206;
+ dest = (IsContest()) ? gSharedMem + 0x18000 - 0x3800: gSharedMem + 0x18000;
+ LZDecompressWram(src, dest);
+ for (i = 0; i <= 4; i++)
+ {
+ what = ((IsContest()) ? gSharedMem + 0x14800 : gSharedMem + 0x18000) + (i << 5);
+ LoadPalette(what, (u16)((sp[i] << 4) + 0x100), 32);
+ }
+
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_80D1B80(u8 taskId)
+{
+ int i;
+ for (i = 0; i < 5; i++)
+ {
+ FreeSpritePaletteByTag(gUnknown_083D7A5C[i]);
+ }
+
+ DestroyAnimVisualTask(taskId);
+}
+
+static void sub_80D1BA8(struct Sprite* sprite, u8 a, u8 b)
+{
+ u8 tile;
+ tile = (b & 1);
+ tile = ((-tile | tile) >> 31) & 32;
+ sprite->oam.tileNum += tile + (a << 2);
+ sprite->oam.paletteNum = IndexOfSpritePaletteTag(gUnknown_083D7A5C[b >> 1]);
+}
+
+void sub_80D1C08(struct Sprite* sprite)
+{
+ InitAnimSpritePos(sprite, 0);
+ if (GetBattlerSide(gAnimBankAttacker) != 0)
+ gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+
+ sprite->data[0] = gBattleAnimArgs[4];
+ sprite->data[2] = GetBattlerSpriteCoord(gAnimBankAttacker, 0) + gBattleAnimArgs[2];
+ sprite->data[4] = GetBattlerSpriteCoord(gAnimBankAttacker, 1) + gBattleAnimArgs[3];
+ sprite->callback = StartTranslateAnimSpriteByDeltas;
+ StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
+ sub_80D1BA8(sprite, gBattleAnimArgs[5], gBattleAnimArgs[6]);
+}
diff --git a/src/battle/anim/heart_1.c b/src/battle/anim/heart_1.c
index 857169e62..5522d4551 100644
--- a/src/battle/anim/heart_1.c
+++ b/src/battle/anim/heart_1.c
@@ -8,9 +8,22 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80D1C80(struct Sprite* sprite);
+
// heart_1 (a floating heart in a wave pattern upward.)
// Used in Charm, Covet, and when a Pokemon is infatuated.
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D7A80 =
+{
+ .tileTag = 10210,
+ .paletteTag = 10210,
+ .oam = &gOamData_837DF2C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D1C80,
+};
+
void sub_80D1C80(struct Sprite* sprite)
{
if (++sprite->data[0] == 1)
diff --git a/src/battle/anim/heated_rock.c b/src/battle/anim/heated_rock.c
deleted file mode 100644
index 055960f40..000000000
--- a/src/battle/anim/heated_rock.c
+++ /dev/null
@@ -1,129 +0,0 @@
-#include "global.h"
-#include "battle_anim.h"
-#include "rom_8077ABC.h"
-
-extern s16 gBattleAnimArgs[8];
-extern u8 gAnimBankAttacker;
-extern u8 gAnimBankTarget;
-extern u16 gBattleTypeFlags;
-
-void sub_80D59B0(struct Sprite *);
-static void sub_80D5A74(struct Sprite *);
-
-// heated_rock (moves heated rock sprites)
-// Used in Eruption.
-
-void sub_80D58FC(struct Sprite *sprite)
-{
- sub_80D59B0(sprite);
-
- if (sprite->invisible)
- {
- gTasks[sprite->data[6]].data[sprite->data[7]]--;
- DestroySprite(sprite);
- }
-}
-
-u16 sub_80D5940(u8 spriteId)
-{
- u16 var1 = gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y + gSprites[spriteId].centerToCornerVecY;
-
- if (GetBankSide(gAnimBankAttacker) == 0)
- {
- var1 = ((var1 << 16) + 0x4A0000) >> 16;
- }
- else
- {
- var1 = ((var1 << 16) + 0x2C0000) >> 16;
- }
-
- return var1;
-}
-
-void sub_80D5994(struct Sprite *sprite, s16 x, s16 y)
-{
- sprite->data[0] = 0;
- sprite->data[1] = 0;
- sprite->data[2] = (u16)sprite->pos1.x * 8;
- sprite->data[3] = (u16)sprite->pos1.y * 8;
- sprite->data[4] = x * 8;
- sprite->data[5] = y * 8;
-}
-
-void sub_80D59B0(struct Sprite *sprite)
-{
- int var1;
- if (++sprite->data[0] > 2)
- {
- sprite->data[0] = 0;
- ++sprite->data[1];
- var1 = (u16)sprite->data[1] * (u16)sprite->data[1];
- sprite->data[3] += var1;
- }
-
- sprite->data[2] += sprite->data[4];
- sprite->pos1.x = sprite->data[2] >> 3;
- sprite->data[3] += sprite->data[5];
- sprite->pos1.y = sprite->data[3] >> 3;
-
- if (sprite->pos1.x < -8 || sprite->pos1.x > 0xf8 || sprite->pos1.y < -8 || sprite->pos1.y > 120)
- sprite->invisible = TRUE;
-}
-
-void sub_80D5A20(struct Sprite *sprite)
-{
- sprite->pos1.x = gBattleAnimArgs[0];
- sprite->pos1.y = gBattleAnimArgs[1];
-
- sprite->data[0] = 0;
- sprite->data[1] = 0;
- sprite->data[2] = 0;
- sprite->data[6] = gBattleAnimArgs[2];
- sprite->data[7] = gBattleAnimArgs[3];
-
- sprite->oam.tileNum += gBattleAnimArgs[4] * 16;
- sprite->callback = sub_80D5A74;
-}
-
-static void sub_80D5A74(struct Sprite *sprite)
-{
- switch (sprite->data[0])
- {
- case 0:
- if (sprite->data[6] != 0)
- {
- sprite->data[6]--;
- return;
- }
-
- sprite->data[0]++;
- // fall through
- case 1:
- sprite->pos1.y += 8;
- if (sprite->pos1.y >= sprite->data[7])
- {
- sprite->pos1.y = sprite->data[7];
- sprite->data[0]++;
- }
- break;
- case 2:
- if (++sprite->data[1] > 1)
- {
- sprite->data[1] = 0;
- if ((++sprite->data[2] & 1) != 0)
- {
- sprite->pos2.y = -3;
- }
- else
- {
- sprite->pos2.y = 3;
- }
- }
-
- if (++sprite->data[3] > 16)
- {
- DestroyAnimSprite(sprite);
- }
- break;
- }
-}
diff --git a/src/battle/anim/hidden_power_orbit.c b/src/battle/anim/hidden_power_orbit.c
new file mode 100644
index 000000000..ed680b2bd
--- /dev/null
+++ b/src/battle/anim/hidden_power_orbit.c
@@ -0,0 +1,120 @@
+#include "global.h"
+#include "rom_8077ABC.h"
+#include "trig.h"
+#include "battle_anim.h"
+#include "sound.h"
+
+extern s16 gBattleAnimArgs[];
+extern u8 gAnimBankAttacker;
+extern u8 gAnimBankTarget;
+
+void AnimOrbitFast(struct Sprite* sprite);
+void AnimOrbitScatter(struct Sprite* sprite);
+static void AnimOrbitFastStep(struct Sprite* sprite);
+static void AnimOrbitScatterStep(struct Sprite* sprite);
+
+const union AffineAnimCmd gSpriteAffineAnim_83D7AF8[] =
+{
+ AFFINEANIMCMD_FRAME(0x80, 0x80, 0, 0),
+ AFFINEANIMCMD_FRAME(0x8, 0x8, 0, 1),
+ AFFINEANIMCMD_JUMP(1),
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D7B10[] =
+{
+ gSpriteAffineAnim_83D7AF8,
+};
+
+const struct SpriteTemplate gHiddenPowerOrbSpriteTemplate =
+{
+ .tileTag = 10217,
+ .paletteTag = 10217,
+ .oam = &gOamData_837DF8C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D7B10,
+ .callback = AnimOrbitFast,
+};
+
+const struct SpriteTemplate gHiddenPowerOrbScatterSpriteTemplate =
+{
+ .tileTag = 10217,
+ .paletteTag = 10217,
+ .oam = &gOamData_837DFEC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D7B10,
+ .callback = AnimOrbitScatter,
+};
+
+// Orbits a sphere in an ellipse around the mon.
+// Used by MOVE_HIDDEN_POWER
+// arg 0: duration
+// arg 1: initial wave offset
+void AnimOrbitFast(struct Sprite* sprite)
+{
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 3);
+ sprite->affineAnimPaused = 1;
+ sprite->data[0] = gBattleAnimArgs[0];
+ sprite->data[1] = gBattleAnimArgs[1];
+ sprite->data[7] = sub_8079E90(gAnimBankAttacker);
+ sprite->callback = AnimOrbitFastStep;
+ sprite->callback(sprite);
+}
+
+static void AnimOrbitFastStep(struct Sprite* sprite)
+{
+ if ((u16)(sprite->data[1] - 0x40) <= 0x7F)
+ sprite->subpriority = sprite->data[7] + 1;
+ else
+ sprite->subpriority = sprite->data[7] - 1;
+
+ sprite->pos2.x = Sin(sprite->data[1], sprite->data[2] >> 8);
+ sprite->pos2.y = Cos(sprite->data[1], sprite->data[3] >> 8);
+ sprite->data[1] = (sprite->data[1] + 9) & 0xFF;
+ switch (sprite->data[5])
+ {
+ case 1:
+ sprite->data[2] -= 0x400;
+ sprite->data[3] -= 0x100;
+ if (++sprite->data[4] == sprite->data[0])
+ {
+ sprite->data[5] = 2;
+ return;
+ }
+ break;
+ case 0:
+ sprite->data[2] += 0x400;
+ sprite->data[3] += 0x100;
+ if (++sprite->data[4] == sprite->data[0])
+ {
+ sprite->data[4] = 0;
+ sprite->data[5] = 1;
+ }
+ break;
+ }
+
+ if ((u16)gBattleAnimArgs[7] == 0xFFFF)
+ DestroyAnimSprite(sprite);
+}
+
+// Moves orbs away from the mon, based on where they are in their orbit.
+// Used in MOVE_HIDDEN_POWER.
+// arg 0: initial wave offset
+void AnimOrbitScatter(struct Sprite* sprite)
+{
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 3);
+ sprite->data[0] = Sin(gBattleAnimArgs[0], 10);
+ sprite->data[1] = Cos(gBattleAnimArgs[0], 7);
+ sprite->callback = AnimOrbitScatterStep;
+}
+
+static void AnimOrbitScatterStep(struct Sprite* sprite)
+{
+ sprite->pos2.x += sprite->data[0];
+ sprite->pos2.y += sprite->data[1];
+ if (sprite->pos1.x + sprite->pos2.x + 16 > 0x110u || sprite->pos1.y + sprite->pos2.y > 0xA0 || sprite->pos1.y + sprite->pos2.y < -16)
+ DestroyAnimSprite(sprite);
+}
diff --git a/src/battle/anim/homing.c b/src/battle/anim/homing.c
index 208d3b831..5cd2a3ddb 100644
--- a/src/battle/anim/homing.c
+++ b/src/battle/anim/homing.c
@@ -8,11 +8,23 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80CC6CC(struct Sprite* sprite);
static void sub_80CC7D4(struct Sprite* sprite);
// homing (the spinning effect of sprites going inward in a static rotation.)
// Used by Needle Arm.
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D6994 =
+{
+ .tileTag = 10266,
+ .paletteTag = 10266,
+ .oam = &gOamData_837DF8C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CC6CC,
+};
+
void sub_80CC6CC(struct Sprite* sprite)
{
u8 a;
@@ -29,13 +41,13 @@ void sub_80CC6CC(struct Sprite* sprite)
{
if (gBattleAnimArgs[0] == 0)
{
- a = GetBankPosition(gAnimBankAttacker, 2);
- b = GetBankPosition(gAnimBankAttacker, 3);
+ a = GetBattlerSpriteCoord(gAnimBankAttacker, 2);
+ b = GetBattlerSpriteCoord(gAnimBankAttacker, 3);
}
else
{
- a = GetBankPosition(gAnimBankTarget, 2);
- b = GetBankPosition(gAnimBankTarget, 3);
+ a = GetBattlerSpriteCoord(gAnimBankTarget, 2);
+ b = GetBattlerSpriteCoord(gAnimBankTarget, 3);
}
sprite->data[0] = gBattleAnimArgs[4];
@@ -69,7 +81,7 @@ void sub_80CC6CC(struct Sprite* sprite)
}
}
-void sub_80CC7D4(struct Sprite* sprite)
+static void sub_80CC7D4(struct Sprite* sprite)
{
if (sprite->data[0])
{
diff --git a/src/battle/anim/hop.c b/src/battle/anim/hop.c
index 0697e83a0..3aba79511 100644
--- a/src/battle/anim/hop.c
+++ b/src/battle/anim/hop.c
@@ -7,9 +7,67 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80CB94C(struct Sprite* sprite);
+void sub_80CBA28(struct Sprite* sprite);
+
// hop (where a sprite "hops" across the screen)
// Used by Present, Trick, and the item knock off effect.
+const union AnimCmd gSpriteAnim_83D66B0[] =
+{
+ ANIMCMD_FRAME(0, 30),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D66B8[] =
+{
+ gSpriteAnim_83D66B0,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D66BC[] = {
+ AFFINEANIMCMD_FRAME(0, 0, -4, 10),
+ AFFINEANIMCMD_FRAME(0, 0, 4, 20),
+ AFFINEANIMCMD_FRAME(0, 0, -4, 10),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D66DC[] = {
+ AFFINEANIMCMD_FRAME(0, 0, -1, 2),
+ AFFINEANIMCMD_FRAME(0, 0, 1, 4),
+ AFFINEANIMCMD_FRAME(0, 0, -1, 4),
+ AFFINEANIMCMD_FRAME(0, 0, 1, 4),
+ AFFINEANIMCMD_FRAME(0, 0, -1, 4),
+ AFFINEANIMCMD_FRAME(0, 0, 1, 2),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D6714[] = {
+ gSpriteAffineAnim_83D66BC,
+ gSpriteAffineAnim_83D66DC,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D671C =
+{
+ .tileTag = 10224,
+ .paletteTag = 10224,
+ .oam = &gOamData_837DF94,
+ .anims = gSpriteAnimTable_83D66B8,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D6714,
+ .callback = sub_80CB94C,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D6734 =
+{
+ .tileTag = 10224,
+ .paletteTag = 10224,
+ .oam = &gOamData_837DF94,
+ .anims = gSpriteAnimTable_83D66B8,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D6714,
+ .callback = sub_80CBA28,
+};
+
void sub_80CB7EC(struct Sprite* sprite, s16 c)
{
s32 a = (sprite->pos1.x * 256) | sprite->pos1.y;
@@ -92,8 +150,8 @@ void sub_80CB94C(struct Sprite* sprite)
s16 e1;
s16 e2;
InitAnimSpritePos(sprite, 0);
- e1 = GetBankPosition(gAnimBankTarget, 0);
- e2 = GetBankPosition(gAnimBankTarget, 1);
+ e1 = GetBattlerSpriteCoord(gAnimBankTarget, 0);
+ e2 = GetBattlerSpriteCoord(gAnimBankTarget, 1);
if ((gAnimBankAttacker ^ 2) == gAnimBankTarget)
{
sprite->data[6] = e1;
@@ -135,8 +193,8 @@ void sub_80CB9C4(struct Sprite* sprite)
void sub_80CBA28(struct Sprite* sprite)
{
- s16 e = GetBankPosition(gAnimBankTarget, 1);
- if (GetBankSide(gAnimBankTarget) == 0)
+ s16 e = GetBattlerSpriteCoord(gAnimBankTarget, 1);
+ if (GetBattlerSide(gAnimBankTarget) == 0)
{
sprite->data[6] = 0;
sprite->data[7] = e + 10;
diff --git a/src/battle/anim/hop_2.c b/src/battle/anim/hop_2.c
index 1bc3f46af..ab239f3c4 100644
--- a/src/battle/anim/hop_2.c
+++ b/src/battle/anim/hop_2.c
@@ -11,19 +11,33 @@ extern u8 gAnimBankTarget;
extern void sub_80CB7EC(struct Sprite* sprite, s16 c);
extern bool8 sub_80CB814(struct Sprite* sprite);
extern void sub_80CB8B8(struct Sprite* sprite);
+extern const union AnimCmd *const gSpriteAnimTable_83D66B8[];
+extern const union AffineAnimCmd *const gSpriteAffineAnimTable_83D6714[];
+void sub_80CBAE8(struct Sprite* sprite);
static void sub_80CBB60(struct Sprite* sprite);
// hop_2
// Used in item steal.
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D677C =
+{
+ .tileTag = 10224,
+ .paletteTag = 10224,
+ .oam = &gOamData_837DF94,
+ .anims = gSpriteAnimTable_83D66B8,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D6714,
+ .callback = sub_80CBAE8,
+};
+
void sub_80CBAE8(struct Sprite* sprite)
{
s16 p1;
s16 p2;
sub_8078764(sprite, 0);
- p1 = GetBankPosition(gAnimBankAttacker, 0);
- p2 = GetBankPosition(gAnimBankAttacker, 1);
+ p1 = GetBattlerSpriteCoord(gAnimBankAttacker, 0);
+ p2 = GetBattlerSpriteCoord(gAnimBankAttacker, 1);
if ((gAnimBankTarget ^ 2) == gAnimBankAttacker)
{
sprite->data[6] = p1;
@@ -43,7 +57,7 @@ void sub_80CBAE8(struct Sprite* sprite)
sprite->callback = sub_80CBB60;
}
-void sub_80CBB60(struct Sprite* sprite)
+static void sub_80CBB60(struct Sprite* sprite)
{
int zero;
sprite->data[0] += ((sprite->data[3] * 128) / sprite->data[4]);
diff --git a/src/battle/anim/ice.c b/src/battle/anim/ice.c
new file mode 100644
index 000000000..50c8b9030
--- /dev/null
+++ b/src/battle/anim/ice.c
@@ -0,0 +1,495 @@
+#include "global.h"
+#include "rom_8077ABC.h"
+#include "battle_anim.h"
+
+extern s16 gBattleAnimArgs[];
+extern u8 gAnimBankAttacker;
+extern u8 gAnimBankTarget;
+
+void sub_80D7704(struct Sprite *sprite);
+void sub_80D78EC(struct Sprite *sprite);
+void sub_80D792C(struct Sprite *sprite);
+void sub_80D79B4(struct Sprite *sprite);
+void sub_80D7A64(struct Sprite *sprite);
+void sub_80D7CD4(struct Sprite *sprite);
+void sub_80D7E88(struct Sprite *sprite);
+void sub_80D7F10(struct Sprite *sprite);
+void sub_80D83E0(struct Sprite *sprite);
+void sub_80D8700(struct Sprite *sprite);
+void sub_80D8D1C(struct Sprite *sprite);
+void sub_807A9BC(struct Sprite *sprite);
+void unc_080B06FC(struct Sprite *sprite);
+void sub_80D8F10(struct Sprite *sprite);
+
+const union AnimCmd gSpriteAnim_83D9B58[] =
+{
+ ANIMCMD_FRAME(0, 5, .hFlip = TRUE),
+ ANIMCMD_FRAME(1, 5, .hFlip = TRUE),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D9B64[] =
+{
+ gSpriteAnim_83D9B58,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83D9B68 =
+{
+ .tileTag = 10141,
+ .paletteTag = 10141,
+ .oam = &gOamData_837DF24,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D7704,
+};
+
+const union AnimCmd gSpriteAnim_83D9B80[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D9B88[] =
+{
+ ANIMCMD_FRAME(4, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D9B90[] =
+{
+ ANIMCMD_FRAME(6, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D9B98[] =
+{
+ ANIMCMD_FRAME(7, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D9BA0[] =
+{
+ ANIMCMD_FRAME(8, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D9BA8[] =
+{
+ ANIMCMD_FRAME(12, 6),
+ ANIMCMD_FRAME(13, 6),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D9BB4[] =
+{
+ gSpriteAnim_83D9B80,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D9BB8[] =
+{
+ gSpriteAnim_83D9B88,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D9BBC[] =
+{
+ gSpriteAnim_83D9B90,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D9BC0[] =
+{
+ gSpriteAnim_83D9B98,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D9BC4[] =
+{
+ gSpriteAnim_83D9BA0,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D9BC8[] =
+{
+ gSpriteAnim_83D9BA8,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D9BCC[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 40, 1),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D9BDC[] =
+{
+ gSpriteAffineAnim_83D9BCC,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9BE0 =
+{
+ .tileTag = 10141,
+ .paletteTag = 10141,
+ .oam = &gOamData_837E144,
+ .anims = gSpriteAnimTable_83D9BB8,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D9BDC,
+ .callback = sub_80D78EC,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9BF8 =
+{
+ .tileTag = 10141,
+ .paletteTag = 10141,
+ .oam = &gOamData_837E044,
+ .anims = gSpriteAnimTable_83D9BBC,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D78EC,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D9C10[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 10, 1),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D9C20[] =
+{
+ gSpriteAffineAnim_83D9C10,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9C24 =
+{
+ .tileTag = 10141,
+ .paletteTag = 10141,
+ .oam = &gOamData_837E0E4,
+ .anims = gSpriteAnimTable_83D9BB8,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D9C20,
+ .callback = sub_80D792C,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9C3C =
+{
+ .tileTag = 10141,
+ .paletteTag = 10141,
+ .oam = &gOamData_837E044,
+ .anims = gSpriteAnimTable_83D9BBC,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D792C,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D9C54[] =
+{
+ AFFINEANIMCMD_FRAME(0xCE, 0xCE, 0, 0),
+ AFFINEANIMCMD_FRAME(0x5, 0x5, 0, 10),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 6),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D9C74[] =
+{
+ gSpriteAffineAnim_83D9C54,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9C78 =
+{
+ .tileTag = 10141,
+ .paletteTag = 10141,
+ .oam = &gOamData_837E0E4,
+ .anims = gSpriteAnimTable_83D9BB8,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D9C74,
+ .callback = sub_80D79B4,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9C90 =
+{
+ .tileTag = 10141,
+ .paletteTag = 10141,
+ .oam = &gOamData_837E0A4,
+ .anims = gSpriteAnimTable_83D9BBC,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D9C74,
+ .callback = sub_80D79B4,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9CA8 =
+{
+ .tileTag = 10141,
+ .paletteTag = 10141,
+ .oam = &gOamData_837DF24,
+ .anims = gSpriteAnimTable_83D9BC0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D7A64,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9CC0 =
+{
+ .tileTag = 10141,
+ .paletteTag = 10141,
+ .oam = &gOamData_837DF2C,
+ .anims = gSpriteAnimTable_83D9BC4,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D7CD4,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9CD8 =
+{
+ .tileTag = 10141,
+ .paletteTag = 10141,
+ .oam = &gOamData_837DF24,
+ .anims = gSpriteAnimTable_83D9BC0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D7CD4,
+};
+
+const union AnimCmd gSpriteAnim_83D9CF0[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_FRAME(2, 5),
+ ANIMCMD_FRAME(4, 5),
+ ANIMCMD_FRAME(6, 5),
+ ANIMCMD_FRAME(4, 5),
+ ANIMCMD_FRAME(2, 5),
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D9D10[] =
+{
+ gSpriteAnim_83D9CF0,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9D14 =
+{
+ .tileTag = 10142,
+ .paletteTag = 10142,
+ .oam = &gOamData_837E084,
+ .anims = gSpriteAnimTable_83D9D10,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D7E88,
+};
+
+const union AnimCmd gSpriteAnim_83D9D2C[] =
+{
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(8, 8),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D9D38[] =
+{
+ gSpriteAnim_83D9D2C,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9D3C =
+{
+ .tileTag = 10144,
+ .paletteTag = 10144,
+ .oam = &gOamData_837E074,
+ .anims = gSpriteAnimTable_83D9D38,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D7F10,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9D54 =
+{
+ .tileTag = 10172,
+ .paletteTag = 10172,
+ .oam = &gOamData_837E074,
+ .anims = gSpriteAnimTable_83D9D38,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D7F10,
+};
+
+const u8 gUnknown_083D9D6C[] =
+{
+ 0, 1, 2, 2, 2, 2, 3, 4, 4, 4, 5, 6, 6, 6, 6, 7, 8, 8, 8, 9,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9D80 =
+{
+ .tileTag = 10155,
+ .paletteTag = 10155,
+ .oam = &gOamData_837DF2C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D83E0,
+};
+
+const u8 gUnknown_083D9D98[] =
+{
+ 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9DAC =
+{
+ .tileTag = 10172,
+ .paletteTag = 10172,
+ .oam = &gOamData_837E074,
+ .anims = gSpriteAnimTable_83D9D38,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D8700,
+};
+
+// bitfield array
+const u32 gUnknown_083D9DC4[] =
+{
+ 0x2001E064,
+ 0x0001E055,
+ 0x1011E0F2,
+ 0x1021E042,
+ 0x0031E0B6,
+ 0x2001E03C,
+ 0x0011E0D6,
+ 0x1001E071,
+ 0x1031E0D2,
+ 0x0021E026,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D9DEC[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D9DFC[] =
+{
+ AFFINEANIMCMD_FRAME(0xF0, 0xF0, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D9E0C[] =
+{
+ AFFINEANIMCMD_FRAME(0xE0, 0xE0, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D9E1C[] =
+{
+ AFFINEANIMCMD_FRAME(0x150, 0x150, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D9E2C[] =
+{
+ gSpriteAffineAnim_83D9DEC,
+ gSpriteAffineAnim_83D9DFC,
+ gSpriteAffineAnim_83D9E0C,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D9E38[] =
+{
+ gSpriteAffineAnim_83D9E1C,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83D9E3C =
+{
+ .tileTag = 10263,
+ .paletteTag = 10263,
+ .oam = &gOamData_837DF8C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D9E2C,
+ .callback = sub_80D8D1C,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9E54 =
+{
+ .tileTag = 10263,
+ .paletteTag = 10263,
+ .oam = &gOamData_837DF8C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D9E38,
+ .callback = sub_807A9BC,
+};
+
+const union AnimCmd gSpriteAnim_83D9E6C[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D9E74[] =
+{
+ ANIMCMD_FRAME(16, 4),
+ ANIMCMD_FRAME(32, 4),
+ ANIMCMD_FRAME(48, 4),
+ ANIMCMD_FRAME(64, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D9E88[] =
+{
+ gSpriteAnim_83D9E6C,
+ gSpriteAnim_83D9E74,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D9E90[] =
+{
+ AFFINEANIMCMD_FRAME(0xE0, 0xE0, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D9EA0[] =
+{
+ AFFINEANIMCMD_FRAME(0x118, 0x118, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D9EB0[] =
+{
+ AFFINEANIMCMD_FRAME(0x150, 0x150, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D9EC0[] =
+{
+ AFFINEANIMCMD_FRAME(0x180, 0x180, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D9ED0[] =
+{
+ AFFINEANIMCMD_FRAME(0x1C0, 0x1C0, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D9EE0[] =
+{
+ gSpriteAffineAnim_83D9E90,
+ gSpriteAffineAnim_83D9EA0,
+ gSpriteAffineAnim_83D9EB0,
+ gSpriteAffineAnim_83D9EC0,
+ gSpriteAffineAnim_83D9ED0,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9EF4 =
+{
+ .tileTag = 10043,
+ .paletteTag = 10043,
+ .oam = &gOamData_837DFF4,
+ .anims = gSpriteAnimTable_83D9E88,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D9EE0,
+ .callback = unc_080B06FC,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9F0C =
+{
+ .tileTag = 10141,
+ .paletteTag = 10141,
+ .oam = &gOamData_837DF24,
+ .anims = gSpriteAnimTable_83D9BBC,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D8F10,
+};
diff --git a/src/battle/anim/kiss_fountain.c b/src/battle/anim/kiss_fountain.c
index d3270ee65..8ab3fcded 100644
--- a/src/battle/anim/kiss_fountain.c
+++ b/src/battle/anim/kiss_fountain.c
@@ -8,9 +8,22 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80D1FDC(struct Sprite* sprite);
+
// kiss_fountain (a series of hearts pour out of a target Pokemon.)
// Used in Attract and Sweet Kiss.
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D7AC8 =
+{
+ .tileTag = 10216,
+ .paletteTag = 10216,
+ .oam = &gOamData_837DF2C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D1FDC,
+};
+
void sub_80D1FDC(struct Sprite* sprite)
{
if (sprite->data[0] == 0)
diff --git a/src/battle/anim/leaf.c b/src/battle/anim/leaf.c
index 676734717..d31e4dbd6 100644
--- a/src/battle/anim/leaf.c
+++ b/src/battle/anim/leaf.c
@@ -1,29 +1,131 @@
#include "global.h"
+#include "battle.h"
+#include "battle_anim.h"
#include "rom_8077ABC.h"
#include "trig.h"
-#include "battle_anim.h"
extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80CAED8(struct Sprite* sprite);
+void AnimMoveTwisterParticle(struct Sprite* sprite);
+void AnimTranslateLinearSingleSineWave(struct Sprite* sprite);
static void sub_80CAF20(struct Sprite* sprite);
static void sub_80CAF6C(struct Sprite* sprite);
+static void AnimTranslateLinearSingleSineWaveStep(struct Sprite* sprite);
+static void AnimMoveTwisterParticleStep(struct Sprite* sprite);
// leaf
// Used by Razor Leaf and Twister.
+const union AnimCmd gSpriteAnim_83D6458[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_FRAME(4, 5),
+ ANIMCMD_FRAME(8, 5),
+ ANIMCMD_FRAME(12, 5),
+ ANIMCMD_FRAME(16, 5),
+ ANIMCMD_FRAME(20, 5),
+ ANIMCMD_FRAME(16, 5),
+ ANIMCMD_FRAME(12, 5),
+ ANIMCMD_FRAME(8, 5),
+ ANIMCMD_FRAME(4, 5),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gSpriteAnim_83D6484[] =
+{
+ ANIMCMD_FRAME(24, 5),
+ ANIMCMD_FRAME(28, 5),
+ ANIMCMD_FRAME(32, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D6494[] =
+{
+ gSpriteAnim_83D6458,
+ gSpriteAnim_83D6484,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D649C =
+{
+ .tileTag = 10063,
+ .paletteTag = 10063,
+ .oam = &gOamData_837DF2C,
+ .anims = gSpriteAnimTable_83D6494,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CAED8,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D64B4 =
+{
+ .tileTag = 10063,
+ .paletteTag = 10063,
+ .oam = &gOamData_837DF2C,
+ .anims = gSpriteAnimTable_83D6494,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimMoveTwisterParticle,
+};
+
+const union AnimCmd gSpriteAnim_83D64CC[] =
+{
+ ANIMCMD_FRAME(0, 3),
+ ANIMCMD_FRAME(0, 3, .hFlip = TRUE),
+ ANIMCMD_FRAME(0, 3, .vFlip = TRUE, .hFlip = TRUE),
+ ANIMCMD_FRAME(0, 3, .vFlip = TRUE),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D64E0[] =
+{
+ gSpriteAnim_83D64CC,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D64E4 =
+{
+ .tileTag = 10160,
+ .paletteTag = 10160,
+ .oam = &gOamData_837DF54,
+ .anims = gSpriteAnimTable_83D64E0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimTranslateLinearSingleSineWave,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D64FC[] = {
+ AFFINEANIMCMD_FRAME(0, 0, 0, 1),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D650C[] = {
+ gSpriteAffineAnim_83D64FC,
+};
+
+const struct SpriteTemplate gSwiftStarSpriteTemplate =
+{
+ .tileTag = 10174,
+ .paletteTag = 10174,
+ .oam = &gOamData_837DF94,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D650C,
+ .callback = AnimTranslateLinearSingleSineWave,
+};
+
void sub_80CAED8(struct Sprite* sprite)
{
- sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2);
- sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3);
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 3);
sprite->data[0] = gBattleAnimArgs[0];
sprite->data[1] = gBattleAnimArgs[1];
sprite->data[2] = gBattleAnimArgs[2];
sprite->callback = sub_80CAF20;
}
-void sub_80CAF20(struct Sprite* sprite)
+static void sub_80CAF20(struct Sprite* sprite)
{
if (!sprite->data[2])
{
@@ -49,9 +151,9 @@ void sub_80CAF20(struct Sprite* sprite)
}
}
-void sub_80CAF6C(struct Sprite* sprite)
+static void sub_80CAF6C(struct Sprite* sprite)
{
- if (GetBankSide(gAnimBankAttacker))
+ if (GetBattlerSide(gAnimBankAttacker))
{
sprite->pos2.x = -Sin(sprite->data[0], 0x19);
}
@@ -72,3 +174,135 @@ void sub_80CAF6C(struct Sprite* sprite)
DestroyAnimSprite(sprite);
}
}
+
+// Animates a sprite that moves linearly from one location to another, with a
+// single-cycle sine wave added to the y position along the way.
+// Used by Razor Leaf and Magical Leaf.
+// arg 0: initial x offset
+// arg 1: initial y offset
+// arg 2: target x offset
+// arg 3: target y offset
+// arg 4: translation duration
+// arg 5: wave amplitude
+// arg 6: target between double battle opponents (boolean)
+void AnimTranslateLinearSingleSineWave(struct Sprite* sprite)
+{
+ InitAnimSpritePos(sprite, 1);
+ if (GetBattlerSide(gAnimBankAttacker) != B_SIDE_PLAYER)
+ {
+ gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+ }
+
+ sprite->data[0] = gBattleAnimArgs[4];
+ if (!gBattleAnimArgs[6])
+ {
+ sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2) + gBattleAnimArgs[2];
+ sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3) + gBattleAnimArgs[3];
+ }
+ else
+ {
+ SetAverageBattlerPositions(gAnimBankTarget, 1, &sprite->data[2], &sprite->data[4]);
+ sprite->data[2] += gBattleAnimArgs[2];
+ sprite->data[4] += gBattleAnimArgs[3];
+ }
+
+ sprite->data[5] = gBattleAnimArgs[5];
+ InitAnimSpriteTranslationOverDuration(sprite);
+ if (GetBattlerSide(gAnimBankAttacker) == GetBattlerSide(gAnimBankTarget))
+ {
+ sprite->data[0] = 1;
+ }
+ else
+ {
+ sprite->data[0] = 0;
+ }
+
+ sprite->callback = AnimTranslateLinearSingleSineWaveStep;
+}
+
+static void AnimTranslateLinearSingleSineWaveStep(struct Sprite* sprite)
+{
+ bool8 destroy = FALSE;
+ s16 a = sprite->data[0];
+ s16 b = sprite->data[7];
+ s16 r0;
+
+ sprite->data[0] = 1;
+ TranslateAnimSpriteLinearAndSine(sprite);
+ r0 = sprite->data[7];
+ sprite->data[0] = a;
+ if (b > 0xC8 && r0 <= 0x37 && sprite->oam.affineParam == 0)
+ sprite->oam.affineParam++;
+
+ if (sprite->oam.affineParam != 0 && sprite->data[0] != 0)
+ {
+ sprite->invisible ^= 1;
+ sprite->oam.affineParam++;
+ if (sprite->oam.affineParam == 0x1E)
+ destroy = TRUE;
+ }
+
+ if (sprite->pos1.x + sprite->pos2.x > 256
+ || sprite->pos1.x + sprite->pos2.x < -16
+ || sprite->pos1.y + sprite->pos2.y > 160
+ || sprite->pos1.y + sprite->pos2.y < -16)
+ destroy = TRUE;
+
+ if (destroy)
+ DestroyAnimSprite(sprite);
+}
+
+// Animates particles in the Twister move animation.
+// arg 0: duration
+// arg 1: total y delta (the particles rise upward)
+// arg 2: wave period (higher means faster wave)
+// arg 3: wave amplitude
+// arg 4: speedup frame (particles move faster at the end of the animation)
+void AnimMoveTwisterParticle(struct Sprite* sprite)
+{
+ if (!IsContest() && IsDoubleBattle() == TRUE)
+ {
+ SetAverageBattlerPositions(gAnimBankTarget, 1, &sprite->pos1.x, &sprite->pos1.y);
+ }
+
+ sprite->pos1.y += 32;
+ sprite->data[0] = gBattleAnimArgs[0];
+ sprite->data[1] = gBattleAnimArgs[1];
+ sprite->data[2] = gBattleAnimArgs[2];
+ sprite->data[3] = gBattleAnimArgs[3];
+ sprite->data[4] = gBattleAnimArgs[4];
+ sprite->callback = AnimMoveTwisterParticleStep;
+}
+
+static void AnimMoveTwisterParticleStep(struct Sprite* sprite)
+{
+ if (sprite->data[1] == 0xFF)
+ {
+ sprite->pos1.y -= 2;
+ }
+ else if (sprite->data[1] > 0)
+ {
+ sprite->pos1.y -= 2;
+ sprite->data[1] -= 2;
+ }
+
+ sprite->data[5] += sprite->data[2];
+ if (sprite->data[0] < sprite->data[4])
+ sprite->data[5] += sprite->data[2];
+
+ sprite->data[5] &= 0xFF;
+ sprite->pos2.x = Cos(sprite->data[5], sprite->data[3]);
+ sprite->pos2.y = Sin(sprite->data[5], 5);
+ if (sprite->data[5] <= 0x7F)
+ {
+ sprite->oam.priority = sub_8079ED4(gAnimBankTarget) - 1;
+ }
+ else
+ {
+ sprite->oam.priority = sub_8079ED4(gAnimBankTarget) + 1;
+ }
+
+ sprite->data[0]--;
+ if (!sprite->data[0])
+ DestroyAnimSprite(sprite);
+}
diff --git a/src/battle/anim/love_bg.c b/src/battle/anim/love_bg.c
index c3828c681..72d9325f2 100644
--- a/src/battle/anim/love_bg.c
+++ b/src/battle/anim/love_bg.c
@@ -10,9 +10,9 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
-extern struct INCBIN_U8 gAttractTilemap;
-extern struct INCBIN_U8 gAttractGfx;
-extern struct INCBIN_U8 gAttractPal;
+extern const u8 gAttractTilemap[];
+extern const u8 gAttractGfx[];
+extern const u8 gAttractPal[];
extern u16 gBattle_BG1_Y;
extern u16 gBattle_BG1_X;
diff --git a/src/battle/anim/lunge.c b/src/battle/anim/lunge.c
new file mode 100644
index 000000000..13cabb422
--- /dev/null
+++ b/src/battle/anim/lunge.c
@@ -0,0 +1,339 @@
+#include "global.h"
+#include "rom_8077ABC.h"
+#include "trig.h"
+#include "battle_anim.h"
+#include "sound.h"
+
+extern s16 gBattleAnimArgs[];
+extern u8 gAnimBankAttacker;
+extern u8 gAnimBankTarget;
+
+extern u8 gBankSpriteIds[];
+
+void sub_80CD774(struct Sprite* sprite);
+void sub_80CD9C4(struct Sprite* sprite);
+static void sub_80CD7CC(struct Sprite* sprite);
+static void sub_80CD81C(struct Sprite* sprite);
+static void sub_80CD8A8(struct Sprite* sprite);
+static void sub_80CD8F8(struct Sprite* sprite);
+static void sub_80CD91C(struct Sprite* sprite);
+static void sub_80CD9B8(struct Sprite* sprite);
+static void sub_80CD9D4(struct Sprite* sprite);
+static void sub_80CDB60(u8 taskId);
+static void sub_80CDD20(u8 taskId);
+
+// lunge_1 (makes the pokemon sprite do a "lunge" where it leans back to attack, usually with its head or horn.)
+// Used in Drill Peck, Headbutt, Horn Attack, and Horn Drill.
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D6DE4 =
+{
+ .tileTag = 0,
+ .paletteTag = 0,
+ .oam = &gDummyOamData,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CD774,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83D6DFC =
+{
+ .tileTag = 0,
+ .paletteTag = 0,
+ .oam = &gDummyOamData,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CD9C4,
+};
+
+void sub_80CD774(struct Sprite* sprite)
+{
+ sprite->invisible = 1;
+ sprite->data[0] = 0;
+ switch (gBattleAnimArgs[0])
+ {
+ case 0:
+ sprite->callback = sub_80CD7CC;
+ break;
+ case 1:
+ sprite->callback = sub_80CD8A8;
+ break;
+ case 2:
+ sprite->callback = sub_80CD8F8;
+ break;
+ default:
+ sprite->callback = sub_80CD9B8;
+ break;
+ }
+}
+
+static void sub_80CD7CC(struct Sprite* sprite)
+{
+ sprite->data[0] = 6;
+ sprite->data[1] = (GetBattlerSide(gAnimBankAttacker)) ? 2 : -2;
+ sprite->data[2] = 0;
+ sprite->data[3] = gBankSpriteIds[gAnimBankAttacker];
+ StoreSpriteCallbackInData(sprite, sub_80CD81C);
+ sprite->callback = TranslateMonBGUntil;
+}
+
+static void sub_80CD81C(struct Sprite* sprite)
+{
+ if (sprite->data[0] == 0)
+ {
+ sprite->data[3] = gBankSpriteIds[gAnimBankAttacker];
+ sub_8078E70(sprite->data[3], 0);
+ sprite->data[4] = (sprite->data[6] = GetBattlerSide(gAnimBankAttacker)) ? 0x300 : 0xFFFFFD00;
+ sprite->data[5] = 0;
+ }
+
+ sprite->data[5] += sprite->data[4];
+ obj_id_set_rotscale(sprite->data[3], 0x100, 0x100, sprite->data[5]);
+ sub_8078F9C(sprite->data[3]);
+ if (++sprite->data[0] > 3)
+ {
+ sprite->data[0] = 0;
+ sprite->callback = sub_80CD9B8;
+ }
+}
+
+static void sub_80CD8A8(struct Sprite* sprite)
+{
+ sprite->data[0] = 4;
+ sprite->data[1] = (GetBattlerSide(gAnimBankAttacker)) ? -3 : 3;
+ sprite->data[2] = 0;
+ sprite->data[3] = gBankSpriteIds[gAnimBankAttacker];
+ StoreSpriteCallbackInData(sprite, sub_80CD9B8);
+ sprite->callback = TranslateMonBGUntil;
+}
+
+static void sub_80CD8F8(struct Sprite* sprite)
+{
+ if (++sprite->data[0] > 8)
+ {
+ sprite->data[0] = 0;
+ sprite->callback = sub_80CD91C;
+ }
+}
+
+static void sub_80CD91C(struct Sprite* sprite)
+{
+ if (sprite->data[0] == 0)
+ {
+ sprite->data[3] = gBankSpriteIds[gAnimBankAttacker];
+ sprite->data[6] = GetBattlerSide(gAnimBankAttacker);
+ if (GetBattlerSide(gAnimBankAttacker))
+ {
+ sprite->data[4] = 0xFC00;
+ sprite->data[5] = 0xC00;
+ }
+ else
+ {
+ sprite->data[4] = 0x400;
+ sprite->data[5] = 0xF400;
+ }
+ }
+
+ sprite->data[5] += sprite->data[4];
+ obj_id_set_rotscale(sprite->data[3], 0x100, 0x100, sprite->data[5]);
+ sub_8078F9C(sprite->data[3]);
+ if (++sprite->data[0] > 2)
+ {
+ sub_8078F40(sprite->data[3]);
+ sprite->callback = sub_80CD9B8;
+ }
+}
+
+static void sub_80CD9B8(struct Sprite* sprite)
+{
+ DestroyAnimSprite(sprite);
+}
+
+void sub_80CD9C4(struct Sprite* sprite)
+{
+ sprite->data[0] = 0;
+ sprite->callback = sub_80CD9D4;
+}
+
+static void sub_80CD9D4(struct Sprite* sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ sprite->data[1] = 0;
+ sprite->data[2] = gBankSpriteIds[gAnimBankAttacker];
+ sprite->data[3] = GetBattlerSide(gAnimBankAttacker);
+ sprite->data[4] = (sprite->data[3] != 0) ? 0x200 : -0x200;
+ sprite->data[5] = 0;
+ sub_8078E70(sprite->data[2], 0);
+ sprite->data[0]++;
+ case 1:
+ sprite->data[5] += sprite->data[4];
+ obj_id_set_rotscale(sprite->data[2], 0x100, 0x100, sprite->data[5]);
+ sub_8078F9C(sprite->data[2]);
+ if (++sprite->data[1] > 3)
+ {
+ sprite->data[1] = 0;
+ sprite->data[4] *= -1;
+ sprite->data[0]++;
+ }
+ break;
+ case 2:
+ sprite->data[5] += sprite->data[4];
+ obj_id_set_rotscale(sprite->data[2], 0x100, 0x100, sprite->data[5]);
+ sub_8078F9C(sprite->data[2]);
+ if (++sprite->data[1] > 3)
+ {
+ sub_8078F40(sprite->data[2]);
+ DestroyAnimSprite(sprite);
+ }
+ break;
+ }
+}
+
+void sub_80CDAC8(u8 taskId)
+{
+ u8 a;
+
+ gTasks[taskId].data[0] = gBankSpriteIds[gAnimBankAttacker];
+ a = GetBattlerSide(gAnimBankAttacker);
+ gTasks[taskId].data[1] = a;
+ gTasks[taskId].data[2] = 0;
+ switch (gBattleAnimArgs[0])
+ {
+ default:
+ DestroyAnimVisualTask(taskId);
+ break;
+ case 0:
+ gTasks[taskId].data[2] = 0;
+ gTasks[taskId].data[3] = 8;
+ gTasks[taskId].data[4] = 0;
+ gTasks[taskId].data[5] = 3;
+ if (a == 0)
+ gTasks[taskId].data[5] *= -1;
+
+ gTasks[taskId].func = sub_80CDB60;
+ break;
+ case 1:
+ gTasks[taskId].data[3] = 8;
+ gTasks[taskId].data[4] = 0x600;
+ gTasks[taskId].data[5] = 0xC0;
+ if (a == 0)
+ {
+ gTasks[taskId].data[4] = -gTasks[taskId].data[4];
+ gTasks[taskId].data[5] = -gTasks[taskId].data[5];
+ }
+
+ gTasks[taskId].func = sub_80CDD20;
+ break;
+ }
+}
+
+void sub_80CDB60(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+ switch (task->data[2])
+ {
+ case 0:
+ if (task->data[3])
+ {
+ task->data[4] += task->data[5];
+ gSprites[task->data[0]].pos2.x = task->data[4];
+ task->data[3]--;
+ }
+ else
+ {
+ task->data[3] = 8;
+ task->data[4] = 0;
+ task->data[5] = (task->data[1] == 0) ? -0xC0 : 0xC0;
+ sub_8078E70(task->data[0], 0);
+ task->data[2]++;
+ }
+ break;
+ case 1:
+ if (task->data[3])
+ {
+ task->data[4] += task->data[5];
+ obj_id_set_rotscale(task->data[0], 0x100, 0x100, task->data[4]);
+ sub_8078F9C(task->data[0]);
+ task->data[3]--;
+ }
+ else
+ {
+ task->data[3] = 8;
+ task->data[4] = gSprites[task->data[0]].pos2.x;
+ task->data[5] = (task->data[1] == 0) ? 0x2 : -0x2;
+ task->data[6] = 1;
+ task->data[2]++;
+ }
+ break;
+ case 2:
+ if (task->data[3])
+ {
+ if (task->data[6])
+ {
+ task->data[6]--;
+ }
+ else
+ {
+ if (task->data[3] & 1)
+ gSprites[task->data[0]].pos2.x = task->data[4] + task->data[5];
+ else
+ gSprites[task->data[0]].pos2.x = task->data[4] - task->data[5];
+
+ task->data[6] = 1;
+ task->data[3]--;
+ }
+ }
+ else
+ {
+ gSprites[task->data[0]].pos2.x = task->data[4];
+ task->data[3] = 12;
+ task->data[2]++;
+ }
+ break;
+ case 3:
+ if (task->data[3])
+ {
+ task->data[3]--;
+ }
+ else
+ {
+ task->data[3] = 3;
+ task->data[4] = gSprites[task->data[0]].pos2.x;
+ task->data[5] = (task->data[1] == 0) ? 8 : -8;
+ task->data[2]++;
+ }
+ break;
+ case 4:
+ if (task->data[3])
+ {
+ task->data[4] += task->data[5];
+ gSprites[task->data[0]].pos2.x = task->data[4];
+ task->data[3]--;
+ }
+ else
+ {
+ DestroyAnimVisualTask(taskId);
+ }
+ break;
+ }
+}
+
+void sub_80CDD20(u8 taskId)
+{
+ struct Task* task = &gTasks[taskId];
+ if (task->data[3])
+ {
+ task->data[4] -= task->data[5];
+ obj_id_set_rotscale(task->data[0], 0x100, 0x100, task->data[4]);
+ sub_8078F9C(task->data[0]);
+ task->data[3]--;
+ }
+ else
+ {
+ sub_8078F40(task->data[0]);
+ DestroyAnimVisualTask(taskId);
+ }
+}
diff --git a/src/battle/anim/lunge_1.c b/src/battle/anim/lunge_1.c
deleted file mode 100644
index a3b5f19c5..000000000
--- a/src/battle/anim/lunge_1.c
+++ /dev/null
@@ -1,124 +0,0 @@
-#include "global.h"
-#include "rom_8077ABC.h"
-#include "trig.h"
-#include "battle_anim.h"
-#include "sound.h"
-
-extern s16 gBattleAnimArgs[];
-extern u8 gAnimBankAttacker;
-extern u8 gAnimBankTarget;
-
-extern u8 gBankSpriteIds[];
-
-static void sub_80CD7CC(struct Sprite* sprite);
-static void sub_80CD81C(struct Sprite* sprite);
-static void sub_80CD8A8(struct Sprite* sprite);
-static void sub_80CD8F8(struct Sprite* sprite);
-static void sub_80CD91C(struct Sprite* sprite);
-static void sub_80CD9B8(struct Sprite* sprite);
-
-// lunge_1 (makes the pokemon sprite do a "lunge" where it leans back to attack, usually with its head or horn.)
-// Used in Drill Peck, Headbutt, Horn Attack, and Horn Drill.
-
-void sub_80CD774(struct Sprite* sprite)
-{
- sprite->invisible = 1;
- sprite->data[0] = 0;
- switch (gBattleAnimArgs[0])
- {
- case 0:
- sprite->callback = sub_80CD7CC;
- break;
- case 1:
- sprite->callback = sub_80CD8A8;
- break;
- case 2:
- sprite->callback = sub_80CD8F8;
- break;
- default:
- sprite->callback = sub_80CD9B8;
- break;
- }
-}
-
-void sub_80CD7CC(struct Sprite* sprite)
-{
- sprite->data[0] = 6;
- sprite->data[1] = (GetBankSide(gAnimBankAttacker)) ? 2 : -2;
- sprite->data[2] = 0;
- sprite->data[3] = gBankSpriteIds[gAnimBankAttacker];
- StoreSpriteCallbackInData(sprite, sub_80CD81C);
- sprite->callback = TranslateMonBGUntil;
-}
-
-void sub_80CD81C(struct Sprite* sprite)
-{
- if (sprite->data[0] == 0)
- {
- sprite->data[3] = gBankSpriteIds[gAnimBankAttacker];
- sub_8078E70(sprite->data[3], 0);
- sprite->data[4] = (sprite->data[6] = GetBankSide(gAnimBankAttacker)) ? 0x300 : 0xFFFFFD00;
- sprite->data[5] = 0;
- }
-
- sprite->data[5] += sprite->data[4];
- obj_id_set_rotscale(sprite->data[3], 0x100, 0x100, sprite->data[5]);
- sub_8078F9C(sprite->data[3]);
- if (++sprite->data[0] > 3)
- {
- sprite->data[0] = 0;
- sprite->callback = sub_80CD9B8;
- }
-}
-
-void sub_80CD8A8(struct Sprite* sprite)
-{
- sprite->data[0] = 4;
- sprite->data[1] = (GetBankSide(gAnimBankAttacker)) ? -3 : 3;
- sprite->data[2] = 0;
- sprite->data[3] = gBankSpriteIds[gAnimBankAttacker];
- StoreSpriteCallbackInData(sprite, sub_80CD9B8);
- sprite->callback = TranslateMonBGUntil;
-}
-
-void sub_80CD8F8(struct Sprite* sprite)
-{
- if (++sprite->data[0] > 8)
- {
- sprite->data[0] = 0;
- sprite->callback = sub_80CD91C;
- }
-}
-
-void sub_80CD91C(struct Sprite* sprite)
-{
- if (sprite->data[0] == 0)
- {
- sprite->data[3] = gBankSpriteIds[gAnimBankAttacker];
- sprite->data[6] = GetBankSide(gAnimBankAttacker);
- if (GetBankSide(gAnimBankAttacker))
- {
- sprite->data[4] = 0xFC00;
- sprite->data[5] = 0xC00;
- }
- else
- {
- sprite->data[4] = 0x400;
- sprite->data[5] = 0xF400;
- }
- }
-
- sprite->data[5] += sprite->data[4];
- obj_id_set_rotscale(sprite->data[3], 0x100, 0x100, sprite->data[5]);
- sub_8078F9C(sprite->data[3]);
- if (++sprite->data[0] > 2)
- {
- sub_8078F40(sprite->data[3]);
- sprite->callback = sub_80CD9B8;
- }
-}
-
-void sub_80CD9B8(struct Sprite* sprite)
-{
- DestroyAnimSprite(sprite);
-}
diff --git a/src/battle/anim/lunge_2.c b/src/battle/anim/lunge_2.c
deleted file mode 100644
index f222b291d..000000000
--- a/src/battle/anim/lunge_2.c
+++ /dev/null
@@ -1,163 +0,0 @@
-#include "global.h"
-#include "rom_8077ABC.h"
-#include "trig.h"
-#include "battle_anim.h"
-#include "sound.h"
-
-extern s16 gBattleAnimArgs[];
-extern u8 gAnimBankAttacker;
-extern u8 gAnimBankTarget;
-
-extern u8 gBankSpriteIds[];
-
-static void sub_80CDB60(u8 taskId);
-static void sub_80CDD20(u8 taskId);
-
-// lunge_2
-// Drill Peck
-
-void sub_80CDAC8(u8 taskId)
-{
- u8 a;
-
- gTasks[taskId].data[0] = gBankSpriteIds[gAnimBankAttacker];
- a = GetBankSide(gAnimBankAttacker);
- gTasks[taskId].data[1] = a;
- gTasks[taskId].data[2] = 0;
- switch (gBattleAnimArgs[0])
- {
- default:
- DestroyAnimVisualTask(taskId);
- break;
- case 0:
- gTasks[taskId].data[2] = 0;
- gTasks[taskId].data[3] = 8;
- gTasks[taskId].data[4] = 0;
- gTasks[taskId].data[5] = 3;
- if (a == 0)
- gTasks[taskId].data[5] *= -1;
-
- gTasks[taskId].func = sub_80CDB60;
- break;
- case 1:
- gTasks[taskId].data[3] = 8;
- gTasks[taskId].data[4] = 0x600;
- gTasks[taskId].data[5] = 0xC0;
- if (a == 0)
- {
- gTasks[taskId].data[4] = -gTasks[taskId].data[4];
- gTasks[taskId].data[5] = -gTasks[taskId].data[5];
- }
-
- gTasks[taskId].func = sub_80CDD20;
- break;
- }
-}
-
-void sub_80CDB60(u8 taskId)
-{
- struct Task *task = &gTasks[taskId];
- switch (task->data[2])
- {
- case 0:
- if (task->data[3])
- {
- task->data[4] += task->data[5];
- gSprites[task->data[0]].pos2.x = task->data[4];
- task->data[3]--;
- }
- else
- {
- task->data[3] = 8;
- task->data[4] = 0;
- task->data[5] = (task->data[1] == 0) ? -0xC0 : 0xC0;
- sub_8078E70(task->data[0], 0);
- task->data[2]++;
- }
- break;
- case 1:
- if (task->data[3])
- {
- task->data[4] += task->data[5];
- obj_id_set_rotscale(task->data[0], 0x100, 0x100, task->data[4]);
- sub_8078F9C(task->data[0]);
- task->data[3]--;
- }
- else
- {
- task->data[3] = 8;
- task->data[4] = gSprites[task->data[0]].pos2.x;
- task->data[5] = (task->data[1] == 0) ? 0x2 : -0x2;
- task->data[6] = 1;
- task->data[2]++;
- }
- break;
- case 2:
- if (task->data[3])
- {
- if (task->data[6])
- {
- task->data[6]--;
- }
- else
- {
- if (task->data[3] & 1)
- gSprites[task->data[0]].pos2.x = task->data[4] + task->data[5];
- else
- gSprites[task->data[0]].pos2.x = task->data[4] - task->data[5];
-
- task->data[6] = 1;
- task->data[3]--;
- }
- }
- else
- {
- gSprites[task->data[0]].pos2.x = task->data[4];
- task->data[3] = 12;
- task->data[2]++;
- }
- break;
- case 3:
- if (task->data[3])
- {
- task->data[3]--;
- }
- else
- {
- task->data[3] = 3;
- task->data[4] = gSprites[task->data[0]].pos2.x;
- task->data[5] = (task->data[1] == 0) ? 8 : -8;
- task->data[2]++;
- }
- break;
- case 4:
- if (task->data[3])
- {
- task->data[4] += task->data[5];
- gSprites[task->data[0]].pos2.x = task->data[4];
- task->data[3]--;
- }
- else
- {
- DestroyAnimVisualTask(taskId);
- }
- break;
- }
-}
-
-void sub_80CDD20(u8 taskId)
-{
- struct Task* task = &gTasks[taskId];
- if (task->data[3])
- {
- task->data[4] -= task->data[5];
- obj_id_set_rotscale(task->data[0], 0x100, 0x100, task->data[4]);
- sub_8078F9C(task->data[0]);
- task->data[3]--;
- }
- else
- {
- sub_8078F40(task->data[0]);
- DestroyAnimVisualTask(taskId);
- }
-}
diff --git a/src/battle/anim/money.c b/src/battle/anim/money.c
index c3d130750..3960b5e1a 100644
--- a/src/battle/anim/money.c
+++ b/src/battle/anim/money.c
@@ -8,11 +8,57 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80CFE9C(struct Sprite* sprite);
+void sub_80CFF50(struct Sprite* sprite);
static void sub_80CFF68(struct Sprite* sprite);
// money
// Used by Pay Day.
+const union AnimCmd gSpriteAnim_83D75C4[] =
+{
+ ANIMCMD_FRAME(8, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D75CC[] =
+{
+ gSpriteAnim_83D75C4,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D75D0[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 10, 1),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D75E0[] =
+{
+ gSpriteAffineAnim_83D75D0,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D75E4 =
+{
+ .tileTag = 10100,
+ .paletteTag = 10100,
+ .oam = &gOamData_837DF8C,
+ .anims = gSpriteAnimTable_83D75CC,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CFE9C,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D75FC =
+{
+ .tileTag = 10100,
+ .paletteTag = 10100,
+ .oam = &gOamData_837DF8C,
+ .anims = gSpriteAnimTable_83D75CC,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D75E0,
+ .callback = sub_80CFF50,
+};
+
void sub_80CFE9C(struct Sprite* sprite)
{
s16 r6;
@@ -20,9 +66,9 @@ void sub_80CFE9C(struct Sprite* sprite)
u16 var;
InitAnimSpritePos(sprite, 1);
- r6 = GetBankPosition(gAnimBankTarget, 2);
- r7 = GetBankPosition(gAnimBankTarget, 3) + gBattleAnimArgs[3];
- if (GetBankSide(gAnimBankAttacker) != 0)
+ r6 = GetBattlerSpriteCoord(gAnimBankTarget, 2);
+ r7 = GetBattlerSpriteCoord(gAnimBankTarget, 3) + gBattleAnimArgs[3];
+ if (GetBattlerSide(gAnimBankAttacker) != 0)
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
r6 += gBattleAnimArgs[2];
@@ -43,11 +89,11 @@ void sub_80CFF50(struct Sprite* sprite)
sprite->callback = sub_80CFF68;
}
-void sub_80CFF68(struct Sprite* sprite)
+static void sub_80CFF68(struct Sprite* sprite)
{
sprite->data[0] += 0x80;
sprite->pos2.x = sprite->data[0] >> 8;
- if (GetBankSide(gAnimBankAttacker) == 0)
+ if (GetBattlerSide(gAnimBankAttacker) == 0)
sprite->pos2.x = -sprite->pos2.x;
sprite->pos2.y = Sin(sprite->data[1], sprite->data[2]);
diff --git a/src/battle/anim/moon.c b/src/battle/anim/moon.c
index c532e8057..6e889008e 100644
--- a/src/battle/anim/moon.c
+++ b/src/battle/anim/moon.c
@@ -8,11 +8,23 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80CE30C(struct Sprite* sprite);
static void sub_80CE354(struct Sprite* sprite);
// moon (shows a moon image.)
// Used in Moonlight.
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D6FC8 =
+{
+ .tileTag = 10194,
+ .paletteTag = 10194,
+ .oam = &gOamData_837E05C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CE30C,
+};
+
void sub_80CE30C(struct Sprite* sprite)
{
if (IsContest())
@@ -32,7 +44,7 @@ void sub_80CE30C(struct Sprite* sprite)
sprite->callback = sub_80CE354;
}
-void sub_80CE354(struct Sprite* sprite)
+static void sub_80CE354(struct Sprite* sprite)
{
if (sprite->data[0])
DestroyAnimSprite(sprite);
diff --git a/src/battle/anim/musical.c b/src/battle/anim/musical.c
new file mode 100644
index 000000000..17836ace7
--- /dev/null
+++ b/src/battle/anim/musical.c
@@ -0,0 +1,393 @@
+#include "global.h"
+#include "rom_8077ABC.h"
+#include "trig.h"
+#include "battle_anim.h"
+#include "sound.h"
+#include "palette.h"
+
+extern s16 gBattleAnimArgs[];
+extern u8 gAnimBankAttacker;
+extern u8 gAnimBankTarget;
+
+void sub_80CEB0C(struct Sprite* sprite);
+void sub_80CECE8(struct Sprite* sprite);
+void sub_80CEDF0(struct Sprite* sprite);
+void sub_80CEE60(struct Sprite* sprite);
+static void sub_80CEBC4(s16 a, s16 b, s16* c, s16* d, s8 e);
+static void sub_80CEC1C(struct Sprite* sprite);
+static void sub_80CED78(struct Sprite* sprite);
+static void sub_80CEEE8(struct Sprite* sprite);
+
+const union AnimCmd gSpriteAnim_83D7098[] =
+{
+ ANIMCMD_FRAME(0, 10),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D70A0[] =
+{
+ ANIMCMD_FRAME(4, 10),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D70A8[] =
+{
+ ANIMCMD_FRAME(8, 41),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D70B0[] =
+{
+ ANIMCMD_FRAME(12, 10),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D70B8[] =
+{
+ ANIMCMD_FRAME(16, 10),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D70C0[] =
+{
+ ANIMCMD_FRAME(20, 10),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D70C8[] =
+{
+ ANIMCMD_FRAME(0, 10, .vFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D70D0[] =
+{
+ ANIMCMD_FRAME(4, 10, .vFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D70D8[] =
+{
+ gSpriteAnim_83D7098,
+ gSpriteAnim_83D70A0,
+ gSpriteAnim_83D70A8,
+ gSpriteAnim_83D70B0,
+ gSpriteAnim_83D70B8,
+ gSpriteAnim_83D70C0,
+ gSpriteAnim_83D70C8,
+ gSpriteAnim_83D70D0,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D70F8[] =
+{
+ AFFINEANIMCMD_FRAME(0xC, 0xC, 0, 16),
+ AFFINEANIMCMD_FRAME(0xFFF4, 0xFFF4, 0, 16),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D7110[] =
+{
+ gSpriteAffineAnim_83D70F8,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D7114 =
+{
+ .tileTag = 10072,
+ .paletteTag = 10072,
+ .oam = &gOamData_837DFEC,
+ .anims = gSpriteAnimTable_83D70D8,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D7110,
+ .callback = sub_80CEB0C,
+};
+
+const u16 gUnknown_083D712C[][6] =
+{
+ {10072, RGB(31, 31, 31), RGB(31, 26, 28), RGB(31, 22, 26), RGB(31, 17, 24), RGB(31, 13, 22)},
+ {10097, RGB(31, 31, 31), RGB(25, 31, 26), RGB(20, 31, 21), RGB(15, 31, 16), RGB(10, 31, 12)},
+ {10185, RGB(31, 31, 31), RGB(31, 31, 24), RGB(31, 31, 17), RGB(31, 31, 10), RGB(31, 31, 3)},
+ {10175, RGB(31, 31, 31), RGB(26, 28, 31), RGB(21, 26, 31), RGB(16, 24, 31), RGB(12, 22, 31)},
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D715C =
+{
+ .tileTag = 10072,
+ .paletteTag = 10072,
+ .oam = &gOamData_837DFEC,
+ .anims = gSpriteAnimTable_83D70D8,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D7110,
+ .callback = sub_80CECE8,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D7174 =
+{
+ .tileTag = 10193,
+ .paletteTag = 10193,
+ .oam = &gOamData_837DF34,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CEDF0,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D718C[] =
+{
+ AFFINEANIMCMD_FRAME(0xA0, 0xA0, 0, 0),
+ AFFINEANIMCMD_FRAME(0x4, 0x4, 0, 1),
+ AFFINEANIMCMD_JUMP(1),
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D71A4[] =
+{
+ gSpriteAffineAnim_83D718C,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D71A8 =
+{
+ .tileTag = 10072,
+ .paletteTag = 10072,
+ .oam = &gOamData_837DFEC,
+ .anims = gSpriteAnimTable_83D70D8,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D71A4,
+ .callback = sub_80CEE60,
+};
+
+// musical (music notes, drum)
+// Used by Grasswhistle, Belly Drum, and Sing.
+
+// rainbow effect for musical notes
+void sub_80CEA20(u8 taskId)
+{
+ u16 i;
+ u16 j;
+ u16 index;
+
+ index = IndexOfSpritePaletteTag(gUnknown_083D712C[0][0]);
+ if (index != 0xFF)
+ {
+ index = (index << 4) + 0x100;
+ for (i = 1; i < 6; i++)
+ {
+ gPlttBufferFaded[index + i] = gUnknown_083D712C[0][i];
+ }
+ }
+
+ for (j = 1; j < 4; j++)
+ {
+ index = AllocSpritePalette(gUnknown_083D712C[j][0]);
+ if (index != 0xFF)
+ {
+ index = (index << 4) + 0x100;
+ for (i = 1; i < 6; i++)
+ {
+ gPlttBufferFaded[index + i] = gUnknown_083D712C[j][i];
+ }
+ }
+ }
+ DestroyAnimVisualTask(taskId);
+}
+
+// clears the rainbow effect for musical notes.
+void sub_80CEAD8(u8 taskId)
+{
+ u16 i;
+ for (i = 1; i < 4; i++)
+ {
+ FreeSpritePaletteByTag(gUnknown_083D712C[i][0]);
+ }
+
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_80CEB0C(struct Sprite* sprite)
+{
+ u8 index;
+ u8 a;
+ u8 b;
+ sub_8078650(sprite);
+ StartSpriteAnim(sprite, gBattleAnimArgs[0]);
+ if ((index = IndexOfSpritePaletteTag(gUnknown_083D712C[gBattleAnimArgs[1]][0])) != 0xFF)
+ sprite->oam.paletteNum = index;
+
+ sprite->data[1] = gBattleAnimArgs[1];
+ sprite->data[2] = 0;
+ sprite->data[3] = gBattleAnimArgs[2];
+ if (IsContest())
+ {
+ a = 0x30;
+ b = 0x28;
+ }
+ else
+ {
+ a = GetBattlerSpriteCoord(gAnimBankTarget, 2);
+ b = GetBattlerSpriteCoord(gAnimBankTarget, 3);
+ }
+
+ sprite->data[4] = sprite->pos1.x << 4;
+ sprite->data[5] = sprite->pos1.y << 4;
+ sub_80CEBC4(a - sprite->pos1.x, b - sprite->pos1.y, &sprite->data[6], &sprite->data[7], 0x28);
+ sprite->callback = sub_80CEC1C;
+}
+
+static void sub_80CEBC4(s16 a, s16 b, s16* c, s16* d, s8 e)
+{
+ int f;
+ int g;
+ if (a < 0)
+ e = -e;
+
+ f = a << 8;
+ g = f / e;
+ if (g == 0)
+ g = 1;
+
+ *c = f / g;
+ *d = (b << 8) / g;
+}
+
+static void sub_80CEC1C(struct Sprite* sprite)
+{
+ int b;
+ s16 a;
+ int c;
+ u8 index;
+ sprite->data[0]++;
+ b = sprite->data[0] * 5 - ((sprite->data[0] * 5 / 256) << 8);
+ sprite->data[4] += sprite->data[6];
+ sprite->data[5] += sprite->data[7];
+ sprite->pos1.x = sprite->data[4] >> 4;
+ sprite->pos1.y = sprite->data[5] >> 4;
+ sprite->pos2.y = Sin(b, 15);
+ a = (u16)sprite->pos1.y;
+ c = (u16)sprite->pos1.x;
+
+ if ((u32)((c + 16) << 16) > (0x110) << 16 || a < -16 || a > 0x80)
+ {
+ move_anim_8074EE0(sprite);
+ }
+ else
+ {
+ if (sprite->data[3] && ++sprite->data[2] > sprite->data[3])
+ {
+ sprite->data[2] = 0;
+ if (++sprite->data[1] > 3)
+ sprite->data[1] = 0;
+
+ index = IndexOfSpritePaletteTag(gUnknown_083D712C[sprite->data[1]][0]);
+ if (index != 0xFF)
+ sprite->oam.paletteNum = index;
+ }
+ }
+}
+
+// note_scatter
+// Used by Teeter Dance.
+
+void sub_80CECE8(struct Sprite* sprite)
+{
+ int a;
+ if (GetBattlerSide(gAnimBankAttacker) == 1)
+ {
+ a = gBattleAnimArgs[1];
+ (u16)gBattleAnimArgs[1] = -a;
+ }
+
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 2) + gBattleAnimArgs[1];
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 3) + gBattleAnimArgs[2];
+ StartSpriteAnim(sprite, gBattleAnimArgs[0]);
+ sprite->data[2] = 0;
+ sprite->data[3] = 0;
+ sprite->data[4] = sprite->pos1.x << 4;
+ sprite->data[5] = sprite->pos1.y << 4;
+ sprite->data[6] = (gBattleAnimArgs[1] << 4) / 5;
+ sprite->data[7] = (gBattleAnimArgs[2] << 7) / 5;
+ sprite->callback = sub_80CED78;
+}
+
+static void sub_80CED78(struct Sprite* sprite)
+{
+ sprite->data[4] += sprite->data[6];
+ sprite->data[5] += sprite->data[7];
+ sprite->pos1.x = sprite->data[4] >> 4;
+ sprite->pos1.y = sprite->data[5] >> 4;
+ if (sprite->data[0] > 5 && sprite->data[3] == 0)
+ {
+ sprite->data[2] = (sprite->data[2] + 16) & 0xFF;
+ sprite->pos2.x = Cos(sprite->data[2], 18);
+ sprite->pos2.y = Sin(sprite->data[2], 18);
+ if (sprite->data[2] == 0)
+ sprite->data[3] = 1;
+ }
+
+ if (++sprite->data[0] == 0x30)
+ move_anim_8074EE0(sprite);
+}
+
+// drum (using hands to slap the Pokemon's belly in a rhythm.)
+// Used in Belly Drum.
+
+void sub_80CEDF0(struct Sprite* sprite)
+{
+ s16 a;
+ if (gBattleAnimArgs[0] == 1)
+ {
+ sprite->oam.matrixNum = 8;
+ a = 16;
+ }
+ else
+ {
+ a = -16;
+ }
+
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 2) + a;
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 3) + 8;
+ sprite->data[0] = 8;
+ sprite->callback = WaitAnimForDuration;
+ StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
+}
+
+// note_scatter_2 (slower scatter of notes.)
+// Used in Belly Drum.
+
+void sub_80CEE60(struct Sprite* sprite)
+{
+ s16 a;
+ u8 index;
+ sub_8078650(sprite);
+ sprite->pos1.y += 8;
+ StartSpriteAnim(sprite, gBattleAnimArgs[1]);
+ index = IndexOfSpritePaletteTag(gUnknown_083D712C[gBattleAnimArgs[2]][0]);
+ if (index != 0xFF)
+ sprite->oam.paletteNum = index;
+
+ a = (gBattleAnimArgs[0] == 0) ? 0xFFE0 : 0x20;
+ sprite->data[0] = 40;
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[2] = a + sprite->data[1];
+ sprite->data[3] = sprite->pos1.y;
+ sprite->data[4] = sprite->data[3] - 40;
+ InitAnimSpriteTranslationDeltas(sprite);
+ sprite->data[5] = gBattleAnimArgs[3];
+ sprite->callback = sub_80CEEE8;
+}
+
+static void sub_80CEEE8(struct Sprite* sprite)
+{
+ if (TranslateAnimSpriteByDeltas(sprite) == 0)
+ {
+ s16 a;
+ a = Sin(sprite->data[5], 8);
+ if (sprite->pos2.x < 0)
+ a = -a;
+
+ sprite->pos2.x += a;
+ sprite->pos2.y += Sin(sprite->data[5], 4);
+ sprite->data[5] = (sprite->data[5] + 8) & 0xFF;
+ }
+ else
+ {
+ DestroyAnimSprite(sprite);
+ }
+}
diff --git a/src/battle/anim/noise.c b/src/battle/anim/noise.c
index 369650d82..6a6f6c10a 100644
--- a/src/battle/anim/noise.c
+++ b/src/battle/anim/noise.c
@@ -6,23 +6,35 @@ extern s16 gBattleAnimArgs[8];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80D2D68(struct Sprite* sprite);
static void sub_80D2E30(struct Sprite *);
// noise (moving music note)
// Used in Uproar.
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D7CC8 =
+{
+ .tileTag = 10225,
+ .paletteTag = 10225,
+ .oam = &gOamData_837DF34,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D2D68,
+};
+
void sub_80D2D68(struct Sprite* sprite)
{
int var1;
u8 slot = gBattleAnimArgs[0] == 0 ? gAnimBankAttacker : gAnimBankTarget;
- if (GetBankSide(slot) == 1)
+ if (GetBattlerSide(slot) == 1)
{
gBattleAnimArgs[1] *= -1;
}
- sprite->pos1.x = GetBankPosition(slot, 2) + gBattleAnimArgs[1];
- sprite->pos1.y = GetBankPosition(slot, 3) + gBattleAnimArgs[2];
+ sprite->pos1.x = GetBattlerSpriteCoord(slot, 2) + gBattleAnimArgs[1];
+ sprite->pos1.y = GetBattlerSpriteCoord(slot, 3) + gBattleAnimArgs[2];
sprite->data[0] = 0;
sprite->data[1] = (u16)sprite->pos1.x << 3;
sprite->data[2] = (u16)sprite->pos1.y << 3;
diff --git a/src/battle/anim/normal.c b/src/battle/anim/normal.c
new file mode 100644
index 000000000..8303e7c68
--- /dev/null
+++ b/src/battle/anim/normal.c
@@ -0,0 +1,240 @@
+#include "global.h"
+#include "rom_8077ABC.h"
+#include "battle_anim.h"
+
+extern s16 gBattleAnimArgs[];
+extern u8 gAnimBankAttacker;
+extern u8 gAnimBankTarget;
+
+void sub_80E1CB4(struct Sprite *sprite);
+void sub_80E1D84(struct Sprite *sprite);
+void sub_80E1E2C(struct Sprite *sprite);
+void sub_80E1F3C(struct Sprite *sprite);
+void sub_80E24B8(struct Sprite *sprite);
+void sub_80E27A0(struct Sprite *sprite);
+void sub_80E2838(struct Sprite *sprite);
+void sub_80E27A0(struct Sprite *sprite);
+void sub_80E2870(struct Sprite *sprite);
+void sub_80E2908(struct Sprite *sprite);
+void sub_80E2978(struct Sprite *sprite);
+void sub_80E29C0(struct Sprite *sprite);
+void sub_80E27E8(struct Sprite *sprite);
+
+const union AnimCmd gSpriteAnim_83DB37C[] =
+{
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(4, 8),
+ ANIMCMD_FRAME(0, 8, .hFlip = TRUE),
+ ANIMCMD_FRAME(8, 8),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gSpriteAnim_83DB390[] =
+{
+ ANIMCMD_FRAME(0, 8, .hFlip = TRUE),
+ ANIMCMD_FRAME(4, 8),
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(8, 8),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gSpriteAnimTable_83DB3A4[] =
+{
+ gSpriteAnim_83DB37C,
+ gSpriteAnim_83DB390,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB3AC =
+{
+ .tileTag = 10073,
+ .paletteTag = 10073,
+ .oam = &gOamData_837DF2C,
+ .anims = gSpriteAnimTable_83DB3A4,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80E1CB4,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB3C4 =
+{
+ .tileTag = 0,
+ .paletteTag = 0,
+ .oam = &gDummyOamData,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80E1D84,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB3DC =
+{
+ .tileTag = 0,
+ .paletteTag = 0,
+ .oam = &gDummyOamData,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80E1E2C,
+};
+
+const union AnimCmd gSpriteAnim_83DB3F4[] =
+{
+ ANIMCMD_FRAME(0, 3),
+ ANIMCMD_FRAME(16, 3),
+ ANIMCMD_FRAME(32, 3),
+ ANIMCMD_FRAME(48, 3),
+ ANIMCMD_FRAME(64, 3),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gSpriteAnimTable_83DB40C[] =
+{
+ gSpriteAnim_83DB3F4,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83DB410 =
+{
+ .tileTag = 10071,
+ .paletteTag = 10071,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83DB40C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80E1F3C,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB428 =
+{
+ .tileTag = 0,
+ .paletteTag = 0,
+ .oam = &gDummyOamData,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80E24B8,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DB440[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 8),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DB450[] =
+{
+ AFFINEANIMCMD_FRAME(0xD8, 0xD8, 0, 0),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 8),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DB468[] =
+{
+ AFFINEANIMCMD_FRAME(0xB0, 0xB0, 0, 0),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 8),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DB480[] =
+{
+ AFFINEANIMCMD_FRAME(0x80, 0x80, 0, 0),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 8),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DB498[] =
+{
+ gSpriteAffineAnim_83DB440,
+ gSpriteAffineAnim_83DB450,
+ gSpriteAffineAnim_83DB468,
+ gSpriteAffineAnim_83DB480,
+};
+
+const struct SpriteTemplate gBasicHitSplatSpriteTemplate =
+{
+ .tileTag = 10135,
+ .paletteTag = 10135,
+ .oam = &gOamData_837E0B4,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DB498,
+ .callback = sub_80E27A0,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB4C0 =
+{
+ .tileTag = 10135,
+ .paletteTag = 10135,
+ .oam = &gOamData_837E0B4,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DB498,
+ .callback = sub_80E2838,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB4D8 =
+{
+ .tileTag = 10148,
+ .paletteTag = 10148,
+ .oam = &gOamData_837E0B4,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DB498,
+ .callback = sub_80E27A0,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB4F0 =
+{
+ .tileTag = 10135,
+ .paletteTag = 10135,
+ .oam = &gOamData_837E0B4,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DB498,
+ .callback = sub_80E2870,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB508 =
+{
+ .tileTag = 10135,
+ .paletteTag = 10135,
+ .oam = &gOamData_837E0B4,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DB498,
+ .callback = sub_80E2908,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB520 =
+{
+ .tileTag = 10285,
+ .paletteTag = 10285,
+ .oam = &gOamData_837E054,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80E2978,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB538 =
+{
+ .tileTag = 10135,
+ .paletteTag = 10135,
+ .oam = &gOamData_837DF94,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DB498,
+ .callback = sub_80E29C0,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB550 =
+{
+ .tileTag = 10135,
+ .paletteTag = 10135,
+ .oam = &gOamData_837E0B4,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DB498,
+ .callback = sub_80E27E8,
+};
+
+const u16 gUnknown_083DB568 = RGB(31, 31, 31);
diff --git a/src/battle/anim/note_rain.c b/src/battle/anim/note_rain.c
index 44817b0a0..26ae96c3a 100644
--- a/src/battle/anim/note_rain.c
+++ b/src/battle/anim/note_rain.c
@@ -8,30 +8,5 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
-extern u16 gUnknown_083D7A5C[5];
-
// note_rain (notes rain from a source point, usually a bell.)
// Used in Heal Bell.
-
-void sub_80D1BA8(struct Sprite* sprite, u8 a, u8 b)
-{
- u8 tile;
- tile = (b & 1);
- tile = ((-tile | tile) >> 31) & 32;
- sprite->oam.tileNum += tile + (a << 2);
- sprite->oam.paletteNum = IndexOfSpritePaletteTag(gUnknown_083D7A5C[b >> 1]);
-}
-
-void sub_80D1C08(struct Sprite* sprite)
-{
- InitAnimSpritePos(sprite, 0);
- if (GetBankSide(gAnimBankAttacker) != 0)
- gBattleAnimArgs[2] = -gBattleAnimArgs[2];
-
- sprite->data[0] = gBattleAnimArgs[4];
- sprite->data[2] = GetBankPosition(gAnimBankAttacker, 0) + gBattleAnimArgs[2];
- sprite->data[4] = GetBankPosition(gAnimBankAttacker, 1) + gBattleAnimArgs[3];
- sprite->callback = StartTranslateAnimSpriteByDeltas;
- StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
- sub_80D1BA8(sprite, gBattleAnimArgs[5], gBattleAnimArgs[6]);
-}
diff --git a/src/battle/anim/note_scatter.c b/src/battle/anim/note_scatter.c
deleted file mode 100644
index 8564c58fe..000000000
--- a/src/battle/anim/note_scatter.c
+++ /dev/null
@@ -1,54 +0,0 @@
-#include "global.h"
-#include "rom_8077ABC.h"
-#include "trig.h"
-#include "battle_anim.h"
-#include "sound.h"
-
-extern s16 gBattleAnimArgs[];
-extern u8 gAnimBankAttacker;
-extern u8 gAnimBankTarget;
-
-static void sub_80CED78(struct Sprite* sprite);
-
-// note_scatter
-// Used by Teeter Dance.
-
-void sub_80CECE8(struct Sprite* sprite)
-{
- int a;
- if (GetBankSide(gAnimBankAttacker) == 1)
- {
- a = gBattleAnimArgs[1];
- (u16)gBattleAnimArgs[1] = -a;
- }
-
- sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2) + gBattleAnimArgs[1];
- sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3) + gBattleAnimArgs[2];
- StartSpriteAnim(sprite, gBattleAnimArgs[0]);
- sprite->data[2] = 0;
- sprite->data[3] = 0;
- sprite->data[4] = sprite->pos1.x << 4;
- sprite->data[5] = sprite->pos1.y << 4;
- sprite->data[6] = (gBattleAnimArgs[1] << 4) / 5;
- sprite->data[7] = (gBattleAnimArgs[2] << 7) / 5;
- sprite->callback = sub_80CED78;
-}
-
-void sub_80CED78(struct Sprite* sprite)
-{
- sprite->data[4] += sprite->data[6];
- sprite->data[5] += sprite->data[7];
- sprite->pos1.x = sprite->data[4] >> 4;
- sprite->pos1.y = sprite->data[5] >> 4;
- if (sprite->data[0] > 5 && sprite->data[3] == 0)
- {
- sprite->data[2] = (sprite->data[2] + 16) & 0xFF;
- sprite->pos2.x = Cos(sprite->data[2], 18);
- sprite->pos2.y = Sin(sprite->data[2], 18);
- if (sprite->data[2] == 0)
- sprite->data[3] = 1;
- }
-
- if (++sprite->data[0] == 0x30)
- move_anim_8074EE0(sprite);
-}
diff --git a/src/battle/anim/note_scatter_2.c b/src/battle/anim/note_scatter_2.c
deleted file mode 100644
index 262afb8bf..000000000
--- a/src/battle/anim/note_scatter_2.c
+++ /dev/null
@@ -1,57 +0,0 @@
-#include "global.h"
-#include "rom_8077ABC.h"
-#include "trig.h"
-#include "battle_anim.h"
-#include "sound.h"
-
-extern s16 gBattleAnimArgs[];
-extern u8 gAnimBankAttacker;
-extern u8 gAnimBankTarget;
-
-extern u16 gUnknown_083D712C[4][6];
-
-static void sub_80CEEE8(struct Sprite* sprite);
-
-// note_scatter_2 (slower scatter of notes.)
-// Used in Belly Drum.
-
-void sub_80CEE60(struct Sprite* sprite)
-{
- s16 a;
- u8 index;
- sub_8078650(sprite);
- sprite->pos1.y += 8;
- StartSpriteAnim(sprite, gBattleAnimArgs[1]);
- index = IndexOfSpritePaletteTag(gUnknown_083D712C[gBattleAnimArgs[2]][0]);
- if (index != 0xFF)
- sprite->oam.paletteNum = index;
-
- a = (gBattleAnimArgs[0] == 0) ? 0xFFE0 : 0x20;
- sprite->data[0] = 40;
- sprite->data[1] = sprite->pos1.x;
- sprite->data[2] = a + sprite->data[1];
- sprite->data[3] = sprite->pos1.y;
- sprite->data[4] = sprite->data[3] - 40;
- InitAnimSpriteTranslationDeltas(sprite);
- sprite->data[5] = gBattleAnimArgs[3];
- sprite->callback = sub_80CEEE8;
-}
-
-void sub_80CEEE8(struct Sprite* sprite)
-{
- if (TranslateAnimSpriteByDeltas(sprite) == 0)
- {
- s16 a;
- a = Sin(sprite->data[5], 8);
- if (sprite->pos2.x < 0)
- a = -a;
-
- sprite->pos2.x += a;
- sprite->pos2.y += Sin(sprite->data[5], 4);
- sprite->data[5] = (sprite->data[5] + 8) & 0xFF;
- }
- else
- {
- DestroyAnimSprite(sprite);
- }
-}
diff --git a/src/battle/anim/note_spin.c b/src/battle/anim/note_spin.c
index 026ee1856..c3d6bdf52 100644
--- a/src/battle/anim/note_spin.c
+++ b/src/battle/anim/note_spin.c
@@ -7,12 +7,63 @@ extern s16 gBattleAnimArgs[8];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+extern const union AnimCmd *const gSpriteAnimTable_83D70D8[];
+
+void sub_80D2E68(struct Sprite *sprite);
+void sub_80D2EC8(struct Sprite *sprite);
static void sub_80D2F80(struct Sprite *);
static void sub_80D2FA4(struct Sprite *);
// note_spin (spins music notes around, and rotates them)
// Used in Perish Song.
+const union AffineAnimCmd gSpriteAffineAnim_83D7CE0[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 5),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D7CF0[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 16),
+ AFFINEANIMCMD_END_ALT(1),
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D7D00[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 16),
+ AFFINEANIMCMD_END_ALT(1),
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D7D10[] =
+{
+ gSpriteAffineAnim_83D7CE0,
+ gSpriteAffineAnim_83D7CF0,
+ gSpriteAffineAnim_83D7D00,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D7D1C =
+{
+ .tileTag = 10206,
+ .paletteTag = 10206,
+ .oam = &gOamData_837DF8C,
+ .anims = gSpriteAnimTable_83D70D8,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D7D10,
+ .callback = sub_80D2EC8,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D7D34 =
+{
+ .tileTag = 10206,
+ .paletteTag = 10206,
+ .oam = &gOamData_837DF8C,
+ .anims = gSpriteAnimTable_83D70D8,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D7D10,
+ .callback = sub_80D2E68,
+};
+
void sub_80D2E68(struct Sprite *sprite)
{
if (sprite->data[0] == 0)
diff --git a/src/battle/anim/note_wave.c b/src/battle/anim/note_wave.c
deleted file mode 100644
index 80ed2256f..000000000
--- a/src/battle/anim/note_wave.c
+++ /dev/null
@@ -1,143 +0,0 @@
-#include "global.h"
-#include "rom_8077ABC.h"
-#include "trig.h"
-#include "battle_anim.h"
-#include "sound.h"
-#include "palette.h"
-
-extern s16 gBattleAnimArgs[];
-extern u8 gAnimBankAttacker;
-extern u8 gAnimBankTarget;
-
-extern u16 gUnknown_083D712C[4][6];
-
-static void sub_80CEBC4(s16 a, s16 b, s16* c, s16* d, s8 e);
-static void sub_80CEC1C(struct Sprite* sprite);
-
-// note_wave
-// Used by Grasswhistle, Belly Drum, and Sing.
-
-// rainbow effect for musical notes
-void sub_80CEA20(u8 taskId)
-{
- u16 i;
- u16 j;
- u16 index;
-
- index = IndexOfSpritePaletteTag(gUnknown_083D712C[0][0]);
- if (index != 0xFF)
- {
- index = (index << 4) + 0x100;
- for (i = 1; i < 6; i++)
- {
- gPlttBufferFaded[index + i] = gUnknown_083D712C[0][i];
- }
- }
-
- for (j = 1; j < 4; j++)
- {
- index = AllocSpritePalette(gUnknown_083D712C[j][0]);
- if (index != 0xFF)
- {
- index = (index << 4) + 0x100;
- for (i = 1; i < 6; i++)
- {
- gPlttBufferFaded[index + i] = gUnknown_083D712C[j][i];
- }
- }
- }
- DestroyAnimVisualTask(taskId);
-}
-
-// clears the rainbow effect for musical notes.
-void sub_80CEAD8(u8 taskId)
-{
- u16 i;
- for (i = 1; i < 4; i++)
- {
- FreeSpritePaletteByTag(gUnknown_083D712C[i][0]);
- }
-
- DestroyAnimVisualTask(taskId);
-}
-
-void sub_80CEB0C(struct Sprite* sprite)
-{
- u8 index;
- u8 a;
- u8 b;
- sub_8078650(sprite);
- StartSpriteAnim(sprite, gBattleAnimArgs[0]);
- if ((index = IndexOfSpritePaletteTag(gUnknown_083D712C[gBattleAnimArgs[1]][0])) != 0xFF)
- sprite->oam.paletteNum = index;
-
- sprite->data[1] = gBattleAnimArgs[1];
- sprite->data[2] = 0;
- sprite->data[3] = gBattleAnimArgs[2];
- if (IsContest())
- {
- a = 0x30;
- b = 0x28;
- }
- else
- {
- a = GetBankPosition(gAnimBankTarget, 2);
- b = GetBankPosition(gAnimBankTarget, 3);
- }
-
- sprite->data[4] = sprite->pos1.x << 4;
- sprite->data[5] = sprite->pos1.y << 4;
- sub_80CEBC4(a - sprite->pos1.x, b - sprite->pos1.y, &sprite->data[6], &sprite->data[7], 0x28);
- sprite->callback = sub_80CEC1C;
-}
-
-void sub_80CEBC4(s16 a, s16 b, s16* c, s16* d, s8 e)
-{
- int f;
- int g;
- if (a < 0)
- e = -e;
-
- f = a << 8;
- g = f / e;
- if (g == 0)
- g = 1;
-
- *c = f / g;
- *d = (b << 8) / g;
-}
-
-void sub_80CEC1C(struct Sprite* sprite)
-{
- int b;
- s16 a;
- int c;
- u8 index;
- sprite->data[0]++;
- b = sprite->data[0] * 5 - ((sprite->data[0] * 5 / 256) << 8);
- sprite->data[4] += sprite->data[6];
- sprite->data[5] += sprite->data[7];
- sprite->pos1.x = sprite->data[4] >> 4;
- sprite->pos1.y = sprite->data[5] >> 4;
- sprite->pos2.y = Sin(b, 15);
- a = (u16)sprite->pos1.y;
- c = (u16)sprite->pos1.x;
-
- if ((u32)((c + 16) << 16) > (0x110) << 16 || a < -16 || a > 0x80)
- {
- move_anim_8074EE0(sprite);
- }
- else
- {
- if (sprite->data[3] && ++sprite->data[2] > sprite->data[3])
- {
- sprite->data[2] = 0;
- if (++sprite->data[1] > 3)
- sprite->data[1] = 0;
-
- index = IndexOfSpritePaletteTag(gUnknown_083D712C[sprite->data[1]][0]);
- if (index != 0xFF)
- sprite->oam.paletteNum = index;
- }
- }
-}
diff --git a/src/battle/anim/orbit.c b/src/battle/anim/orbit.c
index e7dd0df49..e76e0923e 100644
--- a/src/battle/anim/orbit.c
+++ b/src/battle/anim/orbit.c
@@ -7,12 +7,85 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80CABF8(struct Sprite* sprite);
+void sub_80CAD54(struct Sprite* sprite);
+void sub_80CAE20(struct Sprite* sprite);
static void sub_80CAC44(struct Sprite* sprite);
static void sub_80CADA8(struct Sprite* sprite);
static void sub_80CAE74(struct Sprite* sprite);
-// orbit (The effect of a sprite rotating around another one in a pseudo 3D effect.)
-// Used by Spore, Cotton Spore, and Petal Dance.
+const union AnimCmd gSpriteAnim_83D63E0[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D63E8[] =
+{
+ ANIMCMD_FRAME(4, 7),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D63F0[] =
+{
+ gSpriteAnim_83D63E0,
+ gSpriteAnim_83D63E8,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D63F8 =
+{
+ .tileTag = 10158,
+ .paletteTag = 10158,
+ .oam = &gOamData_837DF2C,
+ .anims = gSpriteAnimTable_83D63F0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CABF8,
+};
+
+const union AnimCmd gSpriteAnim_83D6410[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D6418[] =
+{
+ ANIMCMD_FRAME(4, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D6420[] =
+{
+ gSpriteAnim_83D6410,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D6424[] =
+{
+ gSpriteAnim_83D6418,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D6428 =
+{
+ .tileTag = 10159,
+ .paletteTag = 10159,
+ .oam = &gOamData_837DF2C,
+ .anims = gSpriteAnimTable_83D6420,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CAD54,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D6440 =
+{
+ .tileTag = 10159,
+ .paletteTag = 10159,
+ .oam = &gOamData_837DF24,
+ .anims = gSpriteAnimTable_83D6424,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CAE20,
+};
void sub_80CABF8(struct Sprite* sprite)
{
@@ -29,7 +102,7 @@ void sub_80CABF8(struct Sprite* sprite)
sub_80CAC44(sprite);
}
-void sub_80CAC44(struct Sprite* sprite)
+static void sub_80CAC44(struct Sprite* sprite)
{
u8 var1;
@@ -64,7 +137,7 @@ void sub_80CACEC(u8 taskId)
}
else
{
- if (GetBankIdentity_permutated(gAnimBankTarget) == 1)
+ if (GetBattlerPosition_permutated(gAnimBankTarget) == 1)
{
REG_BG2CNT_BITFIELD.priority = 3;
}
@@ -84,14 +157,14 @@ void sub_80CAD54(struct Sprite* sprite)
sprite->data[1] = sprite->pos1.x;
sprite->data[2] = sprite->pos1.x;
sprite->data[3] = sprite->pos1.y;
- sprite->data[4] = GetBankPosition(gAnimBankAttacker, 3) + gBattleAnimArgs[2];
+ sprite->data[4] = GetBattlerSpriteCoord(gAnimBankAttacker, 3) + gBattleAnimArgs[2];
InitAnimSpriteTranslationDeltas(sprite);
sprite->data[5] = 0x40;
sprite->callback = sub_80CADA8;
sub_80CADA8(sprite);
}
-void sub_80CADA8(struct Sprite* sprite)
+static void sub_80CADA8(struct Sprite* sprite)
{
if (!TranslateAnimSpriteByDeltas(sprite))
{
@@ -121,14 +194,14 @@ void sub_80CAE20(struct Sprite* sprite)
sprite->data[1] = sprite->pos1.x;
sprite->data[2] = sprite->pos1.x;
sprite->data[3] = sprite->pos1.y;
- sprite->data[4] = GetBankPosition(gAnimBankAttacker, 3) + gBattleAnimArgs[2];
+ sprite->data[4] = GetBattlerSpriteCoord(gAnimBankAttacker, 3) + gBattleAnimArgs[2];
InitAnimSpriteTranslationDeltas(sprite);
sprite->data[5] = 0x40;
sprite->callback = sub_80CAE74;
sub_80CAE74(sprite);
}
-void sub_80CAE74(struct Sprite* sprite)
+static void sub_80CAE74(struct Sprite* sprite)
{
if (!TranslateAnimSpriteByDeltas(sprite))
{
diff --git a/src/battle/anim/orbit_fast.c b/src/battle/anim/orbit_fast.c
deleted file mode 100644
index 71303b03c..000000000
--- a/src/battle/anim/orbit_fast.c
+++ /dev/null
@@ -1,63 +0,0 @@
-#include "global.h"
-#include "rom_8077ABC.h"
-#include "trig.h"
-#include "battle_anim.h"
-#include "sound.h"
-
-extern s16 gBattleAnimArgs[];
-extern u8 gAnimBankAttacker;
-extern u8 gAnimBankTarget;
-
-static void AnimOrbitFastStep(struct Sprite* sprite);
-
-// Orbits a sphere in an ellipse around the mon.
-// Used by MOVE_HIDDEN_POWER
-// arg 0: duration
-// arg 1: initial wave offset
-void AnimOrbitFast(struct Sprite* sprite)
-{
- sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2);
- sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3);
- sprite->affineAnimPaused = 1;
- sprite->data[0] = gBattleAnimArgs[0];
- sprite->data[1] = gBattleAnimArgs[1];
- sprite->data[7] = sub_8079E90(gAnimBankAttacker);
- sprite->callback = AnimOrbitFastStep;
- sprite->callback(sprite);
-}
-
-static void AnimOrbitFastStep(struct Sprite* sprite)
-{
- if ((u16)(sprite->data[1] - 0x40) <= 0x7F)
- sprite->subpriority = sprite->data[7] + 1;
- else
- sprite->subpriority = sprite->data[7] - 1;
-
- sprite->pos2.x = Sin(sprite->data[1], sprite->data[2] >> 8);
- sprite->pos2.y = Cos(sprite->data[1], sprite->data[3] >> 8);
- sprite->data[1] = (sprite->data[1] + 9) & 0xFF;
- switch (sprite->data[5])
- {
- case 1:
- sprite->data[2] -= 0x400;
- sprite->data[3] -= 0x100;
- if (++sprite->data[4] == sprite->data[0])
- {
- sprite->data[5] = 2;
- return;
- }
- break;
- case 0:
- sprite->data[2] += 0x400;
- sprite->data[3] += 0x100;
- if (++sprite->data[4] == sprite->data[0])
- {
- sprite->data[4] = 0;
- sprite->data[5] = 1;
- }
- break;
- }
-
- if ((u16)gBattleAnimArgs[7] == 0xFFFF)
- DestroyAnimSprite(sprite);
-}
diff --git a/src/battle/anim/orbit_scatter.c b/src/battle/anim/orbit_scatter.c
deleted file mode 100644
index cda09a729..000000000
--- a/src/battle/anim/orbit_scatter.c
+++ /dev/null
@@ -1,31 +0,0 @@
-#include "global.h"
-#include "rom_8077ABC.h"
-#include "trig.h"
-#include "battle_anim.h"
-#include "sound.h"
-
-extern s16 gBattleAnimArgs[];
-extern u8 gAnimBankAttacker;
-extern u8 gAnimBankTarget;
-
-static void AnimOrbitScatterStep(struct Sprite* sprite);
-
-// Moves orbs away from the mon, based on where they are in their orbit.
-// Used in MOVE_HIDDEN_POWER.
-// arg 0: initial wave offset
-void AnimOrbitScatter(struct Sprite* sprite)
-{
- sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2);
- sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3);
- sprite->data[0] = Sin(gBattleAnimArgs[0], 10);
- sprite->data[1] = Cos(gBattleAnimArgs[0], 7);
- sprite->callback = AnimOrbitScatterStep;
-}
-
-static void AnimOrbitScatterStep(struct Sprite* sprite)
-{
- sprite->pos2.x += sprite->data[0];
- sprite->pos2.y += sprite->data[1];
- if (sprite->pos1.x + sprite->pos2.x + 16 > 0x110u || sprite->pos1.y + sprite->pos2.y > 0xA0 || sprite->pos1.y + sprite->pos2.y < -16)
- DestroyAnimSprite(sprite);
-}
diff --git a/src/battle/anim/orbs.c b/src/battle/anim/orbs.c
index 6f1bba9c3..af6568bd8 100644
--- a/src/battle/anim/orbs.c
+++ b/src/battle/anim/orbs.c
@@ -8,11 +8,184 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80CA7B0(struct Sprite* sprite);
+void sub_80CA800(struct Sprite* sprite);
+void sub_80CA858(struct Sprite* sprite);
+void sub_80CA9A8(struct Sprite* sprite);
+void sub_80CAA14(struct Sprite* sprite);
static void sub_80CA8B4(struct Sprite* sprite);
static void sub_80CA9F8(struct Sprite* sprite);
static void sub_80CAACC(struct Sprite* sprite);
-extern struct SpriteTemplate gSpriteTemplate_83D631C;
+const union AnimCmd gSpriteAnim_83D626C[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D6274[] =
+{
+ ANIMCMD_FRAME(1, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D627C[] =
+{
+ ANIMCMD_FRAME(2, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D6284[] =
+{
+ ANIMCMD_FRAME(3, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D628C[] =
+{
+ ANIMCMD_FRAME(4, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D6294[] =
+{
+ ANIMCMD_FRAME(5, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D629C[] =
+{
+ ANIMCMD_FRAME(6, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D62A4[] =
+{
+ ANIMCMD_FRAME(7, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D62AC[] =
+{
+ ANIMCMD_FRAME(8, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D62B4[] =
+{
+ gSpriteAnim_83D626C,
+ gSpriteAnim_83D6274,
+ gSpriteAnim_83D627C,
+ gSpriteAnim_83D6284,
+ gSpriteAnim_83D628C,
+ gSpriteAnim_83D6294,
+ gSpriteAnim_83D629C,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D62D0[] =
+{
+ gSpriteAnim_83D62A4,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D62D4[] =
+{
+ gSpriteAnim_83D62AC,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D62D8[] = {
+ AFFINEANIMCMD_FRAME(-5, -5, 0, 1),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D62E8[] = {
+ gSpriteAffineAnim_83D62D8,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D62EC =
+{
+ .tileTag = 10147,
+ .paletteTag = 10147,
+ .oam = &gOamData_837E0AC,
+ .anims = gSpriteAnimTable_83D62D4,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D62E8,
+ .callback = sub_80CA7B0,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D6304 =
+{
+ .tileTag = 10147,
+ .paletteTag = 10147,
+ .oam = &gOamData_837DF24,
+ .anims = gSpriteAnimTable_83D62B4,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CA800,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83D631C =
+{
+ .tileTag = 10147,
+ .paletteTag = 10147,
+ .oam = &gOamData_837DF24,
+ .anims = gSpriteAnimTable_83D62D0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CA858,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D6334[] = {
+ AFFINEANIMCMD_FRAME(320, 320, 0, 0),
+ AFFINEANIMCMD_FRAME(-14, -14, 0, 1),
+ AFFINEANIMCMD_JUMP(1),
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D634C[] = {
+ gSpriteAffineAnim_83D6334,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D6350 =
+{
+ .tileTag = 10235,
+ .paletteTag = 10235,
+ .oam = &gOamData_837DFE4,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D634C,
+ .callback = sub_80CA7B0,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D6368[] = {
+ AFFINEANIMCMD_FRAME(-5, -5, 0, 1),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D6378[] = {
+ gSpriteAffineAnim_83D6368,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D637C =
+{
+ .tileTag = 10147,
+ .paletteTag = 10147,
+ .oam = &gOamData_837E0AC,
+ .anims = gSpriteAnimTable_83D62D4,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D6378,
+ .callback = sub_80CA9A8,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D6394 =
+{
+ .tileTag = 10147,
+ .paletteTag = 10147,
+ .oam = &gOamData_837DF24,
+ .anims = gSpriteAnimTable_83D62B4,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CAA14,
+};
+
// orbs
// Used by Solar Beam, Absorb, Hyper Beam, and Leech Seed.
@@ -21,8 +194,8 @@ void sub_80CA7B0(struct Sprite* sprite)
{
InitAnimSpritePos(sprite, 1);
sprite->data[0] = gBattleAnimArgs[2];
- sprite->data[2] = GetBankPosition(gAnimBankAttacker, 2);
- sprite->data[4] = GetBankPosition(gAnimBankAttacker, 3);
+ sprite->data[2] = GetBattlerSpriteCoord(gAnimBankAttacker, 2);
+ sprite->data[4] = GetBattlerSpriteCoord(gAnimBankAttacker, 3);
sprite->callback = StartTranslateAnimSpriteByDeltas;
StoreSpriteCallbackInData(sprite, move_anim_8074EE0);
}
@@ -32,8 +205,8 @@ void sub_80CA800(struct Sprite* sprite)
InitAnimSpritePos(sprite, 1);
StartSpriteAnim(sprite, gBattleAnimArgs[3]);
sprite->data[0] = gBattleAnimArgs[2];
- sprite->data[2] = GetBankPosition(gAnimBankTarget, 2);
- sprite->data[4] = GetBankPosition(gAnimBankTarget, 3);
+ sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2);
+ sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3);
sprite->callback = StartTranslateAnimSpriteByDeltas;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
}
@@ -43,16 +216,16 @@ void sub_80CA858(struct Sprite* sprite)
InitAnimSpritePos(sprite, 1);
sprite->data[0] = gBattleAnimArgs[2];
sprite->data[1] = sprite->pos1.x;
- sprite->data[2] = GetBankPosition(gAnimBankTarget, 2);
+ sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2);
sprite->data[3] = sprite->pos1.y;
- sprite->data[4] = GetBankPosition(gAnimBankTarget, 3);
+ sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3);
InitAnimSpriteTranslationDeltas(sprite);
sprite->data[5] = gBattleAnimArgs[3];
sprite->callback = sub_80CA8B4;
sub_80CA8B4(sprite);
}
-void sub_80CA8B4(struct Sprite* sprite)
+static void sub_80CA8B4(struct Sprite* sprite)
{
if (TranslateAnimSpriteByDeltas(sprite))
{
@@ -96,14 +269,14 @@ void sub_80CA9A8(struct Sprite* sprite)
{
sub_8078764(sprite, 1);
sprite->data[0] = gBattleAnimArgs[3];
- sprite->data[2] = GetBankPosition(gAnimBankAttacker, 2);
- sprite->data[4] = GetBankPosition(gAnimBankAttacker, 3);
+ sprite->data[2] = GetBattlerSpriteCoord(gAnimBankAttacker, 2);
+ sprite->data[4] = GetBattlerSpriteCoord(gAnimBankAttacker, 3);
sprite->data[5] = gBattleAnimArgs[2];
InitAnimSpriteTranslationOverDuration(sprite);
sprite->callback = sub_80CA9F8;
}
-void sub_80CA9F8(struct Sprite* sprite)
+static void sub_80CA9F8(struct Sprite* sprite)
{
if (TranslateAnimSpriteLinearAndSine(sprite))
DestroyAnimSprite(sprite);
@@ -115,9 +288,9 @@ void sub_80CAA14(struct Sprite* sprite)
u16 b;
StartSpriteAnim(sprite, a & 7);
- sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2);
- sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3);
- if (GetBankSide(gAnimBankAttacker))
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 3);
+ if (GetBattlerSide(gAnimBankAttacker))
{
sprite->pos1.x -= 20;
}
@@ -129,9 +302,9 @@ void sub_80CAA14(struct Sprite* sprite)
b = Random();
sprite->data[0] = (b & 31) + 64;
sprite->data[1] = sprite->pos1.x;
- sprite->data[2] = GetBankPosition(gAnimBankTarget, 2);
+ sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2);
sprite->data[3] = sprite->pos1.y;
- sprite->data[4] = GetBankPosition(gAnimBankTarget, 3);
+ sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3);
sub_8078D60(sprite);
sprite->data[5] = Random() & 0xFF;
sprite->data[6] = sprite->subpriority;
@@ -139,7 +312,7 @@ void sub_80CAA14(struct Sprite* sprite)
sub_80CAACC(sprite);
}
-void sub_80CAACC(struct Sprite* sprite)
+static void sub_80CAACC(struct Sprite* sprite)
{
if (sub_8078CE8(sprite))
{
diff --git a/src/battle/anim/osmose.c b/src/battle/anim/osmose.c
index 1140aa34a..dad5605f7 100644
--- a/src/battle/anim/osmose.c
+++ b/src/battle/anim/osmose.c
@@ -7,15 +7,40 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
-// osmose (I didn't want to use "absorb" as thats confusing)
+void sub_80CB768(struct Sprite* sprite);
+
+// osmose
// Used by Ingrain.
+const union AnimCmd gSpriteAnim_83D6688[] =
+{
+ ANIMCMD_FRAME(3, 3),
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D6694[] =
+{
+ gSpriteAnim_83D6688,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D6698 =
+{
+ .tileTag = 10147,
+ .paletteTag = 10147,
+ .oam = &gOamData_837DF24,
+ .anims = gSpriteAnimTable_83D6694,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CB768,
+};
+
void sub_80CB768(struct Sprite* sprite)
{
if (!sprite->data[0])
{
- sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2) + gBattleAnimArgs[0];
- sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 1) + gBattleAnimArgs[1];
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 2) + gBattleAnimArgs[0];
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 1) + gBattleAnimArgs[1];
sprite->data[1] = gBattleAnimArgs[2];
sprite->data[2] = gBattleAnimArgs[3];
sprite->data[3] = gBattleAnimArgs[4];
diff --git a/src/battle/anim/perceive.c b/src/battle/anim/perceive.c
index 14db096c6..ceca55141 100644
--- a/src/battle/anim/perceive.c
+++ b/src/battle/anim/perceive.c
@@ -8,10 +8,38 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80D2920(struct Sprite* sprite);
+
// perceive (shows a sparkle in a set of eyes, usually for heightened perception.)
// Used in Glare, Tickle, and Scary Face.
-void sub_80D2904(struct Sprite* sprite)
+const union AnimCmd gSpriteAnim_83D7B78[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(4, 4),
+ ANIMCMD_FRAME(8, 4),
+ ANIMCMD_FRAME(4, 4),
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D7B90[] =
+{
+ gSpriteAnim_83D7B78,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D7B94 =
+{
+ .tileTag = 10218,
+ .paletteTag = 10218,
+ .oam = &gOamData_837DF2C,
+ .anims = gSpriteAnimTable_83D7B90,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D2920,
+};
+
+static void sub_80D2904(struct Sprite* sprite)
{
if (sprite->animEnded)
DestroyAnimSprite(sprite);
diff --git a/src/battle/anim/poison.c b/src/battle/anim/poison.c
index 3a7477a57..4d6673adf 100644
--- a/src/battle/anim/poison.c
+++ b/src/battle/anim/poison.c
@@ -7,11 +7,191 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
-void sub_80D9DD4(struct Sprite *sprite);
-void sub_80D9E78(struct Sprite *sprite);
-void sub_80D9EE8(struct Sprite *sprite);
+extern const union AnimCmd *const gSpriteAnimTable_83D9310[];
+
+void sub_80793C4(struct Sprite *sprite);
+void sub_80D9D70(struct Sprite *sprite);
+void sub_80D9DF0(struct Sprite *sprite);
+void sub_80D9E94(struct Sprite *sprite);
+void sub_80D9F14(struct Sprite *sprite);
+void AnimBubbleEffect(struct Sprite *sprite);
+static void sub_80D9DD4(struct Sprite *sprite);
+static void sub_80D9E78(struct Sprite *sprite);
+static void sub_80D9EE8(struct Sprite *sprite);
static void AnimBubbleEffectStep(struct Sprite *sprite);
+const union AnimCmd gSpriteAnim_83DA22C[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_FRAME(8, 5),
+ ANIMCMD_FRAME(16, 5),
+ ANIMCMD_FRAME(24, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83DA240[] =
+{
+ gSpriteAnim_83DA22C,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA244 =
+{
+ .tileTag = 10151,
+ .paletteTag = 10151,
+ .oam = &gOamData_837DF74,
+ .anims = gSpriteAnimTable_83DA240,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80793C4,
+};
+
+const union AnimCmd gSpriteAnim_83DA25C[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83DA264[] =
+{
+ ANIMCMD_FRAME(4, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83DA26C[] =
+{
+ ANIMCMD_FRAME(8, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83DA274[] =
+{
+ gSpriteAnim_83DA25C,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83DA278[] =
+{
+ gSpriteAnim_83DA264,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83DA27C[] =
+{
+ gSpriteAnim_83DA26C,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DA280[] =
+{
+ AFFINEANIMCMD_FRAME(0x160, 0x160, 0, 0),
+ AFFINEANIMCMD_FRAME(0xFFF6, 0xFFF6, 0, 10),
+ AFFINEANIMCMD_FRAME(0xA, 0xA, 0, 10),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DA2A0[] =
+{
+ AFFINEANIMCMD_FRAME(0xEC, 0xEC, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA2B0[] =
+{
+ gSpriteAffineAnim_83DA280,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA2B4[] =
+{
+ gSpriteAffineAnim_83DA2A0,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA2B8 =
+{
+ .tileTag = 10150,
+ .paletteTag = 10150,
+ .oam = &gOamData_837DFEC,
+ .anims = gSpriteAnimTable_83DA274,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DA2B0,
+ .callback = sub_80D9D70,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA2D0 =
+{
+ .tileTag = 10150,
+ .paletteTag = 10150,
+ .oam = &gOamData_837DFEC,
+ .anims = gSpriteAnimTable_83DA274,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DA2B0,
+ .callback = sub_80D9DF0,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA2E8 =
+{
+ .tileTag = 10150,
+ .paletteTag = 10150,
+ .oam = &gOamData_837DF8C,
+ .anims = gSpriteAnimTable_83DA27C,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DA2B4,
+ .callback = sub_80D9E94,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DA300[] =
+{
+ AFFINEANIMCMD_FRAME(0xFFF0, 0x10, 0, 6),
+ AFFINEANIMCMD_FRAME(0x10, 0xFFF0, 0, 6),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA318[] =
+{
+ gSpriteAffineAnim_83DA300,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA31C =
+{
+ .tileTag = 10150,
+ .paletteTag = 10150,
+ .oam = &gOamData_837DFEC,
+ .anims = gSpriteAnimTable_83DA278,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DA318,
+ .callback = sub_80D9F14,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DA334[] =
+{
+ AFFINEANIMCMD_FRAME(0x9C, 0x9C, 0, 0),
+ AFFINEANIMCMD_FRAME(0x5, 0x5, 0, 20),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA34C[] =
+{
+ gSpriteAffineAnim_83DA334,
+};
+
+const struct SpriteTemplate gPoisonBubbleSpriteTemplate =
+{
+ .tileTag = 10150,
+ .paletteTag = 10150,
+ .oam = &gOamData_837DF8C,
+ .anims = gSpriteAnimTable_83DA274,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DA34C,
+ .callback = AnimBubbleEffect,
+};
+
+const struct SpriteTemplate gWaterBubbleSpriteTemplate =
+{
+ .tileTag = 10155,
+ .paletteTag = 10155,
+ .oam = &gOamData_837E0AC,
+ .anims = gSpriteAnimTable_83D9310,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DA34C,
+ .callback = AnimBubbleEffect,
+};
+
void sub_80D9D70(struct Sprite *sprite)
{
if (!gBattleAnimArgs[3])
@@ -20,8 +200,8 @@ void sub_80D9D70(struct Sprite *sprite)
InitAnimSpritePos(sprite, 1);
sprite->data[0] = gBattleAnimArgs[2];
- sprite->data[2] = GetBankPosition(gAnimBankTarget, 2);
- sprite->data[4] = GetBankPosition(gAnimBankTarget, 3);
+ sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2);
+ sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3);
sprite->data[5] = -30;
InitAnimSpriteTranslationOverDuration(sprite);
@@ -29,7 +209,7 @@ void sub_80D9D70(struct Sprite *sprite)
sprite->callback = sub_80D9DD4;
}
-void sub_80D9DD4(struct Sprite *sprite) // same as sub_80D9E78
+static void sub_80D9DD4(struct Sprite *sprite) // same as sub_80D9E78
{
if (TranslateAnimSpriteLinearAndSine(sprite))
DestroyAnimSprite(sprite);
@@ -44,7 +224,7 @@ void sub_80D9DF0(struct Sprite *sprite)
InitAnimSpritePos(sprite, 1);
SetAverageBattlerPositions(gAnimBankTarget, 1, &l1, &l2);
- if (GetBankSide(gAnimBankAttacker))
+ if (GetBattlerSide(gAnimBankAttacker))
gBattleAnimArgs[4] = -gBattleAnimArgs[4];
sprite->data[0] = gBattleAnimArgs[2];
@@ -57,7 +237,7 @@ void sub_80D9DF0(struct Sprite *sprite)
sprite->callback = sub_80D9E78;
}
-void sub_80D9E78(struct Sprite *sprite) // same as sub_80D9DD4
+static void sub_80D9E78(struct Sprite *sprite) // same as sub_80D9DD4
{
if (TranslateAnimSpriteLinearAndSine(sprite))
DestroyAnimSprite(sprite);
@@ -79,7 +259,7 @@ void sub_80D9E94(struct Sprite *sprite)
sprite->callback = sub_80D9EE8;
}
-void sub_80D9EE8(struct Sprite *sprite)
+static void sub_80D9EE8(struct Sprite *sprite)
{
sub_8078394(sprite);
@@ -94,7 +274,7 @@ void sub_80D9F14(struct Sprite *sprite)
{
SetAverageBattlerPositions(gAnimBankTarget, TRUE, &sprite->pos1.x, &sprite->pos1.y);
- if (GetBankSide(gAnimBankAttacker))
+ if (GetBattlerSide(gAnimBankAttacker))
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
sprite->pos1.x += gBattleAnimArgs[0];
@@ -124,7 +304,7 @@ void AnimBubbleEffect(struct Sprite *sprite)
{
SetAverageBattlerPositions(gAnimBankTarget, TRUE, &sprite->pos1.x, &sprite->pos1.y);
- if (GetBankSide(gAnimBankAttacker))
+ if (GetBattlerSide(gAnimBankAttacker))
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
sprite->pos1.x += gBattleAnimArgs[0];
diff --git a/src/battle/anim/powder.c b/src/battle/anim/powder.c
index 5d67311dc..046d3c20c 100644
--- a/src/battle/anim/powder.c
+++ b/src/battle/anim/powder.c
@@ -6,8 +6,60 @@
extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
+void AnimMovePowderParticle(struct Sprite* sprite);
static void AnimMovePowderParticleStep(struct Sprite* sprite);
+const union AnimCmd gSpriteAnim_83D61FC[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_FRAME(2, 5),
+ ANIMCMD_FRAME(4, 5),
+ ANIMCMD_FRAME(6, 5),
+ ANIMCMD_FRAME(8, 5),
+ ANIMCMD_FRAME(10, 5),
+ ANIMCMD_FRAME(12, 5),
+ ANIMCMD_FRAME(14, 5),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D6220[] =
+{
+ gSpriteAnim_83D61FC,
+};
+
+const struct SpriteTemplate gSleepPowderParticleSpriteTemplate =
+{
+ .tileTag = 10067,
+ .paletteTag = 10067,
+ .oam = &gOamData_837DF64,
+ .anims = gSpriteAnimTable_83D6220,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimMovePowderParticle,
+};
+
+const struct SpriteTemplate gStunSporeParticleSpriteTemplate =
+{
+ .tileTag = 10068,
+ .paletteTag = 10068,
+ .oam = &gOamData_837DF64,
+ .anims = gSpriteAnimTable_83D6220,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimMovePowderParticle,
+};
+
+const struct SpriteTemplate gPoisonPowderParticleSpriteTemplate =
+{
+ .tileTag = 10065,
+ .paletteTag = 10065,
+ .oam = &gOamData_837DF64,
+ .anims = gSpriteAnimTable_83D6220,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimMovePowderParticle,
+};
+
// Animates the falling particles that horizontally wave back and forth.
// Used by Sleep Powder, Stun Spore, and Poison Powder.
// arg 0: initial x pixel offset
@@ -23,7 +75,7 @@ void AnimMovePowderParticle(struct Sprite* sprite)
sprite->data[0] = gBattleAnimArgs[2];
sprite->data[1] = gBattleAnimArgs[3];
- if (GetBankSide(gAnimBankAttacker))
+ if (GetBattlerSide(gAnimBankAttacker))
{
sprite->data[3] = -gBattleAnimArgs[4];
}
diff --git a/src/battle/anim/psychic.c b/src/battle/anim/psychic.c
index 42f396870..a63652646 100644
--- a/src/battle/anim/psychic.c
+++ b/src/battle/anim/psychic.c
@@ -16,12 +16,13 @@ extern u16 gBattle_BG1_X;
extern u16 gBattle_BG2_X;
extern u8 gBankSpriteIds[];
-extern const union AffineAnimCmd *const gUnknown_083DA888[];
-extern struct AffineAnimFrameCmd gUnknown_083DA8A4;
-extern struct AffineAnimFrameCmd gUnknown_083DA8C4;
-extern const struct SpriteTemplate gSpriteTemplate_83DA8DC;
-extern const struct SpriteTemplate gSpriteTemplate_83DA9AC;
-
+void sub_80DB74C(struct Sprite *sprite);
+void sub_80DBA4C(struct Sprite *sprite);
+void sub_80DBAF4(struct Sprite *sprite);
+void sub_80DBB70(struct Sprite *sprite);
+void sub_80DC068(struct Sprite *sprite);
+void sub_80DC2B0(struct Sprite *sprite);
+void sub_80DC700(struct Sprite *sprite);
static void sub_80DB88C(struct Sprite *sprite);
static void sub_80DB8C0(struct Sprite *sprite);
static void sub_80DB92C(struct Sprite *sprite);
@@ -35,10 +36,399 @@ static void sub_80DC1FC(u8 taskId);
static void sub_80DC3F4(u8 taskId);
void sub_80DC5F4(u8 taskId);
+const union AffineAnimCmd gSpriteAffineAnim_83DA674[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0xFFFE, 0xFFFE, -10, 120),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA68C[] =
+{
+ gSpriteAffineAnim_83DA674,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA690 =
+{
+ .tileTag = 10196,
+ .paletteTag = 10196,
+ .oam = &gOamData_837E0BC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DA68C,
+ .callback = sub_80793C4,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA6A8 =
+{
+ .tileTag = 10166,
+ .paletteTag = 10166,
+ .oam = &gOamData_837E05C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DB74C,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA6C0 =
+{
+ .tileTag = 10167,
+ .paletteTag = 10167,
+ .oam = &gOamData_837E05C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DB74C,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA6D8 =
+{
+ .tileTag = 10168,
+ .paletteTag = 10168,
+ .oam = &gOamData_837E05C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DB74C,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA6F0 =
+{
+ .tileTag = 10169,
+ .paletteTag = 10169,
+ .oam = &gOamData_837E05C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DB74C,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA708 =
+{
+ .tileTag = 10170,
+ .paletteTag = 10170,
+ .oam = &gOamData_837E05C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DB74C,
+};
+
+const union AnimCmd gSpriteAnim_83DA720[] =
+{
+ ANIMCMD_FRAME(0, 3),
+ ANIMCMD_FRAME(16, 3),
+ ANIMCMD_FRAME(32, 3),
+ ANIMCMD_FRAME(48, 3),
+ ANIMCMD_FRAME(64, 3),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83DA738[] =
+{
+ gSpriteAnim_83DA720,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA73C =
+{
+ .tileTag = 10071,
+ .paletteTag = 10071,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83DA738,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DBA4C,
+};
+
+const union AnimCmd gSpriteAnim_83DA754[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_FRAME(4, 5),
+ ANIMCMD_FRAME(8, 5),
+ ANIMCMD_FRAME(12, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83DA768[] =
+{
+ gSpriteAnim_83DA754,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA76C =
+{
+ .tileTag = 10070,
+ .paletteTag = 10070,
+ .oam = &gOamData_837DF2C,
+ .anims = gSpriteAnimTable_83DA768,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DBA4C,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA784 =
+{
+ .tileTag = 10163,
+ .paletteTag = 10163,
+ .oam = &gOamData_837DF74,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = TranslateAnimSpriteToTargetMonLocation,
+};
+
+const union AnimCmd gSpriteAnim_83DA79C[] =
+{
+ ANIMCMD_FRAME(8, 60, .hFlip = TRUE),
+ ANIMCMD_FRAME(16, 5, .hFlip = TRUE),
+ ANIMCMD_FRAME(8, 5, .hFlip = TRUE),
+ ANIMCMD_FRAME(0, 5, .hFlip = TRUE),
+ ANIMCMD_FRAME(8, 22, .hFlip = TRUE),
+ ANIMCMD_LOOP(0),
+ ANIMCMD_FRAME(16, 5, .hFlip = TRUE),
+ ANIMCMD_FRAME(8, 5, .hFlip = TRUE),
+ ANIMCMD_FRAME(0, 5, .hFlip = TRUE),
+ ANIMCMD_FRAME(8, 5, .hFlip = TRUE),
+ ANIMCMD_LOOP(1),
+ ANIMCMD_FRAME(8, 22, .hFlip = TRUE),
+ ANIMCMD_FRAME(24, 3, .hFlip = TRUE),
+ ANIMCMD_FRAME(32, 3, .hFlip = TRUE),
+ ANIMCMD_FRAME(40, 22, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83DA7DC[] =
+{
+ ANIMCMD_FRAME(8, 60),
+ ANIMCMD_FRAME(16, 5),
+ ANIMCMD_FRAME(8, 5),
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_FRAME(8, 22),
+ ANIMCMD_LOOP(0),
+ ANIMCMD_FRAME(16, 5),
+ ANIMCMD_FRAME(8, 5),
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_FRAME(8, 5),
+ ANIMCMD_LOOP(1),
+ ANIMCMD_FRAME(8, 22),
+ ANIMCMD_FRAME(24, 3),
+ ANIMCMD_FRAME(32, 3),
+ ANIMCMD_FRAME(40, 22),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83DA81C[] =
+{
+ gSpriteAnim_83DA79C,
+ gSpriteAnim_83DA7DC,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA824 =
+{
+ .tileTag = 10097,
+ .paletteTag = 10097,
+ .oam = &gOamData_837DF74,
+ .anims = gSpriteAnimTable_83DA81C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DBAF4,
+};
+
+const union AnimCmd gSpriteAnim_83DA83C[] =
+{
+ ANIMCMD_FRAME(0, 6),
+ ANIMCMD_FRAME(16, 6),
+ ANIMCMD_FRAME(32, 6),
+ ANIMCMD_FRAME(48, 6),
+ ANIMCMD_FRAME(64, 6),
+ ANIMCMD_FRAME(80, 6),
+ ANIMCMD_FRAME(96, 18),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83DA85C[] =
+{
+ gSpriteAnim_83DA83C,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_3DA860[] =
+{
+ AFFINEANIMCMD_FRAME(0, 0, 4, 4),
+ AFFINEANIMCMD_FRAME(0, 0, -4, 8),
+ AFFINEANIMCMD_FRAME(0, 0, 4, 4),
+ AFFINEANIMCMD_LOOP(2),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_083DA888[] =
+{
+ gSpriteAffineAnim_3DA860,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA88C =
+{
+ .tileTag = 10093,
+ .paletteTag = 10093,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83DA85C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DBB70,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_083DA8A4[] =
+{
+ AFFINEANIMCMD_FRAME(-8, 10, 0, 16),
+ AFFINEANIMCMD_FRAME(18, -18, 0, 16),
+ AFFINEANIMCMD_FRAME(-20, 16, 0, 8),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_083DA8C4[] =
+{
+ AFFINEANIMCMD_FRAME(64, -4, 0, 20),
+ AFFINEANIMCMD_FRAME(0, 0, 0, -56),
+ AFFINEANIMCMD_END,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83DA8DC =
+{
+ .tileTag = 10249,
+ .paletteTag = 10249,
+ .oam = &gOamData_837E04C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA8F4 =
+{
+ .tileTag = 10250,
+ .paletteTag = 10250,
+ .oam = &gOamData_837DF3C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DC068,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DA90C[] =
+{
+ AFFINEANIMCMD_FRAME(0xFFF8, 0xFFF8, 0, 8),
+ AFFINEANIMCMD_FRAME(0x8, 0x8, 0, 8),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DA924[] =
+{
+ AFFINEANIMCMD_FRAME(0xF0, 0xF0, 0, 0),
+ AFFINEANIMCMD_FRAME(0xFFF8, 0xFFF8, 0, 6),
+ AFFINEANIMCMD_FRAME(0x8, 0x8, 0, 8),
+ AFFINEANIMCMD_FRAME(0xFFF8, 0xFFF8, 0, 2),
+ AFFINEANIMCMD_JUMP(1),
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DA94C[] =
+{
+ AFFINEANIMCMD_FRAME(0xD0, 0xD0, 0, 0),
+ AFFINEANIMCMD_FRAME(0xFFF8, 0xFFF8, 0, 4),
+ AFFINEANIMCMD_FRAME(0x8, 0x8, 0, 8),
+ AFFINEANIMCMD_FRAME(0xFFF8, 0xFFF8, 0, 4),
+ AFFINEANIMCMD_JUMP(1),
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DA974[] =
+{
+ AFFINEANIMCMD_FRAME(0xB0, 0xB0, 0, 0),
+ AFFINEANIMCMD_FRAME(0xFFF8, 0xFFF8, 0, 2),
+ AFFINEANIMCMD_FRAME(0x8, 0x8, 0, 8),
+ AFFINEANIMCMD_FRAME(0xFFF8, 0xFFF8, 0, 6),
+ AFFINEANIMCMD_JUMP(1),
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA99C[] =
+{
+ gSpriteAffineAnim_83DA90C,
+ gSpriteAffineAnim_83DA924,
+ gSpriteAffineAnim_83DA94C,
+ gSpriteAffineAnim_83DA974,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83DA9AC =
+{
+ .tileTag = 10251,
+ .paletteTag = 10251,
+ .oam = &gOamData_837DF8C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DA99C,
+ .callback = sub_80DC2B0,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DA9C4[] =
+{
+ AFFINEANIMCMD_FRAME(0x20, 0x20, 0, 0),
+ AFFINEANIMCMD_FRAME(0x4, 0x4, 0, 120),
+ AFFINEANIMCMD_END_ALT(1),
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA9DC[] =
+{
+ gSpriteAffineAnim_83DA9C4,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA9E0 =
+{
+ .tileTag = 10267,
+ .paletteTag = 10267,
+ .oam = &gOamData_837E11C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DA9DC,
+ .callback = sub_80793C4,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DA9F8[] =
+{
+ AFFINEANIMCMD_FRAME(0x20, 0x20, 0, 0),
+ AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 17),
+ AFFINEANIMCMD_LOOP(0),
+ AFFINEANIMCMD_FRAME(0xFFF8, 0xFFF8, 0, 10),
+ AFFINEANIMCMD_FRAME(0x8, 0x8, 0, 10),
+ AFFINEANIMCMD_LOOP(4),
+ AFFINEANIMCMD_LOOP(0),
+ AFFINEANIMCMD_FRAME(0xFFF0, 0xFFF0, 0, 5),
+ AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 5),
+ AFFINEANIMCMD_LOOP(7),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DAA50[] =
+{
+ AFFINEANIMCMD_FRAME(0xFFEC, 0x18, 0, 15),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DAA60[] =
+{
+ gSpriteAffineAnim_83DA9F8,
+ gSpriteAffineAnim_83DAA50,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAA68 =
+{
+ .tileTag = 10212,
+ .paletteTag = 10212,
+ .oam = &gOamData_837E11C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DAA60,
+ .callback = sub_80DC700,
+};
void sub_80DB74C(struct Sprite *sprite)
{
- if (GetBankSide(gAnimBankAttacker) == SIDE_PLAYER || IsContest())
+ if (GetBattlerSide(gAnimBankAttacker) == B_SIDE_PLAYER || IsContest())
{
sprite->oam.priority = 2;
sprite->subpriority = 200;
@@ -47,8 +437,8 @@ void sub_80DB74C(struct Sprite *sprite)
if (!IsContest())
{
u8 bankCopy;
- u8 bank = bankCopy = GetBankByIdentity(IDENTITY_OPPONENT_MON1);
- u8 identity = GetBankIdentity_permutated(bank);
+ u8 bank = bankCopy = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
+ u8 identity = GetBattlerPosition_permutated(bank);
int var0 = 1;
u8 toBG_2 = (identity ^ var0) != 0;
@@ -62,7 +452,7 @@ void sub_80DB74C(struct Sprite *sprite)
if (!IsContest() && IsDoubleBattle())
{
- if (GetBankSide(gAnimBankAttacker) == SIDE_PLAYER)
+ if (GetBattlerSide(gAnimBankAttacker) == B_SIDE_PLAYER)
{
sprite->pos1.x = 72;
sprite->pos1.y = 80;
@@ -75,11 +465,11 @@ void sub_80DB74C(struct Sprite *sprite)
}
else
{
- if (GetBankSide(gAnimBankAttacker) != SIDE_PLAYER)
+ if (GetBattlerSide(gAnimBankAttacker) != B_SIDE_PLAYER)
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
- sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 0) + gBattleAnimArgs[0];
- sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 1) + gBattleAnimArgs[1];
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 0) + gBattleAnimArgs[0];
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 1) + gBattleAnimArgs[1];
}
if (IsContest())
@@ -131,7 +521,7 @@ static void sub_80DB92C(struct Sprite *sprite)
if (!IsContest())
{
u8 bankCopy;
- u8 bank = bankCopy = GetBankByIdentity(IDENTITY_OPPONENT_MON1);
+ u8 bank = bankCopy = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
if (IsAnimBankSpriteVisible(bank))
gSprites[gBankSpriteIds[bank]].invisible = 0;
@@ -151,8 +541,8 @@ static void sub_80DB9E4(struct Sprite *sprite)
if (!IsContest())
{
u8 bankCopy;
- u8 bank = bankCopy = GetBankByIdentity(IDENTITY_OPPONENT_MON1);
- u8 identity = GetBankIdentity_permutated(bank);
+ u8 bank = bankCopy = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
+ u8 identity = GetBattlerPosition_permutated(bank);
int var0 = 1;
u8 toBG_2 = (identity ^ var0) != 0;
@@ -178,7 +568,7 @@ void sub_80DBA4C(struct Sprite *sprite)
if (!IsContest() && IsDoubleBattle())
{
- if (GetBankSide(gAnimBankAttacker) == SIDE_PLAYER)
+ if (GetBattlerSide(gAnimBankAttacker) == B_SIDE_PLAYER)
{
sprite->pos1.x = 72 - gBattleAnimArgs[0];
sprite->pos1.y = gBattleAnimArgs[1] + 80;
@@ -208,10 +598,10 @@ void sub_80DBA4C(struct Sprite *sprite)
void sub_80DBAF4(struct Sprite *sprite)
{
- sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2);
- sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3);
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 3);
- if (GetBankSide(gAnimBankAttacker) != SIDE_PLAYER)
+ if (GetBattlerSide(gAnimBankAttacker) != B_SIDE_PLAYER)
{
StartSpriteAnim(sprite, 1);
sprite->pos1.x -= 40;
@@ -234,13 +624,13 @@ void sub_80DBB70(struct Sprite *sprite)
s16 x = sub_807A100(gAnimBankAttacker, 1) / 2;
s16 y = sub_807A100(gAnimBankAttacker, 0) / -2;
- if (GetBankSide(gAnimBankAttacker) == SIDE_OPPONENT)
+ if (GetBattlerSide(gAnimBankAttacker) == B_SIDE_OPPONENT)
{
x = -x;
}
- sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2) + x;
- sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3) + y;
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 2) + x;
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 3) + y;
if (sprite->pos1.y < 16)
{
@@ -254,7 +644,7 @@ void sub_80DBB70(struct Sprite *sprite)
static void sub_80DBC00(struct Sprite *sprite)
{
sprite->oam.affineMode = 1;
- sprite->affineAnims = gUnknown_083DA888;
+ sprite->affineAnims = gSpriteAffineAnimTable_083DA888;
sprite->data[0] = 0;
InitSpriteAffineAnim(sprite);
sprite->callback = sub_80DBC34;
@@ -285,9 +675,9 @@ static void sub_80DBC34(struct Sprite *sprite)
void sub_80DBC94(u8 taskId)
{
struct Task *task = &gTasks[taskId];
- u8 spriteId = GetAnimBankSpriteId(0);
+ u8 spriteId = GetAnimBattlerSpriteId(0);
task->data[0] = spriteId;
- sub_80798F4(task, spriteId, &gUnknown_083DA8A4);
+ sub_80798F4(task, spriteId, &gSpriteAffineAnim_083DA8A4);
task->func = sub_80DBCD0;
}
@@ -302,13 +692,13 @@ static void sub_80DBCD0(u8 taskId)
void sub_80DBCFC(u8 taskId)
{
struct Task *task = &gTasks[taskId];
- u8 spriteId = GetAnimBankSpriteId(0);
+ u8 spriteId = GetAnimBattlerSpriteId(0);
task->data[0] = spriteId;
task->data[1] = 0;
task->data[2] = 0;
- task->data[3] = GetBankSide(gAnimBankAttacker) != SIDE_PLAYER ? 4 : 8;
+ task->data[3] = GetBattlerSide(gAnimBankAttacker) != B_SIDE_PLAYER ? 4 : 8;
- sub_80798F4(task, task->data[0], &gUnknown_083DA8C4);
+ sub_80798F4(task, task->data[0], &gSpriteAffineAnim_083DA8C4);
task->func = sub_80DBD58;
}
@@ -348,8 +738,8 @@ void sub_80DBE00(u8 taskId)
task->data[3] = 16;
task->data[4] = 0;
- task->data[13] = GetBankPosition(gAnimBankAttacker, 2);
- task->data[14] = GetBankPosition(gAnimBankAttacker, 3);
+ task->data[13] = GetBattlerSpriteCoord(gAnimBankAttacker, 2);
+ task->data[14] = GetBattlerSpriteCoord(gAnimBankAttacker, 3);
var0 = sub_807A100(gAnimBankAttacker, 1) / 3;
var1 = sub_807A100(gAnimBankAttacker, 0) / 3;
@@ -448,8 +838,8 @@ void sub_80DC068(struct Sprite *sprite)
{
if (gBattleAnimArgs[0] == 0)
{
- sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2);
- sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3);
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 3);
}
sprite->data[0] = gBattleAnimArgs[1];
@@ -581,7 +971,7 @@ void sub_80DC2D4(u8 taskId)
if (task->data[14] < 0)
task->data[14] = 0;
- if (GetBankIdentity_permutated(gAnimBankTarget) == 1)
+ if (GetBattlerPosition_permutated(gAnimBankTarget) == 1)
{
task->data[10] = gBattle_BG1_X;
scanlineParams.dmaDest = &REG_BG1HOFS;
@@ -684,13 +1074,13 @@ void sub_80DC4F4(u8 taskId)
obj_id_set_rotscale(spriteId, 256, 256, 0);
CalcCenterToCornerVec(&gSprites[spriteId], gSprites[spriteId].oam.shape, gSprites[spriteId].oam.size, gSprites[spriteId].oam.affineMode);
- task->data[13] = GetAnimBankSpriteId(gBattleAnimArgs[0]);
+ task->data[13] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
task->data[14] = matrixNum;
task->data[15] = spriteId;
task->func = sub_80DC5F4;
}
#else
-__attribute__((naked))
+NAKED
void sub_80DC4F4(u8 taskId)
{
asm(".syntax unified\n\
@@ -789,7 +1179,7 @@ _080DC554:\n\
bl CalcCenterToCornerVec\n\
ldr r1, _080DC5EC @ =gBattleAnimArgs\n\
ldrb r0, [r1]\n\
- bl GetAnimBankSpriteId\n\
+ bl GetAnimBattlerSpriteId\n\
lsls r0, 24\n\
lsrs r0, 24\n\
strh r0, [r7, 0x22]\n\
@@ -854,8 +1244,8 @@ void sub_80DC700(struct Sprite *sprite)
switch (sprite->data[0])
{
case 0:
- sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 0);
- sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 1);
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 0);
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 1);
if (IsContest())
sprite->pos1.y += 12;
diff --git a/src/battle/anim/rain.c b/src/battle/anim/rain.c
index b38233e3c..421304be8 100644
--- a/src/battle/anim/rain.c
+++ b/src/battle/anim/rain.c
@@ -5,13 +5,44 @@
#include "task.h"
extern s16 gBattleAnimArgs[8];
-extern const struct SpriteTemplate gSpriteTemplate_83D9130[];
-static void MoveAnimRaindrop(struct Sprite *);
+void SetAnimRaindropCallback(struct Sprite *sprite);
+static void MoveAnimRaindrop(struct Sprite *sprite);
// rain (spawns and animates raindrops)
// Used in Rain Dance and general rain animation.
+ const u8 gUnknown_3D7D8C[] = INCBIN_U8("graphics/unknown/unknown_3D7D8C.4bpp");
+ const u8 gUnknown_3D810C[] = INCBIN_U8("graphics/unknown/unknown_3D810C.bin");
+
+ const union AnimCmd gSpriteAnim_83D910C[] =
+{
+ ANIMCMD_FRAME(0, 2),
+ ANIMCMD_FRAME(8, 2),
+ ANIMCMD_FRAME(16, 2),
+ ANIMCMD_FRAME(24, 6),
+ ANIMCMD_FRAME(32, 2),
+ ANIMCMD_FRAME(40, 2),
+ ANIMCMD_FRAME(48, 2),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D912C[] =
+{
+ gSpriteAnim_83D910C,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83D9130 =
+{
+ .tileTag = 10115,
+ .paletteTag = 10115,
+ .oam = &gOamData_837DF74,
+ .anims = gSpriteAnimTable_83D912C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SetAnimRaindropCallback,
+};
+
void CreateAnimRaindrops(u8 taskId)
{
if (gTasks[taskId].data[0] == 0)
@@ -27,7 +58,7 @@ void CreateAnimRaindrops(u8 taskId)
{
u8 x = Random() % 240;
u8 y = Random() % 80;
- CreateSprite(gSpriteTemplate_83D9130, x, y, 4);
+ CreateSprite(&gSpriteTemplate_83D9130, x, y, 4);
}
if (gTasks[taskId].data[0] == gTasks[taskId].data[3])
diff --git a/src/battle/anim/ring.c b/src/battle/anim/ring.c
index 86b2c4659..024728ecc 100644
--- a/src/battle/anim/ring.c
+++ b/src/battle/anim/ring.c
@@ -12,11 +12,201 @@ extern u8 gAnimBankTarget;
extern u8 gBankSpriteIds[];
+void sub_80D0FD8(struct Sprite* sprite);
+void sub_80D10B8(struct Sprite* sprite);
+void sub_80D1318(struct Sprite* sprite);
+void sub_80D1368(struct Sprite* sprite);
static void sub_80D1098(struct Sprite* sprite);
+static void sub_80D13AC(struct Sprite* sprite);
+static void sub_80D1424(struct Sprite* sprite);
+static void sub_80D144C(struct Sprite* sprite);
+static void sub_80D14C4(struct Sprite* sprite);
+static void sub_80D1504(struct Sprite* sprite);
+static void sub_80D154C(struct Sprite* sprite);
+static void sub_80D158C(struct Sprite* sprite);
// ring (a ring that stretches outward from the Pokemon.)
// Used in Aromatherapy and Heal Bell.
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D77F8 =
+{
+ .tileTag = 10197,
+ .paletteTag = 10197,
+ .oam = &gOamData_837DF34,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8079534,
+};
+
+const union AnimCmd gSpriteAnim_83D7810[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_FRAME(16, 5),
+ ANIMCMD_FRAME(32, 5),
+ ANIMCMD_FRAME(48, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D7824[] =
+{
+ gSpriteAnim_83D7810,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D7828 =
+{
+ .tileTag = 10198,
+ .paletteTag = 10198,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D7824,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80793C4,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D7840[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 2),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 4),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 2),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D7860[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D7870[] =
+{
+ AFFINEANIMCMD_FRAME(0xFFF8, 0x4, 0, 8),
+ AFFINEANIMCMD_LOOP(0),
+ AFFINEANIMCMD_FRAME(0x10, 0xFFF8, 0, 8),
+ AFFINEANIMCMD_FRAME(0xFFF0, 0x8, 0, 8),
+ AFFINEANIMCMD_LOOP(1),
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 15),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D78B0[] =
+{
+ gSpriteAffineAnim_83D7840,
+ gSpriteAffineAnim_83D7860,
+ gSpriteAffineAnim_83D7870,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D78BC =
+{
+ .tileTag = 10202,
+ .paletteTag = 10202,
+ .oam = &gOamData_837E114,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D78B0,
+ .callback = sub_80D1368,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D78D4[] =
+{
+ AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 0),
+ AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 30),
+ AFFINEANIMCMD_END_ALT(1),
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D78EC[] =
+{
+ AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 0),
+ AFFINEANIMCMD_FRAME(0x20, 0x20, 0, 15),
+ AFFINEANIMCMD_END_ALT(1),
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D7904[] =
+{
+ AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 0),
+ AFFINEANIMCMD_FRAME(0xB, 0xB, 0, 45),
+ AFFINEANIMCMD_END_ALT(1),
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D791C[] =
+{
+ gSpriteAffineAnim_83D78D4,
+ gSpriteAffineAnim_83D78EC,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D7924[] =
+{
+ gSpriteAffineAnim_83D7904,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D7928 =
+{
+ .tileTag = 10203,
+ .paletteTag = 10203,
+ .oam = &gOamData_837DFFC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D791C,
+ .callback = sub_80793C4,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D7940[] =
+{
+ AFFINEANIMCMD_FRAME(0x200, 0x200, 0, 0),
+ AFFINEANIMCMD_FRAME(0xFFF0, 0xFFF0, 0, 30),
+ AFFINEANIMCMD_END_ALT(1),
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D7958[] =
+{
+ gSpriteAffineAnim_83D7940,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D795C =
+{
+ .tileTag = 10203,
+ .paletteTag = 10203,
+ .oam = &gOamData_837E11C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D7958,
+ .callback = sub_80793C4,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D7974 =
+{
+ .tileTag = 10203,
+ .paletteTag = 10203,
+ .oam = &gOamData_837E11C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D791C,
+ .callback = sub_80D0FD8,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D798C =
+{
+ .tileTag = 10203,
+ .paletteTag = 10203,
+ .oam = &gOamData_837E11C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D7924,
+ .callback = sub_80D10B8,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D79A4 =
+{
+ .tileTag = 10203,
+ .paletteTag = 10203,
+ .oam = &gOamData_837E11C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D791C,
+ .callback = sub_80D1318,
+};
+
void sub_80D0FD8(struct Sprite* sprite)
{
u8 bank = 0;
@@ -34,11 +224,11 @@ void sub_80D0FD8(struct Sprite* sprite)
{
SetAverageBattlerPositions(bank, r4, &sp0, &sp1);
if (r4 == 0)
- r4 = GetBankPosition(bank, 0);
+ r4 = GetBattlerSpriteCoord(bank, 0);
else
- r4 = GetBankPosition(bank, 2);
+ r4 = GetBattlerSpriteCoord(bank, 2);
- if (GetBankSide(bank) != 0)
+ if (GetBattlerSide(bank) != 0)
gBattleAnimArgs[0] -= (sp0 - r4) - gBattleAnimArgs[0]; // This is weird.
else
gBattleAnimArgs[0] = sp0 - r4;
@@ -90,9 +280,9 @@ void sub_80D10B8(struct Sprite* sprite)
sp4 = 3;
}
- if (GetBankSide(bankr7) != 0)
+ if (GetBattlerSide(bankr7) != 0)
{
- r9 = GetBankPosition(bankr7, r10) + gBattleAnimArgs[0];
+ r9 = GetBattlerSpriteCoord(bankr7, r10) + gBattleAnimArgs[0];
if (IsAnimBankSpriteVisible(bankr8 ^ 2))
sprite->subpriority = gSprites[gBankSpriteIds[bankr8 ^ 2]].subpriority - 1;
else
@@ -100,7 +290,7 @@ void sub_80D10B8(struct Sprite* sprite)
}
else
{
- r9 = GetBankPosition(bankr7, r10) - gBattleAnimArgs[0];
+ r9 = GetBattlerSpriteCoord(bankr7, r10) - gBattleAnimArgs[0];
if (gMain.inBattle && IsAnimBankSpriteVisible(bankr7 ^ 2))
{
if (gSprites[gBankSpriteIds[bankr7]].pos1.x < gSprites[gBankSpriteIds[bankr7 ^ 2]].pos1.x)
@@ -115,18 +305,18 @@ void sub_80D10B8(struct Sprite* sprite)
}
- r6 = GetBankPosition(bankr7, sp4) + gBattleAnimArgs[1];
+ r6 = GetBattlerSpriteCoord(bankr7, sp4) + gBattleAnimArgs[1];
if (gMain.inBattle && IsAnimBankSpriteVisible(bankr8 ^ 2))
{
SetAverageBattlerPositions(bankr8, gBattleAnimArgs[6], &sp0, &sp1);
}
else
{
- sp0 = GetBankPosition(bankr8, r10);
- sp1 = GetBankPosition(bankr8, sp4);
+ sp0 = GetBattlerSpriteCoord(bankr8, r10);
+ sp1 = GetBattlerSpriteCoord(bankr8, sp4);
}
- if (GetBankSide(bankr8))
+ if (GetBattlerSide(bankr8))
sp0 += gBattleAnimArgs[3];
else
sp0 -= gBattleAnimArgs[3];
@@ -154,3 +344,105 @@ void sub_80D1318(struct Sprite* sprite)
sprite->callback = sub_80793C4;
sub_80793C4(sprite);
}
+
+void sub_80D1368(struct Sprite* sprite)
+{
+ s16 r1;
+ InitAnimSpritePos(sprite, 0);
+ r1 = (GetBattlerSide(gAnimBankAttacker)) ? -0xA0 : 0xA0;
+ sprite->data[0] = 0x380;
+ sprite->data[1] = r1;
+ sprite->data[7] = gBattleAnimArgs[2];
+ sprite->callback = sub_80D13AC;
+}
+
+static void sub_80D13AC(struct Sprite* sprite)
+{
+ s16 add;
+ sprite->pos2.y -= (sprite->data[0] >> 8);
+ sprite->pos2.x = sprite->data[1] >> 8;
+ sprite->data[0] -= 32;
+ add = (GetBattlerSide(gAnimBankAttacker)) ? -0xA0 : 0xA0;
+ sprite->data[1] += add;
+ if (sprite->pos2.y > 0)
+ {
+ sprite->pos1.y += sprite->pos2.y;
+ sprite->pos1.x += sprite->pos2.x;
+ sprite->pos2.y = 0;
+ sprite->pos2.x = 0;
+ sprite->data[0] = 0;
+ StartSpriteAffineAnim(sprite, 1);
+ sprite->callback = sub_80D1424;
+ }
+}
+
+static void sub_80D1424(struct Sprite* sprite)
+{
+ if (sprite->data[0]++ > 19)
+ {
+ StartSpriteAffineAnim(sprite, 2);
+ sprite->callback = sub_80D144C;
+ }
+}
+
+static void sub_80D144C(struct Sprite* sprite)
+{
+ if (sprite->affineAnimEnded)
+ {
+ StartSpriteAffineAnim(sprite, 1);
+ sprite->data[0] = 0;
+ if (sprite->data[7] == 0)
+ {
+ sprite->oam.tileNum += 16;
+ sprite->callback = sub_80D14C4;
+ }
+ else
+ {
+ sprite->oam.tileNum += 32;
+ sprite->callback = sub_80D154C;
+ }
+ }
+}
+
+static void sub_80D14C4(struct Sprite* sprite)
+{
+ sprite->pos2.y -= 2;
+ if (++sprite->data[0] == 9)
+ {
+ sprite->data[0] = 16;
+ sprite->data[1] = 0;
+ REG_BLDCNT = 0x3F40;
+ REG_BLDALPHA = sprite->data[0];
+ sprite->callback = sub_80D1504;
+ }
+}
+
+static void sub_80D1504(struct Sprite* sprite)
+{
+ if (sprite->data[1]++ % 3 == 0)
+ {
+ sprite->data[0]--;
+ REG_BLDALPHA = sprite->data[0] | ((16 - sprite->data[0]) << 8);
+ if (sprite->data[0] == 0)
+ sprite->callback = sub_80D154C;
+ }
+}
+
+static void sub_80D154C(struct Sprite* sprite)
+{
+ if ((u16)gBattleAnimArgs[7] == 0xFFFF)
+ {
+ sprite->invisible = 1;
+ if (sprite->data[7] == 0)
+ sprite->callback = sub_80D158C;
+ else
+ sprite->callback = DestroyAnimSprite;
+ }
+}
+
+static void sub_80D158C(struct Sprite* sprite)
+{
+ REG_BLDCNT = 0;
+ REG_BLDALPHA = 0;
+ DestroyAnimSprite(sprite);
+}
diff --git a/src/battle/anim/rock.c b/src/battle/anim/rock.c
index 6fbe065b8..4e839d3e8 100644
--- a/src/battle/anim/rock.c
+++ b/src/battle/anim/rock.c
@@ -12,7 +12,7 @@
extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
-extern u32 gAnimMoveDmg;
+extern s32 gAnimMoveDmg;
extern u16 gBattle_BG1_X;
extern u16 gBattle_BG1_Y;
extern u16 gBattle_BG3_Y;
@@ -20,11 +20,20 @@ extern u16 gBattle_BG3_Y;
extern const u8 gBattleAnimBackgroundTilemap_SandstormBrew[];
extern const u8 gBattleAnimBackgroundImage_SandstormBrew[];
extern const u16 gBattleAnimSpritePalette_261[];
-extern const struct SpriteTemplate gSpriteTemplate_83DAD78;
-extern const struct SpriteTemplate gSpriteTemplate_83DAD90;
-
-extern const struct SubspriteTable gUnknown_083DAD10;
-
+extern const union AnimCmd *const gSpriteAnimTable_83D91F0[];
+extern const union AnimCmd *const gSpriteAnimTable_83D95E0[];
+
+extern void AnimMoveTwisterParticle(struct Sprite *sprite);
+
+void sub_80DCE9C(struct Sprite *sprite);
+void sub_80DCF60(struct Sprite *sprite);
+void sub_80DCFE4(struct Sprite *sprite);
+void sub_80DD3AC(struct Sprite *sprite);
+void sub_80DD490(struct Sprite *sprite);
+void sub_80DD87C(struct Sprite *sprite);
+void sub_80DD8E8(struct Sprite *sprite);
+void sub_80DD978(struct Sprite *sprite);
+void sub_80DD9A4(struct Sprite *sprite);
static void sub_80DCF1C(struct Sprite *sprite);
static void sub_80DD02C(struct Sprite *sprite);
static void sub_80DD190(u8 taskId);
@@ -34,6 +43,280 @@ static u8 sub_80DD8BC(void);
static void sub_80DD928(struct Sprite *sprite);
static void sub_80DD9FC(struct Sprite *sprite);
+const union AnimCmd gSpriteAnim_83DAC28[] =
+{
+ ANIMCMD_FRAME(32, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83DAC30[] =
+{
+ ANIMCMD_FRAME(48, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83DAC38[] =
+{
+ ANIMCMD_FRAME(64, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83DAC40[] =
+{
+ gSpriteAnim_83DAC28,
+ gSpriteAnim_83DAC30,
+ gSpriteAnim_83DAC38,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAC4C =
+{
+ .tileTag = 10058,
+ .paletteTag = 10058,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83DAC40,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DCE9C,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAC64 =
+{
+ .tileTag = 10058,
+ .paletteTag = 10058,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83DAC40,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DCF60,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAC7C =
+{
+ .tileTag = 10074,
+ .paletteTag = 10074,
+ .oam = &gOamData_837DF24,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DCFE4,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DAC94[] =
+{
+ AFFINEANIMCMD_FRAME(0xC0, 0xC0, 0, 0),
+ AFFINEANIMCMD_FRAME(0x2, 0xFFFD, 0, 5),
+ AFFINEANIMCMD_FRAME(0xFFFE, 0x3, 0, 5),
+ AFFINEANIMCMD_JUMP(1),
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DACB4[] =
+{
+ gSpriteAffineAnim_83DAC94,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DACB8 =
+{
+ .tileTag = 10149,
+ .paletteTag = 10149,
+ .oam = &gOamData_837E0AC,
+ .anims = gSpriteAnimTable_83D91F0,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DACB4,
+ .callback = sub_80DCFE4,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DACD0 =
+{
+ .tileTag = 10029,
+ .paletteTag = 10029,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D95E0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DCFE4,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DACE8 =
+{
+ .tileTag = 10261,
+ .paletteTag = 10261,
+ .oam = &gOamData_837DF54,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DD3AC,
+};
+
+const struct Subsprite gSubspriteTable_83DAD00[] =
+{
+ {.x = -16, .y = 0, .shape = ST_OAM_H_RECTANGLE, .size = 2, .tileOffset = 0, .priority = 1},
+ {.x = 16, .y = 0, .shape = ST_OAM_H_RECTANGLE, .size = 2, .tileOffset = 8, .priority = 1},
+};
+
+const struct SubspriteTable gSubspriteTables_83DAD10[] =
+{
+ {ARRAY_COUNT(gSubspriteTable_83DAD00), gSubspriteTable_83DAD00},
+};
+
+const union AnimCmd gSpriteAnim_83DAD18[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83DAD20[] =
+{
+ ANIMCMD_FRAME(16, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83DAD28[] =
+{
+ ANIMCMD_FRAME(32, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83DAD30[] =
+{
+ ANIMCMD_FRAME(48, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83DAD38[] =
+{
+ ANIMCMD_FRAME(64, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83DAD40[] =
+{
+ ANIMCMD_FRAME(80, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83DAD48[] =
+{
+ gSpriteAnim_83DAD18,
+ gSpriteAnim_83DAD20,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83DAD50[] =
+{
+ gSpriteAnim_83DAD28,
+ gSpriteAnim_83DAD30,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83DAD58[] =
+{
+ gSpriteAnim_83DAD38,
+ gSpriteAnim_83DAD40,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAD60 =
+{
+ .tileTag = 10058,
+ .paletteTag = 10058,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83DAD48,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DD490,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83DAD78 =
+{
+ .tileTag = 10074,
+ .paletteTag = 10074,
+ .oam = &gOamData_837DF24,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DD87C,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83DAD90 =
+{
+ .tileTag = 10058,
+ .paletteTag = 10058,
+ .oam = &gOamData_837DF34,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DD87C,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DADA8 =
+{
+ .tileTag = 10058,
+ .paletteTag = 10058,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83DAD48,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DD8E8,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DADC0[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -5, 5),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DADD0[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 5, 5),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DADE0[] =
+{
+ gSpriteAffineAnim_83DADC0,
+ gSpriteAffineAnim_83DADD0,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DADE8 =
+{
+ .tileTag = 10058,
+ .paletteTag = 10058,
+ .oam = &gOamData_837DF94,
+ .anims = gSpriteAnimTable_83DAD48,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DADE0,
+ .callback = sub_80DD978,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAE00 =
+{
+ .tileTag = 10058,
+ .paletteTag = 10058,
+ .oam = &gOamData_837DF94,
+ .anims = gSpriteAnimTable_83DAD48,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DADE0,
+ .callback = sub_80DD9A4,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAE18 =
+{
+ .tileTag = 10058,
+ .paletteTag = 10058,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83DAD58,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DADE0,
+ .callback = AnimMoveTwisterParticle,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAE30 =
+{
+ .tileTag = 10058,
+ .paletteTag = 10058,
+ .oam = &gOamData_837DF94,
+ .anims = gSpriteAnimTable_83DAD50,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DADE0,
+ .callback = sub_807A9BC,
+};
void sub_80DCE9C(struct Sprite *sprite)
{
@@ -78,7 +361,7 @@ void sub_80DCF60(struct Sprite *sprite)
StartSpriteAnim(sprite, gBattleAnimArgs[5]);
AnimateSprite(sprite);
- if (GetBankSide(gAnimBankAttacker) != SIDE_PLAYER)
+ if (GetBattlerSide(gAnimBankAttacker) != B_SIDE_PLAYER)
sprite->pos1.x -= gBattleAnimArgs[0];
else
sprite->pos1.x += gBattleAnimArgs[0];
@@ -154,7 +437,7 @@ void do_boulder_dust(u8 taskId)
if (IsContest())
sub_80763FC(subStruct.field_8, (u16 *)subStruct.field_4, 0, 0);
- if (gBattleAnimArgs[0] != 0 && GetBankSide(gAnimBankAttacker) != SIDE_PLAYER)
+ if (gBattleAnimArgs[0] != 0 && GetBattlerSide(gAnimBankAttacker) != B_SIDE_PLAYER)
var0 = 1;
gTasks[taskId].data[0] = var0;
@@ -231,7 +514,7 @@ void sub_80DD3AC(struct Sprite *sprite)
{
if (sprite->data[0] == 0)
{
- if (gBattleAnimArgs[3] != 0 && GetBankSide(gAnimBankAttacker) != SIDE_PLAYER)
+ if (gBattleAnimArgs[3] != 0 && GetBattlerSide(gAnimBankAttacker) != B_SIDE_PLAYER)
{
sprite->pos1.x = 304;
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
@@ -244,7 +527,7 @@ void sub_80DD3AC(struct Sprite *sprite)
}
sprite->pos1.y = gBattleAnimArgs[0];
- SetSubspriteTables(sprite, &gUnknown_083DAD10);
+ SetSubspriteTables(sprite, gSubspriteTables_83DAD10);
sprite->data[1] = gBattleAnimArgs[1];
sprite->data[2] = gBattleAnimArgs[2];
sprite->data[0]++;
@@ -295,10 +578,10 @@ void sub_80DD4D4(u8 taskId)
task = &gTasks[taskId];
- var0 = GetBankPosition(gAnimBankAttacker, 2);
- var1 = GetBankPosition(gAnimBankAttacker, 1) + 24;
- var2 = GetBankPosition(gAnimBankTarget, 2);
- var3 = GetBankPosition(gAnimBankTarget, 1) + 24;
+ var0 = GetBattlerSpriteCoord(gAnimBankAttacker, 2);
+ var1 = GetBattlerSpriteCoord(gAnimBankAttacker, 1) + 24;
+ var2 = GetBattlerSpriteCoord(gAnimBankTarget, 2);
+ var3 = GetBattlerSpriteCoord(gAnimBankTarget, 1) + 24;
if ((gAnimBankAttacker ^ 2) == gAnimBankTarget)
var3 = var1;
@@ -333,7 +616,7 @@ void sub_80DD4D4(u8 taskId)
task->data[13] = pan1;
task->data[14] = (pan2 - pan1) / task->data[8];
task->data[1] = var4;
- task->data[15] = GetAnimBankSpriteId(0);
+ task->data[15] = GetAnimBattlerSpriteId(0);
task->func = sub_80DD604;
}
@@ -514,7 +797,7 @@ static void sub_80DD928(struct Sprite *sprite)
void sub_80DD978(struct Sprite *sprite)
{
- if (GetBankSide(gAnimBankAttacker) == SIDE_OPPONENT)
+ if (GetBattlerSide(gAnimBankAttacker) == B_SIDE_OPPONENT)
StartSpriteAffineAnim(sprite, 1);
TranslateAnimSpriteToTargetMonLocation(sprite);
@@ -522,8 +805,8 @@ void sub_80DD978(struct Sprite *sprite)
void sub_80DD9A4(struct Sprite *sprite)
{
- sprite->pos1.x = GetBankPosition(gAnimBankTarget, 0);
- sprite->pos1.y = GetBankPosition(gAnimBankTarget, 1);
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankTarget, 0);
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankTarget, 1);
sprite->pos1.x += gBattleAnimArgs[0];
sprite->pos1.y += gBattleAnimArgs[1];
@@ -550,11 +833,11 @@ static void sub_80DD9FC(struct Sprite *sprite)
void sub_80DDA4C(u8 taskId)
{
- if ((s32)gAnimMoveDmg < 33)
+ if (gAnimMoveDmg < 33)
gBattleAnimArgs[7] = 0;
- if (gAnimMoveDmg - 33 < 33)
+ if ((u32)gAnimMoveDmg - 33 < 33)
gBattleAnimArgs[7] = 1;
- if ((s32)gAnimMoveDmg > 65)
+ if (gAnimMoveDmg > 65)
gBattleAnimArgs[7] = 2;
DestroyAnimVisualTask(taskId);
diff --git a/src/battle/anim/roots.c b/src/battle/anim/roots.c
index 68f8a3e2f..b9b76c584 100644
--- a/src/battle/anim/roots.c
+++ b/src/battle/anim/roots.c
@@ -6,20 +6,85 @@
extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
-
extern s16 gUnknown_03000728[];
+void sub_80CB59C(struct Sprite* sprite);
+void sub_80CB620(struct Sprite *sprite);
static void sub_80CB710(struct Sprite* sprite);
// roots
// Used by Ingrain and Frenzy Plant.
+const union AnimCmd gSpriteAnim_83D6600[] =
+{
+ ANIMCMD_FRAME(0, 7),
+ ANIMCMD_FRAME(16, 7),
+ ANIMCMD_FRAME(32, 7),
+ ANIMCMD_FRAME(48, 7),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D6614[] =
+{
+ ANIMCMD_FRAME(0, 7, .hFlip = TRUE),
+ ANIMCMD_FRAME(16, 7, .hFlip = TRUE),
+ ANIMCMD_FRAME(32, 7, .hFlip = TRUE),
+ ANIMCMD_FRAME(48, 7, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D6628[] =
+{
+ ANIMCMD_FRAME(0, 7),
+ ANIMCMD_FRAME(16, 7),
+ ANIMCMD_FRAME(32, 7),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D6638[] =
+{
+ ANIMCMD_FRAME(0, 7, .hFlip = TRUE),
+ ANIMCMD_FRAME(16, 7, .hFlip = TRUE),
+ ANIMCMD_FRAME(32, 7, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D6648[] =
+{
+ gSpriteAnim_83D6600,
+ gSpriteAnim_83D6614,
+ gSpriteAnim_83D6628,
+ gSpriteAnim_83D6638,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D6658 =
+{
+ .tileTag = 10223,
+ .paletteTag = 10223,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D6648,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CB59C,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D6670 =
+{
+ .tileTag = 10223,
+ .paletteTag = 10223,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D6648,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CB620,
+};
+
void sub_80CB59C(struct Sprite* sprite)
{
if (!sprite->data[0])
{
- sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2);
- sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 1);
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 1);
sprite->pos2.x = gBattleAnimArgs[0];
sprite->pos2.y = gBattleAnimArgs[1];
sprite->subpriority = gBattleAnimArgs[2] + 30;
@@ -36,10 +101,10 @@ void sub_80CB59C(struct Sprite* sprite)
void sub_80CB620(struct Sprite *sprite)
{
- s16 p1 = GetBankPosition(gAnimBankAttacker, 2);
- s16 p2 = GetBankPosition(gAnimBankAttacker, 3);
- s16 e1 = GetBankPosition(gAnimBankTarget, 2);
- s16 e2 = GetBankPosition(gAnimBankTarget, 3);
+ s16 p1 = GetBattlerSpriteCoord(gAnimBankAttacker, 2);
+ s16 p2 = GetBattlerSpriteCoord(gAnimBankAttacker, 3);
+ s16 e1 = GetBattlerSpriteCoord(gAnimBankTarget, 2);
+ s16 e2 = GetBattlerSpriteCoord(gAnimBankTarget, 3);
e1 -= p1;
e2 -= p2;
@@ -57,7 +122,7 @@ void sub_80CB620(struct Sprite *sprite)
gUnknown_03000728[3] = e2;
}
-void sub_80CB710(struct Sprite* sprite)
+static void sub_80CB710(struct Sprite* sprite)
{
if (++sprite->data[0] > (sprite->data[2] - 10))
sprite->invisible = sprite->data[0] % 2;
diff --git a/src/battle/anim/scan.c b/src/battle/anim/scan.c
index 403894cc8..9f427a9c4 100644
--- a/src/battle/anim/scan.c
+++ b/src/battle/anim/scan.c
@@ -9,8 +9,8 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
-extern s8 gUnknown_083D6DDC[4][2];
-
+void sub_80CD3E0(struct Sprite* sprite);
+void sub_80CD6CC(struct Sprite* sprite);
static void sub_80CD408(struct Sprite* sprite);
static void sub_80CD4B8(struct Sprite* sprite);
static void sub_80CD4EC(struct Sprite* sprite);
@@ -21,6 +21,36 @@ static void sub_80CD67C(struct Sprite* sprite);
// scan
// Used by Lock-On.
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D6DAC =
+{
+ .tileTag = 10014,
+ .paletteTag = 10014,
+ .oam = &gOamData_837DF34,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CD3E0,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D6DC4 =
+{
+ .tileTag = 10014,
+ .paletteTag = 10014,
+ .oam = &gOamData_837DF2C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CD6CC,
+};
+
+const s8 gUnknown_083D6DDC[][2] =
+{
+ { 64, 64},
+ { 0, -64},
+ {-64, 64},
+ { 32, -32},
+};
+
void sub_80CD3E0(struct Sprite* sprite)
{
sprite->pos1.x -= 32;
@@ -30,7 +60,7 @@ void sub_80CD3E0(struct Sprite* sprite)
StoreSpriteCallbackInData(sprite, sub_80CD408);
}
-void sub_80CD408(struct Sprite* sprite)
+static void sub_80CD408(struct Sprite* sprite)
{
switch (sprite->data[5] & 1)
{
@@ -57,7 +87,7 @@ void sub_80CD408(struct Sprite* sprite)
sprite->data[5] ^= 1;
}
-void sub_80CD4B8(struct Sprite* sprite)
+static void sub_80CD4B8(struct Sprite* sprite)
{
if ((sprite->data[5] >> 8) == 4)
{
@@ -71,7 +101,7 @@ void sub_80CD4B8(struct Sprite* sprite)
}
}
-void sub_80CD4EC(struct Sprite* sprite)
+static void sub_80CD4EC(struct Sprite* sprite)
{
s16 a;
s16 b;
@@ -110,14 +140,14 @@ void sub_80CD4EC(struct Sprite* sprite)
sprite->pos2.y = 0;
sprite->pos2.x = 0;
sprite->data[0] = 6;
- sprite->data[2] = GetBankPosition(gAnimBankTarget, 2) + a;
- sprite->data[4] = GetBankPosition(gAnimBankTarget, 3) + b;
+ sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2) + a;
+ sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3) + b;
sprite->callback = StartTranslateAnimSpriteByDeltas;
StoreSpriteCallbackInData(sprite, sub_80CD654);
}
}
-void sub_80CD5A8(struct Sprite* sprite)
+static void sub_80CD5A8(struct Sprite* sprite)
{
if (sprite->data[2] == 0)
{
@@ -129,7 +159,7 @@ void sub_80CD5A8(struct Sprite* sprite)
sprite->data[1] = 0;
}
- BlendPalettes(sub_80791A8(1, 1, 1, 1, 1, 0, 0), sprite->data[1], 0x7FFF);
+ BlendPalettes(sub_80791A8(1, 1, 1, 1, 1, 0, 0), sprite->data[1], RGB(31, 31, 31));
if (sprite->data[1] == 16)
{
int pal;
@@ -144,7 +174,7 @@ void sub_80CD5A8(struct Sprite* sprite)
}
}
-void sub_80CD654(struct Sprite* sprite)
+static void sub_80CD654(struct Sprite* sprite)
{
if ((u16)gBattleAnimArgs[7] == 0xFFFF)
{
@@ -154,7 +184,7 @@ void sub_80CD654(struct Sprite* sprite)
}
}
-void sub_80CD67C(struct Sprite* sprite)
+static void sub_80CD67C(struct Sprite* sprite)
{
if (sprite->data[0] % 3 == 0)
{
diff --git a/src/battle/anim/scary_face.c b/src/battle/anim/scary_face.c
index 8d51521ee..5a2c52825 100644
--- a/src/battle/anim/scary_face.c
+++ b/src/battle/anim/scary_face.c
@@ -10,11 +10,11 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
-extern struct INCBIN_U8 gBattleAnimBackgroundTilemap_ScaryFaceContest;
-extern struct INCBIN_U8 gBattleAnimBackgroundTilemap_ScaryFacePlayer;
-extern struct INCBIN_U8 gBattleAnimBackgroundTilemap_ScaryFaceOpponent;
-extern struct INCBIN_U8 gBattleAnimBackgroundImage_ScaryFace;
-extern struct INCBIN_U8 gBattleAnimBackgroundPalette_ScaryFace;
+extern const u8 gBattleAnimBackgroundTilemap_ScaryFaceContest[];
+extern const u8 gBattleAnimBackgroundTilemap_ScaryFacePlayer[];
+extern const u8 gBattleAnimBackgroundTilemap_ScaryFaceOpponent[];
+extern const u8 gBattleAnimBackgroundImage_ScaryFace[];
+extern const u8 gBattleAnimBackgroundPalette_ScaryFace[];
extern u16 gBattle_BG1_Y;
extern u16 gBattle_BG1_X;
@@ -43,7 +43,7 @@ void sub_80D23B4(u8 taskId)
DmaFill32Defvars(3, 0, subStruct.field_4, 0x1000);
if (IsContest())
LZDecompressVram(&gBattleAnimBackgroundTilemap_ScaryFaceContest, subStruct.field_4);
- else if (GetBankSide(gAnimBankTarget) == 1)
+ else if (GetBattlerSide(gAnimBankTarget) == 1)
LZDecompressVram(&gBattleAnimBackgroundTilemap_ScaryFacePlayer, subStruct.field_4);
else
LZDecompressVram(&gBattleAnimBackgroundTilemap_ScaryFaceOpponent, subStruct.field_4);
diff --git a/src/battle/anim/seed.c b/src/battle/anim/seed.c
index 7f8154504..11eebada0 100644
--- a/src/battle/anim/seed.c
+++ b/src/battle/anim/seed.c
@@ -7,9 +7,40 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void AnimLeechSeed(struct Sprite* sprite);
static void AnimLeechSeedStep(struct Sprite* sprite);
static void AnimLeechSeedSprouts(struct Sprite* sprite);
+const union AnimCmd gSpriteAnim_83D63AC[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D63B4[] =
+{
+ ANIMCMD_FRAME(4, 7),
+ ANIMCMD_FRAME(8, 7),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D63C0[] =
+{
+ gSpriteAnim_83D63AC,
+ gSpriteAnim_83D63B4,
+};
+
+const struct SpriteTemplate gLeechSeedSpriteTemplate =
+{
+ .tileTag = 10006,
+ .paletteTag = 10006,
+ .oam = &gOamData_837DF2C,
+ .anims = gSpriteAnimTable_83D63C0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimLeechSeed,
+};
+
// seed (sprouts a sapling from a seed.)
// Used by Leech Seed.
// arg 0: initial x pixel offset
@@ -21,14 +52,14 @@ static void AnimLeechSeedSprouts(struct Sprite* sprite);
void AnimLeechSeed(struct Sprite* sprite)
{
InitAnimSpritePos(sprite, 1);
- if (GetBankSide(gAnimBankAttacker))
+ if (GetBattlerSide(gAnimBankAttacker))
{
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
}
sprite->data[0] = gBattleAnimArgs[4];
- sprite->data[2] = GetBankPosition(gAnimBankTarget, 0) + gBattleAnimArgs[2];
- sprite->data[4] = GetBankPosition(gAnimBankTarget, 1) + gBattleAnimArgs[3];
+ sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 0) + gBattleAnimArgs[2];
+ sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 1) + gBattleAnimArgs[3];
sprite->data[5] = gBattleAnimArgs[5];
InitAnimSpriteTranslationOverDuration(sprite);
sprite->callback = AnimLeechSeedStep;
diff --git a/src/battle/anim/sfx.c b/src/battle/anim/sfx.c
index 10ef1681e..6d47f0b46 100644
--- a/src/battle/anim/sfx.c
+++ b/src/battle/anim/sfx.c
@@ -9,7 +9,7 @@
extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
-extern u16 gBattlePartyID[];
+extern u16 gBattlerPartyIndexes[];
extern u16 gAnimSpeciesByBanks[];
extern u8 gUnknown_0202F7D2;
@@ -175,10 +175,10 @@ void sub_812B18C(u8 taskId)
}
}
- if (GetBankSide(bank))
- species = GetMonData(&gEnemyParty[gBattlePartyID[bank]], 0xB);
+ if (GetBattlerSide(bank))
+ species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[bank]], 0xB);
else
- species = GetMonData(&gPlayerParty[gBattlePartyID[bank]], 0xB);
+ species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[bank]], 0xB);
}
if (species != 0)
diff --git a/src/battle/anim/shadow_enlarge.c b/src/battle/anim/shadow_enlarge.c
index 399cf1ba4..7662583ac 100644
--- a/src/battle/anim/shadow_enlarge.c
+++ b/src/battle/anim/shadow_enlarge.c
@@ -15,7 +15,7 @@ static void sub_80D0428(u8 taskId);
void sub_80D03C4(u8 taskId)
{
- u8 spriteId = GetAnimBankSpriteId(1);
+ u8 spriteId = GetAnimBattlerSpriteId(1);
sub_8078E70(spriteId, 1);
obj_id_set_rotscale(spriteId, 0xD0, 0xD0, 0);
sub_8079108(gSprites[spriteId].oam.paletteNum + 16, 0);
@@ -27,7 +27,7 @@ void sub_80D0428(u8 taskId)
{
if (--gTasks[taskId].data[0] == -1)
{
- u8 spriteId = GetAnimBankSpriteId(1);
+ u8 spriteId = GetAnimBattlerSpriteId(1);
sub_8078F40(spriteId);
sub_8079108(gSprites[spriteId].oam.paletteNum + 16, 1);
DestroyAnimVisualTask(taskId);
diff --git a/src/battle/anim/shadow_minimize.c b/src/battle/anim/shadow_minimize.c
index 61645bc59..be033ae6d 100644
--- a/src/battle/anim/shadow_minimize.c
+++ b/src/battle/anim/shadow_minimize.c
@@ -18,7 +18,7 @@ void sub_80D0704(struct Sprite* sprite);
void sub_80D0488(u8 taskId)
{
struct Task* task = &gTasks[taskId];
- u8 spriteId = GetAnimBankSpriteId(0);
+ u8 spriteId = GetAnimBattlerSpriteId(0);
task->data[0] = spriteId;
sub_8078E70(spriteId, 0);
task->data[1] = 0;
@@ -129,7 +129,7 @@ void sub_80D0614(struct Task* task, u8 taskId)
}
}
#else
-__attribute__((naked))
+NAKED
void sub_80D0614(struct Task* task, u8 taskId)
{
asm(".syntax unified\n\
diff --git a/src/battle/anim/shield.c b/src/battle/anim/shield.c
index 676318545..d858f5100 100644
--- a/src/battle/anim/shield.c
+++ b/src/battle/anim/shield.c
@@ -9,11 +9,23 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80CCD24(struct Sprite* sprite);
static void sub_80CCE0C(struct Sprite* sprite);
// shield
// Used by Protect.
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D6BE8 =
+{
+ .tileTag = 10280,
+ .paletteTag = 10280,
+ .oam = &gOamData_837E05C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CCD24,
+};
+
void sub_80CCD24(struct Sprite* sprite)
{
if (IsContest() != 0)
@@ -23,7 +35,7 @@ void sub_80CCD24(struct Sprite* sprite)
sprite->pos1.x = sub_8077EE4(gAnimBankAttacker, 0) + gBattleAnimArgs[0];
sprite->pos1.y = sub_8077EE4(gAnimBankAttacker, 1) + gBattleAnimArgs[1];
- if (GetBankSide(gAnimBankAttacker) == 0 || IsContest())
+ if (GetBattlerSide(gAnimBankAttacker) == 0 || IsContest())
sprite->oam.priority = sub_8079ED4(gAnimBankAttacker) + 1;
else
sprite->oam.priority = sub_8079ED4(gAnimBankAttacker);
@@ -36,7 +48,7 @@ void sub_80CCD24(struct Sprite* sprite)
sprite->callback = sub_80CCE0C;
}
-void sub_80CCE0C(struct Sprite* sprite)
+static void sub_80CCE0C(struct Sprite* sprite)
{
int a;
int i;
diff --git a/src/battle/anim/shimmer.c b/src/battle/anim/shimmer.c
index 9e7bea1e4..78b430094 100644
--- a/src/battle/anim/shimmer.c
+++ b/src/battle/anim/shimmer.c
@@ -9,11 +9,20 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
-extern u16 gUnknown_083D6984[];
-
// shimmer
// Used by Magical Leaf.
+static const u16 sMagicalLeafBlendColors[] =
+{
+ RGB(31, 0, 0),
+ RGB(31, 19, 0),
+ RGB(31, 31, 0),
+ RGB(0, 31, 0),
+ RGB(5, 14, 31),
+ RGB(22, 10, 31),
+ RGB(22, 21, 31),
+};
+
void sub_80CC5F8(u8 taskId)
{
struct Task* task = &gTasks[taskId];
@@ -29,8 +38,8 @@ void sub_80CC5F8(u8 taskId)
if (task->data[9] >= 0)
{
task->data[9] = 0;
- BlendPalette(task->data[8], 0x10, task->data[10], gUnknown_083D6984[task->data[11]]);
- BlendPalette(task->data[12], 0x10, task->data[10], gUnknown_083D6984[task->data[11]]);
+ BlendPalette(task->data[8], 0x10, task->data[10], sMagicalLeafBlendColors[task->data[11]]);
+ BlendPalette(task->data[12], 0x10, task->data[10], sMagicalLeafBlendColors[task->data[11]]);
task->data[10]++;
if (task->data[10] == 17)
{
diff --git a/src/battle/anim/shock.c b/src/battle/anim/shock.c
index 16e04c9db..5b82d9319 100644
--- a/src/battle/anim/shock.c
+++ b/src/battle/anim/shock.c
@@ -8,17 +8,68 @@ extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
extern struct OamMatrix gOamMatrices[];
+void sub_80D6294(struct Sprite *sprite);
+void sub_80D6328(struct Sprite *sprite);
extern void sub_80DA48C(struct Sprite *);
// shock (moves the little electricity lines)
// Used in Shock.
+const union AnimCmd gSpriteAnim_83D9824[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_FRAME(16, 5),
+ ANIMCMD_FRAME(32, 5),
+ ANIMCMD_FRAME(48, 5),
+ ANIMCMD_FRAME(64, 5),
+ ANIMCMD_FRAME(80, 5),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D9840[] =
+{
+ gSpriteAnim_83D9824,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83D9844 =
+{
+ .tileTag = 10079,
+ .paletteTag = 10079,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D9840,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D6294,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D985C =
+{
+ .tileTag = 10011,
+ .paletteTag = 10011,
+ .oam = &gOamData_837DF8C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D6328,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9874 =
+{
+ .tileTag = 10171,
+ .paletteTag = 10171,
+ .oam = &gOamData_837DF2C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = TranslateAnimSpriteToTargetMonLocation,
+};
+
void sub_80D6294(struct Sprite *sprite)
{
- sprite->pos1.x = GetBankPosition(gAnimBankTarget, 2);
- sprite->pos1.y = GetBankPosition(gAnimBankTarget, 3);
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankTarget, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankTarget, 3);
- if (GetBankSide(gAnimBankAttacker) != 0)
+ if (GetBattlerSide(gAnimBankAttacker) != 0)
{
sprite->pos1.x -= gBattleAnimArgs[0];
sprite->pos1.y -= gBattleAnimArgs[1];
@@ -77,13 +128,13 @@ void sub_80D6328(struct Sprite *sprite)
if (gBattleAnimArgs[5] == 0)
{
- sprite->pos1.x = GetBankPosition(slot, 0);
- sprite->pos1.y = GetBankPosition(slot, 1);
+ sprite->pos1.x = GetBattlerSpriteCoord(slot, 0);
+ sprite->pos1.y = GetBattlerSpriteCoord(slot, 1);
}
else
{
- sprite->pos1.x = GetBankPosition(slot, 2);
- sprite->pos1.y = GetBankPosition(slot, 3);
+ sprite->pos1.x = GetBattlerSpriteCoord(slot, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(slot, 3);
}
sprite->pos2.x = (gSineTable[gBattleAnimArgs[0]] * gBattleAnimArgs[1]) >> 8;
diff --git a/src/battle/anim/silhouette.c b/src/battle/anim/silhouette.c
index a3147f598..00bb24762 100644
--- a/src/battle/anim/silhouette.c
+++ b/src/battle/anim/silhouette.c
@@ -15,7 +15,7 @@ static void sub_80CB438(u8 taskId);
void sub_80CB340(u8 taskId)
{
- u8 spriteId = GetAnimBankSpriteId(1);
+ u8 spriteId = GetAnimBattlerSpriteId(1);
if (gSprites[spriteId].invisible)
{
DestroyAnimVisualTask(taskId);
@@ -32,10 +32,10 @@ void sub_80CB340(u8 taskId)
void sub_80CB3A8(u8 taskId)
{
- u8 spriteId = GetAnimBankSpriteId(1);
+ u8 spriteId = GetAnimBattlerSpriteId(1);
gTasks[taskId].data[10] += gTasks[taskId].data[0];
gSprites[spriteId].pos2.x = gTasks[taskId].data[10] >> 8;
- if (GetBankSide(gAnimBankTarget))
+ if (GetBattlerSide(gAnimBankTarget))
{
gSprites[spriteId].pos2.x = -gSprites[spriteId].pos2.x;
}
@@ -57,7 +57,7 @@ void sub_80CB438(u8 taskId)
{
if (gTasks[taskId].data[0] == 0)
{
- u8 spriteId = GetAnimBankSpriteId(1);
+ u8 spriteId = GetAnimBattlerSpriteId(1);
sub_8078F40(spriteId);
gSprites[spriteId].pos2.x = 0;
gSprites[spriteId].pos2.y = 0;
diff --git a/src/battle/anim/slash.c b/src/battle/anim/slash.c
index 306968111..f71bc6eaa 100644
--- a/src/battle/anim/slash.c
+++ b/src/battle/anim/slash.c
@@ -8,6 +8,9 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80CDD74(struct Sprite* sprite);
+void sub_80CDDDC(struct Sprite* sprite);
+void sub_80CDE24(struct Sprite* sprite);
static void sub_80CDE78(struct Sprite* sprite);
static void sub_80CDEB0(struct Sprite* sprite);
static void sub_80CDEC0(struct Sprite* sprite);
@@ -15,17 +18,71 @@ static void sub_80CDEC0(struct Sprite* sprite);
// slash (a cutting animation)
// Used in Slash and False Swipe.
+const union AnimCmd gSpriteAnim_83D6E14[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(16, 4),
+ ANIMCMD_FRAME(32, 4),
+ ANIMCMD_FRAME(48, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D6E28[] =
+{
+ ANIMCMD_FRAME(48, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D6E30[] =
+{
+ gSpriteAnim_83D6E14,
+ gSpriteAnim_83D6E28,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D6E38 =
+{
+ .tileTag = 10183,
+ .paletteTag = 10183,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D6E30,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CDD74,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D6E50 =
+{
+ .tileTag = 10286,
+ .paletteTag = 10286,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D6E30,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CDDDC,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D6E68 =
+{
+ .tileTag = 10286,
+ .paletteTag = 10286,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D6E30,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CDE24,
+};
+
void sub_80CDD74(struct Sprite* sprite)
{
if (gBattleAnimArgs[0] == 0)
{
- sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2) + gBattleAnimArgs[1];
- sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3) + gBattleAnimArgs[2];
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 2) + gBattleAnimArgs[1];
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 3) + gBattleAnimArgs[2];
}
else
{
- sprite->pos1.x = GetBankPosition(gAnimBankTarget, 2) + gBattleAnimArgs[1];
- sprite->pos1.y = GetBankPosition(gAnimBankTarget, 3) + gBattleAnimArgs[2];
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankTarget, 2) + gBattleAnimArgs[1];
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankTarget, 3) + gBattleAnimArgs[2];
}
sprite->data[0] = 0;
@@ -36,23 +93,23 @@ void sub_80CDD74(struct Sprite* sprite)
void sub_80CDDDC(struct Sprite* sprite)
{
- sprite->pos1.x = GetBankPosition(gAnimBankTarget, 2) + 0xFFD0;
- sprite->pos1.y = GetBankPosition(gAnimBankTarget, 3);
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankTarget, 2) + 0xFFD0;
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankTarget, 3);
StoreSpriteCallbackInData(sprite, sub_80CDE78);
sprite->callback = sub_8078600;
}
void sub_80CDE24(struct Sprite* sprite)
{
- sprite->pos1.x = sprite->pos1.x = GetBankPosition(gAnimBankTarget, 2) + 0xFFD0 + gBattleAnimArgs[0];
- sprite->pos1.y = GetBankPosition(gAnimBankTarget, 3);
+ sprite->pos1.x = sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankTarget, 2) + 0xFFD0 + gBattleAnimArgs[0];
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankTarget, 3);
StartSpriteAnim(sprite, 1);
sprite->data[0] = 0;
sprite->data[1] = 0;
sprite->callback = sub_80CDEC0;
}
-void sub_80CDE78(struct Sprite* sprite)
+static void sub_80CDE78(struct Sprite* sprite)
{
if (++sprite->data[0] > 8)
{
@@ -64,14 +121,14 @@ void sub_80CDE78(struct Sprite* sprite)
}
}
-void sub_80CDEB0(struct Sprite* sprite)
+static void sub_80CDEB0(struct Sprite* sprite)
{
sprite->data[0] = 0;
sprite->data[1] = 0;
sprite->callback = sub_80CDEC0;
}
-void sub_80CDEC0(struct Sprite* sprite)
+static void sub_80CDEC0(struct Sprite* sprite)
{
if (++sprite->data[0] > 1)
{
diff --git a/src/battle/anim/sleep.c b/src/battle/anim/sleep.c
index 0f0e54f80..40b984be7 100644
--- a/src/battle/anim/sleep.c
+++ b/src/battle/anim/sleep.c
@@ -8,15 +8,72 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80CD328(struct Sprite* sprite);
static void sub_80CD394(struct Sprite* sprite);
// sleep (the "ZZZ" graphical effect)
// Used by Rest and the sleep turn when the Pokemon is still asleep.
+const union AnimCmd gSpriteAnim_83D6D20[] =
+{
+ ANIMCMD_FRAME(0, 40),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D6D28[] =
+{
+ gSpriteAnim_83D6D20,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D6D2C[] =
+{
+ AFFINEANIMCMD_FRAME(0x14, 0x14, -30, 0),
+ AFFINEANIMCMD_FRAME(0x8, 0x8, 1, 24),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D6D44[] =
+{
+ AFFINEANIMCMD_LOOP(0),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 24),
+ AFFINEANIMCMD_LOOP(10),
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D6D5C[] =
+{
+ AFFINEANIMCMD_FRAME(0x14, 0x14, 30, 0),
+ AFFINEANIMCMD_FRAME(0x8, 0x8, -1, 24),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D6D74[] =
+{
+ AFFINEANIMCMD_LOOP(0),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -1, 24),
+ AFFINEANIMCMD_LOOP(10),
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D6D8C[] =
+{
+ gSpriteAffineAnim_83D6D2C,
+ gSpriteAffineAnim_83D6D5C,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D6D94 =
+{
+ .tileTag = 10228,
+ .paletteTag = 10228,
+ .oam = &gOamData_837DF94,
+ .anims = gSpriteAnimTable_83D6D28,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D6D8C,
+ .callback = sub_80CD328,
+};
+
void sub_80CD328(struct Sprite* sprite)
{
sub_8078650(sprite);
- if (GetBankSide(gAnimBankAttacker) == 0)
+ if (GetBattlerSide(gAnimBankAttacker) == 0)
{
sprite->pos1.x += gBattleAnimArgs[0];
sprite->pos1.y += gBattleAnimArgs[1];
@@ -33,7 +90,7 @@ void sub_80CD328(struct Sprite* sprite)
sprite->callback = sub_80CD394;
}
-void sub_80CD394(struct Sprite* sprite)
+static void sub_80CD394(struct Sprite* sprite)
{
sprite->pos2.y = -(sprite->data[0] / 0x28);
sprite->pos2.x = sprite->data[4] / 10;
diff --git a/src/battle/anim/slice.c b/src/battle/anim/slice.c
index 80c58dddf..4da414cbf 100644
--- a/src/battle/anim/slice.c
+++ b/src/battle/anim/slice.c
@@ -8,8 +8,46 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void AnimCuttingSlice(struct Sprite* sprite);
+void sub_80CC9BC(struct Sprite* sprite);
static void AnimSliceStep(struct Sprite* sprite);
+const union AnimCmd gSpriteAnim_83D6B10[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_FRAME(16, 5),
+ ANIMCMD_FRAME(32, 5),
+ ANIMCMD_FRAME(48, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D6B24[] =
+{
+ gSpriteAnim_83D6B10,
+};
+
+const struct SpriteTemplate gCuttingSliceSpriteTemplate =
+{
+ .tileTag = 10138,
+ .paletteTag = 10138,
+ .oam = &gOamData_837E054,
+ .anims = gSpriteAnimTable_83D6B24,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimCuttingSlice,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D6B40 =
+{
+ .tileTag = 10138,
+ .paletteTag = 10138,
+ .oam = &gOamData_837E054,
+ .anims = gSpriteAnimTable_83D6B24,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CC9BC,
+};
+
// Moves the sprite in a diagonally slashing motion across the target mon.
// Used by moves such as MOVE_CUT and MOVE_AERIAL_ACE.
// arg 0: initial x pixel offset
@@ -17,9 +55,9 @@ static void AnimSliceStep(struct Sprite* sprite);
// arg 2: slice direction; 0 = right-to-left, 1 = left-to-right
void AnimCuttingSlice(struct Sprite* sprite)
{
- sprite->pos1.x = GetBankPosition(gAnimBankTarget, 0);
- sprite->pos1.y = GetBankPosition(gAnimBankTarget, 1);
- if (GetBankSide(gAnimBankTarget) == 0)
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankTarget, 0);
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankTarget, 1);
+ if (GetBattlerSide(gAnimBankTarget) == 0)
sprite->pos1.y += 8;
sprite->callback = AnimSliceStep;
@@ -48,28 +86,28 @@ void sub_80CC9BC(struct Sprite* sprite)
switch (gBattleAnimArgs[3])
{
case 1:
- a = GetBankPosition(gAnimBankTarget ^ 2, 0);
- b = GetBankPosition(gAnimBankTarget ^ 2, 1);
+ a = GetBattlerSpriteCoord(gAnimBankTarget ^ 2, 0);
+ b = GetBattlerSpriteCoord(gAnimBankTarget ^ 2, 1);
break;
case 2:
- a = GetBankPosition(gAnimBankTarget, 0);
- b = GetBankPosition(gAnimBankTarget, 1);
+ a = GetBattlerSpriteCoord(gAnimBankTarget, 0);
+ b = GetBattlerSpriteCoord(gAnimBankTarget, 1);
if (IsAnimBankSpriteVisible(gAnimBankTarget ^ 2))
{
- a = (GetBankPosition(gAnimBankTarget ^ 2, 0) + a) / 2;
- b = (GetBankPosition(gAnimBankTarget ^ 2, 1) + b) / 2;
+ a = (GetBattlerSpriteCoord(gAnimBankTarget ^ 2, 0) + a) / 2;
+ b = (GetBattlerSpriteCoord(gAnimBankTarget ^ 2, 1) + b) / 2;
}
break;
case 0:
default:
- a = GetBankPosition(gAnimBankTarget, 0);
- b = GetBankPosition(gAnimBankTarget, 1);
+ a = GetBattlerSpriteCoord(gAnimBankTarget, 0);
+ b = GetBattlerSpriteCoord(gAnimBankTarget, 1);
break;
}
sprite->pos1.x = a;
sprite->pos1.y = b;
- if (GetBankSide(gAnimBankTarget) == 0)
+ if (GetBattlerSide(gAnimBankTarget) == 0)
sprite->pos1.y += 8;
sprite->callback = AnimSliceStep;
diff --git a/src/battle/anim/smoke.c b/src/battle/anim/smoke.c
deleted file mode 100644
index 7ab873e63..000000000
--- a/src/battle/anim/smoke.c
+++ /dev/null
@@ -1,22 +0,0 @@
-#include "global.h"
-#include "rom_8077ABC.h"
-#include "trig.h"
-#include "battle_anim.h"
-#include "sound.h"
-
-extern s16 gBattleAnimArgs[];
-extern u8 gAnimBankAttacker;
-extern u8 gAnimBankTarget;
-
-// smoke (smoke on the ground around a sprite.)
-// Used in Extremespeed.
-
-void sub_80D1A70(struct Sprite* sprite)
-{
- sprite->invisible = gTasks[sprite->data[0]].data[5];
- if (sprite->animEnded)
- {
- gTasks[sprite->data[0]].data[sprite->data[1]]--;
- DestroySprite(sprite);
- }
-}
diff --git a/src/battle/anim/sonic.c b/src/battle/anim/sonic.c
index 1501f51f1..0494c42ed 100644
--- a/src/battle/anim/sonic.c
+++ b/src/battle/anim/sonic.c
@@ -3,11 +3,114 @@
#include "trig.h"
#include "battle_anim.h"
#include "sound.h"
+#include "battle.h"
#include "battle_anim_80CA710.h"
extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+extern u8 gBanksBySide[];
+extern u16 gBattleTypeFlags;
+
+extern void sub_80D4CA4(struct Sprite *sprite);
+
+void AnimSonicBoomProjectile(struct Sprite* sprite);
+void sub_80CF8B8(struct Sprite* sprite);
+
+const struct SpriteTemplate gSonicBoomSpriteTemplate =
+{
+ .tileTag = 10003,
+ .paletteTag = 10003,
+ .oam = &gOamData_837E134,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimSonicBoomProjectile,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83D74BC =
+{
+ .tileTag = 10003,
+ .paletteTag = 10003,
+ .oam = &gOamData_837E074,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CF8B8,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D74D4[] =
+{
+ AFFINEANIMCMD_FRAME(0x20, 0x20, 0, 0),
+ AFFINEANIMCMD_FRAME(0x7, 0x7, 0, -56),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D74EC[] =
+{
+ AFFINEANIMCMD_FRAME(0x5, 0x5, 0, 10),
+ AFFINEANIMCMD_FRAME(0xFFF6, 0xFFF6, 0, 10),
+ AFFINEANIMCMD_FRAME(0xA, 0xA, 0, 10),
+ AFFINEANIMCMD_FRAME(0xFFF6, 0xFFF6, 0, 10),
+ AFFINEANIMCMD_FRAME(0xA, 0xA, 0, 10),
+ AFFINEANIMCMD_FRAME(0xFFF6, 0xFFF6, 0, 10),
+ AFFINEANIMCMD_FRAME(0xA, 0xA, 0, 10),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D752C[] =
+{
+ gSpriteAffineAnim_83D74D4,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D7530[] =
+{
+ gSpriteAffineAnim_83D74EC,
+};
+
+const struct SpriteTemplate gSupersonicWaveSpriteTemplate =
+{
+ .tileTag = 10163,
+ .paletteTag = 10163,
+ .oam = &gOamData_837E034,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D752C,
+ .callback = TranslateAnimSpriteToTargetMonLocation,
+};
+
+const struct SpriteTemplate gScreechWaveSpriteTemplate =
+{
+ .tileTag = 10164,
+ .paletteTag = 10164,
+ .oam = &gOamData_837E034,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D752C,
+ .callback = TranslateAnimSpriteToTargetMonLocation,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D7564 =
+{
+ .tileTag = 10260,
+ .paletteTag = 10260,
+ .oam = &gOamData_837E03C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D752C,
+ .callback = TranslateAnimSpriteToTargetMonLocation,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D757C =
+{
+ .tileTag = 10288,
+ .paletteTag = 10288,
+ .oam = &gOamData_837E034,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D7530,
+ .callback = sub_80D4CA4,
+};
// Moves a projectile towards the target mon. The sprite is rotated to be pointing
// in the same direction it's moving.
@@ -26,7 +129,7 @@ void AnimSonicBoomProjectile(struct Sprite* sprite)
{
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
}
- else if (GetBankSide(gAnimBankAttacker) != 0)
+ else if (GetBattlerSide(gAnimBankAttacker) != 0)
{
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
@@ -34,8 +137,8 @@ void AnimSonicBoomProjectile(struct Sprite* sprite)
}
InitAnimSpritePos(sprite, 1);
- targetXPos = GetBankPosition(gAnimBankTarget, 2) + gBattleAnimArgs[2];
- targetYPos = GetBankPosition(gAnimBankTarget, 3) + gBattleAnimArgs[3];
+ targetXPos = GetBattlerSpriteCoord(gAnimBankTarget, 2) + gBattleAnimArgs[2];
+ targetYPos = GetBattlerSpriteCoord(gAnimBankTarget, 3) + gBattleAnimArgs[3];
rotation = ArcTan2Neg(targetXPos - sprite->pos1.x, targetYPos - sprite->pos1.y);
rotation += 0xF000;
if (IsContest())
@@ -138,3 +241,137 @@ void sub_80CF8B8(struct Sprite* sprite)
sprite->callback = sub_80CF814;
}
}
+
+void sub_80CF9F8(u8 taskId)
+{
+ if (gTasks[taskId].data[1] == 0)
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_80CFA20(u8 taskId)
+{
+ if (gTasks[taskId].data[0]-- <= 0)
+ {
+ u8 spriteId;
+ struct Sprite* sprite;
+ spriteId = CreateSprite(&gSpriteTemplate_83D74BC, gTasks[taskId].data[9], gTasks[taskId].data[10], gTasks[taskId].data[2] - gTasks[taskId].data[1]);
+ sprite = &gSprites[spriteId];
+ switch (gTasks[taskId].data[4])
+ {
+ case 1:
+ sprite->oam.matrixNum |= 24;
+ break;
+ case 2:
+ sprite->oam.matrixNum = 8;
+ break;
+ }
+
+ sprite->data[0] = gTasks[taskId].data[5] - gTasks[taskId].data[6];
+ sprite->data[7] = taskId;
+ gTasks[taskId].data[gTasks[taskId].data[1] + 13] = spriteId;
+ gTasks[taskId].data[0] = gTasks[taskId].data[3];
+ gTasks[taskId].data[1]++;
+ PlaySE12WithPanning(0x9A, BattleAnimAdjustPanning(-0x3F));
+ if (gTasks[taskId].data[1] > 2)
+ gTasks[taskId].func = sub_80CF9F8;
+ }
+}
+
+void sub_80CFB04(u8 taskId)
+{
+ s16 r9 = 0;
+ s16 r6 = 0;
+ s16 sp1 = 0;
+ s16 sp2 = 0;
+ s16 r4;
+
+ if (IsContest())
+ {
+ gTasks[taskId].data[4] = 2;
+ gBattleAnimArgs[0] = -gBattleAnimArgs[0];
+ if (gBattleAnimArgs[2] & 1)
+ gBattleAnimArgs[2] &= ~1;
+ else
+ gBattleAnimArgs[2] |= 1;
+ }
+ else
+ {
+ if ((gBanksBySide[gAnimBankTarget] & 1) == 0)
+ {
+ gTasks[taskId].data[4] = 1;
+ gBattleAnimArgs[0] = -gBattleAnimArgs[0];
+ gBattleAnimArgs[1] = -gBattleAnimArgs[1];
+ if (gBattleAnimArgs[2] & 1)
+ gBattleAnimArgs[2] &= ~1;
+ else
+ gBattleAnimArgs[2] |= 1;
+ }
+ }
+ r6 = gTasks[taskId].data[9] = GetBattlerSpriteCoord(gAnimBankAttacker, 0);
+ r9 = gTasks[taskId].data[10] = GetBattlerSpriteCoord(gAnimBankAttacker, 1);
+ if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ && IsAnimBankSpriteVisible(gAnimBankTarget ^ 2))
+ {
+ SetAverageBattlerPositions(gAnimBankTarget, 0, &sp1, &sp2);
+ }
+ else
+ {
+ sp1 = GetBattlerSpriteCoord(gAnimBankTarget, 0);
+ sp2 = GetBattlerSpriteCoord(gAnimBankTarget, 1);
+ }
+
+ sp1 = gTasks[taskId].data[11] = sp1 + gBattleAnimArgs[0];
+ sp2 = gTasks[taskId].data[12] = sp2 + gBattleAnimArgs[1];
+ if (sp1 >= r6)
+ r4 = sp1 - r6;
+ else
+ r4 = r6 - sp1;
+
+ gTasks[taskId].data[5] = sub_81174C4(r4, sub_81174E0(gBattleAnimArgs[2] & ~1));
+ gTasks[taskId].data[6] = sub_81174C4(gTasks[taskId].data[5], 0x80);
+ gTasks[taskId].data[7] = gBattleAnimArgs[2];
+ if (sp2 >= r9)
+ {
+ r4 = sp2 - r9;
+ gTasks[taskId].data[8] = sub_81174C4(r4, sub_81174E0(gTasks[taskId].data[5])) & ~1;
+ }
+ else
+ {
+ r4 = r9 - sp2;
+ gTasks[taskId].data[8] = sub_81174C4(r4, sub_81174E0(gTasks[taskId].data[5])) | 1;
+ }
+
+ gTasks[taskId].data[3] = gBattleAnimArgs[3];
+ if (gBattleAnimArgs[4] & 0x80)
+ {
+ gBattleAnimArgs[4] ^= 0x80;
+ if (gBattleAnimArgs[4] >= 64)
+ {
+ u16 var = sub_8079E90(gAnimBankTarget) + (gBattleAnimArgs[4] - 64);
+ gTasks[taskId].data[2] = var;
+ }
+ else
+ {
+ u16 var = sub_8079E90(gAnimBankTarget) - gBattleAnimArgs[4];
+ gTasks[taskId].data[2] = var;
+ }
+ }
+ else
+ {
+ if (gBattleAnimArgs[4] >= 64)
+ {
+ u16 var = sub_8079E90(gAnimBankTarget) + (gBattleAnimArgs[4] - 64);
+ gTasks[taskId].data[2] = var;
+ }
+ else
+ {
+ u16 var = sub_8079E90(gAnimBankTarget) - gBattleAnimArgs[4];
+ gTasks[taskId].data[2] = var;
+ }
+ }
+
+ if (gTasks[taskId].data[2] < 3)
+ gTasks[taskId].data[2] = 3;
+
+ gTasks[taskId].func = sub_80CFA20;
+}
diff --git a/src/battle/anim/sonic_task.c b/src/battle/anim/sonic_task.c
deleted file mode 100644
index 260ae544c..000000000
--- a/src/battle/anim/sonic_task.c
+++ /dev/null
@@ -1,152 +0,0 @@
-#include "global.h"
-#include "rom_8077ABC.h"
-#include "trig.h"
-#include "battle_anim.h"
-#include "sound.h"
-#include "battle_anim_80CA710.h"
-#include "battle.h"
-
-extern s16 gBattleAnimArgs[];
-extern u8 gAnimBankAttacker;
-extern u8 gAnimBankTarget;
-
-extern u8 gBanksBySide[];
-extern u16 gBattleTypeFlags;
-extern struct SpriteTemplate gSpriteTemplate_83D74BC;
-
-// sonic_task (the task functions for the "sonic" effect.)
-// Used in Air Cutter and Sonic Boom.
-
-void sub_80CF9F8(u8 taskId)
-{
- if (gTasks[taskId].data[1] == 0)
- DestroyAnimVisualTask(taskId);
-}
-
-void sub_80CFA20(u8 taskId)
-{
- if (gTasks[taskId].data[0]-- <= 0)
- {
- u8 spriteId;
- struct Sprite* sprite;
- spriteId = CreateSprite(&gSpriteTemplate_83D74BC, gTasks[taskId].data[9], gTasks[taskId].data[10], gTasks[taskId].data[2] - gTasks[taskId].data[1]);
- sprite = &gSprites[spriteId];
- switch (gTasks[taskId].data[4])
- {
- case 1:
- sprite->oam.matrixNum |= 24;
- break;
- case 2:
- sprite->oam.matrixNum = 8;
- break;
- }
-
- sprite->data[0] = gTasks[taskId].data[5] - gTasks[taskId].data[6];
- sprite->data[7] = taskId;
- gTasks[taskId].data[gTasks[taskId].data[1] + 13] = spriteId;
- gTasks[taskId].data[0] = gTasks[taskId].data[3];
- gTasks[taskId].data[1]++;
- PlaySE12WithPanning(0x9A, BattleAnimAdjustPanning(-0x3F));
- if (gTasks[taskId].data[1] > 2)
- gTasks[taskId].func = sub_80CF9F8;
- }
-}
-
-void sub_80CFB04(u8 taskId)
-{
- s16 r9 = 0;
- s16 r6 = 0;
- s16 sp1 = 0;
- s16 sp2 = 0;
- s16 r4;
-
- if (IsContest())
- {
- gTasks[taskId].data[4] = 2;
- gBattleAnimArgs[0] = -gBattleAnimArgs[0];
- if (gBattleAnimArgs[2] & 1)
- gBattleAnimArgs[2] &= ~1;
- else
- gBattleAnimArgs[2] |= 1;
- }
- else
- {
- if ((gBanksBySide[gAnimBankTarget] & 1) == 0)
- {
- gTasks[taskId].data[4] = 1;
- gBattleAnimArgs[0] = -gBattleAnimArgs[0];
- gBattleAnimArgs[1] = -gBattleAnimArgs[1];
- if (gBattleAnimArgs[2] & 1)
- gBattleAnimArgs[2] &= ~1;
- else
- gBattleAnimArgs[2] |= 1;
- }
- }
- r6 = gTasks[taskId].data[9] = GetBankPosition(gAnimBankAttacker, 0);
- r9 = gTasks[taskId].data[10] = GetBankPosition(gAnimBankAttacker, 1);
- if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
- && IsAnimBankSpriteVisible(gAnimBankTarget ^ 2))
- {
- SetAverageBattlerPositions(gAnimBankTarget, 0, &sp1, &sp2);
- }
- else
- {
- sp1 = GetBankPosition(gAnimBankTarget, 0);
- sp2 = GetBankPosition(gAnimBankTarget, 1);
- }
-
- sp1 = gTasks[taskId].data[11] = sp1 + gBattleAnimArgs[0];
- sp2 = gTasks[taskId].data[12] = sp2 + gBattleAnimArgs[1];
- if (sp1 >= r6)
- r4 = sp1 - r6;
- else
- r4 = r6 - sp1;
-
- gTasks[taskId].data[5] = sub_81174C4(r4, sub_81174E0(gBattleAnimArgs[2] & ~1));
- gTasks[taskId].data[6] = sub_81174C4(gTasks[taskId].data[5], 0x80);
- gTasks[taskId].data[7] = gBattleAnimArgs[2];
- if (sp2 >= r9)
- {
- r4 = sp2 - r9;
- gTasks[taskId].data[8] = sub_81174C4(r4, sub_81174E0(gTasks[taskId].data[5])) & ~1;
- }
- else
- {
- r4 = r9 - sp2;
- gTasks[taskId].data[8] = sub_81174C4(r4, sub_81174E0(gTasks[taskId].data[5])) | 1;
- }
-
- gTasks[taskId].data[3] = gBattleAnimArgs[3];
- if (gBattleAnimArgs[4] & 0x80)
- {
- gBattleAnimArgs[4] ^= 0x80;
- if (gBattleAnimArgs[4] >= 64)
- {
- u16 var = sub_8079E90(gAnimBankTarget) + (gBattleAnimArgs[4] - 64);
- gTasks[taskId].data[2] = var;
- }
- else
- {
- u16 var = sub_8079E90(gAnimBankTarget) - gBattleAnimArgs[4];
- gTasks[taskId].data[2] = var;
- }
- }
- else
- {
- if (gBattleAnimArgs[4] >= 64)
- {
- u16 var = sub_8079E90(gAnimBankTarget) + (gBattleAnimArgs[4] - 64);
- gTasks[taskId].data[2] = var;
- }
- else
- {
- u16 var = sub_8079E90(gAnimBankTarget) - gBattleAnimArgs[4];
- gTasks[taskId].data[2] = var;
- }
- }
-
- if (gTasks[taskId].data[2] < 3)
- gTasks[taskId].data[2] = 3;
-
- gTasks[taskId].func = sub_80CFA20;
-}
diff --git a/src/battle/anim/spin_finger.c b/src/battle/anim/spin_finger.c
deleted file mode 100644
index 8eb060358..000000000
--- a/src/battle/anim/spin_finger.c
+++ /dev/null
@@ -1,73 +0,0 @@
-#include "global.h"
-#include "rom_8077ABC.h"
-#include "trig.h"
-#include "battle_anim.h"
-#include "sound.h"
-
-extern s16 gBattleAnimArgs[];
-extern u8 gAnimBankAttacker;
-extern u8 gAnimBankTarget;
-
-extern void sub_80CF088(struct Sprite* sprite);
-static void sub_80CF138(struct Sprite* sprite);
-static void sub_80CF158(struct Sprite* sprite);
-
-// spin_finger
-// Used in Follow Me.
-
-void sub_80CF0BC(struct Sprite* sprite)
-{
- u8 bank;
- if (gBattleAnimArgs[0] == 0)
- bank = gAnimBankAttacker;
- else
- bank = gAnimBankTarget;
-
- sprite->pos1.x = GetBankPosition(bank, 0);
- sprite->pos1.y = sub_807A100(bank, 2);
- if (sprite->pos1.y <= 9)
- sprite->pos1.y = 10;
-
- sprite->data[0] = 1;
- sprite->data[1] = 0;
- sprite->data[2] = sprite->subpriority;
- sprite->data[3] = sprite->subpriority + 4;
- sprite->data[4] = 0;
- StoreSpriteCallbackInData(sprite, sub_80CF138);
- sprite->callback = sub_80785E4;
-}
-
-void sub_80CF138(struct Sprite* sprite)
-{
- if (++sprite->data[4] > 12)
- sprite->callback = sub_80CF158;
-}
-
-void sub_80CF158(struct Sprite* sprite)
-{
- s16 temp;
- s16 temp2;
- sprite->data[1] += 4;
- if (sprite->data[1] > 0xFE)
- {
- if (--sprite->data[0] == 0)
- {
- sprite->pos2.x = 0;
- sprite->callback = sub_80CF088;
- return;
- }
- else
- {
- sprite->data[1] &= 0xFF;
- }
- }
-
- if (sprite->data[1] > 0x4F)
- sprite->subpriority = sprite->data[3];
-
- if (sprite->data[1] > 0x9F)
- sprite->subpriority = sprite->data[2];
-
- temp = gSineTable[sprite->data[1]];
- sprite->pos2.x = (temp2 = temp >> 3) + (temp2 >> 1);
-}
diff --git a/src/battle/anim/spit.c b/src/battle/anim/spit.c
index 1e65ba53e..792d7e0eb 100644
--- a/src/battle/anim/spit.c
+++ b/src/battle/anim/spit.c
@@ -8,10 +8,35 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80D28AC(struct Sprite* sprite);
+
// spit (hurls sprites outward from the pokemon. Similar to orbit_fast, but takes another argument.)
// Used in Spit Up.
-void sub_80D287C(struct Sprite* sprite)
+const union AffineAnimCmd gSpriteAffineAnim_83D7B44[] =
+{
+ AFFINEANIMCMD_FRAME(0x80, 0x80, 0, 0),
+ AFFINEANIMCMD_FRAME(0x8, 0x8, 0, 1),
+ AFFINEANIMCMD_JUMP(1),
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D7B5C[] =
+{
+ gSpriteAffineAnim_83D7B44,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D7B60 =
+{
+ .tileTag = 10237,
+ .paletteTag = 10237,
+ .oam = &gOamData_837DFE4,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D7B5C,
+ .callback = sub_80D28AC,
+};
+
+static void sub_80D287C(struct Sprite* sprite)
{
sprite->pos2.x += sprite->data[0];
sprite->pos2.y += sprite->data[1];
@@ -21,8 +46,8 @@ void sub_80D287C(struct Sprite* sprite)
void sub_80D28AC(struct Sprite* sprite)
{
- sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2);
- sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3);
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 3);
sprite->data[0] = Sin(gBattleAnimArgs[0], 10);
sprite->data[1] = Cos(gBattleAnimArgs[0], 7);
sprite->data[2] = gBattleAnimArgs[1];
diff --git a/src/battle/anim/splash.c b/src/battle/anim/splash.c
index 570ef0dca..c01748953 100644
--- a/src/battle/anim/splash.c
+++ b/src/battle/anim/splash.c
@@ -8,13 +8,19 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
-extern struct AffineAnimFrameCmd gUnknown_083D76F4;
-
static void sub_80D07AC(u8 taskId);
// splash (splash effect of hopping up and down)
// Used in Splash, Mud Sport, and Sketch.
+const union AffineAnimCmd gSpriteAffineAnim_83D76F4[] =
+{
+ AFFINEANIMCMD_FRAME(-6, 4, 0, 8),
+ AFFINEANIMCMD_FRAME(10, -10, 0, 8),
+ AFFINEANIMCMD_FRAME(-4, 6, 0, 8),
+ AFFINEANIMCMD_END,
+};
+
void sub_80D074C(u8 taskId)
{
struct Task* task = &gTasks[taskId];
@@ -24,13 +30,13 @@ void sub_80D074C(u8 taskId)
}
else
{
- u8 spriteId = GetAnimBankSpriteId(gBattleAnimArgs[0]);
+ u8 spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
task->data[0] = spriteId;
task->data[1] = 0;
task->data[2] = gBattleAnimArgs[1];
task->data[3] = 0;
task->data[4] = 0;
- sub_80798F4(task, spriteId, &gUnknown_083D76F4);
+ sub_80798F4(task, spriteId, &gSpriteAffineAnim_83D76F4);
task->func = sub_80D07AC;
}
}
@@ -78,7 +84,7 @@ void sub_80D07AC(u8 taskId)
}
else
{
- sub_80798F4(task, task->data[0], &gUnknown_083D76F4);
+ sub_80798F4(task, task->data[0], &gSpriteAffineAnim_83D76F4);
task->data[1] = 0;
}
}
diff --git a/src/battle/anim/startle.c b/src/battle/anim/startle.c
index 50e78af37..b23c7ac9e 100644
--- a/src/battle/anim/startle.c
+++ b/src/battle/anim/startle.c
@@ -8,18 +8,23 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
-extern struct AffineAnimFrameCmd gUnknown_083D7A98;
-
// startle (the pokemon sprite shrivels upward and restores after a brief time.)
// Used in Fake Out, Trick, and Astonish.
+const union AffineAnimCmd gSpriteAffineAnim_83D7A98[] =
+{
+ AFFINEANIMCMD_FRAME(0x000A, 0xFFF3, 0x00, 0x0A),
+ AFFINEANIMCMD_FRAME(0xFFF6, 0x000D, 0x00, 0x0A),
+ AFFINEANIMCMD_END,
+};
+
// opponent
void sub_80D1E38(u8 taskId)
{
- u8 spriteId = GetAnimBankSpriteId(1);
+ u8 spriteId = GetAnimBattlerSpriteId(1);
if (++gTasks[taskId].data[0] == 1)
{
- sub_80798F4(&gTasks[taskId], GetAnimBankSpriteId(1), &gUnknown_083D7A98);
+ sub_80798F4(&gTasks[taskId], GetAnimBattlerSpriteId(1), &gSpriteAffineAnim_83D7A98);
gSprites[spriteId].pos2.x = 4;
}
else
@@ -37,10 +42,10 @@ void sub_80D1E38(u8 taskId)
// player
void sub_80D1EC8(u8 taskId)
{
- u8 spriteId = GetAnimBankSpriteId(0);
+ u8 spriteId = GetAnimBattlerSpriteId(0);
if (++gTasks[taskId].data[0] == 1)
{
- sub_80798F4(&gTasks[taskId], GetAnimBankSpriteId(0), &gUnknown_083D7A98);
+ sub_80798F4(&gTasks[taskId], GetAnimBattlerSpriteId(0), &gSpriteAffineAnim_83D7A98);
gSprites[spriteId].pos2.x = 4;
}
else
diff --git a/src/battle/anim/strike.c b/src/battle/anim/strike.c
index bfa1dc4f7..79dd833a9 100644
--- a/src/battle/anim/strike.c
+++ b/src/battle/anim/strike.c
@@ -8,11 +8,52 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80CE670(struct Sprite* sprite);
static void sub_80CE798(struct Sprite* sprite);
// strike (A red strike towards the opponent.)
// Used in Horn Attack, Fury Attack, and Horn Drill.
+const union AnimCmd gSpriteAnim_83D7010[] =
+{
+ ANIMCMD_FRAME(0, 2),
+ ANIMCMD_FRAME(16, 2),
+ ANIMCMD_FRAME(32, 2),
+ ANIMCMD_FRAME(48, 3),
+ ANIMCMD_FRAME(64, 5),
+ ANIMCMD_FRAME(80, 3),
+ ANIMCMD_FRAME(96, 2),
+ ANIMCMD_FRAME(0, 2),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D7034[] =
+{
+ gSpriteAnim_83D7010,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D7038 =
+{
+ .tileTag = 10031,
+ .paletteTag = 10031,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D7034,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80793C4,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D7050 =
+{
+ .tileTag = 10020,
+ .paletteTag = 10020,
+ .oam = &gOamData_837DF34,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CE670,
+};
+
void sub_80CE670(struct Sprite* sprite)
{
if (gBattleAnimArgs[2] <= 1)
@@ -23,8 +64,8 @@ void sub_80CE670(struct Sprite* sprite)
sprite->data[0] = 0;
sprite->data[1] = gBattleAnimArgs[2];
- sprite->pos1.x = GetBankPosition(gAnimBankTarget, 2) + gBattleAnimArgs[0];
- sprite->pos1.y = GetBankPosition(gAnimBankTarget, 3) + gBattleAnimArgs[1];
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankTarget, 2) + gBattleAnimArgs[0];
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankTarget, 3) + gBattleAnimArgs[1];
sprite->data[6] = sprite->pos1.x;
sprite->data[7] = sprite->pos1.y;
if (IsContest() != 0)
@@ -37,7 +78,7 @@ void sub_80CE670(struct Sprite* sprite)
sprite->data[4] = sprite->pos1.y << 7;
sprite->data[5] = -0xA00 / sprite->data[1];
}
- else if (GetBankSide(gAnimBankAttacker) == 0)
+ else if (GetBattlerSide(gAnimBankAttacker) == 0)
{
sprite->pos1.x -= 40;
sprite->pos1.y += 20;
@@ -60,7 +101,7 @@ void sub_80CE670(struct Sprite* sprite)
sprite->callback = sub_80CE798;
}
-void sub_80CE798(struct Sprite* sprite)
+static void sub_80CE798(struct Sprite* sprite)
{
sprite->data[2] += sprite->data[3];
sprite->data[4] += sprite->data[5];
diff --git a/src/battle/anim/struggle.c b/src/battle/anim/struggle.c
index 20dbaf2dc..2bcf3727e 100644
--- a/src/battle/anim/struggle.c
+++ b/src/battle/anim/struggle.c
@@ -7,8 +7,44 @@ extern s16 gBattleAnimArgs[8];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80D2C38(struct Sprite *sprite);
static void sub_80D2CC4(struct Sprite *);
+const union AnimCmd gSpriteAnim_83D7C60[] =
+{
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(16, 8),
+ ANIMCMD_FRAME(32, 8),
+ ANIMCMD_FRAME(16, 8),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D7C74[] =
+{
+ ANIMCMD_FRAME(16, 8, .hFlip = TRUE),
+ ANIMCMD_FRAME(32, 8, .hFlip = TRUE),
+ ANIMCMD_FRAME(16, 8, .hFlip = TRUE),
+ ANIMCMD_FRAME(0, 8, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D7C88[] =
+{
+ gSpriteAnim_83D7C60,
+ gSpriteAnim_83D7C74,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D7C90 =
+{
+ .tileTag = 10215,
+ .paletteTag = 10215,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D7C88,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D2C38,
+};
+
void sub_80D2C38(struct Sprite *sprite)
{
if (gBattleAnimArgs[2] == 0)
@@ -19,13 +55,13 @@ void sub_80D2C38(struct Sprite *sprite)
{
if (gBattleAnimArgs[0] == 0)
{
- sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2);
- sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3);
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 3);
}
else
{
- sprite->pos1.x = GetBankPosition(gAnimBankTarget, 2);
- sprite->pos1.y = GetBankPosition(gAnimBankTarget, 3);
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankTarget, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankTarget, 3);
}
if (gBattleAnimArgs[1] == 0)
diff --git a/src/battle/anim/sunlight.c b/src/battle/anim/sunlight.c
index 88112c74a..7efc85b37 100644
--- a/src/battle/anim/sunlight.c
+++ b/src/battle/anim/sunlight.c
@@ -2,9 +2,34 @@
#include "battle_anim.h"
#include "rom_8077ABC.h"
+void sub_80D517C(struct Sprite *sprite);
+
// sunlight (creates sunlight orbs)
// Used in Sunny Day
+const union AffineAnimCmd gSpriteAffineAnim_83D9594[] =
+{
+ AFFINEANIMCMD_FRAME(0x50, 0x50, 0, 0),
+ AFFINEANIMCMD_FRAME(0x2, 0x2, 10, 1),
+ AFFINEANIMCMD_JUMP(1),
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D95AC[] =
+{
+ gSpriteAffineAnim_83D9594,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D95B0 =
+{
+ .tileTag = 10157,
+ .paletteTag = 10157,
+ .oam = &gOamData_837E0B4,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D95AC,
+ .callback = sub_80D517C,
+};
+
void sub_80D517C(struct Sprite *sprite)
{
sprite->pos1.x = 0;
diff --git a/src/battle/anim/swipe.c b/src/battle/anim/swipe.c
index 922b11a5f..df7a0e91f 100644
--- a/src/battle/anim/swipe.c
+++ b/src/battle/anim/swipe.c
@@ -4,6 +4,43 @@
extern s16 gBattleAnimArgs[8];
+void sub_80D2BE8(struct Sprite *sprite);
+
+const union AnimCmd gSpriteAnim_83D7C18[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(16, 4),
+ ANIMCMD_FRAME(32, 4),
+ ANIMCMD_FRAME(48, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D7C2C[] =
+{
+ ANIMCMD_FRAME(0, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(16, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(32, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(48, 4, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D7C40[] =
+{
+ gSpriteAnim_83D7C18,
+ gSpriteAnim_83D7C2C,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D7C48 =
+{
+ .tileTag = 10222,
+ .paletteTag = 10222,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D7C40,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D2BE8,
+};
+
void sub_80D2BE8(struct Sprite *sprite)
{
if (sprite->data[0] == 0)
diff --git a/src/battle/anim/switch.c b/src/battle/anim/switch.c
index c4082b6aa..fcb1d9fc3 100644
--- a/src/battle/anim/switch.c
+++ b/src/battle/anim/switch.c
@@ -7,9 +7,11 @@
extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+extern const union AffineAnimCmd gSpriteAffineAnim_83D66BC[];
+extern const union AffineAnimCmd gSpriteAffineAnim_83D66DC[];
+extern const union AnimCmd *const gSpriteAnimTable_83D66B8[];
-extern s8 gUnknown_083D680C[11][3];
-
+void sub_80CBBF0(struct Sprite* sprite);
static void sub_80CBC8C(struct Sprite* sprite);
static void sub_80CBCF8(struct Sprite* sprite);
static void sub_80CBDB0(struct Sprite* sprite);
@@ -17,6 +19,56 @@ static void sub_80CBDB0(struct Sprite* sprite);
// switch (makes an item and circles it from side to side on the field.)
// Used in Trick.
+
+const union AffineAnimCmd gSpriteAffineAnim_83D6794[] = {
+ AFFINEANIMCMD_FRAME(0, 0, 0, 3),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D67A4[] = {
+ AFFINEANIMCMD_FRAME(0, -10, 0, 3),
+ AFFINEANIMCMD_FRAME(0, -6, 0, 3),
+ AFFINEANIMCMD_FRAME(0, -2, 0, 3),
+ AFFINEANIMCMD_FRAME(0, 0, 0, 3),
+ AFFINEANIMCMD_FRAME(0, 2, 0, 3),
+ AFFINEANIMCMD_FRAME(0, 6, 0, 3),
+ AFFINEANIMCMD_FRAME(0, 10, 0, 3),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D67E4[] = {
+ gSpriteAffineAnim_83D6794,
+ gSpriteAffineAnim_83D67A4,
+ gSpriteAffineAnim_83D66BC,
+ gSpriteAffineAnim_83D66DC,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D67F4 =
+{
+ .tileTag = 10224,
+ .paletteTag = 10224,
+ .oam = &gOamData_837DF94,
+ .anims = gSpriteAnimTable_83D66B8,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D67E4,
+ .callback = sub_80CBBF0,
+};
+
+const s8 gUnknown_083D680C[][3] =
+{
+ {5, 24, 1},
+ {0, 4, 0},
+ {8, 16, -1},
+ {0, 2, 0},
+ {8, 16, 1},
+ {0, 2, 0},
+ {8, 16, 1},
+ {0, 2, 0},
+ {8, 16, 1},
+ {0, 16, 0},
+ {0, 0, 127},
+};
+
void sub_80CBBF0(struct Sprite* sprite)
{
int a;
@@ -27,7 +79,7 @@ void sub_80CBBF0(struct Sprite* sprite)
if (!IsContest())
{
sprite->data[1] = gBattleAnimArgs[1];
- sprite->pos1.x = 0x78;
+ sprite->pos1.x = 120;
}
else
{
@@ -38,13 +90,13 @@ void sub_80CBBF0(struct Sprite* sprite)
b = a;
sprite->data[1] = a - ((b >> 8) << 8);
- sprite->pos1.x = 0x46;
+ sprite->pos1.x = 70;
}
sprite->pos1.y = gBattleAnimArgs[0];
sprite->data[2] = gBattleAnimArgs[0];
sprite->data[4] = 20;
- sprite->pos2.x = Cos(sprite->data[1], 0x3C);
+ sprite->pos2.x = Cos(sprite->data[1], 60);
sprite->pos2.y = Sin(sprite->data[1], 20);
sprite->callback = sub_80CBC8C;
if (sprite->data[1] > 0 && sprite->data[1] < 0xC0)
@@ -54,7 +106,7 @@ void sub_80CBBF0(struct Sprite* sprite)
}
}
-void sub_80CBC8C(struct Sprite* sprite)
+static void sub_80CBC8C(struct Sprite* sprite)
{
switch (sprite->data[3])
{
@@ -84,7 +136,7 @@ void sub_80CBC8C(struct Sprite* sprite)
}
}
-void sub_80CBCF8(struct Sprite* sprite)
+static void sub_80CBCF8(struct Sprite* sprite)
{
if (sprite->data[2] == gUnknown_083D680C[sprite->data[0]][1])
{
@@ -113,12 +165,12 @@ void sub_80CBCF8(struct Sprite* sprite)
}
}
- sprite->pos2.x = Cos(sprite->data[1], 0x3C);
+ sprite->pos2.x = Cos(sprite->data[1], 60);
sprite->pos2.y = Sin(sprite->data[1], 20);
}
}
-void sub_80CBDB0(struct Sprite* sprite)
+static void sub_80CBDB0(struct Sprite* sprite)
{
if (sprite->data[0] > 20)
DestroyAnimSprite(sprite);
diff --git a/src/battle/anim/sword.c b/src/battle/anim/sword.c
index 3367cca07..7fb410224 100644
--- a/src/battle/anim/sword.c
+++ b/src/battle/anim/sword.c
@@ -8,11 +8,36 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80CF690(struct Sprite* sprite);
static void sub_80CF6B4(struct Sprite* sprite);
// sword (sword appears and floats upward.)
// Used in Swords Dance.
+const union AffineAnimCmd gSpriteAffineAnim_83D7468[] =
+{
+ AFFINEANIMCMD_FRAME(0x10, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0x14, 0x0, 0, 12),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 32),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D7488[] =
+{
+ gSpriteAffineAnim_83D7468,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D748C =
+{
+ .tileTag = 10005,
+ .paletteTag = 10005,
+ .oam = &gOamData_837E0FC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D7488,
+ .callback = sub_80CF690,
+};
+
void sub_80CF690(struct Sprite* sprite)
{
InitAnimSpritePos(sprite, 0);
@@ -20,7 +45,7 @@ void sub_80CF690(struct Sprite* sprite)
StoreSpriteCallbackInData(sprite, sub_80CF6B4);
}
-void sub_80CF6B4(struct Sprite* sprite)
+static void sub_80CF6B4(struct Sprite* sprite)
{
sprite->data[0] = 6;
sprite->data[2] = sprite->pos1.x;
diff --git a/src/battle/anim/taunt_finger.c b/src/battle/anim/taunt_finger.c
deleted file mode 100644
index 023e14e45..000000000
--- a/src/battle/anim/taunt_finger.c
+++ /dev/null
@@ -1,56 +0,0 @@
-#include "global.h"
-#include "rom_8077ABC.h"
-#include "trig.h"
-#include "battle_anim.h"
-#include "sound.h"
-
-extern s16 gBattleAnimArgs[];
-extern u8 gAnimBankAttacker;
-extern u8 gAnimBankTarget;
-
-extern void sub_80CEF44(u8 bank, struct Sprite* sprite);
-static void sub_80CF228(struct Sprite* sprite);
-static void sub_80CF264(struct Sprite* sprite);
-
-// taunt_finger
-// Used in Taunt.
-
-void sub_80CF1C8(struct Sprite* sprite)
-{
- u8 bank;
- if (gBattleAnimArgs[0] == 0)
- bank = gAnimBankAttacker;
- else
- bank = gAnimBankTarget;
-
- sub_80CEF44(bank, sprite);
- if (GetBankSide(bank) == 0)
- {
- StartSpriteAnim(sprite, 0);
- sprite->data[0] = 2;
- }
- else
- {
- StartSpriteAnim(sprite, 1);
- sprite->data[0] = 3;
- }
-
- sprite->callback = sub_80CF228;
-}
-
-void sub_80CF228(struct Sprite* sprite)
-{
- if (++sprite->data[1] > 10)
- {
- sprite->data[1] = 0;
- StartSpriteAnim(sprite, sprite->data[0]);
- StoreSpriteCallbackInData(sprite, sub_80CF264);
- sprite->callback = sub_8078600;
- }
-}
-
-void sub_80CF264(struct Sprite* sprite)
-{
- if (++sprite->data[1] > 5)
- DestroyAnimSprite(sprite);
-}
diff --git a/src/battle/anim/tendrils.c b/src/battle/anim/tendrils.c
index 9f57ffd45..55e2c21bb 100644
--- a/src/battle/anim/tendrils.c
+++ b/src/battle/anim/tendrils.c
@@ -7,12 +7,67 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80CB25C(struct Sprite* sprite);
static void sub_80CB298(struct Sprite* sprite);
static void sub_80CB2D4(struct Sprite* sprite);
// tendrils
// Used by Constrict.
+const union AnimCmd gSpriteAnim_83D6528[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(32, 4),
+ ANIMCMD_FRAME(64, 4),
+ ANIMCMD_FRAME(96, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D653C[] =
+{
+ ANIMCMD_FRAME(0, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(32, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(64, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(96, 4, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D6550[] =
+{
+ gSpriteAnim_83D6528,
+ gSpriteAnim_83D653C,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D6558[] = {
+ AFFINEANIMCMD_FRAME(256, 256, 0, 0),
+ AFFINEANIMCMD_FRAME(-11, 0, 0, 6),
+ AFFINEANIMCMD_FRAME(11, 0, 0, 6),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D6578[] = {
+ AFFINEANIMCMD_FRAME(-256, 256, 0, 0),
+ AFFINEANIMCMD_FRAME(11, 0, 0, 6),
+ AFFINEANIMCMD_FRAME(-11, 0, 0, 6),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D6598[] = {
+ gSpriteAffineAnim_83D6558,
+ gSpriteAffineAnim_83D6578,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D65A0 =
+{
+ .tileTag = 10186,
+ .paletteTag = 10186,
+ .oam = &gOamData_837DFBC,
+ .anims = gSpriteAnimTable_83D6550,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D6598,
+ .callback = sub_80CB25C,
+};
+
void sub_80CB25C(struct Sprite* sprite)
{
sub_8078764(sprite, 0);
@@ -23,20 +78,20 @@ void sub_80CB25C(struct Sprite* sprite)
sprite->callback = sub_80CB298;
}
-void sub_80CB298(struct Sprite* sprite)
+static void sub_80CB298(struct Sprite* sprite)
{
if ((u16)gBattleAnimArgs[7] == 0xFFFF)
{
sprite->affineAnimPaused = 0;
- GetAnimBankSpriteId(1);
+ GetAnimBattlerSpriteId(1);
sprite->data[0] = 0x100;
sprite->callback = sub_80CB2D4;
}
}
-void sub_80CB2D4(struct Sprite* sprite)
+static void sub_80CB2D4(struct Sprite* sprite)
{
- GetAnimBankSpriteId(1);
+ GetAnimBattlerSpriteId(1);
if (!sprite->data[2])
{
sprite->data[0] += 11;
diff --git a/src/battle/anim/thought.c b/src/battle/anim/thought.c
index c3ab6f82c..d39520dac 100644
--- a/src/battle/anim/thought.c
+++ b/src/battle/anim/thought.c
@@ -8,19 +8,75 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80CEF9C(struct Sprite* sprite);
static void sub_80CF008(struct Sprite* sprite);
// thought (thought bubble)
// Used in Metronome and Taunt.
+const union AnimCmd gSpriteAnim_83D71C0[] =
+{
+ ANIMCMD_FRAME(0, 2, .hFlip = TRUE),
+ ANIMCMD_FRAME(16, 2, .hFlip = TRUE),
+ ANIMCMD_FRAME(32, 2, .hFlip = TRUE),
+ ANIMCMD_FRAME(48, 2, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D71D4[] =
+{
+ ANIMCMD_FRAME(48, 2, .hFlip = TRUE),
+ ANIMCMD_FRAME(32, 2, .hFlip = TRUE),
+ ANIMCMD_FRAME(16, 2, .hFlip = TRUE),
+ ANIMCMD_FRAME(0, 2, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D71E8[] =
+{
+ ANIMCMD_FRAME(0, 2),
+ ANIMCMD_FRAME(16, 2),
+ ANIMCMD_FRAME(32, 2),
+ ANIMCMD_FRAME(48, 2),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D71FC[] =
+{
+ ANIMCMD_FRAME(48, 2),
+ ANIMCMD_FRAME(32, 2),
+ ANIMCMD_FRAME(16, 2),
+ ANIMCMD_FRAME(0, 2),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D7210[] =
+{
+ gSpriteAnim_83D71C0,
+ gSpriteAnim_83D71E8,
+ gSpriteAnim_83D71D4,
+ gSpriteAnim_83D71FC,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D7220 =
+{
+ .tileTag = 10209,
+ .paletteTag = 10209,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D7210,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CEF9C,
+};
+
void sub_80CEF44(u8 bank, struct Sprite* sprite)
{
- if (GetBankSide(bank) == 0)
+ if (GetBattlerSide(bank) == 0)
sprite->pos1.x = sub_807A100(bank, 5) + 8;
else
sprite->pos1.x = sub_807A100(bank, 4) - 8;
- sprite->pos1.y = GetBankPosition(bank, 3) - (s16)sub_807A100(bank, 0) / 4;
+ sprite->pos1.y = GetBattlerSpriteCoord(bank, 3) - (s16)sub_807A100(bank, 0) / 4;
}
void sub_80CEF9C(struct Sprite* sprite)
@@ -33,7 +89,7 @@ void sub_80CEF9C(struct Sprite* sprite)
bank = gAnimBankTarget;
sub_80CEF44(bank, sprite);
- a = (GetBankSide(bank) == 0) ? 0 : 1;
+ a = (GetBattlerSide(bank) == 0) ? 0 : 1;
sprite->data[0] = gBattleAnimArgs[1];
sprite->data[1] = a + 2;
StartSpriteAnim(sprite, a);
@@ -41,7 +97,7 @@ void sub_80CEF9C(struct Sprite* sprite)
sprite->callback = sub_8078600;
}
-void sub_80CF008(struct Sprite* sprite)
+static void sub_80CF008(struct Sprite* sprite)
{
if (--sprite->data[0] == 0)
{
diff --git a/src/battle/anim/thrashing.c b/src/battle/anim/thrashing.c
index 3fde815ae..38dccb83f 100644
--- a/src/battle/anim/thrashing.c
+++ b/src/battle/anim/thrashing.c
@@ -8,26 +8,34 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
-extern struct AffineAnimFrameCmd gUnknown_083D77B0;
-
static void sub_80D0A8C(u8 taskId);
static void sub_80D0B3C(u8 taskId);
// thrashing (the movement of the Pokemon left/right repeatedly, with up/down movements below.)
// Used by Thrash.
+const union AffineAnimCmd gSpriteAffineAnim_83D77B0[] =
+{
+ AFFINEANIMCMD_FRAME(-10, 9, 0, 7),
+ AFFINEANIMCMD_FRAME(20, -20, 0, 7),
+ AFFINEANIMCMD_FRAME(-20, 20, 0, 7),
+ AFFINEANIMCMD_FRAME(10, -9, 0, 7),
+ AFFINEANIMCMD_LOOP(2),
+ AFFINEANIMCMD_END,
+};
+
// left/right movements
void sub_80D0A4C(u8 taskId)
{
struct Task* task = &gTasks[taskId];
- u8 spriteId = GetAnimBankSpriteId(0);
+ u8 spriteId = GetAnimBattlerSpriteId(0);
task->data[0] = spriteId;
task->data[1] = 0;
- sub_80798F4(task, spriteId, &gUnknown_083D77B0);
+ sub_80798F4(task, spriteId, &gSpriteAffineAnim_83D77B0);
task->func = sub_80D0A8C;
}
-void sub_80D0A8C(u8 taskId)
+static void sub_80D0A8C(u8 taskId)
{
struct Task* task = &gTasks[taskId];
if (!sub_807992C(task))
@@ -38,7 +46,7 @@ void sub_80D0A8C(u8 taskId)
void sub_80D0AB8(u8 taskId)
{
struct Task* task = &gTasks[taskId];
- task->data[0] = GetAnimBankSpriteId(0);
+ task->data[0] = GetAnimBattlerSpriteId(0);
task->data[1] = 0;
task->data[2] = 4;
task->data[3] = 7;
@@ -48,13 +56,13 @@ void sub_80D0AB8(u8 taskId)
task->data[7] = 0;
task->data[8] = 0;
task->data[9] = 2;
- if (GetBankSide(gAnimBankAttacker) == 1)
+ if (GetBattlerSide(gAnimBankAttacker) == 1)
task->data[2] *= -1;
task->func = sub_80D0B3C;
}
-void sub_80D0B3C(u8 taskId)
+static void sub_80D0B3C(u8 taskId)
{
struct Task* task = &gTasks[taskId];
if (++task->data[7] > 2)
diff --git a/src/battle/anim/thunder.c b/src/battle/anim/thunder.c
index 2ed073221..9cd04e61f 100644
--- a/src/battle/anim/thunder.c
+++ b/src/battle/anim/thunder.c
@@ -7,14 +7,41 @@ extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
extern u16 gBattleTypeFlags;
+void sub_80D61C8(struct Sprite *sprite);
static void sub_80D6218(struct Sprite *);
// thunder (positions the lightning bolts)
// Used in Thunder, Thunder Punch, and Tri Attack.
+const union AnimCmd gSpriteAnim_83D97B4[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_FRAME(16, 5),
+ ANIMCMD_FRAME(32, 8),
+ ANIMCMD_FRAME(48, 5),
+ ANIMCMD_FRAME(64, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D97CC[] =
+{
+ gSpriteAnim_83D97B4,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D97D0 =
+{
+ .tileTag = 10037,
+ .paletteTag = 10037,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D97CC,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D61C8,
+};
+
void sub_80D61C8(struct Sprite *sprite)
{
- if (GetBankSide(gAnimBankAttacker) != 0)
+ if (GetBattlerSide(gAnimBankAttacker) != 0)
{
sprite->pos1.x -= gBattleAnimArgs[0];
}
diff --git a/src/battle/anim/tile.c b/src/battle/anim/tile.c
new file mode 100644
index 000000000..a10850808
--- /dev/null
+++ b/src/battle/anim/tile.c
@@ -0,0 +1,219 @@
+#include "global.h"
+#include "battle_anim.h"
+#include "battle_interface.h"
+#include "rom_8077ABC.h"
+#include "trig.h"
+#include "sound.h"
+
+extern s16 gBattleAnimArgs[];
+extern u8 gAnimBankAttacker;
+extern u8 gAnimBankTarget;
+extern u8 gBattlersCount;
+extern u8 gHealthboxIDs[];
+
+void sub_80CE09C(struct Sprite* sprite);
+void sub_80CE17C(struct Sprite* sprite);
+static void sub_80CE1AC(struct Sprite* sprite);
+
+// tile_in (flips a white tile from the scene into facing the player.)
+// Used in Conversion.
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D6F08 =
+{
+ .tileTag = 10017,
+ .paletteTag = 10017,
+ .oam = &gOamData_837DF24,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = TranslateAnimSpriteToTargetMonLocation,
+};
+
+const union AnimCmd gSpriteAnim_83D6F20[] =
+{
+ ANIMCMD_FRAME(0, 3),
+ ANIMCMD_FRAME(16, 3),
+ ANIMCMD_FRAME(32, 3),
+ ANIMCMD_FRAME(48, 3),
+ ANIMCMD_FRAME(64, 3),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D6F38[] =
+{
+ gSpriteAnim_83D6F20,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D6F3C =
+{
+ .tileTag = 10030,
+ .paletteTag = 10030,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D6F38,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80793C4,
+};
+
+const union AnimCmd gSpriteAnim_83D6F54[] =
+{
+ ANIMCMD_FRAME(3, 5),
+ ANIMCMD_FRAME(2, 5),
+ ANIMCMD_FRAME(1, 5),
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D6F68[] =
+{
+ gSpriteAnim_83D6F54,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D6F6C[] =
+{
+ AFFINEANIMCMD_FRAME(0x200, 0x200, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D6F7C[] =
+{
+ gSpriteAffineAnim_83D6F6C,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D6F80 =
+{
+ .tileTag = 10018,
+ .paletteTag = 10018,
+ .oam = &gOamData_837E104,
+ .anims = gSpriteAnimTable_83D6F68,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D6F7C,
+ .callback = sub_80CE09C,
+};
+
+const union AnimCmd gSpriteAnim_83D6F98[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_FRAME(1, 5),
+ ANIMCMD_FRAME(2, 5),
+ ANIMCMD_FRAME(3, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D6FAC[] =
+{
+ gSpriteAnim_83D6F98,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D6FB0 =
+{
+ .tileTag = 10018,
+ .paletteTag = 10018,
+ .oam = &gOamData_837E104,
+ .anims = gSpriteAnimTable_83D6FAC,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D6F7C,
+ .callback = sub_80CE17C,
+};
+
+void sub_80CE09C(struct Sprite* sprite)
+{
+ if (sprite->data[0] == 0)
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 0) + gBattleAnimArgs[0];
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 1) + gBattleAnimArgs[1];
+ if (IsContest())
+ sprite->pos1.y += 10;
+ sprite->data[0]++;
+ }
+
+ if ((u16)gBattleAnimArgs[7] == 0xFFFF)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_80CE108(u8 taskId)
+{
+ if (gTasks[taskId].data[2] == 1)
+ {
+ gBattleAnimArgs[7] = 0xFFFF;
+ gTasks[taskId].data[2]++;
+ }
+ else if (gTasks[taskId].data[2] == 2)
+ {
+ DestroyAnimVisualTask(taskId);
+ }
+ else
+ {
+ if (++gTasks[taskId].data[0] == 4)
+ {
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].data[1]++;
+ REG_BLDALPHA = (gTasks[taskId].data[1] << 8) | (16 - gTasks[taskId].data[1]);
+ if (gTasks[taskId].data[1] == 16)
+ gTasks[taskId].data[2]++;
+ }
+ }
+}
+
+void sub_80CE17C(struct Sprite* sprite)
+{
+ sub_8078764(sprite, 0);
+ sprite->animPaused = 1;
+ sprite->data[0] = gBattleAnimArgs[2];
+ sprite->callback = sub_80CE1AC;
+}
+
+static void sub_80CE1AC(struct Sprite* sprite)
+{
+ if (sprite->data[0])
+ {
+ sprite->data[0]--;
+ }
+ else
+ {
+ sprite->animPaused = 0;
+ sprite->data[0] = 30;
+ sprite->data[2] = GetBattlerSpriteCoord(gAnimBankAttacker, 2);
+ sprite->data[4] = GetBattlerSpriteCoord(gAnimBankAttacker, 3);
+ sprite->callback = StartTranslateAnimSpriteByDeltas;
+ StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
+ }
+}
+
+void sub_80CE210(u8 taskId)
+{
+ if (++gTasks[taskId].data[0] == 4)
+ {
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].data[1]++;
+ REG_BLDALPHA = gTasks[taskId].data[1] | ((16 - gTasks[taskId].data[1]) << 8);
+ if (gTasks[taskId].data[1] == 16)
+ DestroyAnimVisualTask(taskId);
+ }
+}
+
+void unref_sub_80CE260(u8 taskId)
+{
+ u8 i;
+ for (i = 0; i < gBattlersCount; i++)
+ {
+ if (gBattleAnimArgs[0] == 1 && GetBattlerSide(i) == 0)
+ sub_8043DB0(gHealthboxIDs[i]);
+
+ if (gBattleAnimArgs[1] == 1 && GetBattlerSide(i) == 1)
+ sub_8043DB0(gHealthboxIDs[i]);
+ }
+
+ DestroyAnimVisualTask(taskId);
+}
+
+void unref_sub_80CE2D4(u8 taskId)
+{
+ u8 i;
+ for (i = 0; i < gBattlersCount; i++)
+ {
+ sub_8043DFC(gHealthboxIDs[i]);
+ }
+
+ DestroyAnimVisualTask(taskId);
+}
diff --git a/src/battle/anim/tile_in.c b/src/battle/anim/tile_in.c
deleted file mode 100644
index a4a544a0c..000000000
--- a/src/battle/anim/tile_in.c
+++ /dev/null
@@ -1,51 +0,0 @@
-#include "global.h"
-#include "rom_8077ABC.h"
-#include "trig.h"
-#include "battle_anim.h"
-#include "sound.h"
-
-extern s16 gBattleAnimArgs[];
-extern u8 gAnimBankAttacker;
-extern u8 gAnimBankTarget;
-
-// tile_in (flips a white tile from the scene into facing the player.)
-// Used in Conversion.
-
-void sub_80CE09C(struct Sprite* sprite)
-{
- if (sprite->data[0] == 0)
- {
- sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 0) + gBattleAnimArgs[0];
- sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 1) + gBattleAnimArgs[1];
- if (IsContest())
- sprite->pos1.y += 10;
- sprite->data[0]++;
- }
-
- if ((u16)gBattleAnimArgs[7] == 0xFFFF)
- DestroyAnimSprite(sprite);
-}
-
-void sub_80CE108(u8 taskId)
-{
- if (gTasks[taskId].data[2] == 1)
- {
- gBattleAnimArgs[7] = 0xFFFF;
- gTasks[taskId].data[2]++;
- }
- else if (gTasks[taskId].data[2] == 2)
- {
- DestroyAnimVisualTask(taskId);
- }
- else
- {
- if (++gTasks[taskId].data[0] == 4)
- {
- gTasks[taskId].data[0] = 0;
- gTasks[taskId].data[1]++;
- REG_BLDALPHA = (gTasks[taskId].data[1] << 8) | (16 - gTasks[taskId].data[1]);
- if (gTasks[taskId].data[1] == 16)
- gTasks[taskId].data[2]++;
- }
- }
-}
diff --git a/src/battle/anim/tile_out.c b/src/battle/anim/tile_out.c
deleted file mode 100644
index 39d4ff01f..000000000
--- a/src/battle/anim/tile_out.c
+++ /dev/null
@@ -1,81 +0,0 @@
-#include "global.h"
-#include "rom_8077ABC.h"
-#include "trig.h"
-#include "battle_anim.h"
-#include "sound.h"
-#include "battle_interface.h"
-
-extern s16 gBattleAnimArgs[];
-extern u8 gAnimBankAttacker;
-extern u8 gAnimBankTarget;
-
-extern u8 gNoOfAllBanks;
-extern u8 gHealthboxIDs[];
-
-static void sub_80CE1AC(struct Sprite* sprite);
-
-// tile_out (makes a tile fly inward into a center point.)
-// Used in Conversion 2.
-
-void sub_80CE17C(struct Sprite* sprite)
-{
- sub_8078764(sprite, 0);
- sprite->animPaused = 1;
- sprite->data[0] = gBattleAnimArgs[2];
- sprite->callback = sub_80CE1AC;
-}
-
-void sub_80CE1AC(struct Sprite* sprite)
-{
- if (sprite->data[0])
- {
- sprite->data[0]--;
- }
- else
- {
- sprite->animPaused = 0;
- sprite->data[0] = 30;
- sprite->data[2] = GetBankPosition(gAnimBankAttacker, 2);
- sprite->data[4] = GetBankPosition(gAnimBankAttacker, 3);
- sprite->callback = StartTranslateAnimSpriteByDeltas;
- StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
- }
-}
-
-void sub_80CE210(u8 taskId)
-{
- if (++gTasks[taskId].data[0] == 4)
- {
- gTasks[taskId].data[0] = 0;
- gTasks[taskId].data[1]++;
- REG_BLDALPHA = gTasks[taskId].data[1] | ((16 - gTasks[taskId].data[1]) << 8);
- if (gTasks[taskId].data[1] == 16)
- DestroyAnimVisualTask(taskId);
- }
-}
-
-void unref_sub_80CE260(u8 taskId)
-{
- u8 i;
- for (i = 0; i < gNoOfAllBanks; i++)
- {
- if (gBattleAnimArgs[0] == 1 && GetBankSide(i) == 0)
- sub_8043DB0(gHealthboxIDs[i]);
-
- if (gBattleAnimArgs[1] == 1 && GetBankSide(i) == 1)
- sub_8043DB0(gHealthboxIDs[i]);
- }
-
- DestroyAnimVisualTask(taskId);
-}
-
-void unref_sub_80CE2D4(u8 taskId)
-{
- u8 i;
- for (i = 0; i < gNoOfAllBanks; i++)
- {
- sub_8043DFC(gHealthboxIDs[i]);
- }
-
- DestroyAnimVisualTask(taskId);
-}
diff --git a/src/battle/anim/twinkle.c b/src/battle/anim/twinkle.c
index e26669f63..bfe0c8da2 100644
--- a/src/battle/anim/twinkle.c
+++ b/src/battle/anim/twinkle.c
@@ -8,14 +8,40 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80CE36C(struct Sprite* sprite);
static void sub_80CE3B0(struct Sprite* sprite);
// twinkle (a tiny twinkling star appears above the Pokemon and descends toward the Pokemon.)
// Used in Moonlight.
+const union AnimCmd gSpriteAnim_83D6FE0[] =
+{
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(4, 8),
+ ANIMCMD_FRAME(8, 8),
+ ANIMCMD_FRAME(12, 8),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D6FF4[] =
+{
+ gSpriteAnim_83D6FE0,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D6FF8 =
+{
+ .tileTag = 10195,
+ .paletteTag = 10195,
+ .oam = &gOamData_837DF2C,
+ .anims = gSpriteAnimTable_83D6FF4,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CE36C,
+};
+
void sub_80CE36C(struct Sprite* sprite)
{
- sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2) + gBattleAnimArgs[0];
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 2) + gBattleAnimArgs[0];
sprite->pos1.y = gBattleAnimArgs[1];
sprite->data[0] = 0;
sprite->data[1] = 0;
@@ -25,7 +51,7 @@ void sub_80CE36C(struct Sprite* sprite)
sprite->callback = sub_80CE3B0;
}
-void sub_80CE3B0(struct Sprite* sprite)
+static void sub_80CE3B0(struct Sprite* sprite)
{
if (++sprite->data[1] > 1)
{
diff --git a/src/battle/anim/unused_1.c b/src/battle/anim/unused_1.c
index d7e5fbfe4..15050b54c 100644
--- a/src/battle/anim/unused_1.c
+++ b/src/battle/anim/unused_1.c
@@ -8,9 +8,73 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80CC8C8(struct Sprite* sprite);
+
// unused effect file.
// Seems to be a beta effect for Beat Up, possibly.
+const union AffineAnimCmd gSpriteAffineAnim_83D6A58[] = {
+ AFFINEANIMCMD_FRAME(256, 256, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D6A68[] = {
+ AFFINEANIMCMD_FRAME(256, 256, 32, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D6A78[] = {
+ AFFINEANIMCMD_FRAME(256, 256, 64, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D6A88[] = {
+ AFFINEANIMCMD_FRAME(256, 256, 96, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D6A98[] = {
+ AFFINEANIMCMD_FRAME(256, 256, -128, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D6AA8[] = {
+ AFFINEANIMCMD_FRAME(256, 256, -96, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D6AB8[] = {
+ AFFINEANIMCMD_FRAME(256, 256, -64, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D6AC8[] = {
+ AFFINEANIMCMD_FRAME(256, 256, -32, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D6AD8[] = {
+ gSpriteAffineAnim_83D6A58,
+ gSpriteAffineAnim_83D6A68,
+ gSpriteAffineAnim_83D6A78,
+ gSpriteAffineAnim_83D6A88,
+ gSpriteAffineAnim_83D6A98,
+ gSpriteAffineAnim_83D6AA8,
+ gSpriteAffineAnim_83D6AB8,
+ gSpriteAffineAnim_83D6AC8,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83D6AF8 =
+{
+ .tileTag = 10143,
+ .paletteTag = 10143,
+ .oam = &gOamData_837DF94,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D6AD8,
+ .callback = sub_80CC8C8,
+};
+
void sub_80CC8C8(struct Sprite* sprite)
{
sprite->pos1.x += gBattleAnimArgs[0];
diff --git a/src/battle/anim/unused_2.c b/src/battle/anim/unused_2.c
index 122f39e02..f4ebe0e74 100644
--- a/src/battle/anim/unused_2.c
+++ b/src/battle/anim/unused_2.c
@@ -8,11 +8,97 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80CCC50(struct Sprite* sprite);
static void sub_80CCCB4(struct Sprite* sprite);
// unused_2 (unknown effect with music notes.)
// possibly another unused effect. Unknown usage.
+const union AnimCmd gSpriteAnim_83D6B58[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D6B60[] =
+{
+ ANIMCMD_FRAME(4, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D6B68[] =
+{
+ ANIMCMD_FRAME(8, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D6B70[] =
+{
+ ANIMCMD_FRAME(12, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D6B78[] =
+{
+ ANIMCMD_FRAME(16, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D6B80[] =
+{
+ ANIMCMD_FRAME(20, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D6B88[] =
+{
+ ANIMCMD_FRAME(0, 1, .vFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D6B90[] =
+{
+ ANIMCMD_FRAME(4, 1, .vFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D6B98[] =
+{
+ ANIMCMD_FRAME(8, 1, .vFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D6BA0[] =
+{
+ ANIMCMD_FRAME(12, 1, .vFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D6BA8[] =
+{
+ gSpriteAnim_83D6B58,
+ gSpriteAnim_83D6B60,
+ gSpriteAnim_83D6B68,
+ gSpriteAnim_83D6B70,
+ gSpriteAnim_83D6B78,
+ gSpriteAnim_83D6B80,
+ gSpriteAnim_83D6B88,
+ gSpriteAnim_83D6B90,
+ gSpriteAnim_83D6B98,
+ gSpriteAnim_83D6BA0,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83D6BD0 =
+{
+ .tileTag = 10072,
+ .paletteTag = 10072,
+ .oam = &gOamData_837DF2C,
+ .anims = gSpriteAnimTable_83D6BA8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CCC50,
+};
+
void unref_sub_80CCB6C(struct Sprite* sprite)
{
if (sprite->data[2] > 1)
@@ -49,7 +135,7 @@ void unref_sub_80CCB6C(struct Sprite* sprite)
void sub_80CCC50(struct Sprite* sprite)
{
sprite->data[0] = gBattleAnimArgs[2];
- if (GetBankSide(gAnimBankAttacker) != 0)
+ if (GetBattlerSide(gAnimBankAttacker) != 0)
sprite->pos1.x -= gBattleAnimArgs[0];
else
sprite->pos1.x += gBattleAnimArgs[0];
@@ -62,7 +148,7 @@ void sub_80CCC50(struct Sprite* sprite)
sub_80CCCB4(sprite);
}
-void sub_80CCCB4(struct Sprite* sprite)
+static void sub_80CCCB4(struct Sprite* sprite)
{
sprite->pos2.x = Cos(sprite->data[0], 100);
sprite->pos2.y = Sin(sprite->data[0], 20);
diff --git a/src/battle/anim/unused_3.c b/src/battle/anim/unused_3.c
index 6dbcbfefe..1c3ab978e 100644
--- a/src/battle/anim/unused_3.c
+++ b/src/battle/anim/unused_3.c
@@ -8,15 +8,58 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80CD274(struct Sprite* sprite);
static void sub_80CD2D4(struct Sprite* sprite);
// unused_3 (seems to be some sort of popping effect with a growing diamond shape)
-// yet another unused effect...
+
+const union AnimCmd gSpriteAnim_83D6CB8[] =
+{
+ ANIMCMD_FRAME(0, 10),
+ ANIMCMD_FRAME(4, 10),
+ ANIMCMD_FRAME(8, 10),
+ ANIMCMD_FRAME(12, 10),
+ ANIMCMD_FRAME(16, 26),
+ ANIMCMD_FRAME(16, 5),
+ ANIMCMD_FRAME(20, 5),
+ ANIMCMD_FRAME(24, 15),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D6CDC[] =
+{
+ ANIMCMD_FRAME(0, 10, .hFlip = TRUE),
+ ANIMCMD_FRAME(4, 10, .hFlip = TRUE),
+ ANIMCMD_FRAME(8, 10, .hFlip = TRUE),
+ ANIMCMD_FRAME(12, 10, .hFlip = TRUE),
+ ANIMCMD_FRAME(16, 26, .hFlip = TRUE),
+ ANIMCMD_FRAME(16, 5, .hFlip = TRUE),
+ ANIMCMD_FRAME(20, 5, .hFlip = TRUE),
+ ANIMCMD_FRAME(24, 15, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D6D00[] =
+{
+ gSpriteAnim_83D6CB8,
+ gSpriteAnim_83D6CDC,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83D6D08 =
+{
+ .tileTag = 10032,
+ .paletteTag = 10032,
+ .oam = &gOamData_837DF2C,
+ .anims = gSpriteAnimTable_83D6D00,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CD274,
+};
void sub_80CD274(struct Sprite* sprite)
{
sub_8078650(sprite);
- if (GetBankSide(gAnimBankAttacker) == 0)
+ if (GetBattlerSide(gAnimBankAttacker) == 0)
{
sprite->pos1.x += gBattleAnimArgs[0];
sprite->pos1.y += gBattleAnimArgs[1];
@@ -31,7 +74,7 @@ void sub_80CD274(struct Sprite* sprite)
sprite->callback = sub_80CD2D4;
}
-void sub_80CD2D4(struct Sprite* sprite)
+static void sub_80CD2D4(struct Sprite* sprite)
{
if (++sprite->data[0] > 30)
{
diff --git a/src/battle/anim/unused_4.c b/src/battle/anim/unused_4.c
deleted file mode 100644
index 50ffaba4a..000000000
--- a/src/battle/anim/unused_4.c
+++ /dev/null
@@ -1,58 +0,0 @@
-#include "global.h"
-#include "rom_8077ABC.h"
-#include "trig.h"
-#include "battle_anim.h"
-#include "sound.h"
-
-extern s16 gBattleAnimArgs[];
-extern u8 gAnimBankAttacker;
-extern u8 gAnimBankTarget;
-
-extern u8 gBankSpriteIds[];
-
-static void sub_80CD9D4(struct Sprite* sprite);
-
-// unused_4
-// Unknown usage.
-
-void sub_80CD9C4(struct Sprite* sprite)
-{
- sprite->data[0] = 0;
- sprite->callback = sub_80CD9D4;
-}
-
-void sub_80CD9D4(struct Sprite* sprite)
-{
- switch (sprite->data[0])
- {
- case 0:
- sprite->data[1] = 0;
- sprite->data[2] = gBankSpriteIds[gAnimBankAttacker];
- sprite->data[3] = GetBankSide(gAnimBankAttacker);
- sprite->data[4] = (sprite->data[3] != 0) ? 0x200 : -0x200;
- sprite->data[5] = 0;
- sub_8078E70(sprite->data[2], 0);
- sprite->data[0]++;
- case 1:
- sprite->data[5] += sprite->data[4];
- obj_id_set_rotscale(sprite->data[2], 0x100, 0x100, sprite->data[5]);
- sub_8078F9C(sprite->data[2]);
- if (++sprite->data[1] > 3)
- {
- sprite->data[1] = 0;
- sprite->data[4] *= -1;
- sprite->data[0]++;
- }
- break;
- case 2:
- sprite->data[5] += sprite->data[4];
- obj_id_set_rotscale(sprite->data[2], 0x100, 0x100, sprite->data[5]);
- sub_8078F9C(sprite->data[2]);
- if (++sprite->data[1] > 3)
- {
- sub_8078F40(sprite->data[2]);
- DestroyAnimSprite(sprite);
- }
- break;
- }
-}
diff --git a/src/battle/anim/unused_5.c b/src/battle/anim/unused_5.c
index 421cdd6bf..af9a8a037 100644
--- a/src/battle/anim/unused_5.c
+++ b/src/battle/anim/unused_5.c
@@ -8,8 +8,21 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80CF280(struct Sprite* sprite);
+
// unused_5
+const struct SpriteTemplate gSpriteTemplate_83D7370 =
+{
+ .tileTag = 10064,
+ .paletteTag = 10064,
+ .oam = &gOamData_837DF34,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CF280,
+};
+
void sub_80CF280(struct Sprite* sprite)
{
sub_8078650(sprite);
diff --git a/src/battle/anim/unused_6.c b/src/battle/anim/unused_6.c
index 37e2031b0..5b37d32c9 100644
--- a/src/battle/anim/unused_6.c
+++ b/src/battle/anim/unused_6.c
@@ -9,10 +9,34 @@ extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
extern void sub_80CEF44(u8 bank, struct Sprite* sprite);
+
+void sub_80CF2D0(struct Sprite* sprite);
static void sub_80CF310(struct Sprite* sprite);
// unused_6
+const union AnimCmd gSpriteAnim_83D7388[] =
+{
+ ANIMCMD_FRAME(4, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D7390[] =
+{
+ gSpriteAnim_83D7388,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83D7394 =
+{
+ .tileTag = 10072,
+ .paletteTag = 10072,
+ .oam = &gOamData_837DF2C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CF2D0,
+};
+
void sub_80CF2D0(struct Sprite* sprite)
{
u8 bank;
@@ -27,7 +51,7 @@ void sub_80CF2D0(struct Sprite* sprite)
sprite->callback = sub_80CF310;
}
-void sub_80CF310(struct Sprite* sprite)
+static void sub_80CF310(struct Sprite* sprite)
{
switch (sprite->data[0])
{
diff --git a/src/battle/anim/unused_7.c b/src/battle/anim/unused_7.c
index 5a2de33c3..fa3facdda 100644
--- a/src/battle/anim/unused_7.c
+++ b/src/battle/anim/unused_7.c
@@ -10,9 +10,22 @@ extern u8 gAnimBankTarget;
extern u8 gBankSpriteIds[];
+void sub_80CF3C4(struct Sprite* sprite);
+
// unused_7
-void sub_80CF374(struct Sprite* sprite)
+const struct SpriteTemplate gSpriteTemplate_83D73AC =
+{
+ .tileTag = 0,
+ .paletteTag = 0,
+ .oam = &gDummyOamData,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CF3C4,
+};
+
+static void sub_80CF374(struct Sprite* sprite)
{
s16 temp;
gSprites[sprite->data[2]].pos2.x += sprite->data[1];
@@ -30,10 +43,10 @@ void sub_80CF374(struct Sprite* sprite)
void sub_80CF3C4(struct Sprite* sprite)
{
u8 a;
- sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2);
- sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3);
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 3);
a = gBankSpriteIds[gAnimBankTarget];
- if (GetBankSide(gAnimBankAttacker) != 0)
+ if (GetBattlerSide(gAnimBankAttacker) != 0)
{
sprite->pos1.x -= gBattleAnimArgs[0];
}
diff --git a/src/battle/anim/unused_8.c b/src/battle/anim/unused_8.c
index c67ec2754..a005bee1c 100644
--- a/src/battle/anim/unused_8.c
+++ b/src/battle/anim/unused_8.c
@@ -7,12 +7,62 @@
extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+extern const union AffineAnimCmd *const gSpriteAffineAnimTable_83DB1B0[];
+void sub_80CF458(struct Sprite* sprite);
static void sub_80CF490(struct Sprite* sprite);
static void sub_80CF4B8(struct Sprite* sprite);
// unused_8
+const struct SpriteTemplate gSpriteTemplate_83D73C4 =
+{
+ .tileTag = 10145,
+ .paletteTag = 10145,
+ .oam = &gOamData_837E0BC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DB1B0,
+ .callback = sub_80CF458,
+};
+
+const union AnimCmd gSpriteAnim_83D73DC[] =
+{
+ ANIMCMD_FRAME(0, 9),
+ ANIMCMD_FRAME(16, 3),
+ ANIMCMD_FRAME(32, 3),
+ ANIMCMD_FRAME(48, 3),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D73F0[] =
+{
+ gSpriteAnim_83D73DC,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D73F4[] =
+{
+ AFFINEANIMCMD_FRAME(0x50, 0x50, 0, 0),
+ AFFINEANIMCMD_FRAME(0x9, 0x9, 0, 18),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D740C[] =
+{
+ gSpriteAffineAnim_83D73F4,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83D7410 =
+{
+ .tileTag = 10007,
+ .paletteTag = 10007,
+ .oam = &gOamData_837DF94,
+ .anims = gSpriteAnimTable_83D73F0,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D740C,
+ .callback = sub_80793C4,
+};
+
void sub_80CF458(struct Sprite* sprite)
{
InitAnimSpritePos(sprite, 1);
@@ -23,7 +73,7 @@ void sub_80CF458(struct Sprite* sprite)
StoreSpriteCallbackInData(sprite, sub_80CF490);
}
-void sub_80CF490(struct Sprite* sprite)
+static void sub_80CF490(struct Sprite* sprite)
{
sprite->data[0] = sprite->data[1];
sprite->data[2] = sprite->pos1.x;
@@ -32,7 +82,7 @@ void sub_80CF490(struct Sprite* sprite)
StoreSpriteCallbackInData(sprite, sub_80CF4B8);
}
-void sub_80CF4B8(struct Sprite* sprite)
+static void sub_80CF4B8(struct Sprite* sprite)
{
if (sprite->data[5] == 0)
DestroyAnimSprite(sprite);
diff --git a/src/battle/anim/unused_9.c b/src/battle/anim/unused_9.c
index 6e0d0321b..d8dda35b3 100644
--- a/src/battle/anim/unused_9.c
+++ b/src/battle/anim/unused_9.c
@@ -9,13 +9,23 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
-extern struct SpriteTemplate gSpriteTemplate_83D75AC;
-
+void sub_80CFDFC(struct Sprite* sprite);
static void sub_80CFE2C(struct Sprite* sprite);
// unused_9? (Most likely an unused effect.)
// I cannot find any reference to this sprite template used to call this.
+const struct SpriteTemplate gSpriteTemplate_83D75AC =
+{
+ .tileTag = 10178,
+ .paletteTag = 10178,
+ .oam = &gOamData_837E05C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CFDFC,
+};
+
void sub_80CFDFC(struct Sprite* sprite)
{
InitAnimSpritePos(sprite, 0);
@@ -24,7 +34,7 @@ void sub_80CFDFC(struct Sprite* sprite)
}
#ifdef NONMATCHING
-void sub_80CFE2C(struct Sprite* sprite)
+static void sub_80CFE2C(struct Sprite* sprite)
{
u16 r7;
u16 r5;
@@ -45,8 +55,8 @@ void sub_80CFE2C(struct Sprite* sprite)
}
}
#else
-__attribute__((naked))
-void sub_80CFE2C(struct Sprite* sprite)
+NAKED
+static void sub_80CFE2C(struct Sprite* sprite)
{
asm(".syntax unified\n\
push {r4-r7,lr}\n\
diff --git a/src/battle/anim/uproar.c b/src/battle/anim/uproar.c
index 03cc65bc0..c78f89fef 100644
--- a/src/battle/anim/uproar.c
+++ b/src/battle/anim/uproar.c
@@ -6,19 +6,25 @@
extern s16 gBattleAnimArgs[8];
-extern const union AffineAnimCmd gUnknown_083D7CA8[];
+static void sub_80D2D3C(u8);
-void sub_80D2D3C(u8);
+const union AffineAnimCmd gSpriteAffineAnim_83D7CA8[] =
+{
+ AFFINEANIMCMD_FRAME(-12, 8, 0, 4),
+ AFFINEANIMCMD_FRAME(20, -20, 0, 4),
+ AFFINEANIMCMD_FRAME(-8, 12, 0, 4),
+ AFFINEANIMCMD_END,
+};
void sub_80D2CF8(u8 taskId)
{
- u8 spriteId = GetAnimBankSpriteId(gBattleAnimArgs[0]);
+ u8 spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
- sub_80798F4(&gTasks[taskId], spriteId, gUnknown_083D7CA8);
+ sub_80798F4(&gTasks[taskId], spriteId, gSpriteAffineAnim_83D7CA8);
gTasks[taskId].func = sub_80D2D3C;
}
-void sub_80D2D3C(u8 taskId)
+static void sub_80D2D3C(u8 taskId)
{
if (!sub_807992C(&gTasks[taskId]))
DestroyAnimVisualTask(taskId);
diff --git a/src/battle/anim/water.c b/src/battle/anim/water.c
index e6945f9b2..0afe133f0 100644
--- a/src/battle/anim/water.c
+++ b/src/battle/anim/water.c
@@ -8,7 +8,187 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
-static void sub_80D3874(struct Sprite *);
+extern const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA318[];
+extern const union AnimCmd *const gSpriteAnimTable_83D9BC8[];
+
+void sub_80D37FC(struct Sprite *sprite);
+void sub_80D3838(struct Sprite *sprite);
+void sub_80D4044(struct Sprite *sprite);
+void sub_80D452C(struct Sprite *sprite);
+void sub_80D4BF0(struct Sprite *sprite);
+void sub_80D4C64(struct Sprite *sprite);
+static void sub_80D3874(struct Sprite *sprite);
+
+const union AnimCmd gSpriteAnim_83D9300[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D9308[] =
+{
+ ANIMCMD_FRAME(4, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D9310[] =
+{
+ gSpriteAnim_83D9300,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D9314[] =
+{
+ gSpriteAnim_83D9308,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9318 =
+{
+ .tileTag = 10155,
+ .paletteTag = 10155,
+ .oam = &gOamData_837E04C,
+ .anims = gSpriteAnimTable_83D9310,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80794A8,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9330 =
+{
+ .tileTag = 10155,
+ .paletteTag = 10155,
+ .oam = &gOamData_837E10C,
+ .anims = gSpriteAnimTable_83D9314,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DA318,
+ .callback = sub_80D37FC,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9348 =
+{
+ .tileTag = 10141,
+ .paletteTag = 10141,
+ .oam = &gOamData_837DF24,
+ .anims = gSpriteAnimTable_83D9BC8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D3838,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9360 =
+{
+ .tileTag = 10155,
+ .paletteTag = 10155,
+ .oam = &gOamData_837DF24,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D4044,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83D9378 =
+{
+ .tileTag = 10268,
+ .paletteTag = 10268,
+ .oam = &gOamData_837DF24,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D452C,
+};
+
+const union AnimCmd gSpriteAnim_83D9390[] =
+{
+ ANIMCMD_FRAME(8, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D9398[] =
+{
+ ANIMCMD_FRAME(9, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D93A0[] =
+{
+ ANIMCMD_FRAME(4, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D93A8[] =
+{
+ gSpriteAnim_83D9390,
+ gSpriteAnim_83D9398,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D93B0[] =
+{
+ gSpriteAnim_83D93A0,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D93B4[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0xFFF6, 0xFFF6, 0, 15),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D93CC[] =
+{
+ AFFINEANIMCMD_FRAME(0xE0, 0xE0, 0, 0),
+ AFFINEANIMCMD_FRAME(0xFFF8, 0xFFF8, 0, 15),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D93E4[] =
+{
+ AFFINEANIMCMD_FRAME(0x150, 0x150, 0, 0),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 15),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D93FC[] =
+{
+ gSpriteAffineAnim_83D93B4,
+ gSpriteAffineAnim_83D93CC,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D9404[] =
+{
+ gSpriteAffineAnim_83D93E4,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9408 =
+{
+ .tileTag = 10155,
+ .paletteTag = 10155,
+ .oam = &gOamData_837DF24,
+ .anims = gSpriteAnimTable_83D93A8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D4BF0,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83D9420 =
+{
+ .tileTag = 10155,
+ .paletteTag = 10155,
+ .oam = &gOamData_837DF84,
+ .anims = gSpriteAnimTable_83D93A8,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D93FC,
+ .callback = sub_80D4C64,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9438 =
+{
+ .tileTag = 10155,
+ .paletteTag = 10155,
+ .oam = &gOamData_837DF8C,
+ .anims = gSpriteAnimTable_83D93B0,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D9404,
+ .callback = sub_807A9BC,
+};
void sub_80D37FC(struct Sprite *sprite)
{
@@ -51,7 +231,7 @@ static void sub_80D3874(struct Sprite *sprite)
}
}
-__attribute__((naked))
+NAKED
void sub_80D38BC(u8 taskId)
{
asm(".syntax unified\n\
@@ -153,7 +333,7 @@ _080D3920:\n\
strb r0, [r2]\n\
ldr r0, _080D39A0 @ =gAnimBankAttacker\n\
ldrb r0, [r0]\n\
- bl GetBankSide\n\
+ bl GetBattlerSide\n\
lsls r0, 24\n\
lsrs r0, 24\n\
cmp r0, 0x1\n\
@@ -276,7 +456,7 @@ _080D3A90: .4byte gBattle_BG1_Y\n\
_080D3A94:\n\
ldr r0, _080D3AC4 @ =gAnimBankAttacker\n\
ldrb r0, [r0]\n\
- bl GetBankSide\n\
+ bl GetBattlerSide\n\
lsls r0, 24\n\
lsrs r1, r0, 24\n\
cmp r1, 0x1\n\
diff --git a/src/battle/anim/wave_finger.c b/src/battle/anim/wave_finger.c
deleted file mode 100644
index 2cf68c34c..000000000
--- a/src/battle/anim/wave_finger.c
+++ /dev/null
@@ -1,39 +0,0 @@
-#include "global.h"
-#include "rom_8077ABC.h"
-#include "trig.h"
-#include "battle_anim.h"
-#include "sound.h"
-
-extern s16 gBattleAnimArgs[];
-extern u8 gAnimBankAttacker;
-extern u8 gAnimBankTarget;
-
-extern void sub_80CEF44(u8 bank, struct Sprite* sprite);
-void sub_80CF088(struct Sprite* sprite);
-
-// wave_finger
-// Used by Metronome.
-
-void sub_80CF040(struct Sprite* sprite)
-{
- u8 bank;
- if (gBattleAnimArgs[0] == 0)
- bank = gAnimBankAttacker;
- else
- bank = gAnimBankTarget;
-
- sub_80CEF44(bank, sprite);
- sprite->data[0] = 0;
- StoreSpriteCallbackInData(sprite, sub_80CF088);
- sprite->callback = sub_80785E4;
-}
-
-void sub_80CF088(struct Sprite* sprite)
-{
- if (++sprite->data[0] > 16)
- {
- StartSpriteAffineAnim(sprite, 1);
- StoreSpriteCallbackInData(sprite, move_anim_8074EE0);
- sprite->callback = sub_80785E4;
- }
-}
diff --git a/src/battle/anim/whip.c b/src/battle/anim/whip.c
index cb3ce327e..e6e004932 100644
--- a/src/battle/anim/whip.c
+++ b/src/battle/anim/whip.c
@@ -8,19 +8,104 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80CC82C(struct Sprite* sprite);
+void sub_80CC884(struct Sprite* sprite);
+
// whip (does a hitting animation that uses a rotating sprite to invoke the sprite getting hit.)
// Used by Slam and Vine Whip.
-void sub_80CC810(struct Sprite* sprite)
+const union AnimCmd gSpriteAnim_83D69AC[] =
+{
+ ANIMCMD_FRAME(64, 3),
+ ANIMCMD_FRAME(80, 3),
+ ANIMCMD_FRAME(96, 3),
+ ANIMCMD_FRAME(112, 6),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D69C0[] =
+{
+ ANIMCMD_FRAME(64, 3, .hFlip = TRUE),
+ ANIMCMD_FRAME(80, 3, .hFlip = TRUE),
+ ANIMCMD_FRAME(96, 3, .hFlip = TRUE),
+ ANIMCMD_FRAME(112, 6, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D69D4[] =
+{
+ gSpriteAnim_83D69AC,
+ gSpriteAnim_83D69C0,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D69DC =
+{
+ .tileTag = 10056,
+ .paletteTag = 10056,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D69D4,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CC884,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D69F4 =
+{
+ .tileTag = 10287,
+ .paletteTag = 10287,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D69D4,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CC884,
+};
+
+const union AnimCmd gSpriteAnim_83D6A0C[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(16, 4),
+ ANIMCMD_FRAME(32, 4),
+ ANIMCMD_FRAME(48, 4),
+ ANIMCMD_FRAME(64, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D6A24[] =
+{
+ gSpriteAnim_83D6A0C,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83D6A28 =
+{
+ .tileTag = 10021,
+ .paletteTag = 10021,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D6A24,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CC82C,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83D6A40 =
+{
+ .tileTag = 10022,
+ .paletteTag = 10022,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D6A24,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CC82C,
+};
+
+static void sub_80CC810(struct Sprite* sprite)
{
if (sprite->animEnded)
DestroyAnimSprite(sprite);
}
-// unused, beta effect for diagonal sprite movement?
void sub_80CC82C(struct Sprite* sprite)
{
- if (GetBankSide(gAnimBankAttacker) != 0)
+ if (GetBattlerSide(gAnimBankAttacker) != 0)
{
sprite->pos1.x -= gBattleAnimArgs[0];
sprite->pos1.y += gBattleAnimArgs[1];
@@ -37,7 +122,7 @@ void sub_80CC82C(struct Sprite* sprite)
void sub_80CC884(struct Sprite* sprite)
{
- if (GetBankSide(gAnimBankAttacker) == 0)
+ if (GetBattlerSide(gAnimBankAttacker) == 0)
StartSpriteAnim(sprite, 1);
sprite->callback = sub_80CC810;
diff --git a/src/battle/anim/wisp_fire.c b/src/battle/anim/wisp_fire.c
index 24cecb60c..c96a3a86f 100644
--- a/src/battle/anim/wisp_fire.c
+++ b/src/battle/anim/wisp_fire.c
@@ -9,12 +9,45 @@
extern s16 gBattleAnimArgs[];
extern u8 gAnimBankTarget;
extern u8 gAnimBankAttacker;
-
extern u8 gBankSpriteIds[];
-extern s8 gUnknown_083D9794[16];
-extern s8 gUnknown_083D97A4[16];
-void sub_80D5E4C(u8 taskId);
+void sub_80D5CC0(struct Sprite *sprite);
+static void sub_80D5E4C(u8 taskId);
+
+const union AnimCmd gSpriteAnim_83D9764[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_FRAME(16, 5),
+ ANIMCMD_FRAME(32, 5),
+ ANIMCMD_FRAME(48, 5),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D9778[] =
+{
+ gSpriteAnim_83D9764,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D977C =
+{
+ .tileTag = 10232,
+ .paletteTag = 10232,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D9778,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D5CC0,
+};
+
+const s8 gUnknown_083D9794[16] =
+{
+ -1, -1, 0, 1, 1, 0, 0, -1, -1, 1, 1, 0, 0, -1, 0, 1,
+};
+
+const s8 gUnknown_083D97A4[16] =
+{
+ -1, 0, 1, 0, -1, 1, 0, -1, 0, 1, 0, -1, 0, 1, 0, 1,
+};
void sub_80D5CC0(struct Sprite *sprite)
{
@@ -58,15 +91,15 @@ void sub_80D5DDC(u8 taskId)
{
struct Task *task = &gTasks[taskId];
- task->data[12] = !GetBankSide(gAnimBankAttacker) ? 1 : -1;
+ task->data[12] = !GetBattlerSide(gAnimBankAttacker) ? 1 : -1;
task->data[13] = IsAnimBankSpriteVisible(gAnimBankTarget ^ 2) + 1;
- task->data[14] = GetAnimBankSpriteId(1);
- task->data[15] = GetAnimBankSpriteId(3);
+ task->data[14] = GetAnimBattlerSpriteId(1);
+ task->data[15] = GetAnimBattlerSpriteId(3);
task->func = sub_80D5E4C;
}
-void sub_80D5E4C(u8 taskId)
+static void sub_80D5E4C(u8 taskId)
{
struct Task *task = &gTasks[taskId];
diff --git a/src/battle/anim/wisp_orb.c b/src/battle/anim/wisp_orb.c
index 7c22b7f13..32373ca2a 100644
--- a/src/battle/anim/wisp_orb.c
+++ b/src/battle/anim/wisp_orb.c
@@ -11,11 +11,58 @@ extern u8 gAnimBankTarget;
extern u16 gBattleTypeFlags;
extern u8 gUnknown_0202F7D2;
+void sub_80D5B0C(struct Sprite *sprite);
static void sub_80D5C5C(struct Sprite *);
// wisp_orb (animates the wisp orbs)
// Used in Will-O-Wisp
+const union AnimCmd gSpriteAnim_83D9710[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_FRAME(4, 5),
+ ANIMCMD_FRAME(8, 5),
+ ANIMCMD_FRAME(12, 5),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gSpriteAnim_83D9724[] =
+{
+ ANIMCMD_FRAME(16, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D972C[] =
+{
+ ANIMCMD_FRAME(20, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D9734[] =
+{
+ ANIMCMD_FRAME(20, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D973C[] =
+{
+ gSpriteAnim_83D9710,
+ gSpriteAnim_83D9724,
+ gSpriteAnim_83D972C,
+ gSpriteAnim_83D9734,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D974C =
+{
+ .tileTag = 10231,
+ .paletteTag = 10231,
+ .oam = &gOamData_837DF2C,
+ .anims = gSpriteAnimTable_83D973C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D5B0C,
+};
+
void sub_80D5B0C(struct Sprite *sprite)
{
switch (sprite->data[0])
@@ -25,7 +72,7 @@ void sub_80D5B0C(struct Sprite *sprite)
StartSpriteAnim(sprite, gBattleAnimArgs[2]);
sprite->data[7] = gBattleAnimArgs[2];
- if (GetBankSide(gAnimBankAttacker) != 0)
+ if (GetBattlerSide(gAnimBankAttacker) != 0)
{
sprite->data[4] = 4;
}
@@ -39,7 +86,7 @@ void sub_80D5B0C(struct Sprite *sprite)
break;
case 1:
sprite->data[1] += 192;
- if (GetBankSide(gAnimBankAttacker) != 0)
+ if (GetBattlerSide(gAnimBankAttacker) != 0)
{
sprite->pos2.y = -(sprite->data[1] >> 8);
}
@@ -70,9 +117,9 @@ void sub_80D5B0C(struct Sprite *sprite)
sprite->data[0] = 256;
sprite->data[1] = sprite->pos1.x;
- sprite->data[2] = GetBankPosition(gAnimBankTarget, 2);
+ sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2);
sprite->data[3] = sprite->pos1.y;
- sprite->data[4] = GetBankPosition(gAnimBankTarget, 3);
+ sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3);
sub_8078BD4(sprite);
sprite->callback = sub_80D5C5C;
diff --git a/src/battle/anim/withdraw.c b/src/battle/anim/withdraw.c
index 933c97fa9..baf5d9b94 100644
--- a/src/battle/anim/withdraw.c
+++ b/src/battle/anim/withdraw.c
@@ -25,7 +25,7 @@ void sub_80CF514(u8 taskId)
{
u8 a = gBankSpriteIds[gAnimBankAttacker];
s16 b;
- if (GetBankSide(gAnimBankAttacker) == 0)
+ if (GetBattlerSide(gAnimBankAttacker) == 0)
{
b = -gTasks[taskId].data[0];
}
diff --git a/src/battle/battle_1.c b/src/battle/battle_1.c
new file mode 100644
index 000000000..9ab9e08c5
--- /dev/null
+++ b/src/battle/battle_1.c
@@ -0,0 +1,470 @@
+#include "global.h"
+#include "data2.h"
+#include "battle_setup.h"
+#include "battle.h"
+#include "trainer.h"
+#include "graphics.h"
+#include "gba/types.h"
+#include "constants/species.h"
+#include "constants/moves.h"
+#include "constants/items.h"
+#include "constants/opponents.h"
+
+const struct MonCoords gTrainerBackPicCoords[] = {
+ {8, 4},
+ {8, 4},
+ {8, 4},
+};
+
+extern const u8 gTrainerBackPic_Brendan[];
+extern const u8 gTrainerBackPic_May[];
+extern const u8 gTrainerBackPic_Wally[];
+
+const struct CompressedSpriteSheet gTrainerBackPicTable[] = {
+ {gTrainerBackPic_Brendan, 0x2000, 0},
+ {gTrainerBackPic_May, 0x2000, 1},
+ {gTrainerBackPic_Wally, 0x2000, 2}
+};
+
+extern const u8 gTrainerPalette_Brendan[];
+extern const u8 gTrainerPalette_May[];
+extern const u8 gTrainerPalette_Wally[];
+
+const struct CompressedSpritePalette gTrainerBackPicPaletteTable[] = {
+ {gTrainerPalette_Brendan, 0},
+ {gTrainerPalette_May, 1},
+ {gTrainerPalette_Wally, 2}
+};
+
+// This determines how much higher above the usual position the enemy Pokémon
+// is during battle. Species that float or fly have nonzero values.
+const u8 gEnemyMonElevation[] = {
+ [0] = 0,
+ [SPECIES_BULBASAUR] = 0,
+ [SPECIES_IVYSAUR] = 0,
+ [SPECIES_VENUSAUR] = 0,
+ [SPECIES_CHARMANDER] = 0,
+ [SPECIES_CHARMELEON] = 0,
+ [SPECIES_CHARIZARD] = 0,
+ [SPECIES_SQUIRTLE] = 0,
+ [SPECIES_WARTORTLE] = 0,
+ [SPECIES_BLASTOISE] = 0,
+ [SPECIES_CATERPIE] = 0,
+ [SPECIES_METAPOD] = 0,
+ [SPECIES_BUTTERFREE] = 8,
+ [SPECIES_WEEDLE] = 0,
+ [SPECIES_KAKUNA] = 0,
+ [SPECIES_BEEDRILL] = 8,
+ [SPECIES_PIDGEY] = 16,
+ [SPECIES_PIDGEOTTO] = 0,
+ [SPECIES_PIDGEOT] = 4,
+ [SPECIES_RATTATA] = 0,
+ [SPECIES_RATICATE] = 0,
+ [SPECIES_SPEAROW] = 0,
+ [SPECIES_FEAROW] = 4,
+ [SPECIES_EKANS] = 0,
+ [SPECIES_ARBOK] = 0,
+ [SPECIES_PIKACHU] = 0,
+ [SPECIES_RAICHU] = 0,
+ [SPECIES_SANDSHREW] = 0,
+ [SPECIES_SANDSLASH] = 0,
+ [SPECIES_NIDORAN_F] = 0,
+ [SPECIES_NIDORINA] = 0,
+ [SPECIES_NIDOQUEEN] = 0,
+ [SPECIES_NIDORAN_M] = 0,
+ [SPECIES_NIDORINO] = 0,
+ [SPECIES_NIDOKING] = 0,
+ [SPECIES_CLEFAIRY] = 0,
+ [SPECIES_CLEFABLE] = 0,
+ [SPECIES_VULPIX] = 0,
+ [SPECIES_NINETALES] = 0,
+ [SPECIES_JIGGLYPUFF] = 0,
+ [SPECIES_WIGGLYTUFF] = 0,
+ [SPECIES_ZUBAT] = 8,
+ [SPECIES_GOLBAT] = 8,
+ [SPECIES_ODDISH] = 0,
+ [SPECIES_GLOOM] = 0,
+ [SPECIES_VILEPLUME] = 0,
+ [SPECIES_PARAS] = 0,
+ [SPECIES_PARASECT] = 0,
+ [SPECIES_VENONAT] = 0,
+ [SPECIES_VENOMOTH] = 8,
+ [SPECIES_DIGLETT] = 0,
+ [SPECIES_DUGTRIO] = 0,
+ [SPECIES_MEOWTH] = 0,
+ [SPECIES_PERSIAN] = 0,
+ [SPECIES_PSYDUCK] = 0,
+ [SPECIES_GOLDUCK] = 0,
+ [SPECIES_MANKEY] = 0,
+ [SPECIES_PRIMEAPE] = 0,
+ [SPECIES_GROWLITHE] = 0,
+ [SPECIES_ARCANINE] = 0,
+ [SPECIES_POLIWAG] = 0,
+ [SPECIES_POLIWHIRL] = 0,
+ [SPECIES_POLIWRATH] = 0,
+ [SPECIES_ABRA] = 0,
+ [SPECIES_KADABRA] = 0,
+ [SPECIES_ALAKAZAM] = 0,
+ [SPECIES_MACHOP] = 0,
+ [SPECIES_MACHOKE] = 0,
+ [SPECIES_MACHAMP] = 0,
+ [SPECIES_BELLSPROUT] = 0,
+ [SPECIES_WEEPINBELL] = 0,
+ [SPECIES_VICTREEBEL] = 0,
+ [SPECIES_TENTACOOL] = 0,
+ [SPECIES_TENTACRUEL] = 0,
+ [SPECIES_GEODUDE] = 16,
+ [SPECIES_GRAVELER] = 0,
+ [SPECIES_GOLEM] = 0,
+ [SPECIES_PONYTA] = 0,
+ [SPECIES_RAPIDASH] = 0,
+ [SPECIES_SLOWPOKE] = 0,
+ [SPECIES_SLOWBRO] = 0,
+ [SPECIES_MAGNEMITE] = 16,
+ [SPECIES_MAGNETON] = 8,
+ [SPECIES_FARFETCHD] = 0,
+ [SPECIES_DODUO] = 0,
+ [SPECIES_DODRIO] = 0,
+ [SPECIES_SEEL] = 0,
+ [SPECIES_DEWGONG] = 0,
+ [SPECIES_GRIMER] = 0,
+ [SPECIES_MUK] = 0,
+ [SPECIES_SHELLDER] = 0,
+ [SPECIES_CLOYSTER] = 0,
+ [SPECIES_GASTLY] = 4,
+ [SPECIES_HAUNTER] = 4,
+ [SPECIES_GENGAR] = 0,
+ [SPECIES_ONIX] = 0,
+ [SPECIES_DROWZEE] = 0,
+ [SPECIES_HYPNO] = 0,
+ [SPECIES_KRABBY] = 0,
+ [SPECIES_KINGLER] = 0,
+ [SPECIES_VOLTORB] = 10,
+ [SPECIES_ELECTRODE] = 12,
+ [SPECIES_EXEGGCUTE] = 0,
+ [SPECIES_EXEGGUTOR] = 0,
+ [SPECIES_CUBONE] = 0,
+ [SPECIES_MAROWAK] = 0,
+ [SPECIES_HITMONLEE] = 0,
+ [SPECIES_HITMONCHAN] = 0,
+ [SPECIES_LICKITUNG] = 0,
+ [SPECIES_KOFFING] = 8,
+ [SPECIES_WEEZING] = 6,
+ [SPECIES_RHYHORN] = 0,
+ [SPECIES_RHYDON] = 0,
+ [SPECIES_CHANSEY] = 0,
+ [SPECIES_TANGELA] = 0,
+ [SPECIES_KANGASKHAN] = 0,
+ [SPECIES_HORSEA] = 0,
+ [SPECIES_SEADRA] = 0,
+ [SPECIES_GOLDEEN] = 0,
+ [SPECIES_SEAKING] = 0,
+ [SPECIES_STARYU] = 0,
+ [SPECIES_STARMIE] = 0,
+ [SPECIES_MR_MIME] = 0,
+ [SPECIES_SCYTHER] = 0,
+ [SPECIES_JYNX] = 0,
+ [SPECIES_ELECTABUZZ] = 0,
+ [SPECIES_MAGMAR] = 0,
+ [SPECIES_PINSIR] = 0,
+ [SPECIES_TAUROS] = 0,
+ [SPECIES_MAGIKARP] = 0,
+ [SPECIES_GYARADOS] = 0,
+ [SPECIES_LAPRAS] = 0,
+ [SPECIES_DITTO] = 0,
+ [SPECIES_EEVEE] = 0,
+ [SPECIES_VAPOREON] = 0,
+ [SPECIES_JOLTEON] = 0,
+ [SPECIES_FLAREON] = 0,
+ [SPECIES_PORYGON] = 0,
+ [SPECIES_OMANYTE] = 0,
+ [SPECIES_OMASTAR] = 0,
+ [SPECIES_KABUTO] = 0,
+ [SPECIES_KABUTOPS] = 0,
+ [SPECIES_AERODACTYL] = 6,
+ [SPECIES_SNORLAX] = 0,
+ [SPECIES_ARTICUNO] = 6,
+ [SPECIES_ZAPDOS] = 8,
+ [SPECIES_MOLTRES] = 5,
+ [SPECIES_DRATINI] = 0,
+ [SPECIES_DRAGONAIR] = 0,
+ [SPECIES_DRAGONITE] = 3,
+ [SPECIES_MEWTWO] = 0,
+ [SPECIES_MEW] = 8,
+ [SPECIES_CHIKORITA] = 0,
+ [SPECIES_BAYLEEF] = 0,
+ [SPECIES_MEGANIUM] = 0,
+ [SPECIES_CYNDAQUIL] = 0,
+ [SPECIES_QUILAVA] = 0,
+ [SPECIES_TYPHLOSION] = 0,
+ [SPECIES_TOTODILE] = 0,
+ [SPECIES_CROCONAW] = 0,
+ [SPECIES_FERALIGATR] = 0,
+ [SPECIES_SENTRET] = 0,
+ [SPECIES_FURRET] = 0,
+ [SPECIES_HOOTHOOT] = 0,
+ [SPECIES_NOCTOWL] = 0,
+ [SPECIES_LEDYBA] = 0,
+ [SPECIES_LEDIAN] = 8,
+ [SPECIES_SPINARAK] = 0,
+ [SPECIES_ARIADOS] = 0,
+ [SPECIES_CROBAT] = 6,
+ [SPECIES_CHINCHOU] = 0,
+ [SPECIES_LANTURN] = 0,
+ [SPECIES_PICHU] = 0,
+ [SPECIES_CLEFFA] = 0,
+ [SPECIES_IGGLYBUFF] = 0,
+ [SPECIES_TOGEPI] = 0,
+ [SPECIES_TOGETIC] = 0,
+ [SPECIES_NATU] = 0,
+ [SPECIES_XATU] = 0,
+ [SPECIES_MAREEP] = 0,
+ [SPECIES_FLAAFFY] = 0,
+ [SPECIES_AMPHAROS] = 0,
+ [SPECIES_BELLOSSOM] = 0,
+ [SPECIES_MARILL] = 0,
+ [SPECIES_AZUMARILL] = 0,
+ [SPECIES_SUDOWOODO] = 0,
+ [SPECIES_POLITOED] = 0,
+ [SPECIES_HOPPIP] = 11,
+ [SPECIES_SKIPLOOM] = 12,
+ [SPECIES_JUMPLUFF] = 6,
+ [SPECIES_AIPOM] = 0,
+ [SPECIES_SUNKERN] = 0,
+ [SPECIES_SUNFLORA] = 0,
+ [SPECIES_YANMA] = 8,
+ [SPECIES_WOOPER] = 0,
+ [SPECIES_QUAGSIRE] = 0,
+ [SPECIES_ESPEON] = 0,
+ [SPECIES_UMBREON] = 0,
+ [SPECIES_MURKROW] = 0,
+ [SPECIES_SLOWKING] = 0,
+ [SPECIES_MISDREAVUS] = 8,
+ [SPECIES_UNOWN] = 5,
+ [SPECIES_WOBBUFFET] = 0,
+ [SPECIES_GIRAFARIG] = 0,
+ [SPECIES_PINECO] = 0,
+ [SPECIES_FORRETRESS] = 0,
+ [SPECIES_DUNSPARCE] = 0,
+ [SPECIES_GLIGAR] = 6,
+ [SPECIES_STEELIX] = 0,
+ [SPECIES_SNUBBULL] = 0,
+ [SPECIES_GRANBULL] = 0,
+ [SPECIES_QWILFISH] = 0,
+ [SPECIES_SCIZOR] = 0,
+ [SPECIES_SHUCKLE] = 0,
+ [SPECIES_HERACROSS] = 0,
+ [SPECIES_SNEASEL] = 0,
+ [SPECIES_TEDDIURSA] = 0,
+ [SPECIES_URSARING] = 0,
+ [SPECIES_SLUGMA] = 0,
+ [SPECIES_MAGCARGO] = 0,
+ [SPECIES_SWINUB] = 0,
+ [SPECIES_PILOSWINE] = 0,
+ [SPECIES_CORSOLA] = 0,
+ [SPECIES_REMORAID] = 0,
+ [SPECIES_OCTILLERY] = 0,
+ [SPECIES_DELIBIRD] = 0,
+ [SPECIES_MANTINE] = 0,
+ [SPECIES_SKARMORY] = 0,
+ [SPECIES_HOUNDOUR] = 0,
+ [SPECIES_HOUNDOOM] = 0,
+ [SPECIES_KINGDRA] = 0,
+ [SPECIES_PHANPY] = 0,
+ [SPECIES_DONPHAN] = 0,
+ [SPECIES_PORYGON2] = 0,
+ [SPECIES_STANTLER] = 0,
+ [SPECIES_SMEARGLE] = 0,
+ [SPECIES_TYROGUE] = 0,
+ [SPECIES_HITMONTOP] = 0,
+ [SPECIES_SMOOCHUM] = 0,
+ [SPECIES_ELEKID] = 0,
+ [SPECIES_MAGBY] = 0,
+ [SPECIES_MILTANK] = 0,
+ [SPECIES_BLISSEY] = 0,
+ [SPECIES_RAIKOU] = 0,
+ [SPECIES_ENTEI] = 0,
+ [SPECIES_SUICUNE] = 0,
+ [SPECIES_LARVITAR] = 0,
+ [SPECIES_PUPITAR] = 0,
+ [SPECIES_TYRANITAR] = 0,
+ [SPECIES_LUGIA] = 3,
+ [SPECIES_HO_OH] = 6,
+ [SPECIES_CELEBI] = 15,
+ [SPECIES_OLD_UNOWN_B] = 0,
+ [SPECIES_OLD_UNOWN_C] = 0,
+ [SPECIES_OLD_UNOWN_D] = 0,
+ [SPECIES_OLD_UNOWN_E] = 0,
+ [SPECIES_OLD_UNOWN_F] = 0,
+ [SPECIES_OLD_UNOWN_G] = 0,
+ [SPECIES_OLD_UNOWN_H] = 0,
+ [SPECIES_OLD_UNOWN_I] = 0,
+ [SPECIES_OLD_UNOWN_J] = 0,
+ [SPECIES_OLD_UNOWN_K] = 0,
+ [SPECIES_OLD_UNOWN_L] = 0,
+ [SPECIES_OLD_UNOWN_M] = 0,
+ [SPECIES_OLD_UNOWN_N] = 0,
+ [SPECIES_OLD_UNOWN_O] = 0,
+ [SPECIES_OLD_UNOWN_P] = 0,
+ [SPECIES_OLD_UNOWN_Q] = 0,
+ [SPECIES_OLD_UNOWN_R] = 0,
+ [SPECIES_OLD_UNOWN_S] = 0,
+ [SPECIES_OLD_UNOWN_T] = 0,
+ [SPECIES_OLD_UNOWN_U] = 0,
+ [SPECIES_OLD_UNOWN_V] = 0,
+ [SPECIES_OLD_UNOWN_W] = 0,
+ [SPECIES_OLD_UNOWN_X] = 0,
+ [SPECIES_OLD_UNOWN_Y] = 0,
+ [SPECIES_OLD_UNOWN_Z] = 0,
+ [SPECIES_TREECKO] = 0,
+ [SPECIES_GROVYLE] = 0,
+ [SPECIES_SCEPTILE] = 0,
+ [SPECIES_TORCHIC] = 0,
+ [SPECIES_COMBUSKEN] = 0,
+ [SPECIES_BLAZIKEN] = 0,
+ [SPECIES_MUDKIP] = 0,
+ [SPECIES_MARSHTOMP] = 0,
+ [SPECIES_SWAMPERT] = 0,
+ [SPECIES_POOCHYENA] = 0,
+ [SPECIES_MIGHTYENA] = 0,
+ [SPECIES_ZIGZAGOON] = 0,
+ [SPECIES_LINOONE] = 0,
+ [SPECIES_WURMPLE] = 0,
+ [SPECIES_SILCOON] = 0,
+ [SPECIES_BEAUTIFLY] = 8,
+ [SPECIES_CASCOON] = 0,
+ [SPECIES_DUSTOX] = 10,
+ [SPECIES_LOTAD] = 0,
+ [SPECIES_LOMBRE] = 0,
+ [SPECIES_LUDICOLO] = 0,
+ [SPECIES_SEEDOT] = 0,
+ [SPECIES_NUZLEAF] = 0,
+ [SPECIES_SHIFTRY] = 0,
+ [SPECIES_NINCADA] = 0,
+ [SPECIES_NINJASK] = 10,
+ [SPECIES_SHEDINJA] = 8,
+ [SPECIES_TAILLOW] = 0,
+ [SPECIES_SWELLOW] = 0,
+ [SPECIES_SHROOMISH] = 0,
+ [SPECIES_BRELOOM] = 0,
+ [SPECIES_SPINDA] = 0,
+ [SPECIES_WINGULL] = 16,
+ [SPECIES_PELIPPER] = 8,
+ [SPECIES_SURSKIT] = 0,
+ [SPECIES_MASQUERAIN] = 10,
+ [SPECIES_WAILMER] = 0,
+ [SPECIES_WAILORD] = 0,
+ [SPECIES_SKITTY] = 0,
+ [SPECIES_DELCATTY] = 0,
+ [SPECIES_KECLEON] = 0,
+ [SPECIES_BALTOY] = 4,
+ [SPECIES_CLAYDOL] = 4,
+ [SPECIES_NOSEPASS] = 0,
+ [SPECIES_TORKOAL] = 0,
+ [SPECIES_SABLEYE] = 0,
+ [SPECIES_BARBOACH] = 0,
+ [SPECIES_WHISCASH] = 0,
+ [SPECIES_LUVDISC] = 0,
+ [SPECIES_CORPHISH] = 0,
+ [SPECIES_CRAWDAUNT] = 0,
+ [SPECIES_FEEBAS] = 0,
+ [SPECIES_MILOTIC] = 0,
+ [SPECIES_CARVANHA] = 0,
+ [SPECIES_SHARPEDO] = 0,
+ [SPECIES_TRAPINCH] = 0,
+ [SPECIES_VIBRAVA] = 0,
+ [SPECIES_FLYGON] = 3,
+ [SPECIES_MAKUHITA] = 0,
+ [SPECIES_HARIYAMA] = 0,
+ [SPECIES_ELECTRIKE] = 0,
+ [SPECIES_MANECTRIC] = 0,
+ [SPECIES_NUMEL] = 0,
+ [SPECIES_CAMERUPT] = 0,
+ [SPECIES_SPHEAL] = 0,
+ [SPECIES_SEALEO] = 0,
+ [SPECIES_WALREIN] = 0,
+ [SPECIES_CACNEA] = 0,
+ [SPECIES_CACTURNE] = 0,
+ [SPECIES_SNORUNT] = 0,
+ [SPECIES_GLALIE] = 12,
+ [SPECIES_LUNATONE] = 13,
+ [SPECIES_SOLROCK] = 4,
+ [SPECIES_AZURILL] = 0,
+ [SPECIES_SPOINK] = 0,
+ [SPECIES_GRUMPIG] = 0,
+ [SPECIES_PLUSLE] = 0,
+ [SPECIES_MINUN] = 0,
+ [SPECIES_MAWILE] = 0,
+ [SPECIES_MEDITITE] = 0,
+ [SPECIES_MEDICHAM] = 0,
+ [SPECIES_SWABLU] = 12,
+ [SPECIES_ALTARIA] = 8,
+ [SPECIES_WYNAUT] = 0,
+ [SPECIES_DUSKULL] = 4,
+ [SPECIES_DUSCLOPS] = 0,
+ [SPECIES_ROSELIA] = 0,
+ [SPECIES_SLAKOTH] = 0,
+ [SPECIES_VIGOROTH] = 0,
+ [SPECIES_SLAKING] = 0,
+ [SPECIES_GULPIN] = 0,
+ [SPECIES_SWALOT] = 0,
+ [SPECIES_TROPIUS] = 0,
+ [SPECIES_WHISMUR] = 0,
+ [SPECIES_LOUDRED] = 0,
+ [SPECIES_EXPLOUD] = 0,
+ [SPECIES_CLAMPERL] = 0,
+ [SPECIES_HUNTAIL] = 0,
+ [SPECIES_GOREBYSS] = 0,
+ [SPECIES_ABSOL] = 0,
+ [SPECIES_SHUPPET] = 12,
+ [SPECIES_BANETTE] = 8,
+ [SPECIES_SEVIPER] = 0,
+ [SPECIES_ZANGOOSE] = 0,
+ [SPECIES_RELICANTH] = 0,
+ [SPECIES_ARON] = 0,
+ [SPECIES_LAIRON] = 0,
+ [SPECIES_AGGRON] = 0,
+ [SPECIES_CASTFORM] = 16,
+ [SPECIES_VOLBEAT] = 0,
+ [SPECIES_ILLUMISE] = 0,
+ [SPECIES_LILEEP] = 0,
+ [SPECIES_CRADILY] = 0,
+ [SPECIES_ANORITH] = 0,
+ [SPECIES_ARMALDO] = 0,
+ [SPECIES_RALTS] = 0,
+ [SPECIES_KIRLIA] = 0,
+ [SPECIES_GARDEVOIR] = 0,
+ [SPECIES_BAGON] = 0,
+ [SPECIES_SHELGON] = 0,
+ [SPECIES_SALAMENCE] = 0,
+ [SPECIES_BELDUM] = 8,
+ [SPECIES_METANG] = 0,
+ [SPECIES_METAGROSS] = 0,
+ [SPECIES_REGIROCK] = 0,
+ [SPECIES_REGICE] = 0,
+ [SPECIES_REGISTEEL] = 0,
+ [SPECIES_KYOGRE] = 0,
+ [SPECIES_GROUDON] = 0,
+ [SPECIES_RAYQUAZA] = 6,
+ [SPECIES_LATIAS] = 6,
+ [SPECIES_LATIOS] = 6,
+ [SPECIES_JIRACHI] = 12,
+ [SPECIES_DEOXYS] = 4,
+ [SPECIES_CHIMECHO] = 12,
+};
+
+#include "../data/trainer_parties.h"
+
+#if ENGLISH
+#include "../data/text/trainer_class_names_en.h"
+#include "../data/trainers_en.h"
+#include "../data/text/species_names_en.h"
+#include "../data/text/move_names_en.h"
+#elif GERMAN
+#include "../data/text/trainer_class_names_de.h"
+#include "../data/trainers_de.h"
+#include "../data/text/species_names_de.h"
+#include "../data/text/move_names_de.h"
+#endif
+
+const u32 gUnknown_81F9528 = 0x101;
diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c
index 960905d1c..7b6004ce0 100644
--- a/src/battle/battle_2.c
+++ b/src/battle/battle_2.c
@@ -75,19 +75,19 @@ extern void sub_802BBD4();
extern struct SpriteTemplate gUnknown_02024E8C;
extern const u8 Str_821F7B8[];
extern u8 gUnknown_02023A14_50;
-extern const u16 gUnknown_08D004E0[];
+extern const u16 gBattleTextboxPalette[];
extern const struct MonCoords gCastformFrontSpriteCoords[];
extern const u8 Str_821F7EA[];
extern const u8 gUnknown_Debug_821F7F3[];
extern const u8 BattleText_YesNo[];
extern u8 gStatStageRatios[][2];
extern u8 gActionsByTurnOrder[4];
-extern struct UnknownPokemonStruct2 gUnknown_02023A00[];
+extern struct UnknownPokemonStruct2 gMultiPartnerParty[];
extern u8 gBattleBufferB[][0x200];
-extern u8 gActiveBank;
+extern u8 gActiveBattler;
extern u32 gBattleExecBuffer;
-extern u8 gNoOfAllBanks;
-extern u16 gBattlePartyID[];
+extern u8 gBattlersCount;
+extern u16 gBattlerPartyIndexes[];
extern u8 gCurrentActionFuncId;
extern u8 gBanksByTurnOrder[];
extern struct UnknownStruct12 gUnknown_02024AD0[];
@@ -95,7 +95,7 @@ extern u8 gBankSpriteIds[];
extern u16 gCurrentMove; // This is mis-named. It is a species, not a move ID.
extern u8 gLastUsedAbility;
extern u8 gStringBank;
-extern u8 gAbsentBankFlags;
+extern u8 gAbsentBattlerFlags;
extern u8 gMultiHitCounter;
extern u8 gActionForBanks[];
extern u16 gUnknown_02024C2C[];
@@ -104,7 +104,7 @@ extern u16 gLastLandedMoves[];
extern u16 gLastHitByType[];
extern u16 gUnknown_02024C4C[];
extern u16 gLockedMoves[];
-extern u8 gUnknown_02024C5C[];
+extern u8 gLastHitBy[];
extern u16 gChosenMovesByBanks[];
extern u32 gHitMarker;
extern u8 gUnknown_02024C70[];
@@ -140,9 +140,9 @@ extern u8 gBattleMonForms[];
extern u8 gBankAttacker;
extern u8 gBankTarget;
extern u16 gBattleWeather;
-extern u32 gBattleMoveDamage;
+extern s32 gBattleMoveDamage;
extern struct BattlePokemon gBattleMons[];
-extern u8 gBattleMoveFlags;
+extern u8 gMoveResultFlags;
extern u8 BattleScript_FocusPunchSetUp[];
extern u16 gDynamicBasePower;
extern u8 gCurrentTurnActionNumber;
@@ -257,10 +257,10 @@ void InitBattle(void)
Text_InitWindowWithTemplate(&gUnknown_030041D0, &gWindowTemplate_81E71D0);
Text_InitWindowWithTemplate(&gUnknown_03004250, &gWindowTemplate_81E71EC);
sub_800D6D4();
- sub_800DAB8();
+ LoadBattleTextboxAndBackground();
ResetSpriteData();
ResetTasks();
- sub_800E23C();
+ LoadBattleEntryBackground();
FreeAllSpritePalettes();
gReservedSpritePaletteCount = 4;
SetVBlankCallback(sub_800FCFC);
@@ -279,8 +279,8 @@ void InitBattle(void)
SetWildMonHeldItem();
}
gMain.inBattle = TRUE;
- for (i = 0; i < 6; i++)
- AdjustFriendship(&gPlayerParty[i], 3);
+ for (i = 0; i < PARTY_SIZE; i++)
+ AdjustFriendship(&gPlayerParty[i], FRIENDSHIP_EVENT_LEAGUE_BATTLE);
gBattleCommunication[0] = 0;
}
@@ -292,7 +292,7 @@ void sub_800E9EC(void)
u32 status;
s32 i;
- for (i = 0; i < 6; i++)
+ for (i = 0; i < PARTY_SIZE; i++)
{
species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2);
hp = GetMonData(&gPlayerParty[i], MON_DATA_HP);
@@ -564,23 +564,23 @@ void sub_800F02C(void)
for (i = 0; i < 3; i++)
{
- u8 *nickname = gUnknown_02023A00[i].nickname;
+ u8 *nickname = gMultiPartnerParty[i].nickname;
- gUnknown_02023A00[i].species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES);
- gUnknown_02023A00[i].heldItem = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM);
+ gMultiPartnerParty[i].species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES);
+ gMultiPartnerParty[i].heldItem = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM);
GetMonData(&gPlayerParty[i], MON_DATA_NICKNAME, nickname);
- gUnknown_02023A00[i].level = GetMonData(&gPlayerParty[i], MON_DATA_LEVEL);
- gUnknown_02023A00[i].hp = GetMonData(&gPlayerParty[i], MON_DATA_HP);
- gUnknown_02023A00[i].maxhp = GetMonData(&gPlayerParty[i], MON_DATA_MAX_HP);
- gUnknown_02023A00[i].status = GetMonData(&gPlayerParty[i], MON_DATA_STATUS);
- gUnknown_02023A00[i].personality = GetMonData(&gPlayerParty[i], MON_DATA_PERSONALITY);
- gUnknown_02023A00[i].gender = GetMonGender(&gPlayerParty[i]);
+ gMultiPartnerParty[i].level = GetMonData(&gPlayerParty[i], MON_DATA_LEVEL);
+ gMultiPartnerParty[i].hp = GetMonData(&gPlayerParty[i], MON_DATA_HP);
+ gMultiPartnerParty[i].maxhp = GetMonData(&gPlayerParty[i], MON_DATA_MAX_HP);
+ gMultiPartnerParty[i].status = GetMonData(&gPlayerParty[i], MON_DATA_STATUS);
+ gMultiPartnerParty[i].personality = GetMonData(&gPlayerParty[i], MON_DATA_PERSONALITY);
+ gMultiPartnerParty[i].gender = GetMonGender(&gPlayerParty[i]);
Text_StripExtCtrlCodes(nickname);
- gUnknown_02023A00[i].language = GetMonData(&gPlayerParty[i], MON_DATA_LANGUAGE);
- if (gUnknown_02023A00[i].language != 1)
+ gMultiPartnerParty[i].language = GetMonData(&gPlayerParty[i], MON_DATA_LANGUAGE);
+ if (gMultiPartnerParty[i].language != 1)
PadNameString(nickname, 0);
}
- memcpy(gSharedMem, gUnknown_02023A00, 0x60);
+ memcpy(gSharedMem, gMultiPartnerParty, 0x60);
}
void sub_800F104(void)
@@ -634,7 +634,7 @@ void sub_800F104(void)
{
if ((!(gLinkPlayers[i].lp_field_18 & 1) && !(gLinkPlayers[playerId].lp_field_18 & 1))
|| ((gLinkPlayers[i].lp_field_18 & 1) && (gLinkPlayers[playerId].lp_field_18 & 1)))
- memcpy(gUnknown_02023A00, gBlockRecvBuffer[i], 0x60);
+ memcpy(gMultiPartnerParty, gBlockRecvBuffer[i], 0x60);
}
}
gBattleCommunication[0]++;
@@ -776,16 +776,14 @@ void sub_800F298(void)
ZeroPlayerPartyMons();
ZeroEnemyPartyMons();
gBattleCommunication[0]++;
- goto step_2;
- }
- break;
+ // fallthrough
case 2:
- step_2:
- if (IsLinkTaskFinished())
- {
- SendBlock(bitmask_all_link_players_but_self(), ewram1D000, sizeof(struct Pokemon) * 2);
- gBattleCommunication[0]++;
- }
+ if (IsLinkTaskFinished())
+ {
+ SendBlock(bitmask_all_link_players_but_self(), ewram1D000, sizeof(struct Pokemon) * 2);
+ gBattleCommunication[0]++;
+ }
+ }
break;
case 3:
if ((GetBlockReceivedStatus() & 0xF) == 0xF)
@@ -1057,7 +1055,7 @@ u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum)
{
case 0:
{
- struct TrainerPartyMember0 *partyData = gTrainers[trainerNum].party;
+ const struct TrainerPartyMember0 *partyData = gTrainers[trainerNum].party;
for (j = 0; gSpeciesNames[partyData[i].species][j] != 0xFF; j++)
nameHash += gSpeciesNames[partyData[i].species][j];
@@ -1068,7 +1066,7 @@ u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum)
}
case 1:
{
- struct TrainerPartyMember1 *partyData = gTrainers[trainerNum].party;
+ const struct TrainerPartyMember1 *partyData = gTrainers[trainerNum].party;
for (j = 0; gSpeciesNames[partyData[i].species][j] != 0xFF; j++)
nameHash += gSpeciesNames[partyData[i].species][j];
@@ -1085,7 +1083,7 @@ u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum)
}
case 2:
{
- struct TrainerPartyMember2 *partyData = gTrainers[trainerNum].party;
+ const struct TrainerPartyMember2 *partyData = gTrainers[trainerNum].party;
for (j = 0; gSpeciesNames[partyData[i].species][j] != 0xFF; j++)
nameHash += gSpeciesNames[partyData[i].species][j];
@@ -1098,7 +1096,7 @@ u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum)
}
case 3:
{
- struct TrainerPartyMember3 *partyData = gTrainers[trainerNum].party;
+ const struct TrainerPartyMember3 *partyData = gTrainers[trainerNum].party;
for (j = 0; gSpeciesNames[partyData[i].species][j] != 0xFF; j++)
nameHash += gSpeciesNames[partyData[i].species][j];
@@ -1297,11 +1295,11 @@ void c2_8011A1C(void)
Text_InitWindowWithTemplate(&gUnknown_030041D0, &gWindowTemplate_81E71D0);
Text_InitWindowWithTemplate(&gUnknown_03004250, &gWindowTemplate_81E71EC);
sub_800D6D4();
- LoadCompressedPalette(gUnknown_08D004E0, 0, 64);
- sub_800D74C();
+ LoadCompressedPalette(gBattleTextboxPalette, 0, 64);
+ ApplyPlayerChosenFrameToBattleMenu();
ResetSpriteData();
ResetTasks();
- sub_800E23C();
+ LoadBattleEntryBackground();
REG_WINOUT = 0x37;
FreeAllSpritePalettes();
gReservedSpritePaletteCount = 4;
@@ -1336,7 +1334,7 @@ void c2_081284E0(void)
gBattleCommunication[1]--;
if (gBattleCommunication[1] == 0)
{
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gBattleCommunication[0]++;
}
break;
@@ -2223,7 +2221,7 @@ extern const struct Pokeblock gUnknown_Debug_821F5AC[];
extern u8 gUnknown_020297ED;
-extern void unref_sub_800D684(void);
+extern void debug_sub_800D684(void);
void debug_sub_801174C(void)
{
@@ -2398,7 +2396,7 @@ void debug_sub_801174C(void)
}
gMain.savedCallback = debug_sub_80108B8;
- SetMainCallback2(unref_sub_800D684);
+ SetMainCallback2(debug_sub_800D684);
ClearBag();
@@ -2432,7 +2430,7 @@ void debug_sub_801174C(void)
AddBagItem(ITEM_POKE_DOLL, 99);
for (i = 0; i < 15; i++)
- sub_810CA34(&gUnknown_Debug_821F5AC[i]);
+ GivePokeblock(&gUnknown_Debug_821F5AC[i]);
}
void debug_sub_8011D40(void)
@@ -2821,7 +2819,7 @@ void debug_sub_8012688(void)
gBattle_BG3_Y = 0;
gBattleTerrain = 9;
sub_800D6D4();
- sub_800DAB8();
+ LoadBattleTextboxAndBackground();
ResetSpriteData();
ResetTasks();
FreeAllSpritePalettes();
@@ -3270,7 +3268,7 @@ void oac_poke_opponent(struct Sprite *sprite)
{
sprite->callback = sub_8010278;
StartSpriteAnimIfDifferent(sprite, 0);
- BeginNormalPaletteFade(0x00020000, 0, 10, 10, 0x3DEF);
+ BeginNormalPaletteFade(0x00020000, 0, 10, 10, RGB(15, 15, 15));
}
void sub_8010278(struct Sprite *sprite)
@@ -3294,7 +3292,7 @@ void sub_80102AC(struct Sprite *sprite)
sub_8043DFC(gHealthboxIDs[sprite->data[0]]);
sprite->callback = nullsub_37;
StartSpriteAnimIfDifferent(sprite, 0);
- BeginNormalPaletteFade(0x00020000, 0, 10, 0, 0x3DEF);
+ BeginNormalPaletteFade(0x00020000, 0, 10, 0, RGB(15, 15, 15));
}
}
@@ -3337,11 +3335,11 @@ void sub_8010384(struct Sprite *sprite)
else
species = sprite->data[2];
- GetMonData(&gEnemyParty[gBattlePartyID[r6]], MON_DATA_PERSONALITY); // Unused return value
+ GetMonData(&gEnemyParty[gBattlerPartyIndexes[r6]], MON_DATA_PERSONALITY); // Unused return value
if (species == SPECIES_UNOWN)
{
- u32 personalityValue = GetMonData(&gEnemyParty[gBattlePartyID[r6]], MON_DATA_PERSONALITY);
+ u32 personalityValue = GetMonData(&gEnemyParty[gBattlerPartyIndexes[r6]], MON_DATA_PERSONALITY);
u16 unownForm = ((((personalityValue & 0x3000000) >> 18) | ((personalityValue & 0x30000) >> 12) | ((personalityValue & 0x300) >> 6) | (personalityValue & 3)) % 0x1C);
u16 unownSpecies;
@@ -3389,7 +3387,7 @@ void sub_8010494(struct Sprite *sprite)
else
{
// this should use a MEMSET_ALT, but *(dst++) wont match with it.
- dst = (u8 *)gUnknown_081FAF4C[GetBankIdentity(sprite->data[0])] + (gBattleMonForms[sprite->data[0]] << 11) + (sprite->data[3] << 8);
+ dst = (u8 *)gUnknown_081FAF4C[GetBattlerPosition(sprite->data[0])] + (gBattleMonForms[sprite->data[0]] << 11) + (sprite->data[3] << 8);
for (i = 0; i < 0x100; i++)
*(dst++) = 0;
StartSpriteAnim(sprite, gBattleMonForms[sprite->data[0]]);
@@ -3548,12 +3546,12 @@ void sub_8010800(void)
#if DEBUG
void debug_sub_80138CC(void)
{
- if (GetBankSide(gActiveBank) == 0)
+ if (GetBattlerSide(gActiveBattler) == 0)
{
switch (gSharedMem[0x160FD])
{
case 0:
- if (gBattleBankFunc[gActiveBank] == sub_802C098)
+ if (gBattleBankFunc[gActiveBattler] == sub_802C098)
gSharedMem[0x160FD]++;
break;
case 1:
@@ -3594,18 +3592,18 @@ void sub_8010824(void)
#if DEBUG
if (gUnknown_02023A14_50 & 0x80)
{
- for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++)
debug_sub_80138CC();
gBattleMainFunc();
- for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
- gBattleBankFunc[gActiveBank]();
+ for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++)
+ gBattleBankFunc[gActiveBattler]();
}
else
#endif
{
gBattleMainFunc();
- for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
- gBattleBankFunc[gActiveBank]();
+ for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++)
+ gBattleBankFunc[gActiveBattler]();
}
}
@@ -3629,7 +3627,7 @@ void sub_8010874(void)
gLastLandedMoves[i] = 0;
gLastHitByType[i] = 0;
gUnknown_02024C4C[i] = 0;
- gUnknown_02024C5C[i] = 0xFF;
+ gLastHitBy[i] = 0xFF;
gLockedMoves[i] = 0;
gUnknown_02024C2C[i] = 0;
eFlashFireArr.arr[i] = 0;
@@ -3665,7 +3663,7 @@ void sub_8010874(void)
ewram16002 = 0;
ewram160A1 = 0;
gLeveledUpInBattle = 0;
- gAbsentBankFlags = 0;
+ gAbsentBattlerFlags = 0;
ewram16078 = 0;
ewram16086 = 0;
ewram16087 = 0;
@@ -3688,7 +3686,7 @@ void sub_8010874(void)
ewram160C9 = 6;
ewram16113 = 0;
for (i = 0; i < 11; i++)
- gBattleResults.unk36[i] = 0;
+ gBattleResults.usedBalls[i] = 0;
gBattleResults.battleTurnCounter = 0;
gBattleResults.playerFaintCounter = 0;
gBattleResults.opponentFaintCounter = 0;
@@ -3717,21 +3715,21 @@ void sub_8010874(void)
void SwitchInClearSetData(void)
{
- struct DisableStruct sp0 = gDisableStructs[gActiveBank];
+ struct DisableStruct sp0 = gDisableStructs[gActiveBattler];
s32 i;
u8 *ptr;
if (gBattleMoves[gCurrentMove].effect != EFFECT_BATON_PASS)
{
for (i = 0; i < 8; i++)
- gBattleMons[gActiveBank].statStages[i] = 6;
- for (i = 0; i < gNoOfAllBanks; i++)
+ gBattleMons[gActiveBattler].statStages[i] = 6;
+ for (i = 0; i < gBattlersCount; i++)
{
struct UnknownStruct12 *sp20 = &gUnknown_02024AD0[i];
- if ((sp20->unk0 & 0x04000000) && gDisableStructs[i].bankPreventingEscape == gActiveBank)
+ if ((sp20->unk0 & 0x04000000) && gDisableStructs[i].bankPreventingEscape == gActiveBattler)
sp20->unk0 &= ~0x04000000;
- if ((gStatuses3[i] & STATUS3_ALWAYS_HITS) && gDisableStructs[i].bankWithSureHit == gActiveBank)
+ if ((gStatuses3[i] & STATUS3_ALWAYS_HITS) && gDisableStructs[i].bankWithSureHit == gActiveBattler)
{
gStatuses3[i] &= ~STATUS3_ALWAYS_HITS;
gDisableStructs[i].bankWithSureHit = 0;
@@ -3740,14 +3738,14 @@ void SwitchInClearSetData(void)
}
if (gBattleMoves[gCurrentMove].effect == EFFECT_BATON_PASS)
{
- gBattleMons[gActiveBank].status2 &= (STATUS2_CONFUSION | STATUS2_FOCUS_ENERGY | STATUS2_SUBSTITUTE | STATUS2_ESCAPE_PREVENTION | STATUS2_CURSED);
- gStatuses3[gActiveBank] &= (STATUS3_LEECHSEED_BANK | STATUS3_LEECHSEED | STATUS3_ALWAYS_HITS | STATUS3_PERISH_SONG | STATUS3_ROOTED | STATUS3_MUDSPORT | STATUS3_WATERSPORT);
+ gBattleMons[gActiveBattler].status2 &= (STATUS2_CONFUSION | STATUS2_FOCUS_ENERGY | STATUS2_SUBSTITUTE | STATUS2_ESCAPE_PREVENTION | STATUS2_CURSED);
+ gStatuses3[gActiveBattler] &= (STATUS3_LEECHSEED_BANK | STATUS3_LEECHSEED | STATUS3_ALWAYS_HITS | STATUS3_PERISH_SONG | STATUS3_ROOTED | STATUS3_MUDSPORT | STATUS3_WATERSPORT);
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
- if (GetBankSide(gActiveBank) != GetBankSide(i)
+ if (GetBattlerSide(gActiveBattler) != GetBattlerSide(i)
&& (gStatuses3[i] & STATUS3_ALWAYS_HITS) != 0
- && (gDisableStructs[i].bankWithSureHit == gActiveBank))
+ && (gDisableStructs[i].bankWithSureHit == gActiveBattler))
{
gStatuses3[i] &= ~STATUS3_ALWAYS_HITS;
gStatuses3[i] |= 0x10;
@@ -3756,49 +3754,49 @@ void SwitchInClearSetData(void)
}
else
{
- gBattleMons[gActiveBank].status2 = 0;
- gStatuses3[gActiveBank] = 0;
+ gBattleMons[gActiveBattler].status2 = 0;
+ gStatuses3[gActiveBattler] = 0;
}
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
- if (gUnknown_02024AD0[i].unk0 & (gBitTable[gActiveBank] << 16))
- gUnknown_02024AD0[i].unk0 &= ~(gBitTable[gActiveBank] << 16);
- if ((gUnknown_02024AD0[i].unk0 & 0xE000) && ewram16020arr(i) == gActiveBank)
+ if (gUnknown_02024AD0[i].unk0 & (gBitTable[gActiveBattler] << 16))
+ gUnknown_02024AD0[i].unk0 &= ~(gBitTable[gActiveBattler] << 16);
+ if ((gUnknown_02024AD0[i].unk0 & 0xE000) && ewram16020arr(i) == gActiveBattler)
gUnknown_02024AD0[i].unk0 &= ~0xE000;
}
- gActionSelectionCursor[gActiveBank] = 0;
- gMoveSelectionCursor[gActiveBank] = 0;
+ gActionSelectionCursor[gActiveBattler] = 0;
+ gMoveSelectionCursor[gActiveBattler] = 0;
- MEMSET_ALT(&gDisableStructs[gActiveBank], 0, 0x1C, i, ptr);
+ MEMSET_ALT(&gDisableStructs[gActiveBattler], 0, 0x1C, i, ptr);
if (gBattleMoves[gCurrentMove].effect == EFFECT_BATON_PASS)
{
- gDisableStructs[gActiveBank].substituteHP = sp0.substituteHP;
- gDisableStructs[gActiveBank].bankWithSureHit = sp0.bankWithSureHit;
- gDisableStructs[gActiveBank].perishSong1 = sp0.perishSong1;
- gDisableStructs[gActiveBank].perishSong2 = sp0.perishSong2;
+ gDisableStructs[gActiveBattler].substituteHP = sp0.substituteHP;
+ gDisableStructs[gActiveBattler].bankWithSureHit = sp0.bankWithSureHit;
+ gDisableStructs[gActiveBattler].perishSongTimer1 = sp0.perishSongTimer1;
+ gDisableStructs[gActiveBattler].perishSongTimer2 = sp0.perishSongTimer2;
}
- gDisableStructs[gActiveBank].isFirstTurn= 2;
- gLastUsedMove[gActiveBank] = 0;
- gLastLandedMoves[gActiveBank] = 0;
- gLastHitByType[gActiveBank] = 0;
- gUnknown_02024C4C[gActiveBank] = 0;
- gUnknown_02024C2C[gActiveBank] = 0;
- gUnknown_02024C5C[gActiveBank] = 0xFF;
+ gDisableStructs[gActiveBattler].isFirstTurn= 2;
+ gLastUsedMove[gActiveBattler] = 0;
+ gLastLandedMoves[gActiveBattler] = 0;
+ gLastHitByType[gActiveBattler] = 0;
+ gUnknown_02024C4C[gActiveBattler] = 0;
+ gUnknown_02024C2C[gActiveBattler] = 0;
+ gLastHitBy[gActiveBattler] = 0xFF;
- ewram160ACarr2(0, gActiveBank) = 0;
- ewram160ACarr2(1, gActiveBank) = 0;
- ewram16100arr2(0, gActiveBank) = 0;
- ewram16100arr2(1, gActiveBank) = 0;
- ewram16100arr2(2, gActiveBank) = 0;
- ewram16100arr2(3, gActiveBank) = 0;
- ewram160E8arr2(0, gActiveBank) = 0;
- ewram160E8arr2(1, gActiveBank) = 0;
+ ewram160ACarr2(0, gActiveBattler) = 0;
+ ewram160ACarr2(1, gActiveBattler) = 0;
+ ewram16100arr2(0, gActiveBattler) = 0;
+ ewram16100arr2(1, gActiveBattler) = 0;
+ ewram16100arr2(2, gActiveBattler) = 0;
+ ewram16100arr2(3, gActiveBattler) = 0;
+ ewram160E8arr2(0, gActiveBattler) = 0;
+ ewram160E8arr2(1, gActiveBattler) = 0;
- eFlashFireArr.arr[gActiveBank] = 0;
+ eFlashFireArr.arr[gActiveBattler] = 0;
gCurrentMove = 0;
}
@@ -3809,63 +3807,63 @@ void UndoEffectsAfterFainting(void)
u8 *ptr;
for (i = 0; i < 8; i++)
- gBattleMons[gActiveBank].statStages[i] = 6;
- gBattleMons[gActiveBank].status2 = 0;
- gStatuses3[gActiveBank] = 0;
- for (i = 0; i < gNoOfAllBanks; i++)
+ gBattleMons[gActiveBattler].statStages[i] = 6;
+ gBattleMons[gActiveBattler].status2 = 0;
+ gStatuses3[gActiveBattler] = 0;
+ for (i = 0; i < gBattlersCount; i++)
{
- if ((gBattleMons[i].status2 & STATUS2_ESCAPE_PREVENTION) && gDisableStructs[i].bankPreventingEscape == gActiveBank)
+ if ((gBattleMons[i].status2 & STATUS2_ESCAPE_PREVENTION) && gDisableStructs[i].bankPreventingEscape == gActiveBattler)
gBattleMons[i].status2 &= ~STATUS2_ESCAPE_PREVENTION;
- if (gBattleMons[i].status2 & (gBitTable[gActiveBank] << 16))
- gBattleMons[i].status2 &= ~(gBitTable[gActiveBank] << 16);
- if ((gBattleMons[i].status2 & STATUS2_WRAPPED) && ewram16020arr(i) == gActiveBank)
+ if (gBattleMons[i].status2 & (gBitTable[gActiveBattler] << 16))
+ gBattleMons[i].status2 &= ~(gBitTable[gActiveBattler] << 16);
+ if ((gBattleMons[i].status2 & STATUS2_WRAPPED) && ewram16020arr(i) == gActiveBattler)
gBattleMons[i].status2 &= ~STATUS2_WRAPPED;
}
- gActionSelectionCursor[gActiveBank] = 0;
- gMoveSelectionCursor[gActiveBank] = 0;
-
- MEMSET_ALT(&gDisableStructs[gActiveBank], 0, 0x1C, i, ptr);
- gProtectStructs[gActiveBank].protected = 0;
- gProtectStructs[gActiveBank].endured = 0;
- gProtectStructs[gActiveBank].onlyStruggle = 0;
- gProtectStructs[gActiveBank].helpingHand = 0;
- gProtectStructs[gActiveBank].bounceMove = 0;
- gProtectStructs[gActiveBank].stealMove = 0;
- gProtectStructs[gActiveBank].flag0Unknown = 0;
- gProtectStructs[gActiveBank].prlzImmobility = 0;
- gProtectStructs[gActiveBank].confusionSelfDmg = 0;
- gProtectStructs[gActiveBank].notEffective = 0;
- gProtectStructs[gActiveBank].chargingTurn = 0;
- gProtectStructs[gActiveBank].fleeFlag = 0;
- gProtectStructs[gActiveBank].usedImprisionedMove = 0;
- gProtectStructs[gActiveBank].loveImmobility = 0;
- gProtectStructs[gActiveBank].usedDisabledMove = 0;
- gProtectStructs[gActiveBank].usedTauntedMove = 0;
- gProtectStructs[gActiveBank].flag2Unknown = 0;
- gProtectStructs[gActiveBank].flinchImmobility = 0;
- gProtectStructs[gActiveBank].notFirstStrike = 0;
-
- gDisableStructs[gActiveBank].isFirstTurn= 2;
- gLastUsedMove[gActiveBank] = 0;
- gLastLandedMoves[gActiveBank] = 0;
- gLastHitByType[gActiveBank] = 0;
- gUnknown_02024C4C[gActiveBank] = 0;
- gUnknown_02024C2C[gActiveBank] = 0;
- gUnknown_02024C5C[gActiveBank] = 0xFF;
-
- ewram160E8arr2(0, gActiveBank) = 0;
- ewram160E8arr2(1, gActiveBank) = 0;
- ewram160ACarr2(0, gActiveBank) = 0;
- ewram160ACarr2(1, gActiveBank) = 0;
- ewram16100arr2(0, gActiveBank) = 0;
- ewram16100arr2(1, gActiveBank) = 0;
- ewram16100arr2(2, gActiveBank) = 0;
- ewram16100arr2(3, gActiveBank) = 0;
-
- eFlashFireArr.arr[gActiveBank] = 0;
-
- gBattleMons[gActiveBank].type1 = gBaseStats[gBattleMons[gActiveBank].species].type1;
- gBattleMons[gActiveBank].type2 = gBaseStats[gBattleMons[gActiveBank].species].type2;
+ gActionSelectionCursor[gActiveBattler] = 0;
+ gMoveSelectionCursor[gActiveBattler] = 0;
+
+ MEMSET_ALT(&gDisableStructs[gActiveBattler], 0, 0x1C, i, ptr);
+ gProtectStructs[gActiveBattler].protected = 0;
+ gProtectStructs[gActiveBattler].endured = 0;
+ gProtectStructs[gActiveBattler].onlyStruggle = 0;
+ gProtectStructs[gActiveBattler].helpingHand = 0;
+ gProtectStructs[gActiveBattler].bounceMove = 0;
+ gProtectStructs[gActiveBattler].stealMove = 0;
+ gProtectStructs[gActiveBattler].flag0Unknown = 0;
+ gProtectStructs[gActiveBattler].prlzImmobility = 0;
+ gProtectStructs[gActiveBattler].confusionSelfDmg = 0;
+ gProtectStructs[gActiveBattler].notEffective = 0;
+ gProtectStructs[gActiveBattler].chargingTurn = 0;
+ gProtectStructs[gActiveBattler].fleeFlag = 0;
+ gProtectStructs[gActiveBattler].usedImprisionedMove = 0;
+ gProtectStructs[gActiveBattler].loveImmobility = 0;
+ gProtectStructs[gActiveBattler].usedDisabledMove = 0;
+ gProtectStructs[gActiveBattler].usedTauntedMove = 0;
+ gProtectStructs[gActiveBattler].flag2Unknown = 0;
+ gProtectStructs[gActiveBattler].flinchImmobility = 0;
+ gProtectStructs[gActiveBattler].notFirstStrike = 0;
+
+ gDisableStructs[gActiveBattler].isFirstTurn= 2;
+ gLastUsedMove[gActiveBattler] = 0;
+ gLastLandedMoves[gActiveBattler] = 0;
+ gLastHitByType[gActiveBattler] = 0;
+ gUnknown_02024C4C[gActiveBattler] = 0;
+ gUnknown_02024C2C[gActiveBattler] = 0;
+ gLastHitBy[gActiveBattler] = 0xFF;
+
+ ewram160E8arr2(0, gActiveBattler) = 0;
+ ewram160E8arr2(1, gActiveBattler) = 0;
+ ewram160ACarr2(0, gActiveBattler) = 0;
+ ewram160ACarr2(1, gActiveBattler) = 0;
+ ewram16100arr2(0, gActiveBattler) = 0;
+ ewram16100arr2(1, gActiveBattler) = 0;
+ ewram16100arr2(2, gActiveBattler) = 0;
+ ewram16100arr2(3, gActiveBattler) = 0;
+
+ eFlashFireArr.arr[gActiveBattler] = 0;
+
+ gBattleMons[gActiveBattler].type1 = gBaseStats[gBattleMons[gActiveBattler].species].type1;
+ gBattleMons[gActiveBattler].type2 = gBaseStats[gBattleMons[gActiveBattler].species].type2;
}
void bc_8012FAC(void)
@@ -3873,16 +3871,16 @@ void bc_8012FAC(void)
switch (gBattleCommunication[0])
{
case 0:
- gActiveBank = gBattleCommunication[1];
+ gActiveBattler = gBattleCommunication[1];
EmitGetAttributes(0, 0, 0);
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
gBattleCommunication[0]++;
break;
case 1:
if (gBattleExecBuffer == 0)
{
gBattleCommunication[1]++;
- if (gBattleCommunication[1] == gNoOfAllBanks)
+ if (gBattleCommunication[1] == gBattlersCount)
gBattleMainFunc = BattlePrepIntroSlide;
else
gBattleCommunication[0] = 0;
@@ -3895,9 +3893,9 @@ static void BattlePrepIntroSlide(void)
{
if (gBattleExecBuffer == 0)
{
- gActiveBank = GetBankByIdentity(0);
+ gActiveBattler = GetBattlerAtPosition(0);
EmitIntroSlide(0, gBattleTerrain);
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
gBattleMainFunc = sub_8011384;
gBattleCommunication[0] = 0;
gBattleCommunication[1] = 0;
@@ -3911,63 +3909,63 @@ void sub_8011384(void)
if (gBattleExecBuffer == 0)
{
- for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++)
{
if ((gBattleTypeFlags & BATTLE_TYPE_SAFARI)
- && GetBankSide(gActiveBank) == 0)
+ && GetBattlerSide(gActiveBattler) == 0)
{
- MEMSET_ALT(&gBattleMons[gActiveBank], 0, 0x58, i, ptr);
+ MEMSET_ALT(&gBattleMons[gActiveBattler], 0, 0x58, i, ptr);
}
else
{
u8 r0;
- MEMSET_ALT(&gBattleMons[gActiveBank], gBattleBufferB[gActiveBank][4 + i], 0x58, i, ptr);
- gBattleMons[gActiveBank].type1 = gBaseStats[gBattleMons[gActiveBank].species].type1;
- gBattleMons[gActiveBank].type2 = gBaseStats[gBattleMons[gActiveBank].species].type2;
- gBattleMons[gActiveBank].ability = GetAbilityBySpecies(gBattleMons[gActiveBank].species, gBattleMons[gActiveBank].altAbility);
- r0 = GetBankSide(gActiveBank);
- ewram160BC[r0] = gBattleMons[gActiveBank].hp;
+ MEMSET_ALT(&gBattleMons[gActiveBattler], gBattleBufferB[gActiveBattler][4 + i], 0x58, i, ptr);
+ gBattleMons[gActiveBattler].type1 = gBaseStats[gBattleMons[gActiveBattler].species].type1;
+ gBattleMons[gActiveBattler].type2 = gBaseStats[gBattleMons[gActiveBattler].species].type2;
+ gBattleMons[gActiveBattler].ability = GetAbilityBySpecies(gBattleMons[gActiveBattler].species, gBattleMons[gActiveBattler].altAbility);
+ r0 = GetBattlerSide(gActiveBattler);
+ ewram160BC[r0] = gBattleMons[gActiveBattler].hp;
for (i = 0; i < 8; i++)
- gBattleMons[gActiveBank].statStages[i] = 6;
- gBattleMons[gActiveBank].status2 = 0;
+ gBattleMons[gActiveBattler].statStages[i] = 6;
+ gBattleMons[gActiveBattler].status2 = 0;
}
- if (GetBankIdentity(gActiveBank) == 0)
+ if (GetBattlerPosition(gActiveBattler) == 0)
{
EmitTrainerThrow(0);
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
}
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
{
- if (GetBankIdentity(gActiveBank) == 1)
+ if (GetBattlerPosition(gActiveBattler) == 1)
{
EmitTrainerThrow(0);
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
}
- if (GetBankSide(gActiveBank) == 1
+ if (GetBattlerSide(gActiveBattler) == 1
&& !(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK)))
- GetSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBank].species), 2);
+ GetSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBattler].species), 2);
}
else
{
- if (GetBankSide(gActiveBank) == 1
+ if (GetBattlerSide(gActiveBattler) == 1
&& !(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK)))
{
- GetSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBank].species), 2);
+ GetSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBattler].species), 2);
EmitLoadPokeSprite(0);
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
}
}
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
{
- if (GetBankIdentity(gActiveBank) == 2
- || GetBankIdentity(gActiveBank) == 3)
+ if (GetBattlerPosition(gActiveBattler) == 2
+ || GetBattlerPosition(gActiveBattler) == 3)
{
EmitTrainerThrow(0);
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
}
}
}
@@ -3999,9 +3997,9 @@ void bc_801333C(void)
hpStatus[i].status = GetMonData(&gEnemyParty[i], MON_DATA_STATUS);
}
}
- gActiveBank = GetBankByIdentity(1);
+ gActiveBattler = GetBattlerAtPosition(1);
EmitDrawPartyStatusSummary(0, hpStatus, 0x80);
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
for (i = 0; i < 6; i++)
{
@@ -4017,9 +4015,9 @@ void bc_801333C(void)
hpStatus[i].status = GetMonData(&gPlayerParty[i], MON_DATA_STATUS);
}
}
- gActiveBank = GetBankByIdentity(0);
+ gActiveBattler = GetBattlerAtPosition(0);
EmitDrawPartyStatusSummary(0, hpStatus, 0x80);
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
gBattleMainFunc = bc_battle_begin_message;
}
@@ -4052,8 +4050,8 @@ void bc_battle_begin_message(void)
{
if (gBattleExecBuffer == 0)
{
- gActiveBank = GetBankByIdentity(1);
- PrepareStringBattle(0, gActiveBank);
+ gActiveBattler = GetBattlerAtPosition(1);
+ PrepareStringBattle(0, gActiveBattler);
gBattleMainFunc = sub_8011800;
}
}
@@ -4071,7 +4069,7 @@ void sub_8011800(void)
{
if (gBattleExecBuffer == 0)
{
- PrepareStringBattle(1, GetBankByIdentity(1));
+ PrepareStringBattle(1, GetBattlerAtPosition(1));
gBattleMainFunc = sub_8011834;
}
}
@@ -4080,18 +4078,18 @@ void sub_8011834(void)
{
if (gBattleExecBuffer == 0)
{
- for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++)
{
- if (GetBankIdentity(gActiveBank) == 1)
+ if (GetBattlerPosition(gActiveBattler) == 1)
{
EmitTrainerBallThrow(0);
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
}
if ((gBattleTypeFlags & BATTLE_TYPE_MULTI)
- && GetBankIdentity(gActiveBank) == 3)
+ && GetBattlerPosition(gActiveBattler) == 3)
{
EmitTrainerBallThrow(0);
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
}
}
gBattleMainFunc = bc_801362C;
@@ -4102,11 +4100,11 @@ void bc_801362C(void)
{
if (gBattleExecBuffer == 0)
{
- for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++)
{
- if (GetBankSide(gActiveBank) == 1
+ if (GetBattlerSide(gActiveBattler) == 1
&& !(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK)))
- GetSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBank].species), 2);
+ GetSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBattler].species), 2);
}
gBattleMainFunc = sub_8011970;
}
@@ -4123,7 +4121,7 @@ void sub_8011970(void)
if (gBattleExecBuffer == 0)
{
if (!(gBattleTypeFlags & BATTLE_TYPE_SAFARI))
- PrepareStringBattle(1, GetBankByIdentity(0));
+ PrepareStringBattle(1, GetBattlerAtPosition(0));
gBattleMainFunc = sub_80119B4;
}
}
@@ -4132,18 +4130,18 @@ void sub_80119B4(void)
{
if (gBattleExecBuffer == 0)
{
- for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++)
{
- if (GetBankIdentity(gActiveBank) == 0)
+ if (GetBattlerPosition(gActiveBattler) == 0)
{
EmitTrainerBallThrow(0);
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
}
if ((gBattleTypeFlags & BATTLE_TYPE_MULTI)
- && GetBankIdentity(gActiveBank) == 2)
+ && GetBattlerPosition(gActiveBattler) == 2)
{
EmitTrainerBallThrow(0);
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
}
}
ewram16058 = 0;
@@ -4157,12 +4155,12 @@ void unref_sub_8011A68(void)
{
if (gBattleExecBuffer == 0)
{
- for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++)
{
- if (GetBankSide(gActiveBank) == 0)
+ if (GetBattlerSide(gActiveBattler) == 0)
{
- EmitSendOutPoke(0, gBattlePartyID[gActiveBank], 0);
- MarkBufferBankForExecution(gActiveBank);
+ EmitSendOutPoke(0, gBattlerPartyIndexes[gActiveBattler], 0);
+ MarkBufferBankForExecution(gActiveBattler);
}
}
ewram16058 = 0;
@@ -4182,11 +4180,11 @@ void BattleBeginFirstTurn(void)
{
if (ewram16058 == 0)
{
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
gBanksByTurnOrder[i] = i;
- for (i = 0; i < gNoOfAllBanks - 1; i++)
+ for (i = 0; i < gBattlersCount - 1; i++)
{
- for (j = i + 1; j < gNoOfAllBanks; j++)
+ for (j = i + 1; j < gBattlersCount; j++)
{
if (GetWhoStrikesFirst(gBanksByTurnOrder[i], gBanksByTurnOrder[j], 1) != 0)
SwapTurnOrder(i, j);
@@ -4198,7 +4196,7 @@ void BattleBeginFirstTurn(void)
ewram160E6 = 1;
return;
}
- while (ewram16058 < gNoOfAllBanks)
+ while (ewram16058 < gBattlersCount)
{
if (AbilityBattleEffects(0, gBanksByTurnOrder[ewram16058], 0, 0, 0) != 0)
r9++;
@@ -4210,7 +4208,7 @@ void BattleBeginFirstTurn(void)
return;
if (AbilityBattleEffects(11, 0, 0, 0, 0) != 0)
return;
- while (ewram160F9 < gNoOfAllBanks)
+ while (ewram160F9 < gBattlersCount)
{
if (ItemBattleEffects(0, gBanksByTurnOrder[ewram160F9], 0) != 0)
r9++;
@@ -4219,7 +4217,7 @@ void BattleBeginFirstTurn(void)
return;
}
// Absolutely pointless for-loop that somehow doesn't get optimized out
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
;
for (i = 0; i < 4; i++)
{
@@ -4229,12 +4227,12 @@ void BattleBeginFirstTurn(void)
}
TurnValuesCleanUp(0);
SpecialStatusesClear();
- ewram160A6 = gAbsentBankFlags;
+ ewram160A6 = gAbsentBattlerFlags;
gBattleMainFunc = sub_8012324;
ResetSentPokesToOpponentValue();
for (i = 0; i < 8; i++)
gBattleCommunication[i] = 0;
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
gBattleMons[i].status2 &= ~8;
ewram16000 = 0;
ewram16001 = 0;
@@ -4243,7 +4241,7 @@ void BattleBeginFirstTurn(void)
ewram1600C = 0;
ewram16059 = 0;
ewram1600E = 0;
- gBattleMoveFlags = 0;
+ gMoveResultFlags = 0;
gRandomTurnNumber = Random();
}
}
@@ -4257,7 +4255,7 @@ void bc_8013B1C(void)
gBattleMainFunc = BattleTurnPassed;
for (i = 0; i < 8; i++)
gBattleCommunication[i] = 0;
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
gBattleMons[i].status2 &= ~8;
if ((gBattleMons[i].status1 & 7) && (gBattleMons[i].status2 & 0x1000))
@@ -4268,7 +4266,7 @@ void bc_8013B1C(void)
ewram16110 = 0;
ewram16111 = 0;
ewram1600E = 0;
- gBattleMoveFlags = 0;
+ gMoveResultFlags = 0;
}
}
@@ -4298,7 +4296,7 @@ void BattleTurnPassed(void)
ewram160A1 = 0;
ewram1600C = 0;
gBattleMoveDamage = 0;
- gBattleMoveFlags = 0;
+ gMoveResultFlags = 0;
for (i = 0; i < 5; i++)
gBattleCommunication[i] = 0;
if (gBattleOutcome != 0)
@@ -4309,14 +4307,14 @@ void BattleTurnPassed(void)
}
if (gBattleResults.battleTurnCounter < 0xFF)
gBattleResults.battleTurnCounter++;
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
gActionForBanks[i] = 0xFF;
gChosenMovesByBanks[i] = 0;
}
for (i = 0; i < 4; i++)
ewram16068arr(i) = 6;
- ewram160A6 = gAbsentBankFlags;
+ ewram160A6 = gAbsentBattlerFlags;
gBattleMainFunc = sub_8012324;
gRandomTurnNumber = Random();
}
@@ -4327,21 +4325,21 @@ u8 CanRunFromBattle(void)
u8 r6;
s32 i;
- if (gBattleMons[gActiveBank].item == ITEM_ENIGMA_BERRY)
- r2 = gEnigmaBerries[gActiveBank].holdEffect;
+ if (gBattleMons[gActiveBattler].item == ITEM_ENIGMA_BERRY)
+ r2 = gEnigmaBerries[gActiveBattler].holdEffect;
else
- r2 = ItemId_GetHoldEffect(gBattleMons[gActiveBank].item);
- gStringBank = gActiveBank;
+ r2 = ItemId_GetHoldEffect(gBattleMons[gActiveBattler].item);
+ gStringBank = gActiveBattler;
if (r2 == HOLD_EFFECT_CAN_ALWAYS_RUN)
return 0;
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
return 0;
- if (gBattleMons[gActiveBank].ability == ABILITY_RUN_AWAY)
+ if (gBattleMons[gActiveBattler].ability == ABILITY_RUN_AWAY)
return 0;
- r6 = GetBankSide(gActiveBank);
- for (i = 0; i < gNoOfAllBanks; i++)
+ r6 = GetBattlerSide(gActiveBattler);
+ for (i = 0; i < gBattlersCount; i++)
{
- if (r6 != GetBankSide(i)
+ if (r6 != GetBattlerSide(i)
&& gBattleMons[i].ability == ABILITY_SHADOW_TAG)
{
ewram16003 = i;
@@ -4349,10 +4347,10 @@ u8 CanRunFromBattle(void)
gBattleCommunication[5] = 2;
return 2;
}
- if (r6 != GetBankSide(i)
- && gBattleMons[gActiveBank].ability != ABILITY_LEVITATE
- && gBattleMons[gActiveBank].type1 != 2
- && gBattleMons[gActiveBank].type2 != 2
+ if (r6 != GetBattlerSide(i)
+ && gBattleMons[gActiveBattler].ability != ABILITY_LEVITATE
+ && gBattleMons[gActiveBattler].type1 != 2
+ && gBattleMons[gActiveBattler].type2 != 2
&& gBattleMons[i].ability == ABILITY_ARENA_TRAP)
{
ewram16003 = i;
@@ -4361,15 +4359,15 @@ u8 CanRunFromBattle(void)
return 2;
}
}
- i = AbilityBattleEffects(15, gActiveBank, ABILITY_MAGNET_PULL, 0, 0);
- if (i != 0 && (gBattleMons[gActiveBank].type1 == 8 || gBattleMons[gActiveBank].type2 == 8))
+ i = AbilityBattleEffects(15, gActiveBattler, ABILITY_MAGNET_PULL, 0, 0);
+ if (i != 0 && (gBattleMons[gActiveBattler].type1 == 8 || gBattleMons[gActiveBattler].type2 == 8))
{
ewram16003 = i - 1;
gLastUsedAbility = gBattleMons[i - 1].ability;
gBattleCommunication[5] = 2;
return 2;
}
- if ((gBattleMons[gActiveBank].status2 & (STATUS2_ESCAPE_PREVENTION | STATUS2_WRAPPED)) || (gStatuses3[gActiveBank] & STATUS3_ROOTED))
+ if ((gBattleMons[gActiveBattler].status2 & (STATUS2_ESCAPE_PREVENTION | STATUS2_WRAPPED)) || (gStatuses3[gActiveBattler] & STATUS3_ROOTED))
{
gBattleCommunication[5] = 0;
return 1;
@@ -4390,7 +4388,7 @@ void sub_8012258(u8 a)
for (i = 0; i < 3; i++)
gUnknown_02038470[i] = ewram1606Carr(i, a);
- r4 = pokemon_order_func(gBattlePartyID[a]);
+ r4 = pokemon_order_func(gBattlerPartyIndexes[a]);
r1 = pokemon_order_func(ewram16068arr(a));
sub_8094C98(r4, r1);
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
@@ -4418,41 +4416,41 @@ void sub_8012324(void)
gBattleCommunication[4] = 0;
// inverted loop
//_0801234C
- for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++)
{
- r5 = GetBankIdentity(gActiveBank);
- switch (gBattleCommunication[gActiveBank])
+ r5 = GetBattlerPosition(gActiveBattler);
+ switch (gBattleCommunication[gActiveBattler])
{
case 0:
- ewram16068arr(gActiveBank) = 6;
+ ewram16068arr(gActiveBattler) = 6;
if (!(gBattleTypeFlags & 0x40)
&& (r5 & 2)
- && !(ewram160A6 & gBitTable[GetBankByIdentity(r5 ^ 2)])
- && gBattleCommunication[GetBankByIdentity(r5)] != 4)
+ && !(ewram160A6 & gBitTable[GetBattlerAtPosition(r5 ^ 2)])
+ && gBattleCommunication[GetBattlerAtPosition(r5)] != 4)
break;
//_080123F8
- if (ewram160A6 & gBitTable[gActiveBank])
+ if (ewram160A6 & gBitTable[gActiveBattler])
{
- gActionForBanks[gActiveBank] = 13;
+ gActionForBanks[gActiveBattler] = 13;
if (!(gBattleTypeFlags & 0x40))
- gBattleCommunication[gActiveBank] = 4;
+ gBattleCommunication[gActiveBattler] = 4;
//_08012454
else
- gBattleCommunication[gActiveBank] = 3;
+ gBattleCommunication[gActiveBattler] = 3;
break;
}
//_08012468
- if ((gBattleMons[gActiveBank].status2 & 0x1000)
- || (gBattleMons[gActiveBank].status2 & 0x10000000))
+ if ((gBattleMons[gActiveBattler].status2 & 0x1000)
+ || (gBattleMons[gActiveBattler].status2 & 0x10000000))
{
- gActionForBanks[gActiveBank] = 0;
- gBattleCommunication[gActiveBank] = 3;
+ gActionForBanks[gActiveBattler] = 0;
+ gBattleCommunication[gActiveBattler] = 3;
}
else
{
Emitcmd18(0, gActionForBanks[0], gBattleBufferB[0][1] | (gBattleBufferB[0][2] << 8));
- MarkBufferBankForExecution(gActiveBank);
- gBattleCommunication[gActiveBank]++;
+ MarkBufferBankForExecution(gActiveBattler);
+ gBattleCommunication[gActiveBattler]++;
}
break;
case 1:
@@ -4460,7 +4458,7 @@ void sub_8012324(void)
}
}
*/
-__attribute__((naked))
+NAKED
void sub_8012324(void)
{
asm(".syntax unified\n\
@@ -4473,18 +4471,18 @@ void sub_8012324(void)
ldr r0, _08012340 @ =gBattleCommunication\n\
movs r1, 0\n\
strb r1, [r0, 0x4]\n\
- ldr r0, _08012344 @ =gActiveBank\n\
+ ldr r0, _08012344 @ =gActiveBattler\n\
strb r1, [r0]\n\
- ldr r0, _08012348 @ =gNoOfAllBanks\n\
+ ldr r0, _08012348 @ =gBattlersCount\n\
bl _08012F74\n\
.align 2, 0\n\
_08012340: .4byte gBattleCommunication\n\
-_08012344: .4byte gActiveBank\n\
-_08012348: .4byte gNoOfAllBanks\n\
+_08012344: .4byte gActiveBattler\n\
+_08012348: .4byte gBattlersCount\n\
_0801234C:\n\
- ldr r4, _08012374 @ =gActiveBank\n\
+ ldr r4, _08012374 @ =gActiveBattler\n\
ldrb r0, [r4]\n\
- bl GetBankIdentity\n\
+ bl GetBattlerPosition\n\
lsls r0, 24\n\
lsrs r5, r0, 24\n\
ldr r1, _08012378 @ =gBattleCommunication\n\
@@ -4501,7 +4499,7 @@ _08012368:\n\
ldr r0, [r0]\n\
mov pc, r0\n\
.align 2, 0\n\
-_08012374: .4byte gActiveBank\n\
+_08012374: .4byte gActiveBattler\n\
_08012378: .4byte gBattleCommunication\n\
_0801237C: .4byte _08012380\n\
.align 2, 0\n\
@@ -4515,7 +4513,7 @@ _08012380:\n\
.4byte _08012F38\n\
_0801239C:\n\
ldr r4, _08012434 @ =gSharedMem\n\
- ldr r0, _08012438 @ =gActiveBank\n\
+ ldr r0, _08012438 @ =gActiveBattler\n\
ldrb r0, [r0]\n\
ldr r1, _0801243C @ =0x00016068\n\
adds r0, r1\n\
@@ -4535,7 +4533,7 @@ _0801239C:\n\
beq _080123F8\n\
eors r5, r1\n\
adds r0, r5, 0\n\
- bl GetBankByIdentity\n\
+ bl GetBattlerAtPosition\n\
ldr r2, _08012444 @ =0x000160a6\n\
adds r1, r4, r2\n\
ldrb r1, [r1]\n\
@@ -4549,7 +4547,7 @@ _0801239C:\n\
bne _080123F8\n\
ldr r4, _0801244C @ =gBattleCommunication\n\
adds r0, r5, 0\n\
- bl GetBankByIdentity\n\
+ bl GetBattlerAtPosition\n\
lsls r0, 24\n\
lsrs r0, 24\n\
adds r0, r4\n\
@@ -4563,7 +4561,7 @@ _080123F8:\n\
adds r0, r3\n\
ldrb r3, [r0]\n\
ldr r1, _08012448 @ =gBitTable\n\
- ldr r4, _08012438 @ =gActiveBank\n\
+ ldr r4, _08012438 @ =gActiveBattler\n\
ldrb r2, [r4]\n\
lsls r0, r2, 2\n\
adds r0, r1\n\
@@ -4589,7 +4587,7 @@ _080123F8:\n\
bl _08012F66\n\
.align 2, 0\n\
_08012434: .4byte gSharedMem\n\
-_08012438: .4byte gActiveBank\n\
+_08012438: .4byte gActiveBattler\n\
_0801243C: .4byte 0x00016068\n\
_08012440: .4byte gBattleTypeFlags\n\
_08012444: .4byte 0x000160a6\n\
@@ -4653,7 +4651,7 @@ _080124C4: .4byte gBattleBufferB\n\
_080124C8:\n\
ldr r4, _08012520 @ =gBattleExecBuffer\n\
ldr r1, _08012524 @ =gBitTable\n\
- ldr r3, _08012528 @ =gActiveBank\n\
+ ldr r3, _08012528 @ =gActiveBattler\n\
ldrb r5, [r3]\n\
lsls r0, r5, 2\n\
adds r0, r1\n\
@@ -4698,7 +4696,7 @@ _08012514:\n\
.align 2, 0\n\
_08012520: .4byte gBattleExecBuffer\n\
_08012524: .4byte gBitTable\n\
-_08012528: .4byte gActiveBank\n\
+_08012528: .4byte gActiveBattler\n\
_0801252C: .4byte gActionForBanks\n\
_08012530: .4byte gBattleBufferB\n\
_08012534: .4byte _08012538\n\
@@ -4723,7 +4721,7 @@ _0801256C:\n\
cmp r0, 0\n\
beq _080125D0\n\
ldr r0, _080125B4 @ =gBattleCommunication\n\
- ldr r2, _080125B8 @ =gActiveBank\n\
+ ldr r2, _080125B8 @ =gActiveBattler\n\
ldrb r1, [r2]\n\
adds r1, r0\n\
movs r4, 0\n\
@@ -4754,7 +4752,7 @@ _0801256C:\n\
bl _08012F90\n\
.align 2, 0\n\
_080125B4: .4byte gBattleCommunication\n\
-_080125B8: .4byte gActiveBank\n\
+_080125B8: .4byte gActiveBattler\n\
_080125BC: .4byte gSharedMem\n\
_080125C0: .4byte 0x00016060\n\
_080125C4: .4byte 0x00016094\n\
@@ -4762,7 +4760,7 @@ _080125C8: .4byte 0x00016010\n\
_080125CC: .4byte gBattleBufferB\n\
_080125D0:\n\
ldr r1, _080125FC @ =gDisableStructs\n\
- ldr r5, _08012600 @ =gActiveBank\n\
+ ldr r5, _08012600 @ =gActiveBattler\n\
ldrb r4, [r5]\n\
lsls r0, r4, 3\n\
subs r0, r4\n\
@@ -4783,7 +4781,7 @@ _080125D0:\n\
bl _08012F90\n\
.align 2, 0\n\
_080125FC: .4byte gDisableStructs\n\
-_08012600: .4byte gActiveBank\n\
+_08012600: .4byte gActiveBattler\n\
_08012604: .4byte gChosenMovesByBanks\n\
_08012608: .4byte gBattleCommunication\n\
_0801260C:\n\
@@ -4892,12 +4890,12 @@ _080126D8: .4byte gUnknown_02024C1C\n\
_080126DC: .4byte BattleScript_ActionSelectionItemsCantBeUsed\n\
_080126E0:\n\
ldr r3, _08012738 @ =gSharedMem\n\
- ldr r5, _0801273C @ =gActiveBank\n\
+ ldr r5, _0801273C @ =gActiveBattler\n\
ldrb r0, [r5]\n\
ldr r4, _08012740 @ =0x00016064\n\
adds r1, r0, r4\n\
adds r1, r3\n\
- ldr r2, _08012744 @ =gBattlePartyID\n\
+ ldr r2, _08012744 @ =gBattlerPartyIndexes\n\
lsls r0, 1\n\
adds r0, r2\n\
ldrh r0, [r0]\n\
@@ -4937,9 +4935,9 @@ _08012722:\n\
b _0801286C\n\
.align 2, 0\n\
_08012738: .4byte gSharedMem\n\
-_0801273C: .4byte gActiveBank\n\
+_0801273C: .4byte gActiveBattler\n\
_08012740: .4byte 0x00016064\n\
-_08012744: .4byte gBattlePartyID\n\
+_08012744: .4byte gBattlerPartyIndexes\n\
_08012748: .4byte gBattleMons\n\
_0801274C: .4byte 0x0400e000\n\
_08012750: .4byte gStatuses3\n\
@@ -4984,7 +4982,7 @@ _08012758:\n\
cmp r0, 0x1A\n\
bne _080127E0\n\
_080127A8:\n\
- ldr r5, _08012808 @ =gActiveBank\n\
+ ldr r5, _08012808 @ =gActiveBattler\n\
ldrb r1, [r5]\n\
movs r0, 0\n\
str r0, [sp]\n\
@@ -5020,7 +5018,7 @@ _080127E0:\n\
lsrs r1, 24\n\
ldr r0, _08012810 @ =gLastUsedAbility\n\
ldrb r3, [r0]\n\
- ldr r0, _08012808 @ =gActiveBank\n\
+ ldr r0, _08012808 @ =gActiveBattler\n\
ldrb r2, [r0]\n\
lsls r0, r2, 1\n\
adds r0, r2\n\
@@ -5032,12 +5030,12 @@ _080127E0:\n\
bl EmitChoosePokemon\n\
b _0801289E\n\
.align 2, 0\n\
-_08012808: .4byte gActiveBank\n\
+_08012808: .4byte gActiveBattler\n\
_0801280C: .4byte gBattleMons\n\
_08012810: .4byte gLastUsedAbility\n\
_08012814: .4byte gSharedMem + 0x1606C\n\
_08012818:\n\
- ldr r0, _08012830 @ =gActiveBank\n\
+ ldr r0, _08012830 @ =gActiveBattler\n\
ldrb r1, [r0]\n\
mov r8, r0\n\
cmp r1, 0x2\n\
@@ -5050,7 +5048,7 @@ _08012818:\n\
ldr r4, _0801283C @ =0x00016068\n\
b _08012854\n\
.align 2, 0\n\
-_08012830: .4byte gActiveBank\n\
+_08012830: .4byte gActiveBattler\n\
_08012834: .4byte gActionForBanks\n\
_08012838: .4byte gSharedMem\n\
_0801283C: .4byte 0x00016068\n\
@@ -5088,7 +5086,7 @@ _08012878: .4byte gSharedMem\n\
_0801287C: .4byte 0x00016069\n\
_08012880: .4byte 0x0001606c\n\
_08012884:\n\
- ldr r0, _080128A8 @ =gActiveBank\n\
+ ldr r0, _080128A8 @ =gActiveBattler\n\
ldrb r1, [r0]\n\
lsls r0, r1, 1\n\
adds r0, r1\n\
@@ -5101,12 +5099,12 @@ _08012884:\n\
movs r3, 0\n\
bl EmitChoosePokemon\n\
_0801289E:\n\
- ldr r0, _080128A8 @ =gActiveBank\n\
+ ldr r0, _080128A8 @ =gActiveBattler\n\
ldrb r0, [r0]\n\
bl MarkBufferBankForExecution\n\
b _08012968\n\
.align 2, 0\n\
-_080128A8: .4byte gActiveBank\n\
+_080128A8: .4byte gActiveBattler\n\
_080128AC: .4byte gSharedMem + 0x1606C\n\
_080128B0:\n\
bl PlayerPartyAndPokemonStorageFull\n\
@@ -5114,7 +5112,7 @@ _080128B0:\n\
cmp r0, 0\n\
beq _08012968\n\
ldr r1, _080128EC @ =gUnknown_02024C1C\n\
- ldr r2, _080128F0 @ =gActiveBank\n\
+ ldr r2, _080128F0 @ =gActiveBattler\n\
ldrb r0, [r2]\n\
lsls r0, 2\n\
adds r0, r1\n\
@@ -5140,14 +5138,14 @@ _080128B0:\n\
b _08012F90\n\
.align 2, 0\n\
_080128EC: .4byte gUnknown_02024C1C\n\
-_080128F0: .4byte gActiveBank\n\
+_080128F0: .4byte gActiveBattler\n\
_080128F4: .4byte BattleScript_PrintFullBox\n\
_080128F8: .4byte gBattleCommunication\n\
_080128FC: .4byte gSharedMem\n\
_08012900: .4byte 0x00016060\n\
_08012904: .4byte 0x00016094\n\
_08012908:\n\
- ldr r4, _08012924 @ =gActiveBank\n\
+ ldr r4, _08012924 @ =gActiveBattler\n\
ldrb r0, [r4]\n\
lsls r1, r0, 1\n\
adds r1, r0\n\
@@ -5159,7 +5157,7 @@ _08012908:\n\
bl MarkBufferBankForExecution\n\
b _08012968\n\
.align 2, 0\n\
-_08012924: .4byte gActiveBank\n\
+_08012924: .4byte gActiveBattler\n\
_08012928: .4byte gSharedMem + 0x1606C\n\
_0801292C:\n\
ldr r4, _08012964 @ =gBattleCommunication\n\
@@ -5170,12 +5168,12 @@ _0801292C:\n\
movs r0, 0x6\n\
strb r0, [r1]\n\
ldrb r0, [r3]\n\
- bl GetBankIdentity\n\
+ bl GetBattlerPosition\n\
movs r1, 0x2\n\
eors r0, r1\n\
lsls r0, 24\n\
lsrs r0, 24\n\
- bl GetBankByIdentity\n\
+ bl GetBattlerAtPosition\n\
lsls r0, 24\n\
lsrs r0, 24\n\
adds r0, r4\n\
@@ -5196,7 +5194,7 @@ _08012968:\n\
cmp r0, 0x8\n\
bne _080129A8\n\
ldr r0, _08012998 @ =gBattleBufferB\n\
- ldr r4, _0801299C @ =gActiveBank\n\
+ ldr r4, _0801299C @ =gActiveBattler\n\
ldrb r1, [r4]\n\
lsls r1, 9\n\
adds r0, 0x1\n\
@@ -5213,7 +5211,7 @@ _08012968:\n\
.align 2, 0\n\
_08012994: .4byte gBattleTypeFlags\n\
_08012998: .4byte gBattleBufferB\n\
-_0801299C: .4byte gActiveBank\n\
+_0801299C: .4byte gActiveBattler\n\
_080129A0: .4byte BattleScript_PrintCantRunFromTrainer\n\
_080129A4: .4byte gBattleCommunication\n\
_080129A8:\n\
@@ -5222,7 +5220,7 @@ _080129A8:\n\
cmp r0, 0\n\
beq _08012A14\n\
ldr r0, _080129F4 @ =gBattleBufferB\n\
- ldr r3, _080129F8 @ =gActiveBank\n\
+ ldr r3, _080129F8 @ =gActiveBattler\n\
ldrb r2, [r3]\n\
lsls r1, r2, 9\n\
adds r0, 0x1\n\
@@ -5256,7 +5254,7 @@ _080129CC:\n\
b _08012F90\n\
.align 2, 0\n\
_080129F4: .4byte gBattleBufferB\n\
-_080129F8: .4byte gActiveBank\n\
+_080129F8: .4byte gActiveBattler\n\
_080129FC: .4byte gUnknown_02024C1C\n\
_08012A00: .4byte BattleScript_PrintCantEscapeFromBattle\n\
_08012A04: .4byte gBattleCommunication\n\
@@ -5265,17 +5263,17 @@ _08012A0C: .4byte 0x00016060\n\
_08012A10: .4byte 0x00016094\n\
_08012A14:\n\
ldr r2, _08012A20 @ =gBattleCommunication\n\
- ldr r0, _08012A24 @ =gActiveBank\n\
+ ldr r0, _08012A24 @ =gActiveBattler\n\
ldrb r1, [r0]\n\
adds r1, r2\n\
b _08012E3E\n\
.align 2, 0\n\
_08012A20: .4byte gBattleCommunication\n\
-_08012A24: .4byte gActiveBank\n\
+_08012A24: .4byte gActiveBattler\n\
_08012A28:\n\
ldr r4, _08012A6C @ =gBattleExecBuffer\n\
ldr r1, _08012A70 @ =gBitTable\n\
- ldr r3, _08012A74 @ =gActiveBank\n\
+ ldr r3, _08012A74 @ =gActiveBattler\n\
ldrb r5, [r3]\n\
lsls r0, r5, 2\n\
adds r0, r1\n\
@@ -5312,7 +5310,7 @@ _08012A62:\n\
.align 2, 0\n\
_08012A6C: .4byte gBattleExecBuffer\n\
_08012A70: .4byte gBitTable\n\
-_08012A74: .4byte gActiveBank\n\
+_08012A74: .4byte gActiveBattler\n\
_08012A78: .4byte gActionForBanks\n\
_08012A7C: .4byte _08012A80\n\
.align 2, 0\n\
@@ -5452,7 +5450,7 @@ _08012BA8: .4byte 0x00016010\n\
_08012BAC: .4byte gBattleCommunication\n\
_08012BB0:\n\
ldr r2, _08012BD8 @ =gBattleBufferB\n\
- ldr r5, _08012BDC @ =gActiveBank\n\
+ ldr r5, _08012BDC @ =gActiveBattler\n\
ldrb r4, [r5]\n\
lsls r1, r4, 9\n\
adds r0, r2, 0x1\n\
@@ -5474,12 +5472,12 @@ _08012BCE:\n\
b _08012E3C\n\
.align 2, 0\n\
_08012BD8: .4byte gBattleBufferB\n\
-_08012BDC: .4byte gActiveBank\n\
+_08012BDC: .4byte gActiveBattler\n\
_08012BE0: .4byte gLastUsedItem\n\
_08012BE4: .4byte gBattleCommunication\n\
_08012BE8:\n\
ldr r4, _08012C04 @ =gBattleBufferB\n\
- ldr r7, _08012C08 @ =gActiveBank\n\
+ ldr r7, _08012C08 @ =gActiveBattler\n\
ldrb r2, [r7]\n\
lsls r0, r2, 9\n\
adds r1, r4, 0x1\n\
@@ -5495,7 +5493,7 @@ _08012BFE:\n\
b _08012F66\n\
.align 2, 0\n\
_08012C04: .4byte gBattleBufferB\n\
-_08012C08: .4byte gActiveBank\n\
+_08012C08: .4byte gActiveBattler\n\
_08012C0C: .4byte gBattleCommunication\n\
_08012C10:\n\
ldr r0, _08012CC4 @ =gSharedMem\n\
@@ -5605,35 +5603,35 @@ _08012CE0:\n\
orrs r0, r1\n\
str r0, [r2]\n\
ldr r2, _08012CFC @ =gBattleCommunication\n\
- ldr r0, _08012D00 @ =gActiveBank\n\
+ ldr r0, _08012D00 @ =gActiveBattler\n\
ldrb r1, [r0]\n\
adds r1, r2\n\
b _08012E3E\n\
.align 2, 0\n\
_08012CF8: .4byte gHitMarker\n\
_08012CFC: .4byte gBattleCommunication\n\
-_08012D00: .4byte gActiveBank\n\
+_08012D00: .4byte gActiveBattler\n\
_08012D04:\n\
ldr r2, _08012D10 @ =gBattleCommunication\n\
- ldr r0, _08012D14 @ =gActiveBank\n\
+ ldr r0, _08012D14 @ =gActiveBattler\n\
ldrb r1, [r0]\n\
adds r1, r2\n\
b _08012E3E\n\
.align 2, 0\n\
_08012D10: .4byte gBattleCommunication\n\
-_08012D14: .4byte gActiveBank\n\
+_08012D14: .4byte gActiveBattler\n\
_08012D18:\n\
ldr r2, _08012D24 @ =gBattleCommunication\n\
- ldr r0, _08012D28 @ =gActiveBank\n\
+ ldr r0, _08012D28 @ =gActiveBattler\n\
ldrb r1, [r0]\n\
adds r1, r2\n\
b _08012E3E\n\
.align 2, 0\n\
_08012D24: .4byte gBattleCommunication\n\
-_08012D28: .4byte gActiveBank\n\
+_08012D28: .4byte gActiveBattler\n\
_08012D2C:\n\
ldr r2, _08012D50 @ =gBattleBufferB\n\
- ldr r0, _08012D54 @ =gActiveBank\n\
+ ldr r0, _08012D54 @ =gActiveBattler\n\
ldrb r4, [r0]\n\
lsls r1, r4, 9\n\
adds r0, r2, 0x1\n\
@@ -5653,17 +5651,17 @@ _08012D4A:\n\
b _08012E3E\n\
.align 2, 0\n\
_08012D50: .4byte gBattleBufferB\n\
-_08012D54: .4byte gActiveBank\n\
+_08012D54: .4byte gActiveBattler\n\
_08012D58: .4byte gBattleCommunication\n\
_08012D5C:\n\
ldr r2, _08012D68 @ =gBattleCommunication\n\
- ldr r0, _08012D6C @ =gActiveBank\n\
+ ldr r0, _08012D6C @ =gActiveBattler\n\
ldrb r1, [r0]\n\
adds r1, r2\n\
b _08012E3E\n\
.align 2, 0\n\
_08012D68: .4byte gBattleCommunication\n\
-_08012D6C: .4byte gActiveBank\n\
+_08012D6C: .4byte gActiveBattler\n\
_08012D70:\n\
ldr r2, _08012D88 @ =gHitMarker\n\
ldr r0, [r2]\n\
@@ -5672,27 +5670,27 @@ _08012D70:\n\
orrs r0, r1\n\
str r0, [r2]\n\
ldr r2, _08012D8C @ =gBattleCommunication\n\
- ldr r0, _08012D90 @ =gActiveBank\n\
+ ldr r0, _08012D90 @ =gActiveBattler\n\
ldrb r1, [r0]\n\
adds r1, r2\n\
b _08012E3E\n\
.align 2, 0\n\
_08012D88: .4byte gHitMarker\n\
_08012D8C: .4byte gBattleCommunication\n\
-_08012D90: .4byte gActiveBank\n\
+_08012D90: .4byte gActiveBattler\n\
_08012D94:\n\
ldr r2, _08012DA0 @ =gBattleCommunication\n\
- ldr r0, _08012DA4 @ =gActiveBank\n\
+ ldr r0, _08012DA4 @ =gActiveBattler\n\
ldrb r1, [r0]\n\
adds r1, r2\n\
b _08012E3E\n\
.align 2, 0\n\
_08012DA0: .4byte gBattleCommunication\n\
-_08012DA4: .4byte gActiveBank\n\
+_08012DA4: .4byte gActiveBattler\n\
_08012DA8:\n\
ldr r3, _08012E10 @ =gBattleExecBuffer\n\
ldr r4, _08012E14 @ =gBitTable\n\
- ldr r0, _08012E18 @ =gActiveBank\n\
+ ldr r0, _08012E18 @ =gActiveBattler\n\
ldrb r0, [r0]\n\
lsls r0, 2\n\
adds r0, r4\n\
@@ -5725,7 +5723,7 @@ _08012DD2:\n\
bne _08012E06\n\
adds r0, r5, 0\n\
eors r0, r1\n\
- bl GetBankByIdentity\n\
+ bl GetBattlerAtPosition\n\
ldr r1, _08012E20 @ =gSharedMem\n\
ldr r2, _08012E24 @ =0x000160a6\n\
adds r1, r2\n\
@@ -5745,7 +5743,7 @@ _08012E06:\n\
.align 2, 0\n\
_08012E10: .4byte gBattleExecBuffer\n\
_08012E14: .4byte gBitTable\n\
-_08012E18: .4byte gActiveBank\n\
+_08012E18: .4byte gActiveBattler\n\
_08012E1C: .4byte gBattleTypeFlags\n\
_08012E20: .4byte gSharedMem\n\
_08012E24: .4byte 0x000160a6\n\
@@ -5754,7 +5752,7 @@ _08012E28:\n\
movs r1, 0x1\n\
bl EmitLinkStandbyMsg\n\
_08012E30:\n\
- ldr r4, _08012E48 @ =gActiveBank\n\
+ ldr r4, _08012E48 @ =gActiveBattler\n\
_08012E32:\n\
ldrb r0, [r4]\n\
bl MarkBufferBankForExecution\n\
@@ -5768,12 +5766,12 @@ _08012E3E:\n\
strb r0, [r1]\n\
b _08012F66\n\
.align 2, 0\n\
-_08012E48: .4byte gActiveBank\n\
+_08012E48: .4byte gActiveBattler\n\
_08012E4C: .4byte gBattleCommunication\n\
_08012E50:\n\
ldr r3, _08012E84 @ =gBattleExecBuffer\n\
ldr r1, _08012E88 @ =gBitTable\n\
- ldr r0, _08012E8C @ =gActiveBank\n\
+ ldr r0, _08012E8C @ =gActiveBattler\n\
ldrb r0, [r0]\n\
lsls r0, 2\n\
adds r0, r1\n\
@@ -5799,11 +5797,11 @@ _08012E50:\n\
.align 2, 0\n\
_08012E84: .4byte gBattleExecBuffer\n\
_08012E88: .4byte gBitTable\n\
-_08012E8C: .4byte gActiveBank\n\
+_08012E8C: .4byte gActiveBattler\n\
_08012E90: .4byte gBattleCommunication\n\
_08012E94:\n\
ldr r2, _08012EB8 @ =gSharedMem\n\
- ldr r5, _08012EBC @ =gActiveBank\n\
+ ldr r5, _08012EBC @ =gActiveBattler\n\
ldrb r1, [r5]\n\
ldr r3, _08012EC0 @ =0x00016060\n\
adds r0, r1, r3\n\
@@ -5821,7 +5819,7 @@ _08012E94:\n\
b _08012F66\n\
.align 2, 0\n\
_08012EB8: .4byte gSharedMem\n\
-_08012EBC: .4byte gActiveBank\n\
+_08012EBC: .4byte gActiveBattler\n\
_08012EC0: .4byte 0x00016060\n\
_08012EC4: .4byte gBattleCommunication\n\
_08012EC8: .4byte 0x00016094\n\
@@ -5877,7 +5875,7 @@ _08012F34: .4byte gBattleScriptingCommandsTable\n\
_08012F38:\n\
ldr r3, _08012FA0 @ =gBattleExecBuffer\n\
ldr r1, _08012FA4 @ =gBitTable\n\
- ldr r0, _08012FA8 @ =gActiveBank\n\
+ ldr r0, _08012FA8 @ =gActiveBattler\n\
ldrb r4, [r0]\n\
lsls r0, r4, 2\n\
adds r0, r1\n\
@@ -5900,11 +5898,11 @@ _08012F60:\n\
adds r0, r4, r0\n\
strb r3, [r0]\n\
_08012F66:\n\
- ldr r0, _08012FA8 @ =gActiveBank\n\
+ ldr r0, _08012FA8 @ =gActiveBattler\n\
ldrb r1, [r0]\n\
adds r1, 0x1\n\
strb r1, [r0]\n\
- ldr r0, _08012FB0 @ =gNoOfAllBanks\n\
+ ldr r0, _08012FB0 @ =gBattlersCount\n\
lsls r1, 24\n\
lsrs r1, 24\n\
_08012F74:\n\
@@ -5934,9 +5932,9 @@ _08012F90:\n\
.align 2, 0\n\
_08012FA0: .4byte gBattleExecBuffer\n\
_08012FA4: .4byte gBitTable\n\
-_08012FA8: .4byte gActiveBank\n\
+_08012FA8: .4byte gActiveBattler\n\
_08012FAC: .4byte gBattleCommunication\n\
-_08012FB0: .4byte gNoOfAllBanks\n\
+_08012FB0: .4byte gBattlersCount\n\
_08012FB4: .4byte gBattleMainFunc\n\
_08012FB8: .4byte SetActionsAndBanksTurnOrder\n\
.syntax divided\n");
@@ -6007,7 +6005,7 @@ u8 GetWhoStrikesFirst(u8 bank1, u8 bank2, bool8 ignoreMovePriorities)
}
// Only give badge speed boost to the player's mon.
- if (!(gBattleTypeFlags & BATTLE_TYPE_LINK) && FlagGet(FLAG_BADGE03_GET) && GetBankSide(bank1) == 0)
+ if (!(gBattleTypeFlags & BATTLE_TYPE_LINK) && FlagGet(FLAG_BADGE03_GET) && GetBattlerSide(bank1) == 0)
bank1AdjustedSpeed = (bank1AdjustedSpeed * 110) / 100;
if (heldItemEffect == HOLD_EFFECT_MACHO_BRACE)
@@ -6035,7 +6033,7 @@ u8 GetWhoStrikesFirst(u8 bank1, u8 bank2, bool8 ignoreMovePriorities)
}
// Only give badge speed boost to the player's mon.
- if (!(gBattleTypeFlags & BATTLE_TYPE_LINK) && FlagGet(FLAG_BADGE03_GET) && GetBankSide(bank2) == 0)
+ if (!(gBattleTypeFlags & BATTLE_TYPE_LINK) && FlagGet(FLAG_BADGE03_GET) && GetBattlerSide(bank2) == 0)
{
bank2AdjustedSpeed = (bank2AdjustedSpeed * 110) / 100;
}
@@ -6107,10 +6105,10 @@ void SetActionsAndBanksTurnOrder(void)
if (gBattleTypeFlags & BATTLE_TYPE_SAFARI)
{
- for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++)
{
- gActionsByTurnOrder[var] = gActionForBanks[gActiveBank];
- gBanksByTurnOrder[var] = gActiveBank;
+ gActionsByTurnOrder[var] = gActionForBanks[gActiveBattler];
+ gBanksByTurnOrder[var] = gActiveBattler;
var++;
}
}
@@ -6118,9 +6116,9 @@ void SetActionsAndBanksTurnOrder(void)
{
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{
- for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++)
{
- if (gActionForBanks[gActiveBank] == ACTION_RUN)
+ if (gActionForBanks[gActiveBattler] == ACTION_RUN)
{
var = 5;
break;
@@ -6131,19 +6129,19 @@ void SetActionsAndBanksTurnOrder(void)
{
if (gActionForBanks[0] == ACTION_RUN)
{
- gActiveBank = 0;
+ gActiveBattler = 0;
var = 5;
}
}
if (var == 5)
{
- gActionsByTurnOrder[0] = gActionForBanks[gActiveBank];
- gBanksByTurnOrder[0] = gActiveBank;
+ gActionsByTurnOrder[0] = gActionForBanks[gActiveBattler];
+ gBanksByTurnOrder[0] = gActiveBattler;
var = 1;
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
- if (i != gActiveBank)
+ if (i != gActiveBattler)
{
gActionsByTurnOrder[var] = gActionForBanks[i];
gBanksByTurnOrder[var] = i;
@@ -6151,32 +6149,32 @@ void SetActionsAndBanksTurnOrder(void)
}
}
gBattleMainFunc = CheckFocusPunch_ClearVarsBeforeTurnStarts;
- eFocusPunchBank = 0;
+ eFocusPunchBattler = 0;
return;
}
else
{
- for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++)
{
- if (gActionForBanks[gActiveBank] == ACTION_USE_ITEM || gActionForBanks[gActiveBank] == ACTION_SWITCH)
+ if (gActionForBanks[gActiveBattler] == ACTION_USE_ITEM || gActionForBanks[gActiveBattler] == ACTION_SWITCH)
{
- gActionsByTurnOrder[var] = gActionForBanks[gActiveBank];
- gBanksByTurnOrder[var] = gActiveBank;
+ gActionsByTurnOrder[var] = gActionForBanks[gActiveBattler];
+ gBanksByTurnOrder[var] = gActiveBattler;
var++;
}
}
- for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++)
{
- if (gActionForBanks[gActiveBank] != ACTION_USE_ITEM && gActionForBanks[gActiveBank] != ACTION_SWITCH)
+ if (gActionForBanks[gActiveBattler] != ACTION_USE_ITEM && gActionForBanks[gActiveBattler] != ACTION_SWITCH)
{
- gActionsByTurnOrder[var] = gActionForBanks[gActiveBank];
- gBanksByTurnOrder[var] = gActiveBank;
+ gActionsByTurnOrder[var] = gActionForBanks[gActiveBattler];
+ gBanksByTurnOrder[var] = gActiveBattler;
var++;
}
}
- for (i = 0; i < gNoOfAllBanks - 1; i++)
+ for (i = 0; i < gBattlersCount - 1; i++)
{
- for (j = i + 1; j < gNoOfAllBanks; j++)
+ for (j = i + 1; j < gBattlersCount; j++)
{
u8 bank1 = gBanksByTurnOrder[i];
u8 bank2 = gBanksByTurnOrder[j];
@@ -6194,7 +6192,7 @@ void SetActionsAndBanksTurnOrder(void)
}
gBattleMainFunc = CheckFocusPunch_ClearVarsBeforeTurnStarts;
- eFocusPunchBank = 0;
+ eFocusPunchBattler = 0;
}
static void TurnValuesCleanUp(bool8 var0)
@@ -6202,32 +6200,32 @@ static void TurnValuesCleanUp(bool8 var0)
s32 i;
u8 *dataPtr;
- for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++)
{
if (var0)
{
- gProtectStructs[gActiveBank].protected = 0;
- gProtectStructs[gActiveBank].endured = 0;
+ gProtectStructs[gActiveBattler].protected = 0;
+ gProtectStructs[gActiveBattler].endured = 0;
}
else
{
- dataPtr = (u8*)(&gProtectStructs[gActiveBank]);
+ dataPtr = (u8*)(&gProtectStructs[gActiveBattler]);
for (i = 0; i < sizeof(struct ProtectStruct); i++)
dataPtr[i] = 0;
- if (gDisableStructs[gActiveBank].isFirstTurn)
- gDisableStructs[gActiveBank].isFirstTurn--;
+ if (gDisableStructs[gActiveBattler].isFirstTurn)
+ gDisableStructs[gActiveBattler].isFirstTurn--;
- if (gDisableStructs[gActiveBank].rechargeCounter)
+ if (gDisableStructs[gActiveBattler].rechargeCounter)
{
- gDisableStructs[gActiveBank].rechargeCounter--;
- if (gDisableStructs[gActiveBank].rechargeCounter == 0)
- gBattleMons[gActiveBank].status2 &= ~(STATUS2_RECHARGE);
+ gDisableStructs[gActiveBattler].rechargeCounter--;
+ if (gDisableStructs[gActiveBattler].rechargeCounter == 0)
+ gBattleMons[gActiveBattler].status2 &= ~(STATUS2_RECHARGE);
}
}
- if (gDisableStructs[gActiveBank].substituteHP == 0)
- gBattleMons[gActiveBank].status2 &= ~(STATUS2_SUBSTITUTE);
+ if (gDisableStructs[gActiveBattler].substituteHP == 0)
+ gBattleMons[gActiveBattler].status2 &= ~(STATUS2_SUBSTITUTE);
}
gSideTimers[0].followmeTimer = 0;
@@ -6236,10 +6234,10 @@ static void TurnValuesCleanUp(bool8 var0)
void SpecialStatusesClear(void)
{
- for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++)
{
s32 i;
- u8 *dataPtr = (u8*)(&gSpecialStatuses[gActiveBank]);
+ u8 *dataPtr = (u8*)(&gSpecialStatuses[gActiveBattler]);
for (i = 0; i < sizeof(struct SpecialStatus); i++)
dataPtr[i] = 0;
@@ -6250,14 +6248,14 @@ void CheckFocusPunch_ClearVarsBeforeTurnStarts(void)
{
if (!(gHitMarker & HITMARKER_RUN))
{
- while (eFocusPunchBank < gNoOfAllBanks)
+ while (eFocusPunchBattler < gBattlersCount)
{
- gActiveBank = gBankAttacker = eFocusPunchBank;
- eFocusPunchBank++;
- if (gChosenMovesByBanks[gActiveBank] == MOVE_FOCUS_PUNCH
- && !(gBattleMons[gActiveBank].status1 & STATUS_SLEEP)
+ gActiveBattler = gBankAttacker = eFocusPunchBattler;
+ eFocusPunchBattler++;
+ if (gChosenMovesByBanks[gActiveBattler] == MOVE_FOCUS_PUNCH
+ && !(gBattleMons[gActiveBattler].status1 & STATUS_SLEEP)
&& !(gDisableStructs[gBankAttacker].truantCounter)
- && !(gProtectStructs[gActiveBank].onlyStruggle))
+ && !(gProtectStructs[gActiveBattler].onlyStruggle))
{
BattleScriptExecute(BattleScript_FocusPunchSetUp);
return;
@@ -6290,7 +6288,7 @@ static void RunTurnActionsFunctions(void)
gBattleStruct->unk16057 = gCurrentTurnActionNumber;
gUnknown_081FA640[gCurrentActionFuncId]();
- if (gCurrentTurnActionNumber >= gNoOfAllBanks) // everyone did their actions, turn finished
+ if (gCurrentTurnActionNumber >= gBattlersCount) // everyone did their actions, turn finished
{
gHitMarker &= ~(HITMARKER_x100000);
gBattleMainFunc = gUnknown_081FA678[gBattleOutcome & 0x7F];
@@ -6312,7 +6310,7 @@ void HandleEndTurn_BattleWon(void)
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{
gBattleTextBuff1[0] = gBattleOutcome;
- gBankAttacker = GetBankByIdentity(IDENTITY_PLAYER_MON1);
+ gBankAttacker = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
gBattlescriptCurrInstr = BattleScript_LinkBattleWonOrLost;
gBattleOutcome &= ~(OUTCOME_LINK_BATTLE_RUN);
}
@@ -6329,7 +6327,7 @@ void HandleEndTurn_BattleWon(void)
{
case TRAINER_CLASS_ELITE_FOUR:
case TRAINER_CLASS_CHAMPION:
- PlayBGM(BGM_KACHI5);
+ PlayBGM(MUS_KACHI5);
break;
case TRAINER_CLASS_TEAM_AQUA:
case TRAINER_CLASS_TEAM_MAGMA:
@@ -6337,13 +6335,13 @@ void HandleEndTurn_BattleWon(void)
case TRAINER_CLASS_AQUA_LEADER:
case TRAINER_CLASS_MAGMA_ADMIN:
case TRAINER_CLASS_MAGMA_LEADER:
- PlayBGM(BGM_KACHI4);
+ PlayBGM(MUS_KACHI4);
break;
case TRAINER_CLASS_LEADER:
- PlayBGM(BGM_KACHI3);
+ PlayBGM(MUS_KACHI3);
break;
default:
- PlayBGM(BGM_KACHI1);
+ PlayBGM(MUS_KACHI1);
break;
}
}
@@ -6362,7 +6360,7 @@ void HandleEndTurn_BattleLost(void)
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{
gBattleTextBuff1[0] = gBattleOutcome;
- gBankAttacker = GetBankByIdentity(IDENTITY_PLAYER_MON1);
+ gBankAttacker = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
gBattlescriptCurrInstr = BattleScript_LinkBattleWonOrLost;
gBattleOutcome &= ~(OUTCOME_LINK_BATTLE_RUN);
}
@@ -6398,7 +6396,7 @@ void HandleEndTurn_MonFled(void)
{
gCurrentActionFuncId = 0;
- PREPARE_MON_NICK_BUFFER(gBattleTextBuff1, gBankAttacker, gBattlePartyID[gBankAttacker]);
+ PREPARE_MON_NICK_BUFFER(gBattleTextBuff1, gBankAttacker, gBattlerPartyIndexes[gBankAttacker]);
gBattlescriptCurrInstr = BattleScript_WildMonFled;
gBattleMainFunc = HandleEndTurn_FinishBattle;
@@ -6415,19 +6413,19 @@ void HandleEndTurn_FinishBattle(void)
| BATTLE_TYPE_WALLY_TUTORIAL
| BATTLE_TYPE_BATTLE_TOWER)))
{
- for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++)
{
- if (GetBankSide(gActiveBank) == SIDE_PLAYER)
+ if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
{
if (gBattleResults.poke1Species == SPECIES_NONE)
{
- gBattleResults.poke1Species = gBattleMons[gActiveBank].species;
- StringCopy(gBattleResults.pokeString1, gBattleMons[gActiveBank].nickname);
+ gBattleResults.poke1Species = gBattleMons[gActiveBattler].species;
+ StringCopy(gBattleResults.pokeString1, gBattleMons[gActiveBattler].nickname);
}
else
{
- gBattleResults.opponentSpecies = gBattleMons[gActiveBank].species;
- StringCopy(gBattleResults.pokeString2, gBattleMons[gActiveBank].nickname);
+ gBattleResults.opponentSpecies = gBattleMons[gActiveBattler].species;
+ StringCopy(gBattleResults.pokeString2, gBattleMons[gActiveBattler].nickname);
}
}
}
@@ -6562,7 +6560,7 @@ void HandleAction_UseMove(void)
gCritMultiplier = 1;
eDmgMultiplier = 1;
ewram160E7 = 0;
- gBattleMoveFlags = 0;
+ gMoveResultFlags = 0;
gMultiHitCounter = 0;
gBattleCommunication[6] = 0;
gCurrMovePos = gUnknown_02024BE5 = ewram1608Carr(gBankAttacker);
@@ -6608,16 +6606,16 @@ void HandleAction_UseMove(void)
gCurrentMove = gChosenMove = gBattleMons[gBankAttacker].moves[gCurrMovePos];
}
- if (GetBankSide(gBankAttacker) == SIDE_PLAYER)
+ if (GetBattlerSide(gBankAttacker) == B_SIDE_PLAYER)
gBattleResults.lastUsedMove = gCurrentMove;
else
gBattleResults.opponentMove = gCurrentMove;
// choose target
- side = GetBankSide(gBankAttacker) ^ BIT_SIDE;
+ side = GetBattlerSide(gBankAttacker) ^ BIT_SIDE;
if (gSideTimers[side].followmeTimer != 0
&& gBattleMoves[gCurrentMove].target == MOVE_TARGET_SELECTED
- && GetBankSide(gBankAttacker) != GetBankSide(gSideTimers[side].followmeTarget)
+ && GetBattlerSide(gBankAttacker) != GetBattlerSide(gSideTimers[side].followmeTarget)
&& gBattleMons[gSideTimers[side].followmeTarget].hp != 0)
{
gBankTarget = gSideTimers[side].followmeTarget;
@@ -6629,34 +6627,34 @@ void HandleAction_UseMove(void)
&& gBattleMons[ewram16010arr(gBankAttacker)].ability != ABILITY_LIGHTNING_ROD
&& gBattleMoves[gCurrentMove].type == TYPE_ELECTRIC)
{
- side = GetBankSide(gBankAttacker);
- for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ side = GetBattlerSide(gBankAttacker);
+ for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++)
{
- if (side != GetBankSide(gActiveBank)
- && ewram16010arr(gBankAttacker) != gActiveBank
- && gBattleMons[gActiveBank].ability == ABILITY_LIGHTNING_ROD
- && BankGetTurnOrder(gActiveBank) < var)
+ if (side != GetBattlerSide(gActiveBattler)
+ && ewram16010arr(gBankAttacker) != gActiveBattler
+ && gBattleMons[gActiveBattler].ability == ABILITY_LIGHTNING_ROD
+ && BankGetTurnOrder(gActiveBattler) < var)
{
- var = BankGetTurnOrder(gActiveBank);
+ var = BankGetTurnOrder(gActiveBattler);
}
}
if (var == 4)
{
if (gBattleMoves[gChosenMove].target & MOVE_TARGET_RANDOM)
{
- if (GetBankSide(gBankAttacker) == SIDE_PLAYER)
+ if (GetBattlerSide(gBankAttacker) == B_SIDE_PLAYER)
{
if (Random() & 1)
- gBankTarget = GetBankByIdentity(IDENTITY_OPPONENT_MON1);
+ gBankTarget = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
else
- gBankTarget = GetBankByIdentity(IDENTITY_OPPONENT_MON2);
+ gBankTarget = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT);
}
else
{
if (Random() & 1)
- gBankTarget = GetBankByIdentity(IDENTITY_PLAYER_MON1);
+ gBankTarget = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
else
- gBankTarget = GetBankByIdentity(IDENTITY_PLAYER_MON2);
+ gBankTarget = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT);
}
}
else
@@ -6664,66 +6662,66 @@ void HandleAction_UseMove(void)
gBankTarget = ewram16010arr(gBankAttacker);
}
- if (gAbsentBankFlags & gBitTable[gBankTarget])
+ if (gAbsentBattlerFlags & gBitTable[gBankTarget])
{
- if (GetBankSide(gBankAttacker) != GetBankSide(gBankTarget))
+ if (GetBattlerSide(gBankAttacker) != GetBattlerSide(gBankTarget))
{
- gBankTarget = GetBankByIdentity(GetBankIdentity(gBankTarget) ^ BIT_MON);
+ gBankTarget = GetBattlerAtPosition(GetBattlerPosition(gBankTarget) ^ BIT_FLANK);
}
else
{
- gBankTarget = GetBankByIdentity(GetBankIdentity(gBankAttacker) ^ BIT_SIDE);
- if (gAbsentBankFlags & gBitTable[gBankTarget])
- gBankTarget = GetBankByIdentity(GetBankIdentity(gBankTarget) ^ BIT_MON);
+ gBankTarget = GetBattlerAtPosition(GetBattlerPosition(gBankAttacker) ^ BIT_SIDE);
+ if (gAbsentBattlerFlags & gBitTable[gBankTarget])
+ gBankTarget = GetBattlerAtPosition(GetBattlerPosition(gBankTarget) ^ BIT_FLANK);
}
}
}
else
{
- gActiveBank = gBanksByTurnOrder[var];
- RecordAbilityBattle(gActiveBank, gBattleMons[gActiveBank].ability);
- gSpecialStatuses[gActiveBank].lightningRodRedirected = 1;
- gBankTarget = gActiveBank;
+ gActiveBattler = gBanksByTurnOrder[var];
+ RecordAbilityBattle(gActiveBattler, gBattleMons[gActiveBattler].ability);
+ gSpecialStatuses[gActiveBattler].lightningRodRedirected = 1;
+ gBankTarget = gActiveBattler;
}
}
else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE
&& gBattleMoves[gChosenMove].target & MOVE_TARGET_RANDOM)
{
- if (GetBankSide(gBankAttacker) == SIDE_PLAYER)
+ if (GetBattlerSide(gBankAttacker) == B_SIDE_PLAYER)
{
if (Random() & 1)
- gBankTarget = GetBankByIdentity(IDENTITY_OPPONENT_MON1);
+ gBankTarget = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
else
- gBankTarget = GetBankByIdentity(IDENTITY_OPPONENT_MON2);
+ gBankTarget = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT);
}
else
{
if (Random() & 1)
- gBankTarget = GetBankByIdentity(IDENTITY_PLAYER_MON1);
+ gBankTarget = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
else
- gBankTarget = GetBankByIdentity(IDENTITY_PLAYER_MON2);
+ gBankTarget = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT);
}
- if (gAbsentBankFlags & gBitTable[gBankTarget]
- && GetBankSide(gBankAttacker) != GetBankSide(gBankTarget))
+ if (gAbsentBattlerFlags & gBitTable[gBankTarget]
+ && GetBattlerSide(gBankAttacker) != GetBattlerSide(gBankTarget))
{
- gBankTarget = GetBankByIdentity(GetBankIdentity(gBankTarget) ^ BIT_MON);
+ gBankTarget = GetBattlerAtPosition(GetBattlerPosition(gBankTarget) ^ BIT_FLANK);
}
}
else
{
gBankTarget = ewram16010arr(gBankAttacker);
- if (gAbsentBankFlags & gBitTable[gBankTarget])
+ if (gAbsentBattlerFlags & gBitTable[gBankTarget])
{
- if (GetBankSide(gBankAttacker) != GetBankSide(gBankTarget))
+ if (GetBattlerSide(gBankAttacker) != GetBattlerSide(gBankTarget))
{
- gBankTarget = GetBankByIdentity(GetBankIdentity(gBankTarget) ^ BIT_MON);
+ gBankTarget = GetBattlerAtPosition(GetBattlerPosition(gBankTarget) ^ BIT_FLANK);
}
else
{
- gBankTarget = GetBankByIdentity(GetBankIdentity(gBankAttacker) ^ BIT_SIDE);
- if (gAbsentBankFlags & gBitTable[gBankTarget])
- gBankTarget = GetBankByIdentity(GetBankIdentity(gBankTarget) ^ BIT_MON);
+ gBankTarget = GetBattlerAtPosition(GetBattlerPosition(gBankAttacker) ^ BIT_SIDE);
+ if (gAbsentBattlerFlags & gBitTable[gBankTarget])
+ gBankTarget = GetBattlerAtPosition(GetBattlerPosition(gBankTarget) ^ BIT_FLANK);
}
}
}
@@ -6767,7 +6765,7 @@ void HandleAction_UseItem(void)
{
gBattlescriptCurrInstr = gBattlescriptsForRunningByItem[0];
}
- else if (GetBankSide(gBankAttacker) == SIDE_PLAYER)
+ else if (GetBattlerSide(gBankAttacker) == B_SIDE_PLAYER)
{
gBattlescriptCurrInstr = gBattlescriptsForUsingItem[0];
}
@@ -6829,7 +6827,7 @@ void HandleAction_UseItem(void)
gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT;
}
#else
-__attribute__((naked))
+NAKED
void HandleAction_UseItem(void)
{
asm(".syntax unified\n\
@@ -6909,7 +6907,7 @@ _08014844: .4byte gBattlescriptCurrInstr\n\
_08014848: .4byte gBattlescriptsForRunningByItem\n\
_0801484C:\n\
ldrb r0, [r4]\n\
- bl GetBankSide\n\
+ bl GetBattlerSide\n\
lsls r0, 24\n\
cmp r0, 0\n\
bne _0801486C\n\
@@ -7245,7 +7243,7 @@ bool8 TryRunFromBattle(u8 bank)
if (effect)
{
- gCurrentTurnActionNumber = gNoOfAllBanks;
+ gCurrentTurnActionNumber = gBattlersCount;
gBattleOutcome = BATTLE_RAN;
}
@@ -7258,18 +7256,18 @@ void HandleAction_Run(void)
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{
- gCurrentTurnActionNumber = gNoOfAllBanks;
+ gCurrentTurnActionNumber = gBattlersCount;
- for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++)
{
- if (GetBankSide(gActiveBank) == SIDE_PLAYER)
+ if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
{
- if (gActionForBanks[gActiveBank] == ACTION_RUN)
+ if (gActionForBanks[gActiveBattler] == ACTION_RUN)
gBattleOutcome |= BATTLE_LOST;
}
else
{
- if (gActionForBanks[gActiveBank] == ACTION_RUN)
+ if (gActionForBanks[gActiveBattler] == ACTION_RUN)
gBattleOutcome |= BATTLE_WON;
}
}
@@ -7278,7 +7276,7 @@ void HandleAction_Run(void)
}
else
{
- if (GetBankSide(gBankAttacker) == SIDE_PLAYER)
+ if (GetBattlerSide(gBankAttacker) == B_SIDE_PLAYER)
{
if (!TryRunFromBattle(gBankAttacker)) // failed to run away
{
@@ -7298,7 +7296,7 @@ void HandleAction_Run(void)
}
else
{
- gCurrentTurnActionNumber = gNoOfAllBanks;
+ gCurrentTurnActionNumber = gBattlersCount;
gBattleOutcome = BATTLE_POKE_FLED;
}
}
@@ -7378,7 +7376,7 @@ void HandleAction_SafriZoneRun(void)
{
gBankAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber];
PlaySE(SE_NIGERU);
- gCurrentTurnActionNumber = gNoOfAllBanks;
+ gCurrentTurnActionNumber = gBattlersCount;
gBattleOutcome = BATTLE_RAN;
}
@@ -7388,7 +7386,7 @@ void HandleAction_Action9(void)
gBattle_BG0_X = 0;
gBattle_BG0_Y = 0;
- PREPARE_MON_NICK_BUFFER(gBattleTextBuff1, gBankAttacker, gBattlePartyID[gBankAttacker])
+ PREPARE_MON_NICK_BUFFER(gBattleTextBuff1, gBankAttacker, gBattlerPartyIndexes[gBankAttacker])
gBattlescriptCurrInstr = gBattlescriptsForSafariActions[3];
gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT;
diff --git a/src/battle/battle_4.c b/src/battle/battle_4.c
index bff5ba104..54cacd0cb 100644
--- a/src/battle/battle_4.c
+++ b/src/battle/battle_4.c
@@ -98,23 +98,23 @@ enum
extern u8 gUnknown_02023A14_50;
extern u8 gCritMultiplier;
extern s32 gBattleMoveDamage;
-extern u32 gStatuses3[BATTLE_BANKS_COUNT];
+extern u32 gStatuses3[MAX_BATTLERS_COUNT];
extern u16 gBattleTypeFlags;
extern const struct BaseStats gBaseStats[];
-extern struct BattleEnigmaBerry gEnigmaBerries[BATTLE_BANKS_COUNT];
-extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT];
-extern u8 gActiveBank;
+extern struct BattleEnigmaBerry gEnigmaBerries[MAX_BATTLERS_COUNT];
+extern struct BattlePokemon gBattleMons[MAX_BATTLERS_COUNT];
+extern u8 gActiveBattler;
extern u32 gBattleExecBuffer;
-extern u8 gNoOfAllBanks;
-extern u16 gBattlePartyID[BATTLE_BANKS_COUNT];
-extern u8 gBanksByTurnOrder[BATTLE_BANKS_COUNT];
-extern u8 gActionsByTurnOrder[BATTLE_BANKS_COUNT];
+extern u8 gBattlersCount;
+extern u16 gBattlerPartyIndexes[MAX_BATTLERS_COUNT];
+extern u8 gBanksByTurnOrder[MAX_BATTLERS_COUNT];
+extern u8 gActionsByTurnOrder[MAX_BATTLERS_COUNT];
extern u16 gCurrentMove;
extern u8 gLastUsedAbility;
extern u16 gBattleWeather;
extern u8 gStringBank;
extern u8 gEffectBank;
-extern u8 gAbsentBankFlags;
+extern u8 gAbsentBattlerFlags;
extern u8 gMultiHitCounter;
extern u16 gLastUsedMove[4];
extern u16 gLockedMoves[4];
@@ -132,7 +132,7 @@ extern const u8* gBattlescriptCurrInstr;
extern u8 gCurrMovePos;
extern u8 gCurrentActionFuncId;
extern u32 gHitMarker;
-extern u8 gBattleMoveFlags;
+extern u8 gMoveResultFlags;
extern u8 gBattleCommunication[];
extern u16 gLastLandedMoves[4];
extern u16 gLastHitByType[4];
@@ -142,8 +142,8 @@ extern const u8 gTypeEffectiveness[];
extern u16 gLastUsedItem;
extern u16 gBattleMovePower;
extern s32 gHpDealt;
-extern s32 gTakenDmg[BATTLE_BANKS_COUNT];
-extern u8 gTakenDmgBanks[BATTLE_BANKS_COUNT];
+extern s32 gTakenDmg[MAX_BATTLERS_COUNT];
+extern u8 gTakenDmgBanks[MAX_BATTLERS_COUNT];
extern const u16 gMissStringIds[];
extern u8 gSentPokesToOpponent[2];
extern u8 gBank1;
@@ -191,8 +191,8 @@ void RecordItemBattle(u8 bank, u8 holdEffect);
static bool8 IsTwoTurnsMove(u16 move);
static void TrySetDestinyBondToHappen(void);
static void CheckWonderGuardAndLevitate(void);
-u8 GetBankIdentity(u8 bank);
-u8 GetBankSide(u8 bank);
+u8 GetBattlerPosition(u8 bank);
+u8 GetBattlerSide(u8 bank);
u8 GetBattleBank(u8 bankValue);
s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *defender, u32 move, u16 a4, u16 powerOverride, u8 typeOverride, u8 bank_atk, u8 bank_def);
static u8 AttacksThisTurn(u8 bank, u16 move); //Note: returns 1 if it's a charging turn, otherwise 2
@@ -202,7 +202,6 @@ void PlayBGM(u16 songID);
void MonGainEVs(struct Pokemon*, u16 defeatedSpecies);
extern u8 gBattleBufferB[4][0x200];
void HandleLowHpMusicChange(struct Pokemon*, u8 bank);
-void AdjustFriendship(struct Pokemon*, u8 value);
bool8 IsTradedMon(struct Pokemon*);
void BattleScriptPop(void);
void SwitchInClearSetData(void);
@@ -211,7 +210,7 @@ u8 GetSetPokedexFlag(u16 nationalNum, u8 caseID);
u16 SpeciesToNationalPokedexNum(u16 species);
u8 sub_803FC34(u8 bank);
u16 sub_803FBFC(u8 a);
-u8 GetBankByIdentity(u8 ID);
+u8 GetBattlerAtPosition(u8 ID);
void sub_8012258(u8);
//MonTryLearningNewMove teach poke a move
u16 GiveMoveToBattleMon(struct BattlePokemon *mon, u16 move);
@@ -307,7 +306,7 @@ extern u8 BattleScript_SelectingImprisionedMoveInPalace[];
#define BS2ScriptRead16(ptr) ((ptr)[0] + ((ptr)[1] << 8))
#define BS2ScriptReadPtr(ptr) ((void *)BS2ScriptRead32(ptr))
-#define TARGET_PROTECT_AFFECTED ((gProtectStructs[gBankTarget].protected && gBattleMoves[gCurrentMove].flags & FLAG_PROTECT_AFFECTED))
+#define TARGET_PROTECT_AFFECTED ((gProtectStructs[gBankTarget].protected && gBattleMoves[gCurrentMove].flags & F_AFFECTED_BY_PROTECT))
//array entries for battle communication
#define MOVE_EFFECT_BYTE 0x3
@@ -1118,7 +1117,7 @@ static void atk00_attackcanceler(void)
&& !(gBattleMons[gBankAttacker].status2 & STATUS2_MULTIPLETURNS))
{
gBattlescriptCurrInstr = BattleScript_NoPPForMove;
- gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gMoveResultFlags |= MOVE_RESULT_MISSED;
return;
}
@@ -1135,14 +1134,14 @@ static void atk00_attackcanceler(void)
gHitMarker |= HITMARKER_OBEYS;
return;
default:
- gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gMoveResultFlags |= MOVE_RESULT_MISSED;
return;
}
}
gHitMarker |= HITMARKER_OBEYS;
- if (gProtectStructs[gBankTarget].bounceMove && gBattleMoves[gCurrentMove].flags & FLAG_MAGICCOAT_AFFECTED)
+ if (gProtectStructs[gBankTarget].bounceMove && gBattleMoves[gCurrentMove].flags & F_AFFECTED_BY_MAGIC_COAT)
{
PressurePPLose(gBankAttacker, gBankTarget, MOVE_MAGIC_COAT);
gProtectStructs[gBankTarget].bounceMove = 0;
@@ -1151,9 +1150,9 @@ static void atk00_attackcanceler(void)
return;
}
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
- if ((gProtectStructs[gBanksByTurnOrder[i]].stealMove) && gBattleMoves[gCurrentMove].flags & FLAG_SNATCH_AFFECTED)
+ if ((gProtectStructs[gBanksByTurnOrder[i]].stealMove) && gBattleMoves[gCurrentMove].flags & F_AFFECTED_BY_SNATCH)
{
PressurePPLose(gBankAttacker, gBanksByTurnOrder[i], MOVE_SNATCH);
gProtectStructs[gBanksByTurnOrder[i]].stealMove = 0;
@@ -1177,7 +1176,7 @@ static void atk00_attackcanceler(void)
&& ((!IsTwoTurnsMove(gCurrentMove) || (gBattleMons[gBankAttacker].status2 & STATUS2_MULTIPLETURNS))))
{
CancelMultiTurnMoves(gBankAttacker);
- gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gMoveResultFlags |= MOVE_RESULT_MISSED;
gLastLandedMoves[gBankTarget] = 0;
gLastHitByType[gBankTarget] = 0;
gBattleCommunication[6] = 1;
@@ -1192,7 +1191,7 @@ static void atk00_attackcanceler(void)
static void JumpIfMoveFailed(u8 adder, u16 move)
{
const u8 *BS_ptr = gBattlescriptCurrInstr + adder;
- if (gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ if (gMoveResultFlags & MOVE_RESULT_NO_EFFECT)
{
gLastLandedMoves[gBankTarget] = 0;
gLastHitByType[gBankTarget] = 0;
@@ -1211,7 +1210,7 @@ static void atk40_jumpifaffectedbyprotect(void)
{
if (TARGET_PROTECT_AFFECTED)
{
- gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gMoveResultFlags |= MOVE_RESULT_MISSED;
JumpIfMoveFailed(5, 0);
gBattleCommunication[6] = 1;
}
@@ -1226,7 +1225,7 @@ static bool8 JumpIfMoveAffectedByProtect(u16 move)
bool8 affected = FALSE;
if (TARGET_PROTECT_AFFECTED)
{
- gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gMoveResultFlags |= MOVE_RESULT_MISSED;
JumpIfMoveFailed(7, move);
gBattleCommunication[6] = 1;
affected = TRUE;
@@ -1244,7 +1243,7 @@ static bool8 AccuracyCalcHelper(u16 move)
if (!(gHitMarker & HITMARKER_IGNORE_ON_AIR) && gStatuses3[gBankTarget] & STATUS3_ON_AIR)
{
- gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gMoveResultFlags |= MOVE_RESULT_MISSED;
JumpIfMoveFailed(7, move);
return TRUE;
}
@@ -1253,7 +1252,7 @@ static bool8 AccuracyCalcHelper(u16 move)
if (!(gHitMarker & HITMARKER_IGNORE_UNDERGROUND) && gStatuses3[gBankTarget] & STATUS3_UNDERGROUND)
{
- gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gMoveResultFlags |= MOVE_RESULT_MISSED;
JumpIfMoveFailed(7, move);
return TRUE;
}
@@ -1262,7 +1261,7 @@ static bool8 AccuracyCalcHelper(u16 move)
if (!(gHitMarker & HITMARKER_IGNORE_UNDERWATER) && gStatuses3[gBankTarget] & STATUS3_UNDERWATER)
{
- gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gMoveResultFlags |= MOVE_RESULT_MISSED;
JumpIfMoveFailed(7, move);
return TRUE;
}
@@ -1358,7 +1357,7 @@ static void atk01_accuracycheck(void)
// final calculation
if ((Random() % 100 + 1) > calc)
{
- gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gMoveResultFlags |= MOVE_RESULT_MISSED;
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE &&
(gBattleMoves[move].target == 0x8 || gBattleMoves[move].target == 0x20))
gBattleCommunication[6] = 2;
@@ -1420,7 +1419,7 @@ static void atk03_ppreduce(void)
if (!(gBattleMons[gBankAttacker].status2 & STATUS2_TRANSFORMED)
&& !((gDisableStructs[gBankAttacker].unk18_b) & gBitTable[gCurrMovePos]))
{
- gActiveBank = gBankAttacker;
+ gActiveBattler = gBankAttacker;
EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + gCurrMovePos, 0, 1, &gBattleMons[gBankAttacker].pp[gCurrMovePos]);
MarkBufferBankForExecution(gBankAttacker);
}
@@ -1469,7 +1468,7 @@ static void atk04_critcalc(void)
static void atk05_damagecalc(void)
{
- u16 side_hword = gSideAffecting[GetBankIdentity(gBankTarget) & 1];
+ u16 side_hword = gSideAffecting[GetBattlerPosition(gBankTarget) & 1];
gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[gBankAttacker], &gBattleMons[gBankTarget], gCurrentMove,
side_hword, gDynamicBasePower,
gBattleStruct->dynamicMoveType, gBankAttacker, gBankTarget);
@@ -1485,7 +1484,7 @@ static void atk05_damagecalc(void)
void AI_CalcDmg(u8 BankAtk, u8 BankDef)
{
- u16 side_hword = gSideAffecting[GetBankIdentity(BankDef) & 1];
+ u16 side_hword = gSideAffecting[GetBattlerPosition(BankDef) & 1];
gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[BankAtk], &gBattleMons[BankDef], gCurrentMove,
side_hword, gDynamicBasePower,
gBattleStruct->dynamicMoveType, BankAtk, BankDef);
@@ -1507,26 +1506,26 @@ static void ModulateDmgByType(u8 multiplier)
switch (multiplier)
{
case 0: //no effect
- gBattleMoveFlags |= MOVESTATUS_NOTAFFECTED;
- gBattleMoveFlags &= ~MOVESTATUS_NOTVERYEFFECTIVE;
- gBattleMoveFlags &= ~MOVESTATUS_SUPEREFFECTIVE;
+ gMoveResultFlags |= MOVE_RESULT_DOESNT_AFFECT_FOE;
+ gMoveResultFlags &= ~MOVE_RESULT_NOT_VERY_EFFECTIVE;
+ gMoveResultFlags &= ~MOVE_RESULT_SUPER_EFFECTIVE;
break;
case 5: //not very effecting
- if (gBattleMoves[gCurrentMove].power && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT))
+ if (gBattleMoves[gCurrentMove].power && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT))
{
- if (gBattleMoveFlags & MOVESTATUS_SUPEREFFECTIVE)
- gBattleMoveFlags &= ~MOVESTATUS_SUPEREFFECTIVE;
+ if (gMoveResultFlags & MOVE_RESULT_SUPER_EFFECTIVE)
+ gMoveResultFlags &= ~MOVE_RESULT_SUPER_EFFECTIVE;
else
- gBattleMoveFlags |= MOVESTATUS_NOTVERYEFFECTIVE;
+ gMoveResultFlags |= MOVE_RESULT_NOT_VERY_EFFECTIVE;
}
break;
case 20: //super effective
- if (gBattleMoves[gCurrentMove].power && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT))
+ if (gBattleMoves[gCurrentMove].power && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT))
{
- if (gBattleMoveFlags & MOVESTATUS_NOTVERYEFFECTIVE)
- gBattleMoveFlags &= ~MOVESTATUS_NOTVERYEFFECTIVE;
+ if (gMoveResultFlags & MOVE_RESULT_NOT_VERY_EFFECTIVE)
+ gMoveResultFlags &= ~MOVE_RESULT_NOT_VERY_EFFECTIVE;
else
- gBattleMoveFlags |= MOVESTATUS_SUPEREFFECTIVE;
+ gMoveResultFlags |= MOVE_RESULT_SUPER_EFFECTIVE;
}
break;
}
@@ -1553,7 +1552,7 @@ static void atk06_typecalc(void)
if (gBattleMons[gBankTarget].ability == ABILITY_LEVITATE && move_type == TYPE_GROUND)
{
gLastUsedAbility = gBattleMons[gBankTarget].ability;
- gBattleMoveFlags |= (MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED);
+ gMoveResultFlags |= (MOVE_RESULT_MISSED | MOVE_RESULT_DOESNT_AFFECT_FOE);
gLastLandedMoves[gBankTarget] = 0;
gLastHitByType[gBankTarget] = 0;
gBattleCommunication[6] = move_type;
@@ -1586,17 +1585,17 @@ static void atk06_typecalc(void)
}
if (gBattleMons[gBankTarget].ability == ABILITY_WONDER_GUARD && AttacksThisTurn(gBankAttacker, gCurrentMove) == 2
- && (!(gBattleMoveFlags & MOVESTATUS_SUPEREFFECTIVE) || ((gBattleMoveFlags & (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE)) == (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE)))
+ && (!(gMoveResultFlags & MOVE_RESULT_SUPER_EFFECTIVE) || ((gMoveResultFlags & (MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE)) == (MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE)))
&& gBattleMoves[gCurrentMove].power)
{
gLastUsedAbility = ABILITY_WONDER_GUARD;
- gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gMoveResultFlags |= MOVE_RESULT_MISSED;
gLastLandedMoves[gBankTarget] = 0;
gLastHitByType[gBankTarget] = 0;
gBattleCommunication[6] = 3;
RecordAbilityBattle(gBankTarget, gLastUsedAbility);
}
- if (gBattleMoveFlags & MOVESTATUS_NOTAFFECTED)
+ if (gMoveResultFlags & MOVE_RESULT_DOESNT_AFFECT_FOE)
gProtectStructs[gBankAttacker].notEffective = 1;
}
gBattlescriptCurrInstr++;
@@ -1636,14 +1635,14 @@ static void CheckWonderGuardAndLevitate(void)
//check no effect
if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type1 && gTypeEffectiveness[i + 2] == 0)
{
- gBattleMoveFlags |= MOVESTATUS_NOTAFFECTED;
+ gMoveResultFlags |= MOVE_RESULT_DOESNT_AFFECT_FOE;
gProtectStructs[gBankAttacker].notEffective = 1;
}
if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type2 &&
gBattleMons[gBankTarget].type1 != gBattleMons[gBankTarget].type2 &&
gTypeEffectiveness[i + 2] == 0)
{
- gBattleMoveFlags |= MOVESTATUS_NOTAFFECTED;
+ gMoveResultFlags |= MOVE_RESULT_DOESNT_AFFECT_FOE;
gProtectStructs[gBankAttacker].notEffective = 1;
}
@@ -1684,26 +1683,26 @@ static void ModulateDmgByType2(u8 multiplier, u16 move, u8* flags) //a literal c
switch (multiplier)
{
case 0: //no effect
- *flags |= MOVESTATUS_NOTAFFECTED;
- *flags &= ~MOVESTATUS_NOTVERYEFFECTIVE;
- *flags &= ~MOVESTATUS_SUPEREFFECTIVE;
+ *flags |= MOVE_RESULT_DOESNT_AFFECT_FOE;
+ *flags &= ~MOVE_RESULT_NOT_VERY_EFFECTIVE;
+ *flags &= ~MOVE_RESULT_SUPER_EFFECTIVE;
break;
case 5: //not very effecting
- if (gBattleMoves[move].power && !(*flags & MOVESTATUS_NOEFFECT))
+ if (gBattleMoves[move].power && !(*flags & MOVE_RESULT_NO_EFFECT))
{
- if (*flags & MOVESTATUS_SUPEREFFECTIVE)
- *flags &= ~MOVESTATUS_SUPEREFFECTIVE;
+ if (*flags & MOVE_RESULT_SUPER_EFFECTIVE)
+ *flags &= ~MOVE_RESULT_SUPER_EFFECTIVE;
else
- *flags |= MOVESTATUS_NOTVERYEFFECTIVE;
+ *flags |= MOVE_RESULT_NOT_VERY_EFFECTIVE;
}
break;
case 20: //super effective
- if (gBattleMoves[move].power && !(*flags & MOVESTATUS_NOEFFECT))
+ if (gBattleMoves[move].power && !(*flags & MOVE_RESULT_NO_EFFECT))
{
- if (*flags & MOVESTATUS_NOTVERYEFFECTIVE)
- *flags &= ~MOVESTATUS_NOTVERYEFFECTIVE;
+ if (*flags & MOVE_RESULT_NOT_VERY_EFFECTIVE)
+ *flags &= ~MOVE_RESULT_NOT_VERY_EFFECTIVE;
else
- *flags |= MOVESTATUS_SUPEREFFECTIVE;
+ *flags |= MOVE_RESULT_SUPER_EFFECTIVE;
}
break;
}
@@ -1729,7 +1728,7 @@ u8 TypeCalc(u16 move, u8 bank_atk, u8 bank_def)
if (gBattleMons[bank_def].ability == ABILITY_LEVITATE && move_type == TYPE_GROUND)
{
- flags |= (MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED);
+ flags |= (MOVE_RESULT_MISSED | MOVE_RESULT_DOESNT_AFFECT_FOE);
}
else
{
@@ -1757,12 +1756,12 @@ u8 TypeCalc(u16 move, u8 bank_atk, u8 bank_def)
}
}
- if (gBattleMons[bank_def].ability == ABILITY_WONDER_GUARD && !(flags & MOVESTATUS_MISSED) &&
+ if (gBattleMons[bank_def].ability == ABILITY_WONDER_GUARD && !(flags & MOVE_RESULT_MISSED) &&
AttacksThisTurn(bank_atk, move) == 2 &&
- (!(flags & MOVESTATUS_SUPEREFFECTIVE) || ((flags & (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE)) == (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE))) &&
+ (!(flags & MOVE_RESULT_SUPER_EFFECTIVE) || ((flags & (MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE)) == (MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE))) &&
gBattleMoves[move].power)
{
- flags |= MOVESTATUS_MISSED;
+ flags |= MOVE_RESULT_MISSED;
}
return flags;
}
@@ -1779,7 +1778,7 @@ u8 AI_TypeCalc(u16 move, u16 species, u8 ability)
move_type = gBattleMoves[move].type;
if (ability == ABILITY_LEVITATE && move_type == TYPE_GROUND)
- flags = MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED;
+ flags = MOVE_RESULT_MISSED | MOVE_RESULT_DOESNT_AFFECT_FOE;
else
{
while (gTypeEffectiveness[i]!= TYPE_ENDTABLE)
@@ -1802,9 +1801,9 @@ u8 AI_TypeCalc(u16 move, u16 species, u8 ability)
}
}
if (ability == ABILITY_WONDER_GUARD
- && (!(flags & MOVESTATUS_SUPEREFFECTIVE) || ((flags & (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE)) == (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE)))
+ && (!(flags & MOVE_RESULT_SUPER_EFFECTIVE) || ((flags & (MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE)) == (MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE)))
&& gBattleMoves[move].power)
- flags |= MOVESTATUS_NOTAFFECTED;
+ flags |= MOVE_RESULT_DOESNT_AFFECT_FOE;
return flags;
}
@@ -1862,12 +1861,12 @@ static void atk07_adjustnormaldamage(void)
if (gProtectStructs[gBankTarget].endured)
{
- gBattleMoveFlags |= MOVESTATUS_ENDURED;
+ gMoveResultFlags |= MOVE_RESULT_FOE_ENDURED;
goto END;
}
if (gSpecialStatuses[gBankTarget].focusBanded)
{
- gBattleMoveFlags |= MOVESTATUS_HUNGON;
+ gMoveResultFlags |= MOVE_RESULT_FOE_HUNG_ON;
gLastUsedItem = gBattleMons[gBankTarget].item;
}
@@ -1909,12 +1908,12 @@ static void atk08_adjustnormaldamage2(void) //literally the same as 0x7 except i
if (gProtectStructs[gBankTarget].endured)
{
- gBattleMoveFlags |= MOVESTATUS_ENDURED;
+ gMoveResultFlags |= MOVE_RESULT_FOE_ENDURED;
goto END;
}
if (gSpecialStatuses[gBankTarget].focusBanded)
{
- gBattleMoveFlags |= MOVESTATUS_HUNGON;
+ gMoveResultFlags |= MOVE_RESULT_FOE_HUNG_ON;
gLastUsedItem = gBattleMons[gBankTarget].item;
}
@@ -1941,9 +1940,9 @@ static void atk09_attackanimation(void)
gBattlescriptCurrInstr++;
return;
}
- if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT))
+ if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT))
{
- gActiveBank = gBankAttacker;
+ gActiveBattler = gBankAttacker;
EmitMoveAnimation(0, gCurrentMove, gBattleStruct->animTurn, gBattleMovePower, gBattleMoveDamage, gBattleMons[gBankAttacker].friendship, &gDisableStructs[gBankAttacker]);
gBattleStruct->animTurn += 1;
@@ -1970,13 +1969,13 @@ static void atk0B_healthbarupdate(void)
if (gBattleExecBuffer)
return;
- if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT))
+ if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT))
{
- gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
+ gActiveBattler = GetBattleBank(gBattlescriptCurrInstr[1]);
- if (gBattleMons[gActiveBank].status2 & STATUS2_SUBSTITUTE && gDisableStructs[gActiveBank].substituteHP && !(gHitMarker & HITMARKER_IGNORE_SUBSTITUTE))
+ if (gBattleMons[gActiveBattler].status2 & STATUS2_SUBSTITUTE && gDisableStructs[gActiveBattler].substituteHP && !(gHitMarker & HITMARKER_IGNORE_SUBSTITUTE))
{
- PrepareStringBattle(0x80, gActiveBank);
+ PrepareStringBattle(0x80, gActiveBattler);
}
else
{
@@ -1996,9 +1995,9 @@ static void atk0B_healthbarupdate(void)
*/
EmitHealthBarUpdate(0, gBattleMoveDamage);
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
- if (GetBankSide(gActiveBank) == SIDE_PLAYER && gBattleMoveDamage > 0)
+ if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER && gBattleMoveDamage > 0)
gBattleResults.unk5_0 = 1;
}
}
@@ -2020,27 +2019,27 @@ static void atk0C_datahpupdate(void)
else
moveType = gBattleMoves[gCurrentMove].type;
- if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT))
+ if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT))
{
- gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
- if (gBattleMons[gActiveBank].status2 & STATUS2_SUBSTITUTE && gDisableStructs[gActiveBank].substituteHP && !(gHitMarker & HITMARKER_IGNORE_SUBSTITUTE))
+ gActiveBattler = GetBattleBank(gBattlescriptCurrInstr[1]);
+ if (gBattleMons[gActiveBattler].status2 & STATUS2_SUBSTITUTE && gDisableStructs[gActiveBattler].substituteHP && !(gHitMarker & HITMARKER_IGNORE_SUBSTITUTE))
{
- if (gDisableStructs[gActiveBank].substituteHP >= gBattleMoveDamage)
+ if (gDisableStructs[gActiveBattler].substituteHP >= gBattleMoveDamage)
{
- if (gSpecialStatuses[gActiveBank].moveturnLostHP == 0)
- gSpecialStatuses[gActiveBank].moveturnLostHP = gBattleMoveDamage;
- gDisableStructs[gActiveBank].substituteHP -= gBattleMoveDamage;
+ if (gSpecialStatuses[gActiveBattler].moveturnLostHP == 0)
+ gSpecialStatuses[gActiveBattler].moveturnLostHP = gBattleMoveDamage;
+ gDisableStructs[gActiveBattler].substituteHP -= gBattleMoveDamage;
gHpDealt = gBattleMoveDamage;
}
else
{
- if (gSpecialStatuses[gActiveBank].moveturnLostHP == 0)
- gSpecialStatuses[gActiveBank].moveturnLostHP = gDisableStructs[gActiveBank].substituteHP;
- gHpDealt = gDisableStructs[gActiveBank].substituteHP;
- gDisableStructs[gActiveBank].substituteHP = 0;
+ if (gSpecialStatuses[gActiveBattler].moveturnLostHP == 0)
+ gSpecialStatuses[gActiveBattler].moveturnLostHP = gDisableStructs[gActiveBattler].substituteHP;
+ gHpDealt = gDisableStructs[gActiveBattler].substituteHP;
+ gDisableStructs[gActiveBattler].substituteHP = 0;
}
// check substitute fading
- if (gDisableStructs[gActiveBank].substituteHP == 0)
+ if (gDisableStructs[gActiveBattler].substituteHP == 0)
{
gBattlescriptCurrInstr += 2;
BattleScriptPushCursor();
@@ -2053,9 +2052,9 @@ static void atk0C_datahpupdate(void)
gHitMarker &= ~(HITMARKER_IGNORE_SUBSTITUTE);
if (gBattleMoveDamage < 0) // hp goes up
{
- gBattleMons[gActiveBank].hp -= gBattleMoveDamage;
- if (gBattleMons[gActiveBank].hp > gBattleMons[gActiveBank].maxHP)
- gBattleMons[gActiveBank].hp = gBattleMons[gActiveBank].maxHP;
+ gBattleMons[gActiveBattler].hp -= gBattleMoveDamage;
+ if (gBattleMons[gActiveBattler].hp > gBattleMons[gActiveBattler].maxHP)
+ gBattleMons[gActiveBattler].hp = gBattleMons[gActiveBattler].maxHP;
}
else // hp goes down
@@ -2066,68 +2065,68 @@ static void atk0C_datahpupdate(void)
}
else
{
- gTakenDmg[gActiveBank] += gBattleMoveDamage;
+ gTakenDmg[gActiveBattler] += gBattleMoveDamage;
if (gBattlescriptCurrInstr[1] == BS_GET_TARGET)
- gTakenDmgBanks[gActiveBank] = gBankAttacker;
+ gTakenDmgBanks[gActiveBattler] = gBankAttacker;
else
- gTakenDmgBanks[gActiveBank] = gBankTarget;
+ gTakenDmgBanks[gActiveBattler] = gBankTarget;
}
- if (gBattleMons[gActiveBank].hp > gBattleMoveDamage)
+ if (gBattleMons[gActiveBattler].hp > gBattleMoveDamage)
{
- gBattleMons[gActiveBank].hp -= gBattleMoveDamage;
+ gBattleMons[gActiveBattler].hp -= gBattleMoveDamage;
gHpDealt = gBattleMoveDamage;
}
else
{
- gHpDealt = gBattleMons[gActiveBank].hp;
- gBattleMons[gActiveBank].hp = 0;
+ gHpDealt = gBattleMons[gActiveBattler].hp;
+ gBattleMons[gActiveBattler].hp = 0;
}
- if (!gSpecialStatuses[gActiveBank].moveturnLostHP && !(gHitMarker & HITMARKER_x100000))
- gSpecialStatuses[gActiveBank].moveturnLostHP = gHpDealt;
+ if (!gSpecialStatuses[gActiveBattler].moveturnLostHP && !(gHitMarker & HITMARKER_x100000))
+ gSpecialStatuses[gActiveBattler].moveturnLostHP = gHpDealt;
- if (moveType <= 8 && !(gHitMarker & HITMARKER_x100000) && gCurrentMove != MOVE_PAIN_SPLIT)
+ if (TYPE_IS_PHYSICAL(moveType) && !(gHitMarker & HITMARKER_x100000) && gCurrentMove != MOVE_PAIN_SPLIT)
{
- gProtectStructs[gActiveBank].physicalDmg = gHpDealt;
- gSpecialStatuses[gActiveBank].moveturnLostHP_physical = gHpDealt;
+ gProtectStructs[gActiveBattler].physicalDmg = gHpDealt;
+ gSpecialStatuses[gActiveBattler].moveturnLostHP_physical = gHpDealt;
if (gBattlescriptCurrInstr[1] == BS_GET_TARGET)
{
- gProtectStructs[gActiveBank].physicalBank = gBankAttacker;
- gSpecialStatuses[gActiveBank].moveturnPhysicalBank = gBankAttacker;
+ gProtectStructs[gActiveBattler].physicalBank = gBankAttacker;
+ gSpecialStatuses[gActiveBattler].moveturnPhysicalBank = gBankAttacker;
}
else
{
- gProtectStructs[gActiveBank].physicalBank = gBankTarget;
- gSpecialStatuses[gActiveBank].moveturnPhysicalBank = gBankTarget;
+ gProtectStructs[gActiveBattler].physicalBank = gBankTarget;
+ gSpecialStatuses[gActiveBattler].moveturnPhysicalBank = gBankTarget;
}
}
- else if (moveType > 8 && !(gHitMarker & HITMARKER_x100000))
+ else if (!TYPE_IS_PHYSICAL(moveType) && !(gHitMarker & HITMARKER_x100000))
{
- gProtectStructs[gActiveBank].specialDmg = gHpDealt;
- gSpecialStatuses[gActiveBank].moveturnLostHP_special = gHpDealt;
+ gProtectStructs[gActiveBattler].specialDmg = gHpDealt;
+ gSpecialStatuses[gActiveBattler].moveturnLostHP_special = gHpDealt;
if (gBattlescriptCurrInstr[1] == BS_GET_TARGET)
{
- gProtectStructs[gActiveBank].specialBank = gBankAttacker;
- gSpecialStatuses[gActiveBank].moveturnSpecialBank = gBankAttacker;
+ gProtectStructs[gActiveBattler].specialBank = gBankAttacker;
+ gSpecialStatuses[gActiveBattler].moveturnSpecialBank = gBankAttacker;
}
else
{
- gProtectStructs[gActiveBank].specialBank = gBankTarget;
- gSpecialStatuses[gActiveBank].moveturnSpecialBank = gBankTarget;
+ gProtectStructs[gActiveBattler].specialBank = gBankTarget;
+ gSpecialStatuses[gActiveBattler].moveturnSpecialBank = gBankTarget;
}
}
}
gHitMarker &= ~(HITMARKER_x100000);
- EmitSetMonData(0, REQUEST_HP_BATTLE, 0, 2, &gBattleMons[gActiveBank].hp);
- MarkBufferBankForExecution(gActiveBank);
+ EmitSetMonData(0, REQUEST_HP_BATTLE, 0, 2, &gBattleMons[gActiveBattler].hp);
+ MarkBufferBankForExecution(gActiveBattler);
}
}
else
{
- gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
- if (gSpecialStatuses[gActiveBank].moveturnLostHP == 0)
- gSpecialStatuses[gActiveBank].moveturnLostHP = 0xFFFF;
+ gActiveBattler = GetBattleBank(gBattlescriptCurrInstr[1]);
+ if (gSpecialStatuses[gActiveBattler].moveturnLostHP == 0)
+ gSpecialStatuses[gActiveBattler].moveturnLostHP = 0xFFFF;
}
gBattlescriptCurrInstr += 2;
}
@@ -2136,7 +2135,7 @@ static void atk0D_critmessage(void)
{
if (gBattleExecBuffer == 0)
{
- if (gCritMultiplier == 2 && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT))
+ if (gCritMultiplier == 2 && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT))
{
PrepareStringBattle(0xD9, gBankAttacker);
gBattleCommunication[MSG_DISPLAY] = 1;
@@ -2150,41 +2149,41 @@ static void atk0E_effectivenesssound(void)
if (gBattleExecBuffer)
return;
- gActiveBank = gBankTarget;
- if (!(gBattleMoveFlags & MOVESTATUS_MISSED))
+ gActiveBattler = gBankTarget;
+ if (!(gMoveResultFlags & MOVE_RESULT_MISSED))
{
- u8 flag = ~MOVESTATUS_MISSED;
- switch (gBattleMoveFlags & flag)
+ u8 flag = ~MOVE_RESULT_MISSED;
+ switch (gMoveResultFlags & flag)
{
- case MOVESTATUS_SUPEREFFECTIVE:
+ case MOVE_RESULT_SUPER_EFFECTIVE:
EmitEffectivenessSound(0, 14);
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
break;
- case MOVESTATUS_NOTVERYEFFECTIVE:
+ case MOVE_RESULT_NOT_VERY_EFFECTIVE:
EmitEffectivenessSound(0, 12);
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
break;
- case MOVESTATUS_NOTAFFECTED:
- case MOVESTATUS_FAILED:
+ case MOVE_RESULT_DOESNT_AFFECT_FOE:
+ case MOVE_RESULT_FAILED:
break;
- case MOVESTATUS_ENDURED:
- case MOVESTATUS_ONEHITKO:
- case MOVESTATUS_HUNGON:
+ case MOVE_RESULT_FOE_ENDURED:
+ case MOVE_RESULT_ONE_HIT_KO:
+ case MOVE_RESULT_FOE_HUNG_ON:
default:
- if (gBattleMoveFlags & MOVESTATUS_SUPEREFFECTIVE)
+ if (gMoveResultFlags & MOVE_RESULT_SUPER_EFFECTIVE)
{
EmitEffectivenessSound(0, 14);
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
}
- else if (gBattleMoveFlags & MOVESTATUS_NOTVERYEFFECTIVE)
+ else if (gMoveResultFlags & MOVE_RESULT_NOT_VERY_EFFECTIVE)
{
EmitEffectivenessSound(0, 12);
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
}
- else if (!(gBattleMoveFlags & (MOVESTATUS_NOTAFFECTED | MOVESTATUS_FAILED)))
+ else if (!(gMoveResultFlags & (MOVE_RESULT_DOESNT_AFFECT_FOE | MOVE_RESULT_FAILED)))
{
EmitEffectivenessSound(0, 13);
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
}
break;
}
@@ -2199,7 +2198,7 @@ static void atk0F_resultmessage(void)
if (gBattleExecBuffer)
return;
- if (gBattleMoveFlags & MOVESTATUS_MISSED && (!(gBattleMoveFlags & MOVESTATUS_NOTAFFECTED) || gBattleCommunication[6] > 2))
+ if (gMoveResultFlags & MOVE_RESULT_MISSED && (!(gMoveResultFlags & MOVE_RESULT_DOESNT_AFFECT_FOE) || gBattleCommunication[6] > 2))
{
stringId = gMissStringIds[gBattleCommunication[6]];
gBattleCommunication[MSG_DISPLAY] = 1;
@@ -2207,64 +2206,64 @@ static void atk0F_resultmessage(void)
else
{
gBattleCommunication[MSG_DISPLAY] = 1;
- switch (gBattleMoveFlags & (u8)(~(MOVESTATUS_MISSED)))
+ switch (gMoveResultFlags & (u8)(~(MOVE_RESULT_MISSED)))
{
- case MOVESTATUS_SUPEREFFECTIVE:
+ case MOVE_RESULT_SUPER_EFFECTIVE:
stringId = STRINGID_SUPEREFFECTIVE;
break;
- case MOVESTATUS_NOTVERYEFFECTIVE:
+ case MOVE_RESULT_NOT_VERY_EFFECTIVE:
stringId = STRINGID_NOTVERYEFFECTIVE;
break;
- case MOVESTATUS_ONEHITKO:
+ case MOVE_RESULT_ONE_HIT_KO:
stringId = STRINGID_ONEHITKO;
break;
- case MOVESTATUS_ENDURED:
+ case MOVE_RESULT_FOE_ENDURED:
stringId = STRINGID_PKMNENDUREDHIT;
break;
- case MOVESTATUS_FAILED:
+ case MOVE_RESULT_FAILED:
stringId = STRINGID_BUTITFAILED;
break;
- case MOVESTATUS_NOTAFFECTED:
+ case MOVE_RESULT_DOESNT_AFFECT_FOE:
stringId = STRINGID_ITDOESNTAFFECT;
break;
- case MOVESTATUS_HUNGON:
+ case MOVE_RESULT_FOE_HUNG_ON:
gLastUsedItem = gBattleMons[gBankTarget].item;
gStringBank = gBankTarget;
- gBattleMoveFlags &= ~(MOVESTATUS_ENDURED | MOVESTATUS_HUNGON);
+ gMoveResultFlags &= ~(MOVE_RESULT_FOE_ENDURED | MOVE_RESULT_FOE_HUNG_ON);
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_HangedOnMsg;
return;
default:
- if (gBattleMoveFlags & MOVESTATUS_NOTAFFECTED)
+ if (gMoveResultFlags & MOVE_RESULT_DOESNT_AFFECT_FOE)
{
stringId = STRINGID_ITDOESNTAFFECT;
}
- else if (gBattleMoveFlags & MOVESTATUS_ONEHITKO)
+ else if (gMoveResultFlags & MOVE_RESULT_ONE_HIT_KO)
{
- gBattleMoveFlags &= ~(MOVESTATUS_ONEHITKO);
- gBattleMoveFlags &= ~(MOVESTATUS_SUPEREFFECTIVE);
- gBattleMoveFlags &= ~(MOVESTATUS_NOTVERYEFFECTIVE);
+ gMoveResultFlags &= ~(MOVE_RESULT_ONE_HIT_KO);
+ gMoveResultFlags &= ~(MOVE_RESULT_SUPER_EFFECTIVE);
+ gMoveResultFlags &= ~(MOVE_RESULT_NOT_VERY_EFFECTIVE);
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_OneHitKOMsg;
return;
}
- else if (gBattleMoveFlags & MOVESTATUS_ENDURED)
+ else if (gMoveResultFlags & MOVE_RESULT_FOE_ENDURED)
{
- gBattleMoveFlags &= ~(MOVESTATUS_ENDURED | MOVESTATUS_HUNGON);
+ gMoveResultFlags &= ~(MOVE_RESULT_FOE_ENDURED | MOVE_RESULT_FOE_HUNG_ON);
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_EnduredMsg;
return;
}
- else if (gBattleMoveFlags & MOVESTATUS_HUNGON)
+ else if (gMoveResultFlags & MOVE_RESULT_FOE_HUNG_ON)
{
gLastUsedItem = gBattleMons[gBankTarget].item;
gStringBank = gBankTarget;
- gBattleMoveFlags &= ~(MOVESTATUS_ENDURED | MOVESTATUS_HUNGON);
+ gMoveResultFlags &= ~(MOVE_RESULT_FOE_ENDURED | MOVE_RESULT_FOE_HUNG_ON);
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_HangedOnMsg;
return;
}
- else if (gBattleMoveFlags & MOVESTATUS_FAILED)
+ else if (gMoveResultFlags & MOVE_RESULT_FAILED)
{
stringId = STRINGID_BUTITFAILED;
}
@@ -2294,9 +2293,9 @@ static void atk10_printstring(void)
static void atk11_printselectionstring(void)
{
- gActiveBank = gBankAttacker;
+ gActiveBattler = gBankAttacker;
EmitPrintStringPlayerOnly(0, T2_READ_16(gBattlescriptCurrInstr + 1));
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
gBattlescriptCurrInstr += 3;
gBattleCommunication[MSG_DISPLAY] = 1;
}
@@ -2340,9 +2339,9 @@ static void atk14_printselectionstringfromtable(void)
{
u16 *ptr = (u16 *)T1_READ_PTR(gBattlescriptCurrInstr + 1); // FIXME
ptr += gBattleCommunication[MULTISTRING_CHOOSER];
- gActiveBank = gBankAttacker;
+ gActiveBattler = gBankAttacker;
EmitPrintStringPlayerOnly(0, *(u16*)ptr);
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
gBattlescriptCurrInstr += 5;
gBattleCommunication[MSG_DISPLAY] = 1;
}
@@ -2351,7 +2350,7 @@ static void atk14_printselectionstringfromtable(void)
u8 BankGetTurnOrder(u8 bank)
{
int i;
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
if (gBanksByTurnOrder[i] == bank)
break;
@@ -2386,7 +2385,7 @@ void SetMoveEffect(bool8 primary, u8 certainArg)
!primary && gBattleCommunication[MOVE_EFFECT_BYTE] <= 9)
{gBattlescriptCurrInstr++; return;}
- if (gSideAffecting[GetBankIdentity(gEffectBank) & 1] & SIDE_STATUS_SAFEGUARD && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD) &&
+ if (gSideAffecting[GetBattlerPosition(gEffectBank) & 1] & SIDE_STATUS_SAFEGUARD && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD) &&
!primary && gBattleCommunication[MOVE_EFFECT_BYTE] <= 7)
{gBattlescriptCurrInstr++; return;}
@@ -2405,12 +2404,12 @@ void SetMoveEffect(bool8 primary, u8 certainArg)
//check active uproar
if (gBattleMons[gEffectBank].ability != ABILITY_SOUNDPROOF)
{
- for (gActiveBank = 0; gActiveBank < gNoOfAllBanks && !(gBattleMons[gActiveBank].status2 & STATUS2_UPROAR); gActiveBank++) {}
+ for (gActiveBattler = 0; gActiveBattler < gBattlersCount && !(gBattleMons[gActiveBattler].status2 & STATUS2_UPROAR); gActiveBattler++) {}
}
else
- gActiveBank = gNoOfAllBanks;
+ gActiveBattler = gBattlersCount;
if (gBattleMons[gEffectBank].status1) {break;}
- if (gActiveBank != gNoOfAllBanks) {break;} //nice way of checking uproar...
+ if (gActiveBattler != gBattlersCount) {break;} //nice way of checking uproar...
if (gBattleMons[gEffectBank].ability == ABILITY_VITAL_SPIRIT) {break;}
if (gBattleMons[gEffectBank].ability == ABILITY_INSOMNIA) {break;}
@@ -2554,7 +2553,7 @@ void SetMoveEffect(bool8 primary, u8 certainArg)
break;
}
else
- gBattleMoveFlags |= MOVESTATUS_NOTAFFECTED;
+ gMoveResultFlags |= MOVE_RESULT_DOESNT_AFFECT_FOE;
break;
}
if (StatusChanged == 1)
@@ -2565,9 +2564,9 @@ void SetMoveEffect(bool8 primary, u8 certainArg)
else
gBattleMons[gEffectBank].status1 |= sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]];
gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
- gActiveBank = gEffectBank;
+ gActiveBattler = gEffectBank;
EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gEffectBank].status1);
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD)
{
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
@@ -2633,7 +2632,7 @@ void SetMoveEffect(bool8 primary, u8 certainArg)
gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
break;
case 11: //pay day
- if (!(GetBankIdentity(gBankAttacker) & 1))
+ if (!(GetBattlerPosition(gBankAttacker) & 1))
{
u16 PayDay = gPaydayMoney;
gPaydayMoney += (gBattleMons[gBankAttacker].level * 5);
@@ -2728,10 +2727,10 @@ void SetMoveEffect(bool8 primary, u8 certainArg)
break;
case 31: //item steal
{
- u8 side = GetBankSide(gBankAttacker);
- if (GetBankSide(gBankAttacker) == 1 && !(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK)) && gTrainerBattleOpponent != 0x400)
+ u8 side = GetBattlerSide(gBankAttacker);
+ if (GetBattlerSide(gBankAttacker) == 1 && !(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK)) && gTrainerBattleOpponent != 0x400)
{gBattlescriptCurrInstr++; return;}
- if (!(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK)) && gTrainerBattleOpponent != 0x400 && (gWishFutureKnock.knockedOffPokes[side] & gBitTable[gBattlePartyID[gBankAttacker]]))
+ if (!(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK)) && gTrainerBattleOpponent != 0x400 && (gWishFutureKnock.knockedOffPokes[side] & gBitTable[gBattlerPartyIndexes[gBankAttacker]]))
{gBattlescriptCurrInstr++; return;}
if (gBattleMons[gBankTarget].item && gBattleMons[gBankTarget].ability == ABILITY_STICKY_HOLD)
{
@@ -2752,11 +2751,11 @@ void SetMoveEffect(bool8 primary, u8 certainArg)
USED_HELD_ITEM(bank) = gLastUsedItem;
gBattleMons[gBankTarget].item = 0;
- gActiveBank = gBankAttacker;
+ gActiveBattler = gBankAttacker;
EmitSetMonData(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gLastUsedItem);
MarkBufferBankForExecution(gBankAttacker);
- gActiveBank = gBankTarget;
+ gActiveBattler = gBankTarget;
EmitSetMonData(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gBankTarget].item);
MarkBufferBankForExecution(gBankTarget);
@@ -2787,9 +2786,9 @@ void SetMoveEffect(bool8 primary, u8 certainArg)
if (gBattleMons[gBankTarget].status1 & STATUS_PARALYSIS)
{
gBattleMons[gBankTarget].status1 &= ~(STATUS_PARALYSIS);
- gActiveBank = gBankTarget;
+ gActiveBattler = gBankTarget;
EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gBankTarget].status1);
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
BattleScriptPush(gBattlescriptCurrInstr + 1);
gBattlescriptCurrInstr = BattleScript_TargetPRLZHeal;
}
@@ -2831,10 +2830,10 @@ void SetMoveEffect(bool8 primary, u8 certainArg)
{gBattlescriptCurrInstr++; return;}
else
{
- u8 side = GetBankSide(gEffectBank);
+ u8 side = GetBattlerSide(gEffectBank);
gLastUsedItem = gBattleMons[gEffectBank].item;
gBattleMons[gEffectBank].item = 0;
- gWishFutureKnock.knockedOffPokes[side] |= gBitTable[gBattlePartyID[gEffectBank]];
+ gWishFutureKnock.knockedOffPokes[side] |= gBitTable[gBattlerPartyIndexes[gEffectBank]];
BattleScriptPush(gBattlescriptCurrInstr + 1);
gBattlescriptCurrInstr = BattleScript_KnockedOff;
@@ -2849,7 +2848,7 @@ void SetMoveEffect(bool8 primary, u8 certainArg)
}
}
#else
-__attribute__((naked))
+NAKED
void SetMoveEffect(bool8 primary, u8 certainArg)
{
asm(".syntax unified\n\
@@ -2931,7 +2930,7 @@ _0801E450:\n\
_0801E48A:\n\
mov r1, r8\n\
ldrb r0, [r1]\n\
- bl GetBankIdentity\n\
+ bl GetBattlerPosition\n\
ldr r2, _0801E554 @ =gSideAffecting\n\
movs r1, 0x1\n\
ands r1, r0\n\
@@ -3057,10 +3056,10 @@ _0801E57A:\n\
ldrb r0, [r0]\n\
cmp r0, 0x2B\n\
beq _0801E5DC\n\
- ldr r0, _0801E5D4 @ =gActiveBank\n\
+ ldr r0, _0801E5D4 @ =gActiveBattler\n\
movs r1, 0\n\
strb r1, [r0]\n\
- ldr r1, _0801E5D8 @ =gNoOfAllBanks\n\
+ ldr r1, _0801E5D8 @ =gBattlersCount\n\
ldrb r3, [r1]\n\
adds r7, r0, 0\n\
mov r12, r1\n\
@@ -3094,11 +3093,11 @@ _0801E5B4:\n\
beq _0801E5B4\n\
b _0801E5E8\n\
.align 2, 0\n\
-_0801E5D4: .4byte gActiveBank\n\
-_0801E5D8: .4byte gNoOfAllBanks\n\
+_0801E5D4: .4byte gActiveBattler\n\
+_0801E5D8: .4byte gBattlersCount\n\
_0801E5DC:\n\
- ldr r0, _0801E628 @ =gActiveBank\n\
- ldr r2, _0801E62C @ =gNoOfAllBanks\n\
+ ldr r0, _0801E628 @ =gActiveBattler\n\
+ ldr r2, _0801E62C @ =gBattlersCount\n\
ldrb r1, [r2]\n\
strb r1, [r0]\n\
adds r7, r0, 0\n\
@@ -3140,8 +3139,8 @@ _0801E620:\n\
bl CancelMultiTurnMoves\n\
b _0801EA04\n\
.align 2, 0\n\
-_0801E628: .4byte gActiveBank\n\
-_0801E62C: .4byte gNoOfAllBanks\n\
+_0801E628: .4byte gActiveBattler\n\
+_0801E62C: .4byte gBattlersCount\n\
_0801E630:\n\
mov r2, r8\n\
ldrb r1, [r2]\n\
@@ -3643,7 +3642,7 @@ _0801EA04:\n\
mov r10, r0\n\
b _0801EA14\n\
_0801EA0A:\n\
- ldr r0, _0801EA58 @ =gBattleMoveFlags\n\
+ ldr r0, _0801EA58 @ =gMoveResultFlags\n\
ldrb r1, [r0]\n\
movs r2, 0x8\n\
orrs r1, r2\n\
@@ -3682,7 +3681,7 @@ _0801EA1C:\n\
str r0, [r3]\n\
b _0801EA84\n\
.align 2, 0\n\
-_0801EA58: .4byte gBattleMoveFlags\n\
+_0801EA58: .4byte gMoveResultFlags\n\
_0801EA5C: .4byte gBattlescriptCurrInstr\n\
_0801EA60: .4byte sStatusFlagsForMoveEffects\n\
_0801EA64: .4byte gBattleCommunication\n\
@@ -3708,7 +3707,7 @@ _0801EA84:\n\
adds r0, r1\n\
ldr r0, [r0]\n\
str r0, [r2]\n\
- ldr r4, _0801EAE8 @ =gActiveBank\n\
+ ldr r4, _0801EAE8 @ =gActiveBattler\n\
ldr r1, _0801EAD8 @ =gEffectBank\n\
ldrb r0, [r1]\n\
strb r0, [r4]\n\
@@ -3744,7 +3743,7 @@ _0801EAD8: .4byte gEffectBank\n\
_0801EADC: .4byte gBattlescriptCurrInstr\n\
_0801EAE0: .4byte gMoveEffectBS_Ptrs\n\
_0801EAE4: .4byte gBattleCommunication\n\
-_0801EAE8: .4byte gActiveBank\n\
+_0801EAE8: .4byte gActiveBattler\n\
_0801EAEC: .4byte gUnknown_02024ACC\n\
_0801EAF0: .4byte gHitMarker\n\
_0801EAF4: .4byte 0xffffdfff\n\
@@ -4049,7 +4048,7 @@ _0801EDD8: .4byte gBattleCommunication\n\
_0801EDDC:\n\
ldr r5, _0801EE30 @ =gBankAttacker\n\
ldrb r0, [r5]\n\
- bl GetBankIdentity\n\
+ bl GetBattlerPosition\n\
movs r1, 0x1\n\
ands r1, r0\n\
cmp r1, 0\n\
@@ -4498,11 +4497,11 @@ _0801F1A0: .4byte gBankAttacker\n\
_0801F1A4:\n\
ldr r4, _0801F254 @ =gBankAttacker\n\
ldrb r0, [r4]\n\
- bl GetBankSide\n\
+ bl GetBattlerSide\n\
lsls r0, 24\n\
lsrs r6, r0, 24\n\
ldrb r0, [r4]\n\
- bl GetBankSide\n\
+ bl GetBattlerSide\n\
lsls r0, 24\n\
lsrs r0, 24\n\
cmp r0, 0x1\n\
@@ -4538,7 +4537,7 @@ _0801F1D8:\n\
adds r0, r6, r0\n\
ldrb r1, [r0]\n\
ldr r3, _0801F268 @ =gBitTable\n\
- ldr r2, _0801F26C @ =gBattlePartyID\n\
+ ldr r2, _0801F26C @ =gBattlerPartyIndexes\n\
ldr r0, _0801F254 @ =gBankAttacker\n\
ldrb r0, [r0]\n\
lsls r0, 1\n\
@@ -4589,7 +4588,7 @@ _0801F25C: .4byte 0x00000902\n\
_0801F260: .4byte gTrainerBattleOpponent\n\
_0801F264: .4byte gWishFutureKnock\n\
_0801F268: .4byte gBitTable\n\
-_0801F26C: .4byte gBattlePartyID\n\
+_0801F26C: .4byte gBattlerPartyIndexes\n\
_0801F270: .4byte gBattleMons\n\
_0801F274: .4byte gBankTarget\n\
_0801F278: .4byte gBattlescriptCurrInstr\n\
@@ -4637,7 +4636,7 @@ _0801F2B6:\n\
add r0, r9\n\
movs r6, 0\n\
strh r3, [r0, 0x2E]\n\
- ldr r4, _0801F34C @ =gActiveBank\n\
+ ldr r4, _0801F34C @ =gActiveBattler\n\
mov r2, r10\n\
ldrb r0, [r2]\n\
strb r0, [r4]\n\
@@ -4692,7 +4691,7 @@ _0801F2B6:\n\
_0801F340: .4byte gBankAttacker\n\
_0801F344: .4byte gSharedMem + 0x160F0\n\
_0801F348: .4byte gLastUsedItem\n\
-_0801F34C: .4byte gActiveBank\n\
+_0801F34C: .4byte gActiveBattler\n\
_0801F350: .4byte gBattlescriptCurrInstr\n\
_0801F354: .4byte BattleScript_ItemSteal\n\
_0801F358: .4byte 0xfffe9f10\n\
@@ -4780,7 +4779,7 @@ _0801F406:\n\
negs r0, r0\n\
ands r4, r0\n\
str r4, [r5]\n\
- ldr r4, _0801F440 @ =gActiveBank\n\
+ ldr r4, _0801F440 @ =gActiveBattler\n\
ldrb r0, [r6]\n\
strb r0, [r4]\n\
ldrb r0, [r4]\n\
@@ -4802,7 +4801,7 @@ _0801F406:\n\
b _0801F5F8\n\
.align 2, 0\n\
_0801F43C: .4byte gBankTarget\n\
-_0801F440: .4byte gActiveBank\n\
+_0801F440: .4byte gActiveBattler\n\
_0801F444: .4byte gBattlescriptCurrInstr\n\
_0801F448: .4byte BattleScript_TargetPRLZHeal\n\
_0801F44C:\n\
@@ -4923,7 +4922,7 @@ _0801F540:\n\
cmp r0, 0\n\
beq _0801F5DC\n\
adds r0, r3, 0\n\
- bl GetBankSide\n\
+ bl GetBattlerSide\n\
lsls r0, 24\n\
lsrs r6, r0, 24\n\
ldr r1, _0801F5B8 @ =gLastUsedItem\n\
@@ -4943,7 +4942,7 @@ _0801F540:\n\
adds r2, 0x29\n\
adds r2, r6, r2\n\
ldr r3, _0801F5C0 @ =gBitTable\n\
- ldr r1, _0801F5C4 @ =gBattlePartyID\n\
+ ldr r1, _0801F5C4 @ =gBattlerPartyIndexes\n\
mov r4, r8\n\
ldrb r0, [r4]\n\
lsls r0, 1\n\
@@ -4980,7 +4979,7 @@ _0801F540:\n\
_0801F5B8: .4byte gLastUsedItem\n\
_0801F5BC: .4byte gWishFutureKnock\n\
_0801F5C0: .4byte gBitTable\n\
-_0801F5C4: .4byte gBattlePartyID\n\
+_0801F5C4: .4byte gBattlerPartyIndexes\n\
_0801F5C8: .4byte gBattlescriptCurrInstr\n\
_0801F5CC: .4byte BattleScript_KnockedOff\n\
_0801F5D0: .4byte gSharedMem\n\
@@ -5028,16 +5027,16 @@ static void atk15_seteffectwithchance(void)
PercentChance = gBattleMoves[gCurrentMove].secondaryEffectChance;
if (DEBUG && (gUnknown_02023A14_50 & 4)
- && !(gBattleCommunication[MOVE_EFFECT_BYTE] & 0x80) && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT))
+ && !(gBattleCommunication[MOVE_EFFECT_BYTE] & 0x80) && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT))
{
SetMoveEffect(0, 0);
}
- else if ((gBattleCommunication[MOVE_EFFECT_BYTE] & 0x80) && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT))
+ else if ((gBattleCommunication[MOVE_EFFECT_BYTE] & 0x80) && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT))
{
gBattleCommunication[MOVE_EFFECT_BYTE] &= 0x7F;
SetMoveEffect(0, 0x80);
}
- else if (Random() % 100 <= PercentChance && gBattleCommunication[MOVE_EFFECT_BYTE] != 0 && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT))
+ else if (Random() % 100 <= PercentChance && gBattleCommunication[MOVE_EFFECT_BYTE] != 0 && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT))
{
if (PercentChance >= 100)
SetMoveEffect(0, 0x80);
@@ -5065,11 +5064,11 @@ static void atk17_seteffectsecondary(void)
static void atk18_clearstatusfromeffect(void)
{
- gActiveBank = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1));
+ gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1));
if (gBattleCommunication[MOVE_EFFECT_BYTE] <= 6)
- gBattleMons[gActiveBank].status1 &= (~sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]);
+ gBattleMons[gActiveBattler].status1 &= (~sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]);
else
- gBattleMons[gActiveBank].status2 &= (~sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]);
+ gBattleMons[gActiveBattler].status2 &= (~sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]);
gBattleCommunication[MOVE_EFFECT_BYTE] = 0;
gBattlescriptCurrInstr += 2;
@@ -5082,14 +5081,14 @@ static void atk19_tryfaintmon(void)
if (gBattlescriptCurrInstr[2] != 0)
{
- gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
- if (gHitMarker & HITMARKER_FAINTED(gActiveBank))
+ gActiveBattler = GetBattleBank(gBattlescriptCurrInstr[1]);
+ if (gHitMarker & HITMARKER_FAINTED(gActiveBattler))
{
r4 = T1_READ_PTR(gBattlescriptCurrInstr + 3);
BattleScriptPop();
gBattlescriptCurrInstr = r4;
- gSideAffecting[GetBankSide(gActiveBank)] &= ~SIDE_STATUS_SPIKES_DAMAGED;
+ gSideAffecting[GetBattlerSide(gActiveBattler)] &= ~SIDE_STATUS_SPIKES_DAMAGED;
}
else
{
@@ -5102,18 +5101,18 @@ static void atk19_tryfaintmon(void)
if (gBattlescriptCurrInstr[1] == 1)
{
- gActiveBank = gBankAttacker;
+ gActiveBattler = gBankAttacker;
bank = gBankTarget;
r4 = BattleScript_FaintAttacker;
}
else
{
- gActiveBank = gBankTarget;
+ gActiveBattler = gBankTarget;
bank = gBankAttacker;
r4 = BattleScript_FaintTarget;
}
- if (!(gAbsentBankFlags & gBitTable[gActiveBank])
- && gBattleMons[gActiveBank].hp == 0)
+ if (!(gAbsentBattlerFlags & gBitTable[gActiveBattler])
+ && gBattleMons[gActiveBattler].hp == 0)
{
ewram160ACarr2(0, bank) = 0;
ewram160ACarr2(1, bank) = 0;
@@ -5122,27 +5121,27 @@ static void atk19_tryfaintmon(void)
ewram16100arr2(2, bank) = 0;
ewram16100arr2(3, bank) = 0;
- gHitMarker |= HITMARKER_FAINTED(gActiveBank);
+ gHitMarker |= HITMARKER_FAINTED(gActiveBattler);
BattleScriptPush(gBattlescriptCurrInstr + 7);
gBattlescriptCurrInstr = r4;
- if (GetBankSide(gActiveBank) == 0)
+ if (GetBattlerSide(gActiveBattler) == 0)
{
gHitMarker |= HITMARKER_x400000;
if (gBattleResults.playerFaintCounter < 0xFF)
gBattleResults.playerFaintCounter++;
- if (gBattleMons[bank].level > gBattleMons[gActiveBank].level)
+ if (gBattleMons[bank].level > gBattleMons[gActiveBattler].level)
{
- if (gBattleMons[bank].level - gBattleMons[gActiveBank].level > 0x1D)
- AdjustFriendship(&gPlayerParty[gBattlePartyID[gActiveBank]], 8);
+ if (gBattleMons[bank].level - gBattleMons[gActiveBattler].level > 29)
+ AdjustFriendship(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], FRIENDSHIP_EVENT_FAINT_LARGE);
else
- AdjustFriendship(&gPlayerParty[gBattlePartyID[gActiveBank]], 6);
+ AdjustFriendship(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], FRIENDSHIP_EVENT_FAINT_SMALL);
}
}
else
{
if (gBattleResults.opponentFaintCounter < 0xFF)
gBattleResults.opponentFaintCounter++;
- gBattleResults.lastOpponentSpecies = gBattleMons[gActiveBank].species;
+ gBattleResults.lastOpponentSpecies = gBattleMons[gActiveBattler].species;
}
if ((gHitMarker & HITMARKER_DESTINYBOND) && gBattleMons[gBankAttacker].hp != 0)
{
@@ -5152,7 +5151,7 @@ static void atk19_tryfaintmon(void)
}
if ((gStatuses3[gBankTarget] & STATUS3_GRUDGE)
&& !(gHitMarker & HITMARKER_GRUDGE)
- && GetBankSide(gBankAttacker) != GetBankSide(gBankTarget)
+ && GetBattlerSide(gBankAttacker) != GetBattlerSide(gBankTarget)
&& gBattleMons[gBankAttacker].hp != 0
&& gCurrentMove != MOVE_STRUGGLE)
{
@@ -5161,9 +5160,9 @@ static void atk19_tryfaintmon(void)
gBattleMons[gBankAttacker].pp[moveIndex] = 0;
BattleScriptPush(gBattlescriptCurrInstr);
gBattlescriptCurrInstr = BattleScript_SelectingImprisionedMoveInPalace;
- gActiveBank = gBankAttacker;
- EmitSetMonData(0, moveIndex + 9, 0, 1, &gBattleMons[gActiveBank].pp[moveIndex]);
- MarkBufferBankForExecution(gActiveBank);
+ gActiveBattler = gBankAttacker;
+ EmitSetMonData(0, moveIndex + 9, 0, 1, &gBattleMons[gActiveBattler].pp[moveIndex]);
+ MarkBufferBankForExecution(gActiveBattler);
gBattleTextBuff1[0] = 0xFD;
gBattleTextBuff1[1] = 2;
@@ -5183,9 +5182,9 @@ static void atk1A_dofaintanimation(void)
{
if (gBattleExecBuffer == 0)
{
- gActiveBank = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1));
+ gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1));
Emitcmd10(0);
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
gBattlescriptCurrInstr += 2;
}
}
@@ -5195,10 +5194,10 @@ static void atk1B_cleareffectsonfaint(void)
//Clears things like attraction or trapping to other banks
if (gBattleExecBuffer == 0)
{
- gActiveBank = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1));
- gBattleMons[gActiveBank].status1 = 0;
- EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 0x4, &gBattleMons[gActiveBank].status1);
- MarkBufferBankForExecution(gActiveBank);
+ gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1));
+ gBattleMons[gActiveBattler].status1 = 0;
+ EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 0x4, &gBattleMons[gActiveBattler].status1);
+ MarkBufferBankForExecution(gActiveBattler);
UndoEffectsAfterFainting();
gBattlescriptCurrInstr += 2;
}
@@ -5278,9 +5277,9 @@ static void atk1F_jumpifsideaffecting(void)
u16 flags;
void* jump_loc;
if (T2_READ_8(gBattlescriptCurrInstr + 1) == 1)
- side = GetBankIdentity(gBankAttacker) & 1;
+ side = GetBattlerPosition(gBankAttacker) & 1;
else
- side = GetBankIdentity(gBankTarget) & 1;
+ side = GetBattlerPosition(gBankTarget) & 1;
flags = T2_READ_16(gBattlescriptCurrInstr + 2);
jump_loc = T2_READ_PTR(gBattlescriptCurrInstr + 4);
@@ -5334,19 +5333,19 @@ static void atk21_jumpifstatus3condition(void)
u32 flags;
void* jump_loc;
- gActiveBank = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1));
+ gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1));
flags = T2_READ_32(gBattlescriptCurrInstr + 2);
jump_loc = T2_READ_PTR(gBattlescriptCurrInstr + 7);
if (T2_READ_8(gBattlescriptCurrInstr + 6))
{
- if ((gStatuses3[gActiveBank] & flags) != 0)
+ if ((gStatuses3[gActiveBattler] & flags) != 0)
gBattlescriptCurrInstr += 11;
else
gBattlescriptCurrInstr = jump_loc;
}
else
{
- if ((gStatuses3[gActiveBank] & flags) != 0)
+ if ((gStatuses3[gActiveBattler] & flags) != 0)
gBattlescriptCurrInstr = jump_loc;
else
gBattlescriptCurrInstr += 11;
@@ -5381,7 +5380,7 @@ static void atk23_getexp(void)
switch (gBattleStruct->getexpStateTracker)
{
case 0: // check if should receive exp at all
- if (GetBankSide(gBank1) != SIDE_OPPONENT || (gBattleTypeFlags &
+ if (GetBattlerSide(gBank1) != B_SIDE_OPPONENT || (gBattleTypeFlags &
(BATTLE_TYPE_LINK
| BATTLE_TYPE_SAFARI
| BATTLE_TYPE_BATTLE_TOWER
@@ -5392,7 +5391,7 @@ static void atk23_getexp(void)
else
{
gBattleStruct->getexpStateTracker++;
- gBattleStruct->unk16113 |= gBitTable[gBattlePartyID[gBank1]];
+ gBattleStruct->unk16113 |= gBitTable[gBattlerPartyIndexes[gBank1]];
}
break;
case 1: // calculate experience points to redistribute
@@ -5502,11 +5501,11 @@ static void atk23_getexp(void)
// get exp getter bank
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
{
- if (!(gBattlePartyID[2] != gBattleStruct->expGetterID) && !(gAbsentBankFlags & gBitTable[2]))
+ if (!(gBattlerPartyIndexes[2] != gBattleStruct->expGetterID) && !(gAbsentBattlerFlags & gBitTable[2]))
gBattleStruct->expGetterBank = 2;
else
{
- if (!(gAbsentBankFlags & gBitTable[0]))
+ if (!(gAbsentBattlerFlags & gBitTable[0]))
gBattleStruct->expGetterBank = 0;
else
gBattleStruct->expGetterBank = 2;
@@ -5542,10 +5541,11 @@ static void atk23_getexp(void)
gBattleResources_statsBeforeLvlUp->spd = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_SPEED);
gBattleResources_statsBeforeLvlUp->spAtk = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_SPATK);
gBattleResources_statsBeforeLvlUp->spDef = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_SPDEF);
+
+ gActiveBattler = gBattleStruct->expGetterBank;
- gActiveBank = gBattleStruct->expGetterBank;
EmitExpBarUpdate(0, gBattleStruct->expGetterID, gBattleMoveDamage);
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
}
gBattleStruct->getexpStateTracker++;
}
@@ -5553,25 +5553,25 @@ static void atk23_getexp(void)
case 4: // lvl up if necessary
if (gBattleExecBuffer == 0)
{
- gActiveBank = gBattleStruct->expGetterBank;
- if (gBattleBufferB[gActiveBank][0] == CONTROLLER_TWORETURNVALUES
- && gBattleBufferB[gActiveBank][1] == RET_VALUE_LEVELLED_UP)
+ gActiveBattler = gBattleStruct->expGetterBank;
+ if (gBattleBufferB[gActiveBattler][0] == CONTROLLER_TWORETURNVALUES
+ && gBattleBufferB[gActiveBattler][1] == RET_VALUE_LEVELLED_UP)
{
- if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && gBattlePartyID[gActiveBank] == gBattleStruct->expGetterID)
- HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && gBattlerPartyIndexes[gActiveBattler] == gBattleStruct->expGetterID)
+ HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
- PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gActiveBank, gBattleStruct->expGetterID)
+ PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gActiveBattler, gBattleStruct->expGetterID)
PREPARE_BYTE_NUMBER_BUFFER(gBattleTextBuff2, 3, GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_LEVEL))
BattleScriptPushCursor();
gLeveledUpInBattle |= gBitTable[gBattleStruct->expGetterID];
gBattlescriptCurrInstr = BattleScript_LevelUp;
- gBattleMoveDamage = (gBattleBufferB[gActiveBank][2] | (gBattleBufferB[gActiveBank][3] << 8));
- AdjustFriendship(&gPlayerParty[gBattleStruct->expGetterID], 0);
+ gBattleMoveDamage = (gBattleBufferB[gActiveBattler][2] | (gBattleBufferB[gActiveBattler][3] << 8));
+ AdjustFriendship(&gPlayerParty[gBattleStruct->expGetterID], FRIENDSHIP_EVENT_GROW_LEVEL);
// update battle mon structure after level up
- if (gBattlePartyID[0] == gBattleStruct->expGetterID && gBattleMons[0].hp)
+ if (gBattlerPartyIndexes[0] == gBattleStruct->expGetterID && gBattleMons[0].hp)
{
gBattleMons[0].level = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_LEVEL);
gBattleMons[0].hp = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_HP);
@@ -5585,7 +5585,7 @@ static void atk23_getexp(void)
gBattleMons[0].spDefense = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_SPDEF);
}
// What is else if?
- if (gBattlePartyID[2] == gBattleStruct->expGetterID && gBattleMons[2].hp && (gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
+ if (gBattlerPartyIndexes[2] == gBattleStruct->expGetterID && gBattleMons[2].hp && (gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
{
gBattleMons[2].level = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_LEVEL);
gBattleMons[2].hp = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_HP);
@@ -5661,13 +5661,13 @@ static void atk24(void)
//I can't for the love of god decompile that part
- for (found1 = 0, i = 0; i < gNoOfAllBanks; i += 2)
+ for (found1 = 0, i = 0; i < gBattlersCount; i += 2)
{
if ((gHitMarker & HITMARKER_UNK(i)) && !gSpecialStatuses[i].flag40)
found1++;
}
- for (found2 = 0, i = 1; i < gNoOfAllBanks; i += 2)
+ for (found2 = 0, i = 1; i < gBattlersCount; i += 2)
{
if ((gHitMarker & HITMARKER_UNK(i)) && !gSpecialStatuses[i].flag40)
found2++;
@@ -5693,7 +5693,7 @@ static void atk24(void)
}
#else
-__attribute__((naked))
+NAKED
static void atk24(void)
{
asm(".syntax unified\n\
@@ -5790,7 +5790,7 @@ _08020A54:\n\
beq _08020B3E\n\
movs r2, 0\n\
movs r5, 0\n\
- ldr r0, _08020B04 @ =gNoOfAllBanks\n\
+ ldr r0, _08020B04 @ =gBattlersCount\n\
ldrb r3, [r0]\n\
mov r12, r0\n\
ldr r7, _08020B08 @ =gBattlescriptCurrInstr\n\
@@ -5867,7 +5867,7 @@ _08020AF4: .4byte gPlayerParty\n\
_08020AF8: .4byte gBattleOutcome\n\
_08020AFC: .4byte gEnemyParty\n\
_08020B00: .4byte gBattleTypeFlags\n\
-_08020B04: .4byte gNoOfAllBanks\n\
+_08020B04: .4byte gBattlersCount\n\
_08020B08: .4byte gBattlescriptCurrInstr\n\
_08020B0C: .4byte gHitMarker\n\
_08020B10: .4byte gSpecialStatuses\n\
@@ -5914,7 +5914,7 @@ _08020B50: .4byte gBattlescriptCurrInstr\n\
static void MoveValuesCleanUp(void)
{
- gBattleMoveFlags = 0;
+ gMoveResultFlags = 0;
gBattleStruct->dmgMultiplier = 1;
gCritMultiplier = 1;
gBattleCommunication[MOVE_EFFECT_BYTE] = 0;
@@ -6229,12 +6229,12 @@ static void atk3A_waitstate(void)
static void atk3B_healthbar_update(void)
{
if (!T2_READ_8(gBattlescriptCurrInstr + 1))
- gActiveBank = gBankTarget;
+ gActiveBattler = gBankTarget;
else
- gActiveBank = gBankAttacker;
+ gActiveBattler = gBankAttacker;
EmitHealthBarUpdate(0, gBattleMoveDamage);
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
gBattlescriptCurrInstr += 2;
}
@@ -6245,15 +6245,15 @@ static void atk3C_return(void)
static void atk3D_end(void)
{
- gBattleMoveFlags = 0;
- gActiveBank = 0;
+ gMoveResultFlags = 0;
+ gActiveBattler = 0;
gCurrentActionFuncId = 0xB;
}
static void atk3E_end2(void)
{
//not much difference between this and 3D. It's more apparent in Emerald
- gActiveBank = 0;
+ gActiveBattler = 0;
gCurrentActionFuncId = 0xB;
}
@@ -6298,7 +6298,7 @@ static void atk45_playanimation(void)
{
const u16* argumentPtr;
- gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
+ gActiveBattler = GetBattleBank(gBattlescriptCurrInstr[1]);
argumentPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 3);
if (gBattlescriptCurrInstr[2] == B_ANIM_STATS_CHANGE
@@ -6306,7 +6306,7 @@ static void atk45_playanimation(void)
|| gBattlescriptCurrInstr[2] == B_ANIM_SUBSTITUTE_FADE)
{
EmitBattleAnimation(0, gBattlescriptCurrInstr[2], *argumentPtr);
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
gBattlescriptCurrInstr += 7;
}
else if (gHitMarker & HITMARKER_NO_ANIMATIONS)
@@ -6320,17 +6320,17 @@ static void atk45_playanimation(void)
|| gBattlescriptCurrInstr[2] == B_ANIM_HAIL_CONTINUES)
{
EmitBattleAnimation(0, gBattlescriptCurrInstr[2], *argumentPtr);
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
gBattlescriptCurrInstr += 7;
}
- else if (gStatuses3[gActiveBank] & STATUS3_SEMI_INVULNERABLE)
+ else if (gStatuses3[gActiveBattler] & STATUS3_SEMI_INVULNERABLE)
{
gBattlescriptCurrInstr += 7;
}
else
{
EmitBattleAnimation(0, gBattlescriptCurrInstr[2], *argumentPtr);
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
gBattlescriptCurrInstr += 7;
}
}
@@ -6340,7 +6340,7 @@ static void atk46_playanimation2(void) // animation Id is stored in the first po
const u16* argumentPtr;
const u8* animationIdPtr;
- gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
+ gActiveBattler = GetBattleBank(gBattlescriptCurrInstr[1]);
animationIdPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 2);
argumentPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 6);
@@ -6349,7 +6349,7 @@ static void atk46_playanimation2(void) // animation Id is stored in the first po
|| *animationIdPtr == B_ANIM_SUBSTITUTE_FADE)
{
EmitBattleAnimation(0, *animationIdPtr, *argumentPtr);
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
gBattlescriptCurrInstr += 10;
}
else if (gHitMarker & HITMARKER_NO_ANIMATIONS)
@@ -6362,17 +6362,17 @@ static void atk46_playanimation2(void) // animation Id is stored in the first po
|| *animationIdPtr == B_ANIM_HAIL_CONTINUES)
{
EmitBattleAnimation(0, *animationIdPtr, *argumentPtr);
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
gBattlescriptCurrInstr += 10;
}
- else if (gStatuses3[gActiveBank] & STATUS3_SEMI_INVULNERABLE)
+ else if (gStatuses3[gActiveBattler] & STATUS3_SEMI_INVULNERABLE)
{
gBattlescriptCurrInstr += 10;
}
else
{
EmitBattleAnimation(0, *animationIdPtr, *argumentPtr);
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
gBattlescriptCurrInstr += 10;
}
}
@@ -6409,7 +6409,7 @@ static void atk48_playstatchangeanimation(void)
u32 stats_to_check;
u8 arg3;
- gActiveBank = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1));
+ gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1));
stats_to_check = T2_READ_8(gBattlescriptCurrInstr + 2);
arg3 = T2_READ_8(gBattlescriptCurrInstr + 3);
if (arg3 & 1)
@@ -6424,13 +6424,13 @@ static void atk48_playstatchangeanimation(void)
if (!(T2_READ_8(gBattlescriptCurrInstr + 3)))
{
u8 ability;
- if (gSideTimers[GetBankIdentity(gActiveBank) & 1].mistTimer)
+ if (gSideTimers[GetBattlerPosition(gActiveBattler) & 1].mistTimer)
continue;
- ability = gBattleMons[gActiveBank].ability;
+ ability = gBattleMons[gActiveBattler].ability;
if (ability == ABILITY_CLEAR_BODY || ability == ABILITY_WHITE_SMOKE || (ability == ABILITY_KEEN_EYE && curr_stat == 6) || (ability == ABILITY_HYPER_CUTTER && curr_stat == 1))
continue;
}
- if (gBattleMons[gActiveBank].statStages[curr_stat] > 0)
+ if (gBattleMons[gActiveBattler].statStages[curr_stat] > 0)
{
stat_animID = r1;
changeable_stats++;
@@ -6454,7 +6454,7 @@ static void atk48_playstatchangeanimation(void)
{
if (!(stats_to_check & 1))
continue;
- if (gBattleMons[gActiveBank].statStages[curr_stat] < 0xB)
+ if (gBattleMons[gActiveBattler].statStages[curr_stat] < 0xB)
{
stat_animID = r1;
changeable_stats++;
@@ -6475,7 +6475,7 @@ static void atk48_playstatchangeanimation(void)
else
{
EmitBattleAnimation(0, 1, stat_animID);
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
if ((T2_READ_8(gBattlescriptCurrInstr + 3) & 4) && changeable_stats > 1)
gBattleStruct->filler2[0] = 1;
gBattlescriptCurrInstr += 4;
@@ -6483,7 +6483,7 @@ static void atk48_playstatchangeanimation(void)
}
#else
-__attribute__((naked))
+NAKED
static void atk48_playstatchangeanimation(void)
{
asm(".syntax unified\n\
@@ -6502,7 +6502,7 @@ push {r4-r7,lr}\n\
ldrb r0, [r0, 0x1]\n\
str r3, [sp]\n\
bl GetBattleBank\n\
- ldr r2, _08021674 @ =gActiveBank\n\
+ ldr r2, _08021674 @ =gActiveBattler\n\
strb r0, [r2]\n\
ldr r0, [r5]\n\
ldrb r4, [r0, 0x2]\n\
@@ -6539,7 +6539,7 @@ _0802164A:\n\
ands r0, r1\n\
cmp r0, 0\n\
beq _0802167C\n\
- ldr r0, _08021674 @ =gActiveBank\n\
+ ldr r0, _08021674 @ =gActiveBattler\n\
ldrb r1, [r0]\n\
movs r0, 0x58\n\
muls r0, r1\n\
@@ -6547,13 +6547,13 @@ _0802164A:\n\
b _080216C4\n\
.align 2, 0\n\
_08021670: .4byte gBattlescriptCurrInstr\n\
-_08021674: .4byte gActiveBank\n\
+_08021674: .4byte gActiveBattler\n\
_08021678: .4byte gUnknown_02024A98\n\
_0802167C:\n\
- ldr r6, _08021700 @ =gActiveBank\n\
+ ldr r6, _08021700 @ =gActiveBattler\n\
ldrb r0, [r6]\n\
str r3, [sp]\n\
- bl GetBankIdentity\n\
+ bl GetBattlerPosition\n\
mov r1, r10\n\
ands r1, r0\n\
lsls r0, r1, 1\n\
@@ -6621,7 +6621,7 @@ _080216E4:\n\
movs r0, 0x3A\n\
b _08021770\n\
.align 2, 0\n\
-_08021700: .4byte gActiveBank\n\
+_08021700: .4byte gActiveBattler\n\
_08021704: .4byte gSideTimers\n\
_08021708: .4byte gBattleMons\n\
_0802170C: .4byte gBattlescriptCurrInstr\n\
@@ -6709,7 +6709,7 @@ _08021790:\n\
mov r2, r8\n\
str r3, [sp]\n\
bl EmitBattleAnimation\n\
- ldr r0, _080217D8 @ =gActiveBank\n\
+ ldr r0, _080217D8 @ =gActiveBattler\n\
ldrb r0, [r0]\n\
bl MarkBufferBankForExecution\n\
ldr r0, _080217DC @ =gBattlescriptCurrInstr\n\
@@ -6730,7 +6730,7 @@ _080217CC:\n\
.align 2, 0\n\
_080217D0: .4byte gSharedMem\n\
_080217D4: .4byte 0x000160dc\n\
-_080217D8: .4byte gActiveBank\n\
+_080217D8: .4byte gActiveBattler\n\
_080217DC: .4byte gBattlescriptCurrInstr\n\
_080217E0:\n\
mov r1, r9\n\
@@ -6782,8 +6782,8 @@ static void atk49_moveend(void)
case 0: //rage check
if (gBattleMons[gBankTarget].status2 & STATUS2_RAGE
&& gBattleMons[gBankTarget].hp && gBankAttacker != gBankTarget
- && GetBankSide(gBankAttacker) != GetBankSide(gBankTarget)
- && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT) && TARGET_TURN_DAMAGED
+ && GetBattlerSide(gBankAttacker) != GetBattlerSide(gBankTarget)
+ && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) && TARGET_TURN_DAMAGED
&& gBattleMoves[gCurrentMove].power && gBattleMons[gBankTarget].statStages[STAT_STAGE_ATK] <= 0xB)
{
gBattleMons[gBankTarget].statStages[STAT_STAGE_ATK]++;
@@ -6797,12 +6797,12 @@ static void atk49_moveend(void)
if (gBattleMons[gBankTarget].status1 & STATUS_FREEZE
&& gBattleMons[gBankTarget].hp && gBankAttacker != gBankTarget
&& gSpecialStatuses[gBankTarget].moveturnLostHP
- && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT) && move_type == TYPE_FIRE)
+ && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) && move_type == TYPE_FIRE)
{
gBattleMons[gBankTarget].status1 &= ~(STATUS_FREEZE);
- gActiveBank = gBankTarget;
+ gActiveBattler = gBankTarget;
EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gBankTarget].status1);
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_DefrostedViaFireMove;
effect = 1;
@@ -6833,7 +6833,7 @@ static void atk49_moveend(void)
case 6: //update choice band move
if (gHitMarker & HITMARKER_OBEYS && hold_effect_atk == HOLD_EFFECT_CHOICE_BAND
&& gLastUsedMove != MOVE_STRUGGLE && (*choiced_move_atk == 0 || *choiced_move_atk == 0xFFF)
- && gLastUsedMove != MOVE_BATON_PASS && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT))
+ && gLastUsedMove != MOVE_BATON_PASS && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT))
{
*choiced_move_atk = gLastUsedMove;
for (i = 0; i < 4 && gBattleMons[gBankAttacker].moves[i] != *choiced_move_atk; i++){}
@@ -6843,7 +6843,7 @@ static void atk49_moveend(void)
gBattleStruct->cmd49StateTracker++;
break;
case 7: //changed held items
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
#define CHANGED_ITEM (((*u16)(gSharedMem + 0x160F0)))
if (CHANGED_ITEM(i))
@@ -6855,31 +6855,31 @@ static void atk49_moveend(void)
if (gStatuses3[gBankAttacker] & (STATUS3_ON_AIR | STATUS3_UNDERGROUND | STATUS3_UNDERWATER)
&& !(gHitMarker & HITMARKER_NO_ANIMATIONS))
{
- gActiveBank = gBankAttacker;
+ gActiveBattler = gBankAttacker;
EmitSpriteInvisibility(0, 1);
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
}
gBattleStruct->cmd49StateTracker++;
break;
case 9: //semi-invlurneable attacker make visible
- if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) || !(gStatuses3[gBankAttacker] & (STATUS3_ON_AIR | STATUS3_UNDERGROUND | STATUS3_UNDERWATER))
+ if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) || !(gStatuses3[gBankAttacker] & (STATUS3_ON_AIR | STATUS3_UNDERGROUND | STATUS3_UNDERWATER))
|| WasUnableToUseMove(gBankAttacker))
{
- gActiveBank = gBankAttacker;
+ gActiveBattler = gBankAttacker;
EmitSpriteInvisibility(0, 0);
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
gStatuses3 &= ~(STATUS3_ON_AIR | STATUS3_UNDERGROUND | STATUS3_UNDERWATER);
gSpecialStatuses[gBankAttacker].restored_bank_sprite = 1;
}
gBattleStruct->cmd49StateTracker++;
break;
case 10: //semi-invlurneable target make visible
- if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) || !(gStatuses3[gBankTarget] & (STATUS3_ON_AIR | STATUS3_UNDERGROUND | STATUS3_UNDERWATER))
+ if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) || !(gStatuses3[gBankTarget] & (STATUS3_ON_AIR | STATUS3_UNDERGROUND | STATUS3_UNDERWATER))
|| WasUnableToUseMove(gBankTarget))
{
- gActiveBank = gBankTarget;
+ gActiveBattler = gBankTarget;
EmitSpriteInvisibility(0, 0);
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
gStatuses3 &= ~(STATUS3_ON_AIR | STATUS3_UNDERGROUND | STATUS3_UNDERWATER);
gSpecialStatuses[gBankTarget].restored_bank_sprite = 1;
}
@@ -6891,7 +6891,7 @@ static void atk49_moveend(void)
} while (effect == 0)
}
#else
-__attribute__((naked))
+NAKED
void atk49_moveend(void)
{
asm(".syntax unified\n\
@@ -7069,16 +7069,16 @@ _08021958:\n\
cmp r1, r4\n\
beq _080219FE\n\
adds r0, r1, 0\n\
- bl GetBankSide\n\
+ bl GetBattlerSide\n\
adds r4, r0, 0\n\
ldr r1, _08021A0C @ =gBankTarget\n\
ldrb r0, [r1]\n\
- bl GetBankSide\n\
+ bl GetBattlerSide\n\
lsls r4, 24\n\
lsls r0, 24\n\
cmp r4, r0\n\
beq _080219FE\n\
- ldr r0, _08021A14 @ =gBattleMoveFlags\n\
+ ldr r0, _08021A14 @ =gMoveResultFlags\n\
ldrb r1, [r0]\n\
movs r0, 0x29\n\
ands r0, r1\n\
@@ -7135,7 +7135,7 @@ _080219FE:\n\
_08021A08: .4byte gBattleMons\n\
_08021A0C: .4byte gBankTarget\n\
_08021A10: .4byte gBankAttacker\n\
-_08021A14: .4byte gBattleMoveFlags\n\
+_08021A14: .4byte gMoveResultFlags\n\
_08021A18: .4byte gProtectStructs\n\
_08021A1C: .4byte gBattleMoves\n\
_08021A20: .4byte gCurrentMove\n\
@@ -7184,7 +7184,7 @@ _08021A68:\n\
bne _08021A7C\n\
b _08021DFA\n\
_08021A7C:\n\
- ldr r0, _08021AE0 @ =gBattleMoveFlags\n\
+ ldr r0, _08021AE0 @ =gMoveResultFlags\n\
ldrb r1, [r0]\n\
movs r0, 0x29\n\
ands r0, r1\n\
@@ -7201,7 +7201,7 @@ _08021A92:\n\
negs r0, r0\n\
ands r5, r0\n\
str r5, [r6]\n\
- ldr r4, _08021AE4 @ =gActiveBank\n\
+ ldr r4, _08021AE4 @ =gActiveBattler\n\
ldr r5, _08021AD4 @ =gBankTarget\n\
ldrb r0, [r5]\n\
strb r0, [r4]\n\
@@ -7230,8 +7230,8 @@ _08021AD0: .4byte gBattleMons\n\
_08021AD4: .4byte gBankTarget\n\
_08021AD8: .4byte gBankAttacker\n\
_08021ADC: .4byte gSpecialStatuses\n\
-_08021AE0: .4byte gBattleMoveFlags\n\
-_08021AE4: .4byte gActiveBank\n\
+_08021AE0: .4byte gMoveResultFlags\n\
+_08021AE4: .4byte gActiveBattler\n\
_08021AE8: .4byte gBattlescriptCurrInstr\n\
_08021AEC: .4byte BattleScript_DefrostedViaFireMove\n\
_08021AF0:\n\
@@ -7347,7 +7347,7 @@ _08021B9C:\n\
_08021BC8:\n\
cmp r2, 0xE2\n\
bne _08021BDA\n\
- ldr r0, _08021C34 @ =gBattleMoveFlags\n\
+ ldr r0, _08021C34 @ =gMoveResultFlags\n\
ldrb r1, [r0]\n\
movs r0, 0x20\n\
ands r0, r1\n\
@@ -7402,12 +7402,12 @@ _08021C22:\n\
_08021C28: .4byte gHitMarker\n\
_08021C2C: .4byte gChosenMove\n\
_08021C30: .4byte 0x0000ffff\n\
-_08021C34: .4byte gBattleMoveFlags\n\
+_08021C34: .4byte gMoveResultFlags\n\
_08021C38: .4byte gBattleMons\n\
_08021C3C: .4byte gBankAttacker\n\
_08021C40:\n\
movs r4, 0\n\
- ldr r0, _08021C6C @ =gNoOfAllBanks\n\
+ ldr r0, _08021C6C @ =gBattlersCount\n\
ldrb r2, [r0]\n\
cmp r4, r2\n\
blt _08021C4C\n\
@@ -7431,7 +7431,7 @@ _08021C5C:\n\
blt _08021C52\n\
b _08022244\n\
.align 2, 0\n\
-_08021C6C: .4byte gNoOfAllBanks\n\
+_08021C6C: .4byte gBattlersCount\n\
_08021C70: .4byte gSharedMem + 0x160F0\n\
_08021C74: .4byte gBattleMons\n\
_08021C78:\n\
@@ -7496,7 +7496,7 @@ _08021CE2:\n\
bne _08021CF0\n\
b _08021DFA\n\
_08021CF0:\n\
- ldr r4, _08021D14 @ =gActiveBank\n\
+ ldr r4, _08021D14 @ =gActiveBattler\n\
strb r2, [r4]\n\
movs r0, 0\n\
movs r1, 0x1\n\
@@ -7509,9 +7509,9 @@ _08021D04: .4byte gStatuses3\n\
_08021D08: .4byte gBankAttacker\n\
_08021D0C: .4byte 0x000400c0\n\
_08021D10: .4byte gHitMarker\n\
-_08021D14: .4byte gActiveBank\n\
+_08021D14: .4byte gActiveBattler\n\
_08021D18:\n\
- ldr r0, _08021D88 @ =gBattleMoveFlags\n\
+ ldr r0, _08021D88 @ =gMoveResultFlags\n\
ldrb r1, [r0]\n\
movs r0, 0x29\n\
ands r0, r1\n\
@@ -7533,7 +7533,7 @@ _08021D18:\n\
cmp r0, 0\n\
beq _08021D7E\n\
_08021D44:\n\
- ldr r4, _08021D98 @ =gActiveBank\n\
+ ldr r4, _08021D98 @ =gActiveBattler\n\
ldr r5, _08021D90 @ =gBankAttacker\n\
ldrb r0, [r5]\n\
strb r0, [r4]\n\
@@ -7566,11 +7566,11 @@ _08021D7E:\n\
adds r1, r2, r4\n\
b _08021E00\n\
.align 2, 0\n\
-_08021D88: .4byte gBattleMoveFlags\n\
+_08021D88: .4byte gMoveResultFlags\n\
_08021D8C: .4byte gStatuses3\n\
_08021D90: .4byte gBankAttacker\n\
_08021D94: .4byte 0x000400c0\n\
-_08021D98: .4byte gActiveBank\n\
+_08021D98: .4byte gActiveBattler\n\
_08021D9C: .4byte 0xfffbff3f\n\
_08021DA0: .4byte gSpecialStatuses\n\
_08021DA4: .4byte gSharedMem\n\
@@ -7587,7 +7587,7 @@ _08021DAC:\n\
lsls r0, 29\n\
cmp r0, 0\n\
blt _08021DFA\n\
- ldr r0, _08021E14 @ =gNoOfAllBanks\n\
+ ldr r0, _08021E14 @ =gBattlersCount\n\
ldrb r0, [r0]\n\
cmp r3, r0\n\
bcs _08021DFA\n\
@@ -7598,7 +7598,7 @@ _08021DAC:\n\
ands r0, r1\n\
cmp r0, 0\n\
bne _08021DFA\n\
- ldr r4, _08021E20 @ =gActiveBank\n\
+ ldr r4, _08021E20 @ =gActiveBattler\n\
strb r3, [r4]\n\
movs r0, 0\n\
movs r1, 0\n\
@@ -7626,16 +7626,16 @@ _08021E00:\n\
.align 2, 0\n\
_08021E0C: .4byte gSpecialStatuses\n\
_08021E10: .4byte gBankTarget\n\
-_08021E14: .4byte gNoOfAllBanks\n\
+_08021E14: .4byte gBattlersCount\n\
_08021E18: .4byte gStatuses3\n\
_08021E1C: .4byte 0x000400c0\n\
-_08021E20: .4byte gActiveBank\n\
+_08021E20: .4byte gActiveBattler\n\
_08021E24: .4byte 0xfffbff3f\n\
_08021E28: .4byte gSharedMem\n\
_08021E2C: .4byte 0x0001600c\n\
_08021E30:\n\
movs r4, 0\n\
- ldr r0, _08021E60 @ =gNoOfAllBanks\n\
+ ldr r0, _08021E60 @ =gBattlersCount\n\
ldrb r5, [r0]\n\
cmp r4, r5\n\
blt _08021E3C\n\
@@ -7661,7 +7661,7 @@ _08021E50:\n\
blt _08021E44\n\
b _08022244\n\
.align 2, 0\n\
-_08021E60: .4byte gNoOfAllBanks\n\
+_08021E60: .4byte gBattlersCount\n\
_08021E64: .4byte gDisableStructs\n\
_08021E68: .4byte 0xfeffffff\n\
_08021E6C: .4byte gUnknown_02024AD0\n\
@@ -7676,7 +7676,7 @@ _08021E70:\n\
adds r5, r1, 0\n\
cmp r0, 0\n\
beq _08021E9A\n\
- ldr r0, _08021F34 @ =gActiveBank\n\
+ ldr r0, _08021F34 @ =gActiveBattler\n\
ldrb r2, [r2]\n\
strb r2, [r0]\n\
ldr r1, _08021F38 @ =gBankTarget\n\
@@ -7700,7 +7700,7 @@ _08021E9A:\n\
adds r7, r2, 0\n\
cmp r0, 0x7F\n\
bne _08021EBE\n\
- ldr r0, _08021F48 @ =gBattleMoveFlags\n\
+ ldr r0, _08021F48 @ =gMoveResultFlags\n\
ldrb r1, [r0]\n\
movs r0, 0x29\n\
ands r0, r1\n\
@@ -7714,7 +7714,7 @@ _08021EBE:\n\
adds r0, r1\n\
strh r3, [r0]\n\
_08021ECA:\n\
- ldr r0, _08021F50 @ =gAbsentBankFlags\n\
+ ldr r0, _08021F50 @ =gAbsentBattlerFlags\n\
ldrb r1, [r0]\n\
ldr r2, _08021F54 @ =gBitTable\n\
mov r3, r9\n\
@@ -7768,14 +7768,14 @@ _08021F04:\n\
.align 2, 0\n\
_08021F2C: .4byte gHitMarker\n\
_08021F30: .4byte gBankAttacker\n\
-_08021F34: .4byte gActiveBank\n\
+_08021F34: .4byte gActiveBattler\n\
_08021F38: .4byte gBankTarget\n\
_08021F3C: .4byte 0xffffefff\n\
_08021F40: .4byte gBattleMoves\n\
_08021F44: .4byte gChosenMove\n\
-_08021F48: .4byte gBattleMoveFlags\n\
+_08021F48: .4byte gMoveResultFlags\n\
_08021F4C: .4byte gUnknown_02024C2C\n\
-_08021F50: .4byte gAbsentBankFlags\n\
+_08021F50: .4byte gAbsentBattlerFlags\n\
_08021F54: .4byte gBitTable\n\
_08021F58: .4byte 0x000160a6\n\
_08021F5C: .4byte gLastUsedMove\n\
@@ -7806,7 +7806,7 @@ _08021F82:\n\
ands r1, r0\n\
cmp r1, 0\n\
bne _08021FA0\n\
- ldr r0, _08021FE0 @ =gUnknown_02024C5C\n\
+ ldr r0, _08021FE0 @ =gLastHitBy\n\
adds r0, r3, r0\n\
mov r3, r9\n\
ldrb r1, [r3]\n\
@@ -7818,7 +7818,7 @@ _08021FA0:\n\
ands r0, r1\n\
cmp r0, 0\n\
beq _0802204C\n\
- ldr r0, _08021FE4 @ =gBattleMoveFlags\n\
+ ldr r0, _08021FE4 @ =gMoveResultFlags\n\
ldrb r1, [r0]\n\
movs r0, 0x29\n\
ands r0, r1\n\
@@ -7840,8 +7840,8 @@ _08021FD0: .4byte gLastUsedMove\n\
_08021FD4: .4byte 0x0000ffff\n\
_08021FD8: .4byte gUnknown_02024C4C\n\
_08021FDC: .4byte gBankTarget\n\
-_08021FE0: .4byte gUnknown_02024C5C\n\
-_08021FE4: .4byte gBattleMoveFlags\n\
+_08021FE0: .4byte gLastHitBy\n\
+_08021FE4: .4byte gMoveResultFlags\n\
_08021FE8: .4byte gLastLandedMoves\n\
_08021FEC:\n\
ldr r0, _08022014 @ =gLastLandedMoves\n\
@@ -7900,7 +7900,7 @@ _0802205C: .4byte gLastLandedMoves\n\
_08022060: .4byte gBankTarget\n\
_08022064: .4byte 0x0000ffff\n\
_08022068:\n\
- ldr r0, _0802212C @ =gAbsentBankFlags\n\
+ ldr r0, _0802212C @ =gAbsentBattlerFlags\n\
ldrb r1, [r0]\n\
ldr r6, _08022130 @ =gBitTable\n\
ldr r2, _08022134 @ =gBankAttacker\n\
@@ -7955,7 +7955,7 @@ _080220C0:\n\
ands r1, r0\n\
cmp r1, 0\n\
bne _0802215C\n\
- ldr r0, _0802214C @ =gBattleMoveFlags\n\
+ ldr r0, _0802214C @ =gMoveResultFlags\n\
ldrb r1, [r0]\n\
movs r0, 0x29\n\
ands r0, r1\n\
@@ -8002,7 +8002,7 @@ _080220C0:\n\
strb r0, [r2]\n\
b _08022244\n\
.align 2, 0\n\
-_0802212C: .4byte gAbsentBankFlags\n\
+_0802212C: .4byte gAbsentBattlerFlags\n\
_08022130: .4byte gBitTable\n\
_08022134: .4byte gBankAttacker\n\
_08022138: .4byte 0x000160a6\n\
@@ -8010,7 +8010,7 @@ _0802213C: .4byte gBattleMoves\n\
_08022140: .4byte gChosenMove\n\
_08022144: .4byte gHitMarker\n\
_08022148: .4byte gBankTarget\n\
-_0802214C: .4byte gBattleMoveFlags\n\
+_0802214C: .4byte gMoveResultFlags\n\
_08022150: .4byte 0x000160ac\n\
_08022154: .4byte 0x000160ad\n\
_08022158: .4byte 0x00016100\n\
@@ -8105,12 +8105,12 @@ _080221C0:\n\
bne _08022244\n\
ldr r7, _080222C8 @ =gBankTarget\n\
ldrb r0, [r7]\n\
- bl GetBankIdentity\n\
+ bl GetBattlerPosition\n\
movs r1, 0x2\n\
eors r0, r1\n\
lsls r0, 24\n\
lsrs r0, 24\n\
- bl GetBankByIdentity\n\
+ bl GetBattlerAtPosition\n\
lsls r0, 24\n\
lsrs r2, r0, 24\n\
ldr r1, _080222CC @ =gBattleMons\n\
@@ -8212,7 +8212,7 @@ static void atk4A_typecalc2(void)
if (gBattleMons[gBankTarget].ability == ABILITY_LEVITATE && move_type == TYPE_GROUND)
{
gLastUsedAbility = gBattleMons[gBankTarget].ability;
- gBattleMoveFlags |= (MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED);
+ gMoveResultFlags |= (MOVE_RESULT_MISSED | MOVE_RESULT_DOESNT_AFFECT_FOE);
gLastLandedMoves[gBankTarget] = 0;
gBattleCommunication[6] = move_type;
RecordAbilityBattle(gBankTarget, gLastUsedAbility);
@@ -8234,13 +8234,13 @@ static void atk4A_typecalc2(void)
{
if (gTypeEffectiveness[i + 2] == 0)
{
- gBattleMoveFlags |= MOVESTATUS_NOTAFFECTED;
+ gMoveResultFlags |= MOVE_RESULT_DOESNT_AFFECT_FOE;
break;
}
if (gTypeEffectiveness[i + 2] == 5)
- flags |= MOVESTATUS_NOTVERYEFFECTIVE;
+ flags |= MOVE_RESULT_NOT_VERY_EFFECTIVE;
if (gTypeEffectiveness[i + 2] == 20)
- flags |= MOVESTATUS_SUPEREFFECTIVE;
+ flags |= MOVE_RESULT_SUPER_EFFECTIVE;
}
//check type2
if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type2)
@@ -8248,31 +8248,31 @@ static void atk4A_typecalc2(void)
if (gBattleMons[gBankTarget].type1 != gBattleMons[gBankTarget].type2
&& gTypeEffectiveness[i + 2] == 0)
{
- gBattleMoveFlags |= MOVESTATUS_NOTAFFECTED;
+ gMoveResultFlags |= MOVE_RESULT_DOESNT_AFFECT_FOE;
break;
}
if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type2 && gBattleMons[gBankTarget].type1 != gBattleMons[gBankTarget].type2 && gTypeEffectiveness[i + 2] == 5)
- flags |= MOVESTATUS_NOTVERYEFFECTIVE;
+ flags |= MOVE_RESULT_NOT_VERY_EFFECTIVE;
if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type2
&& gBattleMons[gBankTarget].type1 != gBattleMons[gBankTarget].type2 && gTypeEffectiveness[i + 2] == 20)
- flags |= MOVESTATUS_SUPEREFFECTIVE;
+ flags |= MOVE_RESULT_SUPER_EFFECTIVE;
}
}
i += 3;
}
}
- if (gBattleMons[gBankTarget].ability == ABILITY_WONDER_GUARD && !(flags & MOVESTATUS_NOEFFECT) && AttacksThisTurn(gBankAttacker, gCurrentMove) == 2 &&
- (!(flags & MOVESTATUS_SUPEREFFECTIVE) || ((flags & (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE)) == (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE))) &&
+ if (gBattleMons[gBankTarget].ability == ABILITY_WONDER_GUARD && !(flags & MOVE_RESULT_NO_EFFECT) && AttacksThisTurn(gBankAttacker, gCurrentMove) == 2 &&
+ (!(flags & MOVE_RESULT_SUPER_EFFECTIVE) || ((flags & (MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE)) == (MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE))) &&
gBattleMoves[gCurrentMove].power)
{
gLastUsedAbility = ABILITY_WONDER_GUARD;
- gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gMoveResultFlags |= MOVE_RESULT_MISSED;
gLastLandedMoves[gBankTarget] = 0;
gBattleCommunication[6] = 3;
RecordAbilityBattle(gBankTarget, gLastUsedAbility);
}
- if (gBattleMoveFlags & MOVESTATUS_NOTAFFECTED)
+ if (gMoveResultFlags & MOVE_RESULT_DOESNT_AFFECT_FOE)
gProtectStructs[gBankAttacker].notEffective = 1;
gBattlescriptCurrInstr++;
@@ -8280,11 +8280,11 @@ static void atk4A_typecalc2(void)
static void atk4B_returnatktoball(void)
{
- gActiveBank = gBankAttacker;
- if (!(gHitMarker & HITMARKER_FAINTED(gActiveBank)))
+ gActiveBattler = gBankAttacker;
+ if (!(gHitMarker & HITMARKER_FAINTED(gActiveBattler)))
{
EmitReturnPokeToBall(0, 0);
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
}
gBattlescriptCurrInstr++;
}
@@ -8294,12 +8294,12 @@ static void atk4C_getswitchedmondata(void)
if (gBattleExecBuffer)
return;
- gActiveBank = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1));
+ gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1));
- gBattlePartyID[gActiveBank] = ewram16068arr(gActiveBank);
+ gBattlerPartyIndexes[gActiveBattler] = ewram16068arr(gActiveBattler);
- EmitGetAttributes(0, 0, gBitTable[gBattlePartyID[gActiveBank]]);
- MarkBufferBankForExecution(gActiveBank);
+ EmitGetAttributes(0, 0, gBitTable[gBattlerPartyIndexes[gActiveBattler]]);
+ MarkBufferBankForExecution(gActiveBattler);
gBattlescriptCurrInstr += 2;
}
@@ -8312,40 +8312,40 @@ static void atk4D_switchindataupdate(void)
if (gBattleExecBuffer)
return;
- gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
- oldData = gBattleMons[gActiveBank];
- monData = (u8*)(&gBattleMons[gActiveBank]);
+ gActiveBattler = GetBattleBank(gBattlescriptCurrInstr[1]);
+ oldData = gBattleMons[gActiveBattler];
+ monData = (u8*)(&gBattleMons[gActiveBattler]);
for (i = 0; i < sizeof(struct BattlePokemon); i++)
{
- monData[i] = gBattleBufferB[gActiveBank][4 + i];
+ monData[i] = gBattleBufferB[gActiveBattler][4 + i];
}
- gBattleMons[gActiveBank].type1 = gBaseStats[gBattleMons[gActiveBank].species].type1;
- gBattleMons[gActiveBank].type2 = gBaseStats[gBattleMons[gActiveBank].species].type2;
- gBattleMons[gActiveBank].ability = GetAbilityBySpecies(gBattleMons[gActiveBank].species, gBattleMons[gActiveBank].altAbility);
+ gBattleMons[gActiveBattler].type1 = gBaseStats[gBattleMons[gActiveBattler].species].type1;
+ gBattleMons[gActiveBattler].type2 = gBaseStats[gBattleMons[gActiveBattler].species].type2;
+ gBattleMons[gActiveBattler].ability = GetAbilityBySpecies(gBattleMons[gActiveBattler].species, gBattleMons[gActiveBattler].altAbility);
// check knocked off item
- i = GetBankSide(gActiveBank);
- if (gWishFutureKnock.knockedOffPokes[i] & gBitTable[gBattlePartyID[gActiveBank]])
+ i = GetBattlerSide(gActiveBattler);
+ if (gWishFutureKnock.knockedOffPokes[i] & gBitTable[gBattlerPartyIndexes[gActiveBattler]])
{
- gBattleMons[gActiveBank].item = 0;
+ gBattleMons[gActiveBattler].item = 0;
}
if (gBattleMoves[gCurrentMove].effect == EFFECT_BATON_PASS)
{
for (i = 0; i < 8; i++)
{
- gBattleMons[gActiveBank].statStages[i] = oldData.statStages[i];
+ gBattleMons[gActiveBattler].statStages[i] = oldData.statStages[i];
}
- gBattleMons[gActiveBank].status2 = oldData.status2;
+ gBattleMons[gActiveBattler].status2 = oldData.status2;
}
SwitchInClearSetData();
- gBattleStruct->scriptingActive = gActiveBank;
+ gBattleStruct->scriptingActive = gActiveBattler;
- PREPARE_MON_NICK_BUFFER(gBattleTextBuff1, gActiveBank, gBattlePartyID[gActiveBank]);
+ PREPARE_MON_NICK_BUFFER(gBattleTextBuff1, gActiveBattler, gBattlerPartyIndexes[gActiveBattler]);
gBattlescriptCurrInstr += 2;
}
@@ -8355,14 +8355,14 @@ static void atk4E_switchinanim(void)
if (gBattleExecBuffer)
return;
- gActiveBank = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1));
- if (GetBankSide(gActiveBank) == 1 && !(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER)))
+ gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1));
+ if (GetBattlerSide(gActiveBattler) == 1 && !(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER)))
{
- GetSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBank].species), 2);
+ GetSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBattler].species), 2);
}
- gAbsentBankFlags &= ~(gBitTable[gActiveBank]);
- EmitSendOutPoke(0, gBattlePartyID[gActiveBank], T2_READ_8(gBattlescriptCurrInstr + 2));
- MarkBufferBankForExecution(gActiveBank);
+ gAbsentBattlerFlags &= ~(gBitTable[gActiveBattler]);
+ EmitSendOutPoke(0, gBattlerPartyIndexes[gActiveBattler], T2_READ_8(gBattlescriptCurrInstr + 2));
+ MarkBufferBankForExecution(gActiveBattler);
gBattlescriptCurrInstr += 3;
}
@@ -8372,29 +8372,29 @@ static void atk4F_jumpifcantswitch(void)
register struct Pokemon *party;
u8 r7;
//0x80 byte is used as a way of telling the function whether to not check status2/status3
- gActiveBank = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1) & 0x7F);
+ gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1) & 0x7F);
if (!(T2_READ_8(gBattlescriptCurrInstr + 1) & 0x80)
- && ((gBattleMons[gActiveBank].status2 & (STATUS2_WRAPPED | STATUS2_ESCAPE_PREVENTION))
- || (gStatuses3[gActiveBank] & STATUS3_ROOTED)))
+ && ((gBattleMons[gActiveBattler].status2 & (STATUS2_WRAPPED | STATUS2_ESCAPE_PREVENTION))
+ || (gStatuses3[gActiveBattler] & STATUS3_ROOTED)))
{
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 2);
return;
}
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
{
- if (GetBankSide(gActiveBank) == 1)
+ if (GetBattlerSide(gActiveBattler) == 1)
party = gEnemyParty;
else
party = gPlayerParty;
val = 0;
- if (sub_803FBFC(sub_803FC34(gActiveBank)) == 1)
+ if (sub_803FBFC(sub_803FC34(gActiveBattler)) == 1)
val = 3;
for (to_cmp = val + 3; val < to_cmp; val++)
{
if (GetMonData(&party[val], MON_DATA_SPECIES) != SPECIES_NONE
&& !GetMonData(&party[val], MON_DATA_IS_EGG)
&& GetMonData(&party[val], MON_DATA_HP) != 0
- && gBattlePartyID[gActiveBank] != val)
+ && gBattlerPartyIndexes[gActiveBattler] != val)
break;
}
if (val == to_cmp)
@@ -8404,20 +8404,20 @@ static void atk4F_jumpifcantswitch(void)
}
else
{
- if (GetBankSide(gActiveBank) == 1)
+ if (GetBattlerSide(gActiveBattler) == 1)
{
- r7 = GetBankByIdentity(1);
+ r7 = GetBattlerAtPosition(1);
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
- to_cmp = GetBankByIdentity(3);
+ to_cmp = GetBattlerAtPosition(3);
else
to_cmp = r7;
party = gEnemyParty;
}
else
{
- r7 = GetBankByIdentity(0);
+ r7 = GetBattlerAtPosition(0);
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
- to_cmp = GetBankByIdentity(2);
+ to_cmp = GetBattlerAtPosition(2);
else
to_cmp = r7;
party = gPlayerParty;
@@ -8427,7 +8427,7 @@ static void atk4F_jumpifcantswitch(void)
if (GetMonData(&party[val], MON_DATA_HP) != 0
&& GetMonData(&party[val], MON_DATA_SPECIES) != SPECIES_NONE
&& !GetMonData(&party[val], MON_DATA_IS_EGG)
- && val != gBattlePartyID[r7] && val != gBattlePartyID[to_cmp])
+ && val != gBattlerPartyIndexes[r7] && val != gBattlerPartyIndexes[to_cmp])
break;
}
if (val == 6)
@@ -8439,9 +8439,9 @@ static void atk4F_jumpifcantswitch(void)
void sub_8022A3C(u8 unkown)
{
- BATTLE_PARTY_ID(gActiveBank) = gBattlePartyID[gActiveBank];
- EmitChoosePokemon(0, 1, unkown, 0, gBattleStruct->unk1606C[gActiveBank]);
- MarkBufferBankForExecution(gActiveBank);
+ BATTLE_PARTY_ID(gActiveBattler) = gBattlerPartyIndexes[gActiveBattler];
+ EmitChoosePokemon(0, 1, unkown, 0, gBattleStruct->unk1606C[gActiveBattler]);
+ MarkBufferBankForExecution(gActiveBattler);
}
/*
@@ -8455,25 +8455,25 @@ static void atk50_openpartyscreen(void)
{
if ((gBattleTypeFlags & (BATTLE_TYPE_DOUBLE | BATTLE_TYPE_MULTI)) != BATTLE_TYPE_DOUBLE)
{
- for (gActiveBank = i; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ for (gActiveBattler = i; gActiveBattler < gBattlersCount; gActiveBattler++)
{
- if (!(gHitMarker & HITMARKER_FAINTED(gActiveBank)))
+ if (!(gHitMarker & HITMARKER_FAINTED(gActiveBattler)))
{
EmitLinkStandbyMsg(0, 2);
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
}
- else if (sub_8018018(gActiveBank, 6, 6) == 0
- && !gSpecialStatuses[gActiveBank].flag40)
+ else if (sub_8018018(gActiveBattler, 6, 6) == 0
+ && !gSpecialStatuses[gActiveBattler].flag40)
{
sub_8022A3C(6);
- gSpecialStatuses[gActiveBank].flag40 = 1;
+ gSpecialStatuses[gActiveBattler].flag40 = 1;
}
else
{
- gAbsentBankFlags |= gBitTable[gActiveBank];
- gHitMarker &= (~HITMARKER_FAINTED(gActiveBank));
+ gAbsentBattlerFlags |= gBitTable[gActiveBattler];
+ gHitMarker &= (~HITMARKER_FAINTED(gActiveBattler));
EmitLinkStandbyMsg(0, 2);
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
}
}
}
@@ -8483,8 +8483,8 @@ static void atk50_openpartyscreen(void)
{
}
- else if (sub_8018018(gActiveBank, 6, 6) == 0
- && !gSpecialStatuses[gActiveBank].flag40)
+ else if (sub_8018018(gActiveBattler, 6, 6) == 0
+ && !gSpecialStatuses[gActiveBattler].flag40)
{
}
@@ -8497,7 +8497,7 @@ static void atk50_openpartyscreen(void)
}
*/
-__attribute__((naked))
+NAKED
static void atk50_openpartyscreen(void)
{
asm(".syntax unified\n\
@@ -8535,9 +8535,9 @@ _08022ACE:\n\
ands r1, r0\n\
cmp r1, 0x1\n\
beq _08022BBC\n\
- ldr r1, _08022B4C @ =gActiveBank\n\
+ ldr r1, _08022B4C @ =gActiveBattler\n\
strb r7, [r1]\n\
- ldr r0, _08022B50 @ =gNoOfAllBanks\n\
+ ldr r0, _08022B50 @ =gBattlersCount\n\
ldrb r0, [r0]\n\
cmp r7, r0\n\
bcc _08022AE8\n\
@@ -8546,7 +8546,7 @@ _08022AE8:\n\
ldr r7, _08022B54 @ =gHitMarker\n\
ldr r6, _08022B58 @ =gBitTable\n\
adds r4, r1, 0\n\
- ldr r0, _08022B5C @ =gAbsentBankFlags\n\
+ ldr r0, _08022B5C @ =gAbsentBattlerFlags\n\
mov r8, r0\n\
_08022AF2:\n\
ldrb r2, [r4]\n\
@@ -8590,11 +8590,11 @@ _08022AF2:\n\
.align 2, 0\n\
_08022B44: .4byte gBattlescriptCurrInstr\n\
_08022B48: .4byte gBattleTypeFlags\n\
-_08022B4C: .4byte gActiveBank\n\
-_08022B50: .4byte gNoOfAllBanks\n\
+_08022B4C: .4byte gActiveBattler\n\
+_08022B50: .4byte gBattlersCount\n\
_08022B54: .4byte gHitMarker\n\
_08022B58: .4byte gBitTable\n\
-_08022B5C: .4byte gAbsentBankFlags\n\
+_08022B5C: .4byte gAbsentBattlerFlags\n\
_08022B60:\n\
ldr r5, _08022B90 @ =gSpecialStatuses\n\
ldrb r0, [r4]\n\
@@ -8630,7 +8630,7 @@ _08022BA2:\n\
ldrb r0, [r4]\n\
adds r0, 0x1\n\
strb r0, [r4]\n\
- ldr r1, _08022BB8 @ =gNoOfAllBanks\n\
+ ldr r1, _08022BB8 @ =gBattlersCount\n\
lsls r0, 24\n\
lsrs r0, 24\n\
ldrb r1, [r1]\n\
@@ -8638,7 +8638,7 @@ _08022BA2:\n\
bcc _08022AF2\n\
b _08022F62\n\
.align 2, 0\n\
-_08022BB8: .4byte gNoOfAllBanks\n\
+_08022BB8: .4byte gBattlersCount\n\
_08022BBC:\n\
ands r1, r0\n\
cmp r1, 0\n\
@@ -8654,7 +8654,7 @@ _08022BC4:\n\
ands r0, r5\n\
cmp r0, 0\n\
beq _08022C7E\n\
- ldr r4, _08022C24 @ =gActiveBank\n\
+ ldr r4, _08022C24 @ =gActiveBattler\n\
strb r7, [r4]\n\
movs r0, 0\n\
movs r1, 0x6\n\
@@ -8663,7 +8663,7 @@ _08022BC4:\n\
lsls r0, 24\n\
cmp r0, 0\n\
beq _08022C2C\n\
- ldr r2, _08022C28 @ =gAbsentBankFlags\n\
+ ldr r2, _08022C28 @ =gAbsentBattlerFlags\n\
ldrb r0, [r4]\n\
lsls r0, 2\n\
adds r0, r6\n\
@@ -8688,8 +8688,8 @@ _08022BC4:\n\
.align 2, 0\n\
_08022C1C: .4byte gHitMarker\n\
_08022C20: .4byte gBitTable\n\
-_08022C24: .4byte gActiveBank\n\
-_08022C28: .4byte gAbsentBankFlags\n\
+_08022C24: .4byte gActiveBattler\n\
+_08022C28: .4byte gAbsentBattlerFlags\n\
_08022C2C:\n\
ldr r6, _08022C60 @ =gSpecialStatuses\n\
ldrb r0, [r4]\n\
@@ -8738,7 +8738,7 @@ _08022C7E:\n\
ands r0, r5\n\
cmp r0, 0\n\
bne _08022D40\n\
- ldr r4, _08022CDC @ =gActiveBank\n\
+ ldr r4, _08022CDC @ =gActiveBattler\n\
movs r0, 0x2\n\
strb r0, [r4]\n\
movs r0, 0x2\n\
@@ -8748,7 +8748,7 @@ _08022C7E:\n\
lsls r0, 24\n\
cmp r0, 0\n\
beq _08022CE8\n\
- ldr r2, _08022CE0 @ =gAbsentBankFlags\n\
+ ldr r2, _08022CE0 @ =gAbsentBattlerFlags\n\
ldrb r0, [r4]\n\
lsls r0, 2\n\
adds r0, r6\n\
@@ -8772,8 +8772,8 @@ _08022C7E:\n\
b _08022D40\n\
.align 2, 0\n\
_08022CD8: .4byte gBitTable\n\
-_08022CDC: .4byte gActiveBank\n\
-_08022CE0: .4byte gAbsentBankFlags\n\
+_08022CDC: .4byte gActiveBattler\n\
+_08022CE0: .4byte gAbsentBattlerFlags\n\
_08022CE4: .4byte gHitMarker\n\
_08022CE8:\n\
ldr r6, _08022D1C @ =gSpecialStatuses\n\
@@ -8822,7 +8822,7 @@ _08022D40:\n\
ands r0, r5\n\
cmp r0, 0\n\
beq _08022DF6\n\
- ldr r4, _08022D94 @ =gActiveBank\n\
+ ldr r4, _08022D94 @ =gActiveBattler\n\
movs r0, 0x1\n\
strb r0, [r4]\n\
movs r0, 0x1\n\
@@ -8832,7 +8832,7 @@ _08022D40:\n\
lsls r0, 24\n\
cmp r0, 0\n\
beq _08022DA0\n\
- ldr r2, _08022D98 @ =gAbsentBankFlags\n\
+ ldr r2, _08022D98 @ =gAbsentBattlerFlags\n\
ldrb r0, [r4]\n\
lsls r0, 2\n\
adds r0, r6\n\
@@ -8856,8 +8856,8 @@ _08022D40:\n\
b _08022DF6\n\
.align 2, 0\n\
_08022D90: .4byte gBitTable\n\
-_08022D94: .4byte gActiveBank\n\
-_08022D98: .4byte gAbsentBankFlags\n\
+_08022D94: .4byte gActiveBattler\n\
+_08022D98: .4byte gAbsentBattlerFlags\n\
_08022D9C: .4byte gHitMarker\n\
_08022DA0:\n\
ldr r6, _08022DD4 @ =gSpecialStatuses\n\
@@ -8909,7 +8909,7 @@ _08022DF6:\n\
ands r0, r5\n\
cmp r0, 0\n\
bne _08022EB8\n\
- ldr r4, _08022E54 @ =gActiveBank\n\
+ ldr r4, _08022E54 @ =gActiveBattler\n\
movs r0, 0x3\n\
strb r0, [r4]\n\
movs r0, 0x3\n\
@@ -8919,7 +8919,7 @@ _08022DF6:\n\
lsls r0, 24\n\
cmp r0, 0\n\
beq _08022E60\n\
- ldr r2, _08022E58 @ =gAbsentBankFlags\n\
+ ldr r2, _08022E58 @ =gAbsentBattlerFlags\n\
ldrb r0, [r4]\n\
lsls r0, 2\n\
adds r0, r6\n\
@@ -8943,8 +8943,8 @@ _08022DF6:\n\
b _08022EB8\n\
.align 2, 0\n\
_08022E50: .4byte gBitTable\n\
-_08022E54: .4byte gActiveBank\n\
-_08022E58: .4byte gAbsentBankFlags\n\
+_08022E54: .4byte gActiveBattler\n\
+_08022E58: .4byte gAbsentBattlerFlags\n\
_08022E5C: .4byte gHitMarker\n\
_08022E60:\n\
ldr r6, _08022E94 @ =gSpecialStatuses\n\
@@ -9001,30 +9001,30 @@ _08022EB8:\n\
blt _08022F0C\n\
cmp r5, 0\n\
beq _08022F0C\n\
- ldr r0, _08022EEC @ =gAbsentBankFlags\n\
+ ldr r0, _08022EEC @ =gAbsentBattlerFlags\n\
ldrb r1, [r0]\n\
ldr r0, _08022EF0 @ =gBitTable\n\
ldr r0, [r0]\n\
ands r1, r0\n\
cmp r1, 0\n\
beq _08022EF8\n\
- ldr r1, _08022EF4 @ =gActiveBank\n\
+ ldr r1, _08022EF4 @ =gActiveBattler\n\
movs r0, 0x2\n\
strb r0, [r1]\n\
b _08022EFC\n\
.align 2, 0\n\
_08022EE8: .4byte gSpecialStatuses\n\
-_08022EEC: .4byte gAbsentBankFlags\n\
+_08022EEC: .4byte gAbsentBattlerFlags\n\
_08022EF0: .4byte gBitTable\n\
-_08022EF4: .4byte gActiveBank\n\
+_08022EF4: .4byte gActiveBattler\n\
_08022EF8:\n\
- ldr r0, _08022F3C @ =gActiveBank\n\
+ ldr r0, _08022F3C @ =gActiveBattler\n\
strb r1, [r0]\n\
_08022EFC:\n\
movs r0, 0\n\
movs r1, 0x2\n\
bl EmitLinkStandbyMsg\n\
- ldr r0, _08022F3C @ =gActiveBank\n\
+ ldr r0, _08022F3C @ =gActiveBattler\n\
ldrb r0, [r0]\n\
bl MarkBufferBankForExecution\n\
_08022F0C:\n\
@@ -9041,30 +9041,30 @@ _08022F0C:\n\
blt _08022F62\n\
cmp r5, 0\n\
beq _08022F62\n\
- ldr r0, _08022F44 @ =gAbsentBankFlags\n\
+ ldr r0, _08022F44 @ =gAbsentBattlerFlags\n\
ldrb r0, [r0]\n\
ldr r1, _08022F48 @ =gBitTable\n\
ldr r1, [r1, 0x4]\n\
ands r0, r1\n\
cmp r0, 0\n\
beq _08022F4C\n\
- ldr r1, _08022F3C @ =gActiveBank\n\
+ ldr r1, _08022F3C @ =gActiveBattler\n\
movs r0, 0x3\n\
b _08022F50\n\
.align 2, 0\n\
-_08022F3C: .4byte gActiveBank\n\
+_08022F3C: .4byte gActiveBattler\n\
_08022F40: .4byte gSpecialStatuses\n\
-_08022F44: .4byte gAbsentBankFlags\n\
+_08022F44: .4byte gAbsentBattlerFlags\n\
_08022F48: .4byte gBitTable\n\
_08022F4C:\n\
- ldr r1, _08022F6C @ =gActiveBank\n\
+ ldr r1, _08022F6C @ =gActiveBattler\n\
movs r0, 0x1\n\
_08022F50:\n\
strb r0, [r1]\n\
movs r0, 0\n\
movs r1, 0x2\n\
bl EmitLinkStandbyMsg\n\
- ldr r0, _08022F6C @ =gActiveBank\n\
+ ldr r0, _08022F6C @ =gActiveBattler\n\
ldrb r0, [r0]\n\
bl MarkBufferBankForExecution\n\
_08022F62:\n\
@@ -9074,7 +9074,7 @@ _08022F62:\n\
str r0, [r1]\n\
b _08023302\n\
.align 2, 0\n\
-_08022F6C: .4byte gActiveBank\n\
+_08022F6C: .4byte gActiveBattler\n\
_08022F70: .4byte gBattlescriptCurrInstr\n\
_08022F74:\n\
cmp r0, 0x6\n\
@@ -9107,7 +9107,7 @@ _08022F92:\n\
ands r0, r5\n\
cmp r0, 0\n\
beq _0802303A\n\
- ldr r6, _08022FFC @ =gActiveBank\n\
+ ldr r6, _08022FFC @ =gActiveBattler\n\
movs r0, 0x2\n\
strb r0, [r6]\n\
ldr r0, _08023000 @ =gBattleBufferB\n\
@@ -9118,7 +9118,7 @@ _08022F92:\n\
lsls r0, 24\n\
cmp r0, 0\n\
beq _08023008\n\
- ldr r2, _08023004 @ =gAbsentBankFlags\n\
+ ldr r2, _08023004 @ =gAbsentBattlerFlags\n\
ldrb r0, [r6]\n\
lsls r0, 2\n\
adds r0, r4\n\
@@ -9143,9 +9143,9 @@ _08022F92:\n\
_08022FF0: .4byte gBattleTypeFlags\n\
_08022FF4: .4byte gHitMarker\n\
_08022FF8: .4byte gBitTable\n\
-_08022FFC: .4byte gActiveBank\n\
+_08022FFC: .4byte gActiveBattler\n\
_08023000: .4byte gBattleBufferB\n\
-_08023004: .4byte gAbsentBankFlags\n\
+_08023004: .4byte gAbsentBattlerFlags\n\
_08023008:\n\
ldr r4, _08023098 @ =gSpecialStatuses\n\
ldrb r0, [r6]\n\
@@ -9181,7 +9181,7 @@ _0802303A:\n\
ands r5, r0\n\
cmp r5, 0\n\
beq _080230EE\n\
- ldr r5, _080230A8 @ =gActiveBank\n\
+ ldr r5, _080230A8 @ =gActiveBattler\n\
movs r0, 0x3\n\
strb r0, [r5]\n\
ldr r0, _080230AC @ =gBattleBufferB\n\
@@ -9194,7 +9194,7 @@ _0802303A:\n\
lsls r0, 24\n\
cmp r0, 0\n\
beq _080230BC\n\
- ldr r2, _080230B4 @ =gAbsentBankFlags\n\
+ ldr r2, _080230B4 @ =gAbsentBattlerFlags\n\
ldrb r0, [r5]\n\
lsls r0, 2\n\
adds r0, r4\n\
@@ -9221,10 +9221,10 @@ _08023098: .4byte gSpecialStatuses\n\
_0802309C: .4byte gSharedMem\n\
_080230A0: .4byte 0x00016068\n\
_080230A4: .4byte gBitTable\n\
-_080230A8: .4byte gActiveBank\n\
+_080230A8: .4byte gActiveBattler\n\
_080230AC: .4byte gBattleBufferB\n\
_080230B0: .4byte 0x00000201\n\
-_080230B4: .4byte gAbsentBankFlags\n\
+_080230B4: .4byte gAbsentBattlerFlags\n\
_080230B8: .4byte gHitMarker\n\
_080230BC:\n\
ldr r4, _080230FC @ =gSpecialStatuses\n\
@@ -9276,7 +9276,7 @@ _08023110:\n\
ldr r4, _08023168 @ =gBitTable\n\
ldr r2, [r4]\n\
ands r2, r5\n\
- ldr r6, _0802316C @ =gNoOfAllBanks\n\
+ ldr r6, _0802316C @ =gBattlersCount\n\
cmp r2, 0\n\
bne _0802314C\n\
adds r7, r6, 0\n\
@@ -9313,7 +9313,7 @@ _08023156:\n\
_08023160: .4byte gHitMarker\n\
_08023164: .4byte gBank1\n\
_08023168: .4byte gBitTable\n\
-_0802316C: .4byte gNoOfAllBanks\n\
+_0802316C: .4byte gBattlersCount\n\
_08023170:\n\
movs r0, 0x80\n\
ands r0, r2\n\
@@ -9350,9 +9350,9 @@ _080231A8:\n\
lsls r0, 24\n\
cmp r0, 0\n\
beq _080231F8\n\
- ldr r2, _080231E8 @ =gActiveBank\n\
+ ldr r2, _080231E8 @ =gActiveBattler\n\
strb r7, [r2]\n\
- ldr r3, _080231EC @ =gAbsentBankFlags\n\
+ ldr r3, _080231EC @ =gAbsentBattlerFlags\n\
ldr r4, _080231F0 @ =gBitTable\n\
ldrb r0, [r2]\n\
lsls r0, 2\n\
@@ -9374,19 +9374,19 @@ _080231A8:\n\
str r0, [r6]\n\
b _08023302\n\
.align 2, 0\n\
-_080231E8: .4byte gActiveBank\n\
-_080231EC: .4byte gAbsentBankFlags\n\
+_080231E8: .4byte gActiveBattler\n\
+_080231EC: .4byte gAbsentBattlerFlags\n\
_080231F0: .4byte gBitTable\n\
_080231F4: .4byte gHitMarker\n\
_080231F8:\n\
- ldr r4, _080232A0 @ =gActiveBank\n\
+ ldr r4, _080232A0 @ =gActiveBattler\n\
strb r7, [r4]\n\
ldr r3, _080232A4 @ =gSharedMem\n\
ldrb r0, [r4]\n\
ldr r2, _080232A8 @ =0x00016064\n\
adds r1, r0, r2\n\
adds r1, r3\n\
- ldr r2, _080232AC @ =gBattlePartyID\n\
+ ldr r2, _080232AC @ =gBattlerPartyIndexes\n\
lsls r0, 1\n\
adds r0, r2\n\
ldrh r0, [r0]\n\
@@ -9415,7 +9415,7 @@ _080231F8:\n\
adds r0, 0x6\n\
str r0, [r6]\n\
ldrb r0, [r4]\n\
- bl GetBankIdentity\n\
+ bl GetBattlerPosition\n\
lsls r0, 24\n\
cmp r0, 0\n\
bne _0802325A\n\
@@ -9432,10 +9432,10 @@ _0802325A:\n\
ands r0, r1\n\
cmp r0, 0\n\
beq _080232C4\n\
- ldr r1, _080232A0 @ =gActiveBank\n\
+ ldr r1, _080232A0 @ =gActiveBattler\n\
movs r0, 0\n\
strb r0, [r1]\n\
- ldr r0, _080232C0 @ =gNoOfAllBanks\n\
+ ldr r0, _080232C0 @ =gBattlersCount\n\
ldrb r0, [r0]\n\
cmp r0, 0\n\
beq _08023302\n\
@@ -9453,7 +9453,7 @@ _0802328A:\n\
ldrb r0, [r4]\n\
adds r0, 0x1\n\
strb r0, [r4]\n\
- ldr r1, _080232C0 @ =gNoOfAllBanks\n\
+ ldr r1, _080232C0 @ =gBattlersCount\n\
lsls r0, 24\n\
lsrs r0, 24\n\
ldrb r1, [r1]\n\
@@ -9461,26 +9461,26 @@ _0802328A:\n\
bcc _08023276\n\
b _08023302\n\
.align 2, 0\n\
-_080232A0: .4byte gActiveBank\n\
+_080232A0: .4byte gActiveBattler\n\
_080232A4: .4byte gSharedMem\n\
_080232A8: .4byte 0x00016064\n\
-_080232AC: .4byte gBattlePartyID\n\
+_080232AC: .4byte gBattlerPartyIndexes\n\
_080232B0: .4byte 0x00016068\n\
_080232B4: .4byte 0x0001606c\n\
_080232B8: .4byte gBattleResults\n\
_080232BC: .4byte gBattleTypeFlags\n\
-_080232C0: .4byte gNoOfAllBanks\n\
+_080232C0: .4byte gBattlersCount\n\
_080232C4:\n\
adds r0, r7, 0\n\
- bl GetBankIdentity\n\
+ bl GetBattlerPosition\n\
movs r1, 0x1\n\
eors r0, r1\n\
lsls r0, 24\n\
lsrs r0, 24\n\
- bl GetBankByIdentity\n\
- ldr r4, _08023310 @ =gActiveBank\n\
+ bl GetBattlerAtPosition\n\
+ ldr r4, _08023310 @ =gActiveBattler\n\
strb r0, [r4]\n\
- ldr r0, _08023314 @ =gAbsentBankFlags\n\
+ ldr r0, _08023314 @ =gAbsentBattlerFlags\n\
ldrb r1, [r0]\n\
ldr r2, _08023318 @ =gBitTable\n\
ldrb r3, [r4]\n\
@@ -9508,8 +9508,8 @@ _08023302:\n\
pop {r0}\n\
bx r0\n\
.align 2, 0\n\
-_08023310: .4byte gActiveBank\n\
-_08023314: .4byte gAbsentBankFlags\n\
+_08023310: .4byte gActiveBattler\n\
+_08023314: .4byte gAbsentBattlerFlags\n\
_08023318: .4byte gBitTable\n\
.syntax divided");
}
@@ -9520,11 +9520,11 @@ static void atk51_switchhandleorder(void)
if (gBattleExecBuffer)
return;
- gActiveBank = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1));
+ gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1));
switch (T2_READ_8(gBattlescriptCurrInstr + 2))
{
case 0:
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
if (gBattleBufferB[i][0] == 0x22)
ewram16068arr(i) = gBattleBufferB[i][1];
@@ -9532,22 +9532,22 @@ static void atk51_switchhandleorder(void)
break;
case 1:
if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI))
- sub_8012258(gActiveBank);
+ sub_8012258(gActiveBattler);
break;
case 2:
- gBattleCommunication[0] = gBattleBufferB[gActiveBank][1];
- ewram16068arr(gActiveBank) = gBattleBufferB[gActiveBank][1];
+ gBattleCommunication[0] = gBattleBufferB[gActiveBattler][1];
+ ewram16068arr(gActiveBattler) = gBattleBufferB[gActiveBattler][1];
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
{
- ewram1606Carr(0, gActiveBank) &= 0xF;
- ewram1606Carr(0, gActiveBank) |= (gBattleBufferB[gActiveBank][2] & 0xF0);
- ewram1606Carr(1, gActiveBank) = gBattleBufferB[gActiveBank][3];
- ewram1606Carr(0, (gActiveBank ^ 2)) &= (0xF0);
- ewram1606Carr(0, (gActiveBank ^ 2)) |= (gBattleBufferB[gActiveBank][2] & 0xF0) >> 4;
- ewram1606Carr(2, (gActiveBank ^ 2)) = gBattleBufferB[gActiveBank][3];
+ ewram1606Carr(0, gActiveBattler) &= 0xF;
+ ewram1606Carr(0, gActiveBattler) |= (gBattleBufferB[gActiveBattler][2] & 0xF0);
+ ewram1606Carr(1, gActiveBattler) = gBattleBufferB[gActiveBattler][3];
+ ewram1606Carr(0, (gActiveBattler ^ 2)) &= (0xF0);
+ ewram1606Carr(0, (gActiveBattler ^ 2)) |= (gBattleBufferB[gActiveBattler][2] & 0xF0) >> 4;
+ ewram1606Carr(2, (gActiveBattler ^ 2)) = gBattleBufferB[gActiveBattler][3];
}
else
- sub_8012258(gActiveBank);
+ sub_8012258(gActiveBattler);
gBattleTextBuff1[0] = 0xFD;
gBattleTextBuff1[1] = 6;
@@ -9557,8 +9557,8 @@ static void atk51_switchhandleorder(void)
gBattleTextBuff2[0] = 0xFD;
gBattleTextBuff2[1] = 7;
- gBattleTextBuff2[2] = gActiveBank;
- gBattleTextBuff2[3] = gBattleBufferB[gActiveBank][1];
+ gBattleTextBuff2[2] = gActiveBattler;
+ gBattleTextBuff2[3] = gBattleBufferB[gActiveBattler][1];
gBattleTextBuff2[4] = 0xFF;
break;
}
@@ -9569,24 +9569,24 @@ static void atk52_switchineffects(void)
{
int i;
- gActiveBank = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1));
- sub_80157C4(gActiveBank);
- gHitMarker &= ~(HITMARKER_FAINTED(gActiveBank));
- gSpecialStatuses[gActiveBank].flag40 = 0;
+ gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1));
+ sub_80157C4(gActiveBattler);
+ gHitMarker &= ~(HITMARKER_FAINTED(gActiveBattler));
+ gSpecialStatuses[gActiveBattler].flag40 = 0;
- if (!(gSideAffecting[GetBankSide(gActiveBank)] & SIDE_STATUS_SPIKES_DAMAGED) && (gSideAffecting[GetBankSide(gActiveBank)] & SIDE_STATUS_SPIKES)
- && gBattleMons[gActiveBank].type1 != TYPE_FLYING && gBattleMons[gActiveBank].type2 != TYPE_FLYING && gBattleMons[gActiveBank].ability != ABILITY_LEVITATE)
+ if (!(gSideAffecting[GetBattlerSide(gActiveBattler)] & SIDE_STATUS_SPIKES_DAMAGED) && (gSideAffecting[GetBattlerSide(gActiveBattler)] & SIDE_STATUS_SPIKES)
+ && gBattleMons[gActiveBattler].type1 != TYPE_FLYING && gBattleMons[gActiveBattler].type2 != TYPE_FLYING && gBattleMons[gActiveBattler].ability != ABILITY_LEVITATE)
{
u8 spikesDmg;
- gSideAffecting[GetBankSide(gActiveBank)] |= SIDE_STATUS_SPIKES_DAMAGED;
+ gSideAffecting[GetBattlerSide(gActiveBattler)] |= SIDE_STATUS_SPIKES_DAMAGED;
- spikesDmg = (5 - gSideTimers[GetBankSide(gActiveBank)].spikesAmount) * 2;
- gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / (spikesDmg);
+ spikesDmg = (5 - gSideTimers[GetBattlerSide(gActiveBattler)].spikesAmount) * 2;
+ gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / (spikesDmg);
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
- gBattleStruct->scriptingActive = gActiveBank;
+ gBattleStruct->scriptingActive = gActiveBattler;
BattleScriptPushCursor();
if (T2_READ_8(gBattlescriptCurrInstr + 1) == 0)
@@ -9598,24 +9598,24 @@ static void atk52_switchineffects(void)
}
else
{
- if (gBattleMons[gActiveBank].ability == ABILITY_TRUANT)
+ if (gBattleMons[gActiveBattler].ability == ABILITY_TRUANT)
{
- gDisableStructs[gActiveBank].truantCounter = 1;
+ gDisableStructs[gActiveBattler].truantCounter = 1;
}
- if (AbilityBattleEffects(0, gActiveBank, 0, 0, 0) == 0 && ItemBattleEffects(0, gActiveBank, 0) == 0)
+ if (AbilityBattleEffects(0, gActiveBattler, 0, 0, 0) == 0 && ItemBattleEffects(0, gActiveBattler, 0) == 0)
{
- gSideAffecting[GetBankSide(gActiveBank)] &= ~(SIDE_STATUS_SPIKES_DAMAGED);
+ gSideAffecting[GetBattlerSide(gActiveBattler)] &= ~(SIDE_STATUS_SPIKES_DAMAGED);
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
- if (gBanksByTurnOrder[i] == gActiveBank)
+ if (gBanksByTurnOrder[i] == gActiveBattler)
gActionsByTurnOrder[i] = 0xC;
}
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
- *(HP_ON_SWITCHOUT + GetBankSide(i)) = gBattleMons[i].hp;
+ *(HP_ON_SWITCHOUT + GetBattlerSide(i)) = gBattleMons[i].hp;
}
if (T2_READ_8(gBattlescriptCurrInstr + 1) == 5)
@@ -9624,9 +9624,9 @@ static void atk52_switchineffects(void)
gBank1++;
while (1)
{
- if (hitmark & gBitTable[gBank1] && !(gAbsentBankFlags & gBitTable[gBank1]))
+ if (hitmark & gBitTable[gBank1] && !(gAbsentBattlerFlags & gBitTable[gBank1]))
break;
- if (gBank1 >= gNoOfAllBanks)
+ if (gBank1 >= gBattlersCount)
break;
gBank1++;
}
@@ -9639,52 +9639,52 @@ static void atk52_switchineffects(void)
static void atk53_trainerslidein(void)
{
if (!T2_READ_8(gBattlescriptCurrInstr + 1))
- gActiveBank = GetBankByIdentity(0);
+ gActiveBattler = GetBattlerAtPosition(0);
else
- gActiveBank = GetBankByIdentity(1);
+ gActiveBattler = GetBattlerAtPosition(1);
EmitTrainerSlide(0);
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
gBattlescriptCurrInstr += 2;
}
static void atk54_playse(void)
{
- gActiveBank = gBankAttacker;
+ gActiveBattler = gBankAttacker;
EmitEffectivenessSound(0, T2_READ_16(gBattlescriptCurrInstr + 1));
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
gBattlescriptCurrInstr += 3;
}
static void atk55_fanfare(void)
{
- gActiveBank = gBankAttacker;
+ gActiveBattler = gBankAttacker;
Emitcmd44(0, T2_READ_16(gBattlescriptCurrInstr + 1));
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
gBattlescriptCurrInstr += 3;
}
static void atk56_playfaintcry(void)
{
- gActiveBank = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1));
+ gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1));
EmitFaintingCry(0);
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
gBattlescriptCurrInstr += 2;
}
static void atk57(void)
{
- gActiveBank = GetBankByIdentity(0);
+ gActiveBattler = GetBattlerAtPosition(0);
Emitcmd55(0, gBattleOutcome);
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
gBattlescriptCurrInstr += 1;
}
static void atk58_returntoball(void)
{
- gActiveBank = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1));
+ gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1));
EmitReturnPokeToBall(0, 1);
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
gBattlescriptCurrInstr += 2;
}
@@ -9707,14 +9707,14 @@ void atk59_handlelearnnewmove(void)
}
else
{
- gActiveBank = GetBankByIdentity(0);
- if (gBattlePartyID[gActiveBank] == gBattleStruct->expGetterID && !(gBattleMons[gActiveBank].status2 & STATUS2_TRANSFORMED))
- GiveMoveToBattleMon(&gBattleMons[gActiveBank], ret);
+ gActiveBattler = GetBattlerAtPosition(0);
+ if (gBattlerPartyIndexes[gActiveBattler] == gBattleStruct->expGetterID && !(gBattleMons[gActiveBattler].status2 & STATUS2_TRANSFORMED))
+ GiveMoveToBattleMon(&gBattleMons[gActiveBattler], ret);
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) //what is else if
{
- gActiveBank = GetBankByIdentity(2);
- if (gBattlePartyID[gActiveBank] == gBattleStruct->expGetterID && !(gBattleMons[gActiveBank].status2 & STATUS2_TRANSFORMED))
- GiveMoveToBattleMon(&gBattleMons[gActiveBank], ret);
+ gActiveBattler = GetBattlerAtPosition(2);
+ if (gBattlerPartyIndexes[gActiveBattler] == gBattleStruct->expGetterID && !(gBattleMons[gActiveBattler].status2 & STATUS2_TRANSFORMED))
+ GiveMoveToBattleMon(&gBattleMons[gActiveBattler], ret);
}
gBattlescriptCurrInstr = loc1;
}
@@ -9736,7 +9736,7 @@ void sub_8023AD8(void)
static void atk5A_yesnoboxlearnmove(void)
{
- gActiveBank = 0;
+ gActiveBattler = 0;
switch (gBattleStruct->atk5A_StateTracker)
{
case 0:
@@ -9766,7 +9766,7 @@ static void atk5A_yesnoboxlearnmove(void)
if (gBattleCommunication[1] == 0)
{
sub_8023AD8();
- BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gBattleStruct->atk5A_StateTracker++;
return;
}
@@ -9799,7 +9799,7 @@ static void atk5A_yesnoboxlearnmove(void)
u16 move = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_MOVE1 + move_pos);
if (IsHMMove2(move))
{
- PrepareStringBattle(0x13F, gActiveBank);
+ PrepareStringBattle(0x13F, gActiveBattler);
gBattleStruct->atk5A_StateTracker = 5;
}
else
@@ -9818,13 +9818,13 @@ static void atk5A_yesnoboxlearnmove(void)
ptr[0] = 0xFF;
RemoveMonPPBonus(&gPlayerParty[gBattleStruct->expGetterID], move_pos);
SetMonMoveSlot(&gPlayerParty[gBattleStruct->expGetterID], gMoveToLearn, move_pos);
- if (gBattlePartyID[0] == gBattleStruct->expGetterID && !(gBattleMons[0].status2 & STATUS2_TRANSFORMED)
+ if (gBattlerPartyIndexes[0] == gBattleStruct->expGetterID && !(gBattleMons[0].status2 & STATUS2_TRANSFORMED)
&& !(gDisableStructs[0].unk18_b & gBitTable[move_pos]))
{
RemoveBattleMonPPBonus(&gBattleMons[0], move_pos);
SetBattleMonMoveSlot(&gBattleMons[0], gMoveToLearn, move_pos);
}
- if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && gBattlePartyID[2] == gBattleStruct->expGetterID && !(gBattleMons[2].status2 & STATUS2_TRANSFORMED)
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && gBattlerPartyIndexes[2] == gBattleStruct->expGetterID && !(gBattleMons[2].status2 & STATUS2_TRANSFORMED)
&& !(gDisableStructs[2].unk18_b & gBitTable[move_pos]))
{
RemoveBattleMonPPBonus(&gBattleMons[2], move_pos);
@@ -9892,13 +9892,13 @@ static void atk5B_yesnoboxstoplearningmove(void)
static void atk5C_hitanimation(void)
{
- gActiveBank = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1));
- if (gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1));
+ if (gMoveResultFlags & MOVE_RESULT_NO_EFFECT)
gBattlescriptCurrInstr += 2;
- else if (!(gHitMarker & HITMARKER_IGNORE_SUBSTITUTE) || !(gBattleMons[gActiveBank].status2 & STATUS2_SUBSTITUTE) || gDisableStructs[gActiveBank].substituteHP == 0)
+ else if (!(gHitMarker & HITMARKER_IGNORE_SUBSTITUTE) || !(gBattleMons[gActiveBattler].status2 & STATUS2_SUBSTITUTE) || gDisableStructs[gActiveBattler].substituteHP == 0)
{
EmitHitAnimation(0);
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
gBattlescriptCurrInstr += 2;
}
else
@@ -9964,7 +9964,7 @@ static void atk5D_getmoneyreward(void)
gBattlescriptCurrInstr += 1;
}
#else
-__attribute__((naked))
+NAKED
static void atk5D_getmoneyreward(void)
{
asm(".syntax unified\n\
@@ -10235,23 +10235,23 @@ static void atk5D_getmoneyreward(void)
static void atk5E_8025A70(void)
{
- gActiveBank = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1));
+ gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1));
switch (gBattleCommunication[0])
{
case 0:
EmitGetAttributes(0, REQUEST_ALL_BATTLE, 0);
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
gBattleCommunication[0]++;
break;
case 1:
if (gBattleExecBuffer == 0)
{
int i;
- struct BattlePokemon* bufferPoke = (struct BattlePokemon*) &gBattleBufferB[gActiveBank][4];
+ struct BattlePokemon* bufferPoke = (struct BattlePokemon*) &gBattleBufferB[gActiveBattler][4];
for (i = 0; i < 4; i++)
{
- gBattleMons[gActiveBank].moves[i] = bufferPoke->moves[i];
- gBattleMons[gActiveBank].pp[i] = bufferPoke->pp[i];
+ gBattleMons[gActiveBattler].moves[i] = bufferPoke->moves[i];
+ gBattleMons[gActiveBattler].pp[i] = bufferPoke->pp[i];
}
gBattlescriptCurrInstr += 2;
}
@@ -10261,9 +10261,9 @@ static void atk5E_8025A70(void)
static void atk5F_8025B24(void)
{
- gActiveBank = gBankAttacker;
+ gActiveBattler = gBankAttacker;
gBankAttacker = gBankTarget;
- gBankTarget = gActiveBank;
+ gBankTarget = gActiveBattler;
//what is xor...
if (gHitMarker & HITMARKER_PURSUIT_TRAP)
gHitMarker &= ~(HITMARKER_PURSUIT_TRAP);
@@ -10274,7 +10274,7 @@ static void atk5F_8025B24(void)
static void atk60_incrementgamestat(void)
{
- if (GetBankSide(gBankAttacker) == 0)
+ if (GetBattlerSide(gBankAttacker) == 0)
{
IncrementGameStat(T2_READ_8(gBattlescriptCurrInstr + 1));
}
@@ -10289,8 +10289,8 @@ static void atk61_drawpartystatussummary(void)
if (gBattleExecBuffer)
return;
- gActiveBank = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1));
- if (GetBankSide(gActiveBank) == 0)
+ gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1));
+ if (GetBattlerSide(gActiveBattler) == 0)
party = gPlayerParty;
else
party = gEnemyParty;
@@ -10309,15 +10309,15 @@ static void atk61_drawpartystatussummary(void)
}
}
EmitDrawPartyStatusSummary(0, hpStatus, 1);
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
gBattlescriptCurrInstr += 2;
}
static void atk62_08025C6C(void)
{
- gActiveBank = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1));
+ gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1));
Emitcmd49(0);
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
gBattlescriptCurrInstr += 2;
}
@@ -10334,11 +10334,11 @@ static void atk64_statusanimation(void)
{
if (gBattleExecBuffer == 0)
{
- gActiveBank = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1));
- if (!(gStatuses3[gActiveBank] & STATUS3_SEMI_INVULNERABLE) && gDisableStructs[gActiveBank].substituteHP == 0 && !(gHitMarker & HITMARKER_NO_ANIMATIONS))
+ gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1));
+ if (!(gStatuses3[gActiveBattler] & STATUS3_SEMI_INVULNERABLE) && gDisableStructs[gActiveBattler].substituteHP == 0 && !(gHitMarker & HITMARKER_NO_ANIMATIONS))
{
- EmitStatusAnimation(0, 0, gBattleMons[gActiveBank].status1);
- MarkBufferBankForExecution(gActiveBank);
+ EmitStatusAnimation(0, 0, gBattleMons[gActiveBattler].status1);
+ MarkBufferBankForExecution(gActiveBattler);
}
gBattlescriptCurrInstr += 2;
}
@@ -10349,12 +10349,12 @@ static void atk65_status2animation(void)
if (gBattleExecBuffer == 0)
{
u32 possible_to_anim;
- gActiveBank = GetBattleBank(T1_READ_8(gBattlescriptCurrInstr + 1));
+ gActiveBattler = GetBattleBank(T1_READ_8(gBattlescriptCurrInstr + 1));
possible_to_anim = T1_READ_32(gBattlescriptCurrInstr + 2);
- if (!(gStatuses3[gActiveBank] & STATUS3_SEMI_INVULNERABLE) && gDisableStructs[gActiveBank].substituteHP == 0 && !(gHitMarker & HITMARKER_NO_ANIMATIONS))
+ if (!(gStatuses3[gActiveBattler] & STATUS3_SEMI_INVULNERABLE) && gDisableStructs[gActiveBattler].substituteHP == 0 && !(gHitMarker & HITMARKER_NO_ANIMATIONS))
{
- EmitStatusAnimation(0, 1, gBattleMons[gActiveBank].status2 & possible_to_anim);
- MarkBufferBankForExecution(gActiveBank);
+ EmitStatusAnimation(0, 1, gBattleMons[gActiveBattler].status2 & possible_to_anim);
+ MarkBufferBankForExecution(gActiveBattler);
}
gBattlescriptCurrInstr += 6;
}
@@ -10365,12 +10365,12 @@ static void atk66_chosenstatusanimation(void)
if (gBattleExecBuffer == 0)
{
u32 status;
- gActiveBank = GetBattleBank(T1_READ_8(gBattlescriptCurrInstr + 1));
+ gActiveBattler = GetBattleBank(T1_READ_8(gBattlescriptCurrInstr + 1));
status = T1_READ_32(gBattlescriptCurrInstr + 3);
- if (!(gStatuses3[gActiveBank] & STATUS3_SEMI_INVULNERABLE) && gDisableStructs[gActiveBank].substituteHP == 0 && !(gHitMarker & HITMARKER_NO_ANIMATIONS))
+ if (!(gStatuses3[gActiveBattler] & STATUS3_SEMI_INVULNERABLE) && gDisableStructs[gActiveBattler].substituteHP == 0 && !(gHitMarker & HITMARKER_NO_ANIMATIONS))
{
EmitStatusAnimation(0, T1_READ_8(gBattlescriptCurrInstr + 2), status);
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
}
gBattlescriptCurrInstr += 7;
}
@@ -10421,7 +10421,7 @@ static void atk67_yesnobox(void)
static void atk68_cancelallactions(void)
{
int i;
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
gActionsByTurnOrder[i] = 0xC;
}
@@ -10458,12 +10458,12 @@ static void atk69_adjustsetdamage(void) //literally a copy of atk07 except there
if (gProtectStructs[gBankTarget].endured)
{
- gBattleMoveFlags |= MOVESTATUS_ENDURED;
+ gMoveResultFlags |= MOVE_RESULT_FOE_ENDURED;
goto END;
}
if (gSpecialStatuses[gBankTarget].focusBanded)
{
- gBattleMoveFlags |= MOVESTATUS_HUNGON;
+ gMoveResultFlags |= MOVE_RESULT_FOE_HUNG_ON;
gLastUsedItem = gBattleMons[gBankTarget].item;
}
@@ -10473,12 +10473,12 @@ static void atk69_adjustsetdamage(void) //literally a copy of atk07 except there
void atk6A_removeitem(void)
{
- gActiveBank = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1));
- USED_HELD_ITEMS(gActiveBank) = gBattleMons[gActiveBank].item;
+ gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1));
+ USED_HELD_ITEMS(gActiveBattler) = gBattleMons[gActiveBattler].item;
- gBattleMons[gActiveBank].item = 0;
- EmitSetMonData(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gActiveBank].item);
- MarkBufferBankForExecution(gActiveBank);
+ gBattleMons[gActiveBattler].item = 0;
+ EmitSetMonData(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gActiveBattler].item);
+ MarkBufferBankForExecution(gActiveBattler);
gBattlescriptCurrInstr += 2;
}
@@ -10487,7 +10487,7 @@ static void atk6B_atknameinbuff1(void)
gBattleTextBuff1[0] = 0xFD;
gBattleTextBuff1[1] = 7;
gBattleTextBuff1[2] = gBankAttacker;
- gBattleTextBuff1[3] = gBattlePartyID[gBankAttacker];
+ gBattleTextBuff1[3] = gBattlerPartyIndexes[gBankAttacker];
gBattleTextBuff1[4] = 0xFF;
gBattlescriptCurrInstr++;
}
@@ -10507,7 +10507,7 @@ static void atk6C_drawlvlupbox(void)
}
#else
-__attribute__((naked))
+NAKED
static void atk6C_drawlvlupbox(void)
{
asm(".syntax unified\n\
@@ -10926,22 +10926,22 @@ static void atk6D_resetsentmonsvalue(void)
static void atk6E_setatktoplayer0(void)
{
- gBankAttacker = GetBankByIdentity(0);
+ gBankAttacker = GetBattlerAtPosition(0);
gBattlescriptCurrInstr++;
}
static void atk6F_makevisible(void)
{
- gActiveBank = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1));
+ gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1));
EmitSpriteInvisibility(0, 0);
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
gBattlescriptCurrInstr += 2;
}
static void atk70_recordlastability(void)
{
- gActiveBank = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1));
- RecordAbilityBattle(gActiveBank, gLastUsedAbility);
+ gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1));
+ RecordAbilityBattle(gActiveBattler, gLastUsedAbility);
gBattlescriptCurrInstr += 1; //buggy, should be += 2, one byte for command, one byte for argument...
}
@@ -10974,18 +10974,18 @@ static void atk73_hpthresholds(void)
s32 result;
if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
{
- gActiveBank = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1));
- opposing_bank = gActiveBank ^ 1;
+ gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1));
+ opposing_bank = gActiveBattler ^ 1;
result = gBattleMons[opposing_bank].hp * 100 / gBattleMons[opposing_bank].maxHP;
if (result == 0)
result = 1;
- if (result > 69 || !gBattleMons[opposing_bank].hp)
+ if (result >= 70 || !gBattleMons[opposing_bank].hp)
gBattleStruct->hpScale = 0;
- else if (result > 39)
+ else if (result >= 40)
gBattleStruct->hpScale = 1;
- else if (result > 9)
+ else if (result >= 10)
gBattleStruct->hpScale = 2;
else
gBattleStruct->hpScale = 3;
@@ -11001,9 +11001,9 @@ static void atk74_hpthresholds2(void)
s32 result;
if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
{
- gActiveBank = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1));
- opposing_bank = gActiveBank ^ 1;
- hp_switchout = ewram160BCarr(GetBankSide(opposing_bank)); //gBattleStruct->HP_OnSwitchout[GetBankSide(opposing_bank)];
+ gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1));
+ opposing_bank = gActiveBattler ^ 1;
+ hp_switchout = ewram160BCarr(GetBattlerSide(opposing_bank)); //gBattleStruct->HP_OnSwitchout[GetBattlerSide(opposing_bank)];
result = (hp_switchout - gBattleMons[opposing_bank].hp) * 100 / hp_switchout;
if (gBattleMons[opposing_bank].hp >= hp_switchout)
@@ -11022,27 +11022,27 @@ static void atk74_hpthresholds2(void)
static void atk75_useitemonopponent(void)
{
gBankInMenu = gBankAttacker;
- PokemonUseItemEffects(&gEnemyParty[gBattlePartyID[gBankAttacker]], gLastUsedItem, gBattlePartyID[gBankAttacker], 0, 1);
+ PokemonUseItemEffects(&gEnemyParty[gBattlerPartyIndexes[gBankAttacker]], gLastUsedItem, gBattlerPartyIndexes[gBankAttacker], 0, 1);
gBattlescriptCurrInstr += 1;
}
static void atk76_various(void)
{
- gActiveBank = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1));
+ gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1));
switch (T2_READ_8(gBattlescriptCurrInstr + 2))
{
case 0:
- CancelMultiTurnMoves(gActiveBank);
+ CancelMultiTurnMoves(gActiveBattler);
break;
case 1:
{
u8 side;
gBankAttacker = gBankTarget;
- side = GetBankSide(gBankAttacker) ^ 1;
+ side = GetBattlerSide(gBankAttacker) ^ 1;
if (gSideTimers[side].followmeTimer && gBattleMons[gSideTimers[side].followmeTarget].hp)
gBankTarget = gSideTimers[side].followmeTarget;
else
- gBankTarget = gActiveBank;
+ gBankTarget = gActiveBattler;
}
break;
case 2:
@@ -11052,35 +11052,35 @@ static void atk76_various(void)
gBankTarget = GetMoveTarget(gCurrentMove, 0);
break;
case 4:
- if (gHitMarker & HITMARKER_FAINTED(gActiveBank))
+ if (gHitMarker & HITMARKER_FAINTED(gActiveBattler))
gBattleCommunication[0] = 1;
else
gBattleCommunication[0] = 0;
break;
case 5:
- gSpecialStatuses[gActiveBank].intimidatedPoke = 0;
- gSpecialStatuses[gActiveBank].traced = 0;
+ gSpecialStatuses[gActiveBattler].intimidatedPoke = 0;
+ gSpecialStatuses[gActiveBattler].traced = 0;
break;
case 6:
{
int i;
u16* choiced_move;
- if (gBattlePartyID[0] == gBattleStruct->expGetterID)
+ if (gBattlerPartyIndexes[0] == gBattleStruct->expGetterID)
goto ACTIVE_0;
- if (gBattlePartyID[2] != gBattleStruct->expGetterID)
+ if (gBattlerPartyIndexes[2] != gBattleStruct->expGetterID)
break;
- if (gBattlePartyID[0] == gBattlePartyID[2])
+ if (gBattlerPartyIndexes[0] == gBattlerPartyIndexes[2])
{
ACTIVE_0:
- gActiveBank = 0;
+ gActiveBattler = 0;
}
else
- gActiveBank = 2;
+ gActiveBattler = 2;
- choiced_move = CHOICED_MOVE(gActiveBank);
+ choiced_move = CHOICED_MOVE(gActiveBattler);
for (i = 0; i < 4; i++)
{
- if (gBattleMons[gActiveBank].moves[i] == *choiced_move)
+ if (gBattleMons[gActiveBattler].moves[i] == *choiced_move)
break;
}
if (i == 4)
@@ -11099,7 +11099,7 @@ static void atk77_setprotectlike(void) //protect and endure
if (last_move != MOVE_PROTECT && last_move != MOVE_DETECT && last_move != MOVE_ENDURE)
gDisableStructs[gBankAttacker].protectUses = 0;
- if (gCurrentTurnActionNumber == (gNoOfAllBanks - 1))
+ if (gCurrentTurnActionNumber == (gBattlersCount - 1))
not_last_turn = 0;
if (sProtectSuccessRates[gDisableStructs[gBankAttacker].protectUses] > Random() && not_last_turn)
@@ -11120,7 +11120,7 @@ static void atk77_setprotectlike(void) //protect and endure
{
gDisableStructs[gBankAttacker].protectUses = 0;
gBattleCommunication[MULTISTRING_CHOOSER] = 2;
- gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gMoveResultFlags |= MOVE_RESULT_MISSED;
}
gBattlescriptCurrInstr++;
@@ -11131,25 +11131,25 @@ static void atk78_faintifabilitynotdamp(void)
if (gBattleExecBuffer)
return;
- for (gBankTarget = 0; gBankTarget < gNoOfAllBanks; gBankTarget++)
+ for (gBankTarget = 0; gBankTarget < gBattlersCount; gBankTarget++)
{
if (gBattleMons[gBankTarget].ability == ABILITY_DAMP)
break;
}
- if (gBankTarget == gNoOfAllBanks)
+ if (gBankTarget == gBattlersCount)
{
- gActiveBank = gBankAttacker;
- gBattleMoveDamage = gBattleMons[gActiveBank].hp;
+ gActiveBattler = gBankAttacker;
+ gBattleMoveDamage = gBattleMons[gActiveBattler].hp;
EmitHealthBarUpdate(0, 0x7FFF);
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
gBattlescriptCurrInstr++;
- for (gBankTarget = 0; gBankTarget < gNoOfAllBanks; gBankTarget++)
+ for (gBankTarget = 0; gBankTarget < gBattlersCount; gBankTarget++)
{
if (gBankTarget == gBankAttacker)
continue;
- if (!(gAbsentBankFlags & gBitTable[gBankTarget]))
+ if (!(gAbsentBattlerFlags & gBitTable[gBankTarget]))
break;
}
}
@@ -11166,10 +11166,10 @@ static void atk79_setatkhptozero(void)
if (gBattleExecBuffer)
return;
- gActiveBank = gBankAttacker;
- gBattleMons[gActiveBank].hp = 0;
- EmitSetMonData(0, REQUEST_HP_BATTLE, 0, 2, &gBattleMons[gActiveBank].hp);
- MarkBufferBankForExecution(gActiveBank);
+ gActiveBattler = gBankAttacker;
+ gBattleMons[gActiveBattler].hp = 0;
+ EmitSetMonData(0, REQUEST_HP_BATTLE, 0, 2, &gBattleMons[gActiveBattler].hp);
+ MarkBufferBankForExecution(gActiveBattler);
gBattlescriptCurrInstr++;
}
@@ -11184,11 +11184,11 @@ static void atk7A_jumpifnexttargetvalid(void) //used by intimidate to loop throu
{
if (gBankTarget == gBankAttacker)
continue;
- if (!(gAbsentBankFlags & gBitTable[gBankTarget]))
+ if (!(gAbsentBattlerFlags & gBitTable[gBankTarget]))
break;
}
- if (gBankTarget >= gNoOfAllBanks)
+ if (gBankTarget >= gBattlersCount)
gBattlescriptCurrInstr += 5;
else
gBattlescriptCurrInstr = jump_loc;
@@ -11263,7 +11263,7 @@ static void atk7D_setrain(void)
{
if (gBattleWeather & WEATHER_RAIN_ANY)
{
- gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gMoveResultFlags |= MOVE_RESULT_MISSED;
gBattleCommunication[MULTISTRING_CHOOSER] = 2;
}
else
@@ -11277,15 +11277,15 @@ static void atk7D_setrain(void)
static void atk7E_setreflect(void)
{
- if (gSideAffecting[GetBankIdentity(gBankAttacker) & 1] & SIDE_STATUS_REFLECT)
+ if (gSideAffecting[GetBattlerPosition(gBankAttacker) & 1] & SIDE_STATUS_REFLECT)
{
- gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gMoveResultFlags |= MOVE_RESULT_MISSED;
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
}
else
{
- gSideAffecting[GetBankIdentity(gBankAttacker) & 1] |= SIDE_STATUS_REFLECT;
- gSideTimers[GetBankIdentity(gBankAttacker) & 1].reflectTimer = 5;
+ gSideAffecting[GetBattlerPosition(gBankAttacker) & 1] |= SIDE_STATUS_REFLECT;
+ gSideTimers[GetBattlerPosition(gBankAttacker) & 1].reflectTimer = 5;
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && CountAliveMons(1) == 2)
gBattleCommunication[MULTISTRING_CHOOSER] = 2;
else
@@ -11296,14 +11296,14 @@ static void atk7E_setreflect(void)
static void atk7F_setseeded(void)
{
- if (gBattleMoveFlags & MOVESTATUS_NOEFFECT || gStatuses3[gBankTarget] & STATUS3_LEECHSEED)
+ if (gMoveResultFlags & MOVE_RESULT_NO_EFFECT || gStatuses3[gBankTarget] & STATUS3_LEECHSEED)
{
- gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gMoveResultFlags |= MOVE_RESULT_MISSED;
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
}
else if (gBattleMons[gBankTarget].type1 == TYPE_GRASS || gBattleMons[gBankTarget].type2 == TYPE_GRASS)
{
- gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gMoveResultFlags |= MOVE_RESULT_MISSED;
gBattleCommunication[MULTISTRING_CHOOSER] = 2;
}
else
@@ -11341,7 +11341,7 @@ static void atk80_manipulatedamage(void)
static void atk81_trysetrest(void)
{
u8* fail_loc = T1_READ_PTR(gBattlescriptCurrInstr + 1);
- gActiveBank = gBankTarget = gBankAttacker;
+ gActiveBattler = gBankTarget = gBankAttacker;
gBattleMoveDamage = gBattleMons[gBankTarget].maxHP * (-1);
if (gBattleMons[gBankTarget].hp == gBattleMons[gBankTarget].maxHP)
gBattlescriptCurrInstr = fail_loc;
@@ -11353,8 +11353,8 @@ static void atk81_trysetrest(void)
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
gBattleMons[gBankTarget].status1 = 3;
- EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1);
- MarkBufferBankForExecution(gActiveBank);
+ EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1);
+ MarkBufferBankForExecution(gActiveBattler);
gBattlescriptCurrInstr += 5;
}
}
@@ -11377,7 +11377,7 @@ static void atk83_nop(void)
bool8 UproarWakeUpCheck(u8 bank)
{
int i;
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
if (!(gBattleMons[i].status2 & STATUS2_UPROAR) || gBattleMons[bank].ability == ABILITY_SOUNDPROOF) //wtf gamefreak, you should check this only once, not every time in a loop...
continue;
@@ -11390,7 +11390,7 @@ bool8 UproarWakeUpCheck(u8 bank)
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
break;
}
- if (i == gNoOfAllBanks)
+ if (i == gBattlersCount)
return 0;
else
return 1;
@@ -11418,7 +11418,7 @@ static void atk85_stockpile(void)
{
if (gDisableStructs[gBankAttacker].stockpileCounter == 3)
{
- gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gMoveResultFlags |= MOVE_RESULT_MISSED;
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
}
else
@@ -11447,7 +11447,7 @@ static void atk86_stockpiletobasedamage(void)
if (gBattleCommunication[6] != 1)
{
gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[gBankAttacker], &gBattleMons[gBankTarget], gCurrentMove,
- gSideAffecting[GetBankIdentity(gBankTarget) & 1], 0,
+ gSideAffecting[GetBattlerPosition(gBankTarget) & 1], 0,
0, gBankAttacker, gBankTarget)
* gDisableStructs[gBankAttacker].stockpileCounter;
gBattleStruct->animTurn = gDisableStructs[gBankAttacker].stockpileCounter;
@@ -11503,9 +11503,9 @@ static u8 ChangeStatBuffs(s8 statValue, u8 statId, u8 flags, const u8 *BS_ptr)
u32 index;
if (flags & MOVE_EFFECT_AFFECTS_USER)
- gActiveBank = gBankAttacker;
+ gActiveBattler = gBankAttacker;
else
- gActiveBank = gBankTarget;
+ gActiveBattler = gBankTarget;
flags &= ~(MOVE_EFFECT_AFFECTS_USER);
@@ -11521,21 +11521,21 @@ static u8 ChangeStatBuffs(s8 statValue, u8 statId, u8 flags, const u8 *BS_ptr)
if ((statValue << 0x18) < 0) // stat decrease
{
- if (gSideTimers[GET_BANK_SIDE(gActiveBank)].mistTimer
+ if (gSideTimers[GET_BATTLER_SIDE(gActiveBattler)].mistTimer
&& !certain && gCurrentMove != MOVE_CURSE)
{
if (flags == STAT_CHANGE_BS_PTR)
{
- if (gSpecialStatuses[gActiveBank].statLowered)
+ if (gSpecialStatuses[gActiveBattler].statLowered)
{
gBattlescriptCurrInstr = BS_ptr;
}
else
{
BattleScriptPush(BS_ptr);
- gBattleStruct->scriptingActive = gActiveBank;
+ gBattleStruct->scriptingActive = gActiveBattler;
gBattlescriptCurrInstr = BattleScript_MistProtected;
- gSpecialStatuses[gActiveBank].statLowered = 1;
+ gSpecialStatuses[gActiveBattler].statLowered = 1;
}
}
return STAT_CHANGE_DIDNT_WORK;
@@ -11546,55 +11546,55 @@ static u8 ChangeStatBuffs(s8 statValue, u8 statId, u8 flags, const u8 *BS_ptr)
gBattlescriptCurrInstr = BattleScript_ButItFailed;
return STAT_CHANGE_DIDNT_WORK;
}
- else if ((gBattleMons[gActiveBank].ability == ABILITY_CLEAR_BODY
- || gBattleMons[gActiveBank].ability == ABILITY_WHITE_SMOKE)
+ else if ((gBattleMons[gActiveBattler].ability == ABILITY_CLEAR_BODY
+ || gBattleMons[gActiveBattler].ability == ABILITY_WHITE_SMOKE)
&& !certain && gCurrentMove != MOVE_CURSE)
{
if (flags == STAT_CHANGE_BS_PTR)
{
- if (gSpecialStatuses[gActiveBank].statLowered)
+ if (gSpecialStatuses[gActiveBattler].statLowered)
{
gBattlescriptCurrInstr = BS_ptr;
}
else
{
BattleScriptPush(BS_ptr);
- gBattleStruct->scriptingActive = gActiveBank;
+ gBattleStruct->scriptingActive = gActiveBattler;
gBattlescriptCurrInstr = BattleScript_AbilityNoStatLoss;
- gLastUsedAbility = gBattleMons[gActiveBank].ability;
- RecordAbilityBattle(gActiveBank, gLastUsedAbility);
- gSpecialStatuses[gActiveBank].statLowered = 1;
+ gLastUsedAbility = gBattleMons[gActiveBattler].ability;
+ RecordAbilityBattle(gActiveBattler, gLastUsedAbility);
+ gSpecialStatuses[gActiveBattler].statLowered = 1;
}
}
return STAT_CHANGE_DIDNT_WORK;
}
- else if (gBattleMons[gActiveBank].ability == ABILITY_KEEN_EYE
+ else if (gBattleMons[gActiveBattler].ability == ABILITY_KEEN_EYE
&& !certain && statId == STAT_STAGE_ACC)
{
if (flags == STAT_CHANGE_BS_PTR)
{
BattleScriptPush(BS_ptr);
- gBattleStruct->scriptingActive = gActiveBank;
+ gBattleStruct->scriptingActive = gActiveBattler;
gBattlescriptCurrInstr = BattleScript_AbilityNoSpecificStatLoss;
- gLastUsedAbility = gBattleMons[gActiveBank].ability;
- RecordAbilityBattle(gActiveBank, gLastUsedAbility);
+ gLastUsedAbility = gBattleMons[gActiveBattler].ability;
+ RecordAbilityBattle(gActiveBattler, gLastUsedAbility);
}
return STAT_CHANGE_DIDNT_WORK;
}
- else if (gBattleMons[gActiveBank].ability == ABILITY_HYPER_CUTTER
+ else if (gBattleMons[gActiveBattler].ability == ABILITY_HYPER_CUTTER
&& !certain && statId == STAT_STAGE_ATK)
{
if (flags == STAT_CHANGE_BS_PTR)
{
BattleScriptPush(BS_ptr);
- gBattleStruct->scriptingActive = gActiveBank;
+ gBattleStruct->scriptingActive = gActiveBattler;
gBattlescriptCurrInstr = BattleScript_AbilityNoSpecificStatLoss;
- gLastUsedAbility = gBattleMons[gActiveBank].ability;
- RecordAbilityBattle(gActiveBank, gLastUsedAbility);
+ gLastUsedAbility = gBattleMons[gActiveBattler].ability;
+ RecordAbilityBattle(gActiveBattler, gLastUsedAbility);
}
return STAT_CHANGE_DIDNT_WORK;
}
- else if (gBattleMons[gActiveBank].ability == ABILITY_SHIELD_DUST && flags == 0)
+ else if (gBattleMons[gActiveBattler].ability == ABILITY_SHIELD_DUST && flags == 0)
{
return STAT_CHANGE_DIDNT_WORK;
}
@@ -11618,10 +11618,10 @@ static u8 ChangeStatBuffs(s8 statValue, u8 statId, u8 flags, const u8 *BS_ptr)
index++;
gBattleTextBuff2[index] = B_BUFF_EOS;
- if (gBattleMons[gActiveBank].statStages[statId] == 0)
+ if (gBattleMons[gActiveBattler].statStages[statId] == 0)
gBattleCommunication[MULTISTRING_CHOOSER] = 2;
else
- gBattleCommunication[MULTISTRING_CHOOSER] = (gBankTarget == gActiveBank);
+ gBattleCommunication[MULTISTRING_CHOOSER] = (gBankTarget == gActiveBattler);
}
}
@@ -11645,20 +11645,20 @@ static u8 ChangeStatBuffs(s8 statValue, u8 statId, u8 flags, const u8 *BS_ptr)
index++;
gBattleTextBuff2[index] = B_BUFF_EOS;
- if (gBattleMons[gActiveBank].statStages[statId] == 0xC)
+ if (gBattleMons[gActiveBattler].statStages[statId] == 0xC)
gBattleCommunication[MULTISTRING_CHOOSER] = 2;
else
- gBattleCommunication[MULTISTRING_CHOOSER] = (gBankTarget == gActiveBank);
+ gBattleCommunication[MULTISTRING_CHOOSER] = (gBankTarget == gActiveBattler);
}
- gBattleMons[gActiveBank].statStages[statId] += statValue;
- if (gBattleMons[gActiveBank].statStages[statId] < 0)
- gBattleMons[gActiveBank].statStages[statId] = 0;
- if (gBattleMons[gActiveBank].statStages[statId] > 0xC)
- gBattleMons[gActiveBank].statStages[statId] = 0xC;
+ gBattleMons[gActiveBattler].statStages[statId] += statValue;
+ if (gBattleMons[gActiveBattler].statStages[statId] < 0)
+ gBattleMons[gActiveBattler].statStages[statId] = 0;
+ if (gBattleMons[gActiveBattler].statStages[statId] > 0xC)
+ gBattleMons[gActiveBattler].statStages[statId] = 0xC;
if (gBattleCommunication[MULTISTRING_CHOOSER] == 2 && flags & STAT_CHANGE_BS_PTR)
- gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gMoveResultFlags |= MOVE_RESULT_MISSED;
if (gBattleCommunication[MULTISTRING_CHOOSER] == 2 && !(flags & STAT_CHANGE_BS_PTR))
return STAT_CHANGE_DIDNT_WORK;
@@ -11676,7 +11676,7 @@ static void atk89_statbuffchange(void)
static void atk8A_normalisebuffs(void) //haze
{
int i, j;
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
for (j = 0; j < 8; j++)
{
@@ -11732,7 +11732,7 @@ static bool8 sub_80264C0(void)
{
if (gBattleMons[gBankAttacker].level >= gBattleMons[gBankTarget].level)
{
- ewram16064arr(gBankTarget) = gBattlePartyID[gBankTarget];
+ ewram16064arr(gBankTarget) = gBattlerPartyIndexes[gBankTarget];
}
else
{
@@ -11742,7 +11742,7 @@ static bool8 sub_80264C0(void)
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1);
return 0;
}
- ewram16064arr(gBankTarget) = gBattlePartyID[gBankTarget];
+ ewram16064arr(gBankTarget) = gBattlerPartyIndexes[gBankTarget];
}
gBattlescriptCurrInstr = BattleScript_SuccessForceOut;
return 1;
@@ -11756,7 +11756,7 @@ static void atk8F_forcerandomswitch(void)
struct Pokemon* party;
u8 valid;
u8 val;
- if (!GetBankSide(gBankTarget))
+ if (!GetBattlerSide(gBankTarget))
party = gPlayerParty;
else
party = gEnemyParty;
@@ -11804,7 +11804,7 @@ static void atk8F_forcerandomswitch(void)
i = val + 3;
else
i = val;
- } while (i == gBattlePartyID[gBankTarget] || i == gBattlePartyID[gBankTarget ^ 2] || !MON_CAN_BATTLE(&party[i]));
+ } while (i == gBattlerPartyIndexes[gBankTarget] || i == gBattlerPartyIndexes[gBankTarget ^ 2] || !MON_CAN_BATTLE(&party[i]));
}
else
{
@@ -11813,14 +11813,14 @@ static void atk8F_forcerandomswitch(void)
do
{
i = Random() % 6;
- } while (i == gBattlePartyID[gBankTarget] || i == gBattlePartyID[gBankTarget ^ 2] || !MON_CAN_BATTLE(&party[i]));
+ } while (i == gBattlerPartyIndexes[gBankTarget] || i == gBattlerPartyIndexes[gBankTarget ^ 2] || !MON_CAN_BATTLE(&party[i]));
}
else
{
do
{
i = Random() % 6;
- } while (i == gBattlePartyID[gBankTarget] || !MON_CAN_BATTLE(&party[i]));
+ } while (i == gBattlerPartyIndexes[gBankTarget] || !MON_CAN_BATTLE(&party[i]));
}
}
ewram16068arr(gBankTarget) = i;
@@ -11918,15 +11918,15 @@ static void atk91_givepaydaymoney(void)
static void atk92_setlightscreen(void)
{
- if (gSideAffecting[GetBankIdentity(gBankAttacker) & 1] & SIDE_STATUS_LIGHTSCREEN)
+ if (gSideAffecting[GetBattlerPosition(gBankAttacker) & 1] & SIDE_STATUS_LIGHTSCREEN)
{
- gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gMoveResultFlags |= MOVE_RESULT_MISSED;
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
}
else
{
- gSideAffecting[GetBankIdentity(gBankAttacker) & 1] |= SIDE_STATUS_LIGHTSCREEN;
- gSideTimers[GetBankIdentity(gBankAttacker) & 1].lightscreenTimer = 5;
+ gSideAffecting[GetBattlerPosition(gBankAttacker) & 1] |= SIDE_STATUS_LIGHTSCREEN;
+ gSideTimers[GetBattlerPosition(gBankAttacker) & 1].lightscreenTimer = 5;
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && CountAliveMons(1) == 2)
gBattleCommunication[MULTISTRING_CHOOSER] = 4;
else
@@ -11956,7 +11956,7 @@ static void atk93_tryKO(void)
if (gBattleMons[gBankTarget].ability == ABILITY_STURDY)
{
- gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gMoveResultFlags |= MOVE_RESULT_MISSED;
gLastUsedAbility = ABILITY_STURDY;
gBattlescriptCurrInstr = x;
RecordAbilityBattle(gBankTarget, ABILITY_STURDY);
@@ -11968,7 +11968,7 @@ static void atk93_tryKO(void)
u16 to_cmp = gBattleMons[gBankAttacker].level - gBattleMons[gBankTarget].level + gBattleMoves[gCurrentMove].accuracy;
if (Random() % 0x64 + 1 < to_cmp || gBattleMons[gBankAttacker].level < gBattleMons[gBankTarget].level)
{
- goto MOVESTATUS_MISSED_LABEL;
+ goto MOVE_RESULT_MISSED_LABEL;
}
}
else
@@ -11979,8 +11979,8 @@ static void atk93_tryKO(void)
}
}
-MOVESTATUS_MISSED_LABEL:
- gBattleTypeFlags |= MOVESTATUS_MISSED;
+MOVE_RESULT_MISSED_LABEL:
+ gBattleTypeFlags |= MOVE_RESULT_MISSED;
if (gBattleMons[gBankAttacker].level < gBattleMons[gBankTarget].level)
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
else
@@ -12077,7 +12077,7 @@ _08026C0C:\n\
mov r10, r8\n\
cmp r3, 0x5\n\
bne _08026C6C\n\
- ldr r2, _08026C5C @ =gBattleMoveFlags\n\
+ ldr r2, _08026C5C @ =gMoveResultFlags\n\
ldrb r0, [r2]\n\
movs r1, 0x1\n\
orrs r0, r1\n\
@@ -12097,7 +12097,7 @@ _08026C4C: .4byte gStringBank\n\
_08026C50: .4byte gBankTarget\n\
_08026C54: .4byte gSpecialStatuses\n\
_08026C58: .4byte gBattleMons\n\
-_08026C5C: .4byte gBattleMoveFlags\n\
+_08026C5C: .4byte gMoveResultFlags\n\
_08026C60: .4byte gLastUsedAbility\n\
_08026C64: .4byte gBattlescriptCurrInstr\n\
_08026C68: .4byte BattleScript_SturdyPreventsOHKO\n\
@@ -12207,7 +12207,7 @@ _08026D20:\n\
ldrh r0, [r0, 0x28]\n\
subs r0, 0x1\n\
str r0, [r1]\n\
- ldr r2, _08026D60 @ =gBattleMoveFlags\n\
+ ldr r2, _08026D60 @ =gMoveResultFlags\n\
ldrb r0, [r2]\n\
movs r1, 0x40\n\
b _08026DC6\n\
@@ -12217,7 +12217,7 @@ _08026D50: .4byte gBankAttacker\n\
_08026D54: .4byte gProtectStructs\n\
_08026D58: .4byte gBankTarget\n\
_08026D5C: .4byte gBattleMoveDamage\n\
-_08026D60: .4byte gBattleMoveFlags\n\
+_08026D60: .4byte gMoveResultFlags\n\
_08026D64:\n\
ldr r0, _08026DA0 @ =gSpecialStatuses\n\
lsls r1, r2, 2\n\
@@ -12236,7 +12236,7 @@ _08026D64:\n\
ldrh r0, [r0, 0x28]\n\
subs r0, 0x1\n\
str r0, [r1]\n\
- ldr r2, _08026DA8 @ =gBattleMoveFlags\n\
+ ldr r2, _08026DA8 @ =gMoveResultFlags\n\
ldrb r0, [r2]\n\
movs r1, 0x80\n\
orrs r0, r1\n\
@@ -12252,7 +12252,7 @@ _08026D64:\n\
.align 2, 0\n\
_08026DA0: .4byte gSpecialStatuses\n\
_08026DA4: .4byte gBattleMoveDamage\n\
-_08026DA8: .4byte gBattleMoveFlags\n\
+_08026DA8: .4byte gMoveResultFlags\n\
_08026DAC: .4byte gLastUsedItem\n\
_08026DB0: .4byte gBankTarget\n\
_08026DB4:\n\
@@ -12262,7 +12262,7 @@ _08026DB4:\n\
add r0, r10\n\
ldrh r0, [r0, 0x28]\n\
str r0, [r1]\n\
- ldr r2, _08026DD8 @ =gBattleMoveFlags\n\
+ ldr r2, _08026DD8 @ =gMoveResultFlags\n\
ldrb r0, [r2]\n\
movs r1, 0x10\n\
_08026DC6:\n\
@@ -12276,10 +12276,10 @@ _08026DCA:\n\
b _08026E40\n\
.align 2, 0\n\
_08026DD4: .4byte gBattleMoveDamage\n\
-_08026DD8: .4byte gBattleMoveFlags\n\
+_08026DD8: .4byte gMoveResultFlags\n\
_08026DDC: .4byte gBattlescriptCurrInstr\n\
_08026DE0:\n\
- ldr r2, _08026E10 @ =gBattleMoveFlags\n\
+ ldr r2, _08026E10 @ =gMoveResultFlags\n\
ldrb r0, [r2]\n\
movs r1, 0x1\n\
orrs r0, r1\n\
@@ -12304,7 +12304,7 @@ _08026DE0:\n\
movs r0, 0\n\
b _08026E24\n\
.align 2, 0\n\
-_08026E10: .4byte gBattleMoveFlags\n\
+_08026E10: .4byte gMoveResultFlags\n\
_08026E14: .4byte gBankAttacker\n\
_08026E18: .4byte gBankTarget\n\
_08026E1C: .4byte gBattleCommunication\n\
@@ -12353,7 +12353,7 @@ static void atk95_setsandstorm(void)
{
if (gBattleWeather & WEATHER_SANDSTORM_ANY)
{
- gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gMoveResultFlags |= MOVE_RESULT_MISSED;
gBattleCommunication[MULTISTRING_CHOOSER] = 2;
}
else
@@ -12401,7 +12401,7 @@ static void atk96_weatherdamage(void)
else
gBattleMoveDamage = 0;
- if (gAbsentBankFlags & gBitTable[gBankAttacker])
+ if (gAbsentBattlerFlags & gBitTable[gBankAttacker])
gBattleMoveDamage = 0;
gBattlescriptCurrInstr++;
@@ -12412,15 +12412,15 @@ static void atk97_tryinfatuating(void)
struct Pokemon *attacker, *target;
u16 atk_species, def_species;
u32 atk_pid, def_pid;
- if (!GetBankSide(gBankAttacker))
- attacker = &gPlayerParty[gBattlePartyID[gBankAttacker]];
+ if (!GetBattlerSide(gBankAttacker))
+ attacker = &gPlayerParty[gBattlerPartyIndexes[gBankAttacker]];
else
- attacker = &gEnemyParty[gBattlePartyID[gBankAttacker]];
+ attacker = &gEnemyParty[gBattlerPartyIndexes[gBankAttacker]];
- if (!GetBankSide(gBankTarget))
- target = &gPlayerParty[gBattlePartyID[gBankTarget]];
+ if (!GetBattlerSide(gBankTarget))
+ target = &gPlayerParty[gBattlerPartyIndexes[gBankTarget]];
else
- target = &gEnemyParty[gBattlePartyID[gBankTarget]];
+ target = &gEnemyParty[gBattlerPartyIndexes[gBankTarget]];
atk_species = GetMonData(attacker, MON_DATA_SPECIES);
atk_pid = GetMonData(attacker, MON_DATA_PERSONALITY);
@@ -12457,26 +12457,26 @@ static void atk98_updatestatusicon(void)
if (T2_READ_8(gBattlescriptCurrInstr + 1) != 4)
{
- gActiveBank = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1));
- EmitStatusIconUpdate(0, gBattleMons[gActiveBank].status1, gBattleMons[gActiveBank].status2);
- MarkBufferBankForExecution(gActiveBank);
+ gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1));
+ EmitStatusIconUpdate(0, gBattleMons[gActiveBattler].status1, gBattleMons[gActiveBattler].status2);
+ MarkBufferBankForExecution(gActiveBattler);
gBattlescriptCurrInstr += 2;
}
else
{
- gActiveBank = gBankAttacker;
- if (!(gAbsentBankFlags & gBitTable[gActiveBank]))
+ gActiveBattler = gBankAttacker;
+ if (!(gAbsentBattlerFlags & gBitTable[gActiveBattler]))
{
- EmitStatusIconUpdate(0, gBattleMons[gActiveBank].status1, gBattleMons[gActiveBank].status2);
- MarkBufferBankForExecution(gActiveBank);
+ EmitStatusIconUpdate(0, gBattleMons[gActiveBattler].status1, gBattleMons[gActiveBattler].status2);
+ MarkBufferBankForExecution(gActiveBattler);
}
if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
{
- gActiveBank = GetBankByIdentity(GetBankIdentity(gBankAttacker) ^ 2);
- if (!(gAbsentBankFlags & gBitTable[gActiveBank]))
+ gActiveBattler = GetBattlerAtPosition(GetBattlerPosition(gBankAttacker) ^ 2);
+ if (!(gAbsentBattlerFlags & gBitTable[gActiveBattler]))
{
- EmitStatusIconUpdate(0, gBattleMons[gActiveBank].status1, gBattleMons[gActiveBank].status2);
- MarkBufferBankForExecution(gActiveBank);
+ EmitStatusIconUpdate(0, gBattleMons[gActiveBattler].status1, gBattleMons[gActiveBattler].status2);
+ MarkBufferBankForExecution(gActiveBattler);
}
}
gBattlescriptCurrInstr += 2;
@@ -12485,15 +12485,15 @@ static void atk98_updatestatusicon(void)
static void atk99_setmist(void)
{
- if (gSideTimers[GetBankIdentity(gBankAttacker) & 1].mistTimer)
+ if (gSideTimers[GetBattlerPosition(gBankAttacker) & 1].mistTimer)
{
- gBattleMoveFlags |= MOVESTATUS_FAILED;
+ gMoveResultFlags |= MOVE_RESULT_FAILED;
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
}
else
{
- gSideTimers[GetBankIdentity(gBankAttacker) & 1].mistTimer = 5;
- gSideAffecting[GetBankIdentity(gBankAttacker) & 1] |= SIDE_STATUS_MIST;
+ gSideTimers[GetBattlerPosition(gBankAttacker) & 1].mistTimer = 5;
+ gSideAffecting[GetBattlerPosition(gBankAttacker) & 1] |= SIDE_STATUS_MIST;
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
}
gBattlescriptCurrInstr++;
@@ -12503,7 +12503,7 @@ static void atk9A_setfocusenergy(void)
{
if (gBattleMons[gBankAttacker].status2 & STATUS2_FOCUS_ENERGY)
{
- gBattleMoveFlags |= MOVESTATUS_FAILED;
+ gMoveResultFlags |= MOVE_RESULT_FAILED;
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
}
else
@@ -12520,7 +12520,7 @@ static void atk9B_transformdataexecution(void)
gBattlescriptCurrInstr++;
if (gBattleMons[gBankTarget].status2 & STATUS2_TRANSFORMED || gStatuses3[gBankTarget] & STATUS3_SEMI_INVULNERABLE)
{
- gBattleMoveFlags |= MOVESTATUS_FAILED;
+ gMoveResultFlags |= MOVE_RESULT_FAILED;
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
}
else
@@ -12553,9 +12553,9 @@ static void atk9B_transformdataexecution(void)
gBattleMons[gBankAttacker].pp[j] = 5;
}
- gActiveBank = gBankAttacker;
+ gActiveBattler = gBankAttacker;
EmitResetActionMoveSelection(0, 2);
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
}
}
@@ -12630,7 +12630,7 @@ static void atk9D_mimicattackcopy(void)
}
#if DEBUG
-__attribute__((naked))
+NAKED
static void atk9E_metronome(void)
{
asm("\
@@ -12833,7 +12833,7 @@ static void atk9E_metronome(void)
}
#else
-__attribute__((naked))
+NAKED
static void atk9E_metronome(void)
{
asm(".syntax unified\n\
@@ -12936,8 +12936,8 @@ static void atkA0_psywavedamageeffect(void)
static void atkA1_counterdamagecalculator(void)
{
- u8 atk_side = GetBankSide(gBankAttacker);
- u8 def_side = GetBankSide(gProtectStructs[gBankAttacker].physicalBank);
+ u8 atk_side = GetBattlerSide(gBankAttacker);
+ u8 def_side = GetBattlerSide(gProtectStructs[gBankAttacker].physicalBank);
if (gProtectStructs[gBankAttacker].physicalDmg && atk_side != def_side && gBattleMons[gProtectStructs[gBankAttacker].physicalBank].hp)
{
gBattleMoveDamage = gProtectStructs[gBankAttacker].physicalDmg * 2;
@@ -12956,8 +12956,8 @@ static void atkA1_counterdamagecalculator(void)
static void atkA2_mirrorcoatdamagecalculator(void) //a copy of atkA1 with the physical -> special field changes
{
- u8 atk_side = GetBankSide(gBankAttacker);
- u8 def_side = GetBankSide(gProtectStructs[gBankAttacker].specialBank);
+ u8 atk_side = GetBattlerSide(gBankAttacker);
+ u8 def_side = GetBattlerSide(gProtectStructs[gBankAttacker].specialBank);
if (gProtectStructs[gBankAttacker].specialDmg && atk_side != def_side && gBattleMons[gProtectStructs[gBankAttacker].specialBank].hp)
{
gBattleMoveDamage = gProtectStructs[gBankAttacker].specialDmg * 2;
@@ -13096,7 +13096,7 @@ static void atkA6_settypetorandomresistance(void)
}
#else
-__attribute__((naked))
+NAKED
static void atkA6_settypetorandomresistance(void)
{
asm(".syntax unified\n\
@@ -13386,7 +13386,7 @@ static void atkA8_copymovepermanently(void)
struct move_pp moves_data;
gBattleMons[gBankAttacker].moves[gCurrMovePos] = gUnknown_02024C2C[gBankTarget];
gBattleMons[gBankAttacker].pp[gCurrMovePos] = gBattleMoves[gUnknown_02024C2C[gBankTarget]].pp;
- gActiveBank = gBankAttacker;
+ gActiveBattler = gBankAttacker;
for (i = 0; i < 4; i++)
{
moves_data.move[i] = gBattleMons[gBankAttacker].moves[i];
@@ -13394,7 +13394,7 @@ static void atkA8_copymovepermanently(void)
}
moves_data.ppBonuses = gBattleMons[gBankAttacker].ppBonuses;
EmitSetMonData(0, REQUEST_MOVES_PP_BATTLE, 0, sizeof(struct move_pp), &moves_data);
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
gBattleTextBuff1[0] = 0xFD;
gBattleTextBuff1[1] = 2;
gBattleTextBuff1[2] = gUnknown_02024C2C[gBankTarget];
@@ -13477,8 +13477,8 @@ static void atkAA_setdestinybond(void)
static void TrySetDestinyBondToHappen(void)
{
- u8 atk_side = GetBankSide(gBankAttacker);
- u8 def_side = GetBankSide(gBankTarget);
+ u8 atk_side = GetBattlerSide(gBankAttacker);
+ u8 def_side = GetBattlerSide(gBankTarget);
if (gBattleMons[gBankTarget].status2 & STATUS2_DESTINY_BOND && atk_side != def_side && !(gHitMarker & HITMARKER_GRUDGE))
gHitMarker |= HITMARKER_DESTINYBOND;
}
@@ -13532,12 +13532,12 @@ static void atkAD_tryspiteppreduce(void)
gBattleTextBuff2[5] = 0xFF;
gBattleMons[gBankTarget].pp[i] -= lost_pp;
- gActiveBank = gBankTarget;
- if (!(gDisableStructs[gActiveBank].unk18_b & gBitTable[i])
- && !(gBattleMons[gActiveBank].status2 & STATUS2_TRANSFORMED))
+ gActiveBattler = gBankTarget;
+ if (!(gDisableStructs[gActiveBattler].unk18_b & gBitTable[i])
+ && !(gBattleMons[gActiveBattler].status2 & STATUS2_TRANSFORMED))
{
- EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + i, 0, 1, &gBattleMons[gActiveBank].pp[i]);
- MarkBufferBankForExecution(gActiveBank);
+ EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + i, 0, 1, &gBattleMons[gActiveBattler].pp[i]);
+ MarkBufferBankForExecution(gActiveBattler);
}
gBattlescriptCurrInstr += 5;
if (gBattleMons[gBankTarget].pp[i] == 0)
@@ -13559,7 +13559,7 @@ static void atkAE_healpartystatus(void)
int i;
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
- if (GetBankSide(gBankAttacker) == 0)
+ if (GetBattlerSide(gBankAttacker) == 0)
party = gPlayerParty;
else
party = gEnemyParty;
@@ -13574,16 +13574,16 @@ static void atkAE_healpartystatus(void)
gBattleCommunication[MULTISTRING_CHOOSER] |= 1;
}
- gActiveBank = gBattleStruct->scriptingActive = GetBankByIdentity(GetBankIdentity(gBankAttacker) ^ 2);
- if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && !(gAbsentBankFlags & gBitTable[gActiveBank]))
+ gActiveBattler = gBattleStruct->scriptingActive = GetBattlerAtPosition(GetBattlerPosition(gBankAttacker) ^ 2);
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && !(gAbsentBattlerFlags & gBitTable[gActiveBattler]))
{
- if (gBattleMons[gActiveBank].ability != ABILITY_SOUNDPROOF)
+ if (gBattleMons[gActiveBattler].ability != ABILITY_SOUNDPROOF)
{
- gBattleMons[gActiveBank].status1 = 0;
+ gBattleMons[gActiveBattler].status1 = 0;
}
else
{
- RecordAbilityBattle(gActiveBank, gBattleMons[gActiveBank].ability);
+ RecordAbilityBattle(gActiveBattler, gBattleMons[gActiveBattler].ability);
gBattleCommunication[MULTISTRING_CHOOSER] |= 2;
}
}
@@ -13595,10 +13595,10 @@ static void atkAE_healpartystatus(void)
if (species != 0 && species != SPECIES_EGG)
{
u8 ability;
- if (gBattlePartyID[gBankAttacker] == i)
+ if (gBattlerPartyIndexes[gBankAttacker] == i)
ability = gBattleMons[gBankAttacker].ability;
- else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && gBattlePartyID[gActiveBank] == i && !(gAbsentBankFlags & gBitTable[gActiveBank]))
- ability = gBattleMons[gActiveBank].ability;
+ else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && gBattlerPartyIndexes[gActiveBattler] == i && !(gAbsentBattlerFlags & gBitTable[gActiveBattler]))
+ ability = gBattleMons[gActiveBattler].ability;
else
ability = GetAbilityBySpecies(species, abilityBit);
if (ability != ABILITY_SOUNDPROOF)
@@ -13612,15 +13612,15 @@ static void atkAE_healpartystatus(void)
to_heal = 0x3F;
gBattleMons[gBankAttacker].status1 = zero2;
- gActiveBank = GetBankByIdentity(GetBankIdentity(gBankAttacker) ^ 2);
- if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && !(gAbsentBankFlags & gBitTable[gActiveBank]))
- gBattleMons[gActiveBank].status1 = 0;
+ gActiveBattler = GetBattlerAtPosition(GetBattlerPosition(gBankAttacker) ^ 2);
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && !(gAbsentBattlerFlags & gBitTable[gActiveBattler]))
+ gBattleMons[gActiveBattler].status1 = 0;
}
//missing check?
- gActiveBank = gBankAttacker;
+ gActiveBattler = gBankAttacker;
EmitSetMonData(0, REQUEST_STATUS_BATTLE, to_heal, 4, &zero);
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
gBattlescriptCurrInstr++;
}
@@ -13643,7 +13643,7 @@ static void atkAF_cursetarget(void)
static void atkB0_trysetspikes(void)
{
- u8 side = GetBankSide(gBankAttacker) ^ 1;
+ u8 side = GetBattlerSide(gBankAttacker) ^ 1;
if (gSideTimers[side].spikesAmount == 3)
{
gSpecialStatuses[gBankAttacker].flag20 = 1;
@@ -13667,20 +13667,20 @@ static void atkB2_trysetperishsong(void)
{
int not_affected_pokes = 0, i;
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
if (gStatuses3[i] & STATUS3_PERISH_SONG || gBattleMons[i].ability == ABILITY_SOUNDPROOF)
not_affected_pokes++;
else
{
gStatuses3[i] |= STATUS3_PERISH_SONG;
- gDisableStructs[i].perishSong1 = 3;
- gDisableStructs[i].perishSong2 = 3;
+ gDisableStructs[i].perishSongTimer1 = 3;
+ gDisableStructs[i].perishSongTimer2 = 3;
}
}
PressurePPLoseOnUsingPerishSong(gBankAttacker);
- if (not_affected_pokes == gNoOfAllBanks)
+ if (not_affected_pokes == gBattlersCount)
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1);
else
gBattlescriptCurrInstr += 5;
@@ -13688,7 +13688,7 @@ static void atkB2_trysetperishsong(void)
static void atkB3_rolloutdamagecalculation(void)
{
- if (gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ if (gMoveResultFlags & MOVE_RESULT_NO_EFFECT)
{
CancelMultiTurnMoves(gBankAttacker);
gBattlescriptCurrInstr = BattleScript_MoveMissedPause;
@@ -13727,7 +13727,7 @@ static void atkB4_jumpifconfusedandstatmaxed(void)
static void atkB5_furycuttercalc(void)
{
- if (gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ if (gMoveResultFlags & MOVE_RESULT_NO_EFFECT)
{
gDisableStructs[gBankAttacker].furyCutterCounter = 0;
gBattlescriptCurrInstr = BattleScript_MoveMissedPause;
@@ -13778,22 +13778,22 @@ static void atkB7_presentdamagecalculation(void)
gBattlescriptCurrInstr = BattleScript_AlreadyAtFullHp;
else
{
- //gBattleMoveFlags &= ~(MOVESTATUS_NOTAFFECTED); only in Emerald
+ //gMoveResultFlags &= ~(MOVE_RESULT_DOESNT_AFFECT_FOE); only in Emerald
gBattlescriptCurrInstr = BattleScript_PresentHealTarget;
}
}
static void atkB8_setsafeguard(void)
{
- if (gSideAffecting[GetBankIdentity(gBankAttacker) & 1] & SIDE_STATUS_SAFEGUARD)
+ if (gSideAffecting[GetBattlerPosition(gBankAttacker) & 1] & SIDE_STATUS_SAFEGUARD)
{
- gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gMoveResultFlags |= MOVE_RESULT_MISSED;
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
}
else
{
- gSideAffecting[GetBankIdentity(gBankAttacker) & 1] |= SIDE_STATUS_SAFEGUARD;
- gSideTimers[GetBankIdentity(gBankAttacker) & 1].safeguardTimer = 5;
+ gSideAffecting[GetBattlerPosition(gBankAttacker) & 1] |= SIDE_STATUS_SAFEGUARD;
+ gSideTimers[GetBattlerPosition(gBankAttacker) & 1].safeguardTimer = 5;
gBattleCommunication[MULTISTRING_CHOOSER] = 5;
}
gBattlescriptCurrInstr++;
@@ -13845,11 +13845,11 @@ static void atkB9_magnitudedamagecalculation(void)
gBattleTextBuff1[4] = magnitude;
gBattleTextBuff1[5] = 0xFF;
- for (gBankTarget = 0; gBankTarget < gNoOfAllBanks; gBankTarget++)
+ for (gBankTarget = 0; gBankTarget < gBattlersCount; gBankTarget++)
{
if (gBankTarget == gBankAttacker)
continue;
- if (!(gAbsentBankFlags & gBitTable[gBankTarget])) //a valid target was found
+ if (!(gAbsentBattlerFlags & gBitTable[gBankTarget])) //a valid target was found
break;
}
gBattlescriptCurrInstr++;
@@ -13859,24 +13859,24 @@ static void atkBA_jumpifnopursuitswitchdmg(void)
{
if (gMultiHitCounter == 1)
{
- if (GetBankSide(gBankAttacker) == 0)
- gBankTarget = GetBankByIdentity(1);
+ if (GetBattlerSide(gBankAttacker) == 0)
+ gBankTarget = GetBattlerAtPosition(1);
else
- gBankTarget = GetBankByIdentity(0);
+ gBankTarget = GetBattlerAtPosition(0);
}
else
{
- if (GetBankSide(gBankAttacker) == 0)
- gBankTarget = GetBankByIdentity(3);
+ if (GetBattlerSide(gBankAttacker) == 0)
+ gBankTarget = GetBattlerAtPosition(3);
else
- gBankTarget = GetBankByIdentity(2);
+ gBankTarget = GetBattlerAtPosition(2);
}
if (gActionForBanks[gBankTarget] == 0 && gBankAttacker == ewram16010arr(gBankTarget) && !(gBattleMons[gBankTarget].status1 & (STATUS_SLEEP | STATUS_FREEZE))
&& gBattleMons[gBankAttacker].hp && !gDisableStructs[gBankTarget].truantCounter && gChosenMovesByBanks[gBankTarget] == MOVE_PURSUIT)
{
int i;
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
if (gBanksByTurnOrder[i] == gBankTarget)
gActionsByTurnOrder[i] = 11;
@@ -13894,7 +13894,7 @@ static void atkBB_setsunny(void)
{
if (gBattleWeather & WEATHER_SUN_ANY)
{
- gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gMoveResultFlags |= MOVE_RESULT_MISSED;
gBattleCommunication[MULTISTRING_CHOOSER] = 2;
}
else
@@ -13957,10 +13957,10 @@ static void atkBE_rapidspinfree(void) //rapid spin
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_LeechSeedFree;
}
- else if (gSideAffecting[GetBankSide(gBankAttacker)] & SIDE_STATUS_SPIKES)
+ else if (gSideAffecting[GetBattlerSide(gBankAttacker)] & SIDE_STATUS_SPIKES)
{
- gSideAffecting[GetBankSide(gBankAttacker)] &= ~(SIDE_STATUS_SPIKES);
- gSideTimers[GetBankSide(gBankAttacker)].spikesAmount = 0;
+ gSideAffecting[GetBattlerSide(gBankAttacker)] &= ~(SIDE_STATUS_SPIKES);
+ gSideTimers[GetBattlerSide(gBankAttacker)].spikesAmount = 0;
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_SpikesFree;
}
@@ -13996,7 +13996,7 @@ static void atkC0_recoverbasedonsunlight(void)
}
}
-__attribute__((naked))
+NAKED
static void atkC1_hiddenpowercalc(void)
{
asm(".syntax unified\n\
@@ -14147,11 +14147,11 @@ _080298A8: .4byte gBattlescriptCurrInstr\n\
static void atkC2_selectfirstvalidtarget(void)
{
- for (gBankTarget = 0; gBankTarget < gNoOfAllBanks; gBankTarget++)
+ for (gBankTarget = 0; gBankTarget < gBattlersCount; gBankTarget++)
{
if (gBankTarget == gBankAttacker)
continue;
- if (!(gAbsentBankFlags & gBitTable[gBankTarget]))
+ if (!(gAbsentBattlerFlags & gBitTable[gBankTarget]))
break;
}
gBattlescriptCurrInstr++;
@@ -14169,7 +14169,7 @@ static void atkC3_trysetfutureattack(void)
gWishFutureKnock.futureSightAttacker[gBankTarget] = gBankAttacker;
gWishFutureKnock.futureSightCounter[gBankTarget] = 3;
gWishFutureKnock.futureSightDmg[gBankTarget] = CalculateBaseDamage(&gBattleMons[gBankAttacker], &gBattleMons[gBankTarget], gCurrentMove,
- gSideAffecting[GetBankIdentity(gBankTarget) & 1], 0,
+ gSideAffecting[GetBattlerPosition(gBankTarget) & 1], 0,
0, gBankAttacker, gBankTarget);
if (gProtectStructs[gBankAttacker].helpingHand)
@@ -14188,7 +14188,7 @@ static void atkC3_trysetfutureattack(void)
static void atkC4_trydobeatup(void)
{
register struct Pokemon* party asm("r7");
- if (GetBankSide(gBankAttacker) == 0)
+ if (GetBattlerSide(gBankAttacker) == 0)
party = gPlayerParty;
else
party = gEnemyParty;
@@ -14230,7 +14230,7 @@ static void atkC4_trydobeatup(void)
}
}
#else
-__attribute__((naked))
+NAKED
static void atkC4_trydobeatup(void)
{
asm(".syntax unified\n\
@@ -14240,7 +14240,7 @@ static void atkC4_trydobeatup(void)
push {r6,r7}\n\
ldr r0, _08029A8C @ =gBankAttacker\n\
ldrb r0, [r0]\n\
- bl GetBankSide\n\
+ bl GetBattlerSide\n\
lsls r0, 24\n\
ldr r7, _08029A90 @ =gEnemyParty\n\
cmp r0, 0\n\
@@ -14531,7 +14531,7 @@ static void atkC8_sethail(void)
{
if (gBattleWeather & WEATHER_HAIL)
{
- gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gMoveResultFlags |= MOVE_RESULT_MISSED;
gBattleCommunication[MULTISTRING_CHOOSER] = 2;
}
else
@@ -14551,18 +14551,18 @@ static void atkC9_jumpifattackandspecialattackcannotfall(void) //memento
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1);
else
{
- gActiveBank = gBankAttacker;
- gBattleMoveDamage = gBattleMons[gActiveBank].hp;
+ gActiveBattler = gBankAttacker;
+ gBattleMoveDamage = gBattleMons[gActiveBattler].hp;
EmitHealthBarUpdate(0, 0x7FFF);
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
gBattlescriptCurrInstr += 5;
}
}
static void atkCA_setforcedtarget(void) //follow me
{
- gSideTimers[GetBankSide(gBankAttacker)].followmeTimer = 1;
- gSideTimers[GetBankSide(gBankAttacker)].followmeTarget = gBankAttacker;
+ gSideTimers[GetBattlerSide(gBankAttacker)].followmeTimer = 1;
+ gSideTimers[GetBattlerSide(gBankAttacker)].followmeTarget = gBankAttacker;
gBattlescriptCurrInstr++;
}
@@ -14589,9 +14589,9 @@ static void atkCD_cureifburnedparalysedorpoisoned(void) //refresh
{
gBattleMons[gBankAttacker].status1 = 0;
gBattlescriptCurrInstr += 5;
- gActiveBank = gBankAttacker;
- EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1);
- MarkBufferBankForExecution(gActiveBank);
+ gActiveBattler = gBankAttacker;
+ EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1);
+ MarkBufferBankForExecution(gActiveBattler);
}
else
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1);
@@ -14630,8 +14630,8 @@ static void atkD0_settaunt(void)
static void atkD1_trysethelpinghand(void)
{
- gBankTarget = GetBankByIdentity(GetBankIdentity(gBankAttacker) ^ 2);
- if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && !(gAbsentBankFlags & gBitTable[gBankTarget])
+ gBankTarget = GetBattlerAtPosition(GetBattlerPosition(gBankAttacker) ^ 2);
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && !(gAbsentBattlerFlags & gBitTable[gBankTarget])
&& !gProtectStructs[gBankAttacker].helpingHand && !gProtectStructs[gBankTarget].helpingHand)
{
gProtectStructs[gBankTarget].helpingHand = 1;
@@ -14644,9 +14644,9 @@ static void atkD1_trysethelpinghand(void)
#ifdef NONMATCHING
static void atkD2_tryswapitems(void)
{
- if ((GetBankSide(gBankAttacker) != 1 || gBattleTypeFlags & (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK | BATTLE_TYPE_EREADER_TRAINER) || gTrainerBattleOpponent == 0x400))
+ if ((GetBattlerSide(gBankAttacker) != 1 || gBattleTypeFlags & (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK | BATTLE_TYPE_EREADER_TRAINER) || gTrainerBattleOpponent == 0x400))
{
- u8 side = GetBankSide(gBankAttacker);
+ u8 side = GetBattlerSide(gBankAttacker);
if (gBattleTypeFlags)
}
@@ -14654,7 +14654,7 @@ static void atkD2_tryswapitems(void)
}
#else
-__attribute__((naked))
+NAKED
static void atkD2_tryswapitems(void)
{
asm(".syntax unified\n\
@@ -14666,7 +14666,7 @@ static void atkD2_tryswapitems(void)
sub sp, 0x4\n\
ldr r0, _0802A30C @ =gBankAttacker\n\
ldrb r0, [r0]\n\
- bl GetBankSide\n\
+ bl GetBattlerSide\n\
lsls r0, 24\n\
lsrs r0, 24\n\
cmp r0, 0x1\n\
@@ -14686,7 +14686,7 @@ static void atkD2_tryswapitems(void)
_0802A24C:\n\
ldr r4, _0802A30C @ =gBankAttacker\n\
ldrb r0, [r4]\n\
- bl GetBankSide\n\
+ bl GetBattlerSide\n\
lsls r0, 24\n\
lsrs r2, r0, 24\n\
ldr r0, _0802A310 @ =gBattleTypeFlags\n\
@@ -14706,7 +14706,7 @@ _0802A24C:\n\
adds r0, r2, r0\n\
ldrb r1, [r0]\n\
ldr r3, _0802A320 @ =gBitTable\n\
- ldr r2, _0802A324 @ =gBattlePartyID\n\
+ ldr r2, _0802A324 @ =gBattlerPartyIndexes\n\
ldrb r0, [r4]\n\
lsls r0, 1\n\
adds r0, r2\n\
@@ -14788,7 +14788,7 @@ _0802A314: .4byte 0x00000902\n\
_0802A318: .4byte gTrainerBattleOpponent\n\
_0802A31C: .4byte gWishFutureKnock\n\
_0802A320: .4byte gBitTable\n\
-_0802A324: .4byte gBattlePartyID\n\
+_0802A324: .4byte gBattlerPartyIndexes\n\
_0802A328: .4byte gBattleMons\n\
_0802A32C: .4byte gBankTarget\n\
_0802A330: .4byte gBattlescriptCurrInstr\n\
@@ -14840,7 +14840,7 @@ _0802A36C:\n\
add r0, r9\n\
mov r3, r10\n\
strh r3, [r0, 0x2E]\n\
- ldr r5, _0802A460 @ =gActiveBank\n\
+ ldr r5, _0802A460 @ =gActiveBattler\n\
ldr r1, _0802A45C @ =gBankAttacker\n\
ldrb r0, [r1]\n\
strb r0, [r5]\n\
@@ -14936,7 +14936,7 @@ _0802A36C:\n\
.align 2, 0\n\
_0802A458: .4byte gSharedMem + 0x160F0\n\
_0802A45C: .4byte gBankAttacker\n\
-_0802A460: .4byte gActiveBank\n\
+_0802A460: .4byte gActiveBattler\n\
_0802A464: .4byte 0xfffe9f10\n\
_0802A468: .4byte 0x000160e8\n\
_0802A46C: .4byte 0x000160e9\n\
@@ -14994,7 +14994,7 @@ static void atkD4_trywish(void)
if (gWishFutureKnock.wishCounter[gBankAttacker] == 0)
{
gWishFutureKnock.wishCounter[gBankAttacker] = 2;
- gWishFutureKnock.wishUserID[gBankAttacker] = gBattlePartyID[gBankAttacker];
+ gWishFutureKnock.wishUserID[gBankAttacker] = gBattlerPartyIndexes[gBankAttacker];
gBattlescriptCurrInstr += 6;
}
else
@@ -15077,7 +15077,7 @@ static void atkDA_tryswapabilities(void)
{
if ((gBattleMons[gBankAttacker].ability == 0 && gBattleMons[gBankTarget].ability == 0)
|| gBattleMons[gBankAttacker].ability == ABILITY_WONDER_GUARD || gBattleMons[gBankTarget].ability == ABILITY_WONDER_GUARD
- || gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ || gMoveResultFlags & MOVE_RESULT_NO_EFFECT)
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1);
else
{
@@ -15099,9 +15099,9 @@ static void atkDB_tryimprision(void)
{
u8 bank;
PressurePPLoseOnUsingImprision(gBankAttacker);
- for (bank = 0; bank < gNoOfAllBanks; bank++)
+ for (bank = 0; bank < gBattlersCount; bank++)
{
- if (r8 != GetBankSide(bank))
+ if (r8 != GetBattlerSide(bank))
{
int j;
for (j = 0; j < 4; j++)
@@ -15123,7 +15123,7 @@ static void atkDB_tryimprision(void)
}
}
}
- if (bank == gNoOfAllBanks)
+ if (bank == gBattlersCount)
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1);
}
}
@@ -15161,14 +15161,14 @@ static void atkDE_asistattackselect(void)
struct Pokemon* party;
int i, j;
u16* chooseable_moves;
- if (GetBankIdentity(gBankAttacker) & 1)
+ if (GetBattlerPosition(gBankAttacker) & 1)
party = gEnemyParty;
else
party = gPlayerParty;
for (i = 0; i < 6; i++)
{
- if (i == gBattlePartyID[gBankAttacker])
+ if (i == gBattlerPartyIndexes[gBankAttacker])
break;
if (!GetMonData(&party[i], MON_DATA_SPECIES2) || GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_EGG)
break;
@@ -15209,7 +15209,7 @@ static void atkDE_asistattackselect(void)
}
#else
-__attribute__((naked))
+NAKED
static void atkDE_asistattackselect(void)
{
asm(".syntax unified\n\
@@ -15223,7 +15223,7 @@ static void atkDE_asistattackselect(void)
mov r10, r0\n\
ldr r0, _0802AB9C @ =gBankAttacker\n\
ldrb r0, [r0]\n\
- bl GetBankIdentity\n\
+ bl GetBattlerPosition\n\
movs r1, 0x1\n\
ands r1, r0\n\
ldr r0, _0802ABA0 @ =gPlayerParty\n\
@@ -15235,7 +15235,7 @@ static void atkDE_asistattackselect(void)
_0802AAAC:\n\
movs r2, 0\n\
_0802AAAE:\n\
- ldr r1, _0802ABA8 @ =gBattlePartyID\n\
+ ldr r1, _0802ABA8 @ =gBattlerPartyIndexes\n\
ldr r0, _0802AB9C @ =gBankAttacker\n\
ldrb r0, [r0]\n\
lsls r0, 1\n\
@@ -15357,7 +15357,7 @@ _0802AB54:\n\
_0802AB9C: .4byte gBankAttacker\n\
_0802ABA0: .4byte gPlayerParty\n\
_0802ABA4: .4byte gEnemyParty\n\
-_0802ABA8: .4byte gBattlePartyID\n\
+_0802ABA8: .4byte gBattlerPartyIndexes\n\
_0802ABAC: .4byte 0x0000ffff\n\
_0802ABB0: .4byte gSharedMem + 0x16024\n\
_0802ABB4: .4byte sMovesForbiddenToCopy\n\
@@ -15400,7 +15400,7 @@ static void atkDF_trysetmagiccoat(void)
{
gBankTarget = gBankAttacker;
gSpecialStatuses[gBankAttacker].flag20 = 1;
- if (gCurrentTurnActionNumber == gNoOfAllBanks - 1) //last turn
+ if (gCurrentTurnActionNumber == gBattlersCount - 1) //last turn
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1);
else
{
@@ -15412,7 +15412,7 @@ static void atkDF_trysetmagiccoat(void)
static void atkE0_trysetsnatch(void)
{
gSpecialStatuses[gBankAttacker].flag20 = 1;
- if (gCurrentTurnActionNumber == gNoOfAllBanks - 1) //last turn
+ if (gCurrentTurnActionNumber == gBattlersCount - 1) //last turn
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1);
else
{
@@ -15426,21 +15426,21 @@ static void atkE1_trygetintimidatetarget(void)
u8 side;
gBattleStruct->scriptingActive = ewram160DD;
- side = GetBankSide(gBattleStruct->scriptingActive);
+ side = GetBattlerSide(gBattleStruct->scriptingActive);
gBattleTextBuff1[0] = 0xFD;
gBattleTextBuff1[1] = 9;
gBattleTextBuff1[2] = gBattleMons[gBattleStruct->scriptingActive].ability;
gBattleTextBuff1[3] = 0xFF;
- for (;gBankTarget < gNoOfAllBanks; gBankTarget++)
+ for (;gBankTarget < gBattlersCount; gBankTarget++)
{
- if (GetBankSide(gBankTarget) == side)
+ if (GetBattlerSide(gBankTarget) == side)
continue;
- if (!(gAbsentBankFlags & gBitTable[gBankTarget]))
+ if (!(gAbsentBattlerFlags & gBitTable[gBankTarget]))
break;
}
- if (gBankTarget >= gNoOfAllBanks)
+ if (gBankTarget >= gBattlersCount)
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1);
else
gBattlescriptCurrInstr += 5;
@@ -15448,13 +15448,13 @@ static void atkE1_trygetintimidatetarget(void)
static void atkE2_switchoutabilities(void)
{
- gActiveBank = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1));
- switch (gBattleMons[gActiveBank].ability)
+ gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1));
+ switch (gBattleMons[gActiveBattler].ability)
{
case ABILITY_NATURAL_CURE:
- gBattleMons[gActiveBank].status1 = 0;
- EmitSetMonData(0, REQUEST_STATUS_BATTLE, gBitTable[ewram16064arr(gActiveBank)], 4, &gBattleMons[gActiveBank].status1);
- MarkBufferBankForExecution(gActiveBank);
+ gBattleMons[gActiveBattler].status1 = 0;
+ EmitSetMonData(0, REQUEST_STATUS_BATTLE, gBitTable[ewram16064arr(gActiveBattler)], 4, &gBattleMons[gActiveBattler].status1);
+ MarkBufferBankForExecution(gActiveBattler);
break;
}
gBattlescriptCurrInstr += 2;
@@ -15462,8 +15462,8 @@ static void atkE2_switchoutabilities(void)
static void atkE3_jumpifhasnohp(void)
{
- gActiveBank = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1));
- if (gBattleMons[gActiveBank].hp == 0)
+ gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1));
+ if (gBattleMons[gActiveBattler].hp == 0)
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 2);
else
gBattlescriptCurrInstr += 6;
@@ -15534,11 +15534,11 @@ static void atkE5_pickup(void)
static void atkE6_docastformchangeanimation(void)
{
- gActiveBank = gBattleStruct->scriptingActive;
- if (gBattleMons[gActiveBank].status2 & STATUS2_SUBSTITUTE)
+ gActiveBattler = gBattleStruct->scriptingActive;
+ if (gBattleMons[gActiveBattler].status2 & STATUS2_SUBSTITUTE)
gBattleStruct->castformToChangeInto |= 0x80;
EmitBattleAnimation(0, B_ANIM_CASTFORM_CHANGE, gBattleStruct->castformToChangeInto);
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
gBattlescriptCurrInstr++;
}
@@ -15604,15 +15604,15 @@ static void atkE9_setweatherballtype(void)
static void atkEA_tryrecycleitem(void)
{
u16* used_item;
- gActiveBank = gBankAttacker;
- used_item = USED_HELD_ITEM(gActiveBank);
- if (*used_item && gBattleMons[gActiveBank].item == 0)
+ gActiveBattler = gBankAttacker;
+ used_item = USED_HELD_ITEM(gActiveBattler);
+ if (*used_item && gBattleMons[gActiveBattler].item == 0)
{
gLastUsedItem = *used_item;
*used_item = 0;
- gBattleMons[gActiveBank].item = gLastUsedItem;
- EmitSetMonData(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gActiveBank].item);
- MarkBufferBankForExecution(gActiveBank);
+ gBattleMons[gActiveBattler].item = gLastUsedItem;
+ EmitSetMonData(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gActiveBattler].item);
+ MarkBufferBankForExecution(gActiveBattler);
gBattlescriptCurrInstr += 5;
}
else
@@ -15637,15 +15637,15 @@ static void atkEB_settypetoterrain(void)
static void atkEC_pursuitrelated(void)
{
- gActiveBank = GetBankByIdentity(GetBankIdentity(gBankAttacker) ^ 2);
- if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && !(gAbsentBankFlags & gBitTable[gActiveBank]) && gActionForBanks[gActiveBank] == 0 && gChosenMovesByBanks[gActiveBank] == MOVE_PURSUIT)
+ gActiveBattler = GetBattlerAtPosition(GetBattlerPosition(gBankAttacker) ^ 2);
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && !(gAbsentBattlerFlags & gBitTable[gActiveBattler]) && gActionForBanks[gActiveBattler] == 0 && gChosenMovesByBanks[gActiveBattler] == MOVE_PURSUIT)
{
- gActionsByTurnOrder[gActiveBank] = 11;
+ gActionsByTurnOrder[gActiveBattler] = 11;
gCurrentMove = MOVE_PURSUIT;
gBattlescriptCurrInstr += 5;
gBattleStruct->animTurn = 1;
gBattleStruct->unk160A7 = gBankAttacker;
- gBankAttacker = gActiveBank;
+ gBankAttacker = gActiveBattler;
}
else
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1);
@@ -15664,7 +15664,7 @@ static void atkED_snatchsetbanks(void)
static void atkEE_removelightscreenreflect(void) //brick break
{
- u8 side = GetBankSide(gBankAttacker) ^ 1;
+ u8 side = GetBattlerSide(gBankAttacker) ^ 1;
if (gSideTimers[side].reflectTimer || gSideTimers[side].lightscreenTimer)
{
gSideAffecting[side] &= ~(SIDE_STATUS_REFLECT);
@@ -15688,18 +15688,18 @@ void atkEF_handleballthrow(void)
if (gBattleExecBuffer)
return;
- gActiveBank = gBankAttacker;
+ gActiveBattler = gBankAttacker;
gBankTarget = gBankAttacker ^ 1;
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
{
EmitBallThrow(0, 5);
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
gBattlescriptCurrInstr = BattleScript_TrainerBallBlock;
}
else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL)
{
EmitBallThrow(0, 4);
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
gBattlescriptCurrInstr = BattleScript_WallyBallThrow;
}
else
@@ -15770,16 +15770,16 @@ void atkEF_handleballthrow(void)
}
else
{
- if (gBattleResults.unk36[gLastUsedItem - ITEM_ULTRA_BALL] < 0xFF)
- gBattleResults.unk36[gLastUsedItem - ITEM_ULTRA_BALL]++;
+ if (gBattleResults.usedBalls[gLastUsedItem - ITEM_ULTRA_BALL] < 0xFF)
+ gBattleResults.usedBalls[gLastUsedItem - ITEM_ULTRA_BALL]++;
}
}
if (odds > 254) //poke caught
{
EmitBallThrow(0, 4);
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
gBattlescriptCurrInstr = BattleScript_SuccessBallThrow;
- SetMonData(&gEnemyParty[gBattlePartyID[gBankTarget]], MON_DATA_POKEBALL, (const void*) &gLastUsedItem);
+ SetMonData(&gEnemyParty[gBattlerPartyIndexes[gBankTarget]], MON_DATA_POKEBALL, (const void*) &gLastUsedItem);
if (CalculatePlayerPartyCount() == 6)
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
else
@@ -15794,11 +15794,11 @@ void atkEF_handleballthrow(void)
if (gLastUsedItem == ITEM_MASTER_BALL)
shakes = 4; //why calculate the shakes before that check?
EmitBallThrow(0, shakes);
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
if (shakes == 4) //poke caught, copy of the code above
{
gBattlescriptCurrInstr = BattleScript_SuccessBallThrow;
- SetMonData(&gEnemyParty[gBattlePartyID[gBankTarget]], MON_DATA_POKEBALL, (const void*) &gLastUsedItem);
+ SetMonData(&gEnemyParty[gBattlerPartyIndexes[gBankTarget]], MON_DATA_POKEBALL, (const void*) &gLastUsedItem);
if (CalculatePlayerPartyCount() == 6)
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
else
@@ -15815,9 +15815,9 @@ void atkEF_handleballthrow(void)
static void atkF0_givecaughtmon(void)
{
- GiveMonToPlayer(&gEnemyParty[gBattlePartyID[gBankAttacker ^ 1]]);
+ GiveMonToPlayer(&gEnemyParty[gBattlerPartyIndexes[gBankAttacker ^ 1]]);
gBattleResults.caughtPoke = gBattleMons[gBankAttacker ^ 1].species;
- GetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ 1]], MON_DATA_NICKNAME, gBattleResults.caughtNick);
+ GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBankAttacker ^ 1]], MON_DATA_NICKNAME, gBattleResults.caughtNick);
gBattlescriptCurrInstr++;
}
@@ -15845,7 +15845,7 @@ static void atkF2_displaydexinfo(void)
switch (gBattleCommunication[0])
{
case 0:
- BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gBattleCommunication[0]++;
break;
case 1:
@@ -15863,7 +15863,7 @@ static void atkF2_displaydexinfo(void)
LoadCompressedPalette(gBattleTerrainPalette_BattleTower, 0x20, 0x60);
REG_BG3CNT = 0x5a0b;
gBattle_BG3_X = 0x100;
- BeginNormalPaletteFade(0xfffc, 0, 0x10, 0, 0);
+ BeginNormalPaletteFade(0xFFFC, 0, 16, 0, RGB(0, 0, 0));
gBattleCommunication[0]++;
}
break;
@@ -15874,7 +15874,7 @@ static void atkF2_displaydexinfo(void)
}
}
-__attribute__((naked))
+NAKED
void sub_802BBD4(u8 r0, u8 r1, u8 r2, u8 r3, u8 sp0)
{
asm(".syntax unified\n\
@@ -16019,15 +16019,15 @@ static void atkF3_trygivecaughtmonnick(void)
case 2:
if (!gPaletteFade.active)
{
- GetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ 1]], MON_DATA_NICKNAME, gBattleStruct->caughtNick);
- DoNamingScreen(2, gBattleStruct->caughtNick, GetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ 1]], MON_DATA_SPECIES), GetMonGender(&gEnemyParty[gBattlePartyID[gBankAttacker ^ 1]]), GetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ 1]], MON_DATA_PERSONALITY, 0), BattleMainCB2);
+ GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBankAttacker ^ 1]], MON_DATA_NICKNAME, gBattleStruct->caughtNick);
+ DoNamingScreen(2, gBattleStruct->caughtNick, GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBankAttacker ^ 1]], MON_DATA_SPECIES), GetMonGender(&gEnemyParty[gBattlerPartyIndexes[gBankAttacker ^ 1]]), GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBankAttacker ^ 1]], MON_DATA_PERSONALITY, 0), BattleMainCB2);
gBattleCommunication[0]++;
}
break;
case 3:
if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active )
{
- SetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ 1]], MON_DATA_NICKNAME, gBattleStruct->caughtNick);
+ SetMonData(&gEnemyParty[gBattlerPartyIndexes[gBankAttacker ^ 1]], MON_DATA_NICKNAME, gBattleStruct->caughtNick);
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1);
}
break;
@@ -16060,5 +16060,5 @@ static void atkF6_finishaction(void)
static void atkF7_finishturn(void)
{
gCurrentActionFuncId = 0xC;
- gCurrentTurnActionNumber = gNoOfAllBanks;
+ gCurrentTurnActionNumber = gBattlersCount;
}
diff --git a/src/battle/battle_7.c b/src/battle/battle_7.c
index 85c1d4aed..75afc2739 100644
--- a/src/battle/battle_7.c
+++ b/src/battle/battle_7.c
@@ -20,11 +20,12 @@
#include "text.h"
#include "gba/m4a_internal.h"
#include "ewram.h"
+#include "graphics.h"
extern u8 gBattleBufferA[][0x200];
-extern u8 gActiveBank;
-extern u8 gNoOfAllBanks;
-extern u16 gBattlePartyID[];
+extern u8 gActiveBattler;
+extern u8 gBattlersCount;
+extern u16 gBattlerPartyIndexes[];
extern u8 gBanksBySide[];
extern u8 gBankSpriteIds[];
extern u16 gUnknown_02024DE8;
@@ -49,25 +50,53 @@ extern const u8 *const gBattleAnims_Special[];
extern const struct CompressedSpriteSheet gTrainerFrontPicTable[];
extern const struct MonCoords gTrainerFrontPicCoords[];
extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
-extern const u8 gSubstituteDollTilemap[];
-extern const u8 gSubstituteDollGfx[];
-extern const u8 gSubstituteDollPal[];
extern const struct CompressedSpriteSheet gUnknown_081FAF24;
extern const struct SpriteTemplate gSpriteTemplate_81FAF34;
-extern const struct CompressedSpriteSheet gUnknown_0820A47C;
-extern const struct CompressedSpriteSheet gUnknown_0820A484;
-extern const struct CompressedSpriteSheet gUnknown_0820A48C[];
-extern const struct CompressedSpriteSheet gUnknown_0820A49C[];
-extern const struct CompressedSpriteSheet gUnknown_0820A4AC;
-extern const struct CompressedSpriteSheet gUnknown_0820A4B4[];
-extern const struct SpritePalette gUnknown_0820A4D4[];
-extern const u8 gUnknown_08D09C48[];
+extern const u8 gSubstituteDollTilemap[]; // graphics.s
+extern const u8 gSubstituteDollGfx[]; // graphics.s
+extern const u8 gSubstituteDollPal[]; // graphics.s
+extern const u8 gUnknown_08D09C48[]; // graphics.s
+
+const struct CompressedSpriteSheet gUnknown_0820A47C =
+{ gBattleWindowLargeGfx, 4096, 0xd6ff };
+
+const struct CompressedSpriteSheet gUnknown_0820A484 =
+{ gBattleWindowSmallGfx, 4096, 0xd701 };
+
+const struct CompressedSpriteSheet gUnknown_0820A48C[] =
+{
+ { gBattleWindowSmall2Gfx, 2048, 0xd6ff },
+ { gBattleWindowSmall2Gfx, 2048, 0xd700 },
+};
+
+const struct CompressedSpriteSheet gUnknown_0820A49C[] =
+{
+ { gBattleWindowSmall3Gfx, 2048, 0xd701 },
+ { gBattleWindowSmall3Gfx, 2048, 0xd702 },
+};
+
+const struct CompressedSpriteSheet gUnknown_0820A4AC =
+{ gBattleWindowLarge2Gfx, 4096, 0xd70b };
+
+const struct CompressedSpriteSheet gUnknown_0820A4B4[] =
+{
+ { gBlankGfxCompressed, 256, 0xd704 },
+ { gBlankGfxCompressed, 288, 0xd705 },
+ { gBlankGfxCompressed, 256, 0xd706 },
+ { gBlankGfxCompressed, 288, 0xd707 },
+};
+
+const struct SpritePalette gUnknown_0820A4D4[] =
+{
+ { gUnknown_08D1212C, 0xD6FF },
+ { gUnknown_08D1214C, 0xD704 },
+};
extern void c3_0802FDF4(u8);
extern void sub_80440EC();
extern void sub_804777C();
extern void sub_8141828();
-extern u8 GetBankPosition();
+extern u8 GetBattlerSpriteCoord();
extern u8 IsBankSpritePresent(u8);
extern u8 sub_8077F68(u8);
extern u8 sub_8077F7C(u8);
@@ -125,36 +154,36 @@ void sub_80313A0(struct Sprite *sprite)
void move_anim_start_t2_for_situation(u8 a, u32 b)
{
- ewram17810[gActiveBank].unk0_4 = 1;
+ ewram17810[gActiveBattler].unk0_4 = 1;
if (a == 0)
{
if (b == 0x20)
- move_anim_start_t2(gActiveBank, 6);
+ move_anim_start_t2(gActiveBattler, 6);
else if (b == 8 || (b & 0x80))
- move_anim_start_t2(gActiveBank, 0);
+ move_anim_start_t2(gActiveBattler, 0);
else if (b == 0x10)
- move_anim_start_t2(gActiveBank, 2);
+ move_anim_start_t2(gActiveBattler, 2);
else if (b & 7)
- move_anim_start_t2(gActiveBank, 4);
+ move_anim_start_t2(gActiveBattler, 4);
else if (b == 0x40)
- move_anim_start_t2(gActiveBank, 5);
+ move_anim_start_t2(gActiveBattler, 5);
else
- ewram17810[gActiveBank].unk0_4 = 0;
+ ewram17810[gActiveBattler].unk0_4 = 0;
}
else
{
if (b & 0x000F0000)
- move_anim_start_t2(gActiveBank, 3);
+ move_anim_start_t2(gActiveBattler, 3);
else if (b & 7)
- move_anim_start_t2(gActiveBank, 1);
+ move_anim_start_t2(gActiveBattler, 1);
else if (b & 0x10000000)
- move_anim_start_t2(gActiveBank, 7);
+ move_anim_start_t2(gActiveBattler, 7);
else if (b & 0x08000000)
- move_anim_start_t2(gActiveBank, 8);
+ move_anim_start_t2(gActiveBattler, 8);
else if (b & 0x0000E000)
- move_anim_start_t2(gActiveBank, 9);
+ move_anim_start_t2(gActiveBattler, 9);
else
- ewram17810[gActiveBank].unk0_4 = 0;
+ ewram17810[gActiveBattler].unk0_4 = 0;
}
}
@@ -245,7 +274,7 @@ bool8 mplay_80342A4(u8 a)
if (IsSEPlaying())
{
ewram17810[a].unk8++;
- if (ewram17810[gActiveBank].unk8 < 30)
+ if (ewram17810[gActiveBattler].unk8 < 30)
return TRUE;
m4aMPlayStop(&gMPlay_SE1);
m4aMPlayStop(&gMPlay_SE2);
@@ -280,7 +309,7 @@ void BattleLoadOpponentMonSprite(struct Pokemon *pkmn, u8 b)
r7 = gTransformedPersonalities[b];
}
otId = GetMonData(pkmn, MON_DATA_OT_ID);
- var = GetBankIdentity(b);
+ var = GetBattlerPosition(b);
HandleLoadSpecialPokePic(
&gMonFrontPicTable[species],
gMonFrontPicCoords[species].coords,
@@ -305,7 +334,7 @@ void BattleLoadOpponentMonSprite(struct Pokemon *pkmn, u8 b)
}
if (ewram17800[b].transformedSpecies != 0)
{
- BlendPalette(paletteOffset, 16, 6, 0x7FFF);
+ BlendPalette(paletteOffset, 16, 6, RGB(31, 31, 31));
CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32);
}
}
@@ -332,7 +361,7 @@ void BattleLoadPlayerMonSprite(struct Pokemon *pkmn, u8 b)
r7 = gTransformedPersonalities[b];
}
otId = GetMonData(pkmn, MON_DATA_OT_ID);
- var = GetBankIdentity(b);
+ var = GetBattlerPosition(b);
HandleLoadSpecialPokePic(
&gMonBackPicTable[species],
gMonBackPicCoords[species].coords,
@@ -357,7 +386,7 @@ void BattleLoadPlayerMonSprite(struct Pokemon *pkmn, u8 b)
}
if (ewram17800[b].transformedSpecies != 0)
{
- BlendPalette(paletteOffset, 16, 6, 0x7FFF);
+ BlendPalette(paletteOffset, 16, 6, RGB(31, 31, 31));
CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32);
}
}
@@ -375,7 +404,7 @@ void sub_8031A6C(u16 a, u8 b)
u8 status;
struct CompressedSpriteSheet spriteSheet;
- status = GetBankIdentity(b);
+ status = GetBattlerPosition(b);
DecompressPicFromTable_2(
&gTrainerFrontPicTable[a],
gTrainerFrontPicCoords[a].coords,
@@ -394,7 +423,7 @@ void LoadPlayerTrainerBankSprite(u16 a, u8 b)
{
u8 status;
- status = GetBankIdentity(b);
+ status = GetBattlerPosition(b);
DecompressPicFromTable_2(
&gTrainerBackPicTable[a],
gTrainerBackPicCoords[a].coords,
@@ -494,7 +523,7 @@ bool8 sub_8031C30(u8 a)
return retVal;
}
-void load_gfxc_health_bar(void)
+void load_gfxc_health_bar(u8 a)
{
LZDecompressWram(gUnknown_08D09C48, eVoidSharedArr);
}
@@ -529,7 +558,7 @@ u8 battle_load_something(u8 *pState, u8 *b)
else
gHealthboxIDs[*b] = battle_make_oam_normal_battle(*b);
(*b)++;
- if (*b == gNoOfAllBanks)
+ if (*b == gBattlersCount)
{
*b = 0;
(*pState)++;
@@ -542,25 +571,25 @@ u8 battle_load_something(u8 *pState, u8 *b)
else
nullsub_11(gHealthboxIDs[*b], 1);
(*b)++;
- if (*b == gNoOfAllBanks)
+ if (*b == gBattlersCount)
{
*b = 0;
(*pState)++;
}
break;
case 5:
- if (GetBankSide(*b) == 0)
+ if (GetBattlerSide(*b) == 0)
{
if (!(gBattleTypeFlags & 0x80))
- sub_8045A5C(gHealthboxIDs[*b], &gPlayerParty[gBattlePartyID[*b]], 0);
+ sub_8045A5C(gHealthboxIDs[*b], &gPlayerParty[gBattlerPartyIndexes[*b]], 0);
}
else
{
- sub_8045A5C(gHealthboxIDs[*b], &gEnemyParty[gBattlePartyID[*b]], 0);
+ sub_8045A5C(gHealthboxIDs[*b], &gEnemyParty[gBattlerPartyIndexes[*b]], 0);
}
sub_8043DB0(gHealthboxIDs[*b]);
(*b)++;
- if (*b == gNoOfAllBanks)
+ if (*b == gBattlersCount)
{
*b = 0;
(*pState)++;
@@ -591,7 +620,7 @@ void sub_8031F24(void)
{
s32 i;
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
ewram17800[i].invisible = gSprites[gBankSpriteIds[i]].invisible;
}
@@ -617,7 +646,7 @@ void sub_8031FC4(u8 a, u8 b, bool8 c)
gBattleMonForms[a] = ewram17840.unk0;
if (ewram17800[a].transformedSpecies != 0)
{
- BlendPalette(paletteOffset, 16, 6, 0x7FFF);
+ BlendPalette(paletteOffset, 16, 6, RGB(31, 31, 31));
CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32);
}
gSprites[gBankSpriteIds[a]].pos1.y = sub_8077F68(a);
@@ -641,15 +670,15 @@ void sub_8031FC4(u8 a, u8 b, bool8 c)
}
else
{
- r10 = GetBankIdentity(a);
- if (GetBankSide(b) == 1)
- species = GetMonData(&gEnemyParty[gBattlePartyID[b]], MON_DATA_SPECIES);
+ r10 = GetBattlerPosition(a);
+ if (GetBattlerSide(b) == 1)
+ species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[b]], MON_DATA_SPECIES);
else
- species = GetMonData(&gPlayerParty[gBattlePartyID[b]], MON_DATA_SPECIES);
- if (GetBankSide(a) == 0)
+ species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[b]], MON_DATA_SPECIES);
+ if (GetBattlerSide(a) == 0)
{
- personalityValue = GetMonData(&gPlayerParty[gBattlePartyID[a]], MON_DATA_PERSONALITY);
- otId = GetMonData(&gPlayerParty[gBattlePartyID[a]], MON_DATA_OT_ID);
+ personalityValue = GetMonData(&gPlayerParty[gBattlerPartyIndexes[a]], MON_DATA_PERSONALITY);
+ otId = GetMonData(&gPlayerParty[gBattlerPartyIndexes[a]], MON_DATA_OT_ID);
HandleLoadSpecialPokePic(
&gMonBackPicTable[species],
gMonBackPicCoords[species].coords,
@@ -661,8 +690,8 @@ void sub_8031FC4(u8 a, u8 b, bool8 c)
}
else
{
- personalityValue = GetMonData(&gEnemyParty[gBattlePartyID[a]], MON_DATA_PERSONALITY);
- otId = GetMonData(&gEnemyParty[gBattlePartyID[a]], MON_DATA_OT_ID);
+ personalityValue = GetMonData(&gEnemyParty[gBattlerPartyIndexes[a]], MON_DATA_PERSONALITY);
+ otId = GetMonData(&gEnemyParty[gBattlerPartyIndexes[a]], MON_DATA_OT_ID);
HandleLoadSpecialPokePic(
&gMonFrontPicTable[species],
gMonFrontPicCoords[species].coords,
@@ -685,7 +714,7 @@ void sub_8031FC4(u8 a, u8 b, bool8 c)
LZDecompressWram(lzPaletteData, paletteSrc);
LoadPalette(paletteSrc + gBattleMonForms[b] * 16, paletteOffset, 32);
}
- BlendPalette(paletteOffset, 16, 6, 0x7FFF);
+ BlendPalette(paletteOffset, 16, 6, RGB(31, 31, 31));
CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32);
if (!IsContest())
{
@@ -710,10 +739,10 @@ void BattleLoadSubstituteSprite(u8 a, u8 b)
if (IsContest())
r4 = 0;
else
- r4 = GetBankIdentity(a);
+ r4 = GetBattlerPosition(a);
if (IsContest())
LZDecompressVram(gSubstituteDollTilemap, gUnknown_081FAF4C[r4]);
- else if (GetBankSide(a) != 0)
+ else if (GetBattlerSide(a) != 0)
LZDecompressVram(gSubstituteDollGfx, gUnknown_081FAF4C[r4]);
else
LZDecompressVram(gSubstituteDollTilemap, gUnknown_081FAF4C[r4]);
@@ -729,10 +758,10 @@ void BattleLoadSubstituteSprite(u8 a, u8 b)
{
if (!IsContest())
{
- if (GetBankSide(a) != 0)
- BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[a]], a);
+ if (GetBattlerSide(a) != 0)
+ BattleLoadOpponentMonSprite(&gEnemyParty[gBattlerPartyIndexes[a]], a);
else
- BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[a]], a);
+ BattleLoadPlayerMonSprite(&gPlayerParty[gBattlerPartyIndexes[a]], a);
}
}
}
@@ -790,7 +819,7 @@ void HandleLowHpMusicChange(struct Pokemon *pkmn, u8 b)
void BattleStopLowHpSound(void)
{
- u8 r4 = GetBankByIdentity(0);
+ u8 r4 = GetBattlerAtPosition(0);
ewram17800[r4].unk0_1 = 0;
if (IsDoubleBattle())
@@ -810,10 +839,10 @@ void sub_8032638(void)
{
if (gMain.inBattle)
{
- u8 r8 = GetBankByIdentity(0);
- u8 r9 = GetBankByIdentity(2);
- u8 r4 = pokemon_order_func(gBattlePartyID[r8]);
- u8 r5 = pokemon_order_func(gBattlePartyID[r9]);
+ u8 r8 = GetBattlerAtPosition(0);
+ u8 r9 = GetBattlerAtPosition(2);
+ u8 r4 = pokemon_order_func(gBattlerPartyIndexes[r8]);
+ u8 r5 = pokemon_order_func(gBattlerPartyIndexes[r9]);
if (GetMonData(&gPlayerParty[r4], MON_DATA_HP) != 0)
HandleLowHpMusicChange(&gPlayerParty[r4], r8);
@@ -829,7 +858,7 @@ void sub_80326EC(u8 a)
{
s32 i;
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
if (IsBankSpritePresent(i) != 0)
{
@@ -852,13 +881,13 @@ void sub_80327CC(void)
u8 r5;
LoadCompressedObjectPic(&gUnknown_081FAF24);
- r5 = GetBankByIdentity(1);
- ewram17810[r5].unk7 = CreateSprite(&gSpriteTemplate_81FAF34, GetBankPosition(r5, 0), GetBankPosition(r5, 1) + 32, 0xC8);
+ r5 = GetBattlerAtPosition(1);
+ ewram17810[r5].unk7 = CreateSprite(&gSpriteTemplate_81FAF34, GetBattlerSpriteCoord(r5, 0), GetBattlerSpriteCoord(r5, 1) + 32, 0xC8);
gSprites[ewram17810[r5].unk7].data[0] = r5;
if (IsDoubleBattle())
{
- r5 = GetBankByIdentity(3);
- ewram17810[r5].unk7 = CreateSprite(&gSpriteTemplate_81FAF34, GetBankPosition(r5, 0), GetBankPosition(r5, 1) + 32, 0xC8);
+ r5 = GetBattlerAtPosition(3);
+ ewram17810[r5].unk7 = CreateSprite(&gSpriteTemplate_81FAF34, GetBattlerSpriteCoord(r5, 0), GetBattlerSpriteCoord(r5, 1) + 32, 0xC8);
gSprites[ewram17810[r5].unk7].data[0] = r5;
}
}
@@ -892,7 +921,7 @@ void sub_8032978(struct Sprite *sprite)
void sub_8032984(u8 a, u16 b)
{
- if (GetBankSide(a) != 0)
+ if (GetBattlerSide(a) != 0)
{
if (ewram17800[a].transformedSpecies != 0)
b = ewram17800[a].transformedSpecies;
diff --git a/src/battle/battle_ai.c b/src/battle/battle_ai.c
index 629a57d25..447909091 100644
--- a/src/battle/battle_ai.c
+++ b/src/battle/battle_ai.c
@@ -17,19 +17,19 @@ extern u8 gUnknown_02023A14_50;
extern u32 gUnknown_02023A14_4C;
extern u16 gBattleTypeFlags;
extern u16 gBattleWeather;
-extern u8 gActiveBank;
-extern u16 gBattlePartyID[MAX_BANKS_BATTLE];
+extern u8 gActiveBattler;
+extern u16 gBattlerPartyIndexes[MAX_BATTLERS_COUNT];
extern u16 gCurrentMove;
extern int gBattleMoveDamage;
extern u8 gBankAttacker;
extern u8 gBankTarget;
-extern u8 gAbsentBankFlags;
-extern u8 gBattleMoveFlags;
+extern u8 gAbsentBattlerFlags;
+extern u8 gMoveResultFlags;
extern u16 gDynamicBasePower;
-extern u16 gLastUsedMove[MAX_BANKS_BATTLE];
-extern u32 gStatuses3[MAX_BANKS_BATTLE];
+extern u16 gLastUsedMove[MAX_BATTLERS_COUNT];
+extern u32 gStatuses3[MAX_BATTLERS_COUNT];
extern u16 gSideAffecting[2];
-extern struct BattlePokemon gBattleMons[MAX_BANKS_BATTLE];
+extern struct BattlePokemon gBattleMons[MAX_BATTLERS_COUNT];
extern u8 gCritMultiplier;
extern u16 gTrainerBattleOpponent;
extern u8 *BattleAIs[];
@@ -272,7 +272,7 @@ void BattleAI_HandleItemUseBeforeAISetup(void)
s32 i;
u8 *data;
- MEMSET_ALT(UNK_2016A00_STRUCT, 0, sizeof(struct UnkBattleStruct1), i, data);
+ MEMSET_ALT(AI_BATTLE_HISTORY, 0, sizeof(struct BattleHistory), i, data);
if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER)
&& gTrainerBattleOpponent != 0x400
@@ -282,8 +282,8 @@ void BattleAI_HandleItemUseBeforeAISetup(void)
{
if (gTrainers[gTrainerBattleOpponent].items[i] != 0)
{
- UNK_2016A00_STRUCT->items[UNK_2016A00_STRUCT->numOfItems] = gTrainers[gTrainerBattleOpponent].items[i];
- UNK_2016A00_STRUCT->numOfItems++;
+ AI_BATTLE_HISTORY->trainerItems[AI_BATTLE_HISTORY->numItems] = gTrainers[gTrainerBattleOpponent].items[i];
+ AI_BATTLE_HISTORY->numItems++;
}
}
}
@@ -303,7 +303,7 @@ void BattleAI_SetupAIData(void)
for (i = 0; i < MAX_MON_MOVES; i++)
AI_THINKING_STRUCT->score[i] = 100;
- limitations = CheckMoveLimitations(gActiveBank, 0, 0xFF);
+ limitations = CheckMoveLimitations(gActiveBattler, 0, 0xFF);
// do not consider moves the AI cannot select
// also, roll simulated RNG for moves that have a degree of
@@ -318,17 +318,17 @@ void BattleAI_SetupAIData(void)
// clear AI stack.
AI_STACK->size = 0;
- gBankAttacker = gActiveBank;
+ gBankAttacker = gActiveBattler;
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
{
gBankTarget = Random() & 2; // just pick somebody to target.
- if (gAbsentBankFlags & gBitTable[gBankTarget])
+ if (gAbsentBattlerFlags & gBitTable[gBankTarget])
gBankTarget ^= 2;
}
else
- gBankTarget = gActiveBank ^ 1;
+ gBankTarget = gActiveBattler ^ 1;
// special AI flag cases.
if (gBattleTypeFlags & BATTLE_TYPE_SAFARI)
@@ -446,9 +446,9 @@ void sub_810745C(void)
for (i = 0; i < 8; i++)
{
- if (UNK_2016A00_STRUCT->movesUsed[gBankTarget >> 1][i] == 0)
+ if (AI_BATTLE_HISTORY->usedMoves[gBankTarget >> 1][i] == 0)
{
- UNK_2016A00_STRUCT->movesUsed[gBankTarget >> 1][i] = gLastUsedMove[gBankTarget];
+ AI_BATTLE_HISTORY->usedMoves[gBankTarget >> 1][i] = gLastUsedMove[gBankTarget];
return;
}
}
@@ -459,19 +459,19 @@ void unref_sub_81074A0(u8 a)
s32 i;
for (i = 0; i < 8; i++)
- UNK_2016A00_STRUCT->movesUsed[a / 2][i] = 0;
+ AI_BATTLE_HISTORY->usedMoves[a / 2][i] = 0;
}
void RecordAbilityBattle(u8 a, u8 b)
{
- if (GetBankSide(a) == 0)
- UNK_2016A00_STRUCT->unk20[GetBankIdentity(a) & 1] = b;
+ if (GetBattlerSide(a) == 0)
+ AI_BATTLE_HISTORY->abilities[GetBattlerPosition(a) & 1] = b;
}
void RecordItemBattle(u8 a, u8 b)
{
- if (GetBankSide(a) == 0)
- UNK_2016A00_STRUCT->unk22[GetBankIdentity(a) & 1] = b;
+ if (GetBattlerSide(a) == 0)
+ AI_BATTLE_HISTORY->itemEffects[GetBattlerPosition(a) & 1] = b;
}
static void BattleAICmd_if_random_less_than(void)
@@ -694,7 +694,7 @@ static void BattleAICmd_if_status4(void)
else
index = gBankTarget;
- arg1 = GetBankIdentity(index) & 1;
+ arg1 = GetBattlerPosition(index) & 1;
arg2 = T1_READ_32(gAIScriptPtr + 2);
if ((gSideAffecting[arg1] & arg2) != 0)
@@ -713,7 +713,7 @@ static void BattleAICmd_if_not_status4(void)
else
index = gBankTarget;
- arg1 = GetBankIdentity(index) & 1;
+ arg1 = GetBattlerPosition(index) & 1;
arg2 = T1_READ_32(gAIScriptPtr + 2);
if ((gSideAffecting[arg1] & arg2) == 0)
@@ -961,7 +961,7 @@ static void BattleAICmd_is_most_powerful_move(void)
gDynamicBasePower = 0;
eDynamicMoveType = 0;
eDmgMultiplier = 1;
- gBattleMoveFlags = 0;
+ gMoveResultFlags = 0;
gCritMultiplier = 1;
for (i = 0; i < MAX_MON_MOVES; i++)
@@ -1008,7 +1008,7 @@ static void BattleAICmd_is_most_powerful_move(void)
gAIScriptPtr += 1;
}
#else
-__attribute__((naked))
+NAKED
static void BattleAICmd_is_most_powerful_move(void)
{
asm(".syntax unified\n\
@@ -1072,7 +1072,7 @@ _08108250:\n\
adds r0, r5, r2\n\
movs r2, 0x1\n\
strb r2, [r0]\n\
- ldr r0, _08108340 @ =gBattleMoveFlags\n\
+ ldr r0, _08108340 @ =gMoveResultFlags\n\
strb r1, [r0]\n\
ldr r0, _08108344 @ =gCritMultiplier\n\
strb r2, [r0]\n\
@@ -1177,7 +1177,7 @@ _08108330: .4byte gBattleMoves\n\
_08108334: .4byte gSharedMem + 0x16800\n\
_08108338: .4byte gDynamicBasePower\n\
_0810833C: .4byte 0xfffff81c\n\
-_08108340: .4byte gBattleMoveFlags\n\
+_08108340: .4byte gMoveResultFlags\n\
_08108344: .4byte gCritMultiplier\n\
_08108348: .4byte gBattleMons\n\
_0810834C: .4byte gBankAttacker\n\
@@ -1317,7 +1317,7 @@ static void BattleAICmd_count_alive_pokemon(void)
else
index = gBankTarget;
- if (GetBankSide(index) == 0)
+ if (GetBattlerSide(index) == 0)
party = gPlayerParty;
else
party = gEnemyParty;
@@ -1325,14 +1325,14 @@ static void BattleAICmd_count_alive_pokemon(void)
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
{
u32 status;
- var = gBattlePartyID[index];
- status = GetBankIdentity(index) ^ 2;
- var2 = gBattlePartyID[GetBankByIdentity(status)];
+ var = gBattlerPartyIndexes[index];
+ status = GetBattlerPosition(index) ^ 2;
+ var2 = gBattlerPartyIndexes[GetBattlerAtPosition(status)];
}
else
{
- var = gBattlePartyID[index];
- var2 = gBattlePartyID[index];
+ var = gBattlerPartyIndexes[index];
+ var2 = gBattlerPartyIndexes[index];
}
for (i = 0; i < 6; i++)
@@ -1370,13 +1370,13 @@ static void BattleAICmd_get_ability(void)
else
index = gBankTarget;
- if (GetBankSide(index) == TARGET)
+ if (GetBattlerSide(index) == TARGET)
{
- u16 unk = GetBankIdentity(index) & 1;
+ u16 side = GetBattlerPosition(index) & 1;
- if (UNK_2016A00_STRUCT->unk20[unk] != 0)
+ if (AI_BATTLE_HISTORY->abilities[side] != 0)
{
- AI_THINKING_STRUCT->funcResult = UNK_2016A00_STRUCT->unk20[unk];
+ AI_THINKING_STRUCT->funcResult = AI_BATTLE_HISTORY->abilities[side];
gAIScriptPtr += 2;
return;
}
@@ -1430,7 +1430,7 @@ static void BattleAICmd_get_highest_possible_damage(void)
gDynamicBasePower = 0;
gBattleStruct->dynamicMoveType = 0;
gBattleStruct->dmgMultiplier = 1;
- gBattleMoveFlags = 0;
+ gMoveResultFlags = 0;
gCritMultiplier = 1;
AI_THINKING_STRUCT->funcResult = 0;
@@ -1453,7 +1453,7 @@ static void BattleAICmd_get_highest_possible_damage(void)
if (gBattleMoveDamage == 15)
gBattleMoveDamage = 10;
- if (gBattleMoveFlags & 8) // if it's a status move, it wont do anything.
+ if (gMoveResultFlags & 8) // if it's a status move, it wont do anything.
gBattleMoveDamage = 0;
if (AI_THINKING_STRUCT->funcResult < gBattleMoveDamage)
@@ -1470,7 +1470,7 @@ static void BattleAICmd_if_damage_bonus(void)
gDynamicBasePower = 0;
gBattleStruct->dynamicMoveType = 0;
gBattleStruct->dmgMultiplier = 1;
- gBattleMoveFlags = 0;
+ gMoveResultFlags = 0;
gCritMultiplier = 1;
gBattleMoveDamage = 40;
@@ -1487,7 +1487,7 @@ static void BattleAICmd_if_damage_bonus(void)
if (gBattleMoveDamage == 15)
gBattleMoveDamage = 10;
- if (gBattleMoveFlags & 8)
+ if (gMoveResultFlags & 8)
gBattleMoveDamage = 0;
// store gBattleMoveDamage in a u8 variable because gAIScriptPtr[1] is a u8.
@@ -1677,7 +1677,7 @@ static void BattleAICmd_if_can_faint(void)
gDynamicBasePower = 0;
gBattleStruct->dynamicMoveType = 0;
gBattleStruct->dmgMultiplier = 1;
- gBattleMoveFlags = 0;
+ gMoveResultFlags = 0;
gCritMultiplier = 1;
gCurrentMove = AI_THINKING_STRUCT->moveConsidered;
AI_CalcDmg(gBankAttacker, gBankTarget);
@@ -1706,7 +1706,7 @@ static void BattleAICmd_if_cant_faint(void)
gDynamicBasePower = 0;
gBattleStruct->dynamicMoveType = 0;
gBattleStruct->dmgMultiplier = 1;
- gBattleMoveFlags = 0;
+ gMoveResultFlags = 0;
gCritMultiplier = 1;
gCurrentMove = AI_THINKING_STRUCT->moveConsidered;
AI_CalcDmg(gBankAttacker, gBankTarget);
@@ -1745,7 +1745,7 @@ static void BattleAICmd_if_has_move(void)
case 2:
for (i = 0; i < 8; i++)
{
- if (UNK_2016A00_STRUCT->movesUsed[gBankTarget >> 1][i] == *temp_ptr)
+ if (AI_BATTLE_HISTORY->usedMoves[gBankTarget >> 1][i] == *temp_ptr)
break;
}
if (i == 8)
@@ -1779,7 +1779,7 @@ static void BattleAICmd_if_dont_have_move(void)
case 2:
for (i = 0; i < 8; i++)
{
- if (UNK_2016A00_STRUCT->movesUsed[gBankTarget >> 1][i] == *temp_ptr)
+ if (AI_BATTLE_HISTORY->usedMoves[gBankTarget >> 1][i] == *temp_ptr)
break;
}
if (i != 8)
@@ -1812,7 +1812,7 @@ static void BattleAICmd_if_move_effect(void)
case 2:
for (i = 0; i < 8; i++)
{
- if (gBattleMons[gBankAttacker].moves[i] != 0 && gBattleMoves[UNK_2016A00_STRUCT->movesUsed[gBankTarget >> 1][i]].effect == gAIScriptPtr[2])
+ if (gBattleMons[gBankAttacker].moves[i] != 0 && gBattleMoves[AI_BATTLE_HISTORY->usedMoves[gBankTarget >> 1][i]].effect == gAIScriptPtr[2])
break;
}
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 3);
@@ -1841,7 +1841,7 @@ static void BattleAICmd_if_not_move_effect(void)
case 2:
for (i = 0; i < 8; i++)
{
- if (UNK_2016A00_STRUCT->movesUsed[gBankTarget >> 1][i] != 0 && gBattleMoves[UNK_2016A00_STRUCT->movesUsed[gBankTarget >> 1][i]].effect == gAIScriptPtr[2])
+ if (AI_BATTLE_HISTORY->usedMoves[gBankTarget >> 1][i] != 0 && gBattleMoves[AI_BATTLE_HISTORY->usedMoves[gBankTarget >> 1][i]].effect == gAIScriptPtr[2])
break;
}
gAIScriptPtr += 7;
@@ -1885,7 +1885,7 @@ static void BattleAICmd_if_encored(void)
switch (gAIScriptPtr[1])
{
case 0: // _08109348
- if (gDisableStructs[gActiveBank].disabledMove == AI_THINKING_STRUCT->moveConsidered)
+ if (gDisableStructs[gActiveBattler].disabledMove == AI_THINKING_STRUCT->moveConsidered)
{
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2);
return;
@@ -1893,7 +1893,7 @@ static void BattleAICmd_if_encored(void)
gAIScriptPtr += 6;
return;
case 1: // _08109370
- if (gDisableStructs[gActiveBank].encoredMove == AI_THINKING_STRUCT->moveConsidered)
+ if (gDisableStructs[gActiveBattler].encoredMove == AI_THINKING_STRUCT->moveConsidered)
{
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2);
return;
@@ -1929,17 +1929,17 @@ static void BattleAICmd_watch(void)
static void BattleAICmd_get_hold_effect(void)
{
u8 index;
- u16 status;
+ u16 side;
if (gAIScriptPtr[1] == USER)
index = gBankAttacker;
else
index = gBankTarget;
- if (GetBankSide(index) == 0)
+ if (GetBattlerSide(index) == 0)
{
- status = (GetBankIdentity(index) & 1);
- AI_THINKING_STRUCT->funcResult = UNK_2016A00_STRUCT->unk22[status];
+ side = (GetBattlerPosition(index) & 1);
+ AI_THINKING_STRUCT->funcResult = AI_BATTLE_HISTORY->itemEffects[side];
}
else
AI_THINKING_STRUCT->funcResult = ItemId_GetHoldEffect(gBattleMons[index].item);
diff --git a/src/battle/battle_ai_switch_items.c b/src/battle/battle_ai_switch_items.c
new file mode 100644
index 000000000..4dd7614bf
--- /dev/null
+++ b/src/battle/battle_ai_switch_items.c
@@ -0,0 +1,1008 @@
+#include "global.h"
+#include "battle.h"
+#include "battle_ai_switch_items.h"
+#include "battle_script_commands.h"
+#include "data2.h"
+#include "ewram.h"
+#include "pokemon.h"
+#include "random.h"
+#include "rom_8077ABC.h"
+#include "rom3.h"
+#include "util.h"
+#include "constants/abilities.h"
+#include "constants/items.h"
+#include "constants/moves.h"
+#include "constants/species.h"
+
+extern u8 gUnknown_02023A14_50;
+
+extern u8 gLastHitBy[];
+extern u8 gActiveBattler;
+extern u16 gBattleTypeFlags;
+extern u8 gAbsentBattlerFlags;
+extern s32 gBattleMoveDamage;
+extern u8 gMoveResultFlags;
+extern u16 gDynamicBasePower;
+extern u8 gCritMultiplier;
+extern u16 gBattlerPartyIndexes[];
+extern u16 gLastLandedMoves[];
+extern const u8 gTypeEffectiveness[];
+extern struct BattlePokemon gBattleMons[];
+extern u32 gStatuses3[MAX_BATTLERS_COUNT];
+
+static bool8 HasSuperEffectiveMoveAgainstOpponents(bool8 noRng);
+static bool8 FindMonWithFlagsAndSuperEffective(u8 flags, u8 moduloPercent);
+static bool8 ShouldUseItem(void);
+
+
+static bool8 ShouldSwitchIfPerishSong(void)
+{
+ if (gStatuses3[gActiveBattler] & STATUS3_PERISH_SONG
+ && gDisableStructs[gActiveBattler].perishSongTimer1 == 0)
+ {
+ ewram160C8arr(GetBattlerPosition(gActiveBattler)) = 6; // gBattleStruct->AI_monToSwitchIntoId[GetBattlerPosition(gActiveBattler)] = 6;
+ Emitcmd33(1, 2, 0);
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+#ifdef NONMATCHING
+static bool8 ShouldSwitchIfWonderGuard(void)
+{
+ u8 opposingBattler;
+ u8 moveFlags;
+ s32 i, j;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ return FALSE;
+
+ if (gBattleMons[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)].ability != ABILITY_WONDER_GUARD)
+ return FALSE;
+
+ // check if pokemon has a super effective move
+ opposingBattler = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
+ for (i = 0; i < 4; i++)
+ {
+ u16 move = gBattleMons[gActiveBattler].moves[i];
+ if (move == MOVE_NONE)
+ continue;
+
+ moveFlags = AI_TypeCalc(move, gBattleMons[opposingBattler].species, gBattleMons[opposingBattler].ability);
+ if (moveFlags & MOVE_RESULT_SUPER_EFFECTIVE)
+ return FALSE;
+ }
+
+ // find a pokemon in the party that has a super effective move
+ for (i = 0; i < 6; i++)
+ {
+ if (GetMonData(&gEnemyParty[i], MON_DATA_HP) == 0
+ || GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) == SPECIES_NONE
+ || GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) == SPECIES_EGG
+ || i == gBattlerPartyIndexes[gActiveBattler])
+ continue;
+
+ GetMonData(&gEnemyParty[i], MON_DATA_SPECIES); // unused return value
+ GetMonData(&gEnemyParty[i], MON_DATA_ALT_ABILITY); // unused return value
+
+ opposingBattler = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
+ for (j = 0; j < 4; j++)
+ {
+ u16 move = GetMonData(&gEnemyParty[i], MON_DATA_MOVE1 + j);
+ if (move == MOVE_NONE)
+ continue;
+
+ moveFlags = AI_TypeCalc(move, gBattleMons[opposingBattler].species, gBattleMons[opposingBattler].ability);
+ if (moveFlags & MOVE_RESULT_SUPER_EFFECTIVE && (Random() % 3) < 2)
+ {
+ // we found a mon
+ ewram160C8arr(GetBattlerPosition(gActiveBattler)) = i; // gBattleStruct->AI_monToSwitchIntoId[GetBattlerPosition(gActiveBattler)] = i;
+ Emitcmd33(1, B_ACTION_SWITCH, 0);
+ return TRUE;
+ }
+ }
+ }
+
+ return FALSE; // at this point there is not a single pokemon in the party that has a super effective move against a pokemon with wonder guard
+}
+#else
+NAKED
+static bool8 ShouldSwitchIfWonderGuard(void)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r9\n\
+ mov r6, r8\n\
+ push {r6,r7}\n\
+ ldr r0, _0803606C @ =gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x1\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _080360A0\n\
+ b _080361C8\n\
+ .align 2, 0\n\
+_0803606C: .4byte gBattleTypeFlags\n\
+_08036070:\n\
+ ldr r0, _08036094 @ =gActiveBattler\n\
+ ldrb r0, [r0]\n\
+ bl GetBattlerPosition\n\
+ ldr r1, _08036098 @ =gSharedMem\n\
+ lsls r0, 24\n\
+ lsrs r0, 25\n\
+ ldr r2, _0803609C @ =0x000160c8\n\
+ adds r0, r2\n\
+ adds r0, r1\n\
+ strb r6, [r0]\n\
+ movs r0, 0x1\n\
+ movs r1, 0x2\n\
+ movs r2, 0\n\
+ bl Emitcmd33\n\
+ movs r0, 0x1\n\
+ b _080361CA\n\
+ .align 2, 0\n\
+_08036094: .4byte gActiveBattler\n\
+_08036098: .4byte gSharedMem\n\
+_0803609C: .4byte 0x000160c8\n\
+_080360A0:\n\
+ ldr r4, _080361D8 @ =gBattleMons\n\
+ movs r0, 0\n\
+ bl GetBattlerAtPosition\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ movs r1, 0x58\n\
+ muls r0, r1\n\
+ adds r0, r4\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x19\n\
+ beq _080360BC\n\
+ b _080361C8\n\
+_080360BC:\n\
+ movs r0, 0\n\
+ bl GetBattlerAtPosition\n\
+ lsls r0, 24\n\
+ lsrs r2, r0, 24\n\
+ movs r6, 0\n\
+ adds r7, r4, 0\n\
+ movs r5, 0x58\n\
+ adds r0, r2, 0\n\
+ muls r0, r5\n\
+ adds r4, r0, r7\n\
+ movs r3, 0x20\n\
+ adds r3, r4\n\
+ mov r8, r3\n\
+_080360D8:\n\
+ lsls r1, r6, 1\n\
+ ldr r0, _080361DC @ =gActiveBattler\n\
+ ldrb r0, [r0]\n\
+ muls r0, r5\n\
+ adds r1, r0\n\
+ adds r0, r7, 0\n\
+ adds r0, 0xC\n\
+ adds r1, r0\n\
+ ldrh r0, [r1]\n\
+ cmp r0, 0\n\
+ beq _08036104\n\
+ ldrh r1, [r4]\n\
+ mov r3, r8\n\
+ ldrb r2, [r3]\n\
+ bl AI_TypeCalc\n\
+ lsls r0, 24\n\
+ lsrs r1, r0, 24\n\
+ movs r0, 0x2\n\
+ ands r1, r0\n\
+ cmp r1, 0\n\
+ bne _080361C8\n\
+_08036104:\n\
+ adds r6, 0x1\n\
+ cmp r6, 0x3\n\
+ ble _080360D8\n\
+ movs r6, 0\n\
+ ldr r0, _080361E0 @ =gEnemyParty\n\
+ mov r9, r0\n\
+_08036110:\n\
+ movs r0, 0x64\n\
+ adds r5, r6, 0\n\
+ muls r5, r0\n\
+ mov r2, r9\n\
+ adds r4, r5, r2\n\
+ adds r0, r4, 0\n\
+ movs r1, 0x39\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ beq _080361C2\n\
+ adds r0, r4, 0\n\
+ movs r1, 0x41\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ beq _080361C2\n\
+ adds r0, r4, 0\n\
+ movs r1, 0x41\n\
+ bl GetMonData\n\
+ movs r1, 0xCE\n\
+ lsls r1, 1\n\
+ cmp r0, r1\n\
+ beq _080361C2\n\
+ ldr r1, _080361E4 @ =gBattlerPartyIndexes\n\
+ ldr r0, _080361DC @ =gActiveBattler\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 1\n\
+ adds r0, r1\n\
+ ldrh r0, [r0]\n\
+ cmp r6, r0\n\
+ beq _080361C2\n\
+ adds r0, r4, 0\n\
+ movs r1, 0xB\n\
+ bl GetMonData\n\
+ adds r0, r4, 0\n\
+ movs r1, 0x2E\n\
+ bl GetMonData\n\
+ movs r0, 0\n\
+ bl GetBattlerAtPosition\n\
+ lsls r0, 24\n\
+ lsrs r2, r0, 24\n\
+ movs r4, 0\n\
+ mov r8, r5\n\
+ ldr r1, _080361D8 @ =gBattleMons\n\
+ movs r0, 0x58\n\
+ muls r0, r2\n\
+ adds r5, r0, r1\n\
+ adds r7, r5, 0\n\
+ adds r7, 0x20\n\
+_0803617C:\n\
+ adds r1, r4, 0\n\
+ adds r1, 0xD\n\
+ mov r0, r8\n\
+ add r0, r9\n\
+ bl GetMonData\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r0, 0\n\
+ beq _080361BC\n\
+ ldrh r1, [r5]\n\
+ ldrb r2, [r7]\n\
+ bl AI_TypeCalc\n\
+ lsls r0, 24\n\
+ lsrs r1, r0, 24\n\
+ movs r0, 0x2\n\
+ ands r1, r0\n\
+ cmp r1, 0\n\
+ beq _080361BC\n\
+ bl Random\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ movs r1, 0x3\n\
+ bl __umodsi3\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r0, 0x1\n\
+ bhi _080361BC\n\
+ b _08036070\n\
+_080361BC:\n\
+ adds r4, 0x1\n\
+ cmp r4, 0x3\n\
+ ble _0803617C\n\
+_080361C2:\n\
+ adds r6, 0x1\n\
+ cmp r6, 0x5\n\
+ ble _08036110\n\
+_080361C8:\n\
+ movs r0, 0\n\
+_080361CA:\n\
+ pop {r3,r4}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ pop {r4-r7}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .align 2, 0\n\
+_080361D8: .4byte gBattleMons\n\
+_080361DC: .4byte gActiveBattler\n\
+_080361E0: .4byte gEnemyParty\n\
+_080361E4: .4byte gBattlerPartyIndexes\n\
+ .syntax divided\n");
+}
+#endif // NONMATCHING
+
+static bool8 FindMonThatAbsorbsOpponentsMove(void)
+{
+ u8 battlerIn1, battlerIn2;
+ u8 absorbingTypeAbility;
+ s32 i;
+
+ if (HasSuperEffectiveMoveAgainstOpponents(TRUE) && Random() % 3 != 0)
+ return FALSE;
+ if (gLastLandedMoves[gActiveBattler] == 0)
+ return FALSE;
+ if (gLastLandedMoves[gActiveBattler] == 0xFFFF)
+ return FALSE;
+ if (gBattleMoves[gLastLandedMoves[gActiveBattler]].power == 0)
+ return FALSE;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ {
+ battlerIn1 = gActiveBattler;
+ if (gAbsentBattlerFlags & gBitTable[GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gActiveBattler)))])
+ battlerIn2 = gActiveBattler;
+ else
+ battlerIn2 = GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gActiveBattler)));
+ }
+ else
+ {
+ battlerIn1 = gActiveBattler;
+ battlerIn2 = gActiveBattler;
+ }
+
+ if (gBattleMoves[gLastLandedMoves[gActiveBattler]].type == TYPE_FIRE)
+ absorbingTypeAbility = ABILITY_FLASH_FIRE;
+ else if (gBattleMoves[gLastLandedMoves[gActiveBattler]].type == TYPE_WATER)
+ absorbingTypeAbility = ABILITY_WATER_ABSORB;
+ else if (gBattleMoves[gLastLandedMoves[gActiveBattler]].type == TYPE_ELECTRIC)
+ absorbingTypeAbility = ABILITY_VOLT_ABSORB;
+ else
+ return FALSE;
+
+ if (gBattleMons[gActiveBattler].ability == absorbingTypeAbility)
+ return FALSE;
+
+ for (i = 0; i < 6; i++)
+ {
+ u16 species;
+ u8 monAbility;
+
+ if (GetMonData(&gEnemyParty[i], MON_DATA_HP) == 0)
+ continue;
+ if (GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) == SPECIES_NONE)
+ continue;
+ if (GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) == SPECIES_EGG)
+ continue;
+ if (i == gBattlerPartyIndexes[battlerIn1])
+ continue;
+ if (i == gBattlerPartyIndexes[battlerIn2])
+ continue;
+ if (i == ewram16068arr(battlerIn1))
+ continue;
+ if (i == ewram16068arr(battlerIn2))
+ continue;
+
+ species = GetMonData(&gEnemyParty[i], MON_DATA_SPECIES);
+ if (GetMonData(&gEnemyParty[i], MON_DATA_ALT_ABILITY) != 0)
+ monAbility = gBaseStats[species].ability2;
+ else
+ monAbility = gBaseStats[species].ability1;
+
+ if (absorbingTypeAbility == monAbility && Random() & 1)
+ {
+ // we found a mon
+ ewram160C8arr(GetBattlerPosition(gActiveBattler)) = i;
+ Emitcmd33(1, B_ACTION_SWITCH, 0);
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+static bool8 ShouldSwitchIfNaturalCure(void)
+{
+ if (!(gBattleMons[gActiveBattler].status1 & STATUS_SLEEP))
+ return FALSE;
+ if (gBattleMons[gActiveBattler].ability != ABILITY_NATURAL_CURE)
+ return FALSE;
+ if (gBattleMons[gActiveBattler].hp < gBattleMons[gActiveBattler].maxHP / 2)
+ return FALSE;
+
+ if ((gLastLandedMoves[gActiveBattler] == 0 || gLastLandedMoves[gActiveBattler] == 0xFFFF) && Random() & 1)
+ {
+ ewram160C8arr(GetBattlerPosition(gActiveBattler)) = 6;
+ Emitcmd33(1, B_ACTION_SWITCH, 0);
+ return TRUE;
+ }
+ else if (gBattleMoves[gLastLandedMoves[gActiveBattler]].power == 0 && Random() & 1)
+ {
+ ewram160C8arr(GetBattlerPosition(gActiveBattler)) = 6;
+ Emitcmd33(1, B_ACTION_SWITCH, 0);
+ return TRUE;
+ }
+
+ if (FindMonWithFlagsAndSuperEffective(MOVE_RESULT_DOESNT_AFFECT_FOE, 1))
+ return TRUE;
+ if (FindMonWithFlagsAndSuperEffective(MOVE_RESULT_NOT_VERY_EFFECTIVE, 1))
+ return TRUE;
+ if (Random() & 1)
+ {
+ ewram160C8arr(GetBattlerPosition(gActiveBattler)) = 6;
+ Emitcmd33(1, B_ACTION_SWITCH, 0);
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static bool8 HasSuperEffectiveMoveAgainstOpponents(bool8 noRng)
+{
+ u8 opposingBattler;
+ s32 i;
+ u8 moveFlags;
+ u16 move;
+
+ opposingBattler = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
+ if (!(gAbsentBattlerFlags & gBitTable[opposingBattler]))
+ {
+ for (i = 0; i < 4; i++)
+ {
+ move = gBattleMons[gActiveBattler].moves[i];
+ if (move == MOVE_NONE)
+ continue;
+
+ moveFlags = AI_TypeCalc(move, gBattleMons[opposingBattler].species, gBattleMons[opposingBattler].ability);
+ if (moveFlags & MOVE_RESULT_SUPER_EFFECTIVE)
+ {
+ if (noRng)
+ return TRUE;
+ if (Random() % 10 != 0)
+ return TRUE;
+ }
+ }
+ }
+ if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
+ return FALSE;
+
+ opposingBattler = GetBattlerAtPosition(BATTLE_PARTNER(B_POSITION_PLAYER_LEFT));
+ if (!(gAbsentBattlerFlags & gBitTable[opposingBattler]))
+ {
+ for (i = 0; i < 4; i++)
+ {
+ move = gBattleMons[gActiveBattler].moves[i];
+ if (move == MOVE_NONE)
+ continue;
+
+ moveFlags = AI_TypeCalc(move, gBattleMons[opposingBattler].species, gBattleMons[opposingBattler].ability);
+ if (moveFlags & MOVE_RESULT_SUPER_EFFECTIVE)
+ {
+ if (noRng)
+ return TRUE;
+ if (Random() % 10 != 0)
+ return TRUE;
+ }
+ }
+ }
+
+ return FALSE;
+}
+
+static bool8 AreStatsRaised(void)
+{
+ u8 buffedStatsValue = 0;
+ s32 i;
+
+ for (i = 0; i < BATTLE_STATS_NO; i++)
+ {
+ if (gBattleMons[gActiveBattler].statStages[i] > 6)
+ buffedStatsValue += gBattleMons[gActiveBattler].statStages[i] - 6;
+ }
+
+ return (buffedStatsValue > 3);
+}
+
+static bool8 FindMonWithFlagsAndSuperEffective(u8 flags, u8 moduloPercent)
+{
+ u8 battlerIn1, battlerIn2;
+ s32 i, j;
+ u16 move;
+ u8 moveFlags;
+
+ if (gLastLandedMoves[gActiveBattler] == 0)
+ return FALSE;
+ if (gLastLandedMoves[gActiveBattler] == 0xFFFF)
+ return FALSE;
+ if (gLastHitBy[gActiveBattler] == 0xFF)
+ return FALSE;
+ if (gBattleMoves[gLastLandedMoves[gActiveBattler]].power == 0)
+ return FALSE;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ {
+ battlerIn1 = gActiveBattler;
+ if (gAbsentBattlerFlags & gBitTable[GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gActiveBattler)))])
+ battlerIn2 = gActiveBattler;
+ else
+ battlerIn2 = GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gActiveBattler)));
+ }
+ else
+ {
+ battlerIn1 = gActiveBattler;
+ battlerIn2 = gActiveBattler;
+ }
+
+ for (i = 0; i < 6; i++)
+ {
+ u16 species;
+ u8 monAbility;
+
+ if (GetMonData(&gEnemyParty[i], MON_DATA_HP) == 0)
+ continue;
+ if (GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) == SPECIES_NONE)
+ continue;
+ if (GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) == SPECIES_EGG)
+ continue;
+ if (i == gBattlerPartyIndexes[battlerIn1])
+ continue;
+ if (i == gBattlerPartyIndexes[battlerIn2])
+ continue;
+ if (i == ewram16068arr(battlerIn1))
+ continue;
+ if (i == ewram16068arr(battlerIn2))
+ continue;
+
+ species = GetMonData(&gEnemyParty[i], MON_DATA_SPECIES);
+ if (GetMonData(&gEnemyParty[i], MON_DATA_ALT_ABILITY) != 0)
+ monAbility = gBaseStats[species].ability2;
+ else
+ monAbility = gBaseStats[species].ability1;
+
+ moveFlags = AI_TypeCalc(gLastLandedMoves[gActiveBattler], species, monAbility);
+ if (moveFlags & flags)
+ {
+ battlerIn1 = gLastHitBy[gActiveBattler];
+
+ for (j = 0; j < 4; j++)
+ {
+ move = GetMonData(&gEnemyParty[i], MON_DATA_MOVE1 + j);
+ if (move == 0)
+ continue;
+
+ moveFlags = AI_TypeCalc(move, gBattleMons[battlerIn1].species, gBattleMons[battlerIn1].ability);
+ if (moveFlags & MOVE_RESULT_SUPER_EFFECTIVE && Random() % moduloPercent == 0)
+ {
+ ewram160C8arr(GetBattlerPosition(gActiveBattler)) = i;
+ Emitcmd33(1, B_ACTION_SWITCH, 0);
+ return TRUE;
+ }
+ }
+ }
+ }
+
+ return FALSE;
+}
+
+static bool8 ShouldSwitch(void)
+{
+ u8 battlerIn1, battlerIn2;
+ s32 i;
+ s32 availableToSwitch;
+
+ if (gBattleMons[gActiveBattler].status2 & (STATUS2_WRAPPED | STATUS2_ESCAPE_PREVENTION))
+ return FALSE;
+ if (gStatuses3[gActiveBattler] & STATUS3_ROOTED)
+ return FALSE;
+ if (AbilityBattleEffects(ABILITYEFFECT_CHECK_OTHER_SIDE, gActiveBattler, ABILITY_SHADOW_TAG, 0, 0))
+ return FALSE;
+ if (AbilityBattleEffects(ABILITYEFFECT_CHECK_OTHER_SIDE, gActiveBattler, ABILITY_ARENA_TRAP, 0, 0))
+ return FALSE; // misses the flying or levitate check
+ if (AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, ABILITY_MAGNET_PULL, 0, 0))
+ {
+ if (gBattleMons[gActiveBattler].type1 == TYPE_STEEL)
+ return FALSE;
+ if (gBattleMons[gActiveBattler].type2 == TYPE_STEEL)
+ return FALSE;
+ }
+
+ availableToSwitch = 0;
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ {
+ battlerIn1 = gActiveBattler;
+ if (gAbsentBattlerFlags & gBitTable[GetBattlerAtPosition(GetBattlerPosition(gActiveBattler) ^ BIT_FLANK)])
+ battlerIn2 = gActiveBattler;
+ else
+ battlerIn2 = GetBattlerAtPosition(GetBattlerPosition(gActiveBattler) ^ BIT_FLANK);
+ }
+ else
+ {
+ battlerIn1 = gActiveBattler;
+ battlerIn2 = gActiveBattler;
+ }
+
+ for (i = 0; i < 6; i++)
+ {
+ if (GetMonData(&gEnemyParty[i], MON_DATA_HP) == 0)
+ continue;
+ if (GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) == SPECIES_NONE)
+ continue;
+ if (GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) == SPECIES_EGG)
+ continue;
+ if (i == gBattlerPartyIndexes[battlerIn1])
+ continue;
+ if (i == gBattlerPartyIndexes[battlerIn2])
+ continue;
+ if (i == ewram16068arr(battlerIn1))
+ continue;
+ if (i == ewram16068arr(battlerIn2))
+ continue;
+
+ availableToSwitch++;
+ }
+
+ if (availableToSwitch == 0)
+ return FALSE;
+ if (ShouldSwitchIfPerishSong())
+ return TRUE;
+ if (ShouldSwitchIfWonderGuard())
+ return TRUE;
+ if (FindMonThatAbsorbsOpponentsMove())
+ return TRUE;
+ if (ShouldSwitchIfNaturalCure())
+ return TRUE;
+ if (HasSuperEffectiveMoveAgainstOpponents(FALSE))
+ return FALSE;
+ if (AreStatsRaised())
+ return FALSE;
+ if (FindMonWithFlagsAndSuperEffective(MOVE_RESULT_DOESNT_AFFECT_FOE, 2)
+ || FindMonWithFlagsAndSuperEffective(MOVE_RESULT_NOT_VERY_EFFECTIVE, 3))
+ return TRUE;
+
+ return FALSE;
+}
+
+void AI_TrySwitchOrUseItem(void)
+{
+ u8 battlerIn1, battlerIn2;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
+ {
+ if (ShouldSwitch())
+ {
+ if (ewram160C8arr(GetBattlerPosition(gActiveBattler)) == 6)
+ {
+ s32 monToSwitchId = GetMostSuitableMonToSwitchInto();
+ if (monToSwitchId == 6)
+ {
+ if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
+ {
+ battlerIn1 = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
+ battlerIn2 = battlerIn1;
+ }
+ else
+ {
+ battlerIn1 = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
+ battlerIn2 = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT);
+ }
+
+ for (monToSwitchId = 0; monToSwitchId < 6; monToSwitchId++)
+ {
+ if (GetMonData(&gEnemyParty[monToSwitchId], MON_DATA_HP) == 0)
+ continue;
+ if (monToSwitchId == gBattlerPartyIndexes[battlerIn1])
+ continue;
+ if (monToSwitchId == gBattlerPartyIndexes[battlerIn2])
+ continue;
+ if (monToSwitchId == ewram16068arr(battlerIn1))
+ continue;
+ if (monToSwitchId == ewram16068arr(battlerIn2))
+ continue;
+
+ break;
+ }
+ }
+
+ ewram160C8arr(GetBattlerPosition(gActiveBattler)) = monToSwitchId;
+ }
+
+ ewram16068arr(gActiveBattler) = ewram160C8arr(GetBattlerPosition(gActiveBattler));
+ return;
+ }
+ else
+ {
+ #if DEBUG
+ if (!(gUnknown_02023A14_50 & 0x20) && ShouldUseItem())
+ return;
+ #else
+ if (ShouldUseItem())
+ return;
+ #endif
+ }
+ }
+
+ Emitcmd33(1, B_ACTION_USE_MOVE, (gActiveBattler ^ BIT_SIDE) << 8);
+}
+
+static void ModulateByTypeEffectiveness(u8 attackType, u8 defenseType1, u8 defenseType2, u8 *var)
+{
+ s32 i = 0;
+
+ while (TYPE_EFFECT_ATK_TYPE(i) != TYPE_ENDTABLE)
+ {
+ if (TYPE_EFFECT_ATK_TYPE(i) == TYPE_FORESIGHT)
+ {
+ i += 3;
+ continue;
+ }
+ else if (TYPE_EFFECT_ATK_TYPE(i) == attackType)
+ {
+ // check type1
+ if (TYPE_EFFECT_DEF_TYPE(i) == defenseType1)
+ *var = (*var * TYPE_EFFECT_MULTIPLIER(i)) / 10;
+ // check type2
+ if (TYPE_EFFECT_DEF_TYPE(i) == defenseType2 && defenseType1 != defenseType2)
+ *var = (*var * TYPE_EFFECT_MULTIPLIER(i)) / 10;
+ }
+ i += 3;
+ }
+}
+
+u8 GetMostSuitableMonToSwitchInto(void)
+{
+ u8 opposingBattler;
+ u8 bestDmg; // note : should be changed to s32
+ u8 bestMonId;
+ u8 battlerIn1, battlerIn2;
+ s32 i, j;
+ u8 invalidMons;
+ u16 move;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ {
+ battlerIn1 = gActiveBattler;
+ if (gAbsentBattlerFlags & gBitTable[GetBattlerAtPosition(GetBattlerPosition(gActiveBattler) ^ BIT_FLANK)])
+ battlerIn2 = gActiveBattler;
+ else
+ battlerIn2 = GetBattlerAtPosition(GetBattlerPosition(gActiveBattler) ^ BIT_FLANK);
+
+ // UB: It considers the opponent only player's side even though it can battle alongside player;
+ opposingBattler = Random() & BIT_FLANK;
+ if (gAbsentBattlerFlags & gBitTable[opposingBattler])
+ opposingBattler ^= BIT_FLANK;
+ }
+ else
+ {
+ opposingBattler = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
+ battlerIn1 = gActiveBattler;
+ battlerIn2 = gActiveBattler;
+ }
+
+ invalidMons = 0;
+
+ while (invalidMons != 0x3F) // all mons are invalid
+ {
+ bestDmg = 0;
+ bestMonId = 6;
+ // find the mon which type is the most suitable offensively
+ for (i = 0; i < 6; i++)
+ {
+ u16 species = GetMonData(&gEnemyParty[i], MON_DATA_SPECIES);
+ if (species != SPECIES_NONE
+ && GetMonData(&gEnemyParty[i], MON_DATA_HP) != 0
+ && !(gBitTable[i] & invalidMons)
+ && gBattlerPartyIndexes[battlerIn1] != i
+ && gBattlerPartyIndexes[battlerIn2] != i
+ && i != ewram16068arr(battlerIn1)
+ && i != ewram16068arr(battlerIn2))
+ {
+ u8 type1 = gBaseStats[species].type1;
+ u8 type2 = gBaseStats[species].type2;
+ u8 typeDmg = 10;
+ ModulateByTypeEffectiveness(gBattleMons[opposingBattler].type1, type1, type2, &typeDmg);
+ ModulateByTypeEffectiveness(gBattleMons[opposingBattler].type2, type1, type2, &typeDmg);
+ if (bestDmg < typeDmg)
+ {
+ bestDmg = typeDmg;
+ bestMonId = i;
+ }
+ }
+ else
+ {
+ invalidMons |= gBitTable[i];
+ }
+ }
+
+ // ok, we know the mon has the right typing but does it have at least one super effective move?
+ if (bestMonId != 6)
+ {
+ for (i = 0; i < 4; i++)
+ {
+ move = GetMonData(&gEnemyParty[bestMonId], MON_DATA_MOVE1 + i);
+ if (move != MOVE_NONE && TypeCalc(move, gActiveBattler, opposingBattler) & MOVE_RESULT_SUPER_EFFECTIVE)
+ break;
+ }
+
+ if (i != 4)
+ return bestMonId; // has both the typing and at least one super effective move
+
+ invalidMons |= gBitTable[bestMonId]; // sorry buddy, we want something better
+ }
+ else
+ {
+ invalidMons = 0x3F; // no viable mon to switch
+ }
+ }
+
+ gDynamicBasePower = 0;
+ gBattleStruct->dynamicMoveType = 0;
+ gBattleStruct->dmgMultiplier = 1;
+ gMoveResultFlags = 0;
+ gCritMultiplier = 1;
+ bestDmg = 0;
+ bestMonId = 6;
+
+ // if we couldn't find the best mon in terms of typing, find the one that deals most damage
+ for (i = 0; i < 6; i++)
+ {
+ if ((u16)(GetMonData(&gEnemyParty[i], MON_DATA_SPECIES)) == SPECIES_NONE)
+ continue;
+ if (GetMonData(&gEnemyParty[i], MON_DATA_HP) == 0)
+ continue;
+ if (gBattlerPartyIndexes[battlerIn1] == i)
+ continue;
+ if (gBattlerPartyIndexes[battlerIn2] == i)
+ continue;
+ if (i == ewram16068arr(battlerIn1))
+ continue;
+ if (i == ewram16068arr(battlerIn2))
+ continue;
+
+ for (j = 0; j < 4; j++)
+ {
+ move = GetMonData(&gEnemyParty[i], MON_DATA_MOVE1 + j);
+ gBattleMoveDamage = 0;
+ if (move != MOVE_NONE && gBattleMoves[move].power != 1)
+ {
+ AI_CalcDmg(gActiveBattler, opposingBattler);
+ TypeCalc(move, gActiveBattler, opposingBattler);
+ }
+ if (bestDmg < gBattleMoveDamage)
+ {
+ bestDmg = gBattleMoveDamage;
+ bestMonId = i;
+ }
+ }
+ }
+
+ return bestMonId;
+}
+
+// TODO: use PokemonItemEffect struct instead of u8 once it's documented
+static u8 GetAI_ItemType(u8 itemId, const u8 *itemEffect) // NOTE: should take u16 as item Id argument
+{
+ if (itemId == ITEM_FULL_RESTORE)
+ return AI_ITEM_FULL_RESTORE;
+ if (itemEffect[4] & 4)
+ return AI_ITEM_HEAL_HP;
+ if (itemEffect[3] & 0x3F)
+ return AI_ITEM_CURE_CONDITION;
+ if (itemEffect[0] & 0x3F || itemEffect[1] != 0 || itemEffect[2] != 0)
+ return AI_ITEM_X_STAT;
+ if (itemEffect[3] & 0x80)
+ return AI_ITEM_GUARD_SPECS;
+
+ return AI_ITEM_NOT_RECOGNIZABLE;
+}
+
+static bool8 ShouldUseItem(void)
+{
+ s32 i;
+ u8 validMons = 0;
+ bool8 shouldUse = FALSE;
+
+ for (i = 0; i < 6; i++)
+ {
+ if (GetMonData(&gEnemyParty[i], MON_DATA_HP) != 0
+ && GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) != SPECIES_NONE
+ && GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) != SPECIES_EGG)
+ {
+ validMons++;
+ }
+ }
+
+ for (i = 0; i < 4; i++)
+ {
+ u16 item;
+ const u8 *itemEffects;
+ u8 paramOffset;
+ u8 battlerSide;
+
+ if (i != 0 && validMons > (AI_BATTLE_HISTORY->numItems - i) + 1)
+ continue;
+ item = AI_BATTLE_HISTORY->trainerItems[i];
+ if (item == ITEM_NONE)
+ continue;
+ if (gItemEffectTable[item - 13] == NULL)
+ continue;
+
+ if (item == ITEM_ENIGMA_BERRY)
+ itemEffects = gSaveBlock1.enigmaBerry.itemEffect;
+ else
+ itemEffects = gItemEffectTable[item - 13];
+
+ ewram160D8(gActiveBattler) = GetAI_ItemType(item, itemEffects);
+
+ switch (ewram160D8(gActiveBattler))
+ {
+ case AI_ITEM_FULL_RESTORE:
+ if (gBattleMons[gActiveBattler].hp >= gBattleMons[gActiveBattler].maxHP / 4)
+ break;
+ if (gBattleMons[gActiveBattler].hp == 0)
+ break;
+ shouldUse = TRUE;
+ break;
+ case AI_ITEM_HEAL_HP:
+ paramOffset = GetItemEffectParamOffset(item, 4, 4);
+ if (paramOffset == 0)
+ break;
+ if (gBattleMons[gActiveBattler].hp == 0)
+ break;
+ if (gBattleMons[gActiveBattler].hp < gBattleMons[gActiveBattler].maxHP / 4 || gBattleMons[gActiveBattler].maxHP - gBattleMons[gActiveBattler].hp > itemEffects[paramOffset])
+ shouldUse = TRUE;
+ break;
+ case AI_ITEM_CURE_CONDITION:
+ ewram160DA(gActiveBattler) = 0;
+ if (itemEffects[3] & 0x20 && gBattleMons[gActiveBattler].status1 & STATUS_SLEEP)
+ {
+ ewram160DA(gActiveBattler) |= 0x20;
+ shouldUse = TRUE;
+ }
+ if (itemEffects[3] & 0x10 && (gBattleMons[gActiveBattler].status1 & STATUS_POISON || gBattleMons[gActiveBattler].status1 & STATUS_TOXIC_POISON))
+ {
+ ewram160DA(gActiveBattler) |= 0x10;
+ shouldUse = TRUE;
+ }
+ if (itemEffects[3] & 0x8 && gBattleMons[gActiveBattler].status1 & STATUS_BURN)
+ {
+ ewram160DA(gActiveBattler) |= 0x8;
+ shouldUse = TRUE;
+ }
+ if (itemEffects[3] & 0x4 && gBattleMons[gActiveBattler].status1 & STATUS_FREEZE)
+ {
+ ewram160DA(gActiveBattler) |= 0x4;
+ shouldUse = TRUE;
+ }
+ if (itemEffects[3] & 0x2 && gBattleMons[gActiveBattler].status1 & STATUS_PARALYSIS)
+ {
+ ewram160DA(gActiveBattler) |= 0x2;
+ shouldUse = TRUE;
+ }
+ if (itemEffects[3] & 0x1 && gBattleMons[gActiveBattler].status2 & STATUS2_CONFUSION)
+ {
+ ewram160DA(gActiveBattler) |= 0x1;
+ shouldUse = TRUE;
+ }
+ break;
+ case AI_ITEM_X_STAT:
+ ewram160DA(gActiveBattler) = 0;
+ if (gDisableStructs[gActiveBattler].isFirstTurn == 0)
+ break;
+ if (itemEffects[0] & 0xF)
+ ewram160DA(gActiveBattler) |= 0x1;
+ if (itemEffects[1] & 0xF0)
+ ewram160DA(gActiveBattler) |= 0x2;
+ if (itemEffects[1] & 0xF)
+ ewram160DA(gActiveBattler) |= 0x4;
+ if (itemEffects[2] & 0xF)
+ ewram160DA(gActiveBattler) |= 0x8;
+ if (itemEffects[2] & 0xF0)
+ ewram160DA(gActiveBattler) |= 0x20;
+ if (itemEffects[0] & 0x30)
+ ewram160DA(gActiveBattler) |= 0x80;
+ shouldUse = TRUE;
+ break;
+ case AI_ITEM_GUARD_SPECS:
+ battlerSide = GetBattlerSide(gActiveBattler);
+ if (gDisableStructs[gActiveBattler].isFirstTurn != 0 && gSideTimers[battlerSide].mistTimer == 0)
+ shouldUse = TRUE;
+ break;
+ case AI_ITEM_NOT_RECOGNIZABLE:
+ return FALSE;
+ }
+
+ if (shouldUse)
+ {
+ Emitcmd33(1, B_ACTION_USE_ITEM, 0);
+ ewram160D4(gActiveBattler) = item;
+ AI_BATTLE_HISTORY->trainerItems[i] = 0;
+ return shouldUse;
+ }
+ }
+
+ return FALSE;
+}
diff --git a/src/battle/battle_anim.c b/src/battle/battle_anim.c
index a91e166c4..8b729d2ab 100644
--- a/src/battle/battle_anim.c
+++ b/src/battle/battle_anim.c
@@ -1287,7 +1287,7 @@ const struct BattleAnimBackground gBattleAnimBackgroundTable[] =
&gBattleAnimBackgroundImage_04, &gBattleAnimBackgroundPalette_24, &gBattleAnimBackgroundTilemap_06,
};
-extern u16 gBattlePartyID[4];
+extern u16 gBattlerPartyIndexes[4];
extern u8 gBankSpriteIds[];
extern u8 gBankAttacker;
extern u8 gBankTarget;
@@ -1299,7 +1299,7 @@ EWRAM_DATA u8 gAnimScriptActive = FALSE;
EWRAM_DATA u8 gAnimVisualTaskCount = 0;
EWRAM_DATA u8 gAnimSoundTaskCount = 0;
EWRAM_DATA struct DisableStruct *gAnimDisableStructPtr = NULL;
-EWRAM_DATA u32 gAnimMoveDmg = 0;
+EWRAM_DATA s32 gAnimMoveDmg = 0;
EWRAM_DATA u16 gAnimMovePower = 0;
EWRAM_DATA u8 gAnimFriendship = 0;
EWRAM_DATA u16 gWeatherMoveAnim = 0;
@@ -1482,16 +1482,16 @@ void LaunchBattleAnimation(const u8 *const moveAnims[], u16 move, u8 isMoveAnim)
UpdateOamPriorityInAllHealthboxes(0);
for (i = 0; i < 4; i++)
{
- if (GetBankSide(i) != 0)
- gAnimSpeciesByBanks[i] = GetMonData(&gEnemyParty[gBattlePartyID[i]], MON_DATA_SPECIES);
+ if (GetBattlerSide(i) != 0)
+ gAnimSpeciesByBanks[i] = GetMonData(&gEnemyParty[gBattlerPartyIndexes[i]], MON_DATA_SPECIES);
else
- gAnimSpeciesByBanks[i] = GetMonData(&gPlayerParty[gBattlePartyID[i]], MON_DATA_SPECIES);
+ gAnimSpeciesByBanks[i] = GetMonData(&gPlayerParty[gBattlerPartyIndexes[i]], MON_DATA_SPECIES);
}
}
else
{
for (i = 0; i < 4; i++)
- gAnimSpeciesByBanks[i] = EWRAM_19348;
+ gAnimSpeciesByBanks[i] = EWRAM_19348[0];
}
if (isMoveAnim == 0)
@@ -1671,7 +1671,7 @@ static void ScriptCmd_createsprite(void)
if (subpriority < 3)
subpriority = 3;
- CreateSpriteAndAnimate(template, GetBankPosition(gAnimBankTarget, 2), GetBankPosition(gAnimBankTarget, 3), subpriority);
+ CreateSpriteAndAnimate(template, GetBattlerSpriteCoord(gAnimBankTarget, 2), GetBattlerSpriteCoord(gAnimBankTarget, 3), subpriority);
gAnimVisualTaskCount++;
}
@@ -1821,7 +1821,7 @@ static void ScriptCmd_monbg(void)
if (IsAnimBankSpriteVisible(bank))
{
- identity = GetBankIdentity(bank);
+ identity = GetBattlerPosition(bank);
identity += 0xFF;
if (identity <= 1 || IsContest() != 0)
toBG_2 = 0;
@@ -1853,7 +1853,7 @@ static void ScriptCmd_monbg(void)
bank ^= 2;
if (animBank >= ANIM_BANK_ATK_PARTNER && IsAnimBankSpriteVisible(bank))
{
- identity = GetBankIdentity(bank);
+ identity = GetBattlerPosition(bank);
identity += 0xFF;
if (identity <= 1 || IsContest() != 0)
toBG_2 = 0;
@@ -1925,7 +1925,7 @@ void MoveBattlerSpriteToBG(u8 bank, u8 toBG_2)
spriteId = gBankSpriteIds[bank];
gBattle_BG1_X = -(gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x) + 32;
- if (IsContest() != 0 && IsSpeciesNotUnown(EWRAM_19348) != 0)
+ if (IsContest() != 0 && IsSpeciesNotUnown(EWRAM_19348[0]) != 0)
gBattle_BG1_X--;
gBattle_BG1_Y = -(gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y) + 32;
gSprites[gBankSpriteIds[bank]].invisible = TRUE;
@@ -1939,7 +1939,7 @@ void MoveBattlerSpriteToBG(u8 bank, u8 toBG_2)
if (IsContest() != 0)
r2 = 0;
else
- r2 = GetBankIdentity(bank);
+ r2 = GetBattlerPosition(bank);
sub_80E4EF8(0, 0, r2, s.unk8, (u32)s.unk0, (((s32)s.unk4 - VRAM) / 2048), REG_BG1CNT_BITFIELD.charBaseBlock);
if (IsContest() != 0)
sub_8076380();
@@ -1968,7 +1968,7 @@ void MoveBattlerSpriteToBG(u8 bank, u8 toBG_2)
LoadPalette(gPlttBufferUnfaded + 0x100 + bank * 16, 0x90, 32);
DmaCopy32Defvars(3, gPlttBufferUnfaded + 0x100 + bank * 16, (void *)(PLTT + 0x120), 32);
- sub_80E4EF8(0, 0, GetBankIdentity(bank), 9, 0x6000, 0x1E, REG_BG2CNT_BITFIELD.charBaseBlock);
+ sub_80E4EF8(0, 0, GetBattlerPosition(bank), 9, 0x6000, 0x1E, REG_BG2CNT_BITFIELD.charBaseBlock);
}
}
@@ -1979,7 +1979,7 @@ static void sub_8076380(void)
struct UnknownStruct2 s;
u16 *ptr;
- if (IsSpeciesNotUnown(EWRAM_19348))
+ if (IsSpeciesNotUnown(EWRAM_19348[0]))
{
sub_8078914(&s);
ptr = s.unk4;
@@ -2111,7 +2111,7 @@ static void sub_807672C(u8 taskId)
gTasks[taskId].data[1]++;
if (gTasks[taskId].data[1] != 1)
{
- identity = GetBankIdentity(gTasks[taskId].data[2]);
+ identity = GetBattlerPosition(gTasks[taskId].data[2]);
identity += 0xFF;
if (identity <= 1 || IsContest() != 0)
to_BG2 = 0;
@@ -2155,7 +2155,7 @@ static void ScriptCmd_monbg_22(void)
if (IsAnimBankSpriteVisible(bank))
{
- identity = GetBankIdentity(bank);
+ identity = GetBattlerPosition(bank);
identity += 0xFF;
if (identity <= 1 || IsContest() != 0)
r1 = 0;
@@ -2168,7 +2168,7 @@ static void ScriptCmd_monbg_22(void)
bank ^= 2;
if (animBankId > ANIM_BANK_TARGET && IsAnimBankSpriteVisible(bank))
{
- identity = GetBankIdentity(bank);
+ identity = GetBattlerPosition(bank);
identity += 0xFF;
if (identity <= 1 || IsContest() != 0)
r1 = 0;
@@ -2223,7 +2223,7 @@ static void sub_80769A4(u8 taskId)
if (gTasks[taskId].data[1] != 1)
{
bank = gTasks[taskId].data[2];
- identity = GetBankIdentity(bank);
+ identity = GetBattlerPosition(bank);
identity += 0xFF;
if (identity <= 1 || IsContest() != 0)
toBG_2 = 0;
@@ -2361,7 +2361,7 @@ static void ScriptCmd_fadetobgfromset(void)
if (IsContest())
gTasks[taskId].tBackgroundId = bg3;
- else if (GetBankSide(gAnimBankTarget) == 0)
+ else if (GetBattlerSide(gAnimBankTarget) == 0)
gTasks[taskId].tBackgroundId = bg2;
else
gTasks[taskId].tBackgroundId = bg1;
@@ -2486,7 +2486,7 @@ s8 BattleAnimAdjustPanning(s8 a)
{
if (!IsContest() && (EWRAM_17810[gAnimBankAttacker].unk0 & 0x10))
{
- a = GetBankSide(gAnimBankAttacker) ? 0xC0 : 0x3F;
+ a = GetBattlerSide(gAnimBankAttacker) ? 0xC0 : 0x3F;
}
//_08076FDC
else
@@ -2505,9 +2505,9 @@ s8 BattleAnimAdjustPanning(s8 a)
//_08077004
else
{
- if (GetBankSide(gAnimBankAttacker) == 0)
+ if (GetBattlerSide(gAnimBankAttacker) == 0)
{
- if (GetBankSide(gAnimBankTarget) == 0)
+ if (GetBattlerSide(gAnimBankTarget) == 0)
}
//_08077042
else
@@ -2520,7 +2520,7 @@ s8 BattleAnimAdjustPanning(s8 a)
//_0807706E
}
*/
-__attribute__((naked))
+NAKED
s8 BattleAnimAdjustPanning(s8 a)
{
asm(".syntax unified\n\
@@ -2544,7 +2544,7 @@ s8 BattleAnimAdjustPanning(s8 a)
cmp r0, 0\n\
beq _08076FDC\n\
adds r0, r2, 0\n\
- bl GetBankSide\n\
+ bl GetBattlerSide\n\
lsls r0, 24\n\
movs r4, 0xC0\n\
cmp r0, 0\n\
@@ -2576,13 +2576,13 @@ _08077000: .4byte gAnimBankTarget\n\
_08077004:\n\
ldr r0, _0807702C @ =gAnimBankAttacker\n\
ldrb r0, [r0]\n\
- bl GetBankSide\n\
+ bl GetBattlerSide\n\
lsls r0, 24\n\
cmp r0, 0\n\
bne _08077042\n\
ldr r0, _08077030 @ =gAnimBankTarget\n\
ldrb r0, [r0]\n\
- bl GetBankSide\n\
+ bl GetBattlerSide\n\
lsls r0, 24\n\
cmp r0, 0\n\
bne _0807706E\n\
@@ -2606,7 +2606,7 @@ _08077034:\n\
_08077042:\n\
ldr r0, _08077064 @ =gAnimBankTarget\n\
ldrb r0, [r0]\n\
- bl GetBankSide\n\
+ bl GetBattlerSide\n\
lsls r0, 24\n\
lsrs r0, 24\n\
cmp r0, 0x1\n\
@@ -2654,14 +2654,14 @@ s8 BattleAnimAdjustPanning2(s8 pan)
{
if (!IsContest() && (EWRAM_17810[gAnimBankAttacker].unk0 & 0x10))
{
- if (GetBankSide(gAnimBankAttacker) != 0)
+ if (GetBattlerSide(gAnimBankAttacker) != 0)
pan = 0x3F;
else
pan = 0xC0;
}
else
{
- if (GetBankSide(gAnimBankAttacker) != 0 || IsContest() != 0)
+ if (GetBattlerSide(gAnimBankAttacker) != 0 || IsContest() != 0)
pan = -pan;
}
return pan;
@@ -3044,7 +3044,7 @@ static void ScriptCmd_monbgprio_28(void)
else
bank = gAnimBankAttacker;
- bankIdentity = GetBankIdentity(bank);
+ bankIdentity = GetBattlerPosition(bank);
if (!IsContest() && (bankIdentity == 0 || bankIdentity == 3))
{
REG_BG1CNT_BITFIELD.priority = 1;
@@ -3070,13 +3070,13 @@ static void ScriptCmd_monbgprio_2A(void)
wantedBank = T1_READ_8(sBattleAnimScriptPtr + 1);
sBattleAnimScriptPtr += 2;
- if (GetBankSide(gAnimBankAttacker) != GetBankSide(gAnimBankTarget))
+ if (GetBattlerSide(gAnimBankAttacker) != GetBattlerSide(gAnimBankTarget))
{
if (wantedBank != 0)
bank = gAnimBankTarget;
else
bank = gAnimBankAttacker;
- bankIdentity = GetBankIdentity(bank);
+ bankIdentity = GetBattlerPosition(bank);
if (!IsContest() && (bankIdentity == 0 || bankIdentity == 3))
{
REG_BG1CNT_BITFIELD.priority = 1;
@@ -3089,7 +3089,7 @@ static void ScriptCmd_invisible(void)
{
u8 spriteId;
- spriteId = GetAnimBankSpriteId(T1_READ_8(sBattleAnimScriptPtr + 1));
+ spriteId = GetAnimBattlerSpriteId(T1_READ_8(sBattleAnimScriptPtr + 1));
if (spriteId != 0xFF)
gSprites[spriteId].invisible = TRUE;
@@ -3100,7 +3100,7 @@ static void ScriptCmd_visible(void)
{
u8 spriteId;
- spriteId = GetAnimBankSpriteId(T1_READ_8(sBattleAnimScriptPtr + 1));
+ spriteId = GetAnimBattlerSpriteId(T1_READ_8(sBattleAnimScriptPtr + 1));
if (spriteId != 0xFF)
gSprites[spriteId].invisible = FALSE;
@@ -3116,17 +3116,17 @@ static void ScriptCmd_doublebattle_2D(void)
wantedBank = T1_READ_8(sBattleAnimScriptPtr + 1);
sBattleAnimScriptPtr += 2;
if (!IsContest() && IsDoubleBattle()
- && GetBankSide(gAnimBankAttacker) == GetBankSide(gAnimBankTarget))
+ && GetBattlerSide(gAnimBankAttacker) == GetBattlerSide(gAnimBankTarget))
{
if (wantedBank == 0)
{
- r4 = GetBankIdentity_permutated(gAnimBankAttacker);
- spriteId = GetAnimBankSpriteId(0);
+ r4 = GetBattlerPosition_permutated(gAnimBankAttacker);
+ spriteId = GetAnimBattlerSpriteId(0);
}
else
{
- r4 = GetBankIdentity_permutated(gAnimBankTarget);
- spriteId = GetAnimBankSpriteId(1);
+ r4 = GetBattlerPosition_permutated(gAnimBankTarget);
+ spriteId = GetAnimBattlerSpriteId(1);
}
if (spriteId != 0xFF)
{
@@ -3150,17 +3150,17 @@ static void ScriptCmd_doublebattle_2E(void)
wantedBank = T1_READ_8(sBattleAnimScriptPtr + 1);
sBattleAnimScriptPtr += 2;
if (!IsContest() && IsDoubleBattle()
- && GetBankSide(gAnimBankAttacker) == GetBankSide(gAnimBankTarget))
+ && GetBattlerSide(gAnimBankAttacker) == GetBattlerSide(gAnimBankTarget))
{
if (wantedBank == 0)
{
- r4 = GetBankIdentity_permutated(gAnimBankAttacker);
- spriteId = GetAnimBankSpriteId(0);
+ r4 = GetBattlerPosition_permutated(gAnimBankAttacker);
+ spriteId = GetAnimBattlerSpriteId(0);
}
else
{
- r4 = GetBankIdentity_permutated(gAnimBankTarget);
- spriteId = GetAnimBankSpriteId(1);
+ r4 = GetBattlerPosition_permutated(gAnimBankTarget);
+ spriteId = GetAnimBattlerSpriteId(1);
}
if (spriteId != 0xFF && r4 == 2)
{
diff --git a/src/battle/battle_anim_807B69C.c b/src/battle/battle_anim_807B69C.c
index 6043efb0c..92099c495 100644
--- a/src/battle/battle_anim_807B69C.c
+++ b/src/battle/battle_anim_807B69C.c
@@ -22,7 +22,7 @@ extern const u8 *const gBattleAnims_StatusConditions[];
extern const struct OamData gOamData_837E05C;
extern const struct OamData gOamData_837DF24;
-extern u8 GetBankPosition(u8, u8);
+extern u8 GetBattlerSpriteCoord(u8, u8);
extern void sub_80E32E0(u8);
@@ -180,8 +180,8 @@ static void sub_807B8A4(struct Sprite *sprite)
void sub_807B920(u8 taskId)
{
- s16 x = GetBankPosition(gAnimBankTarget, 2) - 32;
- s16 y = GetBankPosition(gAnimBankTarget, 3) - 36;
+ s16 x = GetBattlerSpriteCoord(gAnimBankTarget, 2) - 32;
+ s16 y = GetBattlerSpriteCoord(gAnimBankTarget, 3) - 36;
u8 spriteId;
if (IsContest())
diff --git a/src/battle/battle_anim_80A7E7C.c b/src/battle/battle_anim_80A7E7C.c
index a8b0ec329..480cb3d72 100644
--- a/src/battle/battle_anim_80A7E7C.c
+++ b/src/battle/battle_anim_80A7E7C.c
@@ -102,7 +102,7 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_83C2010 =
void AnimTask_ShakeMon(u8 taskId)
{
u8 spriteId;
- spriteId = GetAnimBankSpriteId(gBattleAnimArgs[0]);
+ spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
if (spriteId == 0xff)
{
DestroyAnimVisualTask(taskId);
@@ -170,7 +170,7 @@ void AnimTask_ShakeMon2(u8 taskId)
destroy = FALSE;
if (gBattleAnimArgs[0] < 4)
{
- sprite = GetAnimBankSpriteId(gBattleAnimArgs[0]);
+ sprite = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
if (sprite == 0xff)
{
DestroyAnimVisualTask(taskId);
@@ -182,17 +182,17 @@ void AnimTask_ShakeMon2(u8 taskId)
switch (gBattleAnimArgs[0])
{
case 4:
- side = GetBankByIdentity(0);
+ side = GetBattlerAtPosition(0);
break;
case 5:
- side = GetBankByIdentity(2);
+ side = GetBattlerAtPosition(2);
break;
case 6:
- side = GetBankByIdentity(1);
+ side = GetBattlerAtPosition(1);
break;
case 7:
default:
- side = GetBankByIdentity(3);
+ side = GetBattlerAtPosition(3);
break;
}
@@ -263,7 +263,7 @@ static void AnimTask_ShakeMon2Step(u8 taskId)
// arg 4: delay
void AnimTask_ShakeMonInPlace(u8 taskId)
{
- u8 spriteId = GetAnimBankSpriteId(gBattleAnimArgs[0]);
+ u8 spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
if (spriteId == 0xff)
{
DestroyAnimVisualTask(taskId);
@@ -328,7 +328,7 @@ static void AnimTask_ShakeMonInPlaceStep(u8 taskId)
// arg 4: duration
void AnimTask_ShakeAndSinkMon(u8 taskId)
{
- u8 sprite = GetAnimBankSpriteId(gBattleAnimArgs[0]);
+ u8 sprite = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
gSprites[sprite].pos2.x = gBattleAnimArgs[1];
TASK.data[0] = sprite;
TASK.data[1] = gBattleAnimArgs[1];
@@ -378,7 +378,7 @@ void AnimTask_TranslateMonElliptical(u8 taskId)
u8 wavePeriod;
wavePeriod = 1;
- spriteId = GetAnimBankSpriteId(gBattleAnimArgs[0]);
+ spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
if (gBattleAnimArgs[4] > 5)
gBattleAnimArgs[4] = 5;
@@ -427,7 +427,7 @@ static void sub_80A8488(u8 taskId)
// arg 4: speed (valid values are 0-5)
void AnimTask_TranslateMonEllipticalRespectSide(u8 taskId)
{
- if (GetBankSide(gAnimBankAttacker) != SIDE_PLAYER)
+ if (GetBattlerSide(gAnimBankAttacker) != B_SIDE_PLAYER)
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
AnimTask_TranslateMonElliptical(taskId);
@@ -440,7 +440,7 @@ void AnimTask_TranslateMonEllipticalRespectSide(u8 taskId)
static void DoHorizontalLunge(struct Sprite *sprite)
{
sprite->invisible = TRUE;
- if (GetBankSide(gAnimBankAttacker) != SIDE_PLAYER)
+ if (GetBattlerSide(gAnimBankAttacker) != B_SIDE_PLAYER)
sprite->data[1] = -gBattleAnimArgs[1];
else
sprite->data[1] = gBattleAnimArgs[1];
@@ -470,7 +470,7 @@ static void DoVerticalDip(struct Sprite *sprite)
{
u8 spriteId;
sprite->invisible = TRUE;
- spriteId = GetAnimBankSpriteId(gBattleAnimArgs[2]);
+ spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[2]);
sprite->data[0] = gBattleAnimArgs[0];
sprite->data[1] = 0;
sprite->data[2] = gBattleAnimArgs[1];
@@ -572,7 +572,7 @@ static void SlideMonToOffset(struct Sprite *sprite)
battler = gAnimBankTarget;
monSpriteId = gBankSpriteIds[battler];
- if (GetBankSide(battler) != SIDE_PLAYER)
+ if (GetBattlerSide(battler) != B_SIDE_PLAYER)
{
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
if (gBattleAnimArgs[3] == 1)
@@ -609,7 +609,7 @@ static void sub_80A8818(struct Sprite *sprite)
v1 = gAnimBankTarget;
}
spriteId = gBankSpriteIds[v1];
- if (GetBankSide(v1))
+ if (GetBattlerSide(v1))
{
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
if (gBattleAnimArgs[3] == 1)
@@ -659,12 +659,12 @@ static void sub_80A88F0(struct Sprite *sprite)
void AnimTask_WindUpLunge(u8 taskId)
{
s16 wavePeriod = 0x8000 / gBattleAnimArgs[3];
- if (GetBankSide(gAnimBankAttacker) != SIDE_PLAYER)
+ if (GetBattlerSide(gAnimBankAttacker) != B_SIDE_PLAYER)
{
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
gBattleAnimArgs[5] = -gBattleAnimArgs[5];
}
- TASK.data[0] = GetAnimBankSpriteId(gBattleAnimArgs[0]);
+ TASK.data[0] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
TASK.data[1] = (gBattleAnimArgs[1] << 8) / gBattleAnimArgs[3];
TASK.data[2] = gBattleAnimArgs[2];
TASK.data[3] = gBattleAnimArgs[3];
@@ -718,7 +718,7 @@ void sub_80A8A80(u8 taskId)
{
case 0:
case 1:
- spriteId = GetAnimBankSpriteId(gBattleAnimArgs[0]);
+ spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
break;
case 2:
if (!IsAnimBankSpriteVisible(gAnimBankAttacker ^ 2))
@@ -741,7 +741,7 @@ void sub_80A8A80(u8 taskId)
return;
}
TASK.data[0] = spriteId;
- if (GetBankSide(gAnimBankTarget))
+ if (GetBattlerSide(gAnimBankTarget))
{
TASK.data[1] = gBattleAnimArgs[1];
}
@@ -774,10 +774,10 @@ static void sub_80A8B3C(u8 taskId)
void AnimTask_SwayMon(u8 taskId)
{
u8 spriteId;
- if (GetBankSide(gAnimBankAttacker) != SIDE_PLAYER)
+ if (GetBattlerSide(gAnimBankAttacker) != B_SIDE_PLAYER)
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
- spriteId = GetAnimBankSpriteId(gBattleAnimArgs[4]);
+ spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[4]);
TASK.data[0] = gBattleAnimArgs[0];
TASK.data[1] = gBattleAnimArgs[1];
TASK.data[2] = gBattleAnimArgs[2];
@@ -812,7 +812,7 @@ static void AnimTask_SwayMonStep(u8 taskId)
}
else
{
- if (GetBankSide(TASK.data[5]) == SIDE_PLAYER)
+ if (GetBattlerSide(TASK.data[5]) == B_SIDE_PLAYER)
{
gSprites[spriteId].pos2.y = (sineValue >= 0) ? sineValue : -sineValue;
}
@@ -846,7 +846,7 @@ static void AnimTask_SwayMonStep(u8 taskId)
void AnimTask_ScaleMonAndRestore(u8 taskId)
{
u8 spriteId;
- spriteId = GetAnimBankSpriteId(gBattleAnimArgs[3]);
+ spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[3]);
sub_8078E70(spriteId, gBattleAnimArgs[4]);
TASK.data[0] = gBattleAnimArgs[0];
TASK.data[1] = gBattleAnimArgs[1];
@@ -886,7 +886,7 @@ static void AnimTask_ScaleMonAndRestoreStep(u8 taskId)
void sub_80A8E04(u8 taskId)
{
u8 spriteId;
- spriteId = GetAnimBankSpriteId(gBattleAnimArgs[2]);
+ spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[2]);
sub_8078E70(spriteId, 0);
TASK.data[1] = 0;
TASK.data[2] = gBattleAnimArgs[0];
@@ -909,11 +909,11 @@ void sub_80A8E04(u8 taskId)
{
if (gBattleAnimArgs[2] == 0)
{
- TASK.data[7] = !GetBankSide(gAnimBankAttacker);
+ TASK.data[7] = !GetBattlerSide(gAnimBankAttacker);
}
else
{
- TASK.data[7] = !GetBankSide(gAnimBankTarget);
+ TASK.data[7] = !GetBattlerSide(gAnimBankTarget);
}
}
if (TASK.data[7])
@@ -930,20 +930,20 @@ void sub_80A8E04(u8 taskId)
void sub_80A8EFC(u8 taskId)
{
u8 spriteId;
- spriteId = GetAnimBankSpriteId(gBattleAnimArgs[2]);
+ spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[2]);
sub_8078E70(spriteId, 0);
TASK.data[1] = 0;
TASK.data[2] = gBattleAnimArgs[0];
if (gBattleAnimArgs[2] == 0)
{
- if (GetBankSide(gAnimBankAttacker))
+ if (GetBattlerSide(gAnimBankAttacker))
{
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
}
}
else
{
- if (GetBankSide(gAnimBankTarget))
+ if (GetBattlerSide(gAnimBankTarget))
{
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
}
@@ -1023,7 +1023,7 @@ void sub_80A9058(u8 taskId)
TASK.data[12] = 0;
TASK.data[10] = gBattleAnimArgs[3];
TASK.data[11] = gBattleAnimArgs[4];
- TASK.data[7] = GetAnimBankSpriteId(1);
+ TASK.data[7] = GetAnimBattlerSpriteId(1);
TASK.data[8] = gSprites[TASK.data[7]].pos2.x;
TASK.data[9] = gSprites[TASK.data[7]].pos2.y;
TASK.data[0] = 0;
diff --git a/src/battle/battle_anim_812C144.c b/src/battle/battle_anim_812C144.c
new file mode 100644
index 000000000..eeb2c3514
--- /dev/null
+++ b/src/battle/battle_anim_812C144.c
@@ -0,0 +1,1843 @@
+#include "global.h"
+#include "battle.h"
+#include "battle_anim.h"
+#include "contest.h"
+#include "data2.h"
+#include "decompress.h"
+#include "ewram.h"
+#include "palette.h"
+#include "random.h"
+#include "rom_8077ABC.h"
+#include "scanline_effect.h"
+#include "sound.h"
+#include "trig.h"
+#include "constants/songs.h"
+
+extern s16 gBattleAnimArgs[];
+extern u8 gAnimBankAttacker;
+extern u8 gAnimBankTarget;
+extern u8 gAnimVisualTaskCount;
+extern s32 gAnimMoveDmg;
+extern u16 gBattle_WIN0H;
+extern u16 gBattle_WIN0V;
+extern u16 gBattle_WIN1H;
+extern u16 gBattle_WIN1V;
+extern u16 gBattle_BG1_X;
+extern u16 gBattle_BG1_Y;
+extern u16 gBattle_BG2_X;
+extern u16 gBattle_BG2_Y;
+
+extern const struct SpriteTemplate gBattleAnimSpriteTemplate_83D7220;
+extern const struct SpriteTemplate gSpriteTemplate_8402500;
+extern const union AffineAnimCmd *const gSpriteAffineAnimTable_81E7C18[];
+extern const union AffineAnimCmd *const gSpriteAffineAnimTable_81E7BEC[];
+extern const union AffineAnimCmd gUnknown_08402400[];
+extern const union AffineAnimCmd gUnknown_084024B0[];
+extern const union AffineAnimCmd gUnknown_08402518[];
+extern const union AffineAnimCmd gUnknown_08402540[];
+extern const union AffineAnimCmd gUnknown_08402590[];
+extern const union AffineAnimCmd gUnknown_08402610[];
+extern const u32 gUnknown_08D2AA98[];
+extern const u32 gUnknown_08D2A9E0[];
+extern const u16 gUnknown_08D2AA80[];
+extern const s8 gUnknown_084025C0[];
+extern const s8 gUnknown_08402604[];
+extern const u8 gUnknown_08402608[];
+extern const struct SpriteTemplate gBattleAnimSpriteTemplate_84025EC;
+extern u8 gBattleMonForms[];
+extern u8 gBankSpriteIds[];
+
+extern u8 sub_8046234(s16 x, s16 y, u8 a3);
+
+static void sub_812C184(struct Sprite *sprite);
+static void sub_812C268(struct Sprite *sprite);
+static void sub_812C2A4(struct Sprite *sprite);
+static void sub_812C380(struct Sprite *sprite);
+static void sub_812C40C(struct Sprite *sprite);
+static void sub_812C450(struct Sprite *sprite);
+static void sub_812C4FC(struct Sprite *sprite);
+static void sub_812C588(u8 taskId);
+static void sub_812C64C(u8 taskId);
+static void sub_812C798(struct Sprite *sprite);
+static void sub_812C7C8(struct Sprite *sprite);
+static void sub_812CA04(struct Sprite *sprite);
+static void sub_812CAD0(struct Sprite *sprite);
+static void sub_812CBB4(struct Sprite *sprite);
+static void sub_812CD64(struct Sprite *sprite);
+static void sub_812CEF0(u8 taskId);
+static void sub_812D06C(u8 taskId);
+static void sub_812D254(struct Sprite *sprite);
+static void sub_812D4EC(struct Sprite *sprite);
+static void sub_812D5E8(struct Sprite *sprite);
+static void sub_812DFEC(struct Sprite *sprite);
+static void sub_812E09C(struct Sprite *sprite);
+static void sub_812E0F8(struct Sprite *sprite);
+static void sub_812E638(u8 taskId);
+static void sub_812E7F0(struct Sprite *sprite);
+static void sub_812E8B4(u8 taskId);
+
+
+void sub_812C144(struct Sprite *sprite)
+{
+ sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->pos1.y += gBattleAnimArgs[1];
+
+ if (gBattleAnimArgs[3] == 0)
+ sprite->data[0] = gBattleAnimArgs[2];
+ else
+ sprite->data[0] = -gBattleAnimArgs[2];
+
+ sprite->data[1] = gBattleAnimArgs[4];
+ sprite->callback = sub_812C184;
+}
+
+static void sub_812C184(struct Sprite *sprite)
+{
+ if (sprite->data[1] > 0)
+ {
+ sprite->pos2.x = sprite->data[2] >> 8;
+ sprite->data[2] += sprite->data[0];
+ sprite->invisible ^= 1;
+ sprite->data[1]--;
+ }
+ else
+ {
+ DestroyAnimSprite(sprite);
+ }
+}
+
+void sub_812C1D0(u8 taskId)
+{
+ sub_8046234(
+ GetBattlerSpriteCoord(gAnimBankTarget, 2) + 8,
+ GetBattlerSpriteCoord(gAnimBankTarget, 3) + 8,
+ 0);
+ DestroyAnimVisualTask(taskId);
+
+}
+
+void sub_812C220(struct Sprite *sprite)
+{
+ sprite->data[0] = 90;
+ sprite->callback = WaitAnimForDuration;
+ sprite->data[1] = 7;
+ StoreSpriteCallbackInData(sprite, sub_812C268);
+ REG_BLDCNT = 0x3F40;
+ REG_BLDALPHA = ((16 - sprite->data[1]) << 8) | sprite->data[1];
+}
+
+static void sub_812C268(struct Sprite *sprite)
+{
+ REG_BLDALPHA = ((16 - sprite->data[1]) << 8) | sprite->data[1];
+ if (--sprite->data[1] < 0)
+ {
+ sprite->invisible = 1;
+ sprite->callback = sub_812C2A4;
+ }
+}
+
+static void sub_812C2A4(struct Sprite *sprite)
+{
+ REG_BLDCNT = 0;
+ REG_BLDALPHA = 0;
+ DestroyAnimSprite(sprite);
+}
+
+void sub_812C2BC(struct Sprite *sprite)
+{
+ u16 rotation;
+ u8 x = GetBattlerSpriteCoord(gAnimBankTarget, 2);
+ u8 y = GetBattlerSpriteCoord(gAnimBankTarget, 3);
+
+ sub_8078764(sprite, 1);
+
+ rotation = ArcTan2Neg(sprite->pos1.x - x, sprite->pos1.y - y);
+ rotation += 0x6000;
+ if (IsContest())
+ rotation += 0x4000;
+
+ sub_8078FDC(sprite, 0, 0x100, 0x100, rotation);
+
+ sprite->data[0] = gBattleAnimArgs[2];
+ sprite->data[2] = x;
+ sprite->data[4] = y;
+ sprite->callback = StartTranslateAnimSpriteByDeltas;
+ StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
+}
+
+void sub_812C358(struct Sprite *sprite)
+{
+ REG_BLDCNT = 0x3F40;
+ REG_BLDALPHA = 0x1000;
+ sprite->data[0] = 4;
+ sprite->callback = sub_812C380;
+}
+
+static void sub_812C380(struct Sprite *sprite)
+{
+ REG_BLDALPHA = ((16 - sprite->data[0]) << 8) | sprite->data[0];
+
+ if (sprite->data[1])
+ sprite->data[0]--;
+ else
+ sprite->data[0]++;
+
+ if (sprite->data[0] == 15 || sprite->data[0] == 4)
+ sprite->data[1] ^= 1;
+
+ if (sprite->data[2]++ > 70)
+ {
+ REG_BLDCNT = 0;
+ REG_BLDALPHA = 0;
+ StartSpriteAffineAnim(sprite, 1);
+ sprite->data[2] = 0;
+ sprite->invisible = 1;
+ sprite->affineAnimPaused = 1;
+ sprite->callback = sub_812C40C;
+ }
+}
+
+static void sub_812C40C(struct Sprite *sprite)
+{
+ if (sprite->data[2]++ > 9)
+ {
+ sprite->invisible = 0;
+ sprite->affineAnimPaused = 0;
+ if (sprite->affineAnimEnded)
+ sprite->callback = sub_812C450;
+ }
+}
+
+static void sub_812C450(struct Sprite *sprite)
+{
+ switch (sprite->data[3])
+ {
+ case 0:
+ case 1:
+ sprite->pos2.x = 1;
+ sprite->pos2.y = 0;
+ break;
+ case 2:
+ case 3:
+ sprite->pos2.x = -1;
+ sprite->pos2.y = 0;
+ break;
+ case 4:
+ case 5:
+ sprite->pos2.x = 0;
+ sprite->pos2.y = 1;
+ break;
+ case 6:
+ default:
+ sprite->pos2.x = 0;
+ sprite->pos2.y = -1;
+ break;
+ }
+
+ if (++sprite->data[3] > 7)
+ sprite->data[3] = 0;
+
+ if (sprite->data[4]++ > 15)
+ {
+ sprite->data[0] = 16;
+ sprite->data[1] = 0;
+ REG_BLDCNT = 0x3F40;
+ REG_BLDALPHA = sprite->data[0];
+ sprite->callback = sub_812C4FC;
+ }
+}
+
+static void sub_812C4FC(struct Sprite *sprite)
+{
+ REG_BLDALPHA = ((16 - sprite->data[0]) << 8) | sprite->data[0];
+
+ if (sprite->data[1]++ > 1)
+ {
+ sprite->data[0]--;
+ sprite->data[1] = 0;
+ }
+
+ if (sprite->data[0] == 0)
+ sprite->invisible = 1;
+
+ if (sprite->data[0] < 0)
+ {
+ REG_BLDCNT = 0;
+ REG_BLDALPHA = 0;
+ DestroyAnimSprite(sprite);
+ }
+}
+
+void sub_812C560(u8 taskId)
+{
+ gTasks[taskId].func = sub_812C588;
+ gAnimVisualTaskCount--;
+}
+
+static void sub_812C588(u8 taskId)
+{
+ int i;
+ u16 lastColor;
+ u8 paletteIndex = sub_80789BC();
+
+ if (++gTasks[taskId].data[5] == 4)
+ {
+ lastColor = gPlttBufferFaded[paletteIndex * 16 + 11];
+ for (i = 10; i > 0; i--)
+ gPlttBufferFaded[paletteIndex * 16 + i + 1] = gPlttBufferFaded[paletteIndex * 16 + i];
+
+ gPlttBufferFaded[paletteIndex * 16 + 1] = lastColor;
+ gTasks[taskId].data[5] = 0;
+ }
+
+ if ((u16)gBattleAnimArgs[7] == 0xFFFF)
+ DestroyTask(taskId);
+}
+
+void sub_812C624(u8 taskId)
+{
+ gTasks[taskId].func = sub_812C64C;
+ gAnimVisualTaskCount--;
+}
+
+static void sub_812C64C(u8 taskId)
+{
+ int i;
+ u16 lastColor;
+ u8 paletteIndex = sub_80789BC();
+
+ if (++gTasks[taskId].data[5] == 4)
+ {
+ lastColor = gPlttBufferFaded[paletteIndex * 16 + 11];
+ for (i = 10; i > 0; i--)
+ gPlttBufferFaded[paletteIndex * 16 + i + 1] = gPlttBufferFaded[paletteIndex * 16 + i];
+ gPlttBufferFaded[paletteIndex * 16 + 1] = lastColor;
+
+ lastColor = gPlttBufferUnfaded[paletteIndex * 16 + 11];
+ for (i = 10; i > 0; i--)
+ gPlttBufferUnfaded[paletteIndex * 16 + i + 1] = gPlttBufferUnfaded[paletteIndex * 16 + i];
+ gPlttBufferUnfaded[paletteIndex * 16 + 1] = lastColor;
+
+ gTasks[taskId].data[5] = 0;
+ }
+
+ if ((u16)gBattleAnimArgs[7] == 0xFFFF)
+ DestroyTask(taskId);
+}
+
+void sub_812C720(struct Sprite *sprite)
+{
+ u16 x;
+ u16 y;
+
+ InitAnimSpritePos(sprite, 1);
+ SetAverageBattlerPositions(gAnimBankTarget, 0, &x, &y);
+
+ if (GetBattlerSide(gAnimBankAttacker) != B_SIDE_PLAYER)
+ gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+
+ sprite->data[0] = gBattleAnimArgs[4];
+ sprite->data[2] = x + gBattleAnimArgs[2];
+ sprite->data[4] = y + gBattleAnimArgs[3];
+ sprite->data[5] = -50;
+
+ InitAnimSpriteTranslationOverDuration(sprite);
+ sprite->callback = sub_812C798;
+}
+
+static void sub_812C798(struct Sprite *sprite)
+{
+ if (TranslateAnimSpriteLinearAndSine(sprite))
+ {
+ sprite->data[0] = 30;
+ sprite->data[1] = 0;
+ sprite->callback = WaitAnimForDuration;
+ StoreSpriteCallbackInData(sprite, sub_812C7C8);
+ }
+}
+
+static void sub_812C7C8(struct Sprite *sprite)
+{
+ if (sprite->data[1] & 1)
+ sprite->invisible ^= 1;
+
+ if (++sprite->data[1] == 16)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_812C80C(struct Sprite *sprite)
+{
+ sub_8078650(sprite);
+ sub_807867C(sprite, gBattleAnimArgs[0]);
+ sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->callback = sub_8078600;
+ StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
+}
+
+// This is likely fakematching due to some strange type casting behavior.
+void sub_812C848(struct Sprite *sprite)
+{
+ int var0;
+ int var1;
+ if (sprite->data[0] == 0)
+ {
+ sub_8078650(sprite);
+ sub_807867C(sprite, gBattleAnimArgs[0]);
+
+ if (!IsContest())
+ {
+ if (GetBattlerSide(gAnimBankAttacker) == B_SIDE_PLAYER)
+ {
+ sprite->data[1] = gBattleAnimArgs[2];
+ sprite->data[2] = gBattleAnimArgs[3];
+ }
+ else
+ {
+ var1 = -gBattleAnimArgs[2];
+ sprite->data[1] = var1;
+ var1 = -gBattleAnimArgs[3];
+ sprite->data[2] = var1;
+ }
+ }
+ else
+ {
+ var1 = -gBattleAnimArgs[2];
+ sprite->data[1] = var1;
+ sprite->data[2] = gBattleAnimArgs[3];
+ }
+ }
+
+ sprite->data[0]++;
+ var0 = (sprite->data[0] * 20) & 0xFF;
+ sprite->data[3] += sprite->data[1];
+ sprite->data[4] += sprite->data[2];
+ sprite->pos2.x = (sprite->data[3] + (s32)((u32)sprite->data[3] >> 31)) >> 1;
+ sprite->pos2.y = Sin(var0 & 0xFF, 5) + ((s32)(sprite->data[4] + ((u32)sprite->data[4] >> 31)) >> 1);
+
+ if ((u16)(sprite->pos1.x + sprite->pos2.x) > 240)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_812C908(struct Sprite *sprite)
+{
+ if (sprite->animEnded)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_812C924(u8 taskId)
+{
+ if (GetBattlerSide(gAnimBankTarget) == B_SIDE_OPPONENT)
+ gBattleAnimArgs[7] = 0;
+ else
+ gBattleAnimArgs[7] = 1;
+
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_812C960(u8 taskId)
+{
+ if (gAnimMoveDmg > 0)
+ gBattleAnimArgs[7] = 0;
+ else
+ gBattleAnimArgs[7] = 1;
+
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_812C990(struct Sprite *sprite)
+{
+ REG_WINOUT = 0x1F3F;
+ REG_DISPCNT |= DISPCNT_OBJWIN_ON;
+ gBattle_WIN0H = 0;
+ gBattle_WIN0V = 0;
+ REG_WIN0H = 0;
+ REG_WIN0V = 0;
+
+ sub_8078764(sprite, 0);
+
+ sprite->oam.objMode = ST_OAM_OBJ_WINDOW;
+ sprite->invisible = 1;
+ sprite->callback = sub_812CA04;
+}
+
+static void sub_812CA04(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ sprite->invisible = 0;
+ if (sprite->affineAnimEnded)
+ sprite->data[0]++;
+ break;
+ case 1:
+ case 3:
+ sprite->data[1] += 117;
+ sprite->pos2.x = sprite->data[1] >> 8;
+ if (++sprite->data[2] == 21)
+ {
+ sprite->data[2] = 0;
+ sprite->data[0]++;
+ }
+ break;
+ case 2:
+ sprite->data[1] -= 117;
+ sprite->pos2.x = sprite->data[1] >> 8;
+ if (++sprite->data[2] == 41)
+ {
+ sprite->data[2] = 0;
+ sprite->data[0]++;
+ }
+ break;
+ case 4:
+ ChangeSpriteAffineAnim(sprite, 1);
+ sprite->data[0]++;
+ break;
+ case 5:
+ if (sprite->affineAnimEnded)
+ {
+ sprite->invisible = 1;
+ sprite->callback = sub_812CAD0;
+ }
+ break;
+ }
+}
+
+static void sub_812CAD0(struct Sprite *sprite)
+{
+ REG_WINOUT = 0x3F3F;
+ REG_DISPCNT ^= DISPCNT_OBJWIN_ON;
+ DestroyAnimSprite(sprite);
+}
+
+void sub_812CAFC(struct Sprite *sprite)
+{
+ if (gBattleAnimArgs[3] == 0)
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 0);
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 1);
+ }
+
+ sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->oam.tileNum += 16;
+
+ if (gBattleAnimArgs[2] == 0)
+ {
+ sprite->oam.matrixNum = 8;
+ sprite->pos2.x = -12;
+ sprite->data[1] = 2;
+ }
+ else
+ {
+ sprite->pos2.x = 12;
+ sprite->data[1] = -2;
+ }
+
+ sprite->data[0] = gBattleAnimArgs[4];
+
+ if (sprite->data[3] != 255)
+ sprite->data[3] = gBattleAnimArgs[2];
+
+ sprite->callback = sub_812CBB4;
+}
+
+static void sub_812CBB4(struct Sprite *sprite)
+{
+ if (sprite->data[2] == 0)
+ {
+ sprite->pos2.x += sprite->data[1];
+ if (sprite->pos2.x == 0)
+ {
+ sprite->data[2]++;
+ if (sprite->data[3] == 0)
+ {
+ PlaySE1WithPanning(222, BattleAnimAdjustPanning(-64));
+ }
+ }
+ }
+ else
+ {
+ sprite->pos2.x -= sprite->data[1];
+ if (abs(sprite->pos2.x) == 12)
+ {
+ sprite->data[0]--;
+ sprite->data[2]--;
+ }
+
+ }
+
+ if (sprite->data[0] == 0)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_812CC28(struct Sprite *sprite)
+{
+ sprite->oam.objMode = ST_OAM_OBJ_WINDOW;
+ sprite->data[3] = 255;
+ sub_812CAFC(sprite);
+}
+
+void sub_812CC44(u8 taskId)
+{
+ if (IsContest())
+ {
+ REG_WININ = 0x1F3F;
+ gBattle_WIN1H = 0x98F0;
+ gBattle_WIN1V = 0x00A0;
+ REG_WIN1H = gBattle_WIN0H;
+ REG_WIN1V = gBattle_WIN0V;
+ }
+
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_812CCA8(u8 taskId)
+{
+ if (IsContest())
+ {
+ REG_WININ = 0x3F3F;
+ gBattle_WIN1H = 0;
+ gBattle_WIN1V = 0;
+ }
+
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_812CCE8(struct Sprite *sprite)
+{
+ int var0;
+ if (gBattleAnimArgs[0] == 0)
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 0) + gBattleAnimArgs[1];
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 1);
+ }
+ else
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankTarget, 0) + gBattleAnimArgs[1];
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankTarget, 1);
+ }
+
+ sprite->pos2.y = gBattleAnimArgs[2];
+ var0 = 0;
+ if (sprite->pos2.y > gBattleAnimArgs[3])
+ var0 = 1;
+
+ sprite->data[0] = var0;
+ sprite->data[1] = 0;
+ sprite->data[2] = gBattleAnimArgs[4];
+ sprite->data[3] = gBattleAnimArgs[5];
+ sprite->data[4] = gBattleAnimArgs[3];
+ sprite->callback = sub_812CD64;
+}
+
+static void sub_812CD64(struct Sprite *sprite)
+{
+ sprite->data[1] = (sprite->data[1] + sprite->data[2]) & 0xFF;
+ sprite->pos2.x = gSineTable[sprite->data[1]] >> 4;
+ sprite->pos2.y += sprite->data[3];
+
+ if (sprite->data[0])
+ {
+ if (sprite->pos2.y < sprite->data[4])
+ DestroyAnimSprite(sprite);
+ }
+ else
+ {
+ if (sprite->pos2.y > sprite->data[4])
+ DestroyAnimSprite(sprite);
+ }
+}
+
+void sub_812CDC8(u8 taskId)
+{
+ s16 var0;
+ u8 toBG2;
+ s16 var2;
+ int var3;
+ int var4;
+ s16 i;
+ struct ScanlineEffectParams scanlineParams;
+ struct Task *task = &gTasks[taskId];
+
+ if (gBattleAnimArgs[0] == 0)
+ {
+ var0 = sub_8077FC0(gAnimBankAttacker);
+ toBG2 = GetBattlerPosition_permutated(gAnimBankAttacker);
+ }
+ else
+ {
+ var0 = sub_8077FC0(gAnimBankTarget);
+ toBG2 = GetBattlerPosition_permutated(gAnimBankTarget);
+ }
+
+ task->data[0] = var0 + 36;
+ task->data[1] = task->data[0];
+ task->data[2] = var0 - 33;
+ if (task->data[2] < 0)
+ task->data[2] = 0;
+
+ task->data[3] = task->data[0];
+ task->data[4] = 8;
+ task->data[5] = gBattleAnimArgs[1];
+ task->data[6] = 0;
+ task->data[7] = 0;
+
+ if (toBG2 == 1)
+ {
+ var3 = gBattle_BG1_X;
+ task->data[8] = var3;
+ var4 = var3 + 240;
+ }
+ else
+ {
+ var3 = gBattle_BG2_X;
+ task->data[8] = var3;
+ var4 = var3 + 240;
+ }
+
+ task->data[9] = var4;
+ task->data[10] = gBattleAnimArgs[2];
+
+ if (gBattleAnimArgs[2] == 0)
+ {
+ task->data[11] = var4;
+ var2 = task->data[8];
+ }
+ else
+ {
+ task->data[11] = var3;
+ var2 = task->data[9];
+ }
+
+ task->data[15] = 0;
+
+ i = task->data[2];
+ while (i <= task->data[3])
+ {
+ gScanlineEffectRegBuffers[0][i] = var2;
+ gScanlineEffectRegBuffers[1][i] = var2;
+ i++;
+ }
+
+ if (toBG2 == 1)
+ scanlineParams.dmaDest = &REG_BG1HOFS;
+ else
+ scanlineParams.dmaDest = &REG_BG2HOFS;
+
+ scanlineParams.dmaControl = 0xA2600001;
+ scanlineParams.initState = 1;
+ scanlineParams.unused9 = 0;
+ ScanlineEffect_SetParams(scanlineParams);
+
+ task->func = sub_812CEF0;
+}
+
+static void sub_812CEF0(u8 taskId)
+{
+ s16 i;
+ struct Task *task = &gTasks[taskId];
+
+ task->data[0] -= task->data[5];
+ if (task->data[0] < task->data[2])
+ task->data[0] = task->data[2];
+
+ if (task->data[4] == 0)
+ {
+ task->data[1] -= task->data[5];
+ if (task->data[1] < task->data[2])
+ {
+ task->data[1] = task->data[2];
+ task->data[15] = 1;
+ }
+ }
+ else
+ {
+ task->data[4]--;
+ }
+
+ if (++task->data[6] > 1)
+ {
+ task->data[6] = 0;
+ task->data[7] = task->data[7] == 0 ? 1 : 0;
+
+ if (task->data[7])
+ task->data[12] = task->data[8];
+ else
+ task->data[12] = task->data[9];
+ }
+
+ i = task->data[0];
+ while (i < task->data[1])
+ {
+ gScanlineEffectRegBuffers[0][i] = task->data[12];
+ gScanlineEffectRegBuffers[1][i] = task->data[12];
+ i++;
+ }
+
+ i = task->data[1];
+ while (i <= task->data[3])
+ {
+ gScanlineEffectRegBuffers[0][i] = task->data[11];
+ gScanlineEffectRegBuffers[1][i] = task->data[11];
+ i++;
+ }
+
+ if (task->data[15])
+ {
+ if (task->data[10])
+ gScanlineEffect.state = 3;
+
+ DestroyAnimVisualTask(taskId);
+ }
+}
+
+void sub_812D008(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ task->data[0] = 0;
+ task->data[1] = 0;
+ task->data[2] = GetBattlerSpriteCoord(gAnimBankAttacker, 2);
+ task->data[3] = GetBattlerSpriteCoord(gAnimBankAttacker, 3);
+ task->data[4] = 32;
+ task->data[5] = -20;
+ task->data[6] = 0;
+ task->data[15] = GetAnimBattlerSpriteId(0);
+ task->func = sub_812D06C;
+}
+
+static void sub_812D06C(u8 taskId)
+{
+ int var0, var1;
+ s16 x, y;
+ u16 i, j;
+ u8 spriteId;
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ var0 = task->data[2];
+ if (task->data[1] & 1)
+ {
+ var1 = task->data[4];
+ x = var0 - var1;
+ }
+ else
+ {
+ var1 = task->data[4];
+ x = var0 + var1;
+ }
+
+ y = task->data[3] + task->data[5];
+ spriteId = CreateSprite(&gBattleAnimSpriteTemplate_83D7220, x, y, 6 - task->data[1]);
+ PlaySE12WithPanning(186, BattleAnimAdjustPanning(-64));
+
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].hFlip = task->data[1] & 1;
+ gSprites[spriteId].callback = SpriteCallbackDummy;
+ }
+
+ if (task->data[1] & 1)
+ {
+ task->data[4] -= 6;
+ task->data[5] -= 6;
+ }
+
+ sub_80798F4(task, task->data[15], gUnknown_08402400);
+ task->data[1]++;
+ task->data[0] = 1;
+ break;
+ case 1:
+ if (sub_807992C(task) == 0)
+ {
+ if (task->data[1] == 6)
+ {
+ task->data[6] = 8;
+ task->data[0] = 3;
+ }
+ else
+ {
+ if (task->data[1] <= 2)
+ task->data[6] = 10;
+ else
+ task->data[6] = 0;
+
+ task->data[0] = 2;
+ }
+ }
+ break;
+ case 2:
+ if (task->data[6] != 0)
+ task->data[6]--;
+ else
+ task->data[0] = 0;
+ break;
+ case 3:
+ if (task->data[6] != 0)
+ task->data[6]--;
+ else
+ task->data[0] = 4;
+ break;
+ case 4:
+ for (i = 0, j = 0; i < MAX_SPRITES; i++)
+ {
+ if (gSprites[i].template == &gBattleAnimSpriteTemplate_83D7220)
+ {
+ gSprites[i].data[0] = taskId;
+ gSprites[i].data[1] = 6;
+ StartSpriteAnim(&gSprites[i], 2);
+ gSprites[i].callback = sub_812D254;
+
+ if (++j == 6)
+ break;
+ }
+ }
+
+ task->data[6] = j;
+ task->data[0] = 5;
+ break;
+ case 5:
+ if (task->data[6] == 0)
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+static void sub_812D254(struct Sprite *sprite)
+{
+ if (sprite->animEnded)
+ {
+ gTasks[sprite->data[0]].data[sprite->data[1]]--;
+ DestroySprite(sprite);
+ }
+}
+
+void sub_812D294(struct Sprite *sprite)
+{
+ if (sprite->data[0] == 0)
+ InitAnimSpritePos(sprite, 0);
+
+ sprite->data[0]++;
+ if (sprite->data[0] < 40)
+ {
+ u16 var = sprite->data[0];
+ if ((var & 1) == 0)
+ sprite->invisible = 1;
+ else
+ sprite->invisible = 0;
+ }
+
+ if (sprite->data[0] > 30)
+ sprite->invisible = 0;
+
+ if (sprite->data[0] == 61)
+ {
+ StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
+ sprite->pos1.x += sprite->pos2.x;
+ sprite->pos1.y += sprite->pos2.y;
+ sprite->pos2.x = 0;
+ sprite->pos2.y = 0;
+ sprite->data[0] = 20;
+ sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2);
+ sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3);
+ sprite->callback = StartTranslateAnimSpriteByDeltas;
+ }
+}
+
+void sub_812D350(u8 taskId)
+{
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ sub_80798F4(&gTasks[taskId], GetAnimBattlerSpriteId(0), &gUnknown_084024B0);
+ gTasks[taskId].data[0]++;
+ break;
+ case 1:
+ if (sub_807992C(&gTasks[taskId]) == 0)
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+void sub_812D3AC(struct Sprite *sprite)
+{
+ u8 spriteId = GetAnimBattlerSpriteId(0);
+
+ switch (sprite->data[0])
+ {
+ case 0:
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 3);
+ sub_8078E70(spriteId, 0);
+ sprite->data[1] = 256;
+ sprite->data[2] = 256;
+ sprite->data[0]++;
+ break;
+ case 1:
+ sprite->data[1] += 96;
+ sprite->data[2] -= 26;
+ obj_id_set_rotscale(spriteId, sprite->data[1], sprite->data[2], 0);
+
+ if (++sprite->data[3] == 5)
+ sprite->data[0]++;
+ // fall through
+ case 2:
+ sprite->data[1] += 96;
+ sprite->data[2] += 48;
+ obj_id_set_rotscale(spriteId, sprite->data[1], sprite->data[2], 0);
+
+ if (++sprite->data[3] == 9)
+ {
+ sprite->data[3] = 0;
+ gSprites[spriteId].invisible = 1;
+ sub_8078F40(spriteId);
+ sprite->data[0]++;
+ }
+ break;
+ case 3:
+ sprite->pos2.y -= 6;
+ if (sprite->pos1.y + sprite->pos2.y < -32)
+ DestroyAnimSprite(sprite);
+ break;
+ }
+}
+
+void sub_812D4B4(struct Sprite *sprite)
+{
+ if (GetBattlerSide(gAnimBankAttacker) != B_SIDE_PLAYER)
+ sprite->pos1.x = -16;
+ else
+ sprite->pos1.x = 256;
+
+ sprite->pos1.y = 0;
+ sprite->callback = sub_812D4EC;
+}
+
+static void sub_812D4EC(struct Sprite *sprite)
+{
+ u32 newX;
+
+ sprite->data[0] += 72;
+ if (GetBattlerSide(gAnimBankAttacker) != B_SIDE_PLAYER)
+ sprite->pos2.x = sprite->data[0] >> 4;
+ else
+ sprite->pos2.x = -(sprite->data[0] >> 4);
+
+ sprite->data[1] += 16;
+ sprite->pos2.y += sprite->data[1] >> 8;
+
+ if (++sprite->data[2] % 3 == 0)
+ {
+ CreateSpriteAndAnimate(
+ &gSpriteTemplate_8402500,
+ sprite->pos1.x + sprite->pos2.x,
+ sprite->pos1.y + sprite->pos2.y,
+ sprite->subpriority + 1);
+ }
+
+ newX = sprite->pos1.x + sprite->pos2.x + 32;
+ if (newX > 304)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_812D588(struct Sprite *sprite)
+{
+ u8 rand;
+ s8 y;
+
+ rand = Random() & 3;
+ if (rand == 0)
+ sprite->oam.tileNum += 4;
+ else
+ sprite->oam.tileNum += 5;
+
+ y = Random() & 7;
+ if (y > 3)
+ y = -y;
+
+ sprite->pos2.y = y;
+ sprite->callback = sub_812D5E8;
+}
+
+static void sub_812D5E8(struct Sprite *sprite)
+{
+ if (++sprite->data[0] < 30)
+ {
+ if (++sprite->data[1] == 2)
+ {
+ sprite->invisible ^= 1;
+ sprite->data[1] = 0;
+ }
+ }
+ else
+ {
+ if (sprite->data[1] == 2)
+ sprite->invisible = 0;
+
+ if (sprite->data[1] == 3)
+ {
+ sprite->invisible = 1;
+ sprite->data[1] = -1;
+ }
+
+ sprite->data[1]++;
+ }
+
+ if (sprite->data[0] > 60)
+ DestroySprite(sprite);
+}
+
+void sub_812D674(u8 taskId)
+{
+ if (gTasks[taskId].data[0] == 0)
+ {
+ sub_80798F4(&gTasks[taskId], GetAnimBattlerSpriteId(0), &gUnknown_08402518);
+ gTasks[taskId].data[0]++;
+ }
+ else
+ {
+ if (sub_807992C(&gTasks[taskId]) == 0)
+ DestroyAnimVisualTask(taskId);
+ }
+}
+
+void sub_812D6CC(u8 taskId)
+{
+ if (gTasks[taskId].data[0] == 0)
+ {
+ sub_80798F4(&gTasks[taskId], GetAnimBattlerSpriteId(0), &gUnknown_08402540);
+ gTasks[taskId].data[0]++;
+ }
+ else
+ {
+ if (sub_807992C(&gTasks[taskId]) == 0)
+ DestroyAnimVisualTask(taskId);
+ }
+}
+
+void sub_812D724(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ InitAnimSpritePos(sprite, 0);
+ sprite->data[1] = 0x900;
+ sprite->data[2] = GetBattlerSpriteCoord(gAnimBankAttacker, 3);
+ sprite->data[0]++;
+ break;
+ case 1:
+ sprite->pos2.y -= sprite->data[1] >> 8;
+ sprite->data[1] -= 96;
+ if (sprite->pos1.y + sprite->pos2.y > sprite->data[2])
+ DestroyAnimSprite(sprite);
+ break;
+ }
+}
+
+void sub_812D790(u8 taskId)
+{
+ if (gTasks[taskId].data[0] == 0)
+ {
+ sub_80798F4(&gTasks[taskId], GetAnimBattlerSpriteId(0), &gUnknown_08402590);
+ gTasks[taskId].data[0]++;
+ }
+ else
+ {
+ if (sub_807992C(&gTasks[taskId]) == 0)
+ DestroyAnimVisualTask(taskId);
+ }
+}
+
+void sub_812D7E8(u8 taskId)
+{
+ int i, j;
+ u8 position;
+ struct Struct_sub_8078914 subStruct;
+ u8 *dest;
+ u8 *src;
+ u16 *field_4;
+ u16 *ptr;
+ u16 stretch;
+
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ REG_MOSAIC = 0;
+ if (GetBattlerPosition_permutated(gAnimBankAttacker) == 1)
+ REG_BG1CNT_BITFIELD.mosaic = 1;
+ else
+ REG_BG2CNT_BITFIELD.mosaic = 1;
+
+ gTasks[taskId].data[10] = gBattleAnimArgs[0];
+ gTasks[taskId].data[0]++;
+ break;
+ case 1:
+ if (gTasks[taskId].data[2]++ > 1)
+ {
+ gTasks[taskId].data[2] = 0;
+ gTasks[taskId].data[1]++;
+ stretch = gTasks[taskId].data[1];
+ REG_MOSAIC = (stretch << 4) | stretch;
+ if (stretch == 15)
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ case 2:
+ sub_8031FC4(gAnimBankAttacker, gAnimBankTarget, gTasks[taskId].data[10]);
+ sub_8078954(&subStruct, gAnimBankAttacker);
+
+ if (IsContest())
+ position = 0;
+ else
+ position = GetBattlerPosition(gAnimBankAttacker);
+
+ dest = gUnknown_081FAF4C[position] + (gBattleMonForms[gAnimBankAttacker] << 11);
+ src = subStruct.field_0;
+ DmaCopy32(3, dest, src, 0x800);
+
+ if (IsContest())
+ {
+ if (IsSpeciesNotUnown(EWRAM_19348[0]) != IsSpeciesNotUnown(EWRAM_19348[1]))
+ {
+ field_4 = (u16 *)subStruct.field_4;
+ for (i = 0; i < 8; i++)
+ {
+ for (j = 0; j < 4; j++)
+ {
+ u16 temp = field_4[j + i * 0x20];
+ field_4[j + i * 0x20] = field_4[(7 - j) + i * 0x20];
+ field_4[(7 - j) + i * 0x20] = temp;
+ }
+ }
+
+ for (i = 0; i < 8; i++)
+ {
+ for (j = 0; j < 8; j++)
+ {
+ field_4[j + i * 0x20] ^= 0x400;
+ }
+ }
+ }
+
+ ptr = EWRAM_19348;
+ if (IsSpeciesNotUnown(ptr[1]))
+ gSprites[gBankSpriteIds[gAnimBankAttacker]].affineAnims = gSpriteAffineAnimTable_81E7C18;
+ else
+ gSprites[gBankSpriteIds[gAnimBankAttacker]].affineAnims = gSpriteAffineAnimTable_81E7BEC;
+
+ StartSpriteAffineAnim(&gSprites[gBankSpriteIds[gAnimBankAttacker]], 0);
+ }
+
+ gTasks[taskId].data[0]++;
+ break;
+ case 3:
+ if (gTasks[taskId].data[2]++ > 1)
+ {
+ gTasks[taskId].data[2] = 0;
+ gTasks[taskId].data[1]--;
+ stretch = gTasks[taskId].data[1];
+ REG_MOSAIC = (stretch << 4) | stretch;
+
+ if (stretch == 0)
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ case 4:
+ REG_MOSAIC = 0;
+ if (GetBattlerPosition_permutated(gAnimBankAttacker) == 1)
+ REG_BG1CNT_BITFIELD.mosaic = 0;
+ else
+ REG_BG2CNT_BITFIELD.mosaic = 0;
+
+ if (!IsContest())
+ {
+ if (GetBattlerSide(gAnimBankAttacker) == B_SIDE_OPPONENT)
+ {
+ if (gTasks[taskId].data[10] == 0)
+ sub_8032984(gAnimBankAttacker, eTransformStatuses[gAnimBankAttacker].species);
+ }
+ }
+
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+void c3_80DFBE4(u8 taskId)
+{
+ gBattleAnimArgs[7] = gSprites[gBankSpriteIds[gAnimBankAttacker]].invisible;
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_812DB58(u8 taskId)
+{
+ sub_8031FC4(gAnimBankAttacker, gAnimBankTarget, 1);
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_812DB84(u8 taskId)
+{
+ struct Struct_sub_8078914 subStruct;
+
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ REG_BLDCNT = BLDCNT_TGT2_BD | BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BG0 | BLDCNT_TGT2_BG1
+ | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT1_BG1;
+ REG_BLDALPHA = 0x1000;
+ REG_BG1CNT_BITFIELD.screenSize = 0;
+ REG_BG1CNT_BITFIELD.priority = 1;
+ if (!IsContest())
+ REG_BG1CNT_BITFIELD.charBaseBlock = 1;
+
+ sub_8078914(&subStruct);
+ DmaClear32(3, subStruct.field_4, 0x1000);
+ LZDecompressVram(gUnknown_08D2AA98, subStruct.field_4);
+ LZDecompressVram(gUnknown_08D2A9E0, subStruct.field_0);
+ LoadCompressedPalette(gUnknown_08D2AA80, subStruct.field_8 * 16, 32);
+ if (IsContest())
+ {
+ sub_80763FC(subStruct.field_8, (u16 *)subStruct.field_4, 0, 0);
+ gBattle_BG1_X = -56;
+ gBattle_BG1_Y = 0;
+ }
+ else
+ {
+ if (GetBattlerSide(gAnimBankAttacker) != B_SIDE_PLAYER)
+ gBattle_BG1_X = -135;
+ else
+ gBattle_BG1_X = -10;
+
+ gBattle_BG1_Y = 0;
+ }
+
+ gTasks[taskId].data[10] = gBattle_BG1_X;
+ gTasks[taskId].data[11] = gBattle_BG1_Y;
+
+ gTasks[taskId].data[0]++;
+ PlaySE12WithPanning(SE_W234, BattleAnimAdjustPanning(-64));
+ break;
+ case 1:
+ if (gTasks[taskId].data[4]++ > 0)
+ {
+ gTasks[taskId].data[4] = 0;
+ if (++gTasks[taskId].data[1] > 12)
+ gTasks[taskId].data[1] = 12;
+
+ REG_BLDALPHA = ((16 - gTasks[taskId].data[1]) << 8) | gTasks[taskId].data[1];
+
+ if (gTasks[taskId].data[1] == 12)
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ case 2:
+ if (--gTasks[taskId].data[1] < 0)
+ gTasks[taskId].data[1] = 0;
+
+ REG_BLDALPHA = ((16 - gTasks[taskId].data[1]) << 8) | gTasks[taskId].data[1];
+
+ if (gTasks[taskId].data[1] == 0)
+ {
+ gBattle_BG1_X = gUnknown_084025C0[gTasks[taskId].data[2]] + gTasks[taskId].data[10];
+ if (++gTasks[taskId].data[2] == 4)
+ gTasks[taskId].data[0] = 4;
+ else
+ gTasks[taskId].data[0] = 3;
+ }
+ break;
+ case 3:
+ if (++gTasks[taskId].data[3] == 4)
+ {
+ gTasks[taskId].data[3] = 0;
+ gTasks[taskId].data[0] = 1;
+ PlaySE12WithPanning(SE_W234, BattleAnimAdjustPanning(-64));
+ }
+ break;
+ case 4:
+ sub_8078914(&subStruct);
+ DmaFill32Large(3, 0, subStruct.field_0, 0x2000, 0x1000);
+ DmaClear32(3, subStruct.field_4, 0x800);
+
+ if (!IsContest())
+ REG_BG1CNT_BITFIELD.charBaseBlock = 0;
+
+ REG_BG1CNT_BITFIELD.priority = 1;
+ gBattle_BG1_X = 0;
+ gBattle_BG1_Y = 0;
+ REG_BLDCNT = 0;
+ REG_BLDALPHA = 0;
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+void sub_812DEAC(struct Sprite *sprite)
+{
+ s16 var0;
+ u8 spriteId1;
+ u8 spriteId2;
+
+ var0 = Random();
+ var0 &= 0x3F;
+ if (var0 > 31)
+ var0 = 32 - var0;
+
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 0) + var0;
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 1) + 32;
+ sprite->data[1] = gBattleAnimArgs[0];
+ sprite->data[2] = gBattleAnimArgs[1];
+
+ spriteId1 = CreateSprite(&gBattleAnimSpriteTemplate_84025EC, sprite->pos1.x, sprite->pos1.y, sprite->subpriority + 1);
+ spriteId2 = CreateSprite(&gBattleAnimSpriteTemplate_84025EC, sprite->pos1.x, sprite->pos1.y, sprite->subpriority + 1);
+ StartSpriteAnim(&gSprites[spriteId1], 1);
+ StartSpriteAnim(&gSprites[spriteId2], 2);
+
+ gSprites[spriteId1].data[1] = gBattleAnimArgs[0];
+ gSprites[spriteId1].data[2] = gBattleAnimArgs[1];
+ gSprites[spriteId2].data[1] = gBattleAnimArgs[0];
+ gSprites[spriteId2].data[2] = gBattleAnimArgs[1];
+ gSprites[spriteId1].data[7] = -1;
+ gSprites[spriteId2].data[7] = -1;
+ gSprites[spriteId1].invisible = 1;
+ gSprites[spriteId2].invisible = 1;
+ gSprites[spriteId1].callback = sub_812E0F8;
+ gSprites[spriteId2].callback = sub_812E0F8;
+
+ sprite->data[6] = spriteId1;
+ sprite->data[7] = spriteId2;
+ sprite->callback = sub_812DFEC;
+}
+
+static void sub_812DFEC(struct Sprite *sprite)
+{
+ int var0;
+ s8 var1;
+
+ var0 = (u16)sprite->data[2] + (u16)sprite->data[3];
+ var1 = var0 >> 8;
+ sprite->pos2.y -= var1;
+ sprite->data[3] = var0 & 0xFF;
+ if (sprite->data[4] == 0 && sprite->pos2.y < -8)
+ {
+ gSprites[sprite->data[6]].invisible = 0;
+ sprite->data[4]++;
+ }
+
+ if (sprite->data[4] == 1 && sprite->pos2.y < -16)
+ {
+ gSprites[sprite->data[7]].invisible = 0;
+ sprite->data[4]++;
+ }
+
+ if (--sprite->data[1] == -1)
+ {
+ sprite->invisible = 1;
+ sprite->callback = sub_812E09C;
+ }
+}
+
+static void sub_812E09C(struct Sprite *sprite)
+{
+ if (gSprites[sprite->data[6]].callback == SpriteCallbackDummy
+ && gSprites[sprite->data[7]].callback == SpriteCallbackDummy)
+ {
+ DestroySprite(&gSprites[sprite->data[6]]);
+ DestroySprite(&gSprites[sprite->data[7]]);
+ DestroyAnimSprite(sprite);
+ }
+}
+
+static void sub_812E0F8(struct Sprite *sprite)
+{
+ u16 d2;
+ register u16 d3 asm("r1");
+ int var0;
+ s8 var1;
+
+ if (!sprite->invisible)
+ {
+ d2 = sprite->data[2];
+ d3 = sprite->data[3];
+ var0 = d2 + d3;
+ var1 = var0 >> 8;
+ sprite->pos2.y -= var1;
+ sprite->data[3] = var0 & 0xFF;
+ if (--sprite->data[1] == -1)
+ {
+ sprite->invisible = 1;
+ sprite->callback = SpriteCallbackDummy;
+ }
+ }
+}
+
+void sub_812E14C(u8 taskId)
+{
+ struct Struct_sub_8078914 subStruct;
+
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ REG_BLDCNT = BLDCNT_TGT2_BD | BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BG0 | BLDCNT_TGT2_BG1
+ | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT1_BG1;
+ REG_BLDALPHA = 0xD03;
+ REG_BG1CNT_BITFIELD.screenSize = 0;
+ REG_BG1CNT_BITFIELD.priority = 1;
+
+ if (!IsContest())
+ REG_BG1CNT_BITFIELD.charBaseBlock = 1;
+
+ sub_8078914(&subStruct);
+ DmaClear32(3, subStruct.field_4, 0x1000);
+ LZDecompressVram(gUnknown_08D2AA98, subStruct.field_4);
+ LZDecompressVram(gUnknown_08D2A9E0, subStruct.field_0);
+ LoadCompressedPalette(gUnknown_08D2AA80, subStruct.field_8 * 16, 32);
+
+ if (IsContest())
+ {
+ sub_80763FC(subStruct.field_8, (u16 *)subStruct.field_4, 0, 0);
+ gBattle_BG1_X = -56;
+ gBattle_BG1_Y = 0;
+ }
+ else
+ {
+ u8 position = GetBattlerPosition(gAnimBankTarget);
+ if (IsDoubleBattle() == TRUE)
+ {
+ if (position == B_POSITION_OPPONENT_LEFT)
+ gBattle_BG1_X = -155;
+ if (position == B_POSITION_OPPONENT_RIGHT)
+ gBattle_BG1_X = -115;
+ if (position == B_POSITION_PLAYER_LEFT)
+ gBattle_BG1_X = 14;
+ if (position == B_POSITION_PLAYER_RIGHT)
+ gBattle_BG1_X = -20;
+ }
+ else
+ {
+ if (position == B_POSITION_OPPONENT_LEFT)
+ gBattle_BG1_X = -135;
+ if (position == B_POSITION_PLAYER_LEFT)
+ gBattle_BG1_X = -10;
+ }
+
+ gBattle_BG1_Y = 0;
+ }
+
+ gTasks[taskId].data[10] = gBattle_BG1_X;
+ gTasks[taskId].data[11] = gBattle_BG1_Y;
+ gTasks[taskId].data[0]++;
+ break;
+ case 1:
+ gTasks[taskId].data[3] = 0;
+ if (GetBattlerSide(gAnimBankTarget) == B_SIDE_OPPONENT)
+ gBattle_BG1_X = gTasks[taskId].data[10] + gUnknown_08402604[gTasks[taskId].data[2]];
+ else
+ gBattle_BG1_X = gTasks[taskId].data[10] - gUnknown_08402604[gTasks[taskId].data[2]];
+
+ if (++gTasks[taskId].data[2] == 5)
+ gTasks[taskId].data[0] = 5;
+ else
+ gTasks[taskId].data[0]++;
+ break;
+ case 2:
+ if (--gTasks[taskId].data[1] <= 4)
+ gTasks[taskId].data[1] = 5;
+
+ REG_BLDALPHA = (gTasks[taskId].data[1] << 8) | 3;
+ if (gTasks[taskId].data[1] == 5)
+ gTasks[taskId].data[0]++;
+ break;
+ case 3:
+ if (++gTasks[taskId].data[3] > gUnknown_08402608[gTasks[taskId].data[2]])
+ gTasks[taskId].data[0]++;
+ break;
+ case 4:
+ if (++gTasks[taskId].data[1] > 13)
+ gTasks[taskId].data[1] = 13;
+
+ REG_BLDALPHA = (gTasks[taskId].data[1] << 8) | 3;
+ if (gTasks[taskId].data[1] == 13)
+ gTasks[taskId].data[0] = 1;
+ break;
+ case 5:
+ sub_8078914(&subStruct);
+ DmaClear32(3, subStruct.field_4, 0x800);
+
+ if (!IsContest())
+ REG_BG1CNT_BITFIELD.charBaseBlock = 0;
+
+ REG_BG1CNT_BITFIELD.priority = 1;
+ gBattle_BG1_X = 0;
+ gBattle_BG1_Y = 0;
+ REG_BLDCNT = 0;
+ REG_BLDALPHA = 0;
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+void sub_812E498(u8 taskId)
+{
+ if (gTasks[taskId].data[0] == 0)
+ {
+ sub_80798F4(&gTasks[taskId], GetAnimBattlerSpriteId(0), &gUnknown_08402610);
+ gTasks[taskId].data[0]++;
+ }
+ else
+ {
+ if (!sub_807992C(&gTasks[taskId]))
+ {
+ DestroyAnimVisualTask(taskId);
+ }
+ }
+}
+
+void sub_812E4F0(struct Sprite *sprite)
+{
+ if (sprite->data[0] == 0)
+ {
+ InitAnimSpritePos(sprite, 0);
+ sprite->data[0]++;
+ }
+ else if (sprite->data[0]++ > 20)
+ {
+ sprite->data[1] += 160;
+ sprite->data[2] += 128;
+
+ if (GetBattlerSide(gAnimBankAttacker) != B_SIDE_PLAYER)
+ sprite->pos2.x = -(sprite->data[1] >> 8);
+ else
+ sprite->pos2.x = sprite->data[1] >> 8;
+
+ sprite->pos2.y += sprite->data[2] >> 8;
+ if (sprite->pos2.y > 64)
+ DestroyAnimSprite(sprite);
+ }
+}
+
+void sub_812E568(u8 taskId)
+{
+ u8 side;
+ struct Task *task = &gTasks[taskId];
+
+ if (gBattleAnimArgs[1] == 0)
+ {
+ DestroyAnimVisualTask(taskId);
+ return;
+ }
+
+ if (gBattleAnimArgs[2] < 0)
+ gBattleAnimArgs[2] = 0;
+ if (gBattleAnimArgs[2] > 2)
+ gBattleAnimArgs[2] = 2;
+
+ task->data[0] = 0;
+ task->data[1] = 0;
+ task->data[2] = 0;
+ task->data[3] = 8 - (2 * gBattleAnimArgs[2]);
+ task->data[4] = 0x100 + (gBattleAnimArgs[2] * 128);
+ task->data[5] = gBattleAnimArgs[2] + 2;
+ task->data[6] = gBattleAnimArgs[1] - 1;
+ task->data[15] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
+
+ if (gBattleAnimArgs[0] == 0)
+ side = GetBattlerSide(gAnimBankAttacker);
+ else
+ side = GetBattlerSide(gAnimBankTarget);
+
+ if (side == B_SIDE_OPPONENT)
+ {
+ task->data[4] *= -1;
+ task->data[5] *= -1;
+ }
+
+ sub_8078E70(task->data[15], 0);
+ task->func = sub_812E638;
+}
+
+static void sub_812E638(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ gSprites[task->data[15]].pos2.x += task->data[5];
+ task->data[2] -= task->data[4];
+ obj_id_set_rotscale(task->data[15], 0x100, 0x100, task->data[2]);
+ sub_8078F9C(task->data[15]);
+ if (++task->data[1] >= task->data[3])
+ {
+ task->data[1] = 0;
+ task->data[0]++;
+ }
+ break;
+ case 1:
+ gSprites[task->data[15]].pos2.x -= task->data[5];
+ task->data[2] += task->data[4];
+ obj_id_set_rotscale(task->data[15], 0x100, 0x100, task->data[2]);
+ sub_8078F9C(task->data[15]);
+ if (++task->data[1] >= task->data[3] * 2)
+ {
+ task->data[1] = 0;
+ task->data[0]++;
+ }
+ break;
+ case 2:
+ gSprites[task->data[15]].pos2.x += task->data[5];
+ task->data[2] -= task->data[4];
+ obj_id_set_rotscale(task->data[15], 0x100, 0x100, task->data[2]);
+ sub_8078F9C(task->data[15]);
+ if (++task->data[1] >= task->data[3])
+ {
+ if (task->data[6])
+ {
+ task->data[6]--;
+ task->data[1] = 0;
+ task->data[0] = 0;
+ }
+ else
+ {
+ task->data[0]++;
+ }
+ }
+ break;
+ case 3:
+ sub_8078F40(task->data[15]);
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+void sub_812E7A0(struct Sprite *sprite)
+{
+ if (GetBattlerSide(gAnimBankAttacker) == B_SIDE_PLAYER)
+ {
+ sprite->pos1.x = 0;
+ sprite->pos1.y = gBattleAnimArgs[0];
+ }
+ else
+ {
+ sprite->pos1.x = 240;
+ sprite->pos1.y = gBattleAnimArgs[0] - 30;
+ }
+
+ sprite->data[2] = gBattleAnimArgs[2];
+ StartSpriteAnim(sprite, gBattleAnimArgs[1]);
+ sprite->callback = sub_812E7F0;
+}
+
+static void sub_812E7F0(struct Sprite *sprite)
+{
+ sprite->data[0] += 3;
+ if (GetBattlerSide(gAnimBankAttacker) == B_SIDE_PLAYER)
+ {
+ sprite->pos1.x += 5;
+ sprite->pos1.y -= 1;
+
+ if (sprite->pos1.x > 240)
+ DestroyAnimSprite(sprite);
+
+ sprite->pos2.y = Sin(sprite->data[0] & 0xFF, 16);
+ }
+ else
+ {
+ sprite->pos1.x -= 5;
+ sprite->pos1.y += 1;
+
+ if (sprite->pos1.x < 0)
+ DestroyAnimSprite(sprite);
+
+ sprite->pos2.y = Cos(sprite->data[0] & 0xFF, 16);
+ }
+}
+
+void sub_812E860(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ task->data[0] = 0;
+ task->data[1] = 0;
+ task->data[2] = 0;
+ task->data[3] = 0;
+ task->data[12] = 0x20;
+ task->data[13] = 0x40;
+ task->data[14] = 0x800;
+ task->data[15] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
+
+ sub_8078E70(task->data[15], 0);
+ task->func = sub_812E8B4;
+}
+
+static void sub_812E8B4(u8 taskId)
+{
+ int temp;
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ task->data[2] += 0x200;
+ if (task->data[2] >= task->data[14])
+ {
+ s16 diff = task->data[14] - task->data[2];
+ s16 div = diff / (task->data[14] * 2);
+ s16 mod = diff % (task->data[14] * 2);
+
+ if ((div & 1) == 0)
+ {
+ task->data[2] = task->data[14] - mod;
+ task->data[0] = 1;
+ }
+ else
+ {
+ task->data[2] = mod - task->data[14];
+ }
+ }
+ break;
+ case 1:
+ task->data[2] -= 0x200;
+ if (task->data[2] <= -task->data[14])
+ {
+ s16 diff = task->data[14] - task->data[2];
+ s16 div = diff / (task->data[14] * 2);
+ s16 mod = diff % (task->data[14] * 2);
+
+ if ((1 & div) == 0)
+ {
+ task->data[2] = mod - task->data[14];
+ task->data[0] = 0;
+ }
+ else
+ {
+ task->data[2] = task->data[14] - mod;
+ }
+ }
+ break;
+ case 2:
+ sub_8078F40(task->data[15]);
+ DestroyAnimVisualTask(taskId);
+ return;
+ }
+
+ obj_id_set_rotscale(task->data[15], 0x100, 0x100, task->data[2]);
+ sub_8078F9C(task->data[15]);
+ gSprites[task->data[15]].pos2.x = -(((temp = task->data[2]) >= 0 ? task->data[2] : temp + 63) >> 6);
+
+ if (++task->data[1] > 8)
+ {
+ if (task->data[12])
+ {
+ task->data[12]--;
+ task->data[14] -= task->data[13];
+ if (task->data[14] < 16)
+ task->data[14] = 16;
+ }
+ else
+ {
+ task->data[0] = 2;
+ }
+ }
+}
diff --git a/src/battle/battle_bg.c b/src/battle/battle_bg.c
new file mode 100644
index 000000000..5a2a1efa3
--- /dev/null
+++ b/src/battle/battle_bg.c
@@ -0,0 +1,863 @@
+#include "global.h"
+#include "battle.h"
+#include "constants/songs.h"
+#include "decompress.h"
+#include "ewram.h"
+#include "graphics.h"
+#include "link.h"
+#include "main.h"
+#include "palette.h"
+#include "task.h"
+#include "text.h"
+#include "text_window.h"
+#include "trainer.h"
+#include "trig.h"
+#include "sound.h"
+
+
+extern u16 gBattleTypeFlags;
+extern u8 gBattleOutcome;
+
+extern struct Window gUnknown_03004210;
+
+extern u8 BattleText_Win[];
+extern u8 BattleText_Loss[];
+extern u8 BattleText_Tie[];
+
+extern void sub_8032A38(void);
+
+#define GetCurrentMapBattleScene sav1_map_get_battletype
+//extern u8 GetCurrentMapBattleScene(void);
+
+extern const u8 gGameVersion;
+extern u16 gBattleTypeFlags;
+extern struct Trainer gTrainers[];
+extern u16 gTrainerBattleOpponent;
+
+extern u8 gBattleTerrain;
+
+extern u16 gBattleTerrainPalette_Groudon[];
+extern u16 gBattleTerrainPalette_Kyogre[];
+extern u16 gBattleTerrainPalette_BuildingLeader[];
+extern u16 gBattleTerrainPalette_StadiumSteven[];
+extern u16 gBattleTerrainPalette_BuildingGym[];
+extern u16 gBattleTerrainPalette_StadiumMagma[];
+extern u16 gBattleTerrainPalette_StadiumAqua[];
+extern u16 gBattleTerrainPalette_StadiumSidney[];
+extern u16 gBattleTerrainPalette_StadiumPhoebe[];
+extern u16 gBattleTerrainPalette_StadiumGlacia[];
+extern u16 gBattleTerrainPalette_StadiumDrake[];
+extern u16 gBattleTerrainPalette_BattleTower[];
+
+extern u8 gVersusFrameGfx[];
+extern u16 gVersusFrameTilemap[];
+extern u16 gVersusFramePal[];
+
+extern u16 gBattle_BG1_X;
+extern u16 gBattle_BG1_Y;
+extern u16 gBattle_BG2_X;
+extern u16 gBattle_BG2_Y;
+
+extern u8 sav1_map_get_battletype(void);
+
+struct LinkResultWindow {
+ struct Window *window;
+ u16 offset;
+ u8 left;
+ u8 top;
+ u8 *dest;
+};
+
+#define gLinkResultWindows gUnknown_081F9680
+extern const struct LinkResultWindow gLinkResultWindows[];
+
+extern struct SpriteTemplate gSpriteTemplate_81F96D0;
+
+const struct OamData gOamData_81F952C = {
+ .affineMode = ST_OAM_AFFINE_DOUBLE,
+ .size = 3
+};
+
+const struct OamData gOamData_81F9534 = {
+ .affineMode = ST_OAM_AFFINE_DOUBLE,
+ .size = 3,
+ .tileNum = 64
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_81F953C[] = {
+ AFFINEANIMCMD_FRAME(0x80, 0x80, 0, 0),
+ AFFINEANIMCMD_END
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_81F954C[] = {
+ AFFINEANIMCMD_FRAME(0x80, 0x80, 0, 0),
+ AFFINEANIMCMD_FRAME(0x18, 0x18, 0, -128),
+ AFFINEANIMCMD_FRAME(0x18, 0x18, 0, -128),
+ AFFINEANIMCMD_END
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_81F956C[] = {
+ gSpriteAffineAnim_81F953C,
+ gSpriteAffineAnim_81F954C
+};
+
+const struct SpriteTemplate gSpriteTemplate_81F9574 = {
+ .tileTag = 10000,
+ .paletteTag = 10000,
+ .oam = &gOamData_81F952C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_81F956C,
+ .callback = nullsub_36
+};
+
+const struct SpriteTemplate gSpriteTemplate_81F958C = {
+ .tileTag = 10000,
+ .paletteTag = 10000,
+ .oam = &gOamData_81F9534,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_81F956C,
+ .callback = nullsub_36
+};
+
+extern const u8 gUnknown_08E5DC2C[];
+
+const struct CompressedSpriteSheet gUnknown_081F95A4[] = {
+ {gUnknown_08E5DC2C, 4096, 0x2710},
+};
+
+struct BattleBackground
+{
+ const void *tileset;
+ const void *tilemap;
+ const void *entryTileset;
+ const void *entryTilemap;
+ const void *palette;
+};
+
+const struct BattleBackground gBattleTerrainTable[] = {
+{
+ .tileset = gBattleTerrainTiles_TallGrass,
+ .tilemap = gBattleTerrainTilemap_TallGrass,
+ .entryTileset = gBattleTerrainAnimTiles_TallGrass,
+ .entryTilemap = gBattleTerrainAnimTilemap_TallGrass,
+ .palette = gBattleTerrainPalette_TallGrass
+},
+{
+ .tileset = gBattleTerrainTiles_LongGrass,
+ .tilemap = gBattleTerrainTilemap_LongGrass,
+ .entryTileset = gBattleTerrainAnimTiles_LongGrass,
+ .entryTilemap = gBattleTerrainAnimTilemap_LongGrass,
+ .palette = gBattleTerrainPalette_LongGrass
+},
+{
+ .tileset = gBattleTerrainTiles_Sand,
+ .tilemap = gBattleTerrainTilemap_Sand,
+ .entryTileset = gBattleTerrainAnimTiles_Sand,
+ .entryTilemap = gBattleTerrainAnimTilemap_Sand,
+ .palette = gBattleTerrainPalette_Sand
+},
+{
+ .tileset = gBattleTerrainTiles_Underwater,
+ .tilemap = gBattleTerrainTilemap_Underwater,
+ .entryTileset = gBattleTerrainAnimTiles_Underwater,
+ .entryTilemap = gBattleTerrainAnimTilemap_Underwater,
+ .palette = gBattleTerrainPalette_Underwater
+},
+{
+ .tileset = gBattleTerrainTiles_Water,
+ .tilemap = gBattleTerrainTilemap_Water,
+ .entryTileset = gBattleTerrainAnimTiles_Water,
+ .entryTilemap = gBattleTerrainAnimTilemap_Water,
+ .palette = gBattleTerrainPalette_Water
+},
+{
+ .tileset = gBattleTerrainTiles_PondWater,
+ .tilemap = gBattleTerrainTilemap_PondWater,
+ .entryTileset = gBattleTerrainAnimTiles_PondWater,
+ .entryTilemap = gBattleTerrainAnimTilemap_PondWater,
+ .palette = gBattleTerrainPalette_PondWater
+},
+{
+ .tileset = gBattleTerrainTiles_Rock,
+ .tilemap = gBattleTerrainTilemap_Rock,
+ .entryTileset = gBattleTerrainAnimTiles_Rock,
+ .entryTilemap = gBattleTerrainAnimTilemap_Rock,
+ .palette = gBattleTerrainPalette_Rock
+},
+{
+ .tileset = gBattleTerrainTiles_Cave,
+ .tilemap = gBattleTerrainTilemap_Cave,
+ .entryTileset = gBattleTerrainAnimTiles_Cave,
+ .entryTilemap = gBattleTerrainAnimTilemap_Cave,
+ .palette = gBattleTerrainPalette_Cave
+},
+{
+ .tileset = gBattleTerrainTiles_Building,
+ .tilemap = gBattleTerrainTilemap_Building,
+ .entryTileset = gBattleTerrainAnimTiles_Building,
+ .entryTilemap = gBattleTerrainAnimTilemap_Building,
+ .palette = gBattleTerrainPalette_Building
+},
+{
+ .tileset = gBattleTerrainTiles_Building,
+ .tilemap = gBattleTerrainTilemap_Building,
+ .entryTileset = gBattleTerrainAnimTiles_Building,
+ .entryTilemap = gBattleTerrainAnimTilemap_Building,
+ .palette = gBattleTerrainPalette_Plain
+ }
+};
+
+static void sub_800D6C4(void);
+
+void debug_sub_800D684(void)
+{
+ u8 spriteId;
+ ResetSpriteData();
+ spriteId = CreateSprite(&gSpriteTemplate_81F96D0, 0, 0, 0);
+ gSprites[spriteId].invisible = TRUE;
+ SetMainCallback2(sub_800D6C4);
+}
+
+static void sub_800D6C4(void)
+{
+ AnimateSprites();
+ BuildOamBuffer();
+}
+
+void sub_800D6D4(void)
+{
+ u16 ime = REG_IME;
+ REG_IME = 0;
+ REG_IE |= INTR_FLAG_VBLANK;
+ REG_IME = ime;
+ REG_DISPSTAT = DISPSTAT_VBLANK_INTR;
+ REG_BG0CNT = 0x9800;
+ REG_BG1CNT = 0x9c04;
+ REG_BG2CNT = 0x5e05;
+ REG_BG3CNT = 0x5a0b;
+ REG_BLDCNT = 0;
+ REG_BLDALPHA = 0;
+ REG_BLDY = 0;
+ REG_DISPCNT = 0xbf40;
+}
+
+void ApplyPlayerChosenFrameToBattleMenu(void)
+{
+ TextWindow_SetBaseTileNum(0x12);
+ TextWindow_LoadStdFrameGraphicsOverridePal(&gUnknown_03004210, 1);
+ TextWindow_SetBaseTileNum(0x22);
+ TextWindow_LoadStdFrameGraphicsOverridePal(&gUnknown_03004210, 1);
+ gPlttBufferUnfaded[92] = 0x7fe0;
+ gPlttBufferUnfaded[93] = 0x2529;
+ gPlttBufferUnfaded[94] = 0x7fff;
+ gPlttBufferUnfaded[95] = 0x675a;
+ CpuSet(&gPlttBufferUnfaded[92], &gPlttBufferFaded[92], 4);
+ sub_8032A38();
+}
+
+void DrawMainBattleBackground(void)
+{
+ if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER /*| BATTLE_TYPE_x2000000*/))
+ {
+ LZDecompressVram(gBattleTerrainTiles_Building, (void*)(VRAM + 0x8000));
+ LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(VRAM + 0xD000));
+ LoadCompressedPalette(gBattleTerrainPalette_BattleTower, 0x20, 0x60);
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON)
+ {
+ if (gGameVersion == VERSION_RUBY)
+ {
+ LZDecompressVram(gBattleTerrainTiles_Cave, (void*)(VRAM + 0x8000));
+ LZDecompressVram(gBattleTerrainTilemap_Cave, (void*)(VRAM + 0xD000));
+ LoadCompressedPalette(gBattleTerrainPalette_Groudon, 0x20, 0x60);
+ }
+ else
+ {
+ LZDecompressVram(gBattleTerrainTiles_Water, (void*)(VRAM + 0x8000));
+ LZDecompressVram(gBattleTerrainTilemap_Water, (void*)(VRAM + 0xD000));
+ LoadCompressedPalette(gBattleTerrainPalette_Kyogre, 0x20, 0x60);
+ }
+ }
+ else
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
+ {
+ u8 trainerClass = gTrainers[gTrainerBattleOpponent].trainerClass;
+ if (trainerClass == TRAINER_CLASS_LEADER)
+ {
+ LZDecompressVram(gBattleTerrainTiles_Building, (void*)(VRAM + 0x8000));
+ LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(VRAM + 0xD000));
+ LoadCompressedPalette(gBattleTerrainPalette_BuildingLeader, 0x20, 0x60);
+ return;
+ }
+ else if (trainerClass == TRAINER_CLASS_CHAMPION)
+ {
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
+ LoadCompressedPalette(gBattleTerrainPalette_StadiumSteven, 0x20, 0x60);
+ return;
+ }
+ }
+
+ switch (GetCurrentMapBattleScene())
+ {
+ case MAP_BATTLE_SCENE_NORMAL:
+ LZDecompressVram(gBattleTerrainTable[gBattleTerrain].tileset, (void*)(VRAM + 0x8000));
+ LZDecompressVram(gBattleTerrainTable[gBattleTerrain].tilemap, (void*)(VRAM + 0xD000));
+ LoadCompressedPalette(gBattleTerrainTable[gBattleTerrain].palette, 0x20, 0x60);
+ break;
+ case MAP_BATTLE_SCENE_GYM:
+ LZDecompressVram(gBattleTerrainTiles_Building, (void*)(VRAM + 0x8000));
+ LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(VRAM + 0xD000));
+ LoadCompressedPalette(gBattleTerrainPalette_BuildingGym, 0x20, 0x60);
+ break;
+ case MAP_BATTLE_SCENE_MAGMA:
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
+ LoadCompressedPalette(gBattleTerrainPalette_StadiumMagma, 0x20, 0x60);
+ break;
+ case MAP_BATTLE_SCENE_AQUA:
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
+ LoadCompressedPalette(gBattleTerrainPalette_StadiumAqua, 0x20, 0x60);
+ break;
+ case MAP_BATTLE_SCENE_SIDNEY:
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
+ LoadCompressedPalette(gBattleTerrainPalette_StadiumSidney, 0x20, 0x60);
+ break;
+ case MAP_BATTLE_SCENE_PHOEBE:
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
+ LoadCompressedPalette(gBattleTerrainPalette_StadiumPhoebe, 0x20, 0x60);
+ break;
+ case MAP_BATTLE_SCENE_GLACIA:
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
+ LoadCompressedPalette(gBattleTerrainPalette_StadiumGlacia, 0x20, 0x60);
+ break;
+ case MAP_BATTLE_SCENE_DRAKE:
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
+ LoadCompressedPalette(gBattleTerrainPalette_StadiumDrake, 0x20, 0x60);
+ break;
+ case MAP_BATTLE_SCENE_BATTLE_TOWER:
+ LZDecompressVram(gBattleTerrainTiles_Building, (void*)(VRAM + 0x8000));
+ LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(VRAM + 0xD000));
+ LoadCompressedPalette(gBattleTerrainPalette_BattleTower, 0x20, 0x60);
+ break;
+ }
+ }
+}
+
+void LoadBattleTextboxAndBackground(void)
+{
+ LZDecompressVram(gBattleTextboxTiles, (void*)(BG_VRAM));
+ CpuSet(gBattleTextboxTilemap, (void *)(VRAM + 0xC000), 0x800);
+ LoadCompressedPalette(gBattleTextboxPalette, 0, 0x40);
+ ApplyPlayerChosenFrameToBattleMenu();
+ DrawMainBattleBackground();
+
+ #if DEBUG
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK)
+ {
+ debug_sub_8008218((void*)(VRAM + 0x600), 0, (void*)(VRAM + 0xC000), 1);
+ debug_sub_8008264(257, 3, 1, 3, 1);
+ debug_sub_8008264(257, 3, 21, 3, 1);
+ debug_sub_8008264(257, 3, 41, 3, 1);
+ }
+ #endif
+}
+
+static void sub_800DAF8(u8 taskId, u8 windowId, u8 *dest)
+{
+ int i;
+ u16 r4 = 0;
+ u16 src[6];
+
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI) {
+ if (gTasks[taskId].data[5]) {
+ switch (windowId) {
+ case 0:
+ r4 = gTasks[taskId].data[3] & 0x3f;
+ break;
+ case 1:
+ r4 = (gTasks[taskId].data[4] & 0xfc0) >> 6;
+ break;
+ case 2:
+ r4 = (gTasks[taskId].data[3] & 0xfc0) >> 6;
+ break;
+ case 3:
+ r4 = gTasks[taskId].data[4] & 0x3f;
+ break;
+ }
+ } else {
+ switch (windowId) {
+ case 0:
+ r4 = gTasks[taskId].data[3] & 0x3f;
+ break;
+ case 1:
+ r4 = gTasks[taskId].data[4] & 0x3f;
+ break;
+ case 2:
+ r4 = (gTasks[taskId].data[3] & 0xfc0) >> 6;
+ break;
+ case 3:
+ r4 = (gTasks[taskId].data[4] & 0xfc0) >> 6;
+ break;
+ }
+ }
+ for (i = 0; i < 3; i++) {
+ src[i] = ((r4 & (3 << (i * 2))) >> (i * 2)) + 0x6001;
+ }
+ CpuSet(src, dest, 3);
+ } else {
+ if (windowId == gBattleStruct->linkPlayerIndex) {
+ r4 = gTasks[taskId].data[3];
+ } else {
+ r4 = gTasks[taskId].data[4];
+ }
+ for (i = 0; i < 6; i++) {
+ src[i] = ((r4 & (3 << (i * 2))) >> (i * 2)) + 0x6001;
+ }
+ CpuSet(src, dest, 6);
+ }
+}
+
+
+#if ENGLISH
+#define LEFT_MESSAGE_X 6
+#define RIGHT_MESSAGE_X 21
+#define TILE_OFFSET_LOSS 168
+#elif GERMAN
+#define LEFT_MESSAGE_X 5
+#define RIGHT_MESSAGE_X 20
+#define TILE_OFFSET_LOSS 172
+#endif
+#define TILE_OFFSET_WIN 160
+#define CENTER_MESSAGE_X 13
+#define MESSAGE_Y 2
+
+#define PRINT_MESSAGE(text, tileDataStartOffset, x) \
+{ \
+ Text_InitWindow(&gUnknown_03004210, text, tileDataStartOffset, x, MESSAGE_Y); \
+ Text_PrintWindow8002F44(&gUnknown_03004210); \
+}
+
+#define PRINT_MESSAGE_LEFT(text, tileDataStartOffset) PRINT_MESSAGE(text, tileDataStartOffset, LEFT_MESSAGE_X)
+#define PRINT_MESSAGE_RIGHT(text, tileDataStartOffset) PRINT_MESSAGE(text, tileDataStartOffset, RIGHT_MESSAGE_X)
+
+static void PrintLinkBattleWinLossTie(void)
+{
+
+ if (gBattleOutcome == 3)
+ {
+ PRINT_MESSAGE(BattleText_Tie, TILE_OFFSET_WIN, CENTER_MESSAGE_X);
+ return;
+ }
+
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ {
+ // Double battle?
+
+ if (gBattleOutcome == 1)
+ {
+
+ // lp_field_18 = player position?
+ switch (gLinkPlayers[gBattleStruct->linkPlayerIndex].lp_field_18)
+ {
+ case 0:
+ case 2:
+ PRINT_MESSAGE_LEFT(BattleText_Win, TILE_OFFSET_WIN);
+ PRINT_MESSAGE_RIGHT(BattleText_Loss, TILE_OFFSET_LOSS);
+ return;
+
+ case 1:
+ case 3:
+ PRINT_MESSAGE_RIGHT(BattleText_Win, TILE_OFFSET_WIN)
+ PRINT_MESSAGE_LEFT(BattleText_Loss, TILE_OFFSET_LOSS)
+ return;
+ }
+ }
+ else
+ {
+
+ switch (gLinkPlayers[gBattleStruct->linkPlayerIndex].lp_field_18)
+ {
+ case 1:
+ case 3:
+ PRINT_MESSAGE_LEFT(BattleText_Win, TILE_OFFSET_WIN);
+ PRINT_MESSAGE_RIGHT(BattleText_Loss, TILE_OFFSET_LOSS);
+ return;
+
+ case 0:
+ case 2:
+ PRINT_MESSAGE_RIGHT(BattleText_Win, TILE_OFFSET_WIN);
+ PRINT_MESSAGE_LEFT(BattleText_Loss, TILE_OFFSET_LOSS);
+ return;
+ }
+ }
+
+ return;
+ }
+
+
+ if (gBattleOutcome == 1)
+ {
+ if (gLinkPlayers[gBattleStruct->linkPlayerIndex].lp_field_18 != 0)
+ {
+ PRINT_MESSAGE_RIGHT(BattleText_Win, TILE_OFFSET_WIN);
+ PRINT_MESSAGE_LEFT(BattleText_Loss, TILE_OFFSET_LOSS);
+ }
+ else
+ {
+ PRINT_MESSAGE_LEFT(BattleText_Win, TILE_OFFSET_WIN);
+ PRINT_MESSAGE_RIGHT(BattleText_Loss, TILE_OFFSET_LOSS);
+ }
+ }
+ else
+ {
+ if (gLinkPlayers[gBattleStruct->linkPlayerIndex].lp_field_18 != 0)
+ {
+ PRINT_MESSAGE_LEFT(BattleText_Win, TILE_OFFSET_WIN);
+ PRINT_MESSAGE_RIGHT(BattleText_Loss, TILE_OFFSET_LOSS);
+ }
+ else
+ {
+ PRINT_MESSAGE_RIGHT(BattleText_Win, TILE_OFFSET_WIN);
+ PRINT_MESSAGE_LEFT(BattleText_Loss, TILE_OFFSET_LOSS);
+ }
+ }
+}
+
+
+void sub_800DE30(u8 taskId)
+{
+ u8 palette;
+ int i;
+
+ switch (gTasks[taskId].data[0]) {
+
+ case 0:
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI) {
+ for (i = 0; i < 4; i++) {
+ u8 windowId = (gLinkPlayers[i].lp_field_18 & 3);
+ Text_InitWindow8002E4C(
+ gLinkResultWindows[windowId].window,
+ gLinkPlayers[i].name,
+ gLinkResultWindows[windowId].offset,
+ gLinkResultWindows[windowId].left,
+ gLinkResultWindows[windowId].top,
+ 1);
+ Text_PrintWindow8002F44(gLinkResultWindows[windowId].window);
+ sub_800DAF8(taskId, windowId, gLinkResultWindows[windowId].dest);
+ }
+ } else {
+ u8 windowId = 4;
+
+ u8 playerId = gBattleStruct->linkPlayerIndex;
+ u8 opponentId = gBattleStruct->linkPlayerIndex ^ 1;
+ if (gLinkPlayers[playerId].lp_field_18) {
+ opponentId = gBattleStruct->linkPlayerIndex;
+ playerId = gBattleStruct->linkPlayerIndex ^ 1;
+ }
+
+ Text_InitWindow8002E4C(
+ gLinkResultWindows[windowId].window,
+ gLinkPlayers[playerId].name,
+ gLinkResultWindows[windowId].offset,
+ gLinkResultWindows[windowId].left,
+ gLinkResultWindows[windowId].top,
+ 1);
+ Text_PrintWindow8002F44(gLinkResultWindows[windowId].window);
+ sub_800DAF8(taskId, playerId, gLinkResultWindows[windowId].dest);
+
+ Text_InitWindow8002E4C(
+ gLinkResultWindows[windowId + 1].window,
+ gLinkPlayers[opponentId].name,
+ gLinkResultWindows[windowId + 1].offset,
+ gLinkResultWindows[windowId + 1].left,
+ gLinkResultWindows[windowId + 1].top,
+ 1);
+ Text_PrintWindow8002F44(gLinkResultWindows[windowId + 1].window);
+ sub_800DAF8(taskId, opponentId, gLinkResultWindows[windowId + 1].dest);
+ }
+ gTasks[taskId].data[0]++;
+ break;
+
+ case 1:
+ palette = AllocSpritePalette(10000);
+ gPlttBufferUnfaded[palette * 16 + 0x10f] = gPlttBufferFaded[palette * 16 + 0x10f] = 0x7fff;
+ gBattleStruct->unk1608A = CreateSprite(&gSpriteTemplate_81F9574, 108, 80, 0);
+ gBattleStruct->unk1608B = CreateSprite(&gSpriteTemplate_81F958C, 132, 80, 0);
+ gSprites[gBattleStruct->unk1608A].invisible = TRUE;
+ gSprites[gBattleStruct->unk1608B].invisible = TRUE;
+ gTasks[taskId].data[0]++;
+ break;
+
+ case 2:
+ if (gTasks[taskId].data[5]) {
+ gBattle_BG1_X = (-20) - (Sin2(gTasks[taskId].data[1]) / 32);
+ gBattle_BG2_X = (-140) - (Sin2(gTasks[taskId].data[2]) / 32);
+ gBattle_BG1_Y = -36;
+ gBattle_BG2_Y = -36;
+ } else {
+ gBattle_BG1_X = (-20) - (Sin2(gTasks[taskId].data[1]) / 32);
+ gBattle_BG1_Y = (-164) + (Cos2(gTasks[taskId].data[1]) / 32);
+ gBattle_BG2_X = (-140) - (Sin2(gTasks[taskId].data[2]) / 32);
+ gBattle_BG2_Y = (-164) + (Cos2(gTasks[taskId].data[2]) / 32);
+ }
+ if (gTasks[taskId].data[2]) {
+ gTasks[taskId].data[2] -= 2;
+ gTasks[taskId].data[1] += 2;
+ } else {
+ if (gTasks[taskId].data[5]) {
+ PrintLinkBattleWinLossTie();
+ }
+ PlaySE(SE_W231);
+ DestroyTask(taskId);
+ gSprites[gBattleStruct->unk1608A].invisible = FALSE;
+ gSprites[gBattleStruct->unk1608B].invisible = FALSE;
+ gSprites[gBattleStruct->unk1608B].oam.tileNum += 0x40;
+ gSprites[gBattleStruct->unk1608A].data[0] = 0;
+ gSprites[gBattleStruct->unk1608B].data[0] = 1;
+ gSprites[gBattleStruct->unk1608A].data[1] = gSprites[gBattleStruct->unk1608A].pos1.x;
+ gSprites[gBattleStruct->unk1608B].data[1] = gSprites[gBattleStruct->unk1608B].pos1.x;
+ gSprites[gBattleStruct->unk1608A].data[2] = 0;
+ gSprites[gBattleStruct->unk1608B].data[2] = 0;
+ }
+ break;
+ }
+}
+
+void LoadBattleEntryBackground(void) {
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK) {
+ LZDecompressVram(gVersusFrameGfx, (void *)0x6004000);
+ LZDecompressVram(gVersusFrameTilemap, (void *)0x600e000);
+ LZDecompressVram(gVersusFrameTilemap, (void *)0x600f000);
+ LZDecompressVram(gUnknown_08E5DC2C, (void *)0x6010000);
+ LoadCompressedPalette(gVersusFramePal, 0x60, 0x20);
+ REG_BG1CNT = 0x5c04;
+ REG_WININ = 0x36;
+ REG_WINOUT = 0x36;
+ gBattle_BG1_Y = 0xff5c;
+ gBattle_BG2_Y = 0xff5c;
+ LoadCompressedObjectPic(gUnknown_081F95A4);
+ return;
+ } else if (gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK)) {
+ LZDecompressVram(gBattleTerrainAnimTiles_Building, (void *)0x6004000);
+ LZDecompressVram(gBattleTerrainAnimTilemap_Building, (void *)0x600e000);
+ return;
+ } else if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON) {
+ if (gGameVersion == VERSION_RUBY) {
+ LZDecompressVram(gBattleTerrainAnimTiles_Cave, (void *)0x6004000);
+ LZDecompressVram(gBattleTerrainAnimTilemap_Cave, (void *)0x600e000);
+ return;
+ } else {
+ LZDecompressVram(gBattleTerrainAnimTiles_Underwater, (void *)0x6004000);
+ LZDecompressVram(gBattleTerrainAnimTilemap_Underwater, (void *)0x600e000);
+ return;
+ }
+ } else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) {
+ if (gTrainers[gTrainerBattleOpponent].trainerClass == 0x19) {
+ LZDecompressVram(gBattleTerrainAnimTiles_Building, (void *)0x6004000);
+ LZDecompressVram(gBattleTerrainAnimTilemap_Building, (void *)0x600e000);
+ return;
+ } else if (gTrainers[gTrainerBattleOpponent].trainerClass == 0x20) {
+ LZDecompressVram(gBattleTerrainAnimTiles_Building, (void *)0x6004000);
+ LZDecompressVram(gBattleTerrainAnimTilemap_Building, (void *)0x600e000);
+ return;
+ }
+ }
+ if (sav1_map_get_battletype() == 0) {
+ LZDecompressVram(gBattleTerrainTable[gBattleTerrain].entryTileset, (void *)0x6004000);
+ LZDecompressVram(gBattleTerrainTable[gBattleTerrain].entryTilemap, (void *)0x600e000);
+ return;
+ }
+ LZDecompressVram(gBattleTerrainAnimTiles_Building, (void *)0x6004000);
+ LZDecompressVram(gBattleTerrainAnimTilemap_Building, (void *)0x600e000);
+}
+
+int LoadChosenBattleElement(u8 type) {
+ int ret = 0;
+ switch (type) {
+ case 0:
+ LZDecompressVram(&gBattleTextboxTiles, (void *)0x6000000);
+ break;
+ case 1:
+ CpuCopy16(gBattleTextboxTilemap, (void *)0x600c000, 0x1000);
+ break;
+ case 2:
+ LoadCompressedPalette(gBattleTextboxPalette, 0, 0x40);
+ break;
+ case 3: // tiles
+ if (!(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK))) {
+ if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON) {
+ if (gGameVersion == VERSION_RUBY) {
+ LZDecompressVram(gBattleTerrainTiles_Cave, (void *)0x6008000);
+ break;
+ } else {
+ LZDecompressVram(gBattleTerrainTiles_Water, (void *)0x6008000);
+ break;
+ }
+ } else {
+ if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) {
+ if (gTrainers[gTrainerBattleOpponent].trainerClass == 0x19) {
+ LZDecompressVram(gBattleTerrainTiles_Building, (void *)0x6008000);
+ break;
+ } else if (gTrainers[gTrainerBattleOpponent].trainerClass == 0x20) {
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)0x6008000);
+ break;
+ }
+ }
+ switch (sav1_map_get_battletype()) {
+ case 0:
+ LZDecompressVram(gBattleTerrainTable[gBattleTerrain].tileset, (void *)0x6008000);
+ break;
+ case 2:
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)0x6008000);
+ break;
+ case 3:
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)0x6008000);
+ break;
+ case 4:
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)0x6008000);
+ break;
+ case 5:
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)0x6008000);
+ break;
+ case 6:
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)0x6008000);
+ break;
+ case 7:
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)0x6008000);
+ break;
+ case 1:
+ case 8:
+ LZDecompressVram(gBattleTerrainTiles_Building, (void *)0x6008000);
+ break;
+ }
+ break;
+ }
+ } else {
+ LZDecompressVram(gBattleTerrainTiles_Building, (void *)0x6008000);
+ break;
+ }
+ case 4: // tilemap
+ if (!(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK))) {
+ if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON) {
+ if (gGameVersion == 2) {
+ LZDecompressVram(gBattleTerrainTilemap_Cave, (void *)0x600d000);
+ break;
+ } else {
+ LZDecompressVram(gBattleTerrainTilemap_Water, (void *)0x600d000);
+ break;
+ }
+ } else {
+ if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) {
+ if (gTrainers[gTrainerBattleOpponent].trainerClass == 0x19) {
+ LZDecompressVram(gBattleTerrainTilemap_Building, (void *)0x600d000);
+ break;
+ } else if (gTrainers[gTrainerBattleOpponent].trainerClass == 0x20) {
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)0x600d000);
+ break;
+ }
+ }
+ switch (sav1_map_get_battletype()) {
+ case 0:
+ LZDecompressVram(gBattleTerrainTable[gBattleTerrain].tilemap, (void *)0x600d000);
+ break;
+ case 2:
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)0x600d000);
+ break;
+ case 3:
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)0x600d000);
+ break;
+ case 4:
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)0x600d000);
+ break;
+ case 5:
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)0x600d000);
+ break;
+ case 6:
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)0x600d000);
+ break;
+ case 7:
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)0x600d000);
+ break;
+ case 1:
+ case 8:
+ LZDecompressVram(gBattleTerrainTilemap_Building, (void *)0x600d000);
+ break;
+ }
+ break;
+ }
+ } else {
+ LZDecompressVram(gBattleTerrainTilemap_Building, (void *)0x600d000);
+ break;
+ }
+ case 5: // palette
+ if (!(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK))) {
+ if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON) {
+ if (gGameVersion == 2) {
+ LoadCompressedPalette(gBattleTerrainPalette_Groudon, 0x20, 0x60);
+ break;
+ } else {
+ LoadCompressedPalette(gBattleTerrainPalette_Kyogre, 0x20, 0x60);
+ break;
+ }
+ } else {
+ if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) {
+ if (gTrainers[gTrainerBattleOpponent].trainerClass == 0x19) {
+ LoadCompressedPalette(gBattleTerrainPalette_BuildingLeader, 0x20, 0x60);
+ break;
+ } else if (gTrainers[gTrainerBattleOpponent].trainerClass == 0x20) {
+ LoadCompressedPalette(gBattleTerrainPalette_StadiumSteven, 0x20, 0x60);
+ break;
+ }
+ }
+ switch (sav1_map_get_battletype()) {
+ case 0:
+ LoadCompressedPalette(gBattleTerrainTable[gBattleTerrain].palette, 0x20, 0x60);
+ break;
+ case 1:
+ LoadCompressedPalette(gBattleTerrainPalette_BuildingGym, 0x20, 0x60);
+ break;
+ case 2:
+ LoadCompressedPalette(gBattleTerrainPalette_StadiumMagma, 0x20, 0x60);
+ break;
+ case 3:
+ LoadCompressedPalette(gBattleTerrainPalette_StadiumAqua, 0x20, 0x60);
+ break;
+ case 4:
+ LoadCompressedPalette(gBattleTerrainPalette_StadiumSidney, 0x20, 0x60);
+ break;
+ case 5:
+ LoadCompressedPalette(gBattleTerrainPalette_StadiumPhoebe, 0x20, 0x60);
+ break;
+ case 6:
+ LoadCompressedPalette(gBattleTerrainPalette_StadiumGlacia, 0x20, 0x60);
+ break;
+ case 7:
+ LoadCompressedPalette(gBattleTerrainPalette_StadiumDrake, 0x20, 0x60);
+ break;
+ case 8:
+ LoadCompressedPalette(gBattleTerrainPalette_BattleTower, 0x20, 0x60);
+ break;
+ }
+ break;
+ }
+ } else {
+ LoadCompressedPalette(gBattleTerrainPalette_BattleTower, 0x20, 0x60);
+ break;
+ }
+ case 6:
+ ApplyPlayerChosenFrameToBattleMenu();
+ break;
+ default:
+ ret = 1;
+ }
+ return ret;
+}
diff --git a/src/battle/battle_controller_linkopponent.c b/src/battle/battle_controller_linkopponent.c
index e08f865da..a759822cd 100644
--- a/src/battle/battle_controller_linkopponent.c
+++ b/src/battle/battle_controller_linkopponent.c
@@ -25,15 +25,15 @@ struct MovePpInfo
u8 ppBonuses;
};
-extern u8 gActiveBank;
+extern u8 gActiveBattler;
extern u8 gBattleBufferA[][0x200];
extern u8 gBankSpriteIds[];
-extern u16 gBattlePartyID[];
+extern u16 gBattlerPartyIndexes[];
extern u8 gHealthboxIDs[];
extern u16 gBattleTypeFlags;
extern u8 gBattleMonForms[];
extern void (*gBattleBankFunc[])(void);
-extern u32 gAnimMoveDmg;
+extern s32 gAnimMoveDmg;
extern u16 gAnimMovePower;
extern u8 gAnimFriendship;
extern u16 gWeatherMoveAnim;
@@ -55,7 +55,7 @@ extern struct MusicPlayerInfo gMPlay_BGM;
extern u8 sub_8077F68();
extern u8 sub_8079E90();
-extern u8 GetBankIdentity(u8);
+extern u8 GetBattlerPosition(u8);
extern void BattleLoadOpponentMonSprite(struct Pokemon *, u8);
extern void sub_8037A74(void);
extern void sub_8032984(u8, u16);
@@ -90,7 +90,7 @@ extern void sub_8037FAC(void);
extern void move_anim_start_t2_for_situation();
extern void dp01t_0F_4_move_anim(void);
extern void sub_8047858();
-extern u8 GetBankSide(u8);
+extern u8 GetBattlerSide(u8);
extern void StartBattleIntroAnim();
extern void sub_803A3A8(struct Sprite *);
extern void sub_8044CA0(u8);
@@ -248,15 +248,15 @@ void nullsub_47(void)
void SetBankFuncToLinkOpponentBufferRunCommand(void)
{
- gBattleBankFunc[gActiveBank] = sub_803752C;
+ gBattleBankFunc[gActiveBattler] = sub_803752C;
}
void sub_803752C(void)
{
- if (gBattleExecBuffer & gBitTable[gActiveBank])
+ if (gBattleExecBuffer & gBitTable[gActiveBattler])
{
- if (gBattleBufferA[gActiveBank][0] <= 0x38)
- gLinkOpponentBufferCommands[gBattleBufferA[gActiveBank][0]]();
+ if (gBattleBufferA[gActiveBattler][0] <= 0x38)
+ gLinkOpponentBufferCommands[gBattleBufferA[gActiveBattler][0]]();
else
LinkOpponentBufferExecCompleted();
}
@@ -264,27 +264,27 @@ void sub_803752C(void)
void sub_803757C(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gBankSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
LinkOpponentBufferExecCompleted();
}
void sub_80375B4(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gBankSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
{
- sub_8031B74(gSprites[gBankSpriteIds[gActiveBank]].oam.affineParam);
- gSprites[gBankSpriteIds[gActiveBank]].oam.tileNum = gSprites[gBankSpriteIds[gActiveBank]].data[5];
- FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
- DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
+ sub_8031B74(gSprites[gBankSpriteIds[gActiveBattler]].oam.affineParam);
+ gSprites[gBankSpriteIds[gActiveBattler]].oam.tileNum = gSprites[gBankSpriteIds[gActiveBattler]].data[5];
+ FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBattler]]);
+ DestroySprite(&gSprites[gBankSpriteIds[gActiveBattler]]);
LinkOpponentBufferExecCompleted();
}
}
void sub_8037644(void)
{
- if ((--ewram17810[gActiveBank].unk9) == 0xFF)
+ if ((--ewram17810[gActiveBattler].unk9) == 0xFF)
{
- ewram17810[gActiveBank].unk9 = 0;
+ ewram17810[gActiveBattler].unk9 = 0;
LinkOpponentBufferExecCompleted();
}
}
@@ -295,13 +295,13 @@ void sub_8037680(void)
if (!IsDoubleBattle() || (IsDoubleBattle() && (gBattleTypeFlags & BATTLE_TYPE_MULTI)))
{
- if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gHealthboxIDs[gActiveBattler]].callback == SpriteCallbackDummy)
r6 = TRUE;
}
else
{
- if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy
- && gSprites[gHealthboxIDs[gActiveBank ^ 2]].callback == SpriteCallbackDummy)
+ if (gSprites[gHealthboxIDs[gActiveBattler]].callback == SpriteCallbackDummy
+ && gSprites[gHealthboxIDs[gActiveBattler ^ 2]].callback == SpriteCallbackDummy)
r6 = TRUE;
}
if (IsCryPlayingOrClearCrySongs())
@@ -309,88 +309,88 @@ void sub_8037680(void)
if (r6)
{
- if (GetBankIdentity(gActiveBank) == 1)
+ if (GetBattlerPosition(gActiveBattler) == 1)
{
- if (!ewram17810[gActiveBank].unk1_0 || !ewram17810[gActiveBank ^ 2].unk1_0)
+ if (!ewram17810[gActiveBattler].unk1_0 || !ewram17810[gActiveBattler ^ 2].unk1_0)
return;
- ewram17810[gActiveBank].unk0_7 = 0;
- ewram17810[gActiveBank].unk1_0 = 0;
- ewram17810[gActiveBank ^ 2].unk0_7 = 0;
- ewram17810[gActiveBank ^ 2].unk1_0 = 0;
+ ewram17810[gActiveBattler].unk0_7 = 0;
+ ewram17810[gActiveBattler].unk1_0 = 0;
+ ewram17810[gActiveBattler ^ 2].unk0_7 = 0;
+ ewram17810[gActiveBattler ^ 2].unk1_0 = 0;
FreeSpriteTilesByTag(0x27F9);
FreeSpritePaletteByTag(0x27F9);
}
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
{
- if (GetBankIdentity(gActiveBank) == 1)
+ if (GetBattlerPosition(gActiveBattler) == 1)
m4aMPlayContinue(&gMPlay_BGM);
}
else
{
m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 256);
}
- ewram17810[gActiveBank].unk9 = 3;
- gBattleBankFunc[gActiveBank] = sub_8037644;
+ ewram17810[gActiveBattler].unk9 = 3;
+ gBattleBankFunc[gActiveBattler] = sub_8037644;
}
}
void sub_8037840(void)
{
- if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank].unk0_7)
- sub_8141828(gActiveBank, &gEnemyParty[gBattlePartyID[gActiveBank]]);
- if (!ewram17810[gActiveBank ^ 2].unk0_3 && !ewram17810[gActiveBank ^ 2].unk0_7)
- sub_8141828(gActiveBank ^ 2, &gEnemyParty[gBattlePartyID[gActiveBank ^ 2]]);
- if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank ^ 2].unk0_3)
+ if (!ewram17810[gActiveBattler].unk0_3 && !ewram17810[gActiveBattler].unk0_7)
+ sub_8141828(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]);
+ if (!ewram17810[gActiveBattler ^ 2].unk0_3 && !ewram17810[gActiveBattler ^ 2].unk0_7)
+ sub_8141828(gActiveBattler ^ 2, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler ^ 2]]);
+ if (!ewram17810[gActiveBattler].unk0_3 && !ewram17810[gActiveBattler ^ 2].unk0_3)
{
- if ((gBattleTypeFlags & BATTLE_TYPE_MULTI) && GetBankIdentity(gActiveBank) == 3)
+ if ((gBattleTypeFlags & BATTLE_TYPE_MULTI) && GetBattlerPosition(gActiveBattler) == 3)
{
- if (++ewram17810[gActiveBank].unk9 == 1)
+ if (++ewram17810[gActiveBattler].unk9 == 1)
return;
- ewram17810[gActiveBank].unk9 = 0;
+ ewram17810[gActiveBattler].unk9 = 0;
}
if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
- DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank ^ 2]]);
+ DestroySprite(&gSprites[gUnknown_0300434C[gActiveBattler ^ 2]]);
sub_8045A5C(
- gHealthboxIDs[gActiveBank ^ 2],
- &gEnemyParty[gBattlePartyID[gActiveBank ^ 2]],
+ gHealthboxIDs[gActiveBattler ^ 2],
+ &gEnemyParty[gBattlerPartyIndexes[gActiveBattler ^ 2]],
0);
- sub_804777C(gActiveBank ^ 2);
- sub_8043DFC(gHealthboxIDs[gActiveBank ^ 2]);
+ sub_804777C(gActiveBattler ^ 2);
+ sub_8043DFC(gHealthboxIDs[gActiveBattler ^ 2]);
sub_8032984(
- gActiveBank ^ 2,
- GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank ^ 2]], MON_DATA_SPECIES));
+ gActiveBattler ^ 2,
+ GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler ^ 2]], MON_DATA_SPECIES));
}
- DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank]]);
+ DestroySprite(&gSprites[gUnknown_0300434C[gActiveBattler]]);
sub_8045A5C(
- gHealthboxIDs[gActiveBank],
- &gEnemyParty[gBattlePartyID[gActiveBank]],
+ gHealthboxIDs[gActiveBattler],
+ &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]],
0);
- sub_804777C(gActiveBank);
- sub_8043DFC(gHealthboxIDs[gActiveBank]);
+ sub_804777C(gActiveBattler);
+ sub_8043DFC(gHealthboxIDs[gActiveBattler]);
sub_8032984(
- gActiveBank,
- GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES));
+ gActiveBattler,
+ GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES));
ewram17840.unk9_0 = 0;
- gBattleBankFunc[gActiveBank] = sub_8037680;
+ gBattleBankFunc[gActiveBattler] = sub_8037680;
}
}
void sub_8037A74(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].animEnded == TRUE
- && gSprites[gBankSpriteIds[gActiveBank]].pos2.x == 0)
+ if (gSprites[gBankSpriteIds[gActiveBattler]].animEnded == TRUE
+ && gSprites[gBankSpriteIds[gActiveBattler]].pos2.x == 0)
{
- if (!ewram17810[gActiveBank].unk0_7)
+ if (!ewram17810[gActiveBattler].unk0_7)
{
- sub_8141828(gActiveBank, &gEnemyParty[gBattlePartyID[gActiveBank]]);
+ sub_8141828(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]);
return;
}
- if (ewram17810[gActiveBank].unk1_0)
+ if (ewram17810[gActiveBattler].unk1_0)
{
- ewram17810[gActiveBank].unk0_7 = 0;
- ewram17810[gActiveBank].unk1_0 = 0;
+ ewram17810[gActiveBattler].unk0_7 = 0;
+ ewram17810[gActiveBattler].unk1_0 = 0;
FreeSpriteTilesByTag(0x27F9);
FreeSpritePaletteByTag(0x27F9);
LinkOpponentBufferExecCompleted();
@@ -401,32 +401,32 @@ void sub_8037A74(void)
void sub_8037B24(void)
{
- s16 r4 = sub_8045C78(gActiveBank, gHealthboxIDs[gActiveBank], 0, 0);
+ s16 r4 = sub_8045C78(gActiveBattler, gHealthboxIDs[gActiveBattler], 0, 0);
- sub_8043DFC(gHealthboxIDs[gActiveBank]);
+ sub_8043DFC(gHealthboxIDs[gActiveBattler]);
if (r4 != -1)
- sub_80440EC(gHealthboxIDs[gActiveBank], r4, 0);
+ sub_80440EC(gHealthboxIDs[gActiveBattler], r4, 0);
else
LinkOpponentBufferExecCompleted();
}
void sub_8037B78(void)
{
- if (!gSprites[gBankSpriteIds[gActiveBank]].inUse)
+ if (!gSprites[gBankSpriteIds[gActiveBattler]].inUse)
{
- sub_8043DB0(gHealthboxIDs[gActiveBank]);
+ sub_8043DB0(gHealthboxIDs[gActiveBattler]);
LinkOpponentBufferExecCompleted();
}
}
void sub_8037BBC(void)
{
- if (!ewram17810[gActiveBank].unk0_6)
+ if (!ewram17810[gActiveBattler].unk0_6)
{
- FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
- DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
- sub_8032A08(gActiveBank);
- sub_8043DB0(gHealthboxIDs[gActiveBank]);
+ FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBattler]]);
+ DestroySprite(&gSprites[gBankSpriteIds[gActiveBattler]]);
+ sub_8032A08(gActiveBattler);
+ sub_8043DB0(gHealthboxIDs[gActiveBattler]);
LinkOpponentBufferExecCompleted();
}
}
@@ -439,7 +439,7 @@ void sub_8037C2C(void)
void dp01t_0F_4_move_anim(void)
{
- u8 spriteId = gBankSpriteIds[gActiveBank];
+ u8 spriteId = gBankSpriteIds[gActiveBattler];
if (gSprites[spriteId].data[1] == 32)
{
@@ -458,17 +458,17 @@ void dp01t_0F_4_move_anim(void)
void sub_8037CC0(void)
{
- if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gHealthboxIDs[gActiveBattler]].callback == SpriteCallbackDummy)
{
- if (ewram17800[gActiveBank].substituteSprite)
- move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6);
- gBattleBankFunc[gActiveBank] = sub_8037D2C;
+ if (ewram17800[gActiveBattler].substituteSprite)
+ move_anim_start_t4(gActiveBattler, gActiveBattler, gActiveBattler, 6);
+ gBattleBankFunc[gActiveBattler] = sub_8037D2C;
}
}
void sub_8037D2C(void)
{
- if (!ewram17810[gActiveBank].unk0_6)
+ if (!ewram17810[gActiveBattler].unk0_6)
{
CreateTask(c3_0802FDF4, 10);
LinkOpponentBufferExecCompleted();
@@ -477,34 +477,34 @@ void sub_8037D2C(void)
void sub_8037D64(void)
{
- if (ewram17810[gActiveBank].unk1_0)
+ if (ewram17810[gActiveBattler].unk1_0)
{
- ewram17810[gActiveBank].unk0_7 = 0;
- ewram17810[gActiveBank].unk1_0 = 0;
+ ewram17810[gActiveBattler].unk0_7 = 0;
+ ewram17810[gActiveBattler].unk1_0 = 0;
FreeSpriteTilesByTag(0x27F9);
FreeSpritePaletteByTag(0x27F9);
- StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], 0);
+ StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBattler]], 0);
sub_8045A5C(
- gHealthboxIDs[gActiveBank],
- &gEnemyParty[gBattlePartyID[gActiveBank]],
+ gHealthboxIDs[gActiveBattler],
+ &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]],
0);
- sub_804777C(gActiveBank);
- sub_8043DFC(gHealthboxIDs[gActiveBank]);
- sub_8031F88(gActiveBank);
- gBattleBankFunc[gActiveBank] = sub_8037CC0;
+ sub_804777C(gActiveBattler);
+ sub_8043DFC(gHealthboxIDs[gActiveBattler]);
+ sub_8031F88(gActiveBattler);
+ gBattleBankFunc[gActiveBattler] = sub_8037CC0;
}
}
void sub_8037E30(void)
{
- if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank].unk0_7)
- sub_8141828(gActiveBank, &gEnemyParty[gBattlePartyID[gActiveBank]]);
- if (gSprites[gUnknown_0300434C[gActiveBank]].callback == SpriteCallbackDummy
- && !ewram17810[gActiveBank].unk0_3)
+ if (!ewram17810[gActiveBattler].unk0_3 && !ewram17810[gActiveBattler].unk0_7)
+ sub_8141828(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]);
+ if (gSprites[gUnknown_0300434C[gActiveBattler]].callback == SpriteCallbackDummy
+ && !ewram17810[gActiveBattler].unk0_3)
{
- DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank]]);
- sub_8032984(gActiveBank, GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES));
- gBattleBankFunc[gActiveBank] = sub_8037D64;
+ DestroySprite(&gSprites[gUnknown_0300434C[gActiveBattler]]);
+ sub_8032984(gActiveBattler, GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES));
+ gBattleBankFunc[gActiveBattler] = sub_8037D64;
}
}
@@ -526,7 +526,7 @@ void sub_8037F34(void)
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{
sub_800832C();
- gBattleBankFunc[gActiveBank] = sub_8037EF0;
+ gBattleBankFunc[gActiveBattler] = sub_8037EF0;
}
else
{
@@ -540,29 +540,29 @@ void sub_8037F34(void)
void sub_8037FAC(void)
{
- if (!ewram17810[gActiveBank].unk0_4)
+ if (!ewram17810[gActiveBattler].unk0_4)
LinkOpponentBufferExecCompleted();
}
void sub_8037FD8(void)
{
- if (!ewram17810[gActiveBank].unk0_5)
+ if (!ewram17810[gActiveBattler].unk0_5)
LinkOpponentBufferExecCompleted();
}
void LinkOpponentBufferExecCompleted(void)
{
- gBattleBankFunc[gActiveBank] = sub_803752C;
+ gBattleBankFunc[gActiveBattler] = sub_803752C;
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{
u8 playerId = GetMultiplayerId();
PrepareBufferDataTransferLink(2, 4, &playerId);
- gBattleBufferA[gActiveBank][0] = 0x38;
+ gBattleBufferA[gActiveBattler][0] = 0x38;
}
else
{
- gBattleExecBuffer &= ~gBitTable[gActiveBank];
+ gBattleExecBuffer &= ~gBitTable[gActiveBattler];
}
}
@@ -573,13 +573,13 @@ void LinkOpponentHandleGetAttributes(void)
u8 r4;
s32 i;
- if (gBattleBufferA[gActiveBank][2] == 0)
+ if (gBattleBufferA[gActiveBattler][2] == 0)
{
- r6 = dp01_getattr_by_ch1_for_player_pokemon__(gBattlePartyID[gActiveBank], buffer);
+ r6 = dp01_getattr_by_ch1_for_player_pokemon__(gBattlerPartyIndexes[gActiveBattler], buffer);
}
else
{
- r4 = gBattleBufferA[gActiveBank][2];
+ r4 = gBattleBufferA[gActiveBattler][2];
for (i = 0; i < 6; i++)
{
if (r4 & 1)
@@ -601,7 +601,7 @@ u32 dp01_getattr_by_ch1_for_player_pokemon__(u8 a, u8 *buffer)
u32 data32;
s32 size = 0;
- switch (gBattleBufferA[gActiveBank][1])
+ switch (gBattleBufferA[gActiveBattler][1])
{
case 0:
battlePokemon.species = GetMonData(&gEnemyParty[a], MON_DATA_SPECIES);
@@ -664,7 +664,7 @@ u32 dp01_getattr_by_ch1_for_player_pokemon__(u8 a, u8 *buffer)
case 5:
case 6:
case 7:
- data16 = GetMonData(&gEnemyParty[a], MON_DATA_MOVE1 + gBattleBufferA[gActiveBank][1] - 4);
+ data16 = GetMonData(&gEnemyParty[a], MON_DATA_MOVE1 + gBattleBufferA[gActiveBattler][1] - 4);
buffer[0] = data16;
buffer[1] = data16 >> 8;
size = 2;
@@ -679,7 +679,7 @@ u32 dp01_getattr_by_ch1_for_player_pokemon__(u8 a, u8 *buffer)
case 10:
case 11:
case 12:
- buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_PP1 + gBattleBufferA[gActiveBank][1] - 9);
+ buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_PP1 + gBattleBufferA[gActiveBattler][1] - 9);
size = 1;
break;
case 17:
@@ -903,13 +903,13 @@ void LinkOpponentHandleSetAttributes(void)
u8 i;
u8 r4;
- if (gBattleBufferA[gActiveBank][2] == 0)
+ if (gBattleBufferA[gActiveBattler][2] == 0)
{
- sub_8038900(gBattlePartyID[gActiveBank]);
+ sub_8038900(gBattlerPartyIndexes[gActiveBattler]);
}
else
{
- r4 = gBattleBufferA[gActiveBank][2];
+ r4 = gBattleBufferA[gActiveBattler][2];
for (i = 0; i < 6; i++)
{
if (r4 & 1)
@@ -922,11 +922,11 @@ void LinkOpponentHandleSetAttributes(void)
void sub_8038900(u8 a)
{
- struct BattlePokemon *battlePokemon = (struct BattlePokemon *)&gBattleBufferA[gActiveBank][3];
- struct MovePpInfo *moveData = (struct MovePpInfo *)&gBattleBufferA[gActiveBank][3];
+ struct BattlePokemon *battlePokemon = (struct BattlePokemon *)&gBattleBufferA[gActiveBattler][3];
+ struct MovePpInfo *moveData = (struct MovePpInfo *)&gBattleBufferA[gActiveBattler][3];
s32 i;
- switch (gBattleBufferA[gActiveBank][1])
+ switch (gBattleBufferA[gActiveBattler][1])
{
case 0:
{
@@ -967,10 +967,10 @@ void sub_8038900(u8 a)
}
break;
case 1:
- SetMonData(&gEnemyParty[a], MON_DATA_SPECIES, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_SPECIES, &gBattleBufferA[gActiveBattler][3]);
break;
case 2:
- SetMonData(&gEnemyParty[a], MON_DATA_HELD_ITEM, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_HELD_ITEM, &gBattleBufferA[gActiveBattler][3]);
break;
case 3:
for (i = 0; i < 4; i++)
@@ -984,154 +984,154 @@ void sub_8038900(u8 a)
case 5:
case 6:
case 7:
- SetMonData(&gEnemyParty[a], MON_DATA_MOVE1 + gBattleBufferA[gActiveBank][1] - 4, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_MOVE1 + gBattleBufferA[gActiveBattler][1] - 4, &gBattleBufferA[gActiveBattler][3]);
break;
case 8:
- SetMonData(&gEnemyParty[a], MON_DATA_PP1, &gBattleBufferA[gActiveBank][3]);
- SetMonData(&gEnemyParty[a], MON_DATA_PP2, &gBattleBufferA[gActiveBank][4]);
- SetMonData(&gEnemyParty[a], MON_DATA_PP3, &gBattleBufferA[gActiveBank][5]);
- SetMonData(&gEnemyParty[a], MON_DATA_PP4, &gBattleBufferA[gActiveBank][6]);
- SetMonData(&gEnemyParty[a], MON_DATA_PP_BONUSES, &gBattleBufferA[gActiveBank][7]);
+ SetMonData(&gEnemyParty[a], MON_DATA_PP1, &gBattleBufferA[gActiveBattler][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_PP2, &gBattleBufferA[gActiveBattler][4]);
+ SetMonData(&gEnemyParty[a], MON_DATA_PP3, &gBattleBufferA[gActiveBattler][5]);
+ SetMonData(&gEnemyParty[a], MON_DATA_PP4, &gBattleBufferA[gActiveBattler][6]);
+ SetMonData(&gEnemyParty[a], MON_DATA_PP_BONUSES, &gBattleBufferA[gActiveBattler][7]);
break;
case 9:
case 10:
case 11:
case 12:
- SetMonData(&gEnemyParty[a], MON_DATA_PP1 + gBattleBufferA[gActiveBank][1] - 9, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_PP1 + gBattleBufferA[gActiveBattler][1] - 9, &gBattleBufferA[gActiveBattler][3]);
break;
case 17:
- SetMonData(&gEnemyParty[a], MON_DATA_OT_ID, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_OT_ID, &gBattleBufferA[gActiveBattler][3]);
break;
case 18:
- SetMonData(&gEnemyParty[a], MON_DATA_EXP, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_EXP, &gBattleBufferA[gActiveBattler][3]);
break;
case 19:
- SetMonData(&gEnemyParty[a], MON_DATA_HP_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_HP_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case 20:
- SetMonData(&gEnemyParty[a], MON_DATA_ATK_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_ATK_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case 21:
- SetMonData(&gEnemyParty[a], MON_DATA_DEF_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_DEF_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case 22:
- SetMonData(&gEnemyParty[a], MON_DATA_SPEED_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_SPEED_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case 23:
- SetMonData(&gEnemyParty[a], MON_DATA_SPATK_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_SPATK_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case 24:
- SetMonData(&gEnemyParty[a], MON_DATA_SPDEF_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_SPDEF_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case 25:
- SetMonData(&gEnemyParty[a], MON_DATA_FRIENDSHIP, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_FRIENDSHIP, &gBattleBufferA[gActiveBattler][3]);
break;
case 26:
- SetMonData(&gEnemyParty[a], MON_DATA_POKERUS, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_POKERUS, &gBattleBufferA[gActiveBattler][3]);
break;
case 27:
- SetMonData(&gEnemyParty[a], MON_DATA_MET_LOCATION, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_MET_LOCATION, &gBattleBufferA[gActiveBattler][3]);
break;
case 28:
- SetMonData(&gEnemyParty[a], MON_DATA_MET_LEVEL, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_MET_LEVEL, &gBattleBufferA[gActiveBattler][3]);
break;
case 29:
- SetMonData(&gEnemyParty[a], MON_DATA_MET_GAME, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_MET_GAME, &gBattleBufferA[gActiveBattler][3]);
break;
case 30:
- SetMonData(&gEnemyParty[a], MON_DATA_POKEBALL, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_POKEBALL, &gBattleBufferA[gActiveBattler][3]);
break;
case 31:
- SetMonData(&gEnemyParty[a], MON_DATA_HP_IV, &gBattleBufferA[gActiveBank][3]);
- SetMonData(&gEnemyParty[a], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBank][4]);
- SetMonData(&gEnemyParty[a], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][5]);
- SetMonData(&gEnemyParty[a], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBank][6]);
- SetMonData(&gEnemyParty[a], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][7]);
- SetMonData(&gEnemyParty[a], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBank][8]);
+ SetMonData(&gEnemyParty[a], MON_DATA_HP_IV, &gBattleBufferA[gActiveBattler][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBattler][4]);
+ SetMonData(&gEnemyParty[a], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBattler][5]);
+ SetMonData(&gEnemyParty[a], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBattler][6]);
+ SetMonData(&gEnemyParty[a], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBattler][7]);
+ SetMonData(&gEnemyParty[a], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBattler][8]);
break;
case 32:
- SetMonData(&gEnemyParty[a], MON_DATA_HP_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_HP_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case 33:
- SetMonData(&gEnemyParty[a], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case 34:
- SetMonData(&gEnemyParty[a], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case 35:
- SetMonData(&gEnemyParty[a], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case 36:
- SetMonData(&gEnemyParty[a], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case 37:
- SetMonData(&gEnemyParty[a], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case 38:
- SetMonData(&gEnemyParty[a], MON_DATA_PERSONALITY, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_PERSONALITY, &gBattleBufferA[gActiveBattler][3]);
break;
case 39:
- SetMonData(&gEnemyParty[a], MON_DATA_CHECKSUM, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_CHECKSUM, &gBattleBufferA[gActiveBattler][3]);
break;
case 40:
- SetMonData(&gEnemyParty[a], MON_DATA_STATUS, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_STATUS, &gBattleBufferA[gActiveBattler][3]);
break;
case 41:
- SetMonData(&gEnemyParty[a], MON_DATA_LEVEL, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_LEVEL, &gBattleBufferA[gActiveBattler][3]);
break;
case 42:
- SetMonData(&gEnemyParty[a], MON_DATA_HP, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_HP, &gBattleBufferA[gActiveBattler][3]);
break;
case 43:
- SetMonData(&gEnemyParty[a], MON_DATA_MAX_HP, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_MAX_HP, &gBattleBufferA[gActiveBattler][3]);
break;
case 44:
- SetMonData(&gEnemyParty[a], MON_DATA_ATK, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_ATK, &gBattleBufferA[gActiveBattler][3]);
break;
case 45:
- SetMonData(&gEnemyParty[a], MON_DATA_DEF, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_DEF, &gBattleBufferA[gActiveBattler][3]);
break;
case 46:
- SetMonData(&gEnemyParty[a], MON_DATA_SPEED, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_SPEED, &gBattleBufferA[gActiveBattler][3]);
break;
case 47:
- SetMonData(&gEnemyParty[a], MON_DATA_SPATK, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_SPATK, &gBattleBufferA[gActiveBattler][3]);
break;
case 48:
- SetMonData(&gEnemyParty[a], MON_DATA_SPDEF, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_SPDEF, &gBattleBufferA[gActiveBattler][3]);
break;
case 49:
- SetMonData(&gEnemyParty[a], MON_DATA_COOL, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_COOL, &gBattleBufferA[gActiveBattler][3]);
break;
case 50:
- SetMonData(&gEnemyParty[a], MON_DATA_BEAUTY, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_BEAUTY, &gBattleBufferA[gActiveBattler][3]);
break;
case 51:
- SetMonData(&gEnemyParty[a], MON_DATA_CUTE, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_CUTE, &gBattleBufferA[gActiveBattler][3]);
break;
case 52:
- SetMonData(&gEnemyParty[a], MON_DATA_SMART, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_SMART, &gBattleBufferA[gActiveBattler][3]);
break;
case 53:
- SetMonData(&gEnemyParty[a], MON_DATA_TOUGH, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_TOUGH, &gBattleBufferA[gActiveBattler][3]);
break;
case 54:
- SetMonData(&gEnemyParty[a], MON_DATA_SHEEN, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_SHEEN, &gBattleBufferA[gActiveBattler][3]);
break;
case 55:
- SetMonData(&gEnemyParty[a], MON_DATA_COOL_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_COOL_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
case 56:
- SetMonData(&gEnemyParty[a], MON_DATA_BEAUTY_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_BEAUTY_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
case 57:
- SetMonData(&gEnemyParty[a], MON_DATA_CUTE_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_CUTE_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
case 58:
- SetMonData(&gEnemyParty[a], MON_DATA_SMART_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_SMART_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
case 59:
- SetMonData(&gEnemyParty[a], MON_DATA_TOUGH_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_TOUGH_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
}
}
@@ -1141,36 +1141,36 @@ void LinkOpponentHandlecmd3(void)
u8 *dst;
u8 i;
- MEMSET_ALT(&gEnemyParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1],
- gBattleBufferA[gActiveBank][3 + i], gBattleBufferA[gActiveBank][2], i, dst);
+ MEMSET_ALT(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]] + gBattleBufferA[gActiveBattler][1],
+ gBattleBufferA[gActiveBattler][3 + i], gBattleBufferA[gActiveBattler][2], i, dst);
LinkOpponentBufferExecCompleted();
}
void LinkOpponentHandleLoadPokeSprite(void)
{
- u16 species = GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES);
+ u16 species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES);
- BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[gActiveBank]], gActiveBank);
- GetMonSpriteTemplate_803C56C(species, GetBankIdentity(gActiveBank));
- gBankSpriteIds[gActiveBank] = CreateSprite(
+ BattleLoadOpponentMonSprite(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
+ GetMonSpriteTemplate_803C56C(species, GetBattlerPosition(gActiveBattler));
+ gBankSpriteIds[gActiveBattler] = CreateSprite(
&gUnknown_02024E8C,
- GetBankPosition(gActiveBank, 2),
- sub_8077F68(gActiveBank),
- sub_8079E90(gActiveBank));
- gSprites[gBankSpriteIds[gActiveBank]].pos2.x = -240;
- gSprites[gBankSpriteIds[gActiveBank]].data[0] = gActiveBank;
- gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank;
- StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], gBattleMonForms[gActiveBank]);
- sub_8032984(gActiveBank, GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES));
- gBattleBankFunc[gActiveBank] = sub_8037A74;
+ GetBattlerSpriteCoord(gActiveBattler, 2),
+ sub_8077F68(gActiveBattler),
+ sub_8079E90(gActiveBattler));
+ gSprites[gBankSpriteIds[gActiveBattler]].pos2.x = -240;
+ gSprites[gBankSpriteIds[gActiveBattler]].data[0] = gActiveBattler;
+ gSprites[gBankSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
+ StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBattler]], gBattleMonForms[gActiveBattler]);
+ sub_8032984(gActiveBattler, GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES));
+ gBattleBankFunc[gActiveBattler] = sub_8037A74;
}
void LinkOpponentHandleSendOutPoke(void)
{
- gBattlePartyID[gActiveBank] = gBattleBufferA[gActiveBank][1];
- sub_8039430(gActiveBank, gBattleBufferA[gActiveBank][2]);
- gBattleBankFunc[gActiveBank] = sub_8037E30;
+ gBattlerPartyIndexes[gActiveBattler] = gBattleBufferA[gActiveBattler][1];
+ sub_8039430(gActiveBattler, gBattleBufferA[gActiveBattler][2]);
+ gBattleBankFunc[gActiveBattler] = sub_8037E30;
}
void sub_8039430(u8 a, u8 b)
@@ -1178,14 +1178,14 @@ void sub_8039430(u8 a, u8 b)
u16 species;
sub_8032AA8(a, b);
- gBattlePartyID[a] = gBattleBufferA[a][1];
- species = GetMonData(&gEnemyParty[gBattlePartyID[a]], MON_DATA_SPECIES);
+ gBattlerPartyIndexes[a] = gBattleBufferA[a][1];
+ species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[a]], MON_DATA_SPECIES);
gUnknown_0300434C[a] = CreateInvisibleSpriteWithCallback(sub_80312F0);
- BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[a]], a);
- GetMonSpriteTemplate_803C56C(species, GetBankIdentity(a));
+ BattleLoadOpponentMonSprite(&gEnemyParty[gBattlerPartyIndexes[a]], a);
+ GetMonSpriteTemplate_803C56C(species, GetBattlerPosition(a));
gBankSpriteIds[a] = CreateSprite(
&gUnknown_02024E8C,
- GetBankPosition(a, 2),
+ GetBattlerSpriteCoord(a, 2),
sub_8077F68(a),
sub_8079E90(a));
gSprites[gUnknown_0300434C[a]].data[1] = gBankSpriteIds[a];
@@ -1200,36 +1200,36 @@ void sub_8039430(u8 a, u8 b)
void LinkOpponentHandleReturnPokeToBall(void)
{
- if (gBattleBufferA[gActiveBank][1] == 0)
+ if (gBattleBufferA[gActiveBattler][1] == 0)
{
- ewram17810[gActiveBank].unk4 = 0;
- gBattleBankFunc[gActiveBank] = sub_8039648;
+ ewram17810[gActiveBattler].unk4 = 0;
+ gBattleBankFunc[gActiveBattler] = sub_8039648;
}
else
{
- FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
- DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
- sub_8032A08(gActiveBank);
- sub_8043DB0(gHealthboxIDs[gActiveBank]);
+ FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBattler]]);
+ DestroySprite(&gSprites[gBankSpriteIds[gActiveBattler]]);
+ sub_8032A08(gActiveBattler);
+ sub_8043DB0(gHealthboxIDs[gActiveBattler]);
LinkOpponentBufferExecCompleted();
}
}
void sub_8039648(void)
{
- switch (ewram17810[gActiveBank].unk4)
+ switch (ewram17810[gActiveBattler].unk4)
{
case 0:
- if (ewram17800[gActiveBank].substituteSprite)
- move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
- ewram17810[gActiveBank].unk4 = 1;
+ if (ewram17800[gActiveBattler].substituteSprite)
+ move_anim_start_t4(gActiveBattler, gActiveBattler, gActiveBattler, 5);
+ ewram17810[gActiveBattler].unk4 = 1;
break;
case 1:
- if (!ewram17810[gActiveBank].unk0_6)
+ if (!ewram17810[gActiveBattler].unk0_6)
{
- ewram17810[gActiveBank].unk4 = 0;
- move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 2);
- gBattleBankFunc[gActiveBank] = sub_8037BBC;
+ ewram17810[gActiveBattler].unk4 = 0;
+ move_anim_start_t4(gActiveBattler, gActiveBattler, gActiveBattler, 2);
+ gBattleBankFunc[gActiveBattler] = sub_8037BBC;
}
break;
}
@@ -1242,31 +1242,31 @@ void LinkOpponentHandleTrainerThrow(void)
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
{
- if (GetBankIdentity(gActiveBank) & 2)
+ if (GetBattlerPosition(gActiveBattler) & 2)
xOffset = -16;
else
xOffset = 16;
- gender = gLinkPlayers[sub_803FC34(gActiveBank)].gender;
+ gender = gLinkPlayers[sub_803FC34(gActiveBattler)].gender;
}
else
{
xOffset = 0;
gender = gLinkPlayers[GetMultiplayerId() ^ 1].gender;
}
- sub_8031A6C(gender, gActiveBank);
- GetMonSpriteTemplate_803C5A0(gender, GetBankIdentity(gActiveBank));
- gBankSpriteIds[gActiveBank] = CreateSprite(
+ sub_8031A6C(gender, gActiveBattler);
+ GetMonSpriteTemplate_803C5A0(gender, GetBattlerPosition(gActiveBattler));
+ gBankSpriteIds[gActiveBattler] = CreateSprite(
&gUnknown_02024E8C,
176 + xOffset, 40 + 4 * (8 - gTrainerFrontPicCoords[gender].coords),
- sub_8079E90(gActiveBank));
- gSprites[gBankSpriteIds[gActiveBank]].pos2.x = -240;
- gSprites[gBankSpriteIds[gActiveBank]].data[0] = 2;
- gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[gender].tag);
- gSprites[gBankSpriteIds[gActiveBank]].data[5] = gSprites[gBankSpriteIds[gActiveBank]].oam.tileNum;
- gSprites[gBankSpriteIds[gActiveBank]].oam.tileNum = GetSpriteTileStartByTag(gTrainerFrontPicTable[gender].tag);
- gSprites[gBankSpriteIds[gActiveBank]].oam.affineParam = gender;
- gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80313A0;
- gBattleBankFunc[gActiveBank] = sub_803757C;
+ sub_8079E90(gActiveBattler));
+ gSprites[gBankSpriteIds[gActiveBattler]].pos2.x = -240;
+ gSprites[gBankSpriteIds[gActiveBattler]].data[0] = 2;
+ gSprites[gBankSpriteIds[gActiveBattler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[gender].tag);
+ gSprites[gBankSpriteIds[gActiveBattler]].data[5] = gSprites[gBankSpriteIds[gActiveBattler]].oam.tileNum;
+ gSprites[gBankSpriteIds[gActiveBattler]].oam.tileNum = GetSpriteTileStartByTag(gTrainerFrontPicTable[gender].tag);
+ gSprites[gBankSpriteIds[gActiveBattler]].oam.affineParam = gender;
+ gSprites[gBankSpriteIds[gActiveBattler]].callback = sub_80313A0;
+ gBattleBankFunc[gActiveBattler] = sub_803757C;
}
void LinkOpponentHandleTrainerSlide(void)
@@ -1276,29 +1276,29 @@ void LinkOpponentHandleTrainerSlide(void)
void LinkOpponentHandleTrainerSlideBack(void)
{
- oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]);
- gSprites[gBankSpriteIds[gActiveBank]].data[0] = 35;
- gSprites[gBankSpriteIds[gActiveBank]].data[2] = 280;
- gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
- gSprites[gBankSpriteIds[gActiveBank]].callback = StartTranslateAnimSpriteByDeltas;
- StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBank]], SpriteCallbackDummy);
- gBattleBankFunc[gActiveBank] = sub_80375B4;
+ oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBattler]]);
+ gSprites[gBankSpriteIds[gActiveBattler]].data[0] = 35;
+ gSprites[gBankSpriteIds[gActiveBattler]].data[2] = 280;
+ gSprites[gBankSpriteIds[gActiveBattler]].data[4] = gSprites[gBankSpriteIds[gActiveBattler]].pos1.y;
+ gSprites[gBankSpriteIds[gActiveBattler]].callback = StartTranslateAnimSpriteByDeltas;
+ StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBattler]], SpriteCallbackDummy);
+ gBattleBankFunc[gActiveBattler] = sub_80375B4;
}
void LinkOpponentHandlecmd10(void)
{
- if (ewram17810[gActiveBank].unk4 == 0)
+ if (ewram17810[gActiveBattler].unk4 == 0)
{
- if (ewram17800[gActiveBank].substituteSprite)
- move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
- ewram17810[gActiveBank].unk4++;
+ if (ewram17800[gActiveBattler].substituteSprite)
+ move_anim_start_t4(gActiveBattler, gActiveBattler, gActiveBattler, 5);
+ ewram17810[gActiveBattler].unk4++;
}
- else if (!ewram17810[gActiveBank].unk0_6)
+ else if (!ewram17810[gActiveBattler].unk0_6)
{
- ewram17810[gActiveBank].unk4 = 0;
+ ewram17810[gActiveBattler].unk4 = 0;
PlaySE12WithPanning(SE_POKE_DEAD, 63);
- gSprites[gBankSpriteIds[gActiveBank]].callback = sub_8010384;
- gBattleBankFunc[gActiveBank] = sub_8037B78;
+ gSprites[gBankSpriteIds[gActiveBattler]].callback = sub_8010384;
+ gBattleBankFunc[gActiveBattler] = sub_8037B78;
}
}
@@ -1324,23 +1324,23 @@ void LinkOpponentHandlePuase(void)
void LinkOpponentHandleMoveAnimation(void)
{
- if (!mplay_80342A4(gActiveBank))
+ if (!mplay_80342A4(gActiveBattler))
{
- u32 r0 = gBattleBufferA[gActiveBank][1]
- | (gBattleBufferA[gActiveBank][2] << 8);
-
- gAnimMoveTurn = gBattleBufferA[gActiveBank][3];
- gAnimMovePower = gBattleBufferA[gActiveBank][4]
- | (gBattleBufferA[gActiveBank][5] << 8);
- gAnimMoveDmg = gBattleBufferA[gActiveBank][6]
- | (gBattleBufferA[gActiveBank][7] << 8)
- | (gBattleBufferA[gActiveBank][8] << 16)
- | (gBattleBufferA[gActiveBank][9] << 24);
- gAnimFriendship = gBattleBufferA[gActiveBank][10];
- gWeatherMoveAnim = gBattleBufferA[gActiveBank][12]
- | (gBattleBufferA[gActiveBank][13] << 8);
- gAnimDisableStructPtr = (struct DisableStruct *)&gBattleBufferA[gActiveBank][16];
- gTransformedPersonalities[gActiveBank] = gAnimDisableStructPtr->transformedMonPersonality;
+ u32 r0 = gBattleBufferA[gActiveBattler][1]
+ | (gBattleBufferA[gActiveBattler][2] << 8);
+
+ gAnimMoveTurn = gBattleBufferA[gActiveBattler][3];
+ gAnimMovePower = gBattleBufferA[gActiveBattler][4]
+ | (gBattleBufferA[gActiveBattler][5] << 8);
+ gAnimMoveDmg = gBattleBufferA[gActiveBattler][6]
+ | (gBattleBufferA[gActiveBattler][7] << 8)
+ | (gBattleBufferA[gActiveBattler][8] << 16)
+ | (gBattleBufferA[gActiveBattler][9] << 24);
+ gAnimFriendship = gBattleBufferA[gActiveBattler][10];
+ gWeatherMoveAnim = gBattleBufferA[gActiveBattler][12]
+ | (gBattleBufferA[gActiveBattler][13] << 8);
+ gAnimDisableStructPtr = (struct DisableStruct *)&gBattleBufferA[gActiveBattler][16];
+ gTransformedPersonalities[gActiveBattler] = gAnimDisableStructPtr->transformedMonPersonality;
// Dead code. sub_8031720 always returns 0.
if (sub_8031720(r0, gAnimMoveTurn) != 0)
@@ -1349,34 +1349,34 @@ void LinkOpponentHandleMoveAnimation(void)
}
else
{
- ewram17810[gActiveBank].unk4 = 0;
- gBattleBankFunc[gActiveBank] = sub_8039B64;
+ ewram17810[gActiveBattler].unk4 = 0;
+ gBattleBankFunc[gActiveBattler] = sub_8039B64;
}
}
}
void sub_8039B64(void)
{
- u16 r4 = gBattleBufferA[gActiveBank][1]
- | (gBattleBufferA[gActiveBank][2] << 8);
- u8 r7 = gBattleBufferA[gActiveBank][11];
+ u16 r4 = gBattleBufferA[gActiveBattler][1]
+ | (gBattleBufferA[gActiveBattler][2] << 8);
+ u8 r7 = gBattleBufferA[gActiveBattler][11];
- switch (ewram17810[gActiveBank].unk4)
+ switch (ewram17810[gActiveBattler].unk4)
{
case 0:
- if (ewram17800[gActiveBank].substituteSprite && !ewram17800[gActiveBank].unk0_3)
+ if (ewram17800[gActiveBattler].substituteSprite && !ewram17800[gActiveBattler].unk0_3)
{
- ewram17800[gActiveBank].unk0_3 = 1;
- move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
+ ewram17800[gActiveBattler].unk0_3 = 1;
+ move_anim_start_t4(gActiveBattler, gActiveBattler, gActiveBattler, 5);
}
- ewram17810[gActiveBank].unk4 = 1;
+ ewram17810[gActiveBattler].unk4 = 1;
break;
case 1:
- if (!ewram17810[gActiveBank].unk0_6)
+ if (!ewram17810[gActiveBattler].unk0_6)
{
sub_80326EC(0);
DoMoveAnim(r4);
- ewram17810[gActiveBank].unk4 = 2;
+ ewram17810[gActiveBattler].unk4 = 2;
}
break;
case 2:
@@ -1384,22 +1384,22 @@ void sub_8039B64(void)
if (!gAnimScriptActive)
{
sub_80326EC(1);
- if ((ewram17800[gActiveBank].substituteSprite) && r7 <= 1)
+ if ((ewram17800[gActiveBattler].substituteSprite) && r7 <= 1)
{
- move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6);
- ewram17800[gActiveBank].unk0_3 = 0;
+ move_anim_start_t4(gActiveBattler, gActiveBattler, gActiveBattler, 6);
+ ewram17800[gActiveBattler].unk0_3 = 0;
}
- ewram17810[gActiveBank].unk4 = 3;
+ ewram17810[gActiveBattler].unk4 = 3;
}
break;
case 3:
- if (!ewram17810[gActiveBank].unk0_6)
+ if (!ewram17810[gActiveBattler].unk0_6)
{
sub_8031F24();
sub_80324BC(
- gActiveBank,
- gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
- ewram17810[gActiveBank].unk4 = 0;
+ gActiveBattler,
+ gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8));
+ ewram17810[gActiveBattler].unk4 = 0;
LinkOpponentBufferExecCompleted();
}
break;
@@ -1410,9 +1410,9 @@ void LinkOpponentHandlePrintString(void)
{
gBattle_BG0_X = 0;
gBattle_BG0_Y = 0;
- BufferStringBattle(*(u16 *)&gBattleBufferA[gActiveBank][2]);
+ BufferStringBattle(*(u16 *)&gBattleBufferA[gActiveBattler][2]);
Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
- gBattleBankFunc[gActiveBank] = sub_8037C2C;
+ gBattleBankFunc[gActiveBattler] = sub_8037C2C;
}
void LinkOpponentHandlePrintStringPlayerOnly(void)
@@ -1455,21 +1455,21 @@ void LinkOpponentHandleHealthBarUpdate(void)
s16 r7;
load_gfxc_health_bar(0);
- r7 = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8);
+ r7 = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8);
if (r7 != 0x7FFF)
{
- u32 maxHP = GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_MAX_HP);
- u32 hp = GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_HP);
+ u32 maxHP = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP);
+ u32 hp = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_HP);
- sub_8043D84(gActiveBank, gHealthboxIDs[gActiveBank], maxHP, hp, r7);
+ sub_8043D84(gActiveBattler, gHealthboxIDs[gActiveBattler], maxHP, hp, r7);
}
else
{
- u32 maxHP = GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_MAX_HP);
+ u32 maxHP = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP);
- sub_8043D84(gActiveBank, gHealthboxIDs[gActiveBank], maxHP, 0, r7);
+ sub_8043D84(gActiveBattler, gHealthboxIDs[gActiveBattler], maxHP, 0, r7);
}
- gBattleBankFunc[gActiveBank] = sub_8037B24;
+ gBattleBankFunc[gActiveBattler] = sub_8037B24;
}
void LinkOpponentHandleExpBarUpdate(void)
@@ -1479,25 +1479,25 @@ void LinkOpponentHandleExpBarUpdate(void)
void LinkOpponentHandleStatusIconUpdate(void)
{
- if (mplay_80342A4(gActiveBank) == 0)
+ if (mplay_80342A4(gActiveBattler) == 0)
{
- sub_8045A5C(gHealthboxIDs[gActiveBank], &gEnemyParty[gBattlePartyID[gActiveBank]], 9);
- ewram17810[gActiveBank].unk0_4 = 0;
- gBattleBankFunc[gActiveBank] = sub_8037FAC;
+ sub_8045A5C(gHealthboxIDs[gActiveBattler], &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], 9);
+ ewram17810[gActiveBattler].unk0_4 = 0;
+ gBattleBankFunc[gActiveBattler] = sub_8037FAC;
}
}
void LinkOpponentHandleStatusAnimation(void)
{
- if (mplay_80342A4(gActiveBank) == 0)
+ if (mplay_80342A4(gActiveBattler) == 0)
{
move_anim_start_t2_for_situation(
- gBattleBufferA[gActiveBank][1],
- gBattleBufferA[gActiveBank][2]
- | (gBattleBufferA[gActiveBank][3] << 8)
- | (gBattleBufferA[gActiveBank][4] << 16)
- | (gBattleBufferA[gActiveBank][5] << 24));
- gBattleBankFunc[gActiveBank] = sub_8037FAC;
+ gBattleBufferA[gActiveBattler][1],
+ gBattleBufferA[gActiveBattler][2]
+ | (gBattleBufferA[gActiveBattler][3] << 8)
+ | (gBattleBufferA[gActiveBattler][4] << 16)
+ | (gBattleBufferA[gActiveBattler][5] << 24));
+ gBattleBankFunc[gActiveBattler] = sub_8037FAC;
}
}
@@ -1554,7 +1554,7 @@ void LinkOpponentHandlecmd37(void)
void LinkOpponentHandlecmd38(void)
{
- gUnknown_020238C8.unk0_0 = gBattleBufferA[gActiveBank][1];
+ gUnknown_020238C8.unk0_0 = gBattleBufferA[gActiveBattler][1];
LinkOpponentBufferExecCompleted();
}
@@ -1572,16 +1572,16 @@ void LinkOpponentHandlecmd40(void)
void LinkOpponentHandleHitAnimation(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].invisible == TRUE)
+ if (gSprites[gBankSpriteIds[gActiveBattler]].invisible == TRUE)
{
LinkOpponentBufferExecCompleted();
}
else
{
gDoingBattleAnim = TRUE;
- gSprites[gBankSpriteIds[gActiveBank]].data[1] = 0;
- sub_8047858(gActiveBank);
- gBattleBankFunc[gActiveBank] = dp01t_0F_4_move_anim;
+ gSprites[gBankSpriteIds[gActiveBattler]].data[1] = 0;
+ sub_8047858(gActiveBattler);
+ gBattleBankFunc[gActiveBattler] = dp01t_0F_4_move_anim;
}
}
@@ -1594,31 +1594,31 @@ void LinkOpponentHandleEffectivenessSound(void)
{
s8 pan;
- if (GetBankSide(gActiveBank) == 0)
+ if (GetBattlerSide(gActiveBattler) == 0)
pan = -64;
else
pan = 63;
- PlaySE12WithPanning(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8), pan);
+ PlaySE12WithPanning(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8), pan);
LinkOpponentBufferExecCompleted();
}
void LinkOpponentHandlecmd44(void)
{
- PlayFanfare(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
+ PlayFanfare(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8));
LinkOpponentBufferExecCompleted();
}
void LinkOpponentHandleFaintingCry(void)
{
PlayCry3(
- GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES),
+ GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES),
25, 5);
LinkOpponentBufferExecCompleted();
}
void LinkOpponentHandleIntroSlide(void)
{
- StartBattleIntroAnim(gBattleBufferA[gActiveBank][1]);
+ StartBattleIntroAnim(gBattleBufferA[gActiveBattler][1]);
gUnknown_02024DE8 |= 1;
LinkOpponentBufferExecCompleted();
}
@@ -1627,42 +1627,42 @@ void LinkOpponentHandleTrainerBallThrow(void)
{
u8 taskId;
- oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]);
- gSprites[gBankSpriteIds[gActiveBank]].data[0] = 35;
- gSprites[gBankSpriteIds[gActiveBank]].data[2] = 280;
- gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
- gSprites[gBankSpriteIds[gActiveBank]].callback = StartTranslateAnimSpriteByDeltas;
- StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBank]], sub_803A3A8);
+ oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBattler]]);
+ gSprites[gBankSpriteIds[gActiveBattler]].data[0] = 35;
+ gSprites[gBankSpriteIds[gActiveBattler]].data[2] = 280;
+ gSprites[gBankSpriteIds[gActiveBattler]].data[4] = gSprites[gBankSpriteIds[gActiveBattler]].pos1.y;
+ gSprites[gBankSpriteIds[gActiveBattler]].callback = StartTranslateAnimSpriteByDeltas;
+ StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBattler]], sub_803A3A8);
taskId = CreateTask(sub_803A2C4, 5);
- gTasks[taskId].data[0] = gActiveBank;
- if (ewram17810[gActiveBank].unk0_0)
- gTasks[gUnknown_02024E68[gActiveBank]].func = sub_8044CA0;
+ gTasks[taskId].data[0] = gActiveBattler;
+ if (ewram17810[gActiveBattler].unk0_0)
+ gTasks[gUnknown_02024E68[gActiveBattler]].func = sub_8044CA0;
ewram17840.unk9_0 = 1;
- gBattleBankFunc[gActiveBank] = nullsub_47;
+ gBattleBankFunc[gActiveBattler] = nullsub_47;
}
void sub_803A2C4(u8 taskId)
{
u8 r9;
- r9 = gActiveBank;
- gActiveBank = gTasks[taskId].data[0];
+ r9 = gActiveBattler;
+ gActiveBattler = gTasks[taskId].data[0];
if (!IsDoubleBattle() || (gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
- gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
- sub_8039430(gActiveBank, 0);
+ gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler];
+ sub_8039430(gActiveBattler, 0);
}
else
{
- gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
- sub_8039430(gActiveBank, 0);
- gActiveBank ^= 2;
- gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
- sub_8039430(gActiveBank, 0);
- gActiveBank ^= 2;
+ gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler];
+ sub_8039430(gActiveBattler, 0);
+ gActiveBattler ^= 2;
+ gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler];
+ sub_8039430(gActiveBattler, 0);
+ gActiveBattler ^= 2;
}
- gBattleBankFunc[gActiveBank] = sub_8037840;
- gActiveBank = r9;
+ gBattleBankFunc[gActiveBattler] = sub_8037840;
+ gActiveBattler = r9;
DestroyTask(taskId);
}
@@ -1676,49 +1676,49 @@ void sub_803A3A8(struct Sprite *sprite)
void LinkOpponentHandlecmd48(void)
{
- if (gBattleBufferA[gActiveBank][1] != 0 && GetBankSide(gActiveBank) == 0)
+ if (gBattleBufferA[gActiveBattler][1] != 0 && GetBattlerSide(gActiveBattler) == 0)
{
LinkOpponentBufferExecCompleted();
return;
}
- ewram17810[gActiveBank].unk0_0 = 1;
- if (gBattleBufferA[gActiveBank][2] != 0)
+ ewram17810[gActiveBattler].unk0_0 = 1;
+ if (gBattleBufferA[gActiveBattler][2] != 0)
{
- if (ewram17810[gActiveBank].unk1_1 < 2)
+ if (ewram17810[gActiveBattler].unk1_1 < 2)
{
- ewram17810[gActiveBank].unk1_1++;
+ ewram17810[gActiveBattler].unk1_1++;
return;
}
else
{
- ewram17810[gActiveBank].unk1_1 = 0;
+ ewram17810[gActiveBattler].unk1_1 = 0;
}
}
- gUnknown_02024E68[gActiveBank] = sub_8044804(
- gActiveBank,
- (struct BattleInterfaceStruct2 *)&gBattleBufferA[gActiveBank][4],
- gBattleBufferA[gActiveBank][1],
- gBattleBufferA[gActiveBank][2]);
- ewram17810[gActiveBank].unk5 = 0;
- if (gBattleBufferA[gActiveBank][2] != 0)
- ewram17810[gActiveBank].unk5 = 0x5D;
- gBattleBankFunc[gActiveBank] = sub_803A4E0;
+ gUnknown_02024E68[gActiveBattler] = sub_8044804(
+ gActiveBattler,
+ (struct BattleInterfaceStruct2 *)&gBattleBufferA[gActiveBattler][4],
+ gBattleBufferA[gActiveBattler][1],
+ gBattleBufferA[gActiveBattler][2]);
+ ewram17810[gActiveBattler].unk5 = 0;
+ if (gBattleBufferA[gActiveBattler][2] != 0)
+ ewram17810[gActiveBattler].unk5 = 0x5D;
+ gBattleBankFunc[gActiveBattler] = sub_803A4E0;
}
void sub_803A4E0(void)
{
- if (ewram17810[gActiveBank].unk5++ >= 93)
+ if (ewram17810[gActiveBattler].unk5++ >= 93)
{
- ewram17810[gActiveBank].unk5 = 0;
+ ewram17810[gActiveBattler].unk5 = 0;
LinkOpponentBufferExecCompleted();
}
}
void LinkOpponentHandlecmd49(void)
{
- if (ewram17810[gActiveBank].unk0_0)
- gTasks[gUnknown_02024E68[gActiveBank]].func = sub_8044CA0;
+ if (ewram17810[gActiveBattler].unk0_0)
+ gTasks[gUnknown_02024E68[gActiveBattler]].func = sub_8044CA0;
LinkOpponentBufferExecCompleted();
}
@@ -1729,25 +1729,25 @@ void LinkOpponentHandlecmd50(void)
void LinkOpponentHandleSpriteInvisibility(void)
{
- if (IsBankSpritePresent(gActiveBank) != 0)
+ if (IsBankSpritePresent(gActiveBattler) != 0)
{
- gSprites[gBankSpriteIds[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1];
- sub_8031F88(gActiveBank);
+ gSprites[gBankSpriteIds[gActiveBattler]].invisible = gBattleBufferA[gActiveBattler][1];
+ sub_8031F88(gActiveBattler);
}
LinkOpponentBufferExecCompleted();
}
void LinkOpponentHandleBattleAnimation(void)
{
- if (mplay_80342A4(gActiveBank) == 0)
+ if (mplay_80342A4(gActiveBattler) == 0)
{
- u8 r3 = gBattleBufferA[gActiveBank][1];
- u16 r4 = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8);
+ u8 r3 = gBattleBufferA[gActiveBattler][1];
+ u16 r4 = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8);
- if (move_anim_start_t3(gActiveBank, gActiveBank, gActiveBank, r3, r4) != 0)
+ if (move_anim_start_t3(gActiveBattler, gActiveBattler, gActiveBattler, r3, r4) != 0)
LinkOpponentBufferExecCompleted();
else
- gBattleBankFunc[gActiveBank] = sub_8037FD8;
+ gBattleBankFunc[gActiveBattler] = sub_8037FD8;
}
}
@@ -1763,14 +1763,14 @@ void LinkOpponentHandleResetActionMoveSelection(void)
void LinkOpponentHandlecmd55(void)
{
- if (gBattleBufferA[gActiveBank][1] == 3)
- gBattleOutcome = gBattleBufferA[gActiveBank][1];
+ if (gBattleBufferA[gActiveBattler][1] == 3)
+ gBattleOutcome = gBattleBufferA[gActiveBattler][1];
else
- gBattleOutcome = gBattleBufferA[gActiveBank][1] ^ 3;
+ gBattleOutcome = gBattleBufferA[gActiveBattler][1] ^ 3;
FadeOutMapMusic(5);
BeginFastPaletteFade(3);
LinkOpponentBufferExecCompleted();
- gBattleBankFunc[gActiveBank] = sub_8037F34;
+ gBattleBankFunc[gActiveBattler] = sub_8037F34;
}
void LinkOpponentHandlecmd56(void)
diff --git a/src/battle/battle_controller_linkpartner.c b/src/battle/battle_controller_linkpartner.c
index bace48f72..16aef5791 100644
--- a/src/battle/battle_controller_linkpartner.c
+++ b/src/battle/battle_controller_linkpartner.c
@@ -32,9 +32,9 @@ struct MovePpInfo
extern u16 gBattleTypeFlags;
extern u8 gDisplayedStringBattle[];
extern u8 gBattleBufferA[][0x200];
-extern u8 gActiveBank;
+extern u8 gActiveBattler;
extern u32 gBattleExecBuffer;
-extern u16 gBattlePartyID[];
+extern u16 gBattlerPartyIndexes[];
extern u8 gBankSpriteIds[];
extern u8 gBattleOutcome;
extern u16 gUnknown_02024DE8;
@@ -42,7 +42,7 @@ extern u8 gUnknown_02024E68[];
extern u8 gDoingBattleAnim;
extern u32 gTransformedPersonalities[];
extern struct SpriteTemplate gUnknown_02024E8C;
-extern u32 gAnimMoveDmg;
+extern s32 gAnimMoveDmg;
extern u16 gAnimMovePower;
extern u8 gAnimFriendship;
extern u16 gWeatherMoveAnim;
@@ -63,7 +63,6 @@ extern void sub_8030E38(struct Sprite *);
extern void StartBattleIntroAnim();
extern void sub_8047858();
extern void move_anim_start_t2_for_situation();
-extern void load_gfxc_health_bar();
extern void sub_8043D84();
extern void BufferStringBattle();
extern void sub_8031F24(void);
@@ -83,7 +82,7 @@ extern u8 sub_8046400();
extern void sub_80312F0(struct Sprite *);
extern u8 CreateInvisibleSpriteWithCallback();
extern void BattleLoadPlayerMonSprite();
-extern u8 GetBankPosition();
+extern u8 GetBattlerSpriteCoord();
extern u8 sub_8077F68();
extern u8 sub_8079E90();
extern void nullsub_10();
@@ -242,15 +241,15 @@ void nullsub_74(void)
void SetBankFuncToLinkPartnerBufferRunCommand(void)
{
- gBattleBankFunc[gActiveBank] = LinkPartnerBufferRunCommand;
+ gBattleBankFunc[gActiveBattler] = LinkPartnerBufferRunCommand;
}
void LinkPartnerBufferRunCommand(void)
{
- if (gBattleExecBuffer & gBitTable[gActiveBank])
+ if (gBattleExecBuffer & gBitTable[gActiveBattler])
{
- if (gBattleBufferA[gActiveBank][0] <= 0x38)
- gLinkPartnerBufferCommands[gBattleBufferA[gActiveBank][0]]();
+ if (gBattleBufferA[gActiveBattler][0] <= 0x38)
+ gLinkPartnerBufferCommands[gBattleBufferA[gActiveBattler][0]]();
else
LinkPartnerBufferExecCompleted();
}
@@ -258,26 +257,26 @@ void LinkPartnerBufferRunCommand(void)
void sub_811DAE4(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gBankSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
LinkPartnerBufferExecCompleted();
}
void sub_811DB1C(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gBankSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
{
nullsub_10(0);
- FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
- DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
+ FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBattler]]);
+ DestroySprite(&gSprites[gBankSpriteIds[gActiveBattler]]);
LinkPartnerBufferExecCompleted();
}
}
void sub_811DB84(void)
{
- if ((--ewram17810[gActiveBank].unk9) == 0xFF)
+ if ((--ewram17810[gActiveBattler].unk9) == 0xFF)
{
- ewram17810[gActiveBank].unk9 = 0;
+ ewram17810[gActiveBattler].unk9 = 0;
LinkPartnerBufferExecCompleted();
}
}
@@ -288,21 +287,21 @@ void sub_811DBC0(void)
if (!IsDoubleBattle() || (IsDoubleBattle() && (gBattleTypeFlags & 0x40)))
{
- if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gHealthboxIDs[gActiveBattler]].callback == SpriteCallbackDummy)
r6 = TRUE;
}
else
{
- if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy
- && gSprites[gHealthboxIDs[gActiveBank ^ 2]].callback == SpriteCallbackDummy)
+ if (gSprites[gHealthboxIDs[gActiveBattler]].callback == SpriteCallbackDummy
+ && gSprites[gHealthboxIDs[gActiveBattler ^ 2]].callback == SpriteCallbackDummy)
r6 = TRUE;
}
if (IsCryPlayingOrClearCrySongs())
r6 = FALSE;
if (r6)
{
- ewram17810[gActiveBank].unk9 = 3;
- gBattleBankFunc[gActiveBank] = sub_811DB84;
+ ewram17810[gActiveBattler].unk9 = 3;
+ gBattleBankFunc[gActiveBattler] = sub_811DB84;
}
}
@@ -310,34 +309,34 @@ void sub_811DCA0(void)
{
u8 r2;
- if (!ewram17810[gActiveBank].unk0_3)
+ if (!ewram17810[gActiveBattler].unk0_3)
{
// I couldn't get it to work as a bitfield here
- r2 = *((u8 *)&ewram17810[gActiveBank ^ 2]) & 8;
- if (!r2 && (++ewram17810[gActiveBank].unk9) != 1)
+ r2 = *((u8 *)&ewram17810[gActiveBattler ^ 2]) & 8;
+ if (!r2 && (++ewram17810[gActiveBattler].unk9) != 1)
{
- ewram17810[gActiveBank].unk9 = r2;
+ ewram17810[gActiveBattler].unk9 = r2;
if (IsDoubleBattle() && !(gBattleTypeFlags & 0x40))
{
- DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank ^ 2]]);
- sub_8045A5C(gHealthboxIDs[gActiveBank ^ 2], &gPlayerParty[gBattlePartyID[gActiveBank ^ 2]], 0);
- sub_804777C(gActiveBank ^ 2);
- sub_8043DFC(gHealthboxIDs[gActiveBank ^ 2]);
+ DestroySprite(&gSprites[gUnknown_0300434C[gActiveBattler ^ 2]]);
+ sub_8045A5C(gHealthboxIDs[gActiveBattler ^ 2], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ 2]], 0);
+ sub_804777C(gActiveBattler ^ 2);
+ sub_8043DFC(gHealthboxIDs[gActiveBattler ^ 2]);
}
- DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank]]);
- sub_8045A5C(gHealthboxIDs[gActiveBank], &gPlayerParty[gBattlePartyID[gActiveBank]], 0);
- sub_804777C(gActiveBank);
- sub_8043DFC(gHealthboxIDs[gActiveBank]);
+ DestroySprite(&gSprites[gUnknown_0300434C[gActiveBattler]]);
+ sub_8045A5C(gHealthboxIDs[gActiveBattler], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], 0);
+ sub_804777C(gActiveBattler);
+ sub_8043DFC(gHealthboxIDs[gActiveBattler]);
(s8)ewram17810[4].unk9 &= ~1;
- gBattleBankFunc[gActiveBank] = sub_811DBC0;
+ gBattleBankFunc[gActiveBattler] = sub_811DBC0;
}
}
}
void sub_811DDE8(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].animEnded
- && gSprites[gBankSpriteIds[gActiveBank]].pos2.x == 0)
+ if (gSprites[gBankSpriteIds[gActiveBattler]].animEnded
+ && gSprites[gBankSpriteIds[gActiveBattler]].pos2.x == 0)
LinkPartnerBufferExecCompleted();
}
@@ -345,38 +344,38 @@ void bx_t3_healthbar_update(void)
{
s16 r4;
- r4 = sub_8045C78(gActiveBank, gHealthboxIDs[gActiveBank], 0, 0);
- sub_8043DFC(gHealthboxIDs[gActiveBank]);
+ r4 = sub_8045C78(gActiveBattler, gHealthboxIDs[gActiveBattler], 0, 0);
+ sub_8043DFC(gHealthboxIDs[gActiveBattler]);
if (r4 != -1)
{
- sub_80440EC(gHealthboxIDs[gActiveBank], r4, 0);
+ sub_80440EC(gHealthboxIDs[gActiveBattler], r4, 0);
}
else
{
- HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
LinkPartnerBufferExecCompleted();
}
}
void sub_811DE98(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].pos1.y + gSprites[gBankSpriteIds[gActiveBank]].pos2.y > 160)
+ if (gSprites[gBankSpriteIds[gActiveBattler]].pos1.y + gSprites[gBankSpriteIds[gActiveBattler]].pos2.y > 160)
{
- nullsub_9(GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES));
- FreeOamMatrix(gSprites[gBankSpriteIds[gActiveBank]].oam.matrixNum);
- DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
- sub_8043DB0(gHealthboxIDs[gActiveBank]);
+ nullsub_9(GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES));
+ FreeOamMatrix(gSprites[gBankSpriteIds[gActiveBattler]].oam.matrixNum);
+ DestroySprite(&gSprites[gBankSpriteIds[gActiveBattler]]);
+ sub_8043DB0(gHealthboxIDs[gActiveBattler]);
LinkPartnerBufferExecCompleted();
}
}
void sub_811DF34(void)
{
- if (!ewram17810[gActiveBank].unk0_6)
+ if (!ewram17810[gActiveBattler].unk0_6)
{
- FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
- DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
- sub_8043DB0(gHealthboxIDs[gActiveBank]);
+ FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBattler]]);
+ DestroySprite(&gSprites[gBankSpriteIds[gActiveBattler]]);
+ sub_8043DB0(gHealthboxIDs[gActiveBattler]);
LinkPartnerBufferExecCompleted();
}
}
@@ -389,7 +388,7 @@ void sub_811DFA0(void)
void bx_blink_t3(void)
{
- u8 spriteId = gBankSpriteIds[gActiveBank];
+ u8 spriteId = gBankSpriteIds[gActiveBattler];
if (gSprites[spriteId].data[1] == 32)
{
gSprites[spriteId].data[1] = 0;
@@ -409,48 +408,48 @@ void bx_blink_t3(void)
void sub_811E034(void)
{
- if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gHealthboxIDs[gActiveBattler]].callback == SpriteCallbackDummy)
{
- if (ewram17800[gActiveBank].substituteSprite)
- move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6);
- gBattleBankFunc[gActiveBank] = sub_811E0A0;
+ if (ewram17800[gActiveBattler].substituteSprite)
+ move_anim_start_t4(gActiveBattler, gActiveBattler, gActiveBattler, 6);
+ gBattleBankFunc[gActiveBattler] = sub_811E0A0;
}
}
void sub_811E0A0(void)
{
- if (!ewram17810[gActiveBank].unk0_6)
+ if (!ewram17810[gActiveBattler].unk0_6)
LinkPartnerBufferExecCompleted();
}
void sub_811E0CC(void)
{
- if (ewram17810[gActiveBank].unk1_0)
+ if (ewram17810[gActiveBattler].unk1_0)
{
- ewram17810[gActiveBank].unk0_7 = 0;
- ewram17810[gActiveBank].unk1_0 = 0;
+ ewram17810[gActiveBattler].unk0_7 = 0;
+ ewram17810[gActiveBattler].unk1_0 = 0;
FreeSpriteTilesByTag(0x27F9);
FreeSpritePaletteByTag(0x27F9);
CreateTask(c3_0802FDF4, 10);
- HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
- StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], 0);
- sub_8045A5C(gHealthboxIDs[gActiveBank], &gPlayerParty[gBattlePartyID[gActiveBank]], 0);
- sub_804777C(gActiveBank);
- sub_8043DFC(gHealthboxIDs[gActiveBank]);
- sub_8031F88(gActiveBank);
- gBattleBankFunc[gActiveBank] = sub_811E034;
+ HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
+ StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBattler]], 0);
+ sub_8045A5C(gHealthboxIDs[gActiveBattler], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], 0);
+ sub_804777C(gActiveBattler);
+ sub_8043DFC(gHealthboxIDs[gActiveBattler]);
+ sub_8031F88(gActiveBattler);
+ gBattleBankFunc[gActiveBattler] = sub_811E034;
}
}
void sub_811E1BC(void)
{
- if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank].unk0_7)
- sub_8141828(gActiveBank, &gPlayerParty[gBattlePartyID[gActiveBank]]);
- if (gSprites[gUnknown_0300434C[gActiveBank]].callback == SpriteCallbackDummy
- && !ewram17810[gActiveBank].unk0_3)
+ if (!ewram17810[gActiveBattler].unk0_3 && !ewram17810[gActiveBattler].unk0_7)
+ sub_8141828(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]);
+ if (gSprites[gUnknown_0300434C[gActiveBattler]].callback == SpriteCallbackDummy
+ && !ewram17810[gActiveBattler].unk0_3)
{
- DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank]]);
- gBattleBankFunc[gActiveBank] = sub_811E0CC;
+ DestroySprite(&gSprites[gUnknown_0300434C[gActiveBattler]]);
+ gBattleBankFunc[gActiveBattler] = sub_811E0CC;
}
}
@@ -472,7 +471,7 @@ void sub_811E29C(void)
if (gBattleTypeFlags & 2)
{
sub_800832C();
- gBattleBankFunc[gActiveBank] = sub_811E258;
+ gBattleBankFunc[gActiveBattler] = sub_811E258;
}
else
{
@@ -488,28 +487,28 @@ void LinkPartnerBufferExecCompleted(void)
{
u8 multiplayerId;
- gBattleBankFunc[gActiveBank] = LinkPartnerBufferRunCommand;
+ gBattleBankFunc[gActiveBattler] = LinkPartnerBufferRunCommand;
if (gBattleTypeFlags & 2)
{
multiplayerId = GetMultiplayerId();
PrepareBufferDataTransferLink(2, 4, &multiplayerId);
- gBattleBufferA[gActiveBank][0] = 0x38;
+ gBattleBufferA[gActiveBattler][0] = 0x38;
}
else
{
- gBattleExecBuffer &= ~gBitTable[gActiveBank];
+ gBattleExecBuffer &= ~gBitTable[gActiveBattler];
}
}
void sub_811E38C(void)
{
- if (!ewram17810[gActiveBank].unk0_4)
+ if (!ewram17810[gActiveBattler].unk0_4)
LinkPartnerBufferExecCompleted();
}
void sub_811E3B8(void)
{
- if (!ewram17810[gActiveBank].unk0_5)
+ if (!ewram17810[gActiveBattler].unk0_5)
LinkPartnerBufferExecCompleted();
}
@@ -519,13 +518,13 @@ void LinkPartnerHandleGetAttributes(void)
int r6 = 0;
s32 i;
- if (gBattleBufferA[gActiveBank][2] == 0)
+ if (gBattleBufferA[gActiveBattler][2] == 0)
{
- r6 = dp01_getattr_by_ch1_for_player_pokemon(gBattlePartyID[gActiveBank], unk);
+ r6 = dp01_getattr_by_ch1_for_player_pokemon(gBattlerPartyIndexes[gActiveBattler], unk);
}
else
{
- u8 r4 = gBattleBufferA[gActiveBank][2];
+ u8 r4 = gBattleBufferA[gActiveBattler][2];
for (i = 0; i < 6; i++)
{
@@ -549,7 +548,7 @@ u32 dp01_getattr_by_ch1_for_player_pokemon(u8 a, u8 *buffer)
u32 data32;
s32 size = 0;
- switch (gBattleBufferA[gActiveBank][1])
+ switch (gBattleBufferA[gActiveBattler][1])
{
case 0:
battlePokemon.species = GetMonData(&gPlayerParty[a], MON_DATA_SPECIES);
@@ -611,7 +610,7 @@ u32 dp01_getattr_by_ch1_for_player_pokemon(u8 a, u8 *buffer)
case 5:
case 6:
case 7:
- data16 = GetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + gBattleBufferA[gActiveBank][1] - 4);
+ data16 = GetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + gBattleBufferA[gActiveBattler][1] - 4);
buffer[0] = data16;
buffer[1] = data16 >> 8;
size = 2;
@@ -626,7 +625,7 @@ u32 dp01_getattr_by_ch1_for_player_pokemon(u8 a, u8 *buffer)
case 10:
case 11:
case 12:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_PP1 + gBattleBufferA[gActiveBank][1] - 9);
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_PP1 + gBattleBufferA[gActiveBattler][1] - 9);
size = 1;
break;
case 17:
@@ -850,13 +849,13 @@ void LinkPartnerHandleSetAttributes(void)
u8 i;
u8 r4;
- if (gBattleBufferA[gActiveBank][2] == 0)
+ if (gBattleBufferA[gActiveBattler][2] == 0)
{
- sub_811EC68(gBattlePartyID[gActiveBank]);
+ sub_811EC68(gBattlerPartyIndexes[gActiveBattler]);
}
else
{
- r4 = gBattleBufferA[gActiveBank][2];
+ r4 = gBattleBufferA[gActiveBattler][2];
for (i = 0; i < 6; i++)
{
if (r4 & 1)
@@ -870,11 +869,11 @@ void LinkPartnerHandleSetAttributes(void)
// Duplicate of dp01_setattr_by_ch1_for_player_pokemon
void sub_811EC68(u8 a)
{
- struct BattlePokemon *battlePokemon = (struct BattlePokemon *)&gBattleBufferA[gActiveBank][3];
- struct MovePpInfo *moveData = (struct MovePpInfo *)&gBattleBufferA[gActiveBank][3];
+ struct BattlePokemon *battlePokemon = (struct BattlePokemon *)&gBattleBufferA[gActiveBattler][3];
+ struct MovePpInfo *moveData = (struct MovePpInfo *)&gBattleBufferA[gActiveBattler][3];
s32 i;
- switch (gBattleBufferA[gActiveBank][1])
+ switch (gBattleBufferA[gActiveBattler][1])
{
case 0:
{
@@ -915,10 +914,10 @@ void sub_811EC68(u8 a)
}
break;
case 1:
- SetMonData(&gPlayerParty[a], MON_DATA_SPECIES, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_SPECIES, &gBattleBufferA[gActiveBattler][3]);
break;
case 2:
- SetMonData(&gPlayerParty[a], MON_DATA_HELD_ITEM, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_HELD_ITEM, &gBattleBufferA[gActiveBattler][3]);
break;
case 3:
for (i = 0; i < 4; i++)
@@ -932,157 +931,157 @@ void sub_811EC68(u8 a)
case 5:
case 6:
case 7:
- SetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + gBattleBufferA[gActiveBank][1] - 4, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + gBattleBufferA[gActiveBattler][1] - 4, &gBattleBufferA[gActiveBattler][3]);
break;
case 8:
- SetMonData(&gPlayerParty[a], MON_DATA_PP1, &gBattleBufferA[gActiveBank][3]);
- SetMonData(&gPlayerParty[a], MON_DATA_PP2, &gBattleBufferA[gActiveBank][4]);
- SetMonData(&gPlayerParty[a], MON_DATA_PP3, &gBattleBufferA[gActiveBank][5]);
- SetMonData(&gPlayerParty[a], MON_DATA_PP4, &gBattleBufferA[gActiveBank][6]);
- SetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES, &gBattleBufferA[gActiveBank][7]);
+ SetMonData(&gPlayerParty[a], MON_DATA_PP1, &gBattleBufferA[gActiveBattler][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_PP2, &gBattleBufferA[gActiveBattler][4]);
+ SetMonData(&gPlayerParty[a], MON_DATA_PP3, &gBattleBufferA[gActiveBattler][5]);
+ SetMonData(&gPlayerParty[a], MON_DATA_PP4, &gBattleBufferA[gActiveBattler][6]);
+ SetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES, &gBattleBufferA[gActiveBattler][7]);
break;
case 9:
case 10:
case 11:
case 12:
- SetMonData(&gPlayerParty[a], MON_DATA_PP1 + gBattleBufferA[gActiveBank][1] - 9, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_PP1 + gBattleBufferA[gActiveBattler][1] - 9, &gBattleBufferA[gActiveBattler][3]);
break;
case 17:
- SetMonData(&gPlayerParty[a], MON_DATA_OT_ID, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_OT_ID, &gBattleBufferA[gActiveBattler][3]);
break;
case 18:
- SetMonData(&gPlayerParty[a], MON_DATA_EXP, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_EXP, &gBattleBufferA[gActiveBattler][3]);
break;
case 19:
- SetMonData(&gPlayerParty[a], MON_DATA_HP_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_HP_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case 20:
- SetMonData(&gPlayerParty[a], MON_DATA_ATK_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_ATK_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case 21:
- SetMonData(&gPlayerParty[a], MON_DATA_DEF_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_DEF_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case 22:
- SetMonData(&gPlayerParty[a], MON_DATA_SPEED_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_SPEED_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case 23:
- SetMonData(&gPlayerParty[a], MON_DATA_SPATK_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_SPATK_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case 24:
- SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case 25:
- SetMonData(&gPlayerParty[a], MON_DATA_FRIENDSHIP, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_FRIENDSHIP, &gBattleBufferA[gActiveBattler][3]);
break;
case 26:
- SetMonData(&gPlayerParty[a], MON_DATA_POKERUS, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_POKERUS, &gBattleBufferA[gActiveBattler][3]);
break;
case 27:
- SetMonData(&gPlayerParty[a], MON_DATA_MET_LOCATION, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_MET_LOCATION, &gBattleBufferA[gActiveBattler][3]);
break;
case 28:
- SetMonData(&gPlayerParty[a], MON_DATA_MET_LEVEL, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_MET_LEVEL, &gBattleBufferA[gActiveBattler][3]);
break;
case 29:
- SetMonData(&gPlayerParty[a], MON_DATA_MET_GAME, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_MET_GAME, &gBattleBufferA[gActiveBattler][3]);
break;
case 30:
- SetMonData(&gPlayerParty[a], MON_DATA_POKEBALL, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_POKEBALL, &gBattleBufferA[gActiveBattler][3]);
break;
case 31:
- SetMonData(&gPlayerParty[a], MON_DATA_HP_IV, &gBattleBufferA[gActiveBank][3]);
- SetMonData(&gPlayerParty[a], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBank][4]);
- SetMonData(&gPlayerParty[a], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][5]);
- SetMonData(&gPlayerParty[a], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBank][6]);
- SetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][7]);
- SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBank][8]);
+ SetMonData(&gPlayerParty[a], MON_DATA_HP_IV, &gBattleBufferA[gActiveBattler][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBattler][4]);
+ SetMonData(&gPlayerParty[a], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBattler][5]);
+ SetMonData(&gPlayerParty[a], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBattler][6]);
+ SetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBattler][7]);
+ SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBattler][8]);
break;
case 32:
- SetMonData(&gPlayerParty[a], MON_DATA_HP_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_HP_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case 33:
- SetMonData(&gPlayerParty[a], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case 34:
- SetMonData(&gPlayerParty[a], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case 35:
- SetMonData(&gPlayerParty[a], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case 36:
- SetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case 37:
- SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case 38:
- SetMonData(&gPlayerParty[a], MON_DATA_PERSONALITY, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_PERSONALITY, &gBattleBufferA[gActiveBattler][3]);
break;
case 39:
- SetMonData(&gPlayerParty[a], MON_DATA_CHECKSUM, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_CHECKSUM, &gBattleBufferA[gActiveBattler][3]);
break;
case 40:
- SetMonData(&gPlayerParty[a], MON_DATA_STATUS, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_STATUS, &gBattleBufferA[gActiveBattler][3]);
break;
case 41:
- SetMonData(&gPlayerParty[a], MON_DATA_LEVEL, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_LEVEL, &gBattleBufferA[gActiveBattler][3]);
break;
case 42:
- SetMonData(&gPlayerParty[a], MON_DATA_HP, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_HP, &gBattleBufferA[gActiveBattler][3]);
break;
case 43:
- SetMonData(&gPlayerParty[a], MON_DATA_MAX_HP, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_MAX_HP, &gBattleBufferA[gActiveBattler][3]);
break;
case 44:
- SetMonData(&gPlayerParty[a], MON_DATA_ATK, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_ATK, &gBattleBufferA[gActiveBattler][3]);
break;
case 45:
- SetMonData(&gPlayerParty[a], MON_DATA_DEF, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_DEF, &gBattleBufferA[gActiveBattler][3]);
break;
case 46:
- SetMonData(&gPlayerParty[a], MON_DATA_SPEED, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_SPEED, &gBattleBufferA[gActiveBattler][3]);
break;
case 47:
- SetMonData(&gPlayerParty[a], MON_DATA_SPATK, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_SPATK, &gBattleBufferA[gActiveBattler][3]);
break;
case 48:
- SetMonData(&gPlayerParty[a], MON_DATA_SPDEF, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_SPDEF, &gBattleBufferA[gActiveBattler][3]);
break;
case 49:
- SetMonData(&gPlayerParty[a], MON_DATA_COOL, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_COOL, &gBattleBufferA[gActiveBattler][3]);
break;
case 50:
- SetMonData(&gPlayerParty[a], MON_DATA_BEAUTY, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_BEAUTY, &gBattleBufferA[gActiveBattler][3]);
break;
case 51:
- SetMonData(&gPlayerParty[a], MON_DATA_CUTE, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_CUTE, &gBattleBufferA[gActiveBattler][3]);
break;
case 52:
- SetMonData(&gPlayerParty[a], MON_DATA_SMART, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_SMART, &gBattleBufferA[gActiveBattler][3]);
break;
case 53:
- SetMonData(&gPlayerParty[a], MON_DATA_TOUGH, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_TOUGH, &gBattleBufferA[gActiveBattler][3]);
break;
case 54:
- SetMonData(&gPlayerParty[a], MON_DATA_SHEEN, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_SHEEN, &gBattleBufferA[gActiveBattler][3]);
break;
case 55:
- SetMonData(&gPlayerParty[a], MON_DATA_COOL_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_COOL_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
case 56:
- SetMonData(&gPlayerParty[a], MON_DATA_BEAUTY_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_BEAUTY_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
case 57:
- SetMonData(&gPlayerParty[a], MON_DATA_CUTE_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_CUTE_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
case 58:
- SetMonData(&gPlayerParty[a], MON_DATA_SMART_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_SMART_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
case 59:
- SetMonData(&gPlayerParty[a], MON_DATA_TOUGH_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_TOUGH_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
}
- HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
}
void LinkPartnerHandlecmd3(void)
@@ -1090,37 +1089,37 @@ void LinkPartnerHandlecmd3(void)
u8 *dst;
u8 i;
- MEMSET_ALT(&gPlayerParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1],
- gBattleBufferA[gActiveBank][3 + i], gBattleBufferA[gActiveBank][2], i, dst);
+ MEMSET_ALT(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]] + gBattleBufferA[gActiveBattler][1],
+ gBattleBufferA[gActiveBattler][3 + i], gBattleBufferA[gActiveBattler][2], i, dst);
LinkPartnerBufferExecCompleted();
}
void LinkPartnerHandleLoadPokeSprite(void)
{
- BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ BattleLoadPlayerMonSprite(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
GetMonSpriteTemplate_803C56C(
- GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES),
- GetBankIdentity(gActiveBank));
- gBankSpriteIds[gActiveBank] = CreateSprite(
+ GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES),
+ GetBattlerPosition(gActiveBattler));
+ gBankSpriteIds[gActiveBattler] = CreateSprite(
&gUnknown_02024E8C,
- GetBankPosition(gActiveBank, 2),
- sub_8077F68(gActiveBank),
- sub_8079E90(gActiveBank));
- gSprites[gBankSpriteIds[gActiveBank]].pos2.x = -240;
- gSprites[gBankSpriteIds[gActiveBank]].data[0] = gActiveBank;
- gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank;
- StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], gBattleMonForms[gActiveBank]);
- gBattleBankFunc[gActiveBank] = sub_811DDE8;
+ GetBattlerSpriteCoord(gActiveBattler, 2),
+ sub_8077F68(gActiveBattler),
+ sub_8079E90(gActiveBattler));
+ gSprites[gBankSpriteIds[gActiveBattler]].pos2.x = -240;
+ gSprites[gBankSpriteIds[gActiveBattler]].data[0] = gActiveBattler;
+ gSprites[gBankSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
+ StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBattler]], gBattleMonForms[gActiveBattler]);
+ gBattleBankFunc[gActiveBattler] = sub_811DDE8;
}
void LinkPartnerHandleSendOutPoke(void)
{
- sub_8032AA8(gActiveBank, gBattleBufferA[gActiveBank][2]);
- gBattlePartyID[gActiveBank] = gBattleBufferA[gActiveBank][1];
- BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
- sub_811F864(gActiveBank, gBattleBufferA[gActiveBank][2]);
- gBattleBankFunc[gActiveBank] = sub_811E1BC;
+ sub_8032AA8(gActiveBattler, gBattleBufferA[gActiveBattler][2]);
+ gBattlerPartyIndexes[gActiveBattler] = gBattleBufferA[gActiveBattler][1];
+ BattleLoadPlayerMonSprite(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
+ sub_811F864(gActiveBattler, gBattleBufferA[gActiveBattler][2]);
+ gBattleBankFunc[gActiveBattler] = sub_811E1BC;
}
void sub_811F864(u8 a, u8 b)
@@ -1128,13 +1127,13 @@ void sub_811F864(u8 a, u8 b)
u16 species;
sub_8032AA8(a, b);
- gBattlePartyID[a] = gBattleBufferA[a][1];
- species = GetMonData(&gPlayerParty[gBattlePartyID[a]], MON_DATA_SPECIES);
+ gBattlerPartyIndexes[a] = gBattleBufferA[a][1];
+ species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[a]], MON_DATA_SPECIES);
gUnknown_0300434C[a] = CreateInvisibleSpriteWithCallback(sub_80312F0);
- GetMonSpriteTemplate_803C56C(species, GetBankIdentity(a));
+ GetMonSpriteTemplate_803C56C(species, GetBattlerPosition(a));
gBankSpriteIds[a] = CreateSprite(
&gUnknown_02024E8C,
- GetBankPosition(a, 2),
+ GetBattlerSpriteCoord(a, 2),
sub_8077F68(a),
sub_8079E90(a));
gSprites[gUnknown_0300434C[a]].data[1] = gBankSpriteIds[a];
@@ -1149,35 +1148,35 @@ void sub_811F864(u8 a, u8 b)
void LinkPartnerHandleReturnPokeToBall(void)
{
- if (gBattleBufferA[gActiveBank][1] == 0)
+ if (gBattleBufferA[gActiveBattler][1] == 0)
{
- ewram17810[gActiveBank].unk4 = 0;
- gBattleBankFunc[gActiveBank] = sub_811FA5C;
+ ewram17810[gActiveBattler].unk4 = 0;
+ gBattleBankFunc[gActiveBattler] = sub_811FA5C;
}
else
{
- FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
- DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
- sub_8043DB0(gHealthboxIDs[gActiveBank]);
+ FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBattler]]);
+ DestroySprite(&gSprites[gBankSpriteIds[gActiveBattler]]);
+ sub_8043DB0(gHealthboxIDs[gActiveBattler]);
LinkPartnerBufferExecCompleted();
}
}
void sub_811FA5C(void)
{
- switch (ewram17810[gActiveBank].unk4)
+ switch (ewram17810[gActiveBattler].unk4)
{
case 0:
- if (ewram17800[gActiveBank].substituteSprite)
- move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
- ewram17810[gActiveBank].unk4 = 1;
+ if (ewram17800[gActiveBattler].substituteSprite)
+ move_anim_start_t4(gActiveBattler, gActiveBattler, gActiveBattler, 5);
+ ewram17810[gActiveBattler].unk4 = 1;
break;
case 1:
- if (!ewram17810[gActiveBank].unk0_6)
+ if (!ewram17810[gActiveBattler].unk0_6)
{
- ewram17810[gActiveBank].unk4 = 0;
- move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 1);
- gBattleBankFunc[gActiveBank] = sub_811DF34;
+ ewram17810[gActiveBattler].unk4 = 0;
+ move_anim_start_t4(gActiveBattler, gActiveBattler, gActiveBattler, 1);
+ gBattleBankFunc[gActiveBattler] = sub_811DF34;
}
break;
}
@@ -1190,28 +1189,28 @@ void LinkPartnerHandleTrainerThrow(void)
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
{
- if (GetBankIdentity(gActiveBank) & 2)
+ if (GetBattlerPosition(gActiveBattler) & 2)
xOffset = 16;
else
xOffset = -16;
- gender = gLinkPlayers[sub_803FC34(gActiveBank)].gender;
+ gender = gLinkPlayers[sub_803FC34(gActiveBattler)].gender;
}
else
{
xOffset = 0;
gender = gLinkPlayers[GetMultiplayerId() ^ 1].gender;
}
- LoadPlayerTrainerBankSprite(gender, gActiveBank);
- GetMonSpriteTemplate_803C5A0(gender, GetBankIdentity(gActiveBank));
- gBankSpriteIds[gActiveBank] = CreateSprite(
+ LoadPlayerTrainerBankSprite(gender, gActiveBattler);
+ GetMonSpriteTemplate_803C5A0(gender, GetBattlerPosition(gActiveBattler));
+ gBankSpriteIds[gActiveBattler] = CreateSprite(
&gUnknown_02024E8C,
80 + xOffset, 80 + 4 * (8 - gTrainerBackPicCoords[gender].coords),
- sub_8079E90(gActiveBank));
- gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank;
- gSprites[gBankSpriteIds[gActiveBank]].pos2.x = 240;
- gSprites[gBankSpriteIds[gActiveBank]].data[0] = -2;
- gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80313A0;
- gBattleBankFunc[gActiveBank] = sub_811DAE4;
+ sub_8079E90(gActiveBattler));
+ gSprites[gBankSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
+ gSprites[gBankSpriteIds[gActiveBattler]].pos2.x = 240;
+ gSprites[gBankSpriteIds[gActiveBattler]].data[0] = -2;
+ gSprites[gBankSpriteIds[gActiveBattler]].callback = sub_80313A0;
+ gBattleBankFunc[gActiveBattler] = sub_811DAE4;
}
void LinkPartnerHandleTrainerSlide(void)
@@ -1221,32 +1220,32 @@ void LinkPartnerHandleTrainerSlide(void)
void LinkPartnerHandleTrainerSlideBack(void)
{
- oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]);
- gSprites[gBankSpriteIds[gActiveBank]].data[0] = 35;
- gSprites[gBankSpriteIds[gActiveBank]].data[2] = -40;
- gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
- gSprites[gBankSpriteIds[gActiveBank]].callback = StartTranslateAnimSpriteByDeltas;
- StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBank]], SpriteCallbackDummy);
- gBattleBankFunc[gActiveBank] = sub_811DB1C;
+ oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBattler]]);
+ gSprites[gBankSpriteIds[gActiveBattler]].data[0] = 35;
+ gSprites[gBankSpriteIds[gActiveBattler]].data[2] = -40;
+ gSprites[gBankSpriteIds[gActiveBattler]].data[4] = gSprites[gBankSpriteIds[gActiveBattler]].pos1.y;
+ gSprites[gBankSpriteIds[gActiveBattler]].callback = StartTranslateAnimSpriteByDeltas;
+ StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBattler]], SpriteCallbackDummy);
+ gBattleBankFunc[gActiveBattler] = sub_811DB1C;
}
void LinkPartnerHandlecmd10(void)
{
- if (ewram17810[gActiveBank].unk4 == 0)
+ if (ewram17810[gActiveBattler].unk4 == 0)
{
- if (ewram17800[gActiveBank].substituteSprite)
- move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
- ewram17810[gActiveBank].unk4++;
+ if (ewram17800[gActiveBattler].substituteSprite)
+ move_anim_start_t4(gActiveBattler, gActiveBattler, gActiveBattler, 5);
+ ewram17810[gActiveBattler].unk4++;
}
- else if (!ewram17810[gActiveBank].unk0_6)
+ else if (!ewram17810[gActiveBattler].unk0_6)
{
- ewram17810[gActiveBank].unk4 = 0;
- HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ ewram17810[gActiveBattler].unk4 = 0;
+ HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
PlaySE12WithPanning(SE_POKE_DEAD, -64);
- gSprites[gBankSpriteIds[gActiveBank]].data[1] = 0;
- gSprites[gBankSpriteIds[gActiveBank]].data[2] = 5;
- gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80105EC;
- gBattleBankFunc[gActiveBank] = sub_811DE98;
+ gSprites[gBankSpriteIds[gActiveBattler]].data[1] = 0;
+ gSprites[gBankSpriteIds[gActiveBattler]].data[2] = 5;
+ gSprites[gBankSpriteIds[gActiveBattler]].callback = sub_80105EC;
+ gBattleBankFunc[gActiveBattler] = sub_811DE98;
}
}
@@ -1272,56 +1271,56 @@ void LinkPartnerHandlePuase(void)
void LinkPartnerHandleMoveAnimation(void)
{
- if (!mplay_80342A4(gActiveBank))
+ if (!mplay_80342A4(gActiveBattler))
{
- u32 r0 = gBattleBufferA[gActiveBank][1]
- | (gBattleBufferA[gActiveBank][2] << 8);
-
- gAnimMoveTurn = gBattleBufferA[gActiveBank][3];
- gAnimMovePower = gBattleBufferA[gActiveBank][4]
- | (gBattleBufferA[gActiveBank][5] << 8);
- gAnimMoveDmg = gBattleBufferA[gActiveBank][6]
- | (gBattleBufferA[gActiveBank][7] << 8)
- | (gBattleBufferA[gActiveBank][8] << 16)
- | (gBattleBufferA[gActiveBank][9] << 24);
- gAnimFriendship = gBattleBufferA[gActiveBank][10];
- gWeatherMoveAnim = gBattleBufferA[gActiveBank][12]
- | (gBattleBufferA[gActiveBank][13] << 8);
- gAnimDisableStructPtr = (struct DisableStruct *)&gBattleBufferA[gActiveBank][16];
- gTransformedPersonalities[gActiveBank] = gAnimDisableStructPtr->transformedMonPersonality;
+ u32 r0 = gBattleBufferA[gActiveBattler][1]
+ | (gBattleBufferA[gActiveBattler][2] << 8);
+
+ gAnimMoveTurn = gBattleBufferA[gActiveBattler][3];
+ gAnimMovePower = gBattleBufferA[gActiveBattler][4]
+ | (gBattleBufferA[gActiveBattler][5] << 8);
+ gAnimMoveDmg = gBattleBufferA[gActiveBattler][6]
+ | (gBattleBufferA[gActiveBattler][7] << 8)
+ | (gBattleBufferA[gActiveBattler][8] << 16)
+ | (gBattleBufferA[gActiveBattler][9] << 24);
+ gAnimFriendship = gBattleBufferA[gActiveBattler][10];
+ gWeatherMoveAnim = gBattleBufferA[gActiveBattler][12]
+ | (gBattleBufferA[gActiveBattler][13] << 8);
+ gAnimDisableStructPtr = (struct DisableStruct *)&gBattleBufferA[gActiveBattler][16];
+ gTransformedPersonalities[gActiveBattler] = gAnimDisableStructPtr->transformedMonPersonality;
if (sub_8031720(r0, gAnimMoveTurn) != 0)
LinkPartnerBufferExecCompleted();
else
{
- ewram17810[gActiveBank].unk4 = 0;
- gBattleBankFunc[gActiveBank] = sub_811FF30;
+ ewram17810[gActiveBattler].unk4 = 0;
+ gBattleBankFunc[gActiveBattler] = sub_811FF30;
}
}
}
void sub_811FF30(void)
{
- u16 r4 = gBattleBufferA[gActiveBank][1]
- | (gBattleBufferA[gActiveBank][2] << 8);
- u8 r7 = gBattleBufferA[gActiveBank][11];
+ u16 r4 = gBattleBufferA[gActiveBattler][1]
+ | (gBattleBufferA[gActiveBattler][2] << 8);
+ u8 r7 = gBattleBufferA[gActiveBattler][11];
- switch (ewram17810[gActiveBank].unk4)
+ switch (ewram17810[gActiveBattler].unk4)
{
case 0:
- if (ewram17800[gActiveBank].substituteSprite && !ewram17800[gActiveBank].unk0_3)
+ if (ewram17800[gActiveBattler].substituteSprite && !ewram17800[gActiveBattler].unk0_3)
{
- ewram17800[gActiveBank].unk0_3 = 1;
- move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
+ ewram17800[gActiveBattler].unk0_3 = 1;
+ move_anim_start_t4(gActiveBattler, gActiveBattler, gActiveBattler, 5);
}
- ewram17810[gActiveBank].unk4 = 1;
+ ewram17810[gActiveBattler].unk4 = 1;
break;
case 1:
- if (!ewram17810[gActiveBank].unk0_6)
+ if (!ewram17810[gActiveBattler].unk0_6)
{
sub_80326EC(0);
DoMoveAnim(r4);
- ewram17810[gActiveBank].unk4 = 2;
+ ewram17810[gActiveBattler].unk4 = 2;
}
break;
case 2:
@@ -1329,22 +1328,22 @@ void sub_811FF30(void)
if (!gAnimScriptActive)
{
sub_80326EC(1);
- if ((ewram17800[gActiveBank].substituteSprite) && r7 <= 1)
+ if ((ewram17800[gActiveBattler].substituteSprite) && r7 <= 1)
{
- move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6);
- ewram17800[gActiveBank].unk0_3 = 0;
+ move_anim_start_t4(gActiveBattler, gActiveBattler, gActiveBattler, 6);
+ ewram17800[gActiveBattler].unk0_3 = 0;
}
- ewram17810[gActiveBank].unk4 = 3;
+ ewram17810[gActiveBattler].unk4 = 3;
}
break;
case 3:
- if (!ewram17810[gActiveBank].unk0_6)
+ if (!ewram17810[gActiveBattler].unk0_6)
{
sub_8031F24();
sub_80324BC(
- gActiveBank,
- gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
- ewram17810[gActiveBank].unk4 = 0;
+ gActiveBattler,
+ gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8));
+ ewram17810[gActiveBattler].unk4 = 0;
LinkPartnerBufferExecCompleted();
}
break;
@@ -1355,9 +1354,9 @@ void LinkPartnerHandlePrintString(void)
{
gBattle_BG0_X = 0;
gBattle_BG0_Y = 0;
- BufferStringBattle(*(u16 *)&gBattleBufferA[gActiveBank][2]);
+ BufferStringBattle(*(u16 *)&gBattleBufferA[gActiveBattler][2]);
Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
- gBattleBankFunc[gActiveBank] = sub_811DFA0;
+ gBattleBankFunc[gActiveBattler] = sub_811DFA0;
}
void LinkPartnerHandlePrintStringPlayerOnly(void)
@@ -1400,21 +1399,21 @@ void LinkPartnerHandleHealthBarUpdate(void)
s16 r7;
load_gfxc_health_bar(0);
- r7 = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8);
+ r7 = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8);
if (r7 != 0x7FFF)
{
- u32 maxHP = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MAX_HP);
- u32 hp = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_HP);
+ u32 maxHP = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP);
+ u32 hp = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_HP);
- sub_8043D84(gActiveBank, gHealthboxIDs[gActiveBank], maxHP, hp, r7);
+ sub_8043D84(gActiveBattler, gHealthboxIDs[gActiveBattler], maxHP, hp, r7);
}
else
{
- u32 maxHP = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MAX_HP);
+ u32 maxHP = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP);
- sub_8043D84(gActiveBank, gHealthboxIDs[gActiveBank], maxHP, 0, r7);
+ sub_8043D84(gActiveBattler, gHealthboxIDs[gActiveBattler], maxHP, 0, r7);
}
- gBattleBankFunc[gActiveBank] = bx_t3_healthbar_update;
+ gBattleBankFunc[gActiveBattler] = bx_t3_healthbar_update;
}
void LinkPartnerHandleExpBarUpdate(void)
@@ -1424,25 +1423,25 @@ void LinkPartnerHandleExpBarUpdate(void)
void LinkPartnerHandleStatusIconUpdate(void)
{
- if (mplay_80342A4(gActiveBank) == 0)
+ if (mplay_80342A4(gActiveBattler) == 0)
{
- sub_8045A5C(gHealthboxIDs[gActiveBank], &gPlayerParty[gBattlePartyID[gActiveBank]], 9);
- ewram17810[gActiveBank].unk0_4 = 0;
- gBattleBankFunc[gActiveBank] = sub_811E38C;
+ sub_8045A5C(gHealthboxIDs[gActiveBattler], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], 9);
+ ewram17810[gActiveBattler].unk0_4 = 0;
+ gBattleBankFunc[gActiveBattler] = sub_811E38C;
}
}
void LinkPartnerHandleStatusAnimation(void)
{
- if (mplay_80342A4(gActiveBank) == 0)
+ if (mplay_80342A4(gActiveBattler) == 0)
{
move_anim_start_t2_for_situation(
- gBattleBufferA[gActiveBank][1],
- gBattleBufferA[gActiveBank][2]
- | (gBattleBufferA[gActiveBank][3] << 8)
- | (gBattleBufferA[gActiveBank][4] << 16)
- | (gBattleBufferA[gActiveBank][5] << 24));
- gBattleBankFunc[gActiveBank] = sub_811E38C;
+ gBattleBufferA[gActiveBattler][1],
+ gBattleBufferA[gActiveBattler][2]
+ | (gBattleBufferA[gActiveBattler][3] << 8)
+ | (gBattleBufferA[gActiveBattler][4] << 16)
+ | (gBattleBufferA[gActiveBattler][5] << 24));
+ gBattleBankFunc[gActiveBattler] = sub_811E38C;
}
}
@@ -1499,7 +1498,7 @@ void LinkPartnerHandlecmd37(void)
void LinkPartnerHandlecmd38(void)
{
- gUnknown_020238C8.unk0_0 = gBattleBufferA[gActiveBank][1];
+ gUnknown_020238C8.unk0_0 = gBattleBufferA[gActiveBattler][1];
LinkPartnerBufferExecCompleted();
}
@@ -1517,16 +1516,16 @@ void LinkPartnerHandlecmd40(void)
void LinkPartnerHandleHitAnimation(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].invisible == TRUE)
+ if (gSprites[gBankSpriteIds[gActiveBattler]].invisible == TRUE)
{
LinkPartnerBufferExecCompleted();
}
else
{
gDoingBattleAnim = TRUE;
- gSprites[gBankSpriteIds[gActiveBank]].data[1] = 0;
- sub_8047858(gActiveBank);
- gBattleBankFunc[gActiveBank] = bx_blink_t3;
+ gSprites[gBankSpriteIds[gActiveBattler]].data[1] = 0;
+ sub_8047858(gActiveBattler);
+ gBattleBankFunc[gActiveBattler] = bx_blink_t3;
}
}
@@ -1539,31 +1538,31 @@ void LinkPartnerHandleEffectivenessSound(void)
{
s8 pan;
- if (GetBankSide(gActiveBank) == 0)
+ if (GetBattlerSide(gActiveBattler) == 0)
pan = -64;
else
pan = 63;
- PlaySE12WithPanning(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8), pan);
+ PlaySE12WithPanning(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8), pan);
LinkPartnerBufferExecCompleted();
}
void LinkPartnerHandlecmd44(void)
{
- PlayFanfare(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
+ PlayFanfare(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8));
LinkPartnerBufferExecCompleted();
}
void LinkPartnerHandleFaintingCry(void)
{
PlayCry3(
- GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES),
+ GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES),
-25, 5);
LinkPartnerBufferExecCompleted();
}
void LinkPartnerHandleIntroSlide(void)
{
- StartBattleIntroAnim(gBattleBufferA[gActiveBank][1]);
+ StartBattleIntroAnim(gBattleBufferA[gActiveBattler][1]);
gUnknown_02024DE8 |= 1;
LinkPartnerBufferExecCompleted();
}
@@ -1573,25 +1572,25 @@ void LinkPartnerHandleTrainerBallThrow(void)
u8 r4;
u8 taskId;
- oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]);
- gSprites[gBankSpriteIds[gActiveBank]].data[0] = 50;
- gSprites[gBankSpriteIds[gActiveBank]].data[2] = -40;
- gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
- gSprites[gBankSpriteIds[gActiveBank]].callback = StartTranslateAnimSpriteByDeltas;
- gSprites[gBankSpriteIds[gActiveBank]].data[5] = gActiveBank;
- StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBank]], sub_8030E38);
- StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], 1);
+ oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBattler]]);
+ gSprites[gBankSpriteIds[gActiveBattler]].data[0] = 50;
+ gSprites[gBankSpriteIds[gActiveBattler]].data[2] = -40;
+ gSprites[gBankSpriteIds[gActiveBattler]].data[4] = gSprites[gBankSpriteIds[gActiveBattler]].pos1.y;
+ gSprites[gBankSpriteIds[gActiveBattler]].callback = StartTranslateAnimSpriteByDeltas;
+ gSprites[gBankSpriteIds[gActiveBattler]].data[5] = gActiveBattler;
+ StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBattler]], sub_8030E38);
+ StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBattler]], 1);
r4 = AllocSpritePalette(0xD6F9);
LoadCompressedPalette(
- gTrainerBackPicPaletteTable[gLinkPlayers[sub_803FC34(gActiveBank)].gender].data,
+ gTrainerBackPicPaletteTable[gLinkPlayers[sub_803FC34(gActiveBattler)].gender].data,
0x100 + r4 * 16, 0x20);
- gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = r4;
+ gSprites[gBankSpriteIds[gActiveBattler]].oam.paletteNum = r4;
taskId = CreateTask(sub_812071C, 5);
- gTasks[taskId].data[0] = gActiveBank;
- if (ewram17810[gActiveBank].unk0_0)
- gTasks[gUnknown_02024E68[gActiveBank]].func = sub_8044CA0;
+ gTasks[taskId].data[0] = gActiveBattler;
+ if (ewram17810[gActiveBattler].unk0_0)
+ gTasks[gUnknown_02024E68[gActiveBattler]].func = sub_8044CA0;
ewram17840.unk9_0 = 1;
- gBattleBankFunc[gActiveBank] = nullsub_74;
+ gBattleBankFunc[gActiveBattler] = nullsub_74;
}
void sub_812071C(u8 taskId)
@@ -1604,61 +1603,61 @@ void sub_812071C(u8 taskId)
return;
}
- r9 = gActiveBank;
- gActiveBank = gTasks[taskId].data[0];
+ r9 = gActiveBattler;
+ gActiveBattler = gTasks[taskId].data[0];
if (!IsDoubleBattle() || (gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
- gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
- sub_811F864(gActiveBank, 0);
+ gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler];
+ sub_811F864(gActiveBattler, 0);
}
else
{
- gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
- sub_811F864(gActiveBank, 0);
- gActiveBank ^= 2;
- gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
- BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
- sub_811F864(gActiveBank, 0);
- gActiveBank ^= 2;
+ gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler];
+ sub_811F864(gActiveBattler, 0);
+ gActiveBattler ^= 2;
+ gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler];
+ BattleLoadPlayerMonSprite(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
+ sub_811F864(gActiveBattler, 0);
+ gActiveBattler ^= 2;
}
- gBattleBankFunc[gActiveBank] = sub_811DCA0;
- gActiveBank = r9;
+ gBattleBankFunc[gActiveBattler] = sub_811DCA0;
+ gActiveBattler = r9;
DestroyTask(taskId);
}
void LinkPartnerHandlecmd48(void)
{
- if (gBattleBufferA[gActiveBank][1] != 0 && GetBankSide(gActiveBank) == 0)
+ if (gBattleBufferA[gActiveBattler][1] != 0 && GetBattlerSide(gActiveBattler) == 0)
{
LinkPartnerBufferExecCompleted();
return;
}
- ewram17810[gActiveBank].unk0_0 = 1;
- gUnknown_02024E68[gActiveBank] = sub_8044804(
- gActiveBank,
- (struct BattleInterfaceStruct2 *)&gBattleBufferA[gActiveBank][4],
- gBattleBufferA[gActiveBank][1],
- gBattleBufferA[gActiveBank][2]);
- ewram17810[gActiveBank].unk5 = 0;
- if (gBattleBufferA[gActiveBank][2] != 0)
- ewram17810[gActiveBank].unk5 = 0x5D;
- gBattleBankFunc[gActiveBank] = sub_81208E0;
+ ewram17810[gActiveBattler].unk0_0 = 1;
+ gUnknown_02024E68[gActiveBattler] = sub_8044804(
+ gActiveBattler,
+ (struct BattleInterfaceStruct2 *)&gBattleBufferA[gActiveBattler][4],
+ gBattleBufferA[gActiveBattler][1],
+ gBattleBufferA[gActiveBattler][2]);
+ ewram17810[gActiveBattler].unk5 = 0;
+ if (gBattleBufferA[gActiveBattler][2] != 0)
+ ewram17810[gActiveBattler].unk5 = 0x5D;
+ gBattleBankFunc[gActiveBattler] = sub_81208E0;
}
void sub_81208E0(void)
{
- if (ewram17810[gActiveBank].unk5++ >= 93)
+ if (ewram17810[gActiveBattler].unk5++ >= 93)
{
- ewram17810[gActiveBank].unk5 = 0;
+ ewram17810[gActiveBattler].unk5 = 0;
LinkPartnerBufferExecCompleted();
}
}
void LinkPartnerHandlecmd49(void)
{
- if (ewram17810[gActiveBank].unk0_0)
- gTasks[gUnknown_02024E68[gActiveBank]].func = sub_8044CA0;
+ if (ewram17810[gActiveBattler].unk0_0)
+ gTasks[gUnknown_02024E68[gActiveBattler]].func = sub_8044CA0;
LinkPartnerBufferExecCompleted();
}
@@ -1669,25 +1668,25 @@ void LinkPartnerHandlecmd50(void)
void LinkPartnerHandleSpriteInvisibility(void)
{
- if (IsBankSpritePresent(gActiveBank) != 0)
+ if (IsBankSpritePresent(gActiveBattler) != 0)
{
- gSprites[gBankSpriteIds[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1];
- sub_8031F88(gActiveBank);
+ gSprites[gBankSpriteIds[gActiveBattler]].invisible = gBattleBufferA[gActiveBattler][1];
+ sub_8031F88(gActiveBattler);
}
LinkPartnerBufferExecCompleted();
}
void LinkPartnerHandleBattleAnimation(void)
{
- if (mplay_80342A4(gActiveBank) == 0)
+ if (mplay_80342A4(gActiveBattler) == 0)
{
- u8 r3 = gBattleBufferA[gActiveBank][1];
- u16 r4 = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8);
+ u8 r3 = gBattleBufferA[gActiveBattler][1];
+ u16 r4 = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8);
- if (move_anim_start_t3(gActiveBank, gActiveBank, gActiveBank, r3, r4) != 0)
+ if (move_anim_start_t3(gActiveBattler, gActiveBattler, gActiveBattler, r3, r4) != 0)
LinkPartnerBufferExecCompleted();
else
- gBattleBankFunc[gActiveBank] = sub_811E3B8;
+ gBattleBankFunc[gActiveBattler] = sub_811E3B8;
}
}
@@ -1703,11 +1702,11 @@ void LinkPartnerHandleResetActionMoveSelection(void)
void LinkPartnerHandlecmd55(void)
{
- gBattleOutcome = gBattleBufferA[gActiveBank][1];
+ gBattleOutcome = gBattleBufferA[gActiveBattler][1];
FadeOutMapMusic(5);
BeginFastPaletteFade(3);
LinkPartnerBufferExecCompleted();
- gBattleBankFunc[gActiveBank] = sub_811E29C;
+ gBattleBankFunc[gActiveBattler] = sub_811E29C;
}
void LinkPartnerHandlecmd56(void)
diff --git a/src/battle/battle_controller_opponent.c b/src/battle/battle_controller_opponent.c
index 88680470b..d8760e21f 100644
--- a/src/battle/battle_controller_opponent.c
+++ b/src/battle/battle_controller_opponent.c
@@ -1,5 +1,6 @@
#include "global.h"
#include "battle.h"
+#include "battle_ai_switch_items.h"
#include "battle_anim.h"
#include "battle_interface.h"
#include "data2.h"
@@ -31,9 +32,9 @@ struct MovePpInfo
};
extern u8 gUnknown_02023A14_50;
-extern u8 gActiveBank;
+extern u8 gActiveBattler;
extern u8 gBattleBufferA[][0x200];
-extern u16 gBattlePartyID[];
+extern u16 gBattlerPartyIndexes[];
extern u8 gBankSpriteIds[];
extern u8 gBattleMonForms[];
extern struct SpriteTemplate gUnknown_02024E8C;
@@ -42,7 +43,7 @@ extern u8 gUnknown_0300434C[];
extern u8 gHealthboxIDs[];
extern u16 gBattleTypeFlags;
extern u16 gTrainerBattleOpponent;
-extern u32 gAnimMoveDmg;
+extern s32 gAnimMoveDmg;
extern u16 gAnimMovePower;
extern u8 gAnimFriendship;
extern u16 gWeatherMoveAnim;
@@ -53,7 +54,7 @@ extern void (*gAnimScriptCallback)(void);
extern struct Window gUnknown_03004210;
extern u8 gDisplayedStringBattle[];
extern u8 gBankTarget;
-extern u8 gAbsentBankFlags;
+extern u8 gAbsentBattlerFlags;
extern bool8 gDoingBattleAnim;
extern u16 gUnknown_02024DE8;
extern u8 gUnknown_02024E68[];
@@ -64,12 +65,12 @@ extern struct MusicPlayerInfo gMPlay_SE2;
extern struct MusicPlayerInfo gMPlay_BGM;
extern u32 gBattleExecBuffer;
-extern u8 GetBankPosition();
+extern u8 GetBattlerSpriteCoord();
extern u8 sub_8077F68();
extern u8 sub_8079E90();
extern void sub_8033018(void);
extern void BattleLoadOpponentMonSprite();
-extern u8 GetBankIdentity(u8);
+extern u8 GetBattlerPosition(u8);
extern void sub_8032984(u8, u16);
extern void sub_80333D4(void);
extern void sub_80312F0(struct Sprite *);
@@ -96,9 +97,8 @@ extern void sub_8031F24(void);
extern void sub_80324BC();
extern void BufferStringBattle();
extern void sub_80331D0(void);
-extern void sub_8036B0C(void);
-extern u8 GetBankByIdentity(u8);
-extern u8 sub_8036CD4(void);
+extern void AI_TrySwitchOrUseItem(void);
+extern u8 GetBattlerAtPosition(u8);
extern void sub_80330C8(void);
extern void sub_8043D84();
extern void sub_8045A5C();
@@ -106,7 +106,7 @@ void sub_8033494(void);
extern void move_anim_start_t2_for_situation();
extern void bx_blink_t7(void);
extern void sub_8047858();
-extern u8 GetBankSide(u8);
+extern u8 GetBattlerSide(u8);
extern void StartBattleIntroAnim();
extern void sub_8044CA0(u8);
extern void nullsub_45(void);
@@ -262,15 +262,15 @@ void nullsub_45(void)
void SetBankFuncToOpponentBufferRunCommand(void)
{
- gBattleBankFunc[gActiveBank] = OpponentBufferRunCommand;
+ gBattleBankFunc[gActiveBattler] = OpponentBufferRunCommand;
}
void OpponentBufferRunCommand(void)
{
- if (gBattleExecBuffer & gBitTable[gActiveBank])
+ if (gBattleExecBuffer & gBitTable[gActiveBattler])
{
- if (gBattleBufferA[gActiveBank][0] <= 0x38)
- gOpponentBufferCommands[gBattleBufferA[gActiveBank][0]]();
+ if (gBattleBufferA[gActiveBattler][0] <= 0x38)
+ gOpponentBufferCommands[gBattleBufferA[gActiveBattler][0]]();
else
OpponentBufferExecCompleted();
}
@@ -278,34 +278,34 @@ void OpponentBufferRunCommand(void)
void sub_8032B4C(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gBankSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
OpponentBufferExecCompleted();
}
// Duplicate of sub_8032B4C
void sub_8032B84(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gBankSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
OpponentBufferExecCompleted();
}
void sub_8032BBC(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gBankSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
{
- sub_8031B74(gSprites[gBankSpriteIds[gActiveBank]].oam.affineParam);
- gSprites[gBankSpriteIds[gActiveBank]].oam.tileNum = gSprites[gBankSpriteIds[gActiveBank]].data[5];
- FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
- DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
+ sub_8031B74(gSprites[gBankSpriteIds[gActiveBattler]].oam.affineParam);
+ gSprites[gBankSpriteIds[gActiveBattler]].oam.tileNum = gSprites[gBankSpriteIds[gActiveBattler]].data[5];
+ FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBattler]]);
+ DestroySprite(&gSprites[gBankSpriteIds[gActiveBattler]]);
OpponentBufferExecCompleted();
}
}
void sub_8032C4C(void)
{
- if ((--ewram17810[gActiveBank].unk9) == 0xFF)
+ if ((--ewram17810[gActiveBattler].unk9) == 0xFF)
{
- ewram17810[gActiveBank].unk9 = 0;
+ ewram17810[gActiveBattler].unk9 = 0;
OpponentBufferExecCompleted();
}
}
@@ -316,86 +316,86 @@ void sub_8032C88(void)
if (!IsDoubleBattle() || (IsDoubleBattle() && (gBattleTypeFlags & BATTLE_TYPE_MULTI)))
{
- if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gHealthboxIDs[gActiveBattler]].callback == SpriteCallbackDummy)
r6 = TRUE;
}
else
{
- if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy
- && gSprites[gHealthboxIDs[gActiveBank ^ 2]].callback == SpriteCallbackDummy)
+ if (gSprites[gHealthboxIDs[gActiveBattler]].callback == SpriteCallbackDummy
+ && gSprites[gHealthboxIDs[gActiveBattler ^ 2]].callback == SpriteCallbackDummy)
r6 = TRUE;
}
if (IsCryPlayingOrClearCrySongs())
r6 = FALSE;
- if (r6 && ewram17810[gActiveBank].unk1_0 && ewram17810[gActiveBank ^ 2].unk1_0)
+ if (r6 && ewram17810[gActiveBattler].unk1_0 && ewram17810[gActiveBattler ^ 2].unk1_0)
{
- ewram17810[gActiveBank].unk0_7 = 0;
- ewram17810[gActiveBank].unk1_0 = 0;
- ewram17810[gActiveBank ^ 2].unk0_7 = 0;
- ewram17810[gActiveBank ^ 2].unk1_0 = 0;
+ ewram17810[gActiveBattler].unk0_7 = 0;
+ ewram17810[gActiveBattler].unk1_0 = 0;
+ ewram17810[gActiveBattler ^ 2].unk0_7 = 0;
+ ewram17810[gActiveBattler ^ 2].unk1_0 = 0;
FreeSpriteTilesByTag(0x27F9);
FreeSpritePaletteByTag(0x27F9);
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
m4aMPlayContinue(&gMPlay_BGM);
else
m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 256);
- ewram17810[gActiveBank].unk9 = 3;
- gBattleBankFunc[gActiveBank] = sub_8032C4C;
+ ewram17810[gActiveBattler].unk9 = 3;
+ gBattleBankFunc[gActiveBattler] = sub_8032C4C;
}
}
void sub_8032E2C(void)
{
- if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank].unk0_7)
- sub_8141828(gActiveBank, &gEnemyParty[gBattlePartyID[gActiveBank]]);
- if (!ewram17810[gActiveBank ^ 2].unk0_3 && !ewram17810[gActiveBank ^ 2].unk0_7)
- sub_8141828(gActiveBank ^ 2, &gEnemyParty[gBattlePartyID[gActiveBank ^ 2]]);
- if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank ^ 2].unk0_3)
+ if (!ewram17810[gActiveBattler].unk0_3 && !ewram17810[gActiveBattler].unk0_7)
+ sub_8141828(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]);
+ if (!ewram17810[gActiveBattler ^ 2].unk0_3 && !ewram17810[gActiveBattler ^ 2].unk0_7)
+ sub_8141828(gActiveBattler ^ 2, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler ^ 2]]);
+ if (!ewram17810[gActiveBattler].unk0_3 && !ewram17810[gActiveBattler ^ 2].unk0_3)
{
if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
- DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank ^ 2]]);
+ DestroySprite(&gSprites[gUnknown_0300434C[gActiveBattler ^ 2]]);
sub_8045A5C(
- gHealthboxIDs[gActiveBank ^ 2],
- &gEnemyParty[gBattlePartyID[gActiveBank ^ 2]],
+ gHealthboxIDs[gActiveBattler ^ 2],
+ &gEnemyParty[gBattlerPartyIndexes[gActiveBattler ^ 2]],
0);
- sub_804777C(gActiveBank ^ 2);
- sub_8043DFC(gHealthboxIDs[gActiveBank ^ 2]);
+ sub_804777C(gActiveBattler ^ 2);
+ sub_8043DFC(gHealthboxIDs[gActiveBattler ^ 2]);
sub_8032984(
- gActiveBank ^ 2,
- GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank ^ 2]], MON_DATA_SPECIES));
+ gActiveBattler ^ 2,
+ GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler ^ 2]], MON_DATA_SPECIES));
}
- DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank]]);
+ DestroySprite(&gSprites[gUnknown_0300434C[gActiveBattler]]);
sub_8045A5C(
- gHealthboxIDs[gActiveBank],
- &gEnemyParty[gBattlePartyID[gActiveBank]],
+ gHealthboxIDs[gActiveBattler],
+ &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]],
0);
- sub_804777C(gActiveBank);
- sub_8043DFC(gHealthboxIDs[gActiveBank]);
+ sub_804777C(gActiveBattler);
+ sub_8043DFC(gHealthboxIDs[gActiveBattler]);
sub_8032984(
- gActiveBank,
- GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES));
+ gActiveBattler,
+ GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES));
ewram17840.unk9_0 = 0;
- gBattleBankFunc[gActiveBank] = sub_8032C88;
+ gBattleBankFunc[gActiveBattler] = sub_8032C88;
}
}
void sub_8033018(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].animEnded == TRUE
- && gSprites[gBankSpriteIds[gActiveBank]].pos2.x == 0)
+ if (gSprites[gBankSpriteIds[gActiveBattler]].animEnded == TRUE
+ && gSprites[gBankSpriteIds[gActiveBattler]].pos2.x == 0)
{
- if (!ewram17810[gActiveBank].unk0_7)
+ if (!ewram17810[gActiveBattler].unk0_7)
{
- sub_8141828(gActiveBank, &gEnemyParty[gBattlePartyID[gActiveBank]]);
+ sub_8141828(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]);
return;
}
- if (ewram17810[gActiveBank].unk1_0)
+ if (ewram17810[gActiveBattler].unk1_0)
{
- ewram17810[gActiveBank].unk0_7 = 0;
- ewram17810[gActiveBank].unk1_0 = 0;
+ ewram17810[gActiveBattler].unk0_7 = 0;
+ ewram17810[gActiveBattler].unk1_0 = 0;
FreeSpriteTilesByTag(0x27F9);
FreeSpritePaletteByTag(0x27F9);
OpponentBufferExecCompleted();
@@ -406,32 +406,32 @@ void sub_8033018(void)
void sub_80330C8(void)
{
- s16 r4 = sub_8045C78(gActiveBank, gHealthboxIDs[gActiveBank], 0, 0);
+ s16 r4 = sub_8045C78(gActiveBattler, gHealthboxIDs[gActiveBattler], 0, 0);
- sub_8043DFC(gHealthboxIDs[gActiveBank]);
+ sub_8043DFC(gHealthboxIDs[gActiveBattler]);
if (r4 != -1)
- sub_80440EC(gHealthboxIDs[gActiveBank], r4, 0);
+ sub_80440EC(gHealthboxIDs[gActiveBattler], r4, 0);
else
OpponentBufferExecCompleted();
}
void sub_803311C(void)
{
- if (!gSprites[gBankSpriteIds[gActiveBank]].inUse)
+ if (!gSprites[gBankSpriteIds[gActiveBattler]].inUse)
{
- sub_8043DB0(gHealthboxIDs[gActiveBank]);
+ sub_8043DB0(gHealthboxIDs[gActiveBattler]);
OpponentBufferExecCompleted();
}
}
void sub_8033160(void)
{
- if (!ewram17810[gActiveBank].unk0_6)
+ if (!ewram17810[gActiveBattler].unk0_6)
{
- FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
- DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
- sub_8032A08(gActiveBank);
- sub_8043DB0(gHealthboxIDs[gActiveBank]);
+ FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBattler]]);
+ DestroySprite(&gSprites[gBankSpriteIds[gActiveBattler]]);
+ sub_8032A08(gActiveBattler);
+ sub_8043DB0(gHealthboxIDs[gActiveBattler]);
OpponentBufferExecCompleted();
}
}
@@ -444,7 +444,7 @@ void sub_80331D0(void)
void bx_blink_t7(void)
{
- u8 spriteId = gBankSpriteIds[gActiveBank];
+ u8 spriteId = gBankSpriteIds[gActiveBattler];
if (gSprites[spriteId].data[1] == 32)
{
@@ -463,17 +463,17 @@ void bx_blink_t7(void)
void sub_8033264(void)
{
- if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gHealthboxIDs[gActiveBattler]].callback == SpriteCallbackDummy)
{
- if (ewram17800[gActiveBank].substituteSprite)
- move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6);
- gBattleBankFunc[gActiveBank] = sub_80332D0;
+ if (ewram17800[gActiveBattler].substituteSprite)
+ move_anim_start_t4(gActiveBattler, gActiveBattler, gActiveBattler, 6);
+ gBattleBankFunc[gActiveBattler] = sub_80332D0;
}
}
void sub_80332D0(void)
{
- if (!ewram17810[gActiveBank].unk0_6)
+ if (!ewram17810[gActiveBattler].unk0_6)
{
CreateTask(c3_0802FDF4, 10);
OpponentBufferExecCompleted();
@@ -482,53 +482,53 @@ void sub_80332D0(void)
void sub_8033308(void)
{
- if (ewram17810[gActiveBank].unk1_0)
+ if (ewram17810[gActiveBattler].unk1_0)
{
- ewram17810[gActiveBank].unk0_7 = 0;
- ewram17810[gActiveBank].unk1_0 = 0;
+ ewram17810[gActiveBattler].unk0_7 = 0;
+ ewram17810[gActiveBattler].unk1_0 = 0;
FreeSpriteTilesByTag(0x27F9);
FreeSpritePaletteByTag(0x27F9);
- StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], 0);
+ StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBattler]], 0);
sub_8045A5C(
- gHealthboxIDs[gActiveBank],
- &gEnemyParty[gBattlePartyID[gActiveBank]],
+ gHealthboxIDs[gActiveBattler],
+ &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]],
0);
- sub_804777C(gActiveBank);
- sub_8043DFC(gHealthboxIDs[gActiveBank]);
- sub_8031F88(gActiveBank);
- gBattleBankFunc[gActiveBank] = sub_8033264;
+ sub_804777C(gActiveBattler);
+ sub_8043DFC(gHealthboxIDs[gActiveBattler]);
+ sub_8031F88(gActiveBattler);
+ gBattleBankFunc[gActiveBattler] = sub_8033264;
}
}
void sub_80333D4(void)
{
- if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank].unk0_7)
- sub_8141828(gActiveBank, &gEnemyParty[gBattlePartyID[gActiveBank]]);
- if (gSprites[gUnknown_0300434C[gActiveBank]].callback == SpriteCallbackDummy
- && !ewram17810[gActiveBank].unk0_3)
+ if (!ewram17810[gActiveBattler].unk0_3 && !ewram17810[gActiveBattler].unk0_7)
+ sub_8141828(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]);
+ if (gSprites[gUnknown_0300434C[gActiveBattler]].callback == SpriteCallbackDummy
+ && !ewram17810[gActiveBattler].unk0_3)
{
- DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank]]);
- sub_8032984(gActiveBank, GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES));
- gBattleBankFunc[gActiveBank] = sub_8033308;
+ DestroySprite(&gSprites[gUnknown_0300434C[gActiveBattler]]);
+ sub_8032984(gActiveBattler, GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES));
+ gBattleBankFunc[gActiveBattler] = sub_8033308;
}
}
void sub_8033494(void)
{
- if (!ewram17810[gActiveBank].unk0_4)
+ if (!ewram17810[gActiveBattler].unk0_4)
OpponentBufferExecCompleted();
}
void sub_80334C0(void)
{
- if (!ewram17810[gActiveBank].unk0_5)
+ if (!ewram17810[gActiveBattler].unk0_5)
OpponentBufferExecCompleted();
}
void OpponentBufferExecCompleted(void)
{
- gBattleBankFunc[gActiveBank] = OpponentBufferRunCommand;
- gBattleExecBuffer &= ~gBitTable[gActiveBank];
+ gBattleBankFunc[gActiveBattler] = OpponentBufferRunCommand;
+ gBattleExecBuffer &= ~gBitTable[gActiveBattler];
}
void OpponentHandleGetAttributes(void)
@@ -537,13 +537,13 @@ void OpponentHandleGetAttributes(void)
int r6 = 0;
s32 i;
- if (gBattleBufferA[gActiveBank][2] == 0)
+ if (gBattleBufferA[gActiveBattler][2] == 0)
{
- r6 = sub_8033598(gBattlePartyID[gActiveBank], buffer);
+ r6 = sub_8033598(gBattlerPartyIndexes[gActiveBattler], buffer);
}
else
{
- u8 r4 = gBattleBufferA[gActiveBank][2];
+ u8 r4 = gBattleBufferA[gActiveBattler][2];
for (i = 0; i < 6; i++)
{
@@ -566,7 +566,7 @@ u32 sub_8033598(u8 a, u8 *buffer)
u32 data32;
s32 size = 0;
- switch (gBattleBufferA[gActiveBank][1])
+ switch (gBattleBufferA[gActiveBattler][1])
{
case 0:
battlePokemon.species = GetMonData(&gEnemyParty[a], MON_DATA_SPECIES);
@@ -628,7 +628,7 @@ u32 sub_8033598(u8 a, u8 *buffer)
case 5:
case 6:
case 7:
- data16 = GetMonData(&gEnemyParty[a], MON_DATA_MOVE1 + gBattleBufferA[gActiveBank][1] - 4);
+ data16 = GetMonData(&gEnemyParty[a], MON_DATA_MOVE1 + gBattleBufferA[gActiveBattler][1] - 4);
buffer[0] = data16;
buffer[1] = data16 >> 8;
size = 2;
@@ -643,7 +643,7 @@ u32 sub_8033598(u8 a, u8 *buffer)
case 10:
case 11:
case 12:
- buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_PP1 + gBattleBufferA[gActiveBank][1] - 9);
+ buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_PP1 + gBattleBufferA[gActiveBattler][1] - 9);
size = 1;
break;
case 17:
@@ -862,11 +862,11 @@ void OpponentHandlecmd1(void)
struct BattlePokemon buffer;
u8 i;
// TODO: Maybe fix this. Integrating this into MEMSET_ALT is too hard.
- u8 *src = (u8 *)&gEnemyParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1];
+ u8 *src = (u8 *)&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]] + gBattleBufferA[gActiveBattler][1];
u8 *dst;
- MEMSET_ALT(&buffer + gBattleBufferA[gActiveBank][1], src[i], gBattleBufferA[gActiveBank][2], i, dst);
- Emitcmd29(1, gBattleBufferA[gActiveBank][2], dst);
+ MEMSET_ALT(&buffer + gBattleBufferA[gActiveBattler][1], src[i], gBattleBufferA[gActiveBattler][2], i, dst);
+ Emitcmd29(1, gBattleBufferA[gActiveBattler][2], dst);
OpponentBufferExecCompleted();
}
@@ -875,13 +875,13 @@ void OpponentHandleSetAttributes(void)
u8 i;
u8 r4;
- if (gBattleBufferA[gActiveBank][2] == 0)
+ if (gBattleBufferA[gActiveBattler][2] == 0)
{
- sub_8033E24(gBattlePartyID[gActiveBank]);
+ sub_8033E24(gBattlerPartyIndexes[gActiveBattler]);
}
else
{
- r4 = gBattleBufferA[gActiveBank][2];
+ r4 = gBattleBufferA[gActiveBattler][2];
for (i = 0; i < 6; i++)
{
if (r4 & 1)
@@ -894,11 +894,11 @@ void OpponentHandleSetAttributes(void)
void sub_8033E24(u8 a)
{
- struct BattlePokemon *battlePokemon = (struct BattlePokemon *)&gBattleBufferA[gActiveBank][3];
- struct MovePpInfo *moveData = (struct MovePpInfo *)&gBattleBufferA[gActiveBank][3];
+ struct BattlePokemon *battlePokemon = (struct BattlePokemon *)&gBattleBufferA[gActiveBattler][3];
+ struct MovePpInfo *moveData = (struct MovePpInfo *)&gBattleBufferA[gActiveBattler][3];
s32 i;
- switch (gBattleBufferA[gActiveBank][1])
+ switch (gBattleBufferA[gActiveBattler][1])
{
case 0:
{
@@ -939,10 +939,10 @@ void sub_8033E24(u8 a)
}
break;
case 1:
- SetMonData(&gEnemyParty[a], MON_DATA_SPECIES, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_SPECIES, &gBattleBufferA[gActiveBattler][3]);
break;
case 2:
- SetMonData(&gEnemyParty[a], MON_DATA_HELD_ITEM, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_HELD_ITEM, &gBattleBufferA[gActiveBattler][3]);
break;
case 3:
for (i = 0; i < 4; i++)
@@ -956,154 +956,154 @@ void sub_8033E24(u8 a)
case 5:
case 6:
case 7:
- SetMonData(&gEnemyParty[a], MON_DATA_MOVE1 + gBattleBufferA[gActiveBank][1] - 4, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_MOVE1 + gBattleBufferA[gActiveBattler][1] - 4, &gBattleBufferA[gActiveBattler][3]);
break;
case 8:
- SetMonData(&gEnemyParty[a], MON_DATA_PP1, &gBattleBufferA[gActiveBank][3]);
- SetMonData(&gEnemyParty[a], MON_DATA_PP2, &gBattleBufferA[gActiveBank][4]);
- SetMonData(&gEnemyParty[a], MON_DATA_PP3, &gBattleBufferA[gActiveBank][5]);
- SetMonData(&gEnemyParty[a], MON_DATA_PP4, &gBattleBufferA[gActiveBank][6]);
- SetMonData(&gEnemyParty[a], MON_DATA_PP_BONUSES, &gBattleBufferA[gActiveBank][7]);
+ SetMonData(&gEnemyParty[a], MON_DATA_PP1, &gBattleBufferA[gActiveBattler][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_PP2, &gBattleBufferA[gActiveBattler][4]);
+ SetMonData(&gEnemyParty[a], MON_DATA_PP3, &gBattleBufferA[gActiveBattler][5]);
+ SetMonData(&gEnemyParty[a], MON_DATA_PP4, &gBattleBufferA[gActiveBattler][6]);
+ SetMonData(&gEnemyParty[a], MON_DATA_PP_BONUSES, &gBattleBufferA[gActiveBattler][7]);
break;
case 9:
case 10:
case 11:
case 12:
- SetMonData(&gEnemyParty[a], MON_DATA_PP1 + gBattleBufferA[gActiveBank][1] - 9, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_PP1 + gBattleBufferA[gActiveBattler][1] - 9, &gBattleBufferA[gActiveBattler][3]);
break;
case 17:
- SetMonData(&gEnemyParty[a], MON_DATA_OT_ID, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_OT_ID, &gBattleBufferA[gActiveBattler][3]);
break;
case 18:
- SetMonData(&gEnemyParty[a], MON_DATA_EXP, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_EXP, &gBattleBufferA[gActiveBattler][3]);
break;
case 19:
- SetMonData(&gEnemyParty[a], MON_DATA_HP_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_HP_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case 20:
- SetMonData(&gEnemyParty[a], MON_DATA_ATK_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_ATK_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case 21:
- SetMonData(&gEnemyParty[a], MON_DATA_DEF_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_DEF_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case 22:
- SetMonData(&gEnemyParty[a], MON_DATA_SPEED_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_SPEED_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case 23:
- SetMonData(&gEnemyParty[a], MON_DATA_SPATK_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_SPATK_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case 24:
- SetMonData(&gEnemyParty[a], MON_DATA_SPDEF_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_SPDEF_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case 25:
- SetMonData(&gEnemyParty[a], MON_DATA_FRIENDSHIP, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_FRIENDSHIP, &gBattleBufferA[gActiveBattler][3]);
break;
case 26:
- SetMonData(&gEnemyParty[a], MON_DATA_POKERUS, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_POKERUS, &gBattleBufferA[gActiveBattler][3]);
break;
case 27:
- SetMonData(&gEnemyParty[a], MON_DATA_MET_LOCATION, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_MET_LOCATION, &gBattleBufferA[gActiveBattler][3]);
break;
case 28:
- SetMonData(&gEnemyParty[a], MON_DATA_MET_LEVEL, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_MET_LEVEL, &gBattleBufferA[gActiveBattler][3]);
break;
case 29:
- SetMonData(&gEnemyParty[a], MON_DATA_MET_GAME, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_MET_GAME, &gBattleBufferA[gActiveBattler][3]);
break;
case 30:
- SetMonData(&gEnemyParty[a], MON_DATA_POKEBALL, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_POKEBALL, &gBattleBufferA[gActiveBattler][3]);
break;
case 31:
- SetMonData(&gEnemyParty[a], MON_DATA_HP_IV, &gBattleBufferA[gActiveBank][3]);
- SetMonData(&gEnemyParty[a], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBank][4]);
- SetMonData(&gEnemyParty[a], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][5]);
- SetMonData(&gEnemyParty[a], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBank][6]);
- SetMonData(&gEnemyParty[a], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][7]);
- SetMonData(&gEnemyParty[a], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBank][8]);
+ SetMonData(&gEnemyParty[a], MON_DATA_HP_IV, &gBattleBufferA[gActiveBattler][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBattler][4]);
+ SetMonData(&gEnemyParty[a], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBattler][5]);
+ SetMonData(&gEnemyParty[a], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBattler][6]);
+ SetMonData(&gEnemyParty[a], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBattler][7]);
+ SetMonData(&gEnemyParty[a], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBattler][8]);
break;
case 32:
- SetMonData(&gEnemyParty[a], MON_DATA_HP_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_HP_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case 33:
- SetMonData(&gEnemyParty[a], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case 34:
- SetMonData(&gEnemyParty[a], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case 35:
- SetMonData(&gEnemyParty[a], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case 36:
- SetMonData(&gEnemyParty[a], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case 37:
- SetMonData(&gEnemyParty[a], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case 38:
- SetMonData(&gEnemyParty[a], MON_DATA_PERSONALITY, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_PERSONALITY, &gBattleBufferA[gActiveBattler][3]);
break;
case 39:
- SetMonData(&gEnemyParty[a], MON_DATA_CHECKSUM, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_CHECKSUM, &gBattleBufferA[gActiveBattler][3]);
break;
case 40:
- SetMonData(&gEnemyParty[a], MON_DATA_STATUS, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_STATUS, &gBattleBufferA[gActiveBattler][3]);
break;
case 41:
- SetMonData(&gEnemyParty[a], MON_DATA_LEVEL, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_LEVEL, &gBattleBufferA[gActiveBattler][3]);
break;
case 42:
- SetMonData(&gEnemyParty[a], MON_DATA_HP, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_HP, &gBattleBufferA[gActiveBattler][3]);
break;
case 43:
- SetMonData(&gEnemyParty[a], MON_DATA_MAX_HP, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_MAX_HP, &gBattleBufferA[gActiveBattler][3]);
break;
case 44:
- SetMonData(&gEnemyParty[a], MON_DATA_ATK, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_ATK, &gBattleBufferA[gActiveBattler][3]);
break;
case 45:
- SetMonData(&gEnemyParty[a], MON_DATA_DEF, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_DEF, &gBattleBufferA[gActiveBattler][3]);
break;
case 46:
- SetMonData(&gEnemyParty[a], MON_DATA_SPEED, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_SPEED, &gBattleBufferA[gActiveBattler][3]);
break;
case 47:
- SetMonData(&gEnemyParty[a], MON_DATA_SPATK, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_SPATK, &gBattleBufferA[gActiveBattler][3]);
break;
case 48:
- SetMonData(&gEnemyParty[a], MON_DATA_SPDEF, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_SPDEF, &gBattleBufferA[gActiveBattler][3]);
break;
case 49:
- SetMonData(&gEnemyParty[a], MON_DATA_COOL, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_COOL, &gBattleBufferA[gActiveBattler][3]);
break;
case 50:
- SetMonData(&gEnemyParty[a], MON_DATA_BEAUTY, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_BEAUTY, &gBattleBufferA[gActiveBattler][3]);
break;
case 51:
- SetMonData(&gEnemyParty[a], MON_DATA_CUTE, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_CUTE, &gBattleBufferA[gActiveBattler][3]);
break;
case 52:
- SetMonData(&gEnemyParty[a], MON_DATA_SMART, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_SMART, &gBattleBufferA[gActiveBattler][3]);
break;
case 53:
- SetMonData(&gEnemyParty[a], MON_DATA_TOUGH, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_TOUGH, &gBattleBufferA[gActiveBattler][3]);
break;
case 54:
- SetMonData(&gEnemyParty[a], MON_DATA_SHEEN, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_SHEEN, &gBattleBufferA[gActiveBattler][3]);
break;
case 55:
- SetMonData(&gEnemyParty[a], MON_DATA_COOL_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_COOL_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
case 56:
- SetMonData(&gEnemyParty[a], MON_DATA_BEAUTY_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_BEAUTY_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
case 57:
- SetMonData(&gEnemyParty[a], MON_DATA_CUTE_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_CUTE_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
case 58:
- SetMonData(&gEnemyParty[a], MON_DATA_SMART_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_SMART_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
case 59:
- SetMonData(&gEnemyParty[a], MON_DATA_TOUGH_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_TOUGH_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
}
}
@@ -1113,37 +1113,37 @@ void OpponentHandlecmd3(void)
u8 *dst;
u8 i;
- MEMSET_ALT(&gEnemyParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1], gBattleBufferA[gActiveBank][3 + i],
- gBattleBufferA[gActiveBank][2], i, dst);
+ MEMSET_ALT(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]] + gBattleBufferA[gActiveBattler][1], gBattleBufferA[gActiveBattler][3 + i],
+ gBattleBufferA[gActiveBattler][2], i, dst);
OpponentBufferExecCompleted();
}
void OpponentHandleLoadPokeSprite(void)
{
- u16 species = GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES);
+ u16 species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES);
- BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[gActiveBank]], gActiveBank);
- GetMonSpriteTemplate_803C56C(species, GetBankIdentity(gActiveBank));
- gBankSpriteIds[gActiveBank] = CreateSprite(
+ BattleLoadOpponentMonSprite(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
+ GetMonSpriteTemplate_803C56C(species, GetBattlerPosition(gActiveBattler));
+ gBankSpriteIds[gActiveBattler] = CreateSprite(
&gUnknown_02024E8C,
- GetBankPosition(gActiveBank, 2),
- sub_8077F68(gActiveBank),
- sub_8079E90(gActiveBank));
- gSprites[gBankSpriteIds[gActiveBank]].pos2.x = -240;
- gSprites[gBankSpriteIds[gActiveBank]].data[0] = gActiveBank;
- gSprites[gBankSpriteIds[gActiveBank]].data[2] = species;
- gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank;
- StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], gBattleMonForms[gActiveBank]);
- sub_8032984(gActiveBank, GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES));
- gBattleBankFunc[gActiveBank] = sub_8033018;
+ GetBattlerSpriteCoord(gActiveBattler, 2),
+ sub_8077F68(gActiveBattler),
+ sub_8079E90(gActiveBattler));
+ gSprites[gBankSpriteIds[gActiveBattler]].pos2.x = -240;
+ gSprites[gBankSpriteIds[gActiveBattler]].data[0] = gActiveBattler;
+ gSprites[gBankSpriteIds[gActiveBattler]].data[2] = species;
+ gSprites[gBankSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
+ StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBattler]], gBattleMonForms[gActiveBattler]);
+ sub_8032984(gActiveBattler, GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES));
+ gBattleBankFunc[gActiveBattler] = sub_8033018;
}
void OpponentHandleSendOutPoke(void)
{
- gBattlePartyID[gActiveBank] = gBattleBufferA[gActiveBank][1];
+ gBattlerPartyIndexes[gActiveBattler] = gBattleBufferA[gActiveBattler][1];
- sub_803495C(gActiveBank, gBattleBufferA[gActiveBank][2]);
- gBattleBankFunc[gActiveBank] = sub_80333D4;
+ sub_803495C(gActiveBattler, gBattleBufferA[gActiveBattler][2]);
+ gBattleBankFunc[gActiveBattler] = sub_80333D4;
}
void sub_803495C(u8 a, u8 b)
@@ -1151,14 +1151,14 @@ void sub_803495C(u8 a, u8 b)
u16 species;
sub_8032AA8(a, b);
- gBattlePartyID[a] = gBattleBufferA[a][1];
- species = GetMonData(&gEnemyParty[gBattlePartyID[a]], MON_DATA_SPECIES);
+ gBattlerPartyIndexes[a] = gBattleBufferA[a][1];
+ species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[a]], MON_DATA_SPECIES);
gUnknown_0300434C[a] = CreateInvisibleSpriteWithCallback(sub_80312F0);
- BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[a]], a);
- GetMonSpriteTemplate_803C56C(species, GetBankIdentity(a));
+ BattleLoadOpponentMonSprite(&gEnemyParty[gBattlerPartyIndexes[a]], a);
+ GetMonSpriteTemplate_803C56C(species, GetBattlerPosition(a));
gBankSpriteIds[a] = CreateSprite(
&gUnknown_02024E8C,
- GetBankPosition(a, 2),
+ GetBattlerSpriteCoord(a, 2),
sub_8077F68(a),
sub_8079E90(a));
gSprites[gBankSpriteIds[a]].data[0] = a;
@@ -1173,36 +1173,36 @@ void sub_803495C(u8 a, u8 b)
void OpponentHandleReturnPokeToBall(void)
{
- if (gBattleBufferA[gActiveBank][1] == 0)
+ if (gBattleBufferA[gActiveBattler][1] == 0)
{
- ewram17810[gActiveBank].unk4 = 0;
- gBattleBankFunc[gActiveBank] = sub_8034B74;
+ ewram17810[gActiveBattler].unk4 = 0;
+ gBattleBankFunc[gActiveBattler] = sub_8034B74;
}
else
{
- FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
- DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
- sub_8032A08(gActiveBank);
- sub_8043DB0(gHealthboxIDs[gActiveBank]);
+ FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBattler]]);
+ DestroySprite(&gSprites[gBankSpriteIds[gActiveBattler]]);
+ sub_8032A08(gActiveBattler);
+ sub_8043DB0(gHealthboxIDs[gActiveBattler]);
OpponentBufferExecCompleted();
}
}
void sub_8034B74(void)
{
- switch (ewram17810[gActiveBank].unk4)
+ switch (ewram17810[gActiveBattler].unk4)
{
case 0:
- if (ewram17800[gActiveBank].substituteSprite)
- move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
- ewram17810[gActiveBank].unk4 = 1;
+ if (ewram17800[gActiveBattler].substituteSprite)
+ move_anim_start_t4(gActiveBattler, gActiveBattler, gActiveBattler, 5);
+ ewram17810[gActiveBattler].unk4 = 1;
break;
case 1:
- if (!ewram17810[gActiveBank].unk0_6)
+ if (!ewram17810[gActiveBattler].unk0_6)
{
- ewram17810[gActiveBank].unk4 = 0;
- move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 2);
- gBattleBankFunc[gActiveBank] = sub_8033160;
+ ewram17810[gActiveBattler].unk4 = 0;
+ move_anim_start_t4(gActiveBattler, gActiveBattler, gActiveBattler, 2);
+ gBattleBankFunc[gActiveBattler] = sub_8033160;
}
break;
}
@@ -1230,21 +1230,21 @@ void OpponentHandleTrainerThrow(void)
trainerPicIndex = gTrainers[gTrainerBattleOpponent].trainerPic;
}
- sub_8031A6C(trainerPicIndex, gActiveBank);
- GetMonSpriteTemplate_803C5A0(trainerPicIndex, GetBankIdentity(gActiveBank));
- gBankSpriteIds[gActiveBank] = CreateSprite(
+ sub_8031A6C(trainerPicIndex, gActiveBattler);
+ GetMonSpriteTemplate_803C5A0(trainerPicIndex, GetBattlerPosition(gActiveBattler));
+ gBankSpriteIds[gActiveBattler] = CreateSprite(
&gUnknown_02024E8C,
0xB0,
40 + 4 * (8 - gTrainerFrontPicCoords[trainerPicIndex].coords),
- sub_8079E90(gActiveBank));
- gSprites[gBankSpriteIds[gActiveBank]].pos2.x = -240;
- gSprites[gBankSpriteIds[gActiveBank]].data[0] = 2;
- gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicIndex].tag);
- gSprites[gBankSpriteIds[gActiveBank]].data[5] = gSprites[gBankSpriteIds[gActiveBank]].oam.tileNum;
- gSprites[gBankSpriteIds[gActiveBank]].oam.tileNum = GetSpriteTileStartByTag(gTrainerFrontPicTable[trainerPicIndex].tag);
- gSprites[gBankSpriteIds[gActiveBank]].oam.affineParam = trainerPicIndex;
- gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80313A0;
- gBattleBankFunc[gActiveBank] = sub_8032B4C;
+ sub_8079E90(gActiveBattler));
+ gSprites[gBankSpriteIds[gActiveBattler]].pos2.x = -240;
+ gSprites[gBankSpriteIds[gActiveBattler]].data[0] = 2;
+ gSprites[gBankSpriteIds[gActiveBattler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicIndex].tag);
+ gSprites[gBankSpriteIds[gActiveBattler]].data[5] = gSprites[gBankSpriteIds[gActiveBattler]].oam.tileNum;
+ gSprites[gBankSpriteIds[gActiveBattler]].oam.tileNum = GetSpriteTileStartByTag(gTrainerFrontPicTable[trainerPicIndex].tag);
+ gSprites[gBankSpriteIds[gActiveBattler]].oam.affineParam = trainerPicIndex;
+ gSprites[gBankSpriteIds[gActiveBattler]].callback = sub_80313A0;
+ gBattleBankFunc[gActiveBattler] = sub_8032B4C;
}
void OpponentHandleTrainerSlide(void)
@@ -1260,49 +1260,49 @@ void OpponentHandleTrainerSlide(void)
else
trainerPicIndex = gTrainers[gTrainerBattleOpponent].trainerPic;
- sub_8031A6C(trainerPicIndex, gActiveBank);
- GetMonSpriteTemplate_803C5A0(trainerPicIndex, GetBankIdentity(gActiveBank));
- gBankSpriteIds[gActiveBank] = CreateSprite(
+ sub_8031A6C(trainerPicIndex, gActiveBattler);
+ GetMonSpriteTemplate_803C5A0(trainerPicIndex, GetBattlerPosition(gActiveBattler));
+ gBankSpriteIds[gActiveBattler] = CreateSprite(
&gUnknown_02024E8C,
0xB0,
40 + 4 * (8 - gTrainerFrontPicCoords[trainerPicIndex].coords),
0x1E);
- gSprites[gBankSpriteIds[gActiveBank]].pos2.x = 96;
- gSprites[gBankSpriteIds[gActiveBank]].pos1.x += 32;
- gSprites[gBankSpriteIds[gActiveBank]].data[0] = -2;
- gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicIndex].tag);
- gSprites[gBankSpriteIds[gActiveBank]].data[5] = gSprites[gBankSpriteIds[gActiveBank]].oam.tileNum;
- gSprites[gBankSpriteIds[gActiveBank]].oam.tileNum = GetSpriteTileStartByTag(gTrainerFrontPicTable[trainerPicIndex].tag);
- gSprites[gBankSpriteIds[gActiveBank]].oam.affineParam = trainerPicIndex;
- gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80313A0;
- gBattleBankFunc[gActiveBank] = sub_8032B84;
+ gSprites[gBankSpriteIds[gActiveBattler]].pos2.x = 96;
+ gSprites[gBankSpriteIds[gActiveBattler]].pos1.x += 32;
+ gSprites[gBankSpriteIds[gActiveBattler]].data[0] = -2;
+ gSprites[gBankSpriteIds[gActiveBattler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicIndex].tag);
+ gSprites[gBankSpriteIds[gActiveBattler]].data[5] = gSprites[gBankSpriteIds[gActiveBattler]].oam.tileNum;
+ gSprites[gBankSpriteIds[gActiveBattler]].oam.tileNum = GetSpriteTileStartByTag(gTrainerFrontPicTable[trainerPicIndex].tag);
+ gSprites[gBankSpriteIds[gActiveBattler]].oam.affineParam = trainerPicIndex;
+ gSprites[gBankSpriteIds[gActiveBattler]].callback = sub_80313A0;
+ gBattleBankFunc[gActiveBattler] = sub_8032B84;
}
void OpponentHandleTrainerSlideBack(void)
{
- oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]);
- gSprites[gBankSpriteIds[gActiveBank]].data[0] = 35;
- gSprites[gBankSpriteIds[gActiveBank]].data[2] = 280;
- gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
- gSprites[gBankSpriteIds[gActiveBank]].callback = StartTranslateAnimSpriteByDeltas;
- StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBank]], SpriteCallbackDummy);
- gBattleBankFunc[gActiveBank] = sub_8032BBC;
+ oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBattler]]);
+ gSprites[gBankSpriteIds[gActiveBattler]].data[0] = 35;
+ gSprites[gBankSpriteIds[gActiveBattler]].data[2] = 280;
+ gSprites[gBankSpriteIds[gActiveBattler]].data[4] = gSprites[gBankSpriteIds[gActiveBattler]].pos1.y;
+ gSprites[gBankSpriteIds[gActiveBattler]].callback = StartTranslateAnimSpriteByDeltas;
+ StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBattler]], SpriteCallbackDummy);
+ gBattleBankFunc[gActiveBattler] = sub_8032BBC;
}
void OpponentHandlecmd10(void)
{
- if (ewram17810[gActiveBank].unk4 == 0)
+ if (ewram17810[gActiveBattler].unk4 == 0)
{
- if (ewram17800[gActiveBank].substituteSprite)
- move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
- ewram17810[gActiveBank].unk4++;
+ if (ewram17800[gActiveBattler].substituteSprite)
+ move_anim_start_t4(gActiveBattler, gActiveBattler, gActiveBattler, 5);
+ ewram17810[gActiveBattler].unk4++;
}
- else if (!ewram17810[gActiveBank].unk0_6)
+ else if (!ewram17810[gActiveBattler].unk0_6)
{
- ewram17810[gActiveBank].unk4 = 0;
+ ewram17810[gActiveBattler].unk4 = 0;
PlaySE12WithPanning(SE_POKE_DEAD, 63);
- gSprites[gBankSpriteIds[gActiveBank]].callback = sub_8010384;
- gBattleBankFunc[gActiveBank] = sub_803311C;
+ gSprites[gBankSpriteIds[gActiveBattler]].callback = sub_8010384;
+ gBattleBankFunc[gActiveBattler] = sub_803311C;
}
}
@@ -1328,23 +1328,23 @@ void OpponentHandlePuase(void)
void OpponentHandleMoveAnimation(void)
{
- if (!mplay_80342A4(gActiveBank))
+ if (!mplay_80342A4(gActiveBattler))
{
- u32 r0 = gBattleBufferA[gActiveBank][1]
- | (gBattleBufferA[gActiveBank][2] << 8);
-
- gAnimMoveTurn = gBattleBufferA[gActiveBank][3];
- gAnimMovePower = gBattleBufferA[gActiveBank][4]
- | (gBattleBufferA[gActiveBank][5] << 8);
- gAnimMoveDmg = gBattleBufferA[gActiveBank][6]
- | (gBattleBufferA[gActiveBank][7] << 8)
- | (gBattleBufferA[gActiveBank][8] << 16)
- | (gBattleBufferA[gActiveBank][9] << 24);
- gAnimFriendship = gBattleBufferA[gActiveBank][10];
- gWeatherMoveAnim = gBattleBufferA[gActiveBank][12]
- | (gBattleBufferA[gActiveBank][13] << 8);
- gAnimDisableStructPtr = (struct DisableStruct *)&gBattleBufferA[gActiveBank][16];
- gTransformedPersonalities[gActiveBank] = gAnimDisableStructPtr->transformedMonPersonality;
+ u32 r0 = gBattleBufferA[gActiveBattler][1]
+ | (gBattleBufferA[gActiveBattler][2] << 8);
+
+ gAnimMoveTurn = gBattleBufferA[gActiveBattler][3];
+ gAnimMovePower = gBattleBufferA[gActiveBattler][4]
+ | (gBattleBufferA[gActiveBattler][5] << 8);
+ gAnimMoveDmg = gBattleBufferA[gActiveBattler][6]
+ | (gBattleBufferA[gActiveBattler][7] << 8)
+ | (gBattleBufferA[gActiveBattler][8] << 16)
+ | (gBattleBufferA[gActiveBattler][9] << 24);
+ gAnimFriendship = gBattleBufferA[gActiveBattler][10];
+ gWeatherMoveAnim = gBattleBufferA[gActiveBattler][12]
+ | (gBattleBufferA[gActiveBattler][13] << 8);
+ gAnimDisableStructPtr = (struct DisableStruct *)&gBattleBufferA[gActiveBattler][16];
+ gTransformedPersonalities[gActiveBattler] = gAnimDisableStructPtr->transformedMonPersonality;
// Dead code. sub_8031720 always returns 0.
if (sub_8031720(r0, gAnimMoveTurn) != 0)
@@ -1353,34 +1353,34 @@ void OpponentHandleMoveAnimation(void)
}
else
{
- ewram17810[gActiveBank].unk4 = 0;
- gBattleBankFunc[gActiveBank] = sub_8035238;
+ ewram17810[gActiveBattler].unk4 = 0;
+ gBattleBankFunc[gActiveBattler] = sub_8035238;
}
}
}
void sub_8035238(void)
{
- u16 r4 = gBattleBufferA[gActiveBank][1]
- | (gBattleBufferA[gActiveBank][2] << 8);
- u8 r7 = gBattleBufferA[gActiveBank][11];
+ u16 r4 = gBattleBufferA[gActiveBattler][1]
+ | (gBattleBufferA[gActiveBattler][2] << 8);
+ u8 r7 = gBattleBufferA[gActiveBattler][11];
- switch (ewram17810[gActiveBank].unk4)
+ switch (ewram17810[gActiveBattler].unk4)
{
case 0:
- if (ewram17800[gActiveBank].substituteSprite && !ewram17800[gActiveBank].unk0_3)
+ if (ewram17800[gActiveBattler].substituteSprite && !ewram17800[gActiveBattler].unk0_3)
{
- ewram17800[gActiveBank].unk0_3 = 1;
- move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
+ ewram17800[gActiveBattler].unk0_3 = 1;
+ move_anim_start_t4(gActiveBattler, gActiveBattler, gActiveBattler, 5);
}
- ewram17810[gActiveBank].unk4 = 1;
+ ewram17810[gActiveBattler].unk4 = 1;
break;
case 1:
- if (!ewram17810[gActiveBank].unk0_6)
+ if (!ewram17810[gActiveBattler].unk0_6)
{
sub_80326EC(0);
DoMoveAnim(r4);
- ewram17810[gActiveBank].unk4 = 2;
+ ewram17810[gActiveBattler].unk4 = 2;
}
break;
case 2:
@@ -1388,22 +1388,22 @@ void sub_8035238(void)
if (!gAnimScriptActive)
{
sub_80326EC(1);
- if ((ewram17800[gActiveBank].substituteSprite) && r7 <= 1)
+ if ((ewram17800[gActiveBattler].substituteSprite) && r7 <= 1)
{
- move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6);
- ewram17800[gActiveBank].unk0_3 = 0;
+ move_anim_start_t4(gActiveBattler, gActiveBattler, gActiveBattler, 6);
+ ewram17800[gActiveBattler].unk0_3 = 0;
}
- ewram17810[gActiveBank].unk4 = 3;
+ ewram17810[gActiveBattler].unk4 = 3;
}
break;
case 3:
- if (!ewram17810[gActiveBank].unk0_6)
+ if (!ewram17810[gActiveBattler].unk0_6)
{
sub_8031F24();
sub_80324BC(
- gActiveBank,
- gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
- ewram17810[gActiveBank].unk4 = 0;
+ gActiveBattler,
+ gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8));
+ ewram17810[gActiveBattler].unk4 = 0;
OpponentBufferExecCompleted();
}
break;
@@ -1414,9 +1414,9 @@ void OpponentHandlePrintString(void)
{
gBattle_BG0_X = 0;
gBattle_BG0_Y = 0;
- BufferStringBattle(*(u16 *)&gBattleBufferA[gActiveBank][2]);
+ BufferStringBattle(*(u16 *)&gBattleBufferA[gActiveBattler][2]);
Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
- gBattleBankFunc[gActiveBank] = sub_80331D0;
+ gBattleBankFunc[gActiveBattler] = sub_80331D0;
}
void OpponentHandlePrintStringPlayerOnly(void)
@@ -1426,7 +1426,7 @@ void OpponentHandlePrintStringPlayerOnly(void)
void OpponentHandlecmd18(void)
{
- sub_8036B0C();
+ AI_TrySwitchOrUseItem();
OpponentBufferExecCompleted();
}
@@ -1436,7 +1436,7 @@ void OpponentHandlecmd19(void)
}
#if DEBUG
-__attribute__((naked))
+NAKED
void OpponentHandlecmd20(void)
{
asm("\
@@ -1445,7 +1445,7 @@ void OpponentHandlecmd20(void)
mov r6, r9\n\
mov r5, r8\n\
push {r5, r6, r7}\n\
- ldr r6, ._549 @ gActiveBank\n\
+ ldr r6, ._549 @ gActiveBattler\n\
ldrb r0, [r6]\n\
lsl r0, r0, #0x9\n\
ldr r1, ._549 + 4 @ gBattleBufferA\n\
@@ -1487,7 +1487,7 @@ void OpponentHandlecmd20(void)
._550:\n\
.align 2, 0\n\
._549:\n\
- .word gActiveBank\n\
+ .word gActiveBattler\n\
.word gBattleBufferA+4\n\
.word gUnknown_02023A14_50\n\
.word gBattleMoves\n\
@@ -1541,7 +1541,7 @@ void OpponentHandlecmd20(void)
bne ._557 @cond_branch\n\
mov r1, sl\n\
ldrb r0, [r1]\n\
- bl GetBankIdentity\n\
+ bl GetBattlerPosition\n\
mov r1, #0x2\n\
eor r0, r0, r1\n\
lsl r0, r0, #0x18\n\
@@ -1562,7 +1562,7 @@ void OpponentHandlecmd20(void)
._557:\n\
mov r0, #0x0\n\
._558:\n\
- bl GetBankByIdentity\n\
+ bl GetBattlerAtPosition\n\
lsl r0, r0, #0x18\n\
lsr r0, r0, #0x18\n\
._561:\n\
@@ -1633,10 +1633,10 @@ void OpponentHandlecmd20(void)
cmp r0, #0\n\
beq ._572 @cond_branch\n\
mov r0, #0x0\n\
- bl GetBankByIdentity\n\
+ bl GetBattlerAtPosition\n\
ldr r5, ._574 + 4 @ gBankTarget\n\
strb r0, [r5]\n\
- ldr r0, ._574 + 8 @ gAbsentBankFlags\n\
+ ldr r0, ._574 + 8 @ gAbsentBattlerFlags\n\
ldrb r1, [r0]\n\
ldr r2, ._574 + 12 @ gBitTable\n\
ldrb r0, [r5]\n\
@@ -1647,7 +1647,7 @@ void OpponentHandlecmd20(void)
cmp r1, #0\n\
beq ._572 @cond_branch\n\
mov r0, #0x2\n\
- bl GetBankByIdentity\n\
+ bl GetBattlerAtPosition\n\
strb r0, [r5]\n\
._572:\n\
ldr r0, ._574 + 4 @ gBankTarget\n\
@@ -1663,7 +1663,7 @@ void OpponentHandlecmd20(void)
._574:\n\
.word gBattleMoves\n\
.word gBankTarget\n\
- .word gAbsentBankFlags\n\
+ .word gAbsentBattlerFlags\n\
.word gBitTable\n\
._563:\n\
mov r6, #0x3\n\
@@ -1686,7 +1686,7 @@ void OpponentHandlecmd20(void)
and r0, r0, r1\n\
cmp r0, #0\n\
beq ._577 @cond_branch\n\
- ldr r0, ._579 + 4 @ gActiveBank\n\
+ ldr r0, ._579 + 4 @ gActiveBattler\n\
ldrb r2, [r0]\n\
lsl r2, r2, #0x8\n\
b ._578\n\
@@ -1694,7 +1694,7 @@ void OpponentHandlecmd20(void)
.align 2, 0\n\
._579:\n\
.word gBattleMoves\n\
- .word gActiveBank\n\
+ .word gActiveBattler\n\
._577:\n\
ldr r0, ._583 @ gBattleTypeFlags\n\
ldrh r1, [r0]\n\
@@ -1708,7 +1708,7 @@ void OpponentHandlecmd20(void)
lsl r1, r1, #0x18\n\
lsr r1, r1, #0x18\n\
add r0, r1, #0\n\
- bl GetBankByIdentity\n\
+ bl GetBattlerAtPosition\n\
add r2, r0, #0\n\
lsl r2, r2, #0x18\n\
lsr r2, r2, #0x10\n\
@@ -1724,7 +1724,7 @@ void OpponentHandlecmd20(void)
.word gBattleTypeFlags\n\
._581:\n\
mov r0, #0x0\n\
- bl GetBankByIdentity\n\
+ bl GetBattlerAtPosition\n\
add r2, r0, #0\n\
lsl r2, r2, #0x18\n\
lsr r2, r2, #0x10\n\
@@ -1749,7 +1749,7 @@ void OpponentHandlecmd20(void)
{
u16 r4;
// Needed to match closer
- struct {u16 moves[4];} *r5 = (void *)&gBattleBufferA[gActiveBank][4];
+ struct {u16 moves[4];} *r5 = (void *)&gBattleBufferA[gActiveBattler][4];
if (gBattleTypeFlags & 0x498)
{
@@ -1765,12 +1765,12 @@ void OpponentHandlecmd20(void)
break;
default:
if (gBattleMoves[r5->moves[r4]].target & 0x12)
- gBankTarget = gActiveBank;
+ gBankTarget = gActiveBattler;
if (gBattleMoves[r5->moves[r4]].target & 8)
{
- gBankTarget = GetBankByIdentity(0);
- if (gAbsentBankFlags & gBitTable[gBankTarget])
- gBankTarget = GetBankByIdentity(2);
+ gBankTarget = GetBattlerAtPosition(0);
+ if (gAbsentBattlerFlags & gBitTable[gBankTarget])
+ gBankTarget = GetBattlerAtPosition(2);
}
r4 |= gBankTarget << 8;
Emitcmd33(1, 10, r4);
@@ -1791,18 +1791,18 @@ void OpponentHandlecmd20(void)
if (gBattleMoves[r2].target & 0x12)
{
- r4 |= gActiveBank << 8;
+ r4 |= gActiveBattler << 8;
Emitcmd33(1, 10, r4);
}
else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
{
- u16 r2 = GetBankByIdentity(Random() & 2) << 8;
+ u16 r2 = GetBattlerAtPosition(Random() & 2) << 8;
Emitcmd33(1, 10, r4 | r2);
}
else
{
- u16 r2 = GetBankByIdentity(0) << 8;
+ u16 r2 = GetBattlerAtPosition(0) << 8;
Emitcmd33(1, 10, r4 | r2);
}
@@ -1810,12 +1810,12 @@ void OpponentHandlecmd20(void)
}
}
#else
-__attribute__((naked))
+NAKED
void OpponentHandlecmd20(void)
{
asm(".syntax unified\n\
push {r4-r6,lr}\n\
- ldr r6, _0803545C @ =gActiveBank\n\
+ ldr r6, _0803545C @ =gActiveBattler\n\
ldrb r0, [r6]\n\
lsls r0, 9\n\
ldr r1, _08035460 @ =gBattleBufferA+4\n\
@@ -1839,7 +1839,7 @@ void OpponentHandlecmd20(void)
movs r1, 0x4\n\
b _0803546C\n\
.align 2, 0\n\
-_0803545C: .4byte gActiveBank\n\
+_0803545C: .4byte gActiveBattler\n\
_08035460: .4byte gBattleBufferA+4\n\
_08035464: .4byte gBattleTypeFlags\n\
_08035468:\n\
@@ -1878,10 +1878,10 @@ _08035494:\n\
cmp r0, 0\n\
beq _080354CE\n\
movs r0, 0\n\
- bl GetBankByIdentity\n\
+ bl GetBattlerAtPosition\n\
ldr r5, _080354EC @ =gBankTarget\n\
strb r0, [r5]\n\
- ldr r0, _080354F0 @ =gAbsentBankFlags\n\
+ ldr r0, _080354F0 @ =gAbsentBattlerFlags\n\
ldrb r1, [r0]\n\
ldr r2, _080354F4 @ =gBitTable\n\
ldrb r0, [r5]\n\
@@ -1892,7 +1892,7 @@ _08035494:\n\
cmp r1, 0\n\
beq _080354CE\n\
movs r0, 0x2\n\
- bl GetBankByIdentity\n\
+ bl GetBattlerAtPosition\n\
strb r0, [r5]\n\
_080354CE:\n\
ldr r0, _080354EC @ =gBankTarget\n\
@@ -1909,7 +1909,7 @@ _080354E0:\n\
.align 2, 0\n\
_080354E8: .4byte gBattleMoves\n\
_080354EC: .4byte gBankTarget\n\
-_080354F0: .4byte gAbsentBankFlags\n\
+_080354F0: .4byte gAbsentBattlerFlags\n\
_080354F4: .4byte gBitTable\n\
_080354F8:\n\
movs r6, 0x3\n\
@@ -1932,7 +1932,7 @@ _080354FA:\n\
ands r0, r1\n\
cmp r0, 0\n\
beq _0803553C\n\
- ldr r0, _08035538 @ =gActiveBank\n\
+ ldr r0, _08035538 @ =gActiveBattler\n\
ldrb r0, [r0]\n\
lsls r0, 8\n\
orrs r4, r0\n\
@@ -1943,7 +1943,7 @@ _080354FA:\n\
b _08035586\n\
.align 2, 0\n\
_08035534: .4byte gBattleMoves\n\
-_08035538: .4byte gActiveBank\n\
+_08035538: .4byte gActiveBattler\n\
_0803553C:\n\
ldr r0, _0803556C @ =gBattleTypeFlags\n\
ldrh r1, [r0]\n\
@@ -1957,7 +1957,7 @@ _0803553C:\n\
lsls r1, 24\n\
lsrs r1, 24\n\
adds r0, r1, 0\n\
- bl GetBankByIdentity\n\
+ bl GetBattlerAtPosition\n\
adds r2, r0, 0\n\
lsls r2, 24\n\
lsrs r2, 16\n\
@@ -1970,7 +1970,7 @@ _0803553C:\n\
_0803556C: .4byte gBattleTypeFlags\n\
_08035570:\n\
movs r0, 0\n\
- bl GetBankByIdentity\n\
+ bl GetBattlerAtPosition\n\
adds r2, r0, 0\n\
lsls r2, 24\n\
lsrs r2, 16\n\
@@ -1992,7 +1992,7 @@ _0803558A:\n\
void OpponentHandleOpenBag(void)
{
// What is this?
- Emitcmd35(1, ewram160D4(gActiveBank));
+ Emitcmd35(1, ewram160D4(gActiveBattler));
OpponentBufferExecCompleted();
}
@@ -2000,39 +2000,39 @@ void OpponentHandlecmd22(void)
{
s32 r4;
- if (ewram160C8arr(GetBankIdentity(gActiveBank)) == 6)
+ if (ewram160C8arr(GetBattlerPosition(gActiveBattler)) == 6)
{
u8 r6;
u8 r5;
- r4 = sub_8036CD4();
+ r4 = GetMostSuitableMonToSwitchInto();
if (r4 == 6)
{
if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
{
- r5 = GetBankByIdentity(1);
+ r5 = GetBattlerAtPosition(1);
r6 = r5;
}
else
{
- r6 = GetBankByIdentity(1);
- r5 = GetBankByIdentity(3);
+ r6 = GetBattlerAtPosition(1);
+ r5 = GetBattlerAtPosition(3);
}
for (r4 = 0; r4 < 6; r4++)
{
if (GetMonData(&gEnemyParty[r4], MON_DATA_HP) != 0
- && r4 != gBattlePartyID[r6]
- && r4 != gBattlePartyID[r5])
+ && r4 != gBattlerPartyIndexes[r6]
+ && r4 != gBattlerPartyIndexes[r5])
break;
}
}
}
else
{
- r4 = ewram160C8arr(GetBankIdentity(gActiveBank));
- ewram160C8arr(GetBankIdentity(gActiveBank)) = 6;
+ r4 = ewram160C8arr(GetBattlerPosition(gActiveBattler));
+ ewram160C8arr(GetBattlerPosition(gActiveBattler)) = 6;
}
- ewram16068arr(gActiveBank) = r4;
+ ewram16068arr(gActiveBattler) = r4;
Emitcmd34(1, r4, 0);
OpponentBufferExecCompleted();
}
@@ -2047,21 +2047,21 @@ void OpponentHandleHealthBarUpdate(void)
s16 r7;
load_gfxc_health_bar(0);
- r7 = (gBattleBufferA[gActiveBank][3] << 8) | gBattleBufferA[gActiveBank][2];
+ r7 = (gBattleBufferA[gActiveBattler][3] << 8) | gBattleBufferA[gActiveBattler][2];
if (r7 != 0x7FFF)
{
- u32 maxHP = GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_MAX_HP);
- u32 hp = GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_HP);
+ u32 maxHP = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP);
+ u32 hp = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_HP);
- sub_8043D84(gActiveBank, gHealthboxIDs[gActiveBank], maxHP, hp, r7);
+ sub_8043D84(gActiveBattler, gHealthboxIDs[gActiveBattler], maxHP, hp, r7);
}
else
{
- u32 maxHP = GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_MAX_HP);
+ u32 maxHP = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP);
- sub_8043D84(gActiveBank, gHealthboxIDs[gActiveBank], maxHP, 0, r7);
+ sub_8043D84(gActiveBattler, gHealthboxIDs[gActiveBattler], maxHP, 0, r7);
}
- gBattleBankFunc[gActiveBank] = sub_80330C8;
+ gBattleBankFunc[gActiveBattler] = sub_80330C8;
}
void OpponentHandleExpBarUpdate(void)
@@ -2071,25 +2071,25 @@ void OpponentHandleExpBarUpdate(void)
void OpponentHandleStatusIconUpdate(void)
{
- if (mplay_80342A4(gActiveBank) == 0)
+ if (mplay_80342A4(gActiveBattler) == 0)
{
- sub_8045A5C(gHealthboxIDs[gActiveBank], &gEnemyParty[gBattlePartyID[gActiveBank]], 9);
- ewram17810[gActiveBank].unk0_4 = 0;
- gBattleBankFunc[gActiveBank] = sub_8033494;
+ sub_8045A5C(gHealthboxIDs[gActiveBattler], &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], 9);
+ ewram17810[gActiveBattler].unk0_4 = 0;
+ gBattleBankFunc[gActiveBattler] = sub_8033494;
}
}
void OpponentHandleStatusAnimation(void)
{
- if (mplay_80342A4(gActiveBank) == 0)
+ if (mplay_80342A4(gActiveBattler) == 0)
{
move_anim_start_t2_for_situation(
- gBattleBufferA[gActiveBank][1],
- gBattleBufferA[gActiveBank][2]
- | (gBattleBufferA[gActiveBank][3] << 8)
- | (gBattleBufferA[gActiveBank][4] << 16)
- | (gBattleBufferA[gActiveBank][5] << 24));
- gBattleBankFunc[gActiveBank] = sub_8033494;
+ gBattleBufferA[gActiveBattler][1],
+ gBattleBufferA[gActiveBattler][2]
+ | (gBattleBufferA[gActiveBattler][3] << 8)
+ | (gBattleBufferA[gActiveBattler][4] << 16)
+ | (gBattleBufferA[gActiveBattler][5] << 24));
+ gBattleBankFunc[gActiveBattler] = sub_8033494;
}
}
@@ -2146,7 +2146,7 @@ void OpponentHandlecmd37(void)
void OpponentHandlecmd38(void)
{
- gUnknown_020238C8.unk0_0 = gBattleBufferA[gActiveBank][1];
+ gUnknown_020238C8.unk0_0 = gBattleBufferA[gActiveBattler][1];
OpponentBufferExecCompleted();
}
@@ -2164,16 +2164,16 @@ void OpponentHandlecmd40(void)
void OpponentHandleHitAnimation(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].invisible == TRUE)
+ if (gSprites[gBankSpriteIds[gActiveBattler]].invisible == TRUE)
{
OpponentBufferExecCompleted();
}
else
{
gDoingBattleAnim = TRUE;
- gSprites[gBankSpriteIds[gActiveBank]].data[1] = 0;
- sub_8047858(gActiveBank);
- gBattleBankFunc[gActiveBank] = bx_blink_t7;
+ gSprites[gBankSpriteIds[gActiveBattler]].data[1] = 0;
+ sub_8047858(gActiveBattler);
+ gBattleBankFunc[gActiveBattler] = bx_blink_t7;
}
}
@@ -2186,31 +2186,31 @@ void OpponentHandleEffectivenessSound(void)
{
s8 pan;
- if (GetBankSide(gActiveBank) == 0)
+ if (GetBattlerSide(gActiveBattler) == 0)
pan = -64;
else
pan = 63;
- PlaySE12WithPanning(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8), pan);
+ PlaySE12WithPanning(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8), pan);
OpponentBufferExecCompleted();
}
void OpponentHandlecmd44(void)
{
- PlayFanfare(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
+ PlayFanfare(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8));
OpponentBufferExecCompleted();
}
void OpponentHandleFaintingCry(void)
{
PlayCry3(
- GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES),
+ GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES),
25, 5);
OpponentBufferExecCompleted();
}
void OpponentHandleIntroSlide(void)
{
- StartBattleIntroAnim(gBattleBufferA[gActiveBank][1]);
+ StartBattleIntroAnim(gBattleBufferA[gActiveBattler][1]);
gUnknown_02024DE8 |= 1;
OpponentBufferExecCompleted();
}
@@ -2219,18 +2219,18 @@ void OpponentHandleTrainerBallThrow(void)
{
u8 taskId;
- oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]);
- gSprites[gBankSpriteIds[gActiveBank]].data[0] = 35;
- gSprites[gBankSpriteIds[gActiveBank]].data[2] = 280;
- gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
- gSprites[gBankSpriteIds[gActiveBank]].callback = StartTranslateAnimSpriteByDeltas;
- StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBank]], sub_8035C10);
+ oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBattler]]);
+ gSprites[gBankSpriteIds[gActiveBattler]].data[0] = 35;
+ gSprites[gBankSpriteIds[gActiveBattler]].data[2] = 280;
+ gSprites[gBankSpriteIds[gActiveBattler]].data[4] = gSprites[gBankSpriteIds[gActiveBattler]].pos1.y;
+ gSprites[gBankSpriteIds[gActiveBattler]].callback = StartTranslateAnimSpriteByDeltas;
+ StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBattler]], sub_8035C10);
taskId = CreateTask(sub_8035C44, 5);
- gTasks[taskId].data[0] = gActiveBank;
- if (ewram17810[gActiveBank].unk0_0)
- gTasks[gUnknown_02024E68[gActiveBank]].func = sub_8044CA0;
+ gTasks[taskId].data[0] = gActiveBattler;
+ if (ewram17810[gActiveBattler].unk0_0)
+ gTasks[gUnknown_02024E68[gActiveBattler]].func = sub_8044CA0;
ewram17840.unk9_0 = 1;
- gBattleBankFunc[gActiveBank] = nullsub_45;
+ gBattleBankFunc[gActiveBattler] = nullsub_45;
}
void sub_8035C10(struct Sprite *sprite)
@@ -2245,72 +2245,72 @@ void sub_8035C44(u8 taskId)
{
u8 r9;
- r9 = gActiveBank;
- gActiveBank = gTasks[taskId].data[0];
+ r9 = gActiveBattler;
+ gActiveBattler = gTasks[taskId].data[0];
if (!IsDoubleBattle() || (gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
- gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
- sub_803495C(gActiveBank, 0);
+ gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler];
+ sub_803495C(gActiveBattler, 0);
}
else
{
- gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
- sub_803495C(gActiveBank, 0);
- gActiveBank ^= 2;
- gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
- sub_803495C(gActiveBank, 0);
- gActiveBank ^= 2;
+ gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler];
+ sub_803495C(gActiveBattler, 0);
+ gActiveBattler ^= 2;
+ gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler];
+ sub_803495C(gActiveBattler, 0);
+ gActiveBattler ^= 2;
}
- gBattleBankFunc[gActiveBank] = sub_8032E2C;
- gActiveBank = r9;
+ gBattleBankFunc[gActiveBattler] = sub_8032E2C;
+ gActiveBattler = r9;
DestroyTask(taskId);
}
void OpponentHandlecmd48(void)
{
- if (gBattleBufferA[gActiveBank][1] != 0 && GetBankSide(gActiveBank) == 0)
+ if (gBattleBufferA[gActiveBattler][1] != 0 && GetBattlerSide(gActiveBattler) == 0)
{
OpponentBufferExecCompleted();
return;
}
- ewram17810[gActiveBank].unk0_0 = 1;
- if (gBattleBufferA[gActiveBank][2] != 0)
+ ewram17810[gActiveBattler].unk0_0 = 1;
+ if (gBattleBufferA[gActiveBattler][2] != 0)
{
- if (ewram17810[gActiveBank].unk1_1 < 2)
+ if (ewram17810[gActiveBattler].unk1_1 < 2)
{
- ewram17810[gActiveBank].unk1_1++;
+ ewram17810[gActiveBattler].unk1_1++;
return;
}
else
{
- ewram17810[gActiveBank].unk1_1 = 0;
+ ewram17810[gActiveBattler].unk1_1 = 0;
}
}
- gUnknown_02024E68[gActiveBank] = sub_8044804(
- gActiveBank,
- (struct BattleInterfaceStruct2 *)&gBattleBufferA[gActiveBank][4],
- gBattleBufferA[gActiveBank][1],
- gBattleBufferA[gActiveBank][2]);
- ewram17810[gActiveBank].unk5 = 0;
- if (gBattleBufferA[gActiveBank][2] != 0)
- ewram17810[gActiveBank].unk5 = 0x5D;
- gBattleBankFunc[gActiveBank] = sub_8035E2C;
+ gUnknown_02024E68[gActiveBattler] = sub_8044804(
+ gActiveBattler,
+ (struct BattleInterfaceStruct2 *)&gBattleBufferA[gActiveBattler][4],
+ gBattleBufferA[gActiveBattler][1],
+ gBattleBufferA[gActiveBattler][2]);
+ ewram17810[gActiveBattler].unk5 = 0;
+ if (gBattleBufferA[gActiveBattler][2] != 0)
+ ewram17810[gActiveBattler].unk5 = 0x5D;
+ gBattleBankFunc[gActiveBattler] = sub_8035E2C;
}
void sub_8035E2C(void)
{
- if (ewram17810[gActiveBank].unk5++ >= 93)
+ if (ewram17810[gActiveBattler].unk5++ >= 93)
{
- ewram17810[gActiveBank].unk5 = 0;
+ ewram17810[gActiveBattler].unk5 = 0;
OpponentBufferExecCompleted();
}
}
void OpponentHandlecmd49(void)
{
- if (ewram17810[gActiveBank].unk0_0)
- gTasks[gUnknown_02024E68[gActiveBank]].func = sub_8044CA0;
+ if (ewram17810[gActiveBattler].unk0_0)
+ gTasks[gUnknown_02024E68[gActiveBattler]].func = sub_8044CA0;
OpponentBufferExecCompleted();
}
@@ -2321,25 +2321,25 @@ void OpponentHandlecmd50(void)
void OpponentHandleSpriteInvisibility(void)
{
- if (IsBankSpritePresent(gActiveBank) != 0)
+ if (IsBankSpritePresent(gActiveBattler) != 0)
{
- gSprites[gBankSpriteIds[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1];
- sub_8031F88(gActiveBank);
+ gSprites[gBankSpriteIds[gActiveBattler]].invisible = gBattleBufferA[gActiveBattler][1];
+ sub_8031F88(gActiveBattler);
}
OpponentBufferExecCompleted();
}
void OpponentHandleBattleAnimation(void)
{
- if (mplay_80342A4(gActiveBank) == 0)
+ if (mplay_80342A4(gActiveBattler) == 0)
{
- u8 r3 = gBattleBufferA[gActiveBank][1];
- u16 r4 = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8);
+ u8 r3 = gBattleBufferA[gActiveBattler][1];
+ u16 r4 = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8);
- if (move_anim_start_t3(gActiveBank, gActiveBank, gActiveBank, r3, r4) != 0)
+ if (move_anim_start_t3(gActiveBattler, gActiveBattler, gActiveBattler, r3, r4) != 0)
OpponentBufferExecCompleted();
else
- gBattleBankFunc[gActiveBank] = sub_80334C0;
+ gBattleBankFunc[gActiveBattler] = sub_80334C0;
}
}
diff --git a/src/battle/battle_controller_player.c b/src/battle/battle_controller_player.c
index 9f82a53b9..a83946554 100644
--- a/src/battle/battle_controller_player.c
+++ b/src/battle/battle_controller_player.c
@@ -43,13 +43,13 @@ extern u8 gBankAttacker;
extern u8 gBankTarget;
extern u32 gOamMatrixAllocBitmap;
extern u8 gUnknown_020297ED;
-extern u8 gActiveBank;
+extern u8 gActiveBattler;
extern u8 gActionSelectionCursor[];
extern u8 gDisplayedStringBattle[];
extern u8 gMoveSelectionCursor[];
extern u8 gBattleBufferA[][0x200];
extern u8 gBankInMenu;
-extern u16 gBattlePartyID[];
+extern u16 gBattlerPartyIndexes[];
extern u8 gHealthboxIDs[];
extern u8 gDoingBattleAnim;
extern u8 gBankSpriteIds[];
@@ -58,7 +58,7 @@ extern u8 gBattleOutcome;
extern void (*gAnimScriptCallback)(void);
extern bool8 gAnimScriptActive;
extern u16 gAnimMovePower;
-extern u32 gAnimMoveDmg;
+extern s32 gAnimMoveDmg;
extern u8 gAnimFriendship;
extern u16 gWeatherMoveAnim;
extern u32 gTransformedPersonalities[];
@@ -91,7 +91,7 @@ extern bool8 mplay_80342A4(u8);
extern void move_anim_start_t2_for_situation();
extern void bx_blink_t1(void);
extern void sub_8047858();
-extern u8 GetBankSide(u8);
+extern u8 GetBattlerSide(u8);
extern void StartBattleIntroAnim();
extern void oamt_add_pos2_onto_pos1();
extern void StartTranslateAnimSpriteByDeltas(struct Sprite *);
@@ -111,24 +111,24 @@ extern void sub_8031F24(void);
extern void sub_80324BC();
extern u8 sub_8031720();
extern void bx_wait_t1(void);
-extern u8 GetBankByIdentity(u8);
+extern u8 GetBattlerAtPosition(u8);
extern void sub_802DE10(void);
extern void sub_80105EC(struct Sprite *);
extern void sub_802D274(void);
extern void sub_802D23C(void);
-extern u8 GetBankIdentity(u8);
+extern u8 GetBattlerPosition(u8);
extern void LoadPlayerTrainerBankSprite();
extern void sub_80313A0(struct Sprite *);
extern void sub_802D204(void);
extern u8 sub_8079E90();
extern void sub_802DEAC(void);
extern void sub_80312F0(struct Sprite *);
-extern u8 GetBankPosition();
+extern u8 GetBattlerSpriteCoord();
extern u8 sub_8077F68();
extern u8 sub_8046400();
extern void sub_802D798(void);
extern void bx_0802E404(void);
-extern u8 gActiveBank;
+extern u8 gActiveBattler;
extern void (*gBattleBankFunc[])(void);
extern bool8 gDoingBattleAnim;
extern u16 gBattleTypeFlags;
@@ -137,10 +137,10 @@ extern u8 gBattleBufferA[][0x200];
extern u8 gBankSpriteIds[];
extern u8 gActionSelectionCursor[];
extern u8 gMoveSelectionCursor[];
-extern u8 gAbsentBankFlags;
+extern u8 gAbsentBattlerFlags;
extern u8 gUnknown_03004344;
-extern u8 gNoOfAllBanks;
-extern u16 gBattlePartyID[];
+extern u8 gBattlersCount;
+extern u16 gBattlerPartyIndexes[];
extern struct Window gUnknown_03004210;
extern const u8 BattleText_SwitchWhich[];
extern u8 gUnknown_03004348;
@@ -157,8 +157,8 @@ extern u8 gDisplayedStringBattle[];
extern const u8 BattleText_LinkStandby[];
extern void dp11b_obj_instanciate(u8, u8, s8, s8);
-extern u8 GetBankIdentity(u8);
-extern u8 GetBankByIdentity(u8);
+extern u8 GetBattlerPosition(u8);
+extern u8 GetBattlerAtPosition(u8);
extern void dp11b_obj_free(u8, u8);
extern void sub_8010520(struct Sprite *);
extern void sub_8010574(struct Sprite *);
@@ -326,32 +326,32 @@ void nullsub_91(void)
void SetBankFuncToPlayerBufferRunCommand(void)
{
- gBattleBankFunc[gActiveBank] = PlayerBufferRunCommand;
+ gBattleBankFunc[gActiveBattler] = PlayerBufferRunCommand;
gDoingBattleAnim = FALSE;
}
void PlayerBufferExecCompleted(void)
{
- gBattleBankFunc[gActiveBank] = PlayerBufferRunCommand;
+ gBattleBankFunc[gActiveBattler] = PlayerBufferRunCommand;
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{
u8 playerId = GetMultiplayerId();
PrepareBufferDataTransferLink(2, 4, &playerId);
- gBattleBufferA[gActiveBank][0] = 0x38;
+ gBattleBufferA[gActiveBattler][0] = 0x38;
}
else
{
- gBattleExecBuffer &= ~gBitTable[gActiveBank];
+ gBattleExecBuffer &= ~gBitTable[gActiveBattler];
}
}
void PlayerBufferRunCommand(void)
{
- if (gBattleExecBuffer & gBitTable[gActiveBank])
+ if (gBattleExecBuffer & gBitTable[gActiveBattler])
{
- if (gBattleBufferA[gActiveBank][0] < 0x39)
- gPlayerBufferCommands[gBattleBufferA[gActiveBank][0]]();
+ if (gBattleBufferA[gActiveBattler][0] < 0x39)
+ gPlayerBufferCommands[gBattleBufferA[gActiveBattler][0]]();
else
PlayerBufferExecCompleted();
}
@@ -359,23 +359,23 @@ void PlayerBufferRunCommand(void)
void bx_0802E404(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].pos2.x == 0)
+ if (gSprites[gBankSpriteIds[gActiveBattler]].pos2.x == 0)
PlayerBufferExecCompleted();
}
void sub_802C098(void)
{
- u16 itemId = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8);
+ u16 itemId = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8);
- dp11b_obj_instanciate(gActiveBank, 1, 7, 1);
- dp11b_obj_instanciate(gActiveBank, 0, 7, 1);
+ dp11b_obj_instanciate(gActiveBattler, 1, 7, 1);
+ dp11b_obj_instanciate(gActiveBattler, 0, 7, 1);
if (gMain.newKeys & A_BUTTON)
{
PlaySE(SE_SELECT);
DestroyMenuCursor();
// Useless switch statement.
- switch (gActionSelectionCursor[gActiveBank])
+ switch (gActionSelectionCursor[gActiveBattler])
{
case 0:
Emitcmd33(1, 0, 0);
@@ -394,52 +394,52 @@ void sub_802C098(void)
}
else if (gMain.newKeys & DPAD_LEFT)
{
- if (gActionSelectionCursor[gActiveBank] & 1)
+ if (gActionSelectionCursor[gActiveBattler] & 1)
{
PlaySE(SE_SELECT);
- nullsub_8(gActionSelectionCursor[gActiveBank]);
- gActionSelectionCursor[gActiveBank] ^= 1;
- sub_802E3E4(gActionSelectionCursor[gActiveBank], 0);
+ nullsub_8(gActionSelectionCursor[gActiveBattler]);
+ gActionSelectionCursor[gActiveBattler] ^= 1;
+ sub_802E3E4(gActionSelectionCursor[gActiveBattler], 0);
}
}
else if (gMain.newKeys & DPAD_RIGHT)
{
- if (!(gActionSelectionCursor[gActiveBank] & 1))
+ if (!(gActionSelectionCursor[gActiveBattler] & 1))
{
PlaySE(SE_SELECT);
- nullsub_8(gActionSelectionCursor[gActiveBank]);
- gActionSelectionCursor[gActiveBank] ^= 1;
- sub_802E3E4(gActionSelectionCursor[gActiveBank], 0);
+ nullsub_8(gActionSelectionCursor[gActiveBattler]);
+ gActionSelectionCursor[gActiveBattler] ^= 1;
+ sub_802E3E4(gActionSelectionCursor[gActiveBattler], 0);
}
}
else if (gMain.newKeys & DPAD_UP)
{
- if (gActionSelectionCursor[gActiveBank] & 2)
+ if (gActionSelectionCursor[gActiveBattler] & 2)
{
PlaySE(SE_SELECT);
- nullsub_8(gActionSelectionCursor[gActiveBank]);
- gActionSelectionCursor[gActiveBank] ^= 2;
- sub_802E3E4(gActionSelectionCursor[gActiveBank], 0);
+ nullsub_8(gActionSelectionCursor[gActiveBattler]);
+ gActionSelectionCursor[gActiveBattler] ^= 2;
+ sub_802E3E4(gActionSelectionCursor[gActiveBattler], 0);
}
}
else if (gMain.newKeys & DPAD_DOWN)
{
- if (!(gActionSelectionCursor[gActiveBank] & 2))
+ if (!(gActionSelectionCursor[gActiveBattler] & 2))
{
PlaySE(SE_SELECT);
- nullsub_8(gActionSelectionCursor[gActiveBank]);
- gActionSelectionCursor[gActiveBank] ^= 2;
- sub_802E3E4(gActionSelectionCursor[gActiveBank], 0);
+ nullsub_8(gActionSelectionCursor[gActiveBattler]);
+ gActionSelectionCursor[gActiveBattler] ^= 2;
+ sub_802E3E4(gActionSelectionCursor[gActiveBattler], 0);
}
}
else if (gMain.newKeys & B_BUTTON)
{
if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
- && GetBankIdentity(gActiveBank) == 2
- && !(gAbsentBankFlags & gBitTable[GetBankByIdentity(0)])
+ && GetBattlerPosition(gActiveBattler) == 2
+ && !(gAbsentBattlerFlags & gBitTable[GetBattlerAtPosition(0)])
&& !(gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
- if (gBattleBufferA[gActiveBank][1] == 1)
+ if (gBattleBufferA[gActiveBattler][1] == 1)
{
// Add item to bag if it is a ball
if (itemId <= ITEM_PREMIER_BALL)
@@ -461,9 +461,9 @@ void sub_802C098(void)
void unref_sub_802C2B8(void)
{
- dp11b_obj_free(gActiveBank, 1);
- dp11b_obj_free(gActiveBank, 0);
- gBattleBankFunc[gActiveBank] = sub_802C2EC;
+ dp11b_obj_free(gActiveBattler, 1);
+ dp11b_obj_free(gActiveBattler, 0);
+ gBattleBankFunc[gActiveBattler] = sub_802C2EC;
}
// TODO: fix this function
@@ -474,21 +474,21 @@ void sub_802C2EC(void)
dp11b_obj_instanciate(gUnknown_03004344, 1, 15, 1);
i = 0;
- if (gNoOfAllBanks != 0)
+ if (gBattlersCount != 0)
{
do
{
if (i != gUnknown_03004344)
dp11b_obj_free(i, 1);
i++;
- } while (i < gNoOfAllBanks);
+ } while (i < gBattlersCount);
}
if (gMain.newKeys & A_BUTTON)
{
DestroyMenuCursor();
PlaySE(SE_SELECT);
gSprites[gBankSpriteIds[gUnknown_03004344]].callback = sub_8010574;
- Emitcmd33(1, 10, gMoveSelectionCursor[gActiveBank] | (gUnknown_03004344 << 8));
+ Emitcmd33(1, 10, gMoveSelectionCursor[gActiveBattler] | (gUnknown_03004344 << 8));
dp11b_obj_free(gUnknown_03004344, 1);
PlayerBufferExecCompleted();
}
@@ -497,9 +497,9 @@ void sub_802C2EC(void)
{
PlaySE(SE_SELECT);
gSprites[gBankSpriteIds[gUnknown_03004344]].callback = sub_8010574;
- gBattleBankFunc[gActiveBank] = sub_802C68C;
- dp11b_obj_instanciate(gActiveBank, 1, 7, 1);
- dp11b_obj_instanciate(gActiveBank, 0, 7, 1);
+ gBattleBankFunc[gActiveBattler] = sub_802C68C;
+ dp11b_obj_instanciate(gActiveBattler, 1, 7, 1);
+ dp11b_obj_instanciate(gActiveBattler, 0, 7, 1);
dp11b_obj_free(gUnknown_03004344, 1);
}
else if (gMain.newKeys & 0x60)
@@ -508,7 +508,7 @@ void sub_802C2EC(void)
gSprites[gBankSpriteIds[gUnknown_03004344]].callback = sub_8010574;
do
{
- u8 var = GetBankIdentity(gUnknown_03004344);
+ u8 var = GetBattlerPosition(gUnknown_03004344);
for (i = 0; i < 4; i++)
{
@@ -520,19 +520,19 @@ void sub_802C2EC(void)
i--;
if (i < 0)
i = 3;
- gUnknown_03004344 = GetBankByIdentity(arr[i]);
- } while(gUnknown_03004344 == gNoOfAllBanks);
+ gUnknown_03004344 = GetBattlerAtPosition(arr[i]);
+ } while(gUnknown_03004344 == gBattlersCount);
i = 0;
- switch (GetBankIdentity(gUnknown_03004344))
+ switch (GetBattlerPosition(gUnknown_03004344))
{
case 0:
case 2:
- if (gActiveBank == gUnknown_03004344)
+ if (gActiveBattler == gUnknown_03004344)
{
u32 moveId;
asm("":::"memory");
- moveId = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MOVE1 + gMoveSelectionCursor[gActiveBank]);
+ moveId = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MOVE1 + gMoveSelectionCursor[gActiveBattler]);
if (!(gBattleMoves[moveId].target & 2))
break;
}
@@ -543,7 +543,7 @@ void sub_802C2EC(void)
i++;
}
//_0802C500
- if (gAbsentBankFlags & gBitTable[gUnknown_03004344])
+ if (gAbsentBattlerFlags & gBitTable[gUnknown_03004344])
i = 0;
} while (i == 0);
gSprites[gBankSpriteIds[gUnknown_03004344]].callback = sub_8010520;
@@ -555,7 +555,7 @@ void sub_802C2EC(void)
gSprites[gBankSpriteIds[gUnknown_03004344]].callback = sub_8010574;
do
{
- u8 var = GetBankIdentity(gUnknown_03004344);
+ u8 var = GetBattlerPosition(gUnknown_03004344);
for (i = 0; i < 4; i++)
{
@@ -567,19 +567,19 @@ void sub_802C2EC(void)
i++;
if (i > 3)
i = 0;
- gUnknown_03004344 = GetBankByIdentity(arr[i]);
- } while (gUnknown_03004344 == gNoOfAllBanks);
+ gUnknown_03004344 = GetBattlerAtPosition(arr[i]);
+ } while (gUnknown_03004344 == gBattlersCount);
i = 0;
- switch (GetBankIdentity(gUnknown_03004344))
+ switch (GetBattlerPosition(gUnknown_03004344))
{
case 0:
case 2:
- if (gActiveBank == gUnknown_03004344)
+ if (gActiveBattler == gUnknown_03004344)
{
u32 moveId;
asm("":::"memory");
- moveId = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MOVE1 + gMoveSelectionCursor[gActiveBank]);
+ moveId = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MOVE1 + gMoveSelectionCursor[gActiveBattler]);
if (!(gBattleMoves[moveId].target & 2))
break;
}
@@ -589,7 +589,7 @@ void sub_802C2EC(void)
case 3:
i++;
}
- if (gAbsentBankFlags & gBitTable[gUnknown_03004344])
+ if (gAbsentBattlerFlags & gBitTable[gUnknown_03004344])
i = 0;
} while (i == 0);
gSprites[gBankSpriteIds[gUnknown_03004344]].callback = sub_8010520;
@@ -602,7 +602,7 @@ struct ChooseMoveStruct
u8 pp[4];
u8 unkC[0x12-0xC];
u8 unk12;
- u8 unk13;
+ u8 effectStringId;
u8 filler14[0x20-0x14];
};
@@ -616,7 +616,7 @@ void sub_802C68C(void)
#if DEBUG
u8 count = 0;
#endif
- struct ChooseMoveStruct *r6 = (struct ChooseMoveStruct *)(gBattleBufferA[gActiveBank] + 4);
+ struct ChooseMoveStruct *r6 = (struct ChooseMoveStruct *)(gBattleBufferA[gActiveBattler] + 4);
if (gMain.newKeys & A_BUTTON)
{
@@ -624,50 +624,50 @@ void sub_802C68C(void)
PlaySE(SE_SELECT);
- if (r6->moves[gMoveSelectionCursor[gActiveBank]] == MOVE_CURSE)
- r4 = (r6->unk12 != TYPE_GHOST && (r6->unk13 ^ 7)) ? 0x10 : 0;
+ if (r6->moves[gMoveSelectionCursor[gActiveBattler]] == MOVE_CURSE)
+ r4 = (r6->unk12 != TYPE_GHOST && (r6->effectStringId ^ 7)) ? 0x10 : 0;
else
- r4 = gBattleMoves[r6->moves[gMoveSelectionCursor[gActiveBank]]].target;
+ r4 = gBattleMoves[r6->moves[gMoveSelectionCursor[gActiveBattler]]].target;
if (r4 & 0x10)
- gUnknown_03004344 = gActiveBank;
+ gUnknown_03004344 = gActiveBattler;
else
- gUnknown_03004344 = GetBankByIdentity((GetBankIdentity(gActiveBank) & 1) ^ 1);
+ gUnknown_03004344 = GetBattlerAtPosition((GetBattlerPosition(gActiveBattler) & 1) ^ 1);
- if (gBattleBufferA[gActiveBank][1] == 0)
+ if (gBattleBufferA[gActiveBattler][1] == 0)
{
- if ((r4 & 2) && gBattleBufferA[gActiveBank][2] == 0)
+ if ((r4 & 2) && gBattleBufferA[gActiveBattler][2] == 0)
r8++;
}
else
{
if (!(r4 & 0x7D))
r8++;
- if (r6->pp[gMoveSelectionCursor[gActiveBank]] == 0)
+ if (r6->pp[gMoveSelectionCursor[gActiveBattler]] == 0)
{
r8 = 0;
}
else if (!(r4 & 0x12) && CountAliveMons(0) <= 1)
{
- gUnknown_03004344 = sub_803C434(gActiveBank);
+ gUnknown_03004344 = sub_803C434(gActiveBattler);
r8 = 0;
}
}
if (r8 == 0)
{
DestroyMenuCursor();
- Emitcmd33(1, 10, gMoveSelectionCursor[gActiveBank] | (gUnknown_03004344 << 8));
+ Emitcmd33(1, 10, gMoveSelectionCursor[gActiveBattler] | (gUnknown_03004344 << 8));
PlayerBufferExecCompleted();
}
else
{
- gBattleBankFunc[gActiveBank] = sub_802C2EC;
+ gBattleBankFunc[gActiveBattler] = sub_802C2EC;
if (r4 & 0x12)
- gUnknown_03004344 = gActiveBank;
- else if (gAbsentBankFlags & gBitTable[GetBankByIdentity(1)])
- gUnknown_03004344 = GetBankByIdentity(3);
+ gUnknown_03004344 = gActiveBattler;
+ else if (gAbsentBattlerFlags & gBitTable[GetBattlerAtPosition(1)])
+ gUnknown_03004344 = GetBattlerAtPosition(3);
else
- gUnknown_03004344 = GetBankByIdentity(1);
+ gUnknown_03004344 = GetBattlerAtPosition(1);
gSprites[gBankSpriteIds[gUnknown_03004344]].callback = sub_8010520;
}
}
@@ -682,50 +682,50 @@ void sub_802C68C(void)
}
else if (gMain.newKeys & DPAD_LEFT)
{
- if (gMoveSelectionCursor[gActiveBank] & 1)
+ if (gMoveSelectionCursor[gActiveBattler] & 1)
{
- nullsub_7(gMoveSelectionCursor[gActiveBank]);
- gMoveSelectionCursor[gActiveBank] ^= 1;
+ nullsub_7(gMoveSelectionCursor[gActiveBattler]);
+ gMoveSelectionCursor[gActiveBattler] ^= 1;
PlaySE(SE_SELECT);
- sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0);
+ sub_802E3B4(gMoveSelectionCursor[gActiveBattler], 0);
sub_802E220();
sub_802E2D4();
}
}
else if (gMain.newKeys & DPAD_RIGHT)
{
- if (!(gMoveSelectionCursor[gActiveBank] & 1)
- && (gMoveSelectionCursor[gActiveBank] ^ 1) < gUnknown_03004348)
+ if (!(gMoveSelectionCursor[gActiveBattler] & 1)
+ && (gMoveSelectionCursor[gActiveBattler] ^ 1) < gUnknown_03004348)
{
- nullsub_7(gMoveSelectionCursor[gActiveBank]);
- gMoveSelectionCursor[gActiveBank] ^= 1;
+ nullsub_7(gMoveSelectionCursor[gActiveBattler]);
+ gMoveSelectionCursor[gActiveBattler] ^= 1;
PlaySE(SE_SELECT);
- sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0);
+ sub_802E3B4(gMoveSelectionCursor[gActiveBattler], 0);
sub_802E220();
sub_802E2D4();
}
}
else if (gMain.newKeys & DPAD_UP)
{
- if (gMoveSelectionCursor[gActiveBank] & 2)
+ if (gMoveSelectionCursor[gActiveBattler] & 2)
{
- nullsub_7(gMoveSelectionCursor[gActiveBank]);
- gMoveSelectionCursor[gActiveBank] ^= 2;
+ nullsub_7(gMoveSelectionCursor[gActiveBattler]);
+ gMoveSelectionCursor[gActiveBattler] ^= 2;
PlaySE(SE_SELECT);
- sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0);
+ sub_802E3B4(gMoveSelectionCursor[gActiveBattler], 0);
sub_802E220();
sub_802E2D4();
}
}
else if (gMain.newKeys & DPAD_DOWN)
{
- if (!(gMoveSelectionCursor[gActiveBank] & 2)
- && (gMoveSelectionCursor[gActiveBank] ^ 2) < gUnknown_03004348)
+ if (!(gMoveSelectionCursor[gActiveBattler] & 2)
+ && (gMoveSelectionCursor[gActiveBattler] ^ 2) < gUnknown_03004348)
{
- nullsub_7(gMoveSelectionCursor[gActiveBank]);
- gMoveSelectionCursor[gActiveBank] ^= 2;
+ nullsub_7(gMoveSelectionCursor[gActiveBattler]);
+ gMoveSelectionCursor[gActiveBattler] ^= 2;
PlaySE(SE_SELECT);
- sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0);
+ sub_802E3B4(gMoveSelectionCursor[gActiveBattler], 0);
sub_802E220();
sub_802E2D4();
}
@@ -734,16 +734,16 @@ void sub_802C68C(void)
{
if (gUnknown_03004348 > 1 && !(gBattleTypeFlags & BATTLE_TYPE_LINK))
{
- sub_802E12C(gMoveSelectionCursor[gActiveBank], gUnknown_081FAE80);
- if (gMoveSelectionCursor[gActiveBank] != 0)
+ sub_802E12C(gMoveSelectionCursor[gActiveBattler], gUnknown_081FAE80);
+ if (gMoveSelectionCursor[gActiveBattler] != 0)
gUnknown_03004344 = 0;
else
- gUnknown_03004344 = gMoveSelectionCursor[gActiveBank] + 1;
+ gUnknown_03004344 = gMoveSelectionCursor[gActiveBattler] + 1;
sub_802E3B4(gUnknown_03004344, 27);
Text_FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A);
Text_InitWindow(&gUnknown_03004210, BattleText_SwitchWhich, 0x290, 0x17, 0x37);
Text_PrintWindow8002F44(&gUnknown_03004210);
- gBattleBankFunc[gActiveBank] = sub_802CA60;
+ gBattleBankFunc[gActiveBattler] = sub_802CA60;
}
}
#if DEBUG
@@ -753,11 +753,11 @@ void sub_802C68C(void)
s32 i;
Text_FillWindowRect(&gUnknown_03004210, 0x1016, 1, 0x37, 16, 0x3A);
- moveName = gMoveNames[GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MOVE1)];
+ moveName = gMoveNames[GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MOVE1)];
Text_InitWindowAndPrintText(&gUnknown_03004210, moveName, 0x100, 2, 0x37);
ConvertIntToDecimalStringN(
gDisplayedStringBattle,
- GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MOVE1),
+ GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MOVE1),
2, 3);
Text_InitWindowAndPrintText(&gUnknown_03004210, gDisplayedStringBattle, 0x110, 10, 0x37);
Text_InitWindowAndPrintText(&gUnknown_03004210, gString_TurnJP, 0x116, 1, 0x39);
@@ -780,7 +780,7 @@ void sub_802C68C(void)
}
ConvertIntToDecimalStringN(gDisplayedStringBattle, count, 2, 2);
Text_InitWindowAndPrintText(&gUnknown_03004210, gDisplayedStringBattle, 0x12A, 14, 0x39);
- gBattleBankFunc[gActiveBank] = debug_sub_8030C24;
+ gBattleBankFunc[gActiveBattler] = debug_sub_8030C24;
}
#endif
}
@@ -802,69 +802,69 @@ void sub_802CA60(void)
if (gMain.newKeys & (A_BUTTON | SELECT_BUTTON))
{
PlaySE(SE_SELECT);
- if (gMoveSelectionCursor[gActiveBank] != gUnknown_03004344)
+ if (gMoveSelectionCursor[gActiveBattler] != gUnknown_03004344)
{
- struct ChooseMoveStruct *r9 = (struct ChooseMoveStruct *)&gBattleBufferA[gActiveBank][4];
+ struct ChooseMoveStruct *r9 = (struct ChooseMoveStruct *)&gBattleBufferA[gActiveBattler][4];
s32 i;
- i = r9->moves[gMoveSelectionCursor[gActiveBank]];
- r9->moves[gMoveSelectionCursor[gActiveBank]] = r9->moves[gUnknown_03004344];
+ i = r9->moves[gMoveSelectionCursor[gActiveBattler]];
+ r9->moves[gMoveSelectionCursor[gActiveBattler]] = r9->moves[gUnknown_03004344];
r9->moves[gUnknown_03004344] = i;
- i = r9->pp[gMoveSelectionCursor[gActiveBank]];
- r9->pp[gMoveSelectionCursor[gActiveBank]] = r9->pp[gUnknown_03004344];
+ i = r9->pp[gMoveSelectionCursor[gActiveBattler]];
+ r9->pp[gMoveSelectionCursor[gActiveBattler]] = r9->pp[gUnknown_03004344];
r9->pp[gUnknown_03004344] = i;
- i = r9->unkC[gMoveSelectionCursor[gActiveBank]];
- r9->unkC[gMoveSelectionCursor[gActiveBank]] = r9->unkC[gUnknown_03004344];
+ i = r9->unkC[gMoveSelectionCursor[gActiveBattler]];
+ r9->unkC[gMoveSelectionCursor[gActiveBattler]] = r9->unkC[gUnknown_03004344];
r9->unkC[gUnknown_03004344] = i;
- if (gDisableStructs[gActiveBank].unk18_b & gBitTable[gMoveSelectionCursor[gActiveBank]])
+ if (gDisableStructs[gActiveBattler].unk18_b & gBitTable[gMoveSelectionCursor[gActiveBattler]])
{
- gDisableStructs[gActiveBank].unk18_b &= ~gBitTable[gMoveSelectionCursor[gActiveBank]];
- gDisableStructs[gActiveBank].unk18_b |= gBitTable[gUnknown_03004344];
+ gDisableStructs[gActiveBattler].unk18_b &= ~gBitTable[gMoveSelectionCursor[gActiveBattler]];
+ gDisableStructs[gActiveBattler].unk18_b |= gBitTable[gUnknown_03004344];
}
sub_802E1B0();
for (i = 0; i < 4; i++)
- perMovePPBonuses[i] = (gBattleMons[gActiveBank].ppBonuses & (3 << (i * 2))) >> (i * 2);
- totalPPBonuses = perMovePPBonuses[gMoveSelectionCursor[gActiveBank]];
- perMovePPBonuses[gMoveSelectionCursor[gActiveBank]] = perMovePPBonuses[gUnknown_03004344];
+ perMovePPBonuses[i] = (gBattleMons[gActiveBattler].ppBonuses & (3 << (i * 2))) >> (i * 2);
+ totalPPBonuses = perMovePPBonuses[gMoveSelectionCursor[gActiveBattler]];
+ perMovePPBonuses[gMoveSelectionCursor[gActiveBattler]] = perMovePPBonuses[gUnknown_03004344];
perMovePPBonuses[gUnknown_03004344] = totalPPBonuses;
totalPPBonuses = 0;
for (i = 0; i < 4; i++)
totalPPBonuses |= perMovePPBonuses[i] << (i * 2);
- gBattleMons[gActiveBank].ppBonuses = totalPPBonuses;
+ gBattleMons[gActiveBattler].ppBonuses = totalPPBonuses;
for (i = 0; i < 4; i++)
{
- gBattleMons[gActiveBank].moves[i] = r9->moves[i];
- gBattleMons[gActiveBank].pp[i] = r9->pp[i];
+ gBattleMons[gActiveBattler].moves[i] = r9->moves[i];
+ gBattleMons[gActiveBattler].pp[i] = r9->pp[i];
}
- if (!(gBattleMons[gActiveBank].status2 & 0x200000))
+ if (!(gBattleMons[gActiveBattler].status2 & 0x200000))
{
for (i = 0; i < 4; i++)
{
- sp0.moves[i] = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MOVE1 + i);
- sp0.pp[i] = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_PP1 + i);
+ sp0.moves[i] = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MOVE1 + i);
+ sp0.pp[i] = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_PP1 + i);
}
- totalPPBonuses = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_PP_BONUSES);
+ totalPPBonuses = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_PP_BONUSES);
for (i = 0; i < 4; i++)
perMovePPBonuses[i] = (totalPPBonuses & (3 << (i * 2))) >> (i * 2);
- i = sp0.moves[gMoveSelectionCursor[gActiveBank]];
- sp0.moves[gMoveSelectionCursor[gActiveBank]] = sp0.moves[gUnknown_03004344];
+ i = sp0.moves[gMoveSelectionCursor[gActiveBattler]];
+ sp0.moves[gMoveSelectionCursor[gActiveBattler]] = sp0.moves[gUnknown_03004344];
sp0.moves[gUnknown_03004344] = i;
- i = sp0.pp[gMoveSelectionCursor[gActiveBank]];
- sp0.pp[gMoveSelectionCursor[gActiveBank]] = sp0.pp[gUnknown_03004344];
+ i = sp0.pp[gMoveSelectionCursor[gActiveBattler]];
+ sp0.pp[gMoveSelectionCursor[gActiveBattler]] = sp0.pp[gUnknown_03004344];
sp0.pp[gUnknown_03004344] = i;
- totalPPBonuses = perMovePPBonuses[gMoveSelectionCursor[gActiveBank]];
- perMovePPBonuses[gMoveSelectionCursor[gActiveBank]] = perMovePPBonuses[gUnknown_03004344];
+ totalPPBonuses = perMovePPBonuses[gMoveSelectionCursor[gActiveBattler]];
+ perMovePPBonuses[gMoveSelectionCursor[gActiveBattler]] = perMovePPBonuses[gUnknown_03004344];
perMovePPBonuses[gUnknown_03004344] = totalPPBonuses;
totalPPBonuses = 0;
@@ -873,19 +873,19 @@ void sub_802CA60(void)
for (i = 0; i < 4; i++)
{
- SetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MOVE1 + i, &sp0.moves[i]);
- SetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_PP1 + i, &sp0.pp[i]);
+ SetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MOVE1 + i, &sp0.moves[i]);
+ SetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_PP1 + i, &sp0.pp[i]);
}
- SetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_PP_BONUSES, &totalPPBonuses);
+ SetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_PP_BONUSES, &totalPPBonuses);
}
}
else
{
sub_802E12C(gUnknown_03004344, BattleText_Format);
}
- gBattleBankFunc[gActiveBank] = sub_802C68C;
- gMoveSelectionCursor[gActiveBank] = gUnknown_03004344;
- sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0);
+ gBattleBankFunc[gActiveBattler] = sub_802C68C;
+ gMoveSelectionCursor[gActiveBattler] = gUnknown_03004344;
+ sub_802E3B4(gMoveSelectionCursor[gActiveBattler], 0);
Text_FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A);
Text_InitWindow(&gUnknown_03004210, BattleText_PP, 0x290, 0x17, 0x37);
Text_PrintWindow8002F44(&gUnknown_03004210);
@@ -896,9 +896,9 @@ void sub_802CA60(void)
{
PlaySE(SE_SELECT);
nullsub_7(gUnknown_03004344);
- sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0);
- sub_802E12C(gMoveSelectionCursor[gActiveBank], BattleText_Format);
- gBattleBankFunc[gActiveBank] = sub_802C68C;
+ sub_802E3B4(gMoveSelectionCursor[gActiveBattler], 0);
+ sub_802E12C(gMoveSelectionCursor[gActiveBattler], BattleText_Format);
+ gBattleBankFunc[gActiveBattler] = sub_802C68C;
Text_FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A);
Text_InitWindow(&gUnknown_03004210, BattleText_PP, 0x290, 0x17, 0x37);
Text_PrintWindow8002F44(&gUnknown_03004210);
@@ -907,52 +907,52 @@ void sub_802CA60(void)
}
if ((gMain.newKeys & DPAD_LEFT) && (gUnknown_03004344 & 1))
{
- if (gUnknown_03004344 == gMoveSelectionCursor[gActiveBank])
- sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0x1D);
+ if (gUnknown_03004344 == gMoveSelectionCursor[gActiveBattler])
+ sub_802E3B4(gMoveSelectionCursor[gActiveBattler], 0x1D);
else
nullsub_7(gUnknown_03004344);
gUnknown_03004344 ^= 1;
PlaySE(SE_SELECT);
- if (gUnknown_03004344 == gMoveSelectionCursor[gActiveBank])
+ if (gUnknown_03004344 == gMoveSelectionCursor[gActiveBattler])
sub_802E3B4(gUnknown_03004344, 0);
else
sub_802E3B4(gUnknown_03004344, 0x1B);
}
if ((gMain.newKeys & DPAD_RIGHT) && !(gUnknown_03004344 & 1) && (gUnknown_03004344 ^ 1) < gUnknown_03004348)
{
- if (gUnknown_03004344 == gMoveSelectionCursor[gActiveBank])
- sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0x1D);
+ if (gUnknown_03004344 == gMoveSelectionCursor[gActiveBattler])
+ sub_802E3B4(gMoveSelectionCursor[gActiveBattler], 0x1D);
else
nullsub_7(gUnknown_03004344);
gUnknown_03004344 ^= 1;
PlaySE(SE_SELECT);
- if (gUnknown_03004344 == gMoveSelectionCursor[gActiveBank])
+ if (gUnknown_03004344 == gMoveSelectionCursor[gActiveBattler])
sub_802E3B4(gUnknown_03004344, 0);
else
sub_802E3B4(gUnknown_03004344, 0x1B);
}
if ((gMain.newKeys & DPAD_UP) && (gUnknown_03004344 & 2))
{
- if (gUnknown_03004344 == gMoveSelectionCursor[gActiveBank])
- sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0x1D);
+ if (gUnknown_03004344 == gMoveSelectionCursor[gActiveBattler])
+ sub_802E3B4(gMoveSelectionCursor[gActiveBattler], 0x1D);
else
nullsub_7(gUnknown_03004344);
gUnknown_03004344 ^= 2;
PlaySE(SE_SELECT);
- if (gUnknown_03004344 == gMoveSelectionCursor[gActiveBank])
+ if (gUnknown_03004344 == gMoveSelectionCursor[gActiveBattler])
sub_802E3B4(gUnknown_03004344, 0);
else
sub_802E3B4(gUnknown_03004344, 0x1B);
}
if ((gMain.newKeys & DPAD_DOWN) && !(gUnknown_03004344 & 2) && (gUnknown_03004344 ^ 2) < gUnknown_03004348)
{
- if (gUnknown_03004344 == gMoveSelectionCursor[gActiveBank])
- sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0x1D);
+ if (gUnknown_03004344 == gMoveSelectionCursor[gActiveBattler])
+ sub_802E3B4(gMoveSelectionCursor[gActiveBattler], 0x1D);
else
nullsub_7(gUnknown_03004344);
gUnknown_03004344 ^= 2;
PlaySE(SE_SELECT);
- if (gUnknown_03004344 == gMoveSelectionCursor[gActiveBank])
+ if (gUnknown_03004344 == gMoveSelectionCursor[gActiveBattler])
sub_802E3B4(gUnknown_03004344, 0);
else
sub_802E3B4(gUnknown_03004344, 0x1B);
@@ -977,7 +977,7 @@ void sub_802D18C(void)
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{
sub_800832C();
- gBattleBankFunc[gActiveBank] = sub_802D148;
+ gBattleBankFunc[gActiveBattler] = sub_802D148;
}
else
{
@@ -995,48 +995,48 @@ void debug_sub_803107C(void);
void debug_sub_8030C24(void)
{
- s16 move = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MOVE1);
+ s16 move = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MOVE1);
switch (gMain.newAndRepeatedKeys)
{
case START_BUTTON:
- dp11b_obj_free(gActiveBank, 1);
- dp11b_obj_free(gActiveBank, 0);
- gBankAttacker = gActiveBank;
+ dp11b_obj_free(gActiveBattler, 1);
+ dp11b_obj_free(gActiveBattler, 0);
+ gBankAttacker = gActiveBattler;
if ((gMain.heldKeysRaw & B_BUTTON) && (gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
gBankTarget = gBankAttacker ^ 2;
else if ((gMain.heldKeysRaw & A_BUTTON) && (gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
- gBankTarget = GetBankByIdentity(3);
+ gBankTarget = GetBattlerAtPosition(3);
else
- gBankTarget = GetBankByIdentity(1);
+ gBankTarget = GetBattlerAtPosition(1);
sub_80326EC(0);
DoMoveAnim(move);
- gBattleBankFunc[gActiveBank] = debug_sub_803107C;
+ gBattleBankFunc[gActiveBattler] = debug_sub_803107C;
break;
case SELECT_BUTTON:
- dp11b_obj_free(gActiveBank, 1);
- dp11b_obj_free(gActiveBank, 0);
- gBankTarget = gActiveBank;
+ dp11b_obj_free(gActiveBattler, 1);
+ dp11b_obj_free(gActiveBattler, 0);
+ gBankTarget = gActiveBattler;
if ((gMain.heldKeysRaw & B_BUTTON) && (gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
gBankAttacker = gBankTarget ^ 2;
else if ((gMain.heldKeysRaw & A_BUTTON) && (gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
- gBankAttacker = GetBankByIdentity(3);
+ gBankAttacker = GetBattlerAtPosition(3);
else
- gBankAttacker = GetBankByIdentity(1);
+ gBankAttacker = GetBattlerAtPosition(1);
sub_80326EC(0);
DoMoveAnim(move);
- gBattleBankFunc[gActiveBank] = debug_sub_803107C;
+ gBattleBankFunc[gActiveBattler] = debug_sub_803107C;
break;
case R_BUTTON:
if ((gMain.heldKeysRaw & B_BUTTON) && (gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
{
- dp11b_obj_free(gActiveBank, 1);
- dp11b_obj_free(gActiveBank, 0);
- gBankAttacker = GetBankByIdentity(3);
- gBankTarget = GetBankByIdentity(1);
+ dp11b_obj_free(gActiveBattler, 1);
+ dp11b_obj_free(gActiveBattler, 0);
+ gBankAttacker = GetBattlerAtPosition(3);
+ gBankTarget = GetBattlerAtPosition(1);
sub_80326EC(0);
DoMoveAnim(move);
- gBattleBankFunc[gActiveBank] = debug_sub_803107C;
+ gBattleBankFunc[gActiveBattler] = debug_sub_803107C;
}
else
{
@@ -1044,8 +1044,8 @@ void debug_sub_8030C24(void)
case DPAD_RIGHT:
if (++move > 354)
move = 1;
- SetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MOVE1, &move);
- gBattleMons[gActiveBank].moves[0] = move;
+ SetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MOVE1, &move);
+ gBattleMons[gActiveBattler].moves[0] = move;
Text_FillWindowRect(&gUnknown_03004210, 0x1016, 1, 0x37, 16, 0x38);
Text_InitWindowAndPrintText(&gUnknown_03004210, gMoveNames[move], 0x100, 2, 0x37);
ConvertIntToDecimalStringN(gDisplayedStringBattle, move, 2, 3);
@@ -1055,13 +1055,13 @@ void debug_sub_8030C24(void)
case L_BUTTON:
if ((gMain.heldKeysRaw & B_BUTTON) && (gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
{
- dp11b_obj_free(gActiveBank, 1);
- dp11b_obj_free(gActiveBank, 0);
- gBankAttacker = GetBankByIdentity(1);
- gBankTarget = GetBankByIdentity(3);
+ dp11b_obj_free(gActiveBattler, 1);
+ dp11b_obj_free(gActiveBattler, 0);
+ gBankAttacker = GetBattlerAtPosition(1);
+ gBankTarget = GetBattlerAtPosition(3);
sub_80326EC(0);
DoMoveAnim(move);
- gBattleBankFunc[gActiveBank] = debug_sub_803107C;
+ gBattleBankFunc[gActiveBattler] = debug_sub_803107C;
}
else
{
@@ -1069,8 +1069,8 @@ void debug_sub_8030C24(void)
case DPAD_LEFT:
if (--move <= 0)
move = 354;
- SetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MOVE1, &move);
- gBattleMons[gActiveBank].moves[0] = move;
+ SetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MOVE1, &move);
+ gBattleMons[gActiveBattler].moves[0] = move;
Text_FillWindowRect(&gUnknown_03004210, 0x1016, 1, 0x37, 16, 0x38);
Text_InitWindowAndPrintText(&gUnknown_03004210, gMoveNames[move], 0x100, 2, 0x37);
ConvertIntToDecimalStringN(gDisplayedStringBattle, move, 2, 3);
@@ -1096,7 +1096,7 @@ void debug_sub_8030C24(void)
for (i = 0; i < 4; i++)
{
StringCopy(gDisplayedStringBattle, BattleText_Format);
- move = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MOVE1 + i);
+ move = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MOVE1 + i);
StringAppend(gDisplayedStringBattle, gMoveNames[move]);
Text_InitWindow(
&gUnknown_03004210,
@@ -1106,7 +1106,7 @@ void debug_sub_8030C24(void)
(i < 2) ? 0x37 : 0x39);
Text_PrintWindow8002F44(&gUnknown_03004210);
}
- gBattleBankFunc[gActiveBank] = sub_802C68C;
+ gBattleBankFunc[gActiveBattler] = sub_802C68C;
}
}
@@ -1120,8 +1120,8 @@ void debug_sub_803107C(void)
s32 i;
sub_80326EC(1);
- dp11b_obj_instanciate(gActiveBank, 1, 7, 1);
- dp11b_obj_instanciate(gActiveBank, 0, 7, 1);
+ dp11b_obj_instanciate(gActiveBattler, 1, 7, 1);
+ dp11b_obj_instanciate(gActiveBattler, 0, 7, 1);
for (i = 0, count = 0; i < MAX_SPRITES; i++)
{
@@ -1143,7 +1143,7 @@ void debug_sub_803107C(void)
ConvertIntToDecimalStringN(gDisplayedStringBattle, count, 2, 2);
Text_InitWindowAndPrintText(&gUnknown_03004210, gDisplayedStringBattle, 298, 14, 0x39);
- gBattleBankFunc[gActiveBank] = debug_sub_8030C24;
+ gBattleBankFunc[gActiveBattler] = debug_sub_8030C24;
}
}
@@ -1151,33 +1151,33 @@ void debug_sub_803107C(void)
void sub_802D204(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gBankSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
PlayerBufferExecCompleted();
}
// duplicate of sub_802D204
void sub_802D23C(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gBankSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
PlayerBufferExecCompleted();
}
void sub_802D274(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gBankSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
{
nullsub_10(gSaveBlock2.playerGender);
- FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
- DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
+ FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBattler]]);
+ DestroySprite(&gSprites[gBankSpriteIds[gActiveBattler]]);
PlayerBufferExecCompleted();
}
}
void sub_802D2E0(void)
{
- if (--ewram17810[gActiveBank].unk9 == 0xFF)
+ if (--ewram17810[gActiveBattler].unk9 == 0xFF)
{
- ewram17810[gActiveBank].unk9 = 0;
+ ewram17810[gActiveBattler].unk9 = 0;
PlayerBufferExecCompleted();
}
}
@@ -1188,106 +1188,106 @@ void sub_802D31C(void)
if (!IsDoubleBattle() || (IsDoubleBattle() && (gBattleTypeFlags & BATTLE_TYPE_MULTI)))
{
- if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gHealthboxIDs[gActiveBattler]].callback == SpriteCallbackDummy)
r6 = TRUE;
}
else
{
- if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy
- && gSprites[gHealthboxIDs[gActiveBank ^ 2]].callback == SpriteCallbackDummy)
+ if (gSprites[gHealthboxIDs[gActiveBattler]].callback == SpriteCallbackDummy
+ && gSprites[gHealthboxIDs[gActiveBattler ^ 2]].callback == SpriteCallbackDummy)
r6 = TRUE;
}
if (IsCryPlayingOrClearCrySongs())
r6 = FALSE;
- if (r6 && ewram17810[gActiveBank].unk1_0 && ewram17810[gActiveBank ^ 2].unk1_0)
+ if (r6 && ewram17810[gActiveBattler].unk1_0 && ewram17810[gActiveBattler ^ 2].unk1_0)
{
- ewram17810[gActiveBank].unk0_7 = 0;
- ewram17810[gActiveBank].unk1_0 = 0;
- ewram17810[gActiveBank ^ 2].unk0_7 = 0;
- ewram17810[gActiveBank ^ 2].unk1_0 = 0;
+ ewram17810[gActiveBattler].unk0_7 = 0;
+ ewram17810[gActiveBattler].unk1_0 = 0;
+ ewram17810[gActiveBattler ^ 2].unk0_7 = 0;
+ ewram17810[gActiveBattler ^ 2].unk1_0 = 0;
FreeSpriteTilesByTag(0x27F9);
FreeSpritePaletteByTag(0x27F9);
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
m4aMPlayContinue(&gMPlay_BGM);
else
m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 256);
- HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
if (IsDoubleBattle())
- HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank ^ 2]], gActiveBank ^ 2);
- ewram17810[gActiveBank].unk9 = 3;
- gBattleBankFunc[gActiveBank] = sub_802D2E0;
+ HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ 2]], gActiveBattler ^ 2);
+ ewram17810[gActiveBattler].unk9 = 3;
+ gBattleBankFunc[gActiveBattler] = sub_802D2E0;
}
}
void sub_802D500(void)
{
- if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank].unk0_7)
- sub_8141828(gActiveBank, &gPlayerParty[gBattlePartyID[gActiveBank]]);
- if (!ewram17810[gActiveBank ^ 2].unk0_3 && !ewram17810[gActiveBank ^ 2].unk0_7)
- sub_8141828(gActiveBank ^ 2, &gPlayerParty[gBattlePartyID[gActiveBank ^ 2]]);
- if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank ^ 2].unk0_3)
+ if (!ewram17810[gActiveBattler].unk0_3 && !ewram17810[gActiveBattler].unk0_7)
+ sub_8141828(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]);
+ if (!ewram17810[gActiveBattler ^ 2].unk0_3 && !ewram17810[gActiveBattler ^ 2].unk0_7)
+ sub_8141828(gActiveBattler ^ 2, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ 2]]);
+ if (!ewram17810[gActiveBattler].unk0_3 && !ewram17810[gActiveBattler ^ 2].unk0_3)
{
if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
- DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank ^ 2]]);
+ DestroySprite(&gSprites[gUnknown_0300434C[gActiveBattler ^ 2]]);
sub_8045A5C(
- gHealthboxIDs[gActiveBank ^ 2],
- &gPlayerParty[gBattlePartyID[gActiveBank ^ 2]],
+ gHealthboxIDs[gActiveBattler ^ 2],
+ &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ 2]],
0);
- sub_804777C(gActiveBank ^ 2);
- sub_8043DFC(gHealthboxIDs[gActiveBank ^ 2]);
+ sub_804777C(gActiveBattler ^ 2);
+ sub_8043DFC(gHealthboxIDs[gActiveBattler ^ 2]);
}
- DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank]]);
+ DestroySprite(&gSprites[gUnknown_0300434C[gActiveBattler]]);
sub_8045A5C(
- gHealthboxIDs[gActiveBank],
- &gPlayerParty[gBattlePartyID[gActiveBank]],
+ gHealthboxIDs[gActiveBattler],
+ &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]],
0);
- sub_804777C(gActiveBank);
- sub_8043DFC(gHealthboxIDs[gActiveBank]);
+ sub_804777C(gActiveBattler);
+ sub_8043DFC(gHealthboxIDs[gActiveBattler]);
ewram17840.unk9_0 = 0;
- gBattleBankFunc[gActiveBank] = sub_802D31C;
+ gBattleBankFunc[gActiveBattler] = sub_802D31C;
}
}
void sub_802D680(void)
{
- if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy
- && ewram17810[gActiveBank].unk1_0)
+ if (gSprites[gHealthboxIDs[gActiveBattler]].callback == SpriteCallbackDummy
+ && ewram17810[gActiveBattler].unk1_0)
{
- ewram17810[gActiveBank].unk0_7 = 0;
- ewram17810[gActiveBank].unk1_0 = 0;
+ ewram17810[gActiveBattler].unk0_7 = 0;
+ ewram17810[gActiveBattler].unk1_0 = 0;
FreeSpriteTilesByTag(0x27F9);
FreeSpritePaletteByTag(0x27F9);
- if (ewram17800[gActiveBank].substituteSprite)
- move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6);
- gBattleBankFunc[gActiveBank] = sub_802D730;
+ if (ewram17800[gActiveBattler].substituteSprite)
+ move_anim_start_t4(gActiveBattler, gActiveBattler, gActiveBattler, 6);
+ gBattleBankFunc[gActiveBattler] = sub_802D730;
}
}
void sub_802D730(void)
{
- if (!ewram17810[gActiveBank].unk0_6 && !IsCryPlayingOrClearCrySongs())
+ if (!ewram17810[gActiveBattler].unk0_6 && !IsCryPlayingOrClearCrySongs())
{
m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 0x100);
- HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
PlayerBufferExecCompleted();
}
}
void sub_802D798(void)
{
- if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank].unk0_7)
- sub_8141828(gActiveBank, &gPlayerParty[gBattlePartyID[gActiveBank]]);
- if (gSprites[gUnknown_0300434C[gActiveBank]].callback == SpriteCallbackDummy
- && !ewram17810[gActiveBank].unk0_3)
+ if (!ewram17810[gActiveBattler].unk0_3 && !ewram17810[gActiveBattler].unk0_7)
+ sub_8141828(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]);
+ if (gSprites[gUnknown_0300434C[gActiveBattler]].callback == SpriteCallbackDummy
+ && !ewram17810[gActiveBattler].unk0_3)
{
- DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank]]);
- sub_8045A5C(gHealthboxIDs[gActiveBank], &gPlayerParty[gBattlePartyID[gActiveBank]], 0);
- sub_804777C(gActiveBank);
- sub_8043DFC(gHealthboxIDs[gActiveBank]);
- sub_8031F88(gActiveBank);
- gBattleBankFunc[gActiveBank] = sub_802D680;
+ DestroySprite(&gSprites[gUnknown_0300434C[gActiveBattler]]);
+ sub_8045A5C(gHealthboxIDs[gActiveBattler], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], 0);
+ sub_804777C(gActiveBattler);
+ sub_8043DFC(gHealthboxIDs[gActiveBattler]);
+ sub_8031F88(gActiveBattler);
+ gBattleBankFunc[gActiveBattler] = sub_802D680;
}
}
@@ -1302,16 +1302,16 @@ void c3_0802FDF4(u8 taskId)
void bx_t1_healthbar_update(void)
{
- s16 r4 = sub_8045C78(gActiveBank, gHealthboxIDs[gActiveBank], 0, 0);
+ s16 r4 = sub_8045C78(gActiveBattler, gHealthboxIDs[gActiveBattler], 0, 0);
- sub_8043DFC(gHealthboxIDs[gActiveBank]);
+ sub_8043DFC(gHealthboxIDs[gActiveBattler]);
if (r4 != -1)
{
- sub_80440EC(gHealthboxIDs[gActiveBank], r4, 0);
+ sub_80440EC(gHealthboxIDs[gActiveBattler], r4, 0);
}
else
{
- HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
PlayerBufferExecCompleted();
}
}
@@ -1329,7 +1329,7 @@ void sub_802D924(u8 taskId)
u8 bank = gTasks[taskId].data[2];
s16 gainedExp = gTasks[taskId].data[1];
- if (IsDoubleBattle() == TRUE || pkmnIndex != gBattlePartyID[bank])
+ if (IsDoubleBattle() == TRUE || pkmnIndex != gBattlerPartyIndexes[bank])
{
struct Pokemon *pkmn = &gPlayerParty[pkmnIndex];
u16 species = GetMonData(pkmn, MON_DATA_SPECIES);
@@ -1344,13 +1344,13 @@ void sub_802D924(u8 taskId)
SetMonData(pkmn, MON_DATA_EXP, &nextLvlExp);
CalculateMonStats(pkmn);
gainedExp -= nextLvlExp - currExp;
- savedActiveBank = gActiveBank;
- gActiveBank = bank;
+ savedActiveBank = gActiveBattler;
+ gActiveBattler = bank;
Emitcmd33(1, 11, gainedExp);
- gActiveBank = savedActiveBank;
+ gActiveBattler = savedActiveBank;
if (IsDoubleBattle() == TRUE
- && ((u16)pkmnIndex == gBattlePartyID[bank] || (u16)pkmnIndex == gBattlePartyID[bank ^ 2]))
+ && ((u16)pkmnIndex == gBattlerPartyIndexes[bank] || (u16)pkmnIndex == gBattlerPartyIndexes[bank ^ 2]))
gTasks[taskId].func = sub_802DCB0;
else
gTasks[taskId].func = sub_802DDC4;
@@ -1429,10 +1429,10 @@ void sub_802DB6C(u8 taskId)
asdf = sp0 - sp4;
//asdf = r10 - (sp0 - sp4);
r10 -= asdf;
- r5 = gActiveBank;
- gActiveBank = r7;
+ r5 = gActiveBattler;
+ gActiveBattler = r7;
Emitcmd33(1, 11, r10);
- gActiveBank = r5;
+ gActiveBattler = r5;
gTasks[taskId].func = sub_802DCB0;
}
else
@@ -1447,7 +1447,7 @@ void sub_802DB6C(u8 taskId)
}
}
#else
-__attribute__((naked))
+NAKED
void sub_802DB6C(u8 taskId)
{
asm_unified("push {r4-r7,lr}\n\
@@ -1554,7 +1554,7 @@ _0802DB9C:\n\
ldrh r0, [r0]\n\
subs r2, r0\n\
subs r2, r4, r2\n\
- ldr r4, _0802DC74 @ =gActiveBank\n\
+ ldr r4, _0802DC74 @ =gActiveBattler\n\
ldrb r5, [r4]\n\
strb r7, [r4]\n\
lsls r2, 16\n\
@@ -1571,7 +1571,7 @@ _0802DC64: .4byte gHealthboxIDs\n\
_0802DC68: .4byte gPlayerParty\n\
_0802DC6C: .4byte gExperienceTables\n\
_0802DC70: .4byte gBaseStats\n\
-_0802DC74: .4byte gActiveBank\n\
+_0802DC74: .4byte gActiveBattler\n\
_0802DC78: .4byte sub_802DCB0\n\
_0802DC7C:\n\
str r0, [sp, 0x4]\n\
@@ -1606,7 +1606,7 @@ void sub_802DCB0(u8 taskId)
u8 bank = gTasks[taskId].data[2];
u8 pkmnIndex = gTasks[taskId].data[0];
- if (IsDoubleBattle() == TRUE && pkmnIndex == gBattlePartyID[bank ^ 2])
+ if (IsDoubleBattle() == TRUE && pkmnIndex == gBattlerPartyIndexes[bank ^ 2])
bank ^= 2;
move_anim_start_t4(bank, bank, bank, 0);
gTasks[taskId].func = sub_802DD10;
@@ -1621,7 +1621,7 @@ void sub_802DD10(u8 taskId)
u8 pkmnIndex = gTasks[taskId].data[0];
GetMonData(&gPlayerParty[pkmnIndex], MON_DATA_LEVEL); // Unused return value
- if (IsDoubleBattle() == TRUE && pkmnIndex == gBattlePartyID[bank ^ 2])
+ if (IsDoubleBattle() == TRUE && pkmnIndex == gBattlerPartyIndexes[bank ^ 2])
sub_8045A5C(gHealthboxIDs[bank ^ 2], &gPlayerParty[pkmnIndex], 0);
else
sub_8045A5C(gHealthboxIDs[bank], &gPlayerParty[pkmnIndex], 0);
@@ -1643,25 +1643,25 @@ void sub_802DDC4(u8 taskId)
void sub_802DE10(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].pos1.y + gSprites[gBankSpriteIds[gActiveBank]].pos2.y > DISPLAY_HEIGHT)
+ if (gSprites[gBankSpriteIds[gActiveBattler]].pos1.y + gSprites[gBankSpriteIds[gActiveBattler]].pos2.y > DISPLAY_HEIGHT)
{
- u16 species = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES);
+ u16 species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES);
nullsub_9(species);
- FreeOamMatrix(gSprites[gBankSpriteIds[gActiveBank]].oam.matrixNum);
- DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
- sub_8043DB0(gHealthboxIDs[gActiveBank]);
+ FreeOamMatrix(gSprites[gBankSpriteIds[gActiveBattler]].oam.matrixNum);
+ DestroySprite(&gSprites[gBankSpriteIds[gActiveBattler]]);
+ sub_8043DB0(gHealthboxIDs[gActiveBattler]);
PlayerBufferExecCompleted();
}
}
void sub_802DEAC(void)
{
- if (!ewram17810[gActiveBank].unk0_6)
+ if (!ewram17810[gActiveBattler].unk0_6)
{
- FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
- DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
- sub_8043DB0(gHealthboxIDs[gActiveBank]);
+ FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBattler]]);
+ DestroySprite(&gSprites[gBankSpriteIds[gActiveBattler]]);
+ sub_8043DB0(gHealthboxIDs[gActiveBattler]);
PlayerBufferExecCompleted();
}
}
@@ -1679,9 +1679,9 @@ void sub_802DF30(void)
{
u8 r4;
- gBattleBankFunc[gActiveBank] = sub_802DF88;
- r4 = gTasks[gUnknown_0300434C[gActiveBank]].data[0];
- DestroyTask(gUnknown_0300434C[gActiveBank]);
+ gBattleBankFunc[gActiveBattler] = sub_802DF88;
+ r4 = gTasks[gUnknown_0300434C[gActiveBattler]].data[0];
+ DestroyTask(gUnknown_0300434C[gActiveBattler]);
sub_8094E20(r4);
}
}
@@ -1694,7 +1694,7 @@ void sub_802DF88(void)
Emitcmd34(1, gUnknown_0202E8F5, gUnknown_02038470);
else
Emitcmd34(1, 6, NULL);
- if ((gBattleBufferA[gActiveBank][1] & 0xF) == 1)
+ if ((gBattleBufferA[gActiveBattler][1] & 0xF) == 1)
b_link_standby_message();
PlayerBufferExecCompleted();
}
@@ -1704,7 +1704,7 @@ void sub_802E004(void)
{
if (!gPaletteFade.active)
{
- gBattleBankFunc[gActiveBank] = sub_802E03C;
+ gBattleBankFunc[gActiveBattler] = sub_802E03C;
nullsub_14();
sub_80A6DCC();
}
@@ -1721,13 +1721,13 @@ void sub_802E03C(void)
void bx_wait_t1(void)
{
- if (!gDoingBattleAnim || !ewram17810[gActiveBank].unk0_6)
+ if (!gDoingBattleAnim || !ewram17810[gActiveBattler].unk0_6)
PlayerBufferExecCompleted();
}
void bx_blink_t1(void)
{
- u8 spriteId = gBankSpriteIds[gActiveBank];
+ u8 spriteId = gBankSpriteIds[gActiveBattler];
if (gSprites[spriteId].data[1] == 32)
{
@@ -1746,7 +1746,7 @@ void bx_blink_t1(void)
void sub_802E12C(s32 a, const u8 *b)
{
- struct ChooseMoveStruct *r4 = (struct ChooseMoveStruct *)&gBattleBufferA[gActiveBank][4];
+ struct ChooseMoveStruct *r4 = (struct ChooseMoveStruct *)&gBattleBufferA[gActiveBattler][4];
StringCopy(gDisplayedStringBattle, b);
StringAppend(gDisplayedStringBattle, gMoveNames[r4->moves[a]]);
@@ -1761,7 +1761,7 @@ void sub_802E12C(s32 a, const u8 *b)
void sub_802E1B0(void)
{
- struct ChooseMoveStruct *r4 = (struct ChooseMoveStruct *)&gBattleBufferA[gActiveBank][4];
+ struct ChooseMoveStruct *r4 = (struct ChooseMoveStruct *)&gBattleBufferA[gActiveBattler][4];
s32 i;
gUnknown_03004348 = 0;
@@ -1777,9 +1777,9 @@ void sub_802E1B0(void)
void sub_802E220(void)
{
- if (gBattleBufferA[gActiveBank][2] != 1)
+ if (gBattleBufferA[gActiveBattler][2] != 1)
{
- struct ChooseMoveStruct *r4 = (struct ChooseMoveStruct *)&gBattleBufferA[gActiveBank][4];
+ struct ChooseMoveStruct *r4 = (struct ChooseMoveStruct *)&gBattleBufferA[gActiveBattler][4];
u8 *str = gDisplayedStringBattle;
str = StringCopy(str, BattleText_Format);
@@ -1791,9 +1791,9 @@ void sub_802E220(void)
str[1] = 0x14;
str[2] = 6;
str += 3;
- str = ConvertIntToDecimalStringN(str, r4->pp[gMoveSelectionCursor[gActiveBank]], 1, 2);
+ str = ConvertIntToDecimalStringN(str, r4->pp[gMoveSelectionCursor[gActiveBattler]], 1, 2);
*str++ = CHAR_SLASH;
- ConvertIntToDecimalStringN(str, r4->unkC[gMoveSelectionCursor[gActiveBank]], 1, 2);
+ ConvertIntToDecimalStringN(str, r4->unkC[gMoveSelectionCursor[gActiveBattler]], 1, 2);
Text_InitWindow(&gUnknown_03004210, gDisplayedStringBattle, 0x2A2, 0x19, 0x37);
Text_PrintWindow8002F44(&gUnknown_03004210);
}
@@ -1804,18 +1804,18 @@ extern const u8 gTypeNames[][7];
void sub_802E2D4(void)
{
- if (gBattleBufferA[gActiveBank][2] == 1)
+ if (gBattleBufferA[gActiveBattler][2] == 1)
{
Text_FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A);
Text_InitWindow(&gUnknown_03004210, BattleText_ForgetMove, 0x290, 0x13, 0x37);
}
else
{
- struct ChooseMoveStruct *r4 = (struct ChooseMoveStruct *)&gBattleBufferA[gActiveBank][4];
+ struct ChooseMoveStruct *r4 = (struct ChooseMoveStruct *)&gBattleBufferA[gActiveBattler][4];
u8 *str = gDisplayedStringBattle;
str = StringCopy(str, BattleText_Format);
- StringCopy(str, gTypeNames[gBattleMoves[r4->moves[gMoveSelectionCursor[gActiveBank]]].type]);
+ StringCopy(str, gTypeNames[gBattleMoves[r4->moves[gMoveSelectionCursor[gActiveBattler]]].type]);
Text_FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x39, 0x1C, 0x3A);
Text_InitWindow(&gUnknown_03004210, gDisplayedStringBattle, 0x2C0, 0x17, 0x39);
}
@@ -1874,13 +1874,13 @@ void sub_802E424(void)
void sub_802E434(void)
{
- if (!ewram17810[gActiveBank].unk0_4)
+ if (!ewram17810[gActiveBattler].unk0_4)
PlayerBufferExecCompleted();
}
void sub_802E460(void)
{
- if (!ewram17810[gActiveBank].unk0_5)
+ if (!ewram17810[gActiveBattler].unk0_5)
PlayerBufferExecCompleted();
}
@@ -1901,13 +1901,13 @@ void PlayerHandleGetAttributes(void)
u8 r4;
s32 i;
- if (gBattleBufferA[gActiveBank][2] == 0)
+ if (gBattleBufferA[gActiveBattler][2] == 0)
{
- offset += dp01_getattr_by_ch1_for_player_pokemon_(gBattlePartyID[gActiveBank], unkData);
+ offset += dp01_getattr_by_ch1_for_player_pokemon_(gBattlerPartyIndexes[gActiveBattler], unkData);
}
else
{
- r4 = gBattleBufferA[gActiveBank][2];
+ r4 = gBattleBufferA[gActiveBattler][2];
for (i = 0; i < 6; i++)
{
if (r4 & 1)
@@ -1930,7 +1930,7 @@ u32 dp01_getattr_by_ch1_for_player_pokemon_(u8 a, u8 *buffer)
u32 data32;
s32 size = 0;
- switch (gBattleBufferA[gActiveBank][1])
+ switch (gBattleBufferA[gActiveBattler][1])
{
case 0:
battlePokemon.species = GetMonData(&gPlayerParty[a], MON_DATA_SPECIES);
@@ -1992,7 +1992,7 @@ u32 dp01_getattr_by_ch1_for_player_pokemon_(u8 a, u8 *buffer)
case 5:
case 6:
case 7:
- data16 = GetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + gBattleBufferA[gActiveBank][1] - 4);
+ data16 = GetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + gBattleBufferA[gActiveBattler][1] - 4);
buffer[0] = data16;
buffer[1] = data16 >> 8;
size = 2;
@@ -2007,7 +2007,7 @@ u32 dp01_getattr_by_ch1_for_player_pokemon_(u8 a, u8 *buffer)
case 10:
case 11:
case 12:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_PP1 + gBattleBufferA[gActiveBank][1] - 9);
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_PP1 + gBattleBufferA[gActiveBattler][1] - 9);
size = 1;
break;
case 17:
@@ -2226,11 +2226,11 @@ void PlayerHandlecmd1(void)
struct BattlePokemon battleMon;
u8 i;
// TODO: Maybe fix this. Integrating this into MEMSET_ALT is too hard.
- u8 *src = (u8 *)&gPlayerParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1];
+ u8 *src = (u8 *)&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]] + gBattleBufferA[gActiveBattler][1];
u8 *dst;
- MEMSET_ALT(&battleMon + gBattleBufferA[gActiveBank][1], src[i], gBattleBufferA[gActiveBank][2], i, dst);
- Emitcmd29(1, gBattleBufferA[gActiveBank][2], dst);
+ MEMSET_ALT(&battleMon + gBattleBufferA[gActiveBattler][1], src[i], gBattleBufferA[gActiveBattler][2], i, dst);
+ Emitcmd29(1, gBattleBufferA[gActiveBattler][2], dst);
PlayerBufferExecCompleted();
}
@@ -2239,13 +2239,13 @@ void PlayerHandleSetAttributes(void)
u8 r4;
u8 i;
- if (gBattleBufferA[gActiveBank][2] == 0)
+ if (gBattleBufferA[gActiveBattler][2] == 0)
{
- dp01_setattr_by_ch1_for_player_pokemon(gBattlePartyID[gActiveBank]);
+ dp01_setattr_by_ch1_for_player_pokemon(gBattlerPartyIndexes[gActiveBattler]);
}
else
{
- r4 = gBattleBufferA[gActiveBank][2];
+ r4 = gBattleBufferA[gActiveBattler][2];
for (i = 0; i < 6; i++)
{
if (r4 & 1)
@@ -2259,11 +2259,11 @@ void PlayerHandleSetAttributes(void)
// Duplicate of sub_811EC68
void dp01_setattr_by_ch1_for_player_pokemon(u8 a)
{
- struct BattlePokemon *battlePokemon = (struct BattlePokemon *)&gBattleBufferA[gActiveBank][3];
- struct MovePpInfo *moveData = (struct MovePpInfo *)&gBattleBufferA[gActiveBank][3];
+ struct BattlePokemon *battlePokemon = (struct BattlePokemon *)&gBattleBufferA[gActiveBattler][3];
+ struct MovePpInfo *moveData = (struct MovePpInfo *)&gBattleBufferA[gActiveBattler][3];
s32 i;
- switch (gBattleBufferA[gActiveBank][1])
+ switch (gBattleBufferA[gActiveBattler][1])
{
case 0:
{
@@ -2304,10 +2304,10 @@ void dp01_setattr_by_ch1_for_player_pokemon(u8 a)
}
break;
case 1:
- SetMonData(&gPlayerParty[a], MON_DATA_SPECIES, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_SPECIES, &gBattleBufferA[gActiveBattler][3]);
break;
case 2:
- SetMonData(&gPlayerParty[a], MON_DATA_HELD_ITEM, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_HELD_ITEM, &gBattleBufferA[gActiveBattler][3]);
break;
case 3:
for (i = 0; i < 4; i++)
@@ -2321,157 +2321,157 @@ void dp01_setattr_by_ch1_for_player_pokemon(u8 a)
case 5:
case 6:
case 7:
- SetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + gBattleBufferA[gActiveBank][1] - 4, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + gBattleBufferA[gActiveBattler][1] - 4, &gBattleBufferA[gActiveBattler][3]);
break;
case 8:
- SetMonData(&gPlayerParty[a], MON_DATA_PP1, &gBattleBufferA[gActiveBank][3]);
- SetMonData(&gPlayerParty[a], MON_DATA_PP2, &gBattleBufferA[gActiveBank][4]);
- SetMonData(&gPlayerParty[a], MON_DATA_PP3, &gBattleBufferA[gActiveBank][5]);
- SetMonData(&gPlayerParty[a], MON_DATA_PP4, &gBattleBufferA[gActiveBank][6]);
- SetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES, &gBattleBufferA[gActiveBank][7]);
+ SetMonData(&gPlayerParty[a], MON_DATA_PP1, &gBattleBufferA[gActiveBattler][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_PP2, &gBattleBufferA[gActiveBattler][4]);
+ SetMonData(&gPlayerParty[a], MON_DATA_PP3, &gBattleBufferA[gActiveBattler][5]);
+ SetMonData(&gPlayerParty[a], MON_DATA_PP4, &gBattleBufferA[gActiveBattler][6]);
+ SetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES, &gBattleBufferA[gActiveBattler][7]);
break;
case 9:
case 10:
case 11:
case 12:
- SetMonData(&gPlayerParty[a], MON_DATA_PP1 + gBattleBufferA[gActiveBank][1] - 9, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_PP1 + gBattleBufferA[gActiveBattler][1] - 9, &gBattleBufferA[gActiveBattler][3]);
break;
case 17:
- SetMonData(&gPlayerParty[a], MON_DATA_OT_ID, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_OT_ID, &gBattleBufferA[gActiveBattler][3]);
break;
case 18:
- SetMonData(&gPlayerParty[a], MON_DATA_EXP, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_EXP, &gBattleBufferA[gActiveBattler][3]);
break;
case 19:
- SetMonData(&gPlayerParty[a], MON_DATA_HP_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_HP_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case 20:
- SetMonData(&gPlayerParty[a], MON_DATA_ATK_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_ATK_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case 21:
- SetMonData(&gPlayerParty[a], MON_DATA_DEF_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_DEF_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case 22:
- SetMonData(&gPlayerParty[a], MON_DATA_SPEED_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_SPEED_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case 23:
- SetMonData(&gPlayerParty[a], MON_DATA_SPATK_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_SPATK_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case 24:
- SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case 25:
- SetMonData(&gPlayerParty[a], MON_DATA_FRIENDSHIP, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_FRIENDSHIP, &gBattleBufferA[gActiveBattler][3]);
break;
case 26:
- SetMonData(&gPlayerParty[a], MON_DATA_POKERUS, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_POKERUS, &gBattleBufferA[gActiveBattler][3]);
break;
case 27:
- SetMonData(&gPlayerParty[a], MON_DATA_MET_LOCATION, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_MET_LOCATION, &gBattleBufferA[gActiveBattler][3]);
break;
case 28:
- SetMonData(&gPlayerParty[a], MON_DATA_MET_LEVEL, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_MET_LEVEL, &gBattleBufferA[gActiveBattler][3]);
break;
case 29:
- SetMonData(&gPlayerParty[a], MON_DATA_MET_GAME, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_MET_GAME, &gBattleBufferA[gActiveBattler][3]);
break;
case 30:
- SetMonData(&gPlayerParty[a], MON_DATA_POKEBALL, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_POKEBALL, &gBattleBufferA[gActiveBattler][3]);
break;
case 31:
- SetMonData(&gPlayerParty[a], MON_DATA_HP_IV, &gBattleBufferA[gActiveBank][3]);
- SetMonData(&gPlayerParty[a], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBank][4]);
- SetMonData(&gPlayerParty[a], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][5]);
- SetMonData(&gPlayerParty[a], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBank][6]);
- SetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][7]);
- SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBank][8]);
+ SetMonData(&gPlayerParty[a], MON_DATA_HP_IV, &gBattleBufferA[gActiveBattler][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBattler][4]);
+ SetMonData(&gPlayerParty[a], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBattler][5]);
+ SetMonData(&gPlayerParty[a], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBattler][6]);
+ SetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBattler][7]);
+ SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBattler][8]);
break;
case 32:
- SetMonData(&gPlayerParty[a], MON_DATA_HP_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_HP_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case 33:
- SetMonData(&gPlayerParty[a], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case 34:
- SetMonData(&gPlayerParty[a], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case 35:
- SetMonData(&gPlayerParty[a], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case 36:
- SetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case 37:
- SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case 38:
- SetMonData(&gPlayerParty[a], MON_DATA_PERSONALITY, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_PERSONALITY, &gBattleBufferA[gActiveBattler][3]);
break;
case 39:
- SetMonData(&gPlayerParty[a], MON_DATA_CHECKSUM, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_CHECKSUM, &gBattleBufferA[gActiveBattler][3]);
break;
case 40:
- SetMonData(&gPlayerParty[a], MON_DATA_STATUS, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_STATUS, &gBattleBufferA[gActiveBattler][3]);
break;
case 41:
- SetMonData(&gPlayerParty[a], MON_DATA_LEVEL, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_LEVEL, &gBattleBufferA[gActiveBattler][3]);
break;
case 42:
- SetMonData(&gPlayerParty[a], MON_DATA_HP, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_HP, &gBattleBufferA[gActiveBattler][3]);
break;
case 43:
- SetMonData(&gPlayerParty[a], MON_DATA_MAX_HP, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_MAX_HP, &gBattleBufferA[gActiveBattler][3]);
break;
case 44:
- SetMonData(&gPlayerParty[a], MON_DATA_ATK, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_ATK, &gBattleBufferA[gActiveBattler][3]);
break;
case 45:
- SetMonData(&gPlayerParty[a], MON_DATA_DEF, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_DEF, &gBattleBufferA[gActiveBattler][3]);
break;
case 46:
- SetMonData(&gPlayerParty[a], MON_DATA_SPEED, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_SPEED, &gBattleBufferA[gActiveBattler][3]);
break;
case 47:
- SetMonData(&gPlayerParty[a], MON_DATA_SPATK, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_SPATK, &gBattleBufferA[gActiveBattler][3]);
break;
case 48:
- SetMonData(&gPlayerParty[a], MON_DATA_SPDEF, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_SPDEF, &gBattleBufferA[gActiveBattler][3]);
break;
case 49:
- SetMonData(&gPlayerParty[a], MON_DATA_COOL, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_COOL, &gBattleBufferA[gActiveBattler][3]);
break;
case 50:
- SetMonData(&gPlayerParty[a], MON_DATA_BEAUTY, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_BEAUTY, &gBattleBufferA[gActiveBattler][3]);
break;
case 51:
- SetMonData(&gPlayerParty[a], MON_DATA_CUTE, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_CUTE, &gBattleBufferA[gActiveBattler][3]);
break;
case 52:
- SetMonData(&gPlayerParty[a], MON_DATA_SMART, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_SMART, &gBattleBufferA[gActiveBattler][3]);
break;
case 53:
- SetMonData(&gPlayerParty[a], MON_DATA_TOUGH, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_TOUGH, &gBattleBufferA[gActiveBattler][3]);
break;
case 54:
- SetMonData(&gPlayerParty[a], MON_DATA_SHEEN, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_SHEEN, &gBattleBufferA[gActiveBattler][3]);
break;
case 55:
- SetMonData(&gPlayerParty[a], MON_DATA_COOL_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_COOL_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
case 56:
- SetMonData(&gPlayerParty[a], MON_DATA_BEAUTY_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_BEAUTY_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
case 57:
- SetMonData(&gPlayerParty[a], MON_DATA_CUTE_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_CUTE_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
case 58:
- SetMonData(&gPlayerParty[a], MON_DATA_SMART_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_SMART_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
case 59:
- SetMonData(&gPlayerParty[a], MON_DATA_TOUGH_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_TOUGH_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
}
- HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
}
void PlayerHandlecmd3(void)
@@ -2479,27 +2479,27 @@ void PlayerHandlecmd3(void)
u8 i;
u8 *dst;
- MEMSET_ALT(&gPlayerParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1], gBattleBufferA[gActiveBank][3 + i],
- gBattleBufferA[gActiveBank][2], i, dst);
+ MEMSET_ALT(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]] + gBattleBufferA[gActiveBattler][1], gBattleBufferA[gActiveBattler][3 + i],
+ gBattleBufferA[gActiveBattler][2], i, dst);
PlayerBufferExecCompleted();
}
void PlayerHandleLoadPokeSprite(void)
{
- BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
- gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank;
- gBattleBankFunc[gActiveBank] = bx_0802E404;
+ BattleLoadPlayerMonSprite(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
+ gSprites[gBankSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
+ gBattleBankFunc[gActiveBattler] = bx_0802E404;
}
void PlayerHandleSendOutPoke(void)
{
- sub_8032AA8(gActiveBank, gBattleBufferA[gActiveBank][2]);
- gBattlePartyID[gActiveBank] = gBattleBufferA[gActiveBank][1];
- BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
- gActionSelectionCursor[gActiveBank] = 0;
- gMoveSelectionCursor[gActiveBank] = 0;
- sub_802F934(gActiveBank, gBattleBufferA[gActiveBank][2]);
- gBattleBankFunc[gActiveBank] = sub_802D798;
+ sub_8032AA8(gActiveBattler, gBattleBufferA[gActiveBattler][2]);
+ gBattlerPartyIndexes[gActiveBattler] = gBattleBufferA[gActiveBattler][1];
+ BattleLoadPlayerMonSprite(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
+ gActionSelectionCursor[gActiveBattler] = 0;
+ gMoveSelectionCursor[gActiveBattler] = 0;
+ sub_802F934(gActiveBattler, gBattleBufferA[gActiveBattler][2]);
+ gBattleBankFunc[gActiveBattler] = sub_802D798;
}
void sub_802F934(u8 bank, u8 b)
@@ -2507,13 +2507,13 @@ void sub_802F934(u8 bank, u8 b)
u16 species;
sub_8032AA8(bank, b);
- gBattlePartyID[bank] = gBattleBufferA[bank][1];
- species = GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_SPECIES);
+ gBattlerPartyIndexes[bank] = gBattleBufferA[bank][1];
+ species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[bank]], MON_DATA_SPECIES);
gUnknown_0300434C[bank] = CreateInvisibleSpriteWithCallback(sub_80312F0);
- GetMonSpriteTemplate_803C56C(species, GetBankIdentity(bank));
+ GetMonSpriteTemplate_803C56C(species, GetBattlerPosition(bank));
gBankSpriteIds[bank] = CreateSprite(
&gUnknown_02024E8C,
- GetBankPosition(bank, 2),
+ GetBattlerSpriteCoord(bank, 2),
sub_8077F68(bank),
sub_8079E90(bank));
gSprites[gUnknown_0300434C[bank]].data[1] = gBankSpriteIds[bank];
@@ -2528,35 +2528,35 @@ void sub_802F934(u8 bank, u8 b)
void PlayerHandleReturnPokeToBall(void)
{
- if (gBattleBufferA[gActiveBank][1] == 0)
+ if (gBattleBufferA[gActiveBattler][1] == 0)
{
- ewram17810[gActiveBank].unk4 = 0;
- gBattleBankFunc[gActiveBank] = sub_802FB2C;
+ ewram17810[gActiveBattler].unk4 = 0;
+ gBattleBankFunc[gActiveBattler] = sub_802FB2C;
}
else
{
- FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
- DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
- sub_8043DB0(gHealthboxIDs[gActiveBank]);
+ FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBattler]]);
+ DestroySprite(&gSprites[gBankSpriteIds[gActiveBattler]]);
+ sub_8043DB0(gHealthboxIDs[gActiveBattler]);
PlayerBufferExecCompleted();
}
}
void sub_802FB2C(void)
{
- switch (ewram17810[gActiveBank].unk4)
+ switch (ewram17810[gActiveBattler].unk4)
{
case 0:
- if (ewram17800[gActiveBank].substituteSprite)
- move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
- ewram17810[gActiveBank].unk4 = 1;
+ if (ewram17800[gActiveBattler].substituteSprite)
+ move_anim_start_t4(gActiveBattler, gActiveBattler, gActiveBattler, 5);
+ ewram17810[gActiveBattler].unk4 = 1;
break;
case 1:
- if (!ewram17810[gActiveBank].unk0_6)
+ if (!ewram17810[gActiveBattler].unk0_6)
{
- ewram17810[gActiveBank].unk4 = 0;
- move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 1);
- gBattleBankFunc[gActiveBank] = sub_802DEAC;
+ ewram17810[gActiveBattler].unk4 = 0;
+ move_anim_start_t4(gActiveBattler, gActiveBattler, gActiveBattler, 1);
+ gBattleBankFunc[gActiveBattler] = sub_802DEAC;
}
}
}
@@ -2567,7 +2567,7 @@ void PlayerHandleTrainerThrow(void)
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
{
- if (GetBankIdentity(gActiveBank) & 2)
+ if (GetBattlerPosition(gActiveBattler) & 2)
r7 = 16;
else
r7 = -16;
@@ -2576,74 +2576,74 @@ void PlayerHandleTrainerThrow(void)
{
r7 = 0;
}
- LoadPlayerTrainerBankSprite(gSaveBlock2.playerGender, gActiveBank);
- GetMonSpriteTemplate_803C5A0(gSaveBlock2.playerGender, GetBankIdentity(gActiveBank));
- gBankSpriteIds[gActiveBank] = CreateSprite(
+ LoadPlayerTrainerBankSprite(gSaveBlock2.playerGender, gActiveBattler);
+ GetMonSpriteTemplate_803C5A0(gSaveBlock2.playerGender, GetBattlerPosition(gActiveBattler));
+ gBankSpriteIds[gActiveBattler] = CreateSprite(
&gUnknown_02024E8C,
r7 + 80,
(8 - gTrainerBackPicCoords[gSaveBlock2.playerGender].coords) * 4 + 80,
- sub_8079E90(gActiveBank));
- gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank;
- gSprites[gBankSpriteIds[gActiveBank]].pos2.x = 240;
- gSprites[gBankSpriteIds[gActiveBank]].data[0] = -2;
- gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80313A0;
- gBattleBankFunc[gActiveBank] = sub_802D204;
+ sub_8079E90(gActiveBattler));
+ gSprites[gBankSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
+ gSprites[gBankSpriteIds[gActiveBattler]].pos2.x = 240;
+ gSprites[gBankSpriteIds[gActiveBattler]].data[0] = -2;
+ gSprites[gBankSpriteIds[gActiveBattler]].callback = sub_80313A0;
+ gBattleBankFunc[gActiveBattler] = sub_802D204;
}
void PlayerHandleTrainerSlide(void)
{
- LoadPlayerTrainerBankSprite(gSaveBlock2.playerGender, gActiveBank);
- GetMonSpriteTemplate_803C5A0(gSaveBlock2.playerGender, GetBankIdentity(gActiveBank));
- gBankSpriteIds[gActiveBank] = CreateSprite(
+ LoadPlayerTrainerBankSprite(gSaveBlock2.playerGender, gActiveBattler);
+ GetMonSpriteTemplate_803C5A0(gSaveBlock2.playerGender, GetBattlerPosition(gActiveBattler));
+ gBankSpriteIds[gActiveBattler] = CreateSprite(
&gUnknown_02024E8C,
80,
(8 - gTrainerBackPicCoords[gSaveBlock2.playerGender].coords) * 4 + 80,
30);
- gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank;
- gSprites[gBankSpriteIds[gActiveBank]].pos2.x = -96;
- gSprites[gBankSpriteIds[gActiveBank]].data[0] = 2;
- gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80313A0;
- gBattleBankFunc[gActiveBank] = sub_802D23C;
+ gSprites[gBankSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
+ gSprites[gBankSpriteIds[gActiveBattler]].pos2.x = -96;
+ gSprites[gBankSpriteIds[gActiveBattler]].data[0] = 2;
+ gSprites[gBankSpriteIds[gActiveBattler]].callback = sub_80313A0;
+ gBattleBankFunc[gActiveBattler] = sub_802D23C;
}
void PlayerHandleTrainerSlideBack(void)
{
- oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]);
- gSprites[gBankSpriteIds[gActiveBank]].data[0] = 50;
- gSprites[gBankSpriteIds[gActiveBank]].data[2] = -40;
- gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
- gSprites[gBankSpriteIds[gActiveBank]].callback = StartTranslateAnimSpriteByDeltas;
- StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBank]], SpriteCallbackDummy);
- StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], 1);
- gBattleBankFunc[gActiveBank] = sub_802D274;
+ oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBattler]]);
+ gSprites[gBankSpriteIds[gActiveBattler]].data[0] = 50;
+ gSprites[gBankSpriteIds[gActiveBattler]].data[2] = -40;
+ gSprites[gBankSpriteIds[gActiveBattler]].data[4] = gSprites[gBankSpriteIds[gActiveBattler]].pos1.y;
+ gSprites[gBankSpriteIds[gActiveBattler]].callback = StartTranslateAnimSpriteByDeltas;
+ StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBattler]], SpriteCallbackDummy);
+ StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBattler]], 1);
+ gBattleBankFunc[gActiveBattler] = sub_802D274;
}
void PlayerHandlecmd10(void)
{
- if (ewram17810[gActiveBank].unk4 == 0)
+ if (ewram17810[gActiveBattler].unk4 == 0)
{
- if (ewram17800[gActiveBank].substituteSprite)
- move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
- ewram17810[gActiveBank].unk4++;
+ if (ewram17800[gActiveBattler].substituteSprite)
+ move_anim_start_t4(gActiveBattler, gActiveBattler, gActiveBattler, 5);
+ ewram17810[gActiveBattler].unk4++;
}
else
{
- if (ewram17810[gActiveBank].unk0_6 == 0)
+ if (ewram17810[gActiveBattler].unk0_6 == 0)
{
- ewram17810[gActiveBank].unk4 = 0;
- HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ ewram17810[gActiveBattler].unk4 = 0;
+ HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
PlaySE12WithPanning(SE_POKE_DEAD, -64);
- gSprites[gBankSpriteIds[gActiveBank]].data[1] = 0;
- gSprites[gBankSpriteIds[gActiveBank]].data[2] = 5;
- gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80105EC;
- gBattleBankFunc[gActiveBank] = sub_802DE10;
+ gSprites[gBankSpriteIds[gActiveBattler]].data[1] = 0;
+ gSprites[gBankSpriteIds[gActiveBattler]].data[2] = 5;
+ gSprites[gBankSpriteIds[gActiveBattler]].callback = sub_80105EC;
+ gBattleBankFunc[gActiveBattler] = sub_802DE10;
}
}
}
void PlayerHandlecmd11(void)
{
- BeginNormalPaletteFade(0xFFFFFFFF, 2, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 2, 0, 16, RGB(0, 0, 0));
PlayerBufferExecCompleted();
}
@@ -2651,23 +2651,23 @@ void PlayerHandlecmd12(void)
{
ewram17840.unk8 = 4;
gDoingBattleAnim = 1;
- move_anim_start_t4(gActiveBank, gActiveBank, GetBankByIdentity(1), 3);
- gBattleBankFunc[gActiveBank] = bx_wait_t1;
+ move_anim_start_t4(gActiveBattler, gActiveBattler, GetBattlerAtPosition(1), 3);
+ gBattleBankFunc[gActiveBattler] = bx_wait_t1;
}
void PlayerHandleBallThrow(void)
{
- u8 var = gBattleBufferA[gActiveBank][1];
+ u8 var = gBattleBufferA[gActiveBattler][1];
ewram17840.unk8 = var;
gDoingBattleAnim = 1;
- move_anim_start_t4(gActiveBank, gActiveBank, GetBankByIdentity(1), 3);
- gBattleBankFunc[gActiveBank] = bx_wait_t1;
+ move_anim_start_t4(gActiveBattler, gActiveBattler, GetBattlerAtPosition(1), 3);
+ gBattleBankFunc[gActiveBattler] = bx_wait_t1;
}
void PlayerHandlePuase(void)
{
- u8 var = gBattleBufferA[gActiveBank][1];
+ u8 var = gBattleBufferA[gActiveBattler][1];
// WTF is this??
while (var != 0)
@@ -2678,17 +2678,17 @@ void PlayerHandlePuase(void)
void PlayerHandleMoveAnimation(void)
{
- if (!mplay_80342A4(gActiveBank))
+ if (!mplay_80342A4(gActiveBattler))
{
- u16 r0 = gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8);
+ u16 r0 = gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8);
- gAnimMoveTurn = gBattleBufferA[gActiveBank][3];
- gAnimMovePower = gBattleBufferA[gActiveBank][4] | (gBattleBufferA[gActiveBank][5] << 8);
- gAnimMoveDmg = gBattleBufferA[gActiveBank][6] | (gBattleBufferA[gActiveBank][7] << 8) | (gBattleBufferA[gActiveBank][8] << 16) | (gBattleBufferA[gActiveBank][9] << 24);
- gAnimFriendship = gBattleBufferA[gActiveBank][10];
- gWeatherMoveAnim = gBattleBufferA[gActiveBank][12] | (gBattleBufferA[gActiveBank][13] << 8);
- gAnimDisableStructPtr = (struct DisableStruct *)&gBattleBufferA[gActiveBank][16];
- gTransformedPersonalities[gActiveBank] = gAnimDisableStructPtr->transformedMonPersonality;
+ gAnimMoveTurn = gBattleBufferA[gActiveBattler][3];
+ gAnimMovePower = gBattleBufferA[gActiveBattler][4] | (gBattleBufferA[gActiveBattler][5] << 8);
+ gAnimMoveDmg = gBattleBufferA[gActiveBattler][6] | (gBattleBufferA[gActiveBattler][7] << 8) | (gBattleBufferA[gActiveBattler][8] << 16) | (gBattleBufferA[gActiveBattler][9] << 24);
+ gAnimFriendship = gBattleBufferA[gActiveBattler][10];
+ gWeatherMoveAnim = gBattleBufferA[gActiveBattler][12] | (gBattleBufferA[gActiveBattler][13] << 8);
+ gAnimDisableStructPtr = (struct DisableStruct *)&gBattleBufferA[gActiveBattler][16];
+ gTransformedPersonalities[gActiveBattler] = gAnimDisableStructPtr->transformedMonPersonality;
if (sub_8031720(r0, gAnimMoveTurn) != 0)
{
// Dead code. sub_8031720 always returns 0.
@@ -2696,33 +2696,33 @@ void PlayerHandleMoveAnimation(void)
}
else
{
- ewram17810[gActiveBank].unk4 = 0;
- gBattleBankFunc[gActiveBank] = sub_8030190;
+ ewram17810[gActiveBattler].unk4 = 0;
+ gBattleBankFunc[gActiveBattler] = sub_8030190;
}
}
}
void sub_8030190(void)
{
- u16 r4 = gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8);
- u8 r7 = gBattleBufferA[gActiveBank][11];
+ u16 r4 = gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8);
+ u8 r7 = gBattleBufferA[gActiveBattler][11];
- switch (ewram17810[gActiveBank].unk4)
+ switch (ewram17810[gActiveBattler].unk4)
{
case 0:
- if (ewram17800[gActiveBank].substituteSprite == 1 && ewram17800[gActiveBank].unk0_3 == 0)
+ if (ewram17800[gActiveBattler].substituteSprite == 1 && ewram17800[gActiveBattler].unk0_3 == 0)
{
- ewram17800[gActiveBank].unk0_3 = 1;
- move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
+ ewram17800[gActiveBattler].unk0_3 = 1;
+ move_anim_start_t4(gActiveBattler, gActiveBattler, gActiveBattler, 5);
}
- ewram17810[gActiveBank].unk4 = 1;
+ ewram17810[gActiveBattler].unk4 = 1;
break;
case 1:
- if (ewram17810[gActiveBank].unk0_6 == 0)
+ if (ewram17810[gActiveBattler].unk0_6 == 0)
{
sub_80326EC(0);
DoMoveAnim(r4);
- ewram17810[gActiveBank].unk4 = 2;
+ ewram17810[gActiveBattler].unk4 = 2;
}
break;
case 2:
@@ -2730,20 +2730,20 @@ void sub_8030190(void)
if (!gAnimScriptActive)
{
sub_80326EC(1);
- if (ewram17800[gActiveBank].substituteSprite == 1 && r7 < 2)
+ if (ewram17800[gActiveBattler].substituteSprite == 1 && r7 < 2)
{
- move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6);
- ewram17800[gActiveBank].unk0_3 = 0;
+ move_anim_start_t4(gActiveBattler, gActiveBattler, gActiveBattler, 6);
+ ewram17800[gActiveBattler].unk0_3 = 0;
}
- ewram17810[gActiveBank].unk4 = 3;
+ ewram17810[gActiveBattler].unk4 = 3;
}
break;
case 3:
- if (ewram17810[gActiveBank].unk0_6 == 0)
+ if (ewram17810[gActiveBattler].unk0_6 == 0)
{
sub_8031F24();
- sub_80324BC(gActiveBank, gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
- ewram17810[gActiveBank].unk4 = 0;
+ sub_80324BC(gActiveBattler, gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8));
+ ewram17810[gActiveBattler].unk4 = 0;
PlayerBufferExecCompleted();
}
break;
@@ -2754,14 +2754,14 @@ void PlayerHandlePrintString(void)
{
gBattle_BG0_X = 0;
gBattle_BG0_Y = 0;
- BufferStringBattle(*(u16 *)&gBattleBufferA[gActiveBank][2]);
+ BufferStringBattle(*(u16 *)&gBattleBufferA[gActiveBattler][2]);
Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 0x90, 2, 15);
- gBattleBankFunc[gActiveBank] = sub_802DF18;
+ gBattleBankFunc[gActiveBattler] = sub_802DF18;
}
void PlayerHandlePrintStringPlayerOnly(void)
{
- if (GetBankSide(gActiveBank) == 0)
+ if (GetBattlerSide(gActiveBattler) == 0)
PlayerHandlePrintString();
else
PlayerBufferExecCompleted();
@@ -2776,7 +2776,7 @@ void PlayerHandlecmd18(void)
Text_FillWindowRect(&gUnknown_03004210, 10, 2, 15, 27, 18);
Text_FillWindowRect(&gUnknown_03004210, 10, 2, 35, 16, 38);
- gBattleBankFunc[gActiveBank] = sub_802C098;
+ gBattleBankFunc[gActiveBattler] = sub_802C098;
Text_InitWindow(&gUnknown_03004210, BattleText_MenuOptions, 400, 18, 35);
Text_PrintWindow8002F44(&gUnknown_03004210);
@@ -2785,7 +2785,7 @@ void PlayerHandlecmd18(void)
for (r4 = 0; r4 < 4; r4++)
nullsub_8(r4);
- sub_802E3E4(gActionSelectionCursor[gActiveBank], 0);
+ sub_802E3E4(gActionSelectionCursor[gActiveBattler], 0);
StrCpyDecodeToDisplayedStringBattle(BattleText_OtherMenu);
Text_InitWindow(&gUnknown_03004210, gDisplayedStringBattle, SUB_803037C_TILE_DATA_OFFSET, 2, 35);
@@ -2800,7 +2800,7 @@ void PlayerHandlecmd20(void)
{
MenuCursor_Create814A5C0(0, 0xFFFF, 12, 0x2D9F, 0);
sub_80304A8();
- gBattleBankFunc[gActiveBank] = sub_802C68C;
+ gBattleBankFunc[gActiveBattler] = sub_802C68C;
}
void sub_80304A8(void)
@@ -2809,8 +2809,8 @@ void sub_80304A8(void)
gBattle_BG0_Y = 320;
sub_802E1B0();
gUnknown_03004344 = 0xFF;
- sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0);
- if (gBattleBufferA[gActiveBank][2] != 1)
+ sub_802E3B4(gMoveSelectionCursor[gActiveBattler], 0);
+ if (gBattleBufferA[gActiveBattler][2] != 1)
{
Text_InitWindow(&gUnknown_03004210, BattleText_PP, 656, 23, 55);
Text_PrintWindow8002F44(&gUnknown_03004210);
@@ -2823,33 +2823,33 @@ void PlayerHandleOpenBag(void)
{
s32 i;
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
- gBattleBankFunc[gActiveBank] = sub_802E004;
- gBankInMenu = gActiveBank;
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
+ gBattleBankFunc[gActiveBattler] = sub_802E004;
+ gBankInMenu = gActiveBattler;
for (i = 0; i < 3; i++)
- gUnknown_02038470[i] = gBattleBufferA[gActiveBank][1 + i];
+ gUnknown_02038470[i] = gBattleBufferA[gActiveBattler][1 + i];
}
void PlayerHandlecmd22(void)
{
s32 i;
- gUnknown_0300434C[gActiveBank] = CreateTask(TaskDummy, 0xFF);
- gTasks[gUnknown_0300434C[gActiveBank]].data[0] = gBattleBufferA[gActiveBank][1] & 0xF;
- ewram16054 = gBattleBufferA[gActiveBank][1] >> 4;
- EWRAM_1609D = gBattleBufferA[gActiveBank][2];
- ewram160C0 = gBattleBufferA[gActiveBank][3];
+ gUnknown_0300434C[gActiveBattler] = CreateTask(TaskDummy, 0xFF);
+ gTasks[gUnknown_0300434C[gActiveBattler]].data[0] = gBattleBufferA[gActiveBattler][1] & 0xF;
+ ewram16054 = gBattleBufferA[gActiveBattler][1] >> 4;
+ EWRAM_1609D = gBattleBufferA[gActiveBattler][2];
+ ewram160C0 = gBattleBufferA[gActiveBattler][3];
for (i = 0; i < 3; i++)
- gUnknown_02038470[i] = gBattleBufferA[gActiveBank][4 + i];
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
- gBattleBankFunc[gActiveBank] = sub_802DF30;
- gBankInMenu = gActiveBank;
+ gUnknown_02038470[i] = gBattleBufferA[gActiveBattler][4 + i];
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
+ gBattleBankFunc[gActiveBattler] = sub_802DF30;
+ gBankInMenu = gActiveBattler;
}
void PlayerHandlecmd23(void)
{
BattleStopLowHpSound();
- BeginNormalPaletteFade(0xFFFFFFFF, 2, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 2, 0, 16, RGB(0, 0, 0));
PlayerBufferExecCompleted();
}
@@ -2858,27 +2858,27 @@ void PlayerHandleHealthBarUpdate(void)
s16 r7;
load_gfxc_health_bar(0);
- r7 = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8);
+ r7 = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8);
if (r7 != 0x7FFF)
{
- u32 maxHP = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MAX_HP);
- u32 curHP = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_HP);
+ u32 maxHP = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP);
+ u32 curHP = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_HP);
- sub_8043D84(gActiveBank, gHealthboxIDs[gActiveBank], maxHP, curHP, r7);
+ sub_8043D84(gActiveBattler, gHealthboxIDs[gActiveBattler], maxHP, curHP, r7);
}
else
{
- u32 maxHP = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MAX_HP);
+ u32 maxHP = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP);
- sub_8043D84(gActiveBank, gHealthboxIDs[gActiveBank], maxHP, 0, r7);
- sub_80440EC(gHealthboxIDs[gActiveBank], 0, 0);
+ sub_8043D84(gActiveBattler, gHealthboxIDs[gActiveBattler], maxHP, 0, r7);
+ sub_80440EC(gHealthboxIDs[gActiveBattler], 0, 0);
}
- gBattleBankFunc[gActiveBank] = bx_t1_healthbar_update;
+ gBattleBankFunc[gActiveBattler] = bx_t1_healthbar_update;
}
void PlayerHandleExpBarUpdate(void)
{
- u8 r7 = gBattleBufferA[gActiveBank][1];
+ u8 r7 = gBattleBufferA[gActiveBattler][1];
if (GetMonData(&gPlayerParty[r7], MON_DATA_LEVEL) >= 100)
{
@@ -2891,41 +2891,41 @@ void PlayerHandleExpBarUpdate(void)
load_gfxc_health_bar(1);
GetMonData(&gPlayerParty[r7], MON_DATA_SPECIES); // unused return value
- r4 = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8);
+ r4 = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8);
taskId = CreateTask(sub_802D924, 10);
gTasks[taskId].data[0] = r7;
gTasks[taskId].data[1] = r4;
- gTasks[taskId].data[2] = gActiveBank;
- gBattleBankFunc[gActiveBank] = nullsub_91;
+ gTasks[taskId].data[2] = gActiveBattler;
+ gBattleBankFunc[gActiveBattler] = nullsub_91;
}
}
void PlayerHandleStatusIconUpdate(void)
{
- if (!mplay_80342A4(gActiveBank))
+ if (!mplay_80342A4(gActiveBattler))
{
- sub_8045A5C(gHealthboxIDs[gActiveBank], &gPlayerParty[gBattlePartyID[gActiveBank]], 9);
- ewram17810[gActiveBank].unk0_4 = 0;
- gBattleBankFunc[gActiveBank] = sub_802E434;
+ sub_8045A5C(gHealthboxIDs[gActiveBattler], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], 9);
+ ewram17810[gActiveBattler].unk0_4 = 0;
+ gBattleBankFunc[gActiveBattler] = sub_802E434;
}
}
void PlayerHandleStatusAnimation(void)
{
- if (!mplay_80342A4(gActiveBank))
+ if (!mplay_80342A4(gActiveBattler))
{
move_anim_start_t2_for_situation(
- gBattleBufferA[gActiveBank][1],
- gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8) | (gBattleBufferA[gActiveBank][4] << 16) | (gBattleBufferA[gActiveBank][5] << 24));
- gBattleBankFunc[gActiveBank] = sub_802E434;
+ gBattleBufferA[gActiveBattler][1],
+ gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8) | (gBattleBufferA[gActiveBattler][4] << 16) | (gBattleBufferA[gActiveBattler][5] << 24));
+ gBattleBankFunc[gActiveBattler] = sub_802E434;
}
}
void PlayerHandleStatusXor(void)
{
- u8 val = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_STATUS) ^ gBattleBufferA[gActiveBank][1];
+ u8 val = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_STATUS) ^ gBattleBufferA[gActiveBattler][1];
- SetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_STATUS, &val);
+ SetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_STATUS, &val);
PlayerBufferExecCompleted();
}
@@ -2936,19 +2936,19 @@ void PlayerHandlecmd29(void)
void PlayerHandleDMATransfer(void)
{
- u32 val1 = gBattleBufferA[gActiveBank][1]
- | (gBattleBufferA[gActiveBank][2] << 8)
- | (gBattleBufferA[gActiveBank][3] << 16)
- | (gBattleBufferA[gActiveBank][4] << 24);
- u16 val2 = gBattleBufferA[gActiveBank][5] | (gBattleBufferA[gActiveBank][6] << 8);
+ u32 val1 = gBattleBufferA[gActiveBattler][1]
+ | (gBattleBufferA[gActiveBattler][2] << 8)
+ | (gBattleBufferA[gActiveBattler][3] << 16)
+ | (gBattleBufferA[gActiveBattler][4] << 24);
+ u16 val2 = gBattleBufferA[gActiveBattler][5] | (gBattleBufferA[gActiveBattler][6] << 8);
- Dma3CopyLarge16_(&gBattleBufferA[gActiveBank][7], (u8 *)val1, val2);
+ Dma3CopyLarge16_(&gBattleBufferA[gActiveBattler][7], (u8 *)val1, val2);
PlayerBufferExecCompleted();
}
void PlayerHandlecmd31(void)
{
- PlayBGM(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
+ PlayBGM(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8));
PlayerBufferExecCompleted();
}
@@ -2989,7 +2989,7 @@ void PlayerHandlecmd37(void)
void PlayerHandlecmd38(void)
{
- gUnknown_020238C8.unk0_0 = gBattleBufferA[gActiveBank][1];
+ gUnknown_020238C8.unk0_0 = gBattleBufferA[gActiveBattler][1];
PlayerBufferExecCompleted();
}
@@ -3007,16 +3007,16 @@ void PlayerHandlecmd40(void)
void PlayerHandleHitAnimation(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].invisible == TRUE)
+ if (gSprites[gBankSpriteIds[gActiveBattler]].invisible == TRUE)
{
PlayerBufferExecCompleted();
}
else
{
gDoingBattleAnim = 1;
- gSprites[gBankSpriteIds[gActiveBank]].data[1] = 0;
- sub_8047858(gActiveBank);
- gBattleBankFunc[gActiveBank] = bx_blink_t1;
+ gSprites[gBankSpriteIds[gActiveBattler]].data[1] = 0;
+ sub_8047858(gActiveBattler);
+ gBattleBankFunc[gActiveBattler] = bx_blink_t1;
}
}
@@ -3029,23 +3029,23 @@ void PlayerHandleEffectivenessSound(void)
{
s8 pan;
- if (GetBankSide(gActiveBank) == 0)
+ if (GetBattlerSide(gActiveBattler) == 0)
pan = -64;
else
pan = 63;
- PlaySE12WithPanning(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8), pan);
+ PlaySE12WithPanning(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8), pan);
PlayerBufferExecCompleted();
}
void PlayerHandlecmd44(void)
{
- PlayFanfare(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
+ PlayFanfare(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8));
PlayerBufferExecCompleted();
}
void PlayerHandleFaintingCry(void)
{
- u16 species = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES);
+ u16 species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES);
PlayCry3(species, -25, 5);
PlayerBufferExecCompleted();
@@ -3053,7 +3053,7 @@ void PlayerHandleFaintingCry(void)
void PlayerHandleIntroSlide(void)
{
- StartBattleIntroAnim(gBattleBufferA[gActiveBank][1]);
+ StartBattleIntroAnim(gBattleBufferA[gActiveBattler][1]);
gUnknown_02024DE8 |= 1;
PlayerBufferExecCompleted();
}
@@ -3063,23 +3063,23 @@ void PlayerHandleTrainerBallThrow(void)
u8 paletteNum;
u8 taskId;
- oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]);
- gSprites[gBankSpriteIds[gActiveBank]].data[0] = 50;
- gSprites[gBankSpriteIds[gActiveBank]].data[2] = -40;
- gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
- gSprites[gBankSpriteIds[gActiveBank]].callback = StartTranslateAnimSpriteByDeltas;
- gSprites[gBankSpriteIds[gActiveBank]].data[5] = gActiveBank;
- StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBank]], sub_8030E38);
- StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], 1);
+ oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBattler]]);
+ gSprites[gBankSpriteIds[gActiveBattler]].data[0] = 50;
+ gSprites[gBankSpriteIds[gActiveBattler]].data[2] = -40;
+ gSprites[gBankSpriteIds[gActiveBattler]].data[4] = gSprites[gBankSpriteIds[gActiveBattler]].pos1.y;
+ gSprites[gBankSpriteIds[gActiveBattler]].callback = StartTranslateAnimSpriteByDeltas;
+ gSprites[gBankSpriteIds[gActiveBattler]].data[5] = gActiveBattler;
+ StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBattler]], sub_8030E38);
+ StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBattler]], 1);
paletteNum = AllocSpritePalette(0xD6F8);
LoadCompressedPalette(gTrainerBackPicPaletteTable[gSaveBlock2.playerGender].data, 0x100 + paletteNum * 16, 32);
- gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = paletteNum;
+ gSprites[gBankSpriteIds[gActiveBattler]].oam.paletteNum = paletteNum;
taskId = CreateTask(task05_08033660, 5);
- gTasks[taskId].data[0] = gActiveBank;
- if (ewram17810[gActiveBank].unk0_0)
- gTasks[gUnknown_02024E68[gActiveBank]].func = sub_8044CA0;
+ gTasks[taskId].data[0] = gActiveBattler;
+ if (ewram17810[gActiveBattler].unk0_0)
+ gTasks[gUnknown_02024E68[gActiveBattler]].func = sub_8044CA0;
ewram17810[4].unk9 |= 1;
- gBattleBankFunc[gActiveBank] = nullsub_91;
+ gBattleBankFunc[gActiveBattler] = nullsub_91;
}
void sub_8030E38(struct Sprite *sprite)
@@ -3089,7 +3089,7 @@ void sub_8030E38(struct Sprite *sprite)
FreeSpriteOamMatrix(sprite);
FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(sprite->oam.paletteNum));
DestroySprite(sprite);
- BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[r4]], r4);
+ BattleLoadPlayerMonSprite(&gPlayerParty[gBattlerPartyIndexes[r4]], r4);
StartSpriteAnim(&gSprites[gBankSpriteIds[r4]], 0);
}
@@ -3101,104 +3101,104 @@ void task05_08033660(u8 taskId)
}
else
{
- u8 savedActiveBank = gActiveBank;
+ u8 savedActiveBank = gActiveBattler;
- gActiveBank = gTasks[taskId].data[0];
+ gActiveBattler = gTasks[taskId].data[0];
if (!IsDoubleBattle() || (gBattleTypeFlags & 0x40))
{
- gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
- sub_802F934(gActiveBank, 0);
+ gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler];
+ sub_802F934(gActiveBattler, 0);
}
else
{
- gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
- sub_802F934(gActiveBank, 0);
- gActiveBank ^= 2;
- gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
- BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
- sub_802F934(gActiveBank, 0);
- gActiveBank ^= 2;
+ gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler];
+ sub_802F934(gActiveBattler, 0);
+ gActiveBattler ^= 2;
+ gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler];
+ BattleLoadPlayerMonSprite(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
+ sub_802F934(gActiveBattler, 0);
+ gActiveBattler ^= 2;
}
- gBattleBankFunc[gActiveBank] = sub_802D500;
- gActiveBank = savedActiveBank;
+ gBattleBankFunc[gActiveBattler] = sub_802D500;
+ gActiveBattler = savedActiveBank;
DestroyTask(taskId);
}
}
void PlayerHandlecmd48(void)
{
- if (gBattleBufferA[gActiveBank][1] != 0 && GetBankSide(gActiveBank) == 0)
+ if (gBattleBufferA[gActiveBattler][1] != 0 && GetBattlerSide(gActiveBattler) == 0)
{
PlayerBufferExecCompleted();
}
else
{
- ewram17810[gActiveBank].unk0_0 = 1;
- gUnknown_02024E68[gActiveBank] = sub_8044804(gActiveBank, (struct BattleInterfaceStruct2 *)&gBattleBufferA[gActiveBank][4], gBattleBufferA[gActiveBank][1], gBattleBufferA[gActiveBank][2]);
- ewram17810[gActiveBank].unk5 = 0;
- if (gBattleBufferA[gActiveBank][2] != 0)
- ewram17810[gActiveBank].unk5 = 0x5D;
- gBattleBankFunc[gActiveBank] = sub_8031064;
+ ewram17810[gActiveBattler].unk0_0 = 1;
+ gUnknown_02024E68[gActiveBattler] = sub_8044804(gActiveBattler, (struct BattleInterfaceStruct2 *)&gBattleBufferA[gActiveBattler][4], gBattleBufferA[gActiveBattler][1], gBattleBufferA[gActiveBattler][2]);
+ ewram17810[gActiveBattler].unk5 = 0;
+ if (gBattleBufferA[gActiveBattler][2] != 0)
+ ewram17810[gActiveBattler].unk5 = 0x5D;
+ gBattleBankFunc[gActiveBattler] = sub_8031064;
}
}
void sub_8031064(void)
{
- if (ewram17810[gActiveBank].unk5++ > 0x5C)
+ if (ewram17810[gActiveBattler].unk5++ > 0x5C)
{
- ewram17810[gActiveBank].unk5 = 0;
+ ewram17810[gActiveBattler].unk5 = 0;
PlayerBufferExecCompleted();
}
}
void PlayerHandlecmd49(void)
{
- if (ewram17810[gActiveBank].unk0_0)
- gTasks[gUnknown_02024E68[gActiveBank]].func = sub_8044CA0;
+ if (ewram17810[gActiveBattler].unk0_0)
+ gTasks[gUnknown_02024E68[gActiveBattler]].func = sub_8044CA0;
PlayerBufferExecCompleted();
}
void PlayerHandlecmd50(void)
{
- dp11b_obj_free(gActiveBank, 1);
- dp11b_obj_free(gActiveBank, 0);
+ dp11b_obj_free(gActiveBattler, 1);
+ dp11b_obj_free(gActiveBattler, 0);
PlayerBufferExecCompleted();
}
void PlayerHandleSpriteInvisibility(void)
{
- if (IsBankSpritePresent(gActiveBank))
+ if (IsBankSpritePresent(gActiveBattler))
{
- gSprites[gBankSpriteIds[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1];
- sub_8031F88(gActiveBank);
+ gSprites[gBankSpriteIds[gActiveBattler]].invisible = gBattleBufferA[gActiveBattler][1];
+ sub_8031F88(gActiveBattler);
}
PlayerBufferExecCompleted();
}
void PlayerHandleBattleAnimation(void)
{
- if (!mplay_80342A4(gActiveBank))
+ if (!mplay_80342A4(gActiveBattler))
{
- u8 val2 = gBattleBufferA[gActiveBank][1];
- u16 val = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8);
+ u8 val2 = gBattleBufferA[gActiveBattler][1];
+ u16 val = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8);
- if (move_anim_start_t3(gActiveBank, gActiveBank, gActiveBank, val2, val))
+ if (move_anim_start_t3(gActiveBattler, gActiveBattler, gActiveBattler, val2, val))
PlayerBufferExecCompleted();
else
- gBattleBankFunc[gActiveBank] = sub_802E460;
+ gBattleBankFunc[gActiveBattler] = sub_802E460;
}
}
void PlayerHandleLinkStandbyMsg(void)
{
- switch (gBattleBufferA[gActiveBank][1])
+ switch (gBattleBufferA[gActiveBattler][1])
{
case 0:
b_link_standby_message();
// fall through
case 1:
- dp11b_obj_free(gActiveBank, 1);
- dp11b_obj_free(gActiveBank, 0);
+ dp11b_obj_free(gActiveBattler, 1);
+ dp11b_obj_free(gActiveBattler, 0);
break;
case 2:
b_link_standby_message();
@@ -3209,17 +3209,17 @@ void PlayerHandleLinkStandbyMsg(void)
void PlayerHandleResetActionMoveSelection(void)
{
- switch (gBattleBufferA[gActiveBank][1])
+ switch (gBattleBufferA[gActiveBattler][1])
{
case 0:
- gActionSelectionCursor[gActiveBank] = 0;
- gMoveSelectionCursor[gActiveBank] = 0;
+ gActionSelectionCursor[gActiveBattler] = 0;
+ gMoveSelectionCursor[gActiveBattler] = 0;
break;
case 1:
- gActionSelectionCursor[gActiveBank] = 0;
+ gActionSelectionCursor[gActiveBattler] = 0;
break;
case 2:
- gMoveSelectionCursor[gActiveBank] = 0;
+ gMoveSelectionCursor[gActiveBattler] = 0;
break;
}
PlayerBufferExecCompleted();
@@ -3227,11 +3227,11 @@ void PlayerHandleResetActionMoveSelection(void)
void PlayerHandlecmd55(void)
{
- gBattleOutcome = gBattleBufferA[gActiveBank][1];
+ gBattleOutcome = gBattleBufferA[gActiveBattler][1];
FadeOutMapMusic(5);
BeginFastPaletteFade(3);
PlayerBufferExecCompleted();
- gBattleBankFunc[gActiveBank] = sub_802D18C;
+ gBattleBankFunc[gActiveBattler] = sub_802D18C;
}
void PlayerHandlecmd56(void)
diff --git a/src/battle/battle_controller_safari.c b/src/battle/battle_controller_safari.c
index 45745cc5a..72054ee6b 100644
--- a/src/battle/battle_controller_safari.c
+++ b/src/battle/battle_controller_safari.c
@@ -20,7 +20,7 @@ extern u8 gDisplayedStringBattle[];
extern u8 gActionSelectionCursor[];
extern const u8 BattleText_PlayerMenu[];
-extern u8 gActiveBank;
+extern u8 gActiveBattler;
extern const u8 BattleText_MenuOptionsSafari[];
extern void *gBattleBankFunc[];
@@ -34,13 +34,13 @@ extern u16 gSpecialVar_ItemId;
extern MainCallback gPreBattleCallback1;
extern u8 gBankInMenu;
extern u8 gHealthboxIDs[];
-extern u16 gBattlePartyID[];
+extern u16 gBattlerPartyIndexes[];
extern u16 gUnknown_02024DE8;
extern u8 gBattleOutcome;
-extern u8 GetBankSide(u8);
-extern u8 GetBankByIdentity(u8);
-extern u8 GetBankIdentity(u8);
+extern u8 GetBattlerSide(u8);
+extern u8 GetBattlerAtPosition(u8);
+extern u8 GetBattlerPosition(u8);
extern void LoadPlayerTrainerBankSprite();
extern u8 sub_8079E90();
extern void sub_80313A0(struct Sprite *);
@@ -192,15 +192,15 @@ void unref_sub_812B464(void)
void SetBankFuncToSafariBufferRunCommand(void)
{
- gBattleBankFunc[gActiveBank] = SafariBufferRunCommand;
+ gBattleBankFunc[gActiveBattler] = SafariBufferRunCommand;
}
void SafariBufferRunCommand(void)
{
- if (gBattleExecBuffer & gBitTable[gActiveBank])
+ if (gBattleExecBuffer & gBitTable[gActiveBattler])
{
- if (gBattleBufferA[gActiveBank][0] < 0x39)
- gSafariBufferCommands[gBattleBufferA[gActiveBank][0]]();
+ if (gBattleBufferA[gActiveBattler][0] < 0x39)
+ gSafariBufferCommands[gBattleBufferA[gActiveBattler][0]]();
else
SafariBufferExecCompleted();
}
@@ -214,7 +214,7 @@ void bx_battle_menu_t6_2(void)
DestroyMenuCursor();
// Useless switch statement.
- switch (gActionSelectionCursor[gActiveBank])
+ switch (gActionSelectionCursor[gActiveBattler])
{
case 0:
Emitcmd33(1, 5, 0);
@@ -233,49 +233,49 @@ void bx_battle_menu_t6_2(void)
}
else if (gMain.newKeys & DPAD_LEFT)
{
- if (gActionSelectionCursor[gActiveBank] & 1)
+ if (gActionSelectionCursor[gActiveBattler] & 1)
{
PlaySE(SE_SELECT);
- nullsub_8(gActionSelectionCursor[gActiveBank]);
- gActionSelectionCursor[gActiveBank] ^= 1;
- sub_802E3E4(gActionSelectionCursor[gActiveBank], 0);
+ nullsub_8(gActionSelectionCursor[gActiveBattler]);
+ gActionSelectionCursor[gActiveBattler] ^= 1;
+ sub_802E3E4(gActionSelectionCursor[gActiveBattler], 0);
}
}
else if (gMain.newKeys & DPAD_RIGHT)
{
- if (!(gActionSelectionCursor[gActiveBank] & 1))
+ if (!(gActionSelectionCursor[gActiveBattler] & 1))
{
PlaySE(SE_SELECT);
- nullsub_8(gActionSelectionCursor[gActiveBank]);
- gActionSelectionCursor[gActiveBank] ^= 1;
- sub_802E3E4(gActionSelectionCursor[gActiveBank], 0);
+ nullsub_8(gActionSelectionCursor[gActiveBattler]);
+ gActionSelectionCursor[gActiveBattler] ^= 1;
+ sub_802E3E4(gActionSelectionCursor[gActiveBattler], 0);
}
}
else if (gMain.newKeys & DPAD_UP)
{
- if (gActionSelectionCursor[gActiveBank] & 2)
+ if (gActionSelectionCursor[gActiveBattler] & 2)
{
PlaySE(SE_SELECT);
- nullsub_8(gActionSelectionCursor[gActiveBank]);
- gActionSelectionCursor[gActiveBank] ^= 2;
- sub_802E3E4(gActionSelectionCursor[gActiveBank], 0);
+ nullsub_8(gActionSelectionCursor[gActiveBattler]);
+ gActionSelectionCursor[gActiveBattler] ^= 2;
+ sub_802E3E4(gActionSelectionCursor[gActiveBattler], 0);
}
}
else if (gMain.newKeys & DPAD_DOWN)
{
- if (!(gActionSelectionCursor[gActiveBank] & 2))
+ if (!(gActionSelectionCursor[gActiveBattler] & 2))
{
PlaySE(SE_SELECT);
- nullsub_8(gActionSelectionCursor[gActiveBank]);
- gActionSelectionCursor[gActiveBank] ^= 2;
- sub_802E3E4(gActionSelectionCursor[gActiveBank], 0);
+ nullsub_8(gActionSelectionCursor[gActiveBattler]);
+ gActionSelectionCursor[gActiveBattler] ^= 2;
+ sub_802E3E4(gActionSelectionCursor[gActiveBattler], 0);
}
}
#if DEBUG
else if (gMain.newKeys & R_BUTTON)
{
- if (!ewram17810[gActiveBank].unk0_5)
- move_anim_start_t3(gActiveBank, gActiveBank, gActiveBank, 4, 0);
+ if (!ewram17810[gActiveBattler].unk0_5)
+ move_anim_start_t3(gActiveBattler, gActiveBattler, gActiveBattler, 4, 0);
}
else if (gMain.newKeys & START_BUTTON)
{
@@ -286,7 +286,7 @@ void bx_battle_menu_t6_2(void)
void sub_812B65C(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gBankSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
SafariBufferExecCompleted();
}
@@ -308,7 +308,7 @@ void sub_812B6AC(void)
void bx_wait_t6(void)
{
- if (!gDoingBattleAnim || !ewram17810[gActiveBank].unk0_6)
+ if (!gDoingBattleAnim || !ewram17810[gActiveBattler].unk0_6)
SafariBufferExecCompleted();
}
@@ -316,7 +316,7 @@ void sub_812B724(void)
{
if (!gPaletteFade.active)
{
- gBattleBankFunc[gActiveBank] = sub_812B758;
+ gBattleBankFunc[gActiveBattler] = sub_812B758;
sub_810BADC();
}
}
@@ -332,29 +332,29 @@ void sub_812B758(void)
void sub_812B794(void)
{
- if (!ewram17810[gActiveBank].unk0_5)
+ if (!ewram17810[gActiveBattler].unk0_5)
SafariBufferExecCompleted();
}
void SafariBufferExecCompleted(void)
{
- gBattleBankFunc[gActiveBank] = SafariBufferRunCommand;
+ gBattleBankFunc[gActiveBattler] = SafariBufferRunCommand;
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{
u8 playerId = GetMultiplayerId();
PrepareBufferDataTransferLink(2, 4, &playerId);
- gBattleBufferA[gActiveBank][0] = 0x38;
+ gBattleBufferA[gActiveBattler][0] = 0x38;
}
else
{
- gBattleExecBuffer &= ~gBitTable[gActiveBank];
+ gBattleExecBuffer &= ~gBitTable[gActiveBattler];
}
}
void unref_sub_812B838(void)
{
- if (!ewram17810[gActiveBank].unk0_4)
+ if (!ewram17810[gActiveBattler].unk0_4)
SafariBufferExecCompleted();
}
@@ -395,18 +395,18 @@ void SafariHandleReturnPokeToBall(void)
void SafariHandleTrainerThrow(void)
{
- LoadPlayerTrainerBankSprite(gSaveBlock2.playerGender, gActiveBank);
- GetMonSpriteTemplate_803C5A0(gSaveBlock2.playerGender, GetBankIdentity(gActiveBank));
- gBankSpriteIds[gActiveBank] = CreateSprite(
+ LoadPlayerTrainerBankSprite(gSaveBlock2.playerGender, gActiveBattler);
+ GetMonSpriteTemplate_803C5A0(gSaveBlock2.playerGender, GetBattlerPosition(gActiveBattler));
+ gBankSpriteIds[gActiveBattler] = CreateSprite(
&gUnknown_02024E8C,
80,
(8 - gTrainerBackPicCoords[gSaveBlock2.playerGender].coords) * 4 + 80,
30);
- gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank;
- gSprites[gBankSpriteIds[gActiveBank]].pos2.x = 240;
- gSprites[gBankSpriteIds[gActiveBank]].data[0] = -2;
- gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80313A0;
- gBattleBankFunc[gActiveBank] = sub_812B65C;
+ gSprites[gBankSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
+ gSprites[gBankSpriteIds[gActiveBattler]].pos2.x = 240;
+ gSprites[gBankSpriteIds[gActiveBattler]].data[0] = -2;
+ gSprites[gBankSpriteIds[gActiveBattler]].callback = sub_80313A0;
+ gBattleBankFunc[gActiveBattler] = sub_812B65C;
}
void SafariHandleTrainerSlide(void)
@@ -433,18 +433,18 @@ void SafariHandlecmd12(void)
{
ewram17840.unk8 = 4;
gDoingBattleAnim = 1;
- move_anim_start_t4(gActiveBank, gActiveBank, GetBankByIdentity(1), 4);
- gBattleBankFunc[gActiveBank] = bx_wait_t6;
+ move_anim_start_t4(gActiveBattler, gActiveBattler, GetBattlerAtPosition(1), 4);
+ gBattleBankFunc[gActiveBattler] = bx_wait_t6;
}
void SafariHandleBallThrow(void)
{
- u8 var = gBattleBufferA[gActiveBank][1];
+ u8 var = gBattleBufferA[gActiveBattler][1];
ewram17840.unk8 = var;
gDoingBattleAnim = 1;
- move_anim_start_t4(gActiveBank, gActiveBank, GetBankByIdentity(1), 4);
- gBattleBankFunc[gActiveBank] = bx_wait_t6;
+ move_anim_start_t4(gActiveBattler, gActiveBattler, GetBattlerAtPosition(1), 4);
+ gBattleBankFunc[gActiveBattler] = bx_wait_t6;
}
// TODO: spell Pause correctly
@@ -462,14 +462,14 @@ void SafariHandlePrintString(void)
{
gBattle_BG0_X = 0;
gBattle_BG0_Y = 0;
- BufferStringBattle(*(u16 *)&gBattleBufferA[gActiveBank][2]);
+ BufferStringBattle(*(u16 *)&gBattleBufferA[gActiveBattler][2]);
Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
- gBattleBankFunc[gActiveBank] = sub_812B694;
+ gBattleBankFunc[gActiveBattler] = sub_812B694;
}
void SafariHandlePrintStringPlayerOnly(void)
{
- if (GetBankSide(gActiveBank) == 0)
+ if (GetBattlerSide(gActiveBattler) == 0)
SafariHandlePrintString();
else
SafariBufferExecCompleted();
@@ -484,7 +484,7 @@ void SafariHandlecmd18(void)
gUnknown_03004210.paletteNum = 0;
Text_FillWindowRectDefPalette(&gUnknown_03004210, 10, 2, 15, 27, 18);
Text_FillWindowRectDefPalette(&gUnknown_03004210, 10, 2, 35, 16, 36);
- gBattleBankFunc[gActiveBank] = bx_battle_menu_t6_2;
+ gBattleBankFunc[gActiveBattler] = bx_battle_menu_t6_2;
Text_InitWindow(&gUnknown_03004210, BattleText_MenuOptionsSafari, 400, 18, 35);
Text_PrintWindow8002F44(&gUnknown_03004210);
@@ -493,7 +493,7 @@ void SafariHandlecmd18(void)
for (i = 0; i < 4; i++)
nullsub_8(i);
- sub_802E3E4(gActionSelectionCursor[gActiveBank], 0);
+ sub_802E3E4(gActionSelectionCursor[gActiveBattler], 0);
StrCpyDecodeToDisplayedStringBattle(BattleText_PlayerMenu);
Text_InitWindow(&gUnknown_03004210, gDisplayedStringBattle, SUB_812BB10_TILE_DATA_OFFSET, 2, 35);
@@ -512,9 +512,9 @@ void SafariHandlecmd20(void)
void SafariHandleOpenBag(void)
{
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
- gBattleBankFunc[gActiveBank] = sub_812B724;
- gBankInMenu = gActiveBank;
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
+ gBattleBankFunc[gActiveBattler] = sub_812B724;
+ gBankInMenu = gActiveBattler;
}
void SafariHandlecmd22(void)
@@ -539,7 +539,7 @@ void SafariHandleExpBarUpdate(void)
void SafariHandleStatusIconUpdate(void)
{
- sub_8045A5C(gHealthboxIDs[gActiveBank], &gPlayerParty[gBattlePartyID[gActiveBank]], 11);
+ sub_8045A5C(gHealthboxIDs[gActiveBattler], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], 11);
SafariBufferExecCompleted();
}
@@ -627,23 +627,23 @@ void SafariHandleEffectivenessSound(void)
{
s8 pan;
- if (GetBankSide(gActiveBank) == 0)
+ if (GetBattlerSide(gActiveBattler) == 0)
pan = -64;
else
pan = 63;
- PlaySE12WithPanning(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8), pan);
+ PlaySE12WithPanning(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8), pan);
SafariBufferExecCompleted();
}
void SafariHandlecmd44(void)
{
- PlayFanfare(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
+ PlayFanfare(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8));
SafariBufferExecCompleted();
}
void SafariHandleFaintingCry(void)
{
- u16 species = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES);
+ u16 species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES);
PlayCry1(species, 25);
SafariBufferExecCompleted();
@@ -651,16 +651,16 @@ void SafariHandleFaintingCry(void)
void SafariHandleIntroSlide(void)
{
- StartBattleIntroAnim(gBattleBufferA[gActiveBank][1]);
+ StartBattleIntroAnim(gBattleBufferA[gActiveBattler][1]);
gUnknown_02024DE8 |= 1;
SafariBufferExecCompleted();
}
void SafariHandleTrainerBallThrow(void)
{
- sub_8045A5C(gHealthboxIDs[gActiveBank], &gPlayerParty[gBattlePartyID[gActiveBank]], 10);
- sub_804777C(gActiveBank);
- sub_8043DFC(gHealthboxIDs[gActiveBank]);
+ sub_8045A5C(gHealthboxIDs[gActiveBattler], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], 10);
+ sub_804777C(gActiveBattler);
+ sub_8043DFC(gHealthboxIDs[gActiveBattler]);
SafariBufferExecCompleted();
}
@@ -686,13 +686,13 @@ void SafariHandleSpriteInvisibility(void)
void SafariHandleBattleAnimation(void)
{
- u8 r3 = gBattleBufferA[gActiveBank][1];
- u16 r4 = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8);
+ u8 r3 = gBattleBufferA[gActiveBattler][1];
+ u16 r4 = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8);
- if (move_anim_start_t3(gActiveBank, gActiveBank, gActiveBank, r3, r4) != 0)
+ if (move_anim_start_t3(gActiveBattler, gActiveBattler, gActiveBattler, r3, r4) != 0)
SafariBufferExecCompleted();
else
- gBattleBankFunc[gActiveBank] = sub_812B794;
+ gBattleBankFunc[gActiveBattler] = sub_812B794;
}
void SafariHandleLinkStandbyMsg(void)
@@ -707,12 +707,12 @@ void SafariHandleResetActionMoveSelection(void)
void SafariHandlecmd55(void)
{
- gBattleOutcome = gBattleBufferA[gActiveBank][1];
+ gBattleOutcome = gBattleBufferA[gActiveBattler][1];
FadeOutMapMusic(5);
BeginFastPaletteFade(3);
SafariBufferExecCompleted();
if ((gBattleTypeFlags & BATTLE_TYPE_LINK) && !(gBattleTypeFlags & BATTLE_TYPE_WILD))
- gBattleBankFunc[gActiveBank] = sub_812B6AC;
+ gBattleBankFunc[gActiveBattler] = sub_812B6AC;
}
void SafariHandlecmd56(void)
diff --git a/src/battle/battle_controller_wally.c b/src/battle/battle_controller_wally.c
index 76e4640c7..ed4eadee6 100644
--- a/src/battle/battle_controller_wally.c
+++ b/src/battle/battle_controller_wally.c
@@ -27,18 +27,18 @@ struct MovePpInfo
u8 ppBonuses;
};
-extern u8 gActiveBank;
+extern u8 gActiveBattler;
extern void (*gBattleBankFunc[])(void);
extern u32 gBattleExecBuffer;
extern u8 gBattleBufferA[][0x200];
extern u8 gBankSpriteIds[];
extern MainCallback gPreBattleCallback1;
extern bool8 gDoingBattleAnim;
-extern u16 gBattlePartyID[];
+extern u16 gBattlerPartyIndexes[];
extern u8 gHealthboxIDs[];
extern u16 gBattleTypeFlags;
extern u16 gAnimMovePower;
-extern u32 gAnimMoveDmg;
+extern s32 gAnimMoveDmg;
extern u8 gAnimFriendship;
extern u16 gWeatherMoveAnim;
extern u32 gTransformedPersonalities[];
@@ -71,16 +71,16 @@ extern bool8 IsDoubleBattle(void);
extern void c3_0802FDF4(u8);
extern void PlayerHandlecmd1(void);
extern void LoadPlayerTrainerBankSprite();
-extern u8 GetBankIdentity(u8);
+extern u8 GetBattlerPosition(u8);
extern void sub_80313A0(struct Sprite *);
-extern u8 GetBankByIdentity(u8);
+extern u8 GetBattlerAtPosition(u8);
extern u8 sub_8031720();
extern void DoMoveAnim();
extern void sub_80326EC();
extern void sub_8031F24(void);
extern void sub_80324BC();
extern void BufferStringBattle();
-extern u8 GetBankSide(u8);
+extern u8 GetBattlerSide(u8);
extern void sub_80304A8(void);
extern void sub_8047858();
extern void StartBattleIntroAnim();
@@ -89,7 +89,7 @@ extern void StartTranslateAnimSpriteByDeltas(struct Sprite *);
extern void sub_8030E38(struct Sprite *);
extern void StoreSpriteCallbackInData();
extern u8 sub_8046400();
-extern u8 GetBankPosition();
+extern u8 GetBattlerSpriteCoord();
extern u8 sub_8077F68();
extern u8 sub_8079E90();
extern void sub_80312F0(struct Sprite *);
@@ -236,7 +236,7 @@ void unref_sub_8137220(void)
void SetBankFuncToWallyBufferRunCommand(void)
{
- gBattleBankFunc[gActiveBank] = WallyBufferRunCommand;
+ gBattleBankFunc[gActiveBattler] = WallyBufferRunCommand;
ewram160A8 = 0;
ewram160A9 = 0;
ewram160AA = 0;
@@ -245,10 +245,10 @@ void SetBankFuncToWallyBufferRunCommand(void)
void WallyBufferRunCommand(void)
{
- if (gBattleExecBuffer & gBitTable[gActiveBank])
+ if (gBattleExecBuffer & gBitTable[gActiveBattler])
{
- if (gBattleBufferA[gActiveBank][0] < 0x39)
- gWallyBufferCommands[gBattleBufferA[gActiveBank][0]]();
+ if (gBattleBufferA[gActiveBattler][0] < 0x39)
+ gWallyBufferCommands[gBattleBufferA[gActiveBattler][0]]();
else
WallyBufferExecCompleted();
}
@@ -323,7 +323,7 @@ void sub_81372BC(void)
void sub_813741C(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gBankSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
WallyBufferExecCompleted();
}
@@ -353,7 +353,7 @@ void sub_81374C4(void)
{
if (!gPaletteFade.active)
{
- gBattleBankFunc[gActiveBank] = sub_81374FC;
+ gBattleBankFunc[gActiveBattler] = sub_81374FC;
nullsub_14();
PrepareBagForWallyTutorial();
}
@@ -371,27 +371,27 @@ void sub_81374FC(void)
void sub_8137538(void)
{
- if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank].unk0_7)
- sub_8141828(gActiveBank, &gPlayerParty[gBattlePartyID[gActiveBank]]);
+ if (!ewram17810[gActiveBattler].unk0_3 && !ewram17810[gActiveBattler].unk0_7)
+ sub_8141828(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]);
- if (!ewram17810[gActiveBank ^ 2].unk0_3 && !ewram17810[gActiveBank ^ 2].unk0_7)
- sub_8141828(gActiveBank ^ 2, &gPlayerParty[gBattlePartyID[gActiveBank ^ 2]]);
+ if (!ewram17810[gActiveBattler ^ 2].unk0_3 && !ewram17810[gActiveBattler ^ 2].unk0_7)
+ sub_8141828(gActiveBattler ^ 2, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ 2]]);
- if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank ^ 2].unk0_3)
+ if (!ewram17810[gActiveBattler].unk0_3 && !ewram17810[gActiveBattler ^ 2].unk0_3)
{
if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
- DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank ^ 2]]);
- sub_8045A5C(gHealthboxIDs[gActiveBank ^ 2], &gPlayerParty[gBattlePartyID[gActiveBank ^ 2]], 0);
- sub_804777C(gActiveBank ^ 2);
- sub_8043DFC(gHealthboxIDs[gActiveBank ^ 2]);
+ DestroySprite(&gSprites[gUnknown_0300434C[gActiveBattler ^ 2]]);
+ sub_8045A5C(gHealthboxIDs[gActiveBattler ^ 2], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ 2]], 0);
+ sub_804777C(gActiveBattler ^ 2);
+ sub_8043DFC(gHealthboxIDs[gActiveBattler ^ 2]);
}
- DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank]]);
- sub_8045A5C(gHealthboxIDs[gActiveBank], &gPlayerParty[gBattlePartyID[gActiveBank]], 0);
- sub_804777C(gActiveBank);
- sub_8043DFC(gHealthboxIDs[gActiveBank]);
+ DestroySprite(&gSprites[gUnknown_0300434C[gActiveBattler]]);
+ sub_8045A5C(gHealthboxIDs[gActiveBattler], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], 0);
+ sub_804777C(gActiveBattler);
+ sub_8043DFC(gHealthboxIDs[gActiveBattler]);
ewram17840.unk9_0 = 0;
- gBattleBankFunc[gActiveBank] = sub_81376B8;
+ gBattleBankFunc[gActiveBattler] = sub_81376B8;
}
}
@@ -399,18 +399,18 @@ void sub_81376B8(void)
{
bool8 r4 = FALSE;
- if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gHealthboxIDs[gActiveBattler]].callback == SpriteCallbackDummy)
r4 = TRUE;
- if (r4 && ewram17810[gActiveBank].unk1_0 && ewram17810[gActiveBank ^ 2].unk1_0)
+ if (r4 && ewram17810[gActiveBattler].unk1_0 && ewram17810[gActiveBattler ^ 2].unk1_0)
{
- ewram17810[gActiveBank].unk0_7 = 0;
- ewram17810[gActiveBank].unk1_0 = 0;
- ewram17810[gActiveBank ^ 2].unk0_7 = 0;
- ewram17810[gActiveBank ^ 2].unk1_0 = 0;
+ ewram17810[gActiveBattler].unk0_7 = 0;
+ ewram17810[gActiveBattler].unk1_0 = 0;
+ ewram17810[gActiveBattler ^ 2].unk0_7 = 0;
+ ewram17810[gActiveBattler ^ 2].unk1_0 = 0;
FreeSpriteTilesByTag(0x27F9);
FreeSpritePaletteByTag(0x27F9);
CreateTask(c3_0802FDF4, 10);
- HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
WallyBufferExecCompleted();
}
}
@@ -419,22 +419,22 @@ void sub_81377B0(void)
{
s16 r4;
- r4 = sub_8045C78(gActiveBank, gHealthboxIDs[gActiveBank], 0, 0);
- sub_8043DFC(gHealthboxIDs[gActiveBank]);
+ r4 = sub_8045C78(gActiveBattler, gHealthboxIDs[gActiveBattler], 0, 0);
+ sub_8043DFC(gHealthboxIDs[gActiveBattler]);
if (r4 != -1)
{
- sub_80440EC(gHealthboxIDs[gActiveBank], r4, 0);
+ sub_80440EC(gHealthboxIDs[gActiveBattler], r4, 0);
}
else
{
- HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
WallyBufferExecCompleted();
}
}
void bx_blink_t5(void)
{
- u8 spriteId = gBankSpriteIds[gActiveBank];
+ u8 spriteId = gBankSpriteIds[gActiveBattler];
if (gSprites[spriteId].data[1] == 32)
{
@@ -453,11 +453,11 @@ void bx_blink_t5(void)
void sub_813789C(void)
{
- if (!ewram17810[gActiveBank].unk0_6)
+ if (!ewram17810[gActiveBattler].unk0_6)
{
- FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
- DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
- sub_8043DB0(gHealthboxIDs[gActiveBank]);
+ FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBattler]]);
+ DestroySprite(&gSprites[gBankSpriteIds[gActiveBattler]]);
+ sub_8043DB0(gHealthboxIDs[gActiveBattler]);
WallyBufferExecCompleted();
}
}
@@ -465,35 +465,35 @@ void sub_813789C(void)
// Duplicate of sub_813741C
void sub_8137908(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gBankSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
WallyBufferExecCompleted();
}
void sub_8137940(void)
{
- if (!ewram17810[gActiveBank].unk0_5)
+ if (!ewram17810[gActiveBattler].unk0_5)
WallyBufferExecCompleted();
}
void WallyBufferExecCompleted(void)
{
- gBattleBankFunc[gActiveBank] = WallyBufferRunCommand;
+ gBattleBankFunc[gActiveBattler] = WallyBufferRunCommand;
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{
u8 multiplayerId = GetMultiplayerId();
PrepareBufferDataTransferLink(2, 4, &multiplayerId);
- gBattleBufferA[gActiveBank][0] = 0x38;
+ gBattleBufferA[gActiveBattler][0] = 0x38;
}
else
{
- gBattleExecBuffer &= ~gBitTable[gActiveBank];
+ gBattleExecBuffer &= ~gBitTable[gActiveBattler];
}
}
void unref_sub_81379E4(void)
{
- if (!ewram17810[gActiveBank].unk0_4)
+ if (!ewram17810[gActiveBattler].unk0_4)
WallyBufferExecCompleted();
}
@@ -504,13 +504,13 @@ void WallyHandleGetAttributes(void)
u8 r4;
s32 i;
- if (gBattleBufferA[gActiveBank][2] == 0)
+ if (gBattleBufferA[gActiveBattler][2] == 0)
{
- r6 = sub_8137A84(gBattlePartyID[gActiveBank], arr);
+ r6 = sub_8137A84(gBattlerPartyIndexes[gActiveBattler], arr);
}
else
{
- r4 = gBattleBufferA[gActiveBank][2];
+ r4 = gBattleBufferA[gActiveBattler][2];
for (i = 0; i < 6; i++)
{
if (r4 & 1)
@@ -532,7 +532,7 @@ u32 sub_8137A84(u8 a, u8 *buffer)
u32 data32;
s32 size = 0;
- switch (gBattleBufferA[gActiveBank][1])
+ switch (gBattleBufferA[gActiveBattler][1])
{
case 0:
battlePokemon.species = GetMonData(&gPlayerParty[a], MON_DATA_SPECIES);
@@ -594,7 +594,7 @@ u32 sub_8137A84(u8 a, u8 *buffer)
case 5:
case 6:
case 7:
- data16 = GetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + gBattleBufferA[gActiveBank][1] - 4);
+ data16 = GetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + gBattleBufferA[gActiveBattler][1] - 4);
buffer[0] = data16;
buffer[1] = data16 >> 8;
size = 2;
@@ -609,7 +609,7 @@ u32 sub_8137A84(u8 a, u8 *buffer)
case 10:
case 11:
case 12:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_PP1 + gBattleBufferA[gActiveBank][1] - 9);
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_PP1 + gBattleBufferA[gActiveBattler][1] - 9);
size = 1;
break;
case 17:
@@ -833,13 +833,13 @@ void WallyHandleSetAttributes(void)
u8 r4;
u8 i;
- if (gBattleBufferA[gActiveBank][2] == 0)
+ if (gBattleBufferA[gActiveBattler][2] == 0)
{
- sub_8138294(gBattlePartyID[gActiveBank]);
+ sub_8138294(gBattlerPartyIndexes[gActiveBattler]);
}
else
{
- r4 = gBattleBufferA[gActiveBank][2];
+ r4 = gBattleBufferA[gActiveBattler][2];
for (i = 0; i < 6; i++)
{
if (r4 & 1)
@@ -852,11 +852,11 @@ void WallyHandleSetAttributes(void)
void sub_8138294(u8 a)
{
- struct BattlePokemon *battlePokemon = (struct BattlePokemon *)&gBattleBufferA[gActiveBank][3];
- struct MovePpInfo *moveData = (struct MovePpInfo *)&gBattleBufferA[gActiveBank][3];
+ struct BattlePokemon *battlePokemon = (struct BattlePokemon *)&gBattleBufferA[gActiveBattler][3];
+ struct MovePpInfo *moveData = (struct MovePpInfo *)&gBattleBufferA[gActiveBattler][3];
s32 i;
- switch (gBattleBufferA[gActiveBank][1])
+ switch (gBattleBufferA[gActiveBattler][1])
{
case 0:
{
@@ -897,10 +897,10 @@ void sub_8138294(u8 a)
}
break;
case 1:
- SetMonData(&gPlayerParty[a], MON_DATA_SPECIES, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_SPECIES, &gBattleBufferA[gActiveBattler][3]);
break;
case 2:
- SetMonData(&gPlayerParty[a], MON_DATA_HELD_ITEM, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_HELD_ITEM, &gBattleBufferA[gActiveBattler][3]);
break;
case 3:
for (i = 0; i < 4; i++)
@@ -914,157 +914,157 @@ void sub_8138294(u8 a)
case 5:
case 6:
case 7:
- SetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + gBattleBufferA[gActiveBank][1] - 4, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + gBattleBufferA[gActiveBattler][1] - 4, &gBattleBufferA[gActiveBattler][3]);
break;
case 8:
- SetMonData(&gPlayerParty[a], MON_DATA_PP1, &gBattleBufferA[gActiveBank][3]);
- SetMonData(&gPlayerParty[a], MON_DATA_PP2, &gBattleBufferA[gActiveBank][4]);
- SetMonData(&gPlayerParty[a], MON_DATA_PP3, &gBattleBufferA[gActiveBank][5]);
- SetMonData(&gPlayerParty[a], MON_DATA_PP4, &gBattleBufferA[gActiveBank][6]);
- SetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES, &gBattleBufferA[gActiveBank][7]);
+ SetMonData(&gPlayerParty[a], MON_DATA_PP1, &gBattleBufferA[gActiveBattler][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_PP2, &gBattleBufferA[gActiveBattler][4]);
+ SetMonData(&gPlayerParty[a], MON_DATA_PP3, &gBattleBufferA[gActiveBattler][5]);
+ SetMonData(&gPlayerParty[a], MON_DATA_PP4, &gBattleBufferA[gActiveBattler][6]);
+ SetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES, &gBattleBufferA[gActiveBattler][7]);
break;
case 9:
case 10:
case 11:
case 12:
- SetMonData(&gPlayerParty[a], MON_DATA_PP1 + gBattleBufferA[gActiveBank][1] - 9, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_PP1 + gBattleBufferA[gActiveBattler][1] - 9, &gBattleBufferA[gActiveBattler][3]);
break;
case 17:
- SetMonData(&gPlayerParty[a], MON_DATA_OT_ID, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_OT_ID, &gBattleBufferA[gActiveBattler][3]);
break;
case 18:
- SetMonData(&gPlayerParty[a], MON_DATA_EXP, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_EXP, &gBattleBufferA[gActiveBattler][3]);
break;
case 19:
- SetMonData(&gPlayerParty[a], MON_DATA_HP_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_HP_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case 20:
- SetMonData(&gPlayerParty[a], MON_DATA_ATK_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_ATK_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case 21:
- SetMonData(&gPlayerParty[a], MON_DATA_DEF_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_DEF_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case 22:
- SetMonData(&gPlayerParty[a], MON_DATA_SPEED_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_SPEED_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case 23:
- SetMonData(&gPlayerParty[a], MON_DATA_SPATK_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_SPATK_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case 24:
- SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case 25:
- SetMonData(&gPlayerParty[a], MON_DATA_FRIENDSHIP, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_FRIENDSHIP, &gBattleBufferA[gActiveBattler][3]);
break;
case 26:
- SetMonData(&gPlayerParty[a], MON_DATA_POKERUS, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_POKERUS, &gBattleBufferA[gActiveBattler][3]);
break;
case 27:
- SetMonData(&gPlayerParty[a], MON_DATA_MET_LOCATION, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_MET_LOCATION, &gBattleBufferA[gActiveBattler][3]);
break;
case 28:
- SetMonData(&gPlayerParty[a], MON_DATA_MET_LEVEL, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_MET_LEVEL, &gBattleBufferA[gActiveBattler][3]);
break;
case 29:
- SetMonData(&gPlayerParty[a], MON_DATA_MET_GAME, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_MET_GAME, &gBattleBufferA[gActiveBattler][3]);
break;
case 30:
- SetMonData(&gPlayerParty[a], MON_DATA_POKEBALL, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_POKEBALL, &gBattleBufferA[gActiveBattler][3]);
break;
case 31:
- SetMonData(&gPlayerParty[a], MON_DATA_HP_IV, &gBattleBufferA[gActiveBank][3]);
- SetMonData(&gPlayerParty[a], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBank][4]);
- SetMonData(&gPlayerParty[a], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][5]);
- SetMonData(&gPlayerParty[a], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBank][6]);
- SetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][7]);
- SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBank][8]);
+ SetMonData(&gPlayerParty[a], MON_DATA_HP_IV, &gBattleBufferA[gActiveBattler][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBattler][4]);
+ SetMonData(&gPlayerParty[a], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBattler][5]);
+ SetMonData(&gPlayerParty[a], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBattler][6]);
+ SetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBattler][7]);
+ SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBattler][8]);
break;
case 32:
- SetMonData(&gPlayerParty[a], MON_DATA_HP_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_HP_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case 33:
- SetMonData(&gPlayerParty[a], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case 34:
- SetMonData(&gPlayerParty[a], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case 35:
- SetMonData(&gPlayerParty[a], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case 36:
- SetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case 37:
- SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case 38:
- SetMonData(&gPlayerParty[a], MON_DATA_PERSONALITY, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_PERSONALITY, &gBattleBufferA[gActiveBattler][3]);
break;
case 39:
- SetMonData(&gPlayerParty[a], MON_DATA_CHECKSUM, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_CHECKSUM, &gBattleBufferA[gActiveBattler][3]);
break;
case 40:
- SetMonData(&gPlayerParty[a], MON_DATA_STATUS, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_STATUS, &gBattleBufferA[gActiveBattler][3]);
break;
case 41:
- SetMonData(&gPlayerParty[a], MON_DATA_LEVEL, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_LEVEL, &gBattleBufferA[gActiveBattler][3]);
break;
case 42:
- SetMonData(&gPlayerParty[a], MON_DATA_HP, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_HP, &gBattleBufferA[gActiveBattler][3]);
break;
case 43:
- SetMonData(&gPlayerParty[a], MON_DATA_MAX_HP, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_MAX_HP, &gBattleBufferA[gActiveBattler][3]);
break;
case 44:
- SetMonData(&gPlayerParty[a], MON_DATA_ATK, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_ATK, &gBattleBufferA[gActiveBattler][3]);
break;
case 45:
- SetMonData(&gPlayerParty[a], MON_DATA_DEF, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_DEF, &gBattleBufferA[gActiveBattler][3]);
break;
case 46:
- SetMonData(&gPlayerParty[a], MON_DATA_SPEED, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_SPEED, &gBattleBufferA[gActiveBattler][3]);
break;
case 47:
- SetMonData(&gPlayerParty[a], MON_DATA_SPATK, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_SPATK, &gBattleBufferA[gActiveBattler][3]);
break;
case 48:
- SetMonData(&gPlayerParty[a], MON_DATA_SPDEF, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_SPDEF, &gBattleBufferA[gActiveBattler][3]);
break;
case 49:
- SetMonData(&gPlayerParty[a], MON_DATA_COOL, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_COOL, &gBattleBufferA[gActiveBattler][3]);
break;
case 50:
- SetMonData(&gPlayerParty[a], MON_DATA_BEAUTY, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_BEAUTY, &gBattleBufferA[gActiveBattler][3]);
break;
case 51:
- SetMonData(&gPlayerParty[a], MON_DATA_CUTE, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_CUTE, &gBattleBufferA[gActiveBattler][3]);
break;
case 52:
- SetMonData(&gPlayerParty[a], MON_DATA_SMART, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_SMART, &gBattleBufferA[gActiveBattler][3]);
break;
case 53:
- SetMonData(&gPlayerParty[a], MON_DATA_TOUGH, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_TOUGH, &gBattleBufferA[gActiveBattler][3]);
break;
case 54:
- SetMonData(&gPlayerParty[a], MON_DATA_SHEEN, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_SHEEN, &gBattleBufferA[gActiveBattler][3]);
break;
case 55:
- SetMonData(&gPlayerParty[a], MON_DATA_COOL_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_COOL_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
case 56:
- SetMonData(&gPlayerParty[a], MON_DATA_BEAUTY_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_BEAUTY_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
case 57:
- SetMonData(&gPlayerParty[a], MON_DATA_CUTE_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_CUTE_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
case 58:
- SetMonData(&gPlayerParty[a], MON_DATA_SMART_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_SMART_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
case 59:
- SetMonData(&gPlayerParty[a], MON_DATA_TOUGH_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_TOUGH_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
}
- HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
}
void WallyHandlecmd3(void)
@@ -1084,48 +1084,48 @@ void WallyHandleSendOutPoke(void)
void WallyHandleReturnPokeToBall(void)
{
- if (gBattleBufferA[gActiveBank][1] == 0)
+ if (gBattleBufferA[gActiveBattler][1] == 0)
{
- move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 1);
- gBattleBankFunc[gActiveBank] = sub_813789C;
+ move_anim_start_t4(gActiveBattler, gActiveBattler, gActiveBattler, 1);
+ gBattleBankFunc[gActiveBattler] = sub_813789C;
}
else
{
- FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
- DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
- sub_8043DB0(gHealthboxIDs[gActiveBank]);
+ FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBattler]]);
+ DestroySprite(&gSprites[gBankSpriteIds[gActiveBattler]]);
+ sub_8043DB0(gHealthboxIDs[gActiveBattler]);
WallyBufferExecCompleted();
}
}
void WallyHandleTrainerThrow(void)
{
- LoadPlayerTrainerBankSprite(2, gActiveBank);
- GetMonSpriteTemplate_803C5A0(2, GetBankIdentity(gActiveBank));
- gBankSpriteIds[gActiveBank] = CreateSprite(
+ LoadPlayerTrainerBankSprite(2, gActiveBattler);
+ GetMonSpriteTemplate_803C5A0(2, GetBattlerPosition(gActiveBattler));
+ gBankSpriteIds[gActiveBattler] = CreateSprite(
&gUnknown_02024E8C,
80, 80 + 4 * (8 - gTrainerBackPicCoords[2].coords),
30);
- gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank;
- gSprites[gBankSpriteIds[gActiveBank]].pos2.x = 240;
- gSprites[gBankSpriteIds[gActiveBank]].data[0] = -2;
- gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80313A0;
- gBattleBankFunc[gActiveBank] = sub_813741C;
+ gSprites[gBankSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
+ gSprites[gBankSpriteIds[gActiveBattler]].pos2.x = 240;
+ gSprites[gBankSpriteIds[gActiveBattler]].data[0] = -2;
+ gSprites[gBankSpriteIds[gActiveBattler]].callback = sub_80313A0;
+ gBattleBankFunc[gActiveBattler] = sub_813741C;
}
void WallyHandleTrainerSlide(void)
{
- LoadPlayerTrainerBankSprite(2, gActiveBank);
- GetMonSpriteTemplate_803C5A0(2, GetBankIdentity(gActiveBank));
- gBankSpriteIds[gActiveBank] = CreateSprite(
+ LoadPlayerTrainerBankSprite(2, gActiveBattler);
+ GetMonSpriteTemplate_803C5A0(2, GetBattlerPosition(gActiveBattler));
+ gBankSpriteIds[gActiveBattler] = CreateSprite(
&gUnknown_02024E8C,
80, 80 + 4 * (8 - gTrainerBackPicCoords[2].coords),
30);
- gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank;
- gSprites[gBankSpriteIds[gActiveBank]].pos2.x = -96;
- gSprites[gBankSpriteIds[gActiveBank]].data[0] = 2;
- gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80313A0;
- gBattleBankFunc[gActiveBank] = sub_8137908;
+ gSprites[gBankSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
+ gSprites[gBankSpriteIds[gActiveBattler]].pos2.x = -96;
+ gSprites[gBankSpriteIds[gActiveBattler]].data[0] = 2;
+ gSprites[gBankSpriteIds[gActiveBattler]].callback = sub_80313A0;
+ gBattleBankFunc[gActiveBattler] = sub_8137908;
}
void WallyHandleTrainerSlideBack(void)
@@ -1147,18 +1147,18 @@ void WallyHandlecmd12(void)
{
ewram17840.unk8 = 4;
gDoingBattleAnim = TRUE;
- move_anim_start_t4(gActiveBank, gActiveBank, GetBankByIdentity(1), 4);
- gBattleBankFunc[gActiveBank] = bx_wait_t5;
+ move_anim_start_t4(gActiveBattler, gActiveBattler, GetBattlerAtPosition(1), 4);
+ gBattleBankFunc[gActiveBattler] = bx_wait_t5;
}
void WallyHandleBallThrow(void)
{
- u8 val = gBattleBufferA[gActiveBank][1];
+ u8 val = gBattleBufferA[gActiveBattler][1];
ewram17840.unk8 = val;
gDoingBattleAnim = TRUE;
- move_anim_start_t4(gActiveBank, gActiveBank, GetBankByIdentity(1), 4);
- gBattleBankFunc[gActiveBank] = bx_wait_t5;
+ move_anim_start_t4(gActiveBattler, gActiveBattler, GetBattlerAtPosition(1), 4);
+ gBattleBankFunc[gActiveBattler] = bx_wait_t5;
}
void WallyHandlePuase(void)
@@ -1168,15 +1168,15 @@ void WallyHandlePuase(void)
void WallyHandleMoveAnimation(void)
{
- u16 move = gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8);
+ u16 move = gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8);
- gAnimMoveTurn = gBattleBufferA[gActiveBank][3];
- gAnimMovePower = gBattleBufferA[gActiveBank][4] | (gBattleBufferA[gActiveBank][5] << 8);
- gAnimMoveDmg = gBattleBufferA[gActiveBank][6] | (gBattleBufferA[gActiveBank][7] << 8) | (gBattleBufferA[gActiveBank][8] << 16) | (gBattleBufferA[gActiveBank][9] << 24);
- gAnimFriendship = gBattleBufferA[gActiveBank][10];
- gWeatherMoveAnim = gBattleBufferA[gActiveBank][12] | (gBattleBufferA[gActiveBank][13] << 8);
- gAnimDisableStructPtr = (struct DisableStruct *)&gBattleBufferA[gActiveBank][16];
- gTransformedPersonalities[gActiveBank] = gAnimDisableStructPtr->transformedMonPersonality;
+ gAnimMoveTurn = gBattleBufferA[gActiveBattler][3];
+ gAnimMovePower = gBattleBufferA[gActiveBattler][4] | (gBattleBufferA[gActiveBattler][5] << 8);
+ gAnimMoveDmg = gBattleBufferA[gActiveBattler][6] | (gBattleBufferA[gActiveBattler][7] << 8) | (gBattleBufferA[gActiveBattler][8] << 16) | (gBattleBufferA[gActiveBattler][9] << 24);
+ gAnimFriendship = gBattleBufferA[gActiveBattler][10];
+ gWeatherMoveAnim = gBattleBufferA[gActiveBattler][12] | (gBattleBufferA[gActiveBattler][13] << 8);
+ gAnimDisableStructPtr = (struct DisableStruct *)&gBattleBufferA[gActiveBattler][16];
+ gTransformedPersonalities[gActiveBattler] = gAnimDisableStructPtr->transformedMonPersonality;
if (sub_8031720(move, gAnimMoveTurn) != 0)
{
// Dead code. sub_8031720 always returns 0.
@@ -1184,32 +1184,32 @@ void WallyHandleMoveAnimation(void)
}
else
{
- ewram17810[gActiveBank].unk4 = 0;
- gBattleBankFunc[gActiveBank] = sub_81390D0;
+ ewram17810[gActiveBattler].unk4 = 0;
+ gBattleBankFunc[gActiveBattler] = sub_81390D0;
}
}
void sub_81390D0(void)
{
- u16 r4 = gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8);
+ u16 r4 = gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8);
#ifndef NONMATCHING
asm("":::"r6");
#endif
- switch (ewram17810[gActiveBank].unk4)
+ switch (ewram17810[gActiveBattler].unk4)
{
case 0:
- if (ewram17800[gActiveBank].substituteSprite == 1)
- move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
- ewram17810[gActiveBank].unk4 = 1;
+ if (ewram17800[gActiveBattler].substituteSprite == 1)
+ move_anim_start_t4(gActiveBattler, gActiveBattler, gActiveBattler, 5);
+ ewram17810[gActiveBattler].unk4 = 1;
break;
case 1:
- if (ewram17810[gActiveBank].unk0_6 == 0)
+ if (ewram17810[gActiveBattler].unk0_6 == 0)
{
sub_80326EC(0);
DoMoveAnim(r4);
- ewram17810[gActiveBank].unk4 = 2;
+ ewram17810[gActiveBattler].unk4 = 2;
}
break;
case 2:
@@ -1217,17 +1217,17 @@ void sub_81390D0(void)
if (!gAnimScriptActive)
{
sub_80326EC(1);
- if (ewram17800[gActiveBank].substituteSprite == 1)
- move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6);
- ewram17810[gActiveBank].unk4 = 3;
+ if (ewram17800[gActiveBattler].substituteSprite == 1)
+ move_anim_start_t4(gActiveBattler, gActiveBattler, gActiveBattler, 6);
+ ewram17810[gActiveBattler].unk4 = 3;
}
break;
case 3:
- if (ewram17810[gActiveBank].unk0_6 == 0)
+ if (ewram17810[gActiveBattler].unk0_6 == 0)
{
sub_8031F24();
- sub_80324BC(gActiveBank, gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
- ewram17810[gActiveBank].unk4 = 0;
+ sub_80324BC(gActiveBattler, gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8));
+ ewram17810[gActiveBattler].unk4 = 0;
WallyBufferExecCompleted();
}
break;
@@ -1240,17 +1240,17 @@ void WallyHandlePrintString(void)
gBattle_BG0_X = 0;
gBattle_BG0_Y = 0;
- ptr = (u16 *)&gBattleBufferA[gActiveBank][2];
+ ptr = (u16 *)&gBattleBufferA[gActiveBattler][2];
if (*ptr == 2)
DestroyMenuCursor();
BufferStringBattle(*ptr);
Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 0x90, 2, 15);
- gBattleBankFunc[gActiveBank] = sub_8137454;
+ gBattleBankFunc[gActiveBattler] = sub_8137454;
}
void WallyHandlePrintStringPlayerOnly(void)
{
- if (GetBankSide(gActiveBank) == 0)
+ if (GetBattlerSide(gActiveBattler) == 0)
WallyHandlePrintString();
else
WallyBufferExecCompleted();
@@ -1265,7 +1265,7 @@ void WallyHandlecmd18(void)
gUnknown_03004210.paletteNum = 0;
Text_FillWindowRectDefPalette(&gUnknown_03004210, 10, 2, 15, 27, 18);
Text_FillWindowRectDefPalette(&gUnknown_03004210, 10, 2, 35, 16, 36);
- gBattleBankFunc[gActiveBank] = sub_81372BC;
+ gBattleBankFunc[gActiveBattler] = sub_81372BC;
Text_InitWindow(&gUnknown_03004210, BattleText_MenuOptions, 400, 18, 35);
Text_PrintWindow8002F44(&gUnknown_03004210);
MenuCursor_Create814A5C0(0, 0xFFFF, 12, 0x2D9F, 0);
@@ -1310,9 +1310,9 @@ void WallyHandlecmd20(void)
void WallyHandleOpenBag(void)
{
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
- gBattleBankFunc[gActiveBank] = sub_81374C4;
- gBankInMenu = gActiveBank;
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
+ gBattleBankFunc[gActiveBattler] = sub_81374C4;
+ gBankInMenu = gActiveBattler;
}
void WallyHandlecmd22(void)
@@ -1330,22 +1330,22 @@ void WallyHandleHealthBarUpdate(void)
s16 r7;
load_gfxc_health_bar(0);
- r7 = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8);
+ r7 = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8);
if (r7 != 0x7FFF)
{
- u32 maxHP = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MAX_HP);
- u32 curHP = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_HP);
+ u32 maxHP = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP);
+ u32 curHP = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_HP);
- sub_8043D84(gActiveBank, gHealthboxIDs[gActiveBank], maxHP, curHP, r7);
+ sub_8043D84(gActiveBattler, gHealthboxIDs[gActiveBattler], maxHP, curHP, r7);
}
else
{
- u32 maxHP = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MAX_HP);
+ u32 maxHP = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP);
- sub_8043D84(gActiveBank, gHealthboxIDs[gActiveBank], maxHP, 0, r7);
- sub_80440EC(gHealthboxIDs[gActiveBank], 0, 0);
+ sub_8043D84(gActiveBattler, gHealthboxIDs[gActiveBattler], maxHP, 0, r7);
+ sub_80440EC(gHealthboxIDs[gActiveBattler], 0, 0);
}
- gBattleBankFunc[gActiveBank] = sub_81377B0;
+ gBattleBankFunc[gActiveBattler] = sub_81377B0;
}
void WallyHandleExpBarUpdate(void)
@@ -1430,16 +1430,16 @@ void WallyHandlecmd40(void)
void WallyHandleHitAnimation(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].invisible == TRUE)
+ if (gSprites[gBankSpriteIds[gActiveBattler]].invisible == TRUE)
{
WallyBufferExecCompleted();
}
else
{
gDoingBattleAnim = 1;
- gSprites[gBankSpriteIds[gActiveBank]].data[1] = 0;
- sub_8047858(gActiveBank);
- gBattleBankFunc[gActiveBank] = bx_blink_t5;
+ gSprites[gBankSpriteIds[gActiveBattler]].data[1] = 0;
+ sub_8047858(gActiveBattler);
+ gBattleBankFunc[gActiveBattler] = bx_blink_t5;
}
}
@@ -1450,25 +1450,25 @@ void WallyHandlecmd42(void)
void WallyHandleEffectivenessSound(void)
{
- PlaySE(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
+ PlaySE(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8));
WallyBufferExecCompleted();
}
void WallyHandlecmd44(void)
{
- PlayFanfare(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
+ PlayFanfare(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8));
WallyBufferExecCompleted();
}
void WallyHandleFaintingCry(void)
{
- PlayCry1(GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES), 25);
+ PlayCry1(GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES), 25);
WallyBufferExecCompleted();
}
void WallyHandleIntroSlide(void)
{
- StartBattleIntroAnim(gBattleBufferA[gActiveBank][1]);
+ StartBattleIntroAnim(gBattleBufferA[gActiveBattler][1]);
gUnknown_02024DE8 |= 1;
WallyBufferExecCompleted();
}
@@ -1478,23 +1478,23 @@ void WallyHandleTrainerBallThrow(void)
u8 paletteNum;
u8 taskId;
- oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]);
- gSprites[gBankSpriteIds[gActiveBank]].data[0] = 50;
- gSprites[gBankSpriteIds[gActiveBank]].data[2] = -40;
- gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
- gSprites[gBankSpriteIds[gActiveBank]].callback = StartTranslateAnimSpriteByDeltas;
- gSprites[gBankSpriteIds[gActiveBank]].data[5] = gActiveBank;
- StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBank]], sub_8030E38);
- StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], 1);
+ oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBattler]]);
+ gSprites[gBankSpriteIds[gActiveBattler]].data[0] = 50;
+ gSprites[gBankSpriteIds[gActiveBattler]].data[2] = -40;
+ gSprites[gBankSpriteIds[gActiveBattler]].data[4] = gSprites[gBankSpriteIds[gActiveBattler]].pos1.y;
+ gSprites[gBankSpriteIds[gActiveBattler]].callback = StartTranslateAnimSpriteByDeltas;
+ gSprites[gBankSpriteIds[gActiveBattler]].data[5] = gActiveBattler;
+ StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBattler]], sub_8030E38);
+ StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBattler]], 1);
paletteNum = AllocSpritePalette(0xD6F8);
LoadCompressedPalette(gTrainerBackPicPaletteTable[2].data, 0x100 + paletteNum * 16, 32);
- gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = paletteNum;
+ gSprites[gBankSpriteIds[gActiveBattler]].oam.paletteNum = paletteNum;
taskId = CreateTask(sub_8139A2C, 5);
- gTasks[taskId].data[0] = gActiveBank;
- if (ewram17810[gActiveBank].unk0_0)
- gTasks[gUnknown_02024E68[gActiveBank]].func = sub_8044CA0;
+ gTasks[taskId].data[0] = gActiveBattler;
+ if (ewram17810[gActiveBattler].unk0_0)
+ gTasks[gUnknown_02024E68[gActiveBattler]].func = sub_8044CA0;
ewram17810[4].unk9 |= 1;
- gBattleBankFunc[gActiveBank] = nullsub_91;
+ gBattleBankFunc[gActiveBattler] = nullsub_91;
}
void sub_81398BC(u8 bank)
@@ -1502,13 +1502,13 @@ void sub_81398BC(u8 bank)
u16 species;
ewram17800[bank].transformedSpecies = 0;
- gBattlePartyID[bank] = gBattleBufferA[bank][1];
- species = GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_SPECIES);
+ gBattlerPartyIndexes[bank] = gBattleBufferA[bank][1];
+ species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[bank]], MON_DATA_SPECIES);
gUnknown_0300434C[bank] = CreateInvisibleSpriteWithCallback(sub_80312F0);
- GetMonSpriteTemplate_803C56C(species, GetBankIdentity(bank));
+ GetMonSpriteTemplate_803C56C(species, GetBattlerPosition(bank));
gBankSpriteIds[bank] = CreateSprite(
&gUnknown_02024E8C,
- GetBankPosition(bank, 2),
+ GetBattlerSpriteCoord(bank, 2),
sub_8077F68(bank),
sub_8079E90(bank));
gSprites[gUnknown_0300434C[bank]].data[1] = gBankSpriteIds[bank];
@@ -1529,27 +1529,27 @@ void sub_8139A2C(u8 taskId)
}
else
{
- u8 savedActiveBank = gActiveBank;
+ u8 savedActiveBank = gActiveBattler;
- gActiveBank = gTasks[taskId].data[0];
- gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
- sub_81398BC(gActiveBank);
- gBattleBankFunc[gActiveBank] = sub_8137538;
- gActiveBank = savedActiveBank;
+ gActiveBattler = gTasks[taskId].data[0];
+ gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler];
+ sub_81398BC(gActiveBattler);
+ gBattleBankFunc[gActiveBattler] = sub_8137538;
+ gActiveBattler = savedActiveBank;
DestroyTask(taskId);
}
}
void WallyHandlecmd48(void)
{
- if (gBattleBufferA[gActiveBank][1] != 0 && GetBankSide(gActiveBank) == 0)
+ if (gBattleBufferA[gActiveBattler][1] != 0 && GetBattlerSide(gActiveBattler) == 0)
{
WallyBufferExecCompleted();
}
else
{
- ewram17810[gActiveBank].unk0_0 = 1;
- gUnknown_02024E68[gActiveBank] = sub_8044804(gActiveBank, (struct BattleInterfaceStruct2 *)&gBattleBufferA[gActiveBank][4], gBattleBufferA[gActiveBank][1], gBattleBufferA[gActiveBank][2]);
+ ewram17810[gActiveBattler].unk0_0 = 1;
+ gUnknown_02024E68[gActiveBattler] = sub_8044804(gActiveBattler, (struct BattleInterfaceStruct2 *)&gBattleBufferA[gActiveBattler][4], gBattleBufferA[gActiveBattler][1], gBattleBufferA[gActiveBattler][2]);
WallyBufferExecCompleted();
}
}
@@ -1571,13 +1571,13 @@ void WallyHandleSpriteInvisibility(void)
void WallyHandleBattleAnimation(void)
{
- u8 val2 = gBattleBufferA[gActiveBank][1];
- u16 val = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8);
+ u8 val2 = gBattleBufferA[gActiveBattler][1];
+ u16 val = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8);
- if (move_anim_start_t3(gActiveBank, gActiveBank, gActiveBank, val2, val))
+ if (move_anim_start_t3(gActiveBattler, gActiveBattler, gActiveBattler, val2, val))
WallyBufferExecCompleted();
else
- gBattleBankFunc[gActiveBank] = sub_8137940;
+ gBattleBankFunc[gActiveBattler] = sub_8137940;
}
void WallyHandleLinkStandbyMsg(void)
@@ -1592,12 +1592,12 @@ void WallyHandleResetActionMoveSelection(void)
void WallyHandlecmd55(void)
{
- gBattleOutcome = gBattleBufferA[gActiveBank][1];
+ gBattleOutcome = gBattleBufferA[gActiveBattler][1];
FadeOutMapMusic(5);
BeginFastPaletteFade(3);
WallyBufferExecCompleted();
if ((gBattleTypeFlags & BATTLE_TYPE_LINK) && !(gBattleTypeFlags & BATTLE_TYPE_WILD))
- gBattleBankFunc[gActiveBank] = sub_813746C;
+ gBattleBankFunc[gActiveBattler] = sub_813746C;
}
void WallyHandlecmd56(void)
diff --git a/src/battle/battle_interface.c b/src/battle/battle_interface.c
index 9be026d53..ec882bcce 100644
--- a/src/battle/battle_interface.c
+++ b/src/battle/battle_interface.c
@@ -14,6 +14,7 @@
#include "task.h"
#include "text.h"
#include "ewram.h"
+#include "graphics.h"
struct UnknownStruct5
{
@@ -29,43 +30,406 @@ struct UnknownStruct7
u8 filler0[0x180];
};
+static void sub_8043CEC(struct Sprite *sprite);
+static void sub_8045030(struct Sprite *sprite);
+static void sub_804507C(struct Sprite *sprite);
+
+const struct OamData gOamData_820A4E4 =
+{
+ .shape = 1,
+ .size = 3,
+ .priority = 1,
+};
+
+const struct SpriteTemplate gSpriteTemplates_820A4EC[] =
+{
+ {
+ .tileTag = 55039,
+ .paletteTag = 55039,
+ .oam = &gOamData_820A4E4,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+ },
+ {
+ .tileTag = 55040,
+ .paletteTag = 55039,
+ .oam = &gOamData_820A4E4,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+ },
+};
+
+const struct SpriteTemplate gSpriteTemplates_820A51C[] =
+{
+ {
+ .tileTag = 55041,
+ .paletteTag = 55039,
+ .oam = &gOamData_820A4E4,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+ },
+ {
+ .tileTag = 55042,
+ .paletteTag = 55039,
+ .oam = &gOamData_820A4E4,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+ },
+};
+
+const struct SpriteTemplate gSpriteTemplate_820A54C =
+{
+ .tileTag = 55051,
+ .paletteTag = 55039,
+ .oam = &gOamData_820A4E4,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
+const struct OamData gOamData_820A564 =
+{
+ .shape = 1,
+ .size = 1,
+ .priority = 1,
+};
+
+const struct SpriteTemplate gSpriteTemplates_820A56C[] =
+{
+ {
+ .tileTag = 55044,
+ .paletteTag = 55044,
+ .oam = &gOamData_820A564,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8043CEC,
+ },
+ {
+ .tileTag = 55045,
+ .paletteTag = 55044,
+ .oam = &gOamData_820A564,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8043CEC,
+ },
+ {
+ .tileTag = 55046,
+ .paletteTag = 55044,
+ .oam = &gOamData_820A564,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8043CEC,
+ },
+ {
+ .tileTag = 55047,
+ .paletteTag = 55044,
+ .oam = &gOamData_820A564,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8043CEC,
+ },
+};
+
+const struct Subsprite gSubspriteTable_820A5CC[] =
+{
+ { .x = -16, .y = 0, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 0, .size = 3 }, // size := 64x32
+ { .x = 48, .y = 0, .shape = ST_OAM_SQUARE, .priority = 1, .tileOffset = 32, .size = 2 }, // size := 32x32
+ { .x = -16, .y = 32, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 48, .size = 1 }, // size := 32x8
+ { .x = 16, .y = 32, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 52, .size = 1 }, // size := 32x8
+ { .x = 48, .y = 32, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 56, .size = 1 }, // size := 32x8
+};
+
+const struct Subsprite gSubspriteTable_820A5F4[] =
+{
+ { .x = -16, .y = 0, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 64, .size = 3 }, // size := 64x32
+ { .x = 48, .y = 0, .shape = ST_OAM_SQUARE, .priority = 1, .tileOffset = 96, .size = 2 }, // size := 32x32
+ { .x = -16, .y = 32, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset =112, .size = 1 }, // size := 32x8
+ { .x = 16, .y = 32, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset =116, .size = 1 }, // size := 32x8
+ { .x = 48, .y = 32, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset =120, .size = 1 }, // size := 32x8
+};
+
+const struct Subsprite gSubspriteTable_820A61C[] =
+{
+ { .x = -16, .y = 0, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 0, .size = 3 }, // size := 64x32
+ { .x = 48, .y = 0, .shape = ST_OAM_SQUARE, .priority = 1, .tileOffset = 32, .size = 2 }, // size := 32x32
+};
+
+const struct Subsprite gSubspriteTable_820A62C[] =
+{
+ { .x = -16, .y = 0, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 0, .size = 3 }, // size := 64x32
+ { .x = 48, .y = 0, .shape = ST_OAM_SQUARE, .priority = 1, .tileOffset = 32, .size = 2 }, // size := 32x32
+};
+
+const struct Subsprite gSubspriteTable_820A63C[] =
+{
+ { .x = -16, .y = 0, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 0, .size = 1 }, // size := 32x8
+ { .x = 16, .y = 0, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 4, .size = 1 }, // size := 32x8
+};
+
+const struct Subsprite gSubspriteTable_820A64C[] =
+{
+ { .x = -16, .y = 0, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 0, .size = 1 }, // size := 32x8
+ { .x = 16, .y = 0, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 4, .size = 1 }, // size := 32x8
+ { .x = -32, .y = 0, .shape = ST_OAM_SQUARE, .priority = 1, .tileOffset = 8, .size = 0 }, // size := 8x8
+};
+
+const struct SubspriteTable gSubspriteTables_unreferenced[] =
+{
+ { ARRAY_COUNT(gSubspriteTable_820A5CC), gSubspriteTable_820A5CC },
+ { ARRAY_COUNT(gSubspriteTable_820A61C), gSubspriteTable_820A61C },
+ { ARRAY_COUNT(gSubspriteTable_820A5F4), gSubspriteTable_820A5F4 },
+ { ARRAY_COUNT(gSubspriteTable_820A62C), gSubspriteTable_820A62C },
+};
+
+const struct SubspriteTable gSubspriteTables_820A684[] =
+{
+ { ARRAY_COUNT(gSubspriteTable_820A63C), gSubspriteTable_820A63C },
+ { ARRAY_COUNT(gSubspriteTable_820A64C), gSubspriteTable_820A64C },
+};
+
+const struct Subsprite gSubspriteTable_820A694[] =
+{
+ { .x = -96, .y = 0, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 0, .size = 1 }, // size := 32x8
+ { .x = -64, .y = 0, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 4, .size = 1 }, // size := 32x8
+ { .x = -32, .y = 0, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 8, .size = 1 }, // size := 32x8
+ { .x = 0, .y = 0, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 12, .size = 1 }, // size := 32x8
+};
+
+const struct Subsprite gSubspriteTable_820A6B4[] =
+{
+ { .x = -96, .y = 0, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 0, .size = 1 }, // size := 32x8
+ { .x = -64, .y = 0, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 4, .size = 1 }, // size := 32x8
+ { .x = -32, .y = 0, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 8, .size = 1 }, // size := 32x8
+ { .x = 0, .y = 0, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 8, .size = 1 }, // size := 32x8
+ { .x = 32, .y = 0, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 8, .size = 1 }, // size := 32x8
+ { .x = 64, .y = 0, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 12, .size = 1 }, // size := 32x8
+};
+
+const struct SubspriteTable gSubspriteTables_820A6E4[] =
+{
+ { ARRAY_COUNT(gSubspriteTable_820A694), gSubspriteTable_820A694 },
+};
+
+const struct SubspriteTable gSubspriteTables_820A6EC[] =
+{
+ { ARRAY_COUNT(gSubspriteTable_820A6B4), gSubspriteTable_820A6B4 },
+};
+
+// unused dakuten/handakuten tiles
+const u8 gUnusedDakuten[] = INCBIN_U8("graphics/unused/dakuten.4bpp");
+
+const struct CompressedSpriteSheet gUnknown_0820A754[] =
+{
+ { gBattleGfx_BallStatusBar, 512, 0xd70c },
+ { gBattleGfx_BallStatusBar, 512, 0xd70d },
+};
+
+const struct SpritePalette gUnknown_0820A764[] =
+{
+ { gUnknown_08D1212C, 0xd710 },
+ { gUnknown_08D1212C, 0xd711 },
+};
+
+const struct SpritePalette gUnknown_0820A774[] =
+{
+ { gUnknown_08D1214C, 0xd712 },
+ { gUnknown_08D1214C, 0xd713 },
+};
+
+const struct CompressedSpriteSheet gUnknown_0820A784[] =
+{
+ { Tiles_D129AC, 0x80, 0xd714 },
+ { Tiles_D129AC, 0x80, 0xd715 },
+};
+
+const struct OamData gOamData_820A794 =
+{
+ .shape = 1,
+ .size = 3,
+ .priority = 1,
+};
+
+const struct OamData gOamData_820A79C =
+{
+ .shape = 0,
+ .size = 0,
+ .priority = 1,
+};
+
+const struct SpriteTemplate gSpriteTemplate_820A7A4 =
+{
+ .tileTag = 55052,
+ .paletteTag = 55056,
+ .oam = &gOamData_820A4E4,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8045030,
+};
+
+const struct SpriteTemplate gSpriteTemplate_820A7BC =
+{
+ .tileTag = 55053,
+ .paletteTag = 55057,
+ .oam = &gOamData_820A4E4,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8045030,
+};
+
+const struct SpriteTemplate gSpriteTemplate_820A7D4 =
+{
+ .tileTag = 55060,
+ .paletteTag = 55058,
+ .oam = &gOamData_820A79C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_804507C,
+};
+
+const struct SpriteTemplate gSpriteTemplate_820A7EC =
+{
+ .tileTag = 55061,
+ .paletteTag = 55059,
+ .oam = &gOamData_820A79C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_804507C,
+};
+
+u8 *const gUnknown_0820A804[2] =
+{
+ OBJ_VRAM0 + 32 * 74,
+ OBJ_VRAM0 + 32 * 75,
+};
+
+u8 *const gUnknown_0820A80C[2] =
+{
+ OBJ_VRAM0 + 32 * 41,
+ OBJ_VRAM0 + 32 * 42,
+};
+
+u8 *const gUnknown_0820A814[2] =
+{
+ OBJ_VRAM0 + 32 * 42,
+ OBJ_VRAM0 + 32 * 43,
+};
+
+const u8 gUnknown_0820A81C[] = __("{COLOR DARK_GREY}{HIGHLIGHT RED} ");
+
+u8 *const gUnknown_0820A83C[3] =
+{
+ OBJ_VRAM0 + 32 * 31,
+ OBJ_VRAM0 + 32 * 88,
+ OBJ_VRAM0 + 32 * 89,
+};
+
+u8 *const gUnknown_0820A848[3] =
+{
+ OBJ_VRAM0 + 32 * 22,
+ OBJ_VRAM0 + 32 * 23,
+ OBJ_VRAM0 + 32 * 48,
+};
+
+u8 *const gUnknown_0820A854[2] =
+{
+ OBJ_VRAM0 + 32 * 90,
+ OBJ_VRAM0 + 32 * 91,
+};
+
+u8 *const gUnknown_0820A85C[2] =
+{
+ OBJ_VRAM0 + 32 * 49,
+ OBJ_VRAM0 + 32 * 50,
+};
+
+const u8 gUnknown_0820A864[] = _("{COLOR DARK_GREY}{HIGHLIGHT RED} /");
+
+u8 *const gUnknown_0820A87C[6] =
+{
+ OBJ_VRAM0 + 32 * 0,
+ OBJ_VRAM0 + 32 * 1,
+ OBJ_VRAM0 + 32 * 2,
+ OBJ_VRAM0 + 32 * 3,
+ OBJ_VRAM0 + 32 * 4,
+ OBJ_VRAM0 + 32 * 5,
+};
+
+u8 *const gUnknown_0820A894[2] =
+{
+ OBJ_VRAM0 + 32 * 6,
+ OBJ_VRAM0 + 32 * 7,
+};
+
+const u8 gUnknown_0820A89C[] = __("{COLOR DARK_GREY}{HIGHLIGHT TRANSPARENT} ");
+const u8 gUnknown_0820A8B0[] = _("{HIGHLIGHT RED}");
+
+u8 *const gUnknown_0820A8B4[10] =
+{
+ OBJ_VRAM0 + 32 * 2,
+ OBJ_VRAM0 + 32 * 3,
+ OBJ_VRAM0 + 32 * 4,
+ OBJ_VRAM0 + 32 * 5,
+ OBJ_VRAM0 + 32 * 6,
+ OBJ_VRAM0 + 32 * 7,
+ OBJ_VRAM0 + 32 * 64,
+ OBJ_VRAM0 + 32 * 65,
+ OBJ_VRAM0 + 32 * 66,
+ OBJ_VRAM0 + 32 * 67,
+};
+
+u8 *const gUnknown_0820A8DC[10] =
+{
+ OBJ_VRAM0 + 32 * 1,
+ OBJ_VRAM0 + 32 * 2,
+ OBJ_VRAM0 + 32 * 3,
+ OBJ_VRAM0 + 32 * 4,
+ OBJ_VRAM0 + 32 * 5,
+ OBJ_VRAM0 + 32 * 6,
+ OBJ_VRAM0 + 32 * 7,
+ OBJ_VRAM0 + 32 * 32,
+ OBJ_VRAM0 + 32 * 33,
+ OBJ_VRAM0 + 32 * 34,
+};
+
+u8 *const gUnknown_0820A904[10] =
+{
+ OBJ_VRAM0 + 32 * 2,
+ OBJ_VRAM0 + 32 * 3,
+ OBJ_VRAM0 + 32 * 4,
+ OBJ_VRAM0 + 32 * 5,
+ OBJ_VRAM0 + 32 * 6,
+ OBJ_VRAM0 + 32 * 7,
+ OBJ_VRAM0 + 32 * 32,
+ OBJ_VRAM0 + 32 * 33,
+ OBJ_VRAM0 + 32 * 34,
+ OBJ_VRAM0 + 32 * 35,
+};
+
extern u8 gDisplayedStringBattle[];
-extern u8 gNoOfAllBanks;
-extern u16 gBattlePartyID[];
+extern u8 gBattlersCount;
+extern u16 gBattlerPartyIndexes[];
extern u8 gBanksBySide[];
extern u8 gHealthboxIDs[];
extern u16 gBattleTypeFlags;
-extern const struct SpriteTemplate gSpriteTemplate_820A4EC[];
-extern const struct SpriteTemplate gSpriteTemplate_820A51C[];
-extern const struct SpriteTemplate gSpriteTemplate_820A54C;
-extern const struct SpriteTemplate gSpriteTemplate_820A56C[];
-extern const struct SubspriteTable gSubspriteTables_820A684[];
-extern const struct SubspriteTable gSubspriteTables_820A6E4[];
-extern const struct SubspriteTable gSubspriteTables_820A6EC[];
-extern const struct SpriteSheet gUnknown_0820A754[];
-extern const struct SpritePalette gUnknown_0820A764[];
-extern const struct SpritePalette gUnknown_0820A774[];
-extern const struct SpriteSheet gUnknown_0820A784[];
-extern const struct SpriteTemplate gSpriteTemplate_820A7A4[];
-extern const struct SpriteTemplate gSpriteTemplate_820A7D4[];
-extern void *const gUnknown_0820A804[];
-extern void *const gUnknown_0820A80C[];
-extern void *const gUnknown_0820A814[];
-extern void *const gUnknown_0820A83C[];
-extern void *const gUnknown_0820A848[];
-extern void *const gUnknown_0820A854[];
-extern void *const gUnknown_0820A85C[];
-extern void *const gUnknown_0820A87C[];
-extern void *const gUnknown_0820A894[];
-extern void *const gUnknown_0820A8B4[];
-extern void *const gUnknown_0820A8DC[];
-extern void *const gUnknown_0820A904[];
-extern const u8 gUnknown_0820A81C[];
-extern const u8 gUnknown_0820A864[];
-extern const u8 gUnknown_0820A89C[];
-extern const u8 gUnknown_0820A8B0[];
extern const u8 BattleText_SafariBalls[];
extern const u8 BattleText_SafariBallsLeft[];
extern const u8 BattleText_HighlightRed[];
@@ -175,7 +539,7 @@ void sub_8043740(s16 a, u16 *b, u8 c)
asm(""::"r"(r9));
}
#else
-__attribute__((naked))
+NAKED
void sub_8043740(s16 a, u16 *b, u8 c)
{
asm(".syntax unified\n\
@@ -419,10 +783,10 @@ u8 battle_make_oam_normal_battle(u8 a)
if (!IsDoubleBattle())
{
- if (GetBankSide(a) == 0)
+ if (GetBattlerSide(a) == 0)
{
- spriteId1 = CreateSprite(&gSpriteTemplate_820A4EC[0], 240, 160, 1);
- spriteId2 = CreateSpriteAtEnd(&gSpriteTemplate_820A4EC[0], 240, 160, 1);
+ spriteId1 = CreateSprite(&gSpriteTemplates_820A4EC[0], 240, 160, 1);
+ spriteId2 = CreateSpriteAtEnd(&gSpriteTemplates_820A4EC[0], 240, 160, 1);
gSprites[spriteId1].oam.shape = 0;
gSprites[spriteId2].oam.shape = 0;
@@ -430,8 +794,8 @@ u8 battle_make_oam_normal_battle(u8 a)
}
else
{
- spriteId1 = CreateSprite(&gSpriteTemplate_820A51C[0], 240, 160, 1);
- spriteId2 = CreateSpriteAtEnd(&gSpriteTemplate_820A51C[0], 240, 160, 1);
+ spriteId1 = CreateSprite(&gSpriteTemplates_820A51C[0], 240, 160, 1);
+ spriteId2 = CreateSpriteAtEnd(&gSpriteTemplates_820A51C[0], 240, 160, 1);
gSprites[spriteId2].oam.tileNum += 32;
sp0 = 2;
@@ -445,10 +809,10 @@ u8 battle_make_oam_normal_battle(u8 a)
//_08043A28
else
{
- if (GetBankSide(a) == 0)
+ if (GetBattlerSide(a) == 0)
{
- spriteId1 = CreateSprite(&gSpriteTemplate_820A4EC[GetBankIdentity(a) / 2], 240, 160, 1);
- spriteId2 = CreateSpriteAtEnd(&gSpriteTemplate_820A4EC[GetBankIdentity(a) / 2], 240, 160, 1);
+ spriteId1 = CreateSprite(&gSpriteTemplates_820A4EC[GetBattlerPosition(a) / 2], 240, 160, 1);
+ spriteId2 = CreateSpriteAtEnd(&gSpriteTemplates_820A4EC[GetBattlerPosition(a) / 2], 240, 160, 1);
gSprites[spriteId1].oam.affineParam = spriteId2;
gSprites[spriteId2].data[5] = spriteId1;
@@ -459,8 +823,8 @@ u8 battle_make_oam_normal_battle(u8 a)
//_08043ACC
else
{
- spriteId1 = CreateSprite(&gSpriteTemplate_820A51C[GetBankIdentity(a) / 2], 240, 160, 1);
- spriteId2 = CreateSpriteAtEnd(&gSpriteTemplate_820A51C[GetBankIdentity(a) / 2], 240, 160, 1);
+ spriteId1 = CreateSprite(&gSpriteTemplates_820A51C[GetBattlerPosition(a) / 2], 240, 160, 1);
+ spriteId2 = CreateSpriteAtEnd(&gSpriteTemplates_820A51C[GetBattlerPosition(a) / 2], 240, 160, 1);
gSprites[spriteId1].oam.affineParam = spriteId2;
gSprites[spriteId2].data[5] = spriteId1;
@@ -472,9 +836,9 @@ u8 battle_make_oam_normal_battle(u8 a)
}
//_08043B50
- spriteId3 = CreateSpriteAtEnd(&gSpriteTemplate_820A56C[gBanksBySide[a]], 140, 60, 0);
+ spriteId3 = CreateSpriteAtEnd(&gSpriteTemplates_820A56C[gBanksBySide[a]], 140, 60, 0);
sprite = &gSprites[spriteId3];
- SetSubspriteTables(sprite, &gSubspriteTables_820A684[GetBankSide(a)]);
+ SetSubspriteTables(sprite, &gSubspriteTables_820A684[GetBattlerSide(a)]);
sprite->subspriteMode = 2;
sprite->oam.priority = 1;
CpuCopy32(sub_8043CDC(1), OBJ_VRAM0 + sprite->oam.tileNum * 32, 64);
@@ -509,7 +873,7 @@ static const void *sub_8043CDC(u8 a)
return gUnknown_08D1216C[a];
}
-void sub_8043CEC(struct Sprite *sprite)
+static void sub_8043CEC(struct Sprite *sprite)
{
u8 r5 = sprite->data[5];
@@ -587,7 +951,7 @@ void UpdateOamPriorityInAllHealthboxes(u8 priority)
{
s32 i;
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
u8 spriteId1;
u8 spriteId2;
@@ -609,7 +973,7 @@ void sub_8043F44(u8 a)
if (!IsDoubleBattle())
{
- if (GetBankSide(a) != 0)
+ if (GetBattlerSide(a) != 0)
{
x = 44;
y = 30;
@@ -622,7 +986,7 @@ void sub_8043F44(u8 a)
}
else
{
- switch (GetBankIdentity(a))
+ switch (GetBattlerPosition(a))
{
case 0:
x = 159;
@@ -654,7 +1018,7 @@ void sub_8043F44(u8 a)
/*static*/ void sub_8043FC0(u8 a, u8 b)
{
u8 str[30];
- void *const *r7;
+ u8 *const *r7;
u8 *ptr;
s32 i;
s32 two;
@@ -663,14 +1027,14 @@ void sub_8043F44(u8 a)
memcpy(str, gUnknown_0820A81C, sizeof(str));
if (!IsDoubleBattle())
{
- if (GetBankSide(gSprites[a].data[6]) == 0)
+ if (GetBattlerSide(gSprites[a].data[6]) == 0)
r7 = gUnknown_0820A804;
else
r7 = gUnknown_0820A80C;
}
else
{
- if (GetBankSide(gSprites[a].data[6]) == 0)
+ if (GetBattlerSide(gSprites[a].data[6]) == 0)
r7 = gUnknown_0820A814;
else
r7 = gUnknown_0820A80C;
@@ -713,14 +1077,14 @@ void sub_80440EC(u8 a, s16 b, u8 c)
u8 str[0x14];
u8 *ptr;
s32 foo;
- void *const *r4;
+ u8 *const *r4;
s32 i;
// TODO: make this a local variable
memcpy(str, gUnknown_0820A864, sizeof(str));
foo = gSprites[a].data[6];
- if (IsDoubleBattle() == TRUE || GetBankSide(foo) == 1)
+ if (IsDoubleBattle() == TRUE || GetBattlerSide(foo) == 1)
{
//_08044136
sub_8044210(a, b, c);
@@ -730,7 +1094,7 @@ void sub_80440EC(u8 a, s16 b, u8 c)
ptr = str + 6;
if (c == 0)
{
- if (GetBankSide(gSprites[a].data[6]) == 0)
+ if (GetBattlerSide(gSprites[a].data[6]) == 0)
r4 = gUnknown_0820A83C;
else
r4 = gUnknown_0820A848;
@@ -742,7 +1106,7 @@ void sub_80440EC(u8 a, s16 b, u8 c)
}
else
{
- if (GetBankSide(gSprites[a].data[6]) == 0)
+ if (GetBattlerSide(gSprites[a].data[6]) == 0)
r4 = gUnknown_0820A854;
else
r4 = gUnknown_0820A85C;
@@ -759,7 +1123,7 @@ void sub_80440EC(u8 a, s16 b, u8 c)
}
}
#else
-__attribute__((naked))
+NAKED
void sub_80440EC(u8 a, s16 b, u8 c)
{
asm(".syntax unified\n\
@@ -792,7 +1156,7 @@ void sub_80440EC(u8 a, s16 b, u8 c)
beq _08044136\n\
lsls r0, r5, 24\n\
lsrs r0, 24\n\
- bl GetBankSide\n\
+ bl GetBattlerSide\n\
lsls r0, 24\n\
lsrs r0, 24\n\
cmp r0, 0x1\n\
@@ -816,7 +1180,7 @@ _0804414C:\n\
ldrh r0, [r4, 0x3A]\n\
lsls r0, 24\n\
lsrs r0, 24\n\
- bl GetBankSide\n\
+ bl GetBattlerSide\n\
lsls r0, 24\n\
ldr r4, _08044188 @ =gUnknown_0820A848\n\
cmp r0, 0\n\
@@ -844,7 +1208,7 @@ _08044190:\n\
ldrh r0, [r4, 0x3A]\n\
lsls r0, 24\n\
lsrs r0, 24\n\
- bl GetBankSide\n\
+ bl GetBattlerSide\n\
lsls r0, 24\n\
ldr r4, _080441FC @ =gUnknown_0820A85C\n\
cmp r0, 0\n\
@@ -909,7 +1273,7 @@ _0804420C: .4byte 0x04000008\n\
{
u8 str[0x14];
u8 *ptr;
- void *const *r7;
+ u8 *const *r7;
int r10;
int r4;
int i;
@@ -933,7 +1297,7 @@ _0804420C: .4byte 0x04000008\n\
r7 = gUnknown_0820A894;
r10 = 2;
sub_8003504(ptr, b, 0xF, 1);
- if (GetBankSide(r4) == 0)
+ if (GetBattlerSide(r4) == 0)
{
CpuCopy32(sub_8043CDC(0x74), OBJ_VRAM0 + (gSprites[a].oam.tileNum + 0x34) * 32, 32);
}
@@ -942,7 +1306,7 @@ _0804420C: .4byte 0x04000008\n\
sub_80034D4(ewram0_9(0), str);
for (i = 0; i < r10; i++)
{
- CpuCopy32((void *)(ewram0_9(1) + i * 0x40), r7[i] + gSprites[r4].oam.tileNum * 32, 0x20);
+ CpuCopy32((void *)(ewram0_9(1) + i * 0x40), r7[i] + gSprites[r4].oam.tileNum * 32, 32);
}
}
@@ -959,7 +1323,7 @@ void sub_8044338(u8 a, struct Pokemon *pkmn)
// TODO: make this a local variable
memcpy(str, gUnknown_0820A864, sizeof(str));
- r6 = ewram520[GetBankIdentity(gSprites[a].data[6])].filler0;
+ r6 = ewram520[GetBattlerPosition(gSprites[a].data[6])].filler0;
r8 = 5;
nature = GetNature(pkmn);
StringCopy(str + 6, gNatureNames[nature]);
@@ -1016,7 +1380,7 @@ void sub_8044338(u8 a, struct Pokemon *pkmn)
}
}
#else
-__attribute__((naked))
+NAKED
void sub_8044338(u8 a, struct Pokemon *pkmn)
{
asm(".syntax unified\n\
@@ -1043,7 +1407,7 @@ void sub_8044338(u8 a, struct Pokemon *pkmn)
ldrh r0, [r0, 0x3A]\n\
lsls r0, 24\n\
lsrs r0, 24\n\
- bl GetBankIdentity\n\
+ bl GetBattlerPosition\n\
lsls r0, 24\n\
lsrs r0, 24\n\
lsls r1, r0, 1\n\
@@ -1284,21 +1648,21 @@ void sub_804454C(void)
s32 i;
u8 spriteId;
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
if (gSprites[gHealthboxIDs[i]].callback == SpriteCallbackDummy
#if DEBUG
- && (gUnknown_020297ED != 0 || GetBankSide(i) != 1)
+ && (gUnknown_020297ED != 0 || GetBattlerSide(i) != 1)
#else
- && GetBankSide(i) != 1
+ && GetBattlerSide(i) != 1
#endif
- && (IsDoubleBattle() || GetBankSide(i) != 0))
+ && (IsDoubleBattle() || GetBattlerSide(i) != 0))
{
u8 r6;
ewram17800[i].unk0_4 ^= 1;
r6 = ewram17800[i].unk0_4;
- if (GetBankSide(i) == 0)
+ if (GetBattlerSide(i) == 0)
{
if (!IsDoubleBattle())
@@ -1311,13 +1675,13 @@ void sub_804454C(void)
spriteId = gSprites[gHealthboxIDs[i]].data[5];
CpuFill32(0, OBJ_VRAM0 + gSprites[spriteId].oam.tileNum * 32, 0x100);
- sub_8044210(gHealthboxIDs[i], GetMonData(&gPlayerParty[gBattlePartyID[i]], MON_DATA_HP), 0);
- sub_8044210(gHealthboxIDs[i], GetMonData(&gPlayerParty[gBattlePartyID[i]], MON_DATA_MAX_HP), 1);
+ sub_8044210(gHealthboxIDs[i], GetMonData(&gPlayerParty[gBattlerPartyIndexes[i]], MON_DATA_HP), 0);
+ sub_8044210(gHealthboxIDs[i], GetMonData(&gPlayerParty[gBattlerPartyIndexes[i]], MON_DATA_MAX_HP), 1);
}
else
{
draw_status_ailment_maybe(gHealthboxIDs[i]);
- sub_8045A5C(gHealthboxIDs[i], &gPlayerParty[gBattlePartyID[i]], 5);
+ sub_8045A5C(gHealthboxIDs[i], &gPlayerParty[gBattlerPartyIndexes[i]], 5);
CpuCopy32(sub_8043CDC(0x75), OBJ_VRAM0 + 0x680 + gSprites[gHealthboxIDs[i]].oam.tileNum * 32, 32);
}
}
@@ -1327,23 +1691,23 @@ void sub_804454C(void)
{
if (gBattleTypeFlags & BATTLE_TYPE_SAFARI)
{
- sub_8044338(gHealthboxIDs[i], &gEnemyParty[gBattlePartyID[i]]);
+ sub_8044338(gHealthboxIDs[i], &gEnemyParty[gBattlerPartyIndexes[i]]);
}
else
{
spriteId = gSprites[gHealthboxIDs[i]].data[5];
CpuFill32(0, OBJ_VRAM0 + gSprites[spriteId].oam.tileNum * 32, 0x100);
- sub_8044210(gHealthboxIDs[i], GetMonData(&gEnemyParty[gBattlePartyID[i]], MON_DATA_HP), 0);
- sub_8044210(gHealthboxIDs[i], GetMonData(&gEnemyParty[gBattlePartyID[i]], MON_DATA_MAX_HP), 1);
+ sub_8044210(gHealthboxIDs[i], GetMonData(&gEnemyParty[gBattlerPartyIndexes[i]], MON_DATA_HP), 0);
+ sub_8044210(gHealthboxIDs[i], GetMonData(&gEnemyParty[gBattlerPartyIndexes[i]], MON_DATA_MAX_HP), 1);
}
}
else
{
draw_status_ailment_maybe(gHealthboxIDs[i]);
- sub_8045A5C(gHealthboxIDs[i], &gEnemyParty[gBattlePartyID[i]], 5);
+ sub_8045A5C(gHealthboxIDs[i], &gEnemyParty[gBattlerPartyIndexes[i]], 5);
if (gBattleTypeFlags & BATTLE_TYPE_SAFARI)
- sub_8045A5C(gHealthboxIDs[i], &gEnemyParty[gBattlePartyID[i]], 4);
+ sub_8045A5C(gHealthboxIDs[i], &gEnemyParty[gBattlerPartyIndexes[i]], 4);
}
}
gSprites[gHealthboxIDs[i]].data[7] ^= 1;
@@ -1367,9 +1731,9 @@ u8 sub_8044804(u8 a, const struct BattleInterfaceStruct2 *b, u8 c, u8 d)
u8 sp18;
u8 taskId;
- if (c == 0 || GetBankIdentity(a) != 3)
+ if (c == 0 || GetBattlerPosition(a) != 3)
{
- if (GetBankSide(a) == 0)
+ if (GetBattlerSide(a) == 0)
{
r7 = 0;
x = 136;
@@ -1462,7 +1826,7 @@ u8 sub_8044804(u8 a, const struct BattleInterfaceStruct2 *b, u8 c, u8 d)
gSprites[sp[i]].data[2] = r7;
}
//_08044A76
- if (GetBankSide(a) == 0)
+ if (GetBattlerSide(a) == 0)
{
for (i = 0; i < 6; i++) //_08044A9A
{
@@ -1561,7 +1925,7 @@ u8 sub_8044804(u8 a, const struct BattleInterfaceStruct2 *b, u8 c, u8 d)
return taskId;
}
#else
-__attribute__((naked))
+NAKED
u8 sub_8044804(u8 a, const struct BattleInterfaceStruct2 *b, u8 c, u8 d)
{
asm(".syntax unified\n\
@@ -1583,14 +1947,14 @@ u8 sub_8044804(u8 a, const struct BattleInterfaceStruct2 *b, u8 c, u8 d)
str r3, [sp, 0x10]\n\
cmp r4, 0\n\
beq _08044834\n\
- bl GetBankIdentity\n\
+ bl GetBattlerPosition\n\
lsls r0, 24\n\
lsrs r0, 24\n\
cmp r0, 0x3\n\
beq _08044878\n\
_08044834:\n\
ldr r0, [sp, 0x8]\n\
- bl GetBankSide\n\
+ bl GetBattlerSide\n\
lsls r0, 24\n\
cmp r0, 0\n\
bne _08044854\n\
@@ -1872,7 +2236,7 @@ _08044A56:\n\
b _08044970\n\
_08044A76:\n\
ldr r0, [sp, 0x8]\n\
- bl GetBankSide\n\
+ bl GetBattlerSide\n\
lsls r0, 24\n\
cmp r0, 0\n\
bne _08044B5E\n\
@@ -2178,7 +2542,7 @@ void sub_8044CA0(u8 taskId)
{
for (i = 0; i < 6; i++)
{
- if (GetBankSide(sp8) != 0)
+ if (GetBattlerSide(sp8) != 0)
{
gSprites[sp[5 - i]].data[1] = 7 * i;
gSprites[sp[5 - i]].data[3] = 0;
@@ -2275,7 +2639,7 @@ static void sub_8044F70(u8 taskId)
}
}
-void sub_8045030(struct Sprite *sprite)
+static void sub_8045030(struct Sprite *sprite)
{
if (sprite->pos2.x != 0)
sprite->pos2.x += sprite->data[0];
@@ -2291,7 +2655,7 @@ static void sub_8045048(struct Sprite *sprite)
sprite->data[1] &= 0xF;
}
-void sub_804507C(struct Sprite *sprite)
+static void sub_804507C(struct Sprite *sprite)
{
u8 r3;
u16 r2;
@@ -2415,7 +2779,7 @@ void sub_8045180(struct Sprite *sprite)
ptr[1] = 0x13;
ptr[2] = 0x37;
ptr[3] = EOS;
- ptr = ewram520_2 + GetBankIdentity(gSprites[a].data[6]) * 0x180;
+ ptr = ewram520_2 + GetBattlerPosition(gSprites[a].data[6]) * 0x180;
sub_80034D4(ptr, gDisplayedStringBattle);
i = 0;
@@ -2452,7 +2816,7 @@ void sub_8045180(struct Sprite *sprite)
for (; i < _7; i++)
CpuCopy32(sub_8043CDC(0x2B), ptr + 64 * i, 32);
- if (GetBankSide(gSprites[a].data[6]) == 0 && !IsDoubleBattle())
+ if (GetBattlerSide(gSprites[a].data[6]) == 0 && !IsDoubleBattle())
{
r1 = (u8 *const *)gUnknown_0820A8B4;
for (i = 0; i < _7; i++)
@@ -2470,7 +2834,7 @@ void sub_8045180(struct Sprite *sprite)
}
else
{
- if (GetBankSide(gSprites[a].data[6]) == 0)
+ if (GetBattlerSide(gSprites[a].data[6]) == 0)
r1 = (u8 *const *)gUnknown_0820A904;
else
r1 = (u8 *const *)gUnknown_0820A8DC;
@@ -2499,9 +2863,9 @@ static void sub_8045458(u8 a, u8 b)
return;
r4 = gSprites[a].data[6];
- if (GetBankSide(r4) != 0)
+ if (GetBattlerSide(r4) != 0)
{
- u16 species = GetMonData(&gEnemyParty[gBattlePartyID[r4]], MON_DATA_SPECIES);
+ u16 species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[r4]], MON_DATA_SPECIES);
if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), 1) != 0)
{
r4 = gSprites[a].data[5];
@@ -2526,9 +2890,9 @@ static void sub_8045458(u8 a, u8 b)
r7 = gSprites[a].data[6];
r10 = gSprites[a].data[5];
- if (GetBankSide(r7) == 0)
+ if (GetBattlerSide(r7) == 0)
{
- r4 = GetMonData(&gPlayerParty[gBattlePartyID[r7]], MON_DATA_STATUS);
+ r4 = GetMonData(&gPlayerParty[gBattlerPartyIndexes[r7]], MON_DATA_STATUS);
if (!IsDoubleBattle())
r8 = 0x1A;
else
@@ -2536,7 +2900,7 @@ static void sub_8045458(u8 a, u8 b)
}
else
{
- r4 = GetMonData(&gEnemyParty[gBattlePartyID[r7]], MON_DATA_STATUS);
+ r4 = GetMonData(&gEnemyParty[gBattlerPartyIndexes[r7]], MON_DATA_STATUS);
r8 = 0x11;
}
if (r4 & 7)
@@ -2584,7 +2948,7 @@ static void sub_8045458(u8 a, u8 b)
FillPalette(r0[gBattleInterfaceStatusIcons_DynPal], r4_2 + 0x100, 2);
CpuCopy16(gPlttBufferUnfaded + 0x100 + r4_2, (void *)(OBJ_PLTT + r4_2 * 2), 2);
CpuCopy32(r6, OBJ_VRAM0 + (gSprites[a].oam.tileNum + r8) * 32, 96);
- if (IsDoubleBattle() == TRUE || GetBankSide(r7) == TRUE)
+ if (IsDoubleBattle() == TRUE || GetBattlerSide(r7) == TRUE)
{
if (!ewram17800[r7].unk0_4)
{
@@ -2663,7 +3027,7 @@ static u8 sub_80457E8(u8 a, u8 b)
s32 r7;
u8 *addr;
- r6 = ewram520_2 + GetBankIdentity(gSprites[a].data[6]) * 0x180;
+ r6 = ewram520_2 + GetBattlerPosition(gSprites[a].data[6]) * 0x180;
r8 = 7;
sub_80034D4(r6, BattleText_SafariBalls);
for (i = 0; i < r8; i++)
@@ -2691,7 +3055,7 @@ static u8 sub_80457E8(u8 a, u8 b)
r7 = StringCopy(gDisplayedStringBattle, BattleText_SafariBallsLeft);
r7 = sub_8003504(r7, gNumSafariBalls, 10, 1);
StringAppend(r7, BattleText_HighlightRed);
- status = GetBankIdentity(gSprites[a].data[6]);
+ status = GetBattlerPosition(gSprites[a].data[6]);
r7 = ewram520_2 + status * 0x180;
r6 = 5;
sub_80034D4(r7, gDisplayedStringBattle);
@@ -2710,7 +3074,7 @@ void sub_8045A5C(u8 a, struct Pokemon *pkmn, u8 c)
u32 currhp;
r10 = gSprites[a].data[6];
- if (GetBankSide(r10) == 0)
+ if (GetBattlerSide(r10) == 0)
{
if (c == 3 || c == 0)
sub_8043FC0(a, GetMonData(pkmn, MON_DATA_LEVEL));
@@ -2838,7 +3202,7 @@ static void sub_8045D58(u8 a, u8 b)
break;
case 1:
sub_804602C(ewram17850[a].unk4, ewram17850[a].unk8, ewram17850[a].unkC, &ewram17850[a].unk10, sp8, 8);
- r0 = GetMonData(&gPlayerParty[gBattlePartyID[a]], MON_DATA_LEVEL);
+ r0 = GetMonData(&gPlayerParty[gBattlerPartyIndexes[a]], MON_DATA_LEVEL);
if (r0 == 100)
{
for (i = 0; i < 8; i++)
@@ -3046,9 +3410,9 @@ u8 GetHPBarLevel(s16 hp, s16 maxhp)
else
{
u8 fraction = GetScaledHPFraction(hp, maxhp, 48);
- if (fraction > 24)
+ if (fraction >= 25)
result = 3;
- else if (fraction > 9)
+ else if (fraction >= 10)
result = 2;
else if (fraction > 0)
result = 1;
diff --git a/src/battle/battle_message.c b/src/battle/battle_message.c
index ed7ab3a35..f87e1f152 100644
--- a/src/battle/battle_message.c
+++ b/src/battle/battle_message.c
@@ -155,7 +155,7 @@ extern const u8* const gBattleStringsTable[BATTLESTRINGS_NO];
extern u16 gLastUsedItem;
extern u8 gLastUsedAbility;
-extern u8 gActiveBank;
+extern u8 gActiveBattler;
extern u8 gBankAttacker;
extern u8 gBankTarget;
extern u8 gStringBank;
@@ -172,7 +172,7 @@ extern u8 gDisplayedStringBattle[];
extern u8 gStringVar1[];
extern u8 gStringVar2[];
extern u8 gStringVar3[];
-extern u16 gBattlePartyID[4];
+extern u16 gBattlerPartyIndexes[4];
extern struct BattleEnigmaBerry gEnigmaBerries[4];
extern u8 gBattleBufferA[4][0x200];
@@ -197,14 +197,14 @@ void sub_8121D1C(u8* textBuff);
void sub_8121D74(u8* textBuff);
void StrCpyDecodeBattleTextBuff(u8* src, u8* dst);
-u8 GetBankSide(u8 bank);
+u8 GetBattlerSide(u8 bank);
s32 sub_803FC34(u16);
void get_trainer_name(u8* dst);
u8 get_trainer_class_name_index(void);
u8 GetMultiplayerId(void);
-u8 GetBankByIdentity(u8 ID);
-u8 GetBankSide(u8 bank);
-u8 GetBankIdentity(u8 bank);
+u8 GetBattlerAtPosition(u8 ID);
+u8 GetBattlerSide(u8 bank);
+u8 GetBattlerPosition(u8 bank);
#ifdef GERMAN
extern u8 *de_sub_804110C();
#endif
@@ -214,7 +214,7 @@ void BufferStringBattle(u16 stringID)
int i;
const u8* stringPtr = NULL;
- gStringInfo = (struct StringInfoBattle*)(&gBattleBufferA[gActiveBank][4]);
+ gStringInfo = (struct StringInfoBattle*)(&gBattleBufferA[gActiveBattler][4]);
gLastUsedItem = gStringInfo->lastItem;
gLastUsedAbility = gStringInfo->lastAbility;
gBattleStruct->scriptingActive = gStringInfo->scrActive;
@@ -265,7 +265,7 @@ void BufferStringBattle(u16 stringID)
}
break;
case 1: // poke first send-out
- if (GetBankSide(gActiveBank) == 0)
+ if (GetBattlerSide(gActiveBattler) == 0)
{
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
{
@@ -305,7 +305,7 @@ void BufferStringBattle(u16 stringID)
}
break;
case 2: // sending poke to ball msg
- if (GetBankSide(gActiveBank) == 0)
+ if (GetBattlerSide(gActiveBattler) == 0)
{
if (gBattleStruct->hpScale == 0)
stringPtr = BattleText_ComeBackSingle1;
@@ -335,7 +335,7 @@ void BufferStringBattle(u16 stringID)
}
break;
case 3: // switch-in msg
- if (GetBankSide(gBattleStruct->scriptingActive) == 0)
+ if (GetBattlerSide(gBattleStruct->scriptingActive) == 0)
{
if (gBattleStruct->hpScale == 0 || gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
stringPtr = BattleText_SentOutSingle7;
@@ -377,7 +377,7 @@ void BufferStringBattle(u16 stringID)
if (gBattleTextBuff1[0] & 0x80)
{
gBattleTextBuff1[0] &= ~(0x80);
- if (GetBankSide(gActiveBank) == 1 && gBattleTextBuff1[0] != 3)
+ if (GetBattlerSide(gActiveBattler) == 1 && gBattleTextBuff1[0] != 3)
gBattleTextBuff1[0] ^= 3;
if (gBattleTextBuff1[0] == BATTLE_LOST || gBattleTextBuff1[0] == BATTLE_DREW)
stringPtr = BattleText_GotAwaySafely;
@@ -391,7 +391,7 @@ void BufferStringBattle(u16 stringID)
}
else
{
- if (GetBankSide(gActiveBank) == 1 && gBattleTextBuff1[0] != 3)
+ if (GetBattlerSide(gActiveBattler) == 1 && gBattleTextBuff1[0] != 3)
gBattleTextBuff1[0] ^= 3;
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
{
@@ -483,7 +483,7 @@ extern u8 *de_sub_8041024(s32, u32);
#ifdef ENGLISH
#define HANDLE_NICKNAME_STRING_CASE(bank, monIndex) \
- if (GetBankSide(bank) != 0) \
+ if (GetBattlerSide(bank) != 0) \
{ \
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) \
toCpy = BattleText_Foe; \
@@ -505,7 +505,7 @@ extern u8 *de_sub_8041024(s32, u32);
toCpy = text;
#else
#define HANDLE_NICKNAME_STRING_CASE(bank, monIndex) \
- if (GetBankSide(bank) != 0) \
+ if (GetBattlerSide(bank) != 0) \
{ \
GetMonData(&gEnemyParty[monIndex], MON_DATA_NICKNAME, text); \
StringGetEnd10(text); \
@@ -575,71 +575,71 @@ u32 StrCpyDecodeBattle(const u8* src, u8* dst)
toCpy = gBattleTextBuff3;
break;
case 2: // first player poke name
- GetMonData(&gPlayerParty[gBattlePartyID[GetBankByIdentity(0)]], MON_DATA_NICKNAME, text);
+ GetMonData(&gPlayerParty[gBattlerPartyIndexes[GetBattlerAtPosition(0)]], MON_DATA_NICKNAME, text);
StringGetEnd10(text);
toCpy = text;
break;
case 3: // first enemy poke name
- GetMonData(&gEnemyParty[gBattlePartyID[GetBankByIdentity(1)]], MON_DATA_NICKNAME, text);
+ GetMonData(&gEnemyParty[gBattlerPartyIndexes[GetBattlerAtPosition(1)]], MON_DATA_NICKNAME, text);
StringGetEnd10(text);
toCpy = text;
break;
case 4: // second player poke name
- GetMonData(&gPlayerParty[gBattlePartyID[GetBankByIdentity(2)]], MON_DATA_NICKNAME, text);
+ GetMonData(&gPlayerParty[gBattlerPartyIndexes[GetBattlerAtPosition(2)]], MON_DATA_NICKNAME, text);
StringGetEnd10(text);
toCpy = text;
break;
case 5: // second enemy poke name
- GetMonData(&gEnemyParty[gBattlePartyID[GetBankByIdentity(3)]], MON_DATA_NICKNAME, text);
+ GetMonData(&gEnemyParty[gBattlerPartyIndexes[GetBattlerAtPosition(3)]], MON_DATA_NICKNAME, text);
StringGetEnd10(text);
toCpy = text;
break;
case 6: // link first player poke name
- GetMonData(&gPlayerParty[gBattlePartyID[gLinkPlayers[multiplayerID].lp_field_18]], MON_DATA_NICKNAME, text);
+ GetMonData(&gPlayerParty[gBattlerPartyIndexes[gLinkPlayers[multiplayerID].lp_field_18]], MON_DATA_NICKNAME, text);
StringGetEnd10(text);
toCpy = text;
break;
case 7: // link first opponent poke name
- GetMonData(&gEnemyParty[gBattlePartyID[gLinkPlayers[multiplayerID].lp_field_18 ^ 1]], MON_DATA_NICKNAME, text);
+ GetMonData(&gEnemyParty[gBattlerPartyIndexes[gLinkPlayers[multiplayerID].lp_field_18 ^ 1]], MON_DATA_NICKNAME, text);
StringGetEnd10(text);
toCpy = text;
break;
case 8: // link second player poke name
- GetMonData(&gPlayerParty[gBattlePartyID[gLinkPlayers[multiplayerID].lp_field_18 ^ 2]], MON_DATA_NICKNAME, text);
+ GetMonData(&gPlayerParty[gBattlerPartyIndexes[gLinkPlayers[multiplayerID].lp_field_18 ^ 2]], MON_DATA_NICKNAME, text);
StringGetEnd10(text);
toCpy = text;
break;
case 9: // link second opponent poke name
- GetMonData(&gEnemyParty[gBattlePartyID[gLinkPlayers[multiplayerID].lp_field_18 ^ 3]], MON_DATA_NICKNAME, text);
+ GetMonData(&gEnemyParty[gBattlerPartyIndexes[gLinkPlayers[multiplayerID].lp_field_18 ^ 3]], MON_DATA_NICKNAME, text);
StringGetEnd10(text);
toCpy = text;
break;
case 10: // attacker name with prefix, only bank 0/1
- HANDLE_NICKNAME_STRING_CASE(gBankAttacker, gBattlePartyID[GetBankByIdentity(GetBankIdentity(gBankAttacker) & 1)])
+ HANDLE_NICKNAME_STRING_CASE(gBankAttacker, gBattlerPartyIndexes[GetBattlerAtPosition(GetBattlerPosition(gBankAttacker) & 1)])
break;
case 11: // attacker partner name, only bank 0/1
- if (GetBankSide(gBankAttacker) == 0)
- GetMonData(&gPlayerParty[gBattlePartyID[GetBankByIdentity(GetBankIdentity(gBankAttacker) & 1) + 2]], MON_DATA_NICKNAME, text);
+ if (GetBattlerSide(gBankAttacker) == 0)
+ GetMonData(&gPlayerParty[gBattlerPartyIndexes[GetBattlerAtPosition(GetBattlerPosition(gBankAttacker) & 1) + 2]], MON_DATA_NICKNAME, text);
else
- GetMonData(&gEnemyParty[gBattlePartyID[GetBankByIdentity(GetBankIdentity(gBankAttacker) & 1) + 2]], MON_DATA_NICKNAME, text);
+ GetMonData(&gEnemyParty[gBattlerPartyIndexes[GetBattlerAtPosition(GetBattlerPosition(gBankAttacker) & 1) + 2]], MON_DATA_NICKNAME, text);
StringGetEnd10(text);
toCpy = text;
break;
case 12: // attacker name with prefix
- HANDLE_NICKNAME_STRING_CASE(gBankAttacker, gBattlePartyID[gBankAttacker])
+ HANDLE_NICKNAME_STRING_CASE(gBankAttacker, gBattlerPartyIndexes[gBankAttacker])
break;
case 13: // target name with prefix
- HANDLE_NICKNAME_STRING_CASE(gBankTarget, gBattlePartyID[gBankTarget])
+ HANDLE_NICKNAME_STRING_CASE(gBankTarget, gBattlerPartyIndexes[gBankTarget])
break;
case 14: // effect bank name with prefix
- HANDLE_NICKNAME_STRING_CASE(gEffectBank, gBattlePartyID[gEffectBank])
+ HANDLE_NICKNAME_STRING_CASE(gEffectBank, gBattlerPartyIndexes[gEffectBank])
break;
case 15: // active bank name with prefix
- HANDLE_NICKNAME_STRING_CASE(gActiveBank, gBattlePartyID[gActiveBank])
+ HANDLE_NICKNAME_STRING_CASE(gActiveBattler, gBattlerPartyIndexes[gActiveBattler])
break;
case 16: // scripting active bank name with prefix
- HANDLE_NICKNAME_STRING_CASE(gBattleStruct->scriptingActive, gBattlePartyID[gBattleStruct->scriptingActive])
+ HANDLE_NICKNAME_STRING_CASE(gBattleStruct->scriptingActive, gBattlerPartyIndexes[gBattleStruct->scriptingActive])
break;
case 17: // current move name
if (gStringInfo->currentMove > 0x162)
@@ -771,37 +771,37 @@ u32 StrCpyDecodeBattle(const u8* src, u8* dst)
toCpy = BattleText_Someone;
break;
case 38:
- if (GetBankSide(gBankAttacker) == 0)
+ if (GetBattlerSide(gBankAttacker) == 0)
toCpy = BattleText_Ally2;
else
toCpy = BattleText_Foe3;
break;
case 39:
- if (GetBankSide(gBankTarget) == 0)
+ if (GetBattlerSide(gBankTarget) == 0)
toCpy = BattleText_Ally2;
else
toCpy = BattleText_Foe3;
break;
case 36:
- if (GetBankSide(gBankAttacker) == 0)
+ if (GetBattlerSide(gBankAttacker) == 0)
toCpy = BattleText_Ally;
else
toCpy = BattleText_Foe2;
break;
case 37:
- if (GetBankSide(gBankTarget) == 0)
+ if (GetBattlerSide(gBankTarget) == 0)
toCpy = BattleText_Ally;
else
toCpy = BattleText_Foe2;
break;
case 40:
- if (GetBankSide(gBankAttacker) == 0)
+ if (GetBattlerSide(gBankAttacker) == 0)
toCpy = BattleText_Ally3;
else
toCpy = BattleText_Foe4;
break;
case 41:
- if (GetBankSide(gBankTarget) == 0)
+ if (GetBattlerSide(gBankTarget) == 0)
toCpy = BattleText_Ally3;
else
toCpy = BattleText_Foe4;
@@ -884,7 +884,7 @@ void StrCpyDecodeBattleTextBuff(u8* src, u8* dst)
break;
case 4: // poke nick with prefix
#ifdef ENGLISH
- if (GetBankSide(src[srcID + 1]) == 0)
+ if (GetBattlerSide(src[srcID + 1]) == 0)
{
GetMonData(&gPlayerParty[src[srcID + 2]], MON_DATA_NICKNAME, text);
}
@@ -899,7 +899,7 @@ void StrCpyDecodeBattleTextBuff(u8* src, u8* dst)
StringGetEnd10(text);
StringAppend(dst, text);
#else
- if (GetBankSide(src[srcID + 1]) == 0)
+ if (GetBattlerSide(src[srcID + 1]) == 0)
{
GetMonData(&gPlayerParty[src[srcID + 2]], MON_DATA_NICKNAME, text);
StringGetEnd10(text);
@@ -927,7 +927,7 @@ void StrCpyDecodeBattleTextBuff(u8* src, u8* dst)
srcID += 3;
break;
case 7: // poke nick without prefix
- if (GetBankSide(src[srcID + 1]) == 0)
+ if (GetBattlerSide(src[srcID + 1]) == 0)
GetMonData(&gPlayerParty[src[srcID + 2]], MON_DATA_NICKNAME, dst);
else
GetMonData(&gEnemyParty[src[srcID + 2]], MON_DATA_NICKNAME, dst);
diff --git a/src/battle/battle_party_menu.c b/src/battle/battle_party_menu.c
index ed8cf4583..e758b7957 100644
--- a/src/battle/battle_party_menu.c
+++ b/src/battle/battle_party_menu.c
@@ -31,8 +31,8 @@ extern void nullsub_14();
extern u8 sub_803FBBC(void);
extern u8 gPlayerPartyCount;
-extern u8 gNoOfAllBanks;
-extern u16 gBattlePartyID[];
+extern u8 gBattlersCount;
+extern u16 gBattlerPartyIndexes[];
extern u8 gBankInMenu;
extern u8 gUnknown_0202E8F4;
extern u8 gUnknown_0202E8F5;
@@ -122,7 +122,7 @@ static void sub_8094998(u8 arg[3], u8 player_number)
if (!IsDoubleBattle())
{
pos = 1;
- *temp = gBattlePartyID[GetBankByIdentity(0)];
+ *temp = gBattlerPartyIndexes[GetBattlerAtPosition(0)];
for (i = 0; i <= 5; i++)
if (i != *temp)
temp[pos++] = i;
@@ -130,8 +130,8 @@ static void sub_8094998(u8 arg[3], u8 player_number)
else
{
pos = 2;
- *temp = gBattlePartyID[GetBankByIdentity(0)];
- temp[1] = gBattlePartyID[GetBankByIdentity(2)];
+ *temp = gBattlerPartyIndexes[GetBattlerAtPosition(0)];
+ temp[1] = gBattlerPartyIndexes[GetBattlerAtPosition(2)];
for (i = 0; i <= 5; i++)
if ((i != *temp) && (i != temp[1]))
temp[pos++] = i;
@@ -145,15 +145,15 @@ static void sub_8094A74(u8 arg[3], u8 player_number, u32 arg3)
{
int i, j;
u8 temp[6];
- if (!GetBankSide(arg3))
+ if (!GetBattlerSide(arg3))
{
- i = GetBankByIdentity(0);
- j = GetBankByIdentity(2);
+ i = GetBattlerAtPosition(0);
+ j = GetBattlerAtPosition(2);
}
else
{
- i = GetBankByIdentity(1);
- j = GetBankByIdentity(3);
+ i = GetBattlerAtPosition(1);
+ j = GetBattlerAtPosition(3);
}
if (IsLinkDoubleBattle() == TRUE)
{
@@ -175,7 +175,7 @@ static void sub_8094A74(u8 arg[3], u8 player_number, u32 arg3)
if (!IsDoubleBattle())
{
int pos = 1;
- *temp = gBattlePartyID[i];
+ *temp = gBattlerPartyIndexes[i];
for (i = 0; i <= 5; i++)
if (i != *temp)
temp[pos++] = i;
@@ -183,8 +183,8 @@ static void sub_8094A74(u8 arg[3], u8 player_number, u32 arg3)
else
{
int pos = 2;
- *temp = gBattlePartyID[i];
- temp[1] = gBattlePartyID[j];
+ *temp = gBattlerPartyIndexes[i];
+ temp[1] = gBattlerPartyIndexes[j];
for (i = 0; i <= 5; i++)
if ((i != *temp) && (i != temp[1]))
temp[pos++] = i;
@@ -232,16 +232,16 @@ void sub_8094B6C(u8 a, u8 b, u8 c)
}
}
-u8 sub_8094C20(u8 a)
+u8 sub_8094C20(u8 monIndex)
{
u8 retVal;
- u8 val = a & 1;
+ u8 val = monIndex & 1;
- a /= 2;
+ monIndex /= 2;
if (val)
- retVal = gUnknown_02038470[a] & 0xF;
+ retVal = gUnknown_02038470[monIndex] & 0xF;
else
- retVal = gUnknown_02038470[a] >> 4;
+ retVal = gUnknown_02038470[monIndex] >> 4;
return retVal;
}
@@ -515,7 +515,7 @@ void HandleBattlePartyMenu(u8 taskId)
static void Task_809527C(u8 taskId)
{
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gTasks[taskId].func = Task_80952B4;
}
@@ -535,7 +535,7 @@ static void Task_80952E4(u8 taskId)
Task_809527C(taskId);
else
{
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gTasks[taskId].func = Task_8095330;
}
}
@@ -633,7 +633,7 @@ static void Task_BattlePartyMenuSummary(u8 taskId)
{
sub_806CA38(taskId); //an unused variable was probably set with this.
gTasks[taskId].func = Task_ShowSummaryScreen;
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
}
static void Task_BattlePartyMenuShift(u8 taskId)
@@ -662,10 +662,10 @@ static void Task_BattlePartyMenuShift(u8 taskId)
gTasks[taskId].func = Task_80954C0;
return;
}
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
- if (GetBankSide(i) == 0
- && sub_8094C20(partySelection) == gBattlePartyID[i])
+ if (GetBattlerSide(i) == 0
+ && sub_8094C20(partySelection) == gBattlerPartyIndexes[i])
{
sub_806D5A4();
GetMonNickname(&gPlayerParty[partySelection], gStringVar1);
@@ -706,7 +706,7 @@ static void Task_BattlePartyMenuShift(u8 taskId)
u8 r4 = gBankInMenu;
sub_806D5A4();
- r0 = pokemon_order_func(gBattlePartyID[r4]);
+ r0 = pokemon_order_func(gBattlerPartyIndexes[r4]);
GetMonNickname(&gPlayerParty[r0], gStringVar1);
StringExpandPlaceholders(gStringVar4, gOtherText_CantBeSwitched);
sub_806E834(gStringVar4, 0);
@@ -715,7 +715,7 @@ static void Task_BattlePartyMenuShift(u8 taskId)
}
gUnknown_0202E8F5 = sub_8094C20(partySelection);
gUnknown_0202E8F4 = 1;
- r4 = pokemon_order_func(gBattlePartyID[gBankInMenu]);
+ r4 = pokemon_order_func(gBattlerPartyIndexes[gBankInMenu]);
sub_8094C98(r4, partySelection);
SwapPokemon(&gPlayerParty[r4], &gPlayerParty[partySelection]);
gTasks[taskId].func = Task_809527C;
diff --git a/src/battle/battle_records.c b/src/battle/battle_records.c
index 8b9cf9ea0..fed8d6575 100644
--- a/src/battle/battle_records.c
+++ b/src/battle/battle_records.c
@@ -14,7 +14,7 @@ struct DebugStruct1
u8 var1[10];
};
-extern struct LinkPlayerMapObject gLinkPlayerMapObjects[4];
+extern struct LinkPlayerEventObject gLinkPlayerEventObjects[4];
extern u8 gBattleOutcome;
#if DEBUG
@@ -220,7 +220,7 @@ void UpdateLinkBattleRecords(int id)
gTrainerCards[id].playerName,
gTrainerCards[id].trainerId,
gBattleOutcome,
- gLinkPlayers[gLinkPlayerMapObjects[id].linkPlayerId].language);
+ gLinkPlayers[gLinkPlayerEventObjects[id].linkPlayerId].language);
}
#if DEBUG
@@ -238,7 +238,7 @@ void debug_sub_81257E0(void)
gUnknown_Debug_4245CC[id].var1,
gUnknown_Debug_4245CC[id].var0,
gUnknown_Debug_8424620[i].unk1,
- gLinkPlayers[gLinkPlayerMapObjects[id].linkPlayerId].language);
+ gLinkPlayers[gLinkPlayerEventObjects[id].linkPlayerId].language);
}
}
#endif
@@ -335,7 +335,7 @@ static void PrintWinStreak(const u8 *str, u16 streak, u8 left, u8 top)
Menu_PrintText(str, left, top);
if (streak > 9999)
streak = 9999;
- sub_8072C14(gStringVar1, streak, 24, 1);
+ AlignInt1InMenuWindow(gStringVar1, streak, 24, 1);
Menu_PrintText(gOtherText_WinStreak, left + 7, top);
}
diff --git a/src/battle/battle_setup.c b/src/battle/battle_setup.c
index ec4a26bc5..8c5f68902 100644
--- a/src/battle/battle_setup.c
+++ b/src/battle/battle_setup.c
@@ -38,7 +38,7 @@ extern void (*gFieldCallback)(void);
EWRAM_DATA static u16 sTrainerBattleMode = 0;
EWRAM_DATA u16 gTrainerBattleOpponent = 0;
-EWRAM_DATA static u16 sTrainerMapObjectLocalId = 0;
+EWRAM_DATA static u16 sTrainerEventObjectLocalId = 0;
EWRAM_DATA static u8 *sTrainerIntroSpeech = NULL;
EWRAM_DATA static u8 *sTrainerDefeatSpeech = NULL;
EWRAM_DATA static u8 *sTrainerVictorySpeech = NULL;
@@ -50,7 +50,7 @@ extern u16 gBattleTypeFlags;
extern u16 gSpecialVar_LastTalked;
extern u8 gBattleOutcome;
-extern struct MapObject gMapObjects[];
+extern struct EventObject gEventObjects[];
extern u8 gUnknown_0819F818[];
extern u8 gUnknown_0819F840[];
@@ -99,7 +99,7 @@ static const struct TrainerBattleParameter gTrainerBattleSpecs_0[] =
{
{&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
{&gTrainerBattleOpponent, TRAINER_PARAM_LOAD_VAL_16BIT},
- {&sTrainerMapObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
+ {&sTrainerEventObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
{&sTrainerIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
{&sTrainerDefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
{&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
@@ -111,7 +111,7 @@ static const struct TrainerBattleParameter gTrainerBattleSpecs_1[] =
{
{&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
{&gTrainerBattleOpponent, TRAINER_PARAM_LOAD_VAL_16BIT},
- {&sTrainerMapObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
+ {&sTrainerEventObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
{&sTrainerIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
{&sTrainerDefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
{&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
@@ -123,7 +123,7 @@ static const struct TrainerBattleParameter gTrainerBattleSpecs_2[] =
{
{&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
{&gTrainerBattleOpponent, TRAINER_PARAM_LOAD_VAL_16BIT},
- {&sTrainerMapObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
+ {&sTrainerEventObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
{&sTrainerIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
{&sTrainerDefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
{&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
@@ -135,7 +135,7 @@ static const struct TrainerBattleParameter gTrainerBattleSpecs_3[] =
{
{&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
{&gTrainerBattleOpponent, TRAINER_PARAM_LOAD_VAL_16BIT},
- {&sTrainerMapObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
+ {&sTrainerEventObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
{&sTrainerIntroSpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
{&sTrainerDefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
{&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
@@ -147,7 +147,7 @@ static const struct TrainerBattleParameter gTrainerBattleSpecs_4[] =
{
{&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
{&gTrainerBattleOpponent, TRAINER_PARAM_LOAD_VAL_16BIT},
- {&sTrainerMapObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
+ {&sTrainerEventObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
{&sTrainerIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
{&sTrainerDefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
{&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
@@ -484,8 +484,8 @@ static void Task_BattleStart(u8 taskId)
if (IsBattleTransitionDone() == TRUE)
{
SetMainCallback2(sub_800E7C4);
- prev_quest_postbuffer_cursor_backup_reset();
- overworld_poison_timer_set();
+ RestartWildEncounterImmunitySteps();
+ ClearPoisonStepCounter();
DestroyTask(taskId);
}
break;
@@ -514,7 +514,7 @@ void BattleSetup_StartWildBattle(void)
static void DoStandardWildBattle(void)
{
ScriptContext2_Enable();
- FreezeMapObjects();
+ FreezeEventObjects();
sub_80597F4();
gMain.savedCallback = CB2_EndWildBattle;
gBattleTypeFlags = 0;
@@ -526,7 +526,7 @@ static void DoStandardWildBattle(void)
void BattleSetup_StartRoamerBattle(void)
{
ScriptContext2_Enable();
- FreezeMapObjects();
+ FreezeEventObjects();
sub_80597F4();
gMain.savedCallback = CB2_EndWildBattle;
gBattleTypeFlags = BATTLE_TYPE_ROAMER;
@@ -538,7 +538,7 @@ void BattleSetup_StartRoamerBattle(void)
static void DoSafariBattle(void)
{
ScriptContext2_Enable();
- FreezeMapObjects();
+ FreezeEventObjects();
sub_80597F4();
gMain.savedCallback = sub_80C824C;
gBattleTypeFlags = BATTLE_TYPE_SAFARI;
@@ -587,7 +587,7 @@ void ScrSpecial_StartRayquazaBattle(void)
ScriptContext2_Enable();
gMain.savedCallback = CB2_EndScriptedWildBattle;
gBattleTypeFlags = BATTLE_TYPE_LEGENDARY;
- CreateBattleStartTask(B_TRANSITION_BLUR, BGM_BATTLE34);
+ CreateBattleStartTask(B_TRANSITION_BLUR, MUS_BATTLE34);
IncrementGameStat(GAME_STAT_TOTAL_BATTLES);
IncrementGameStat(GAME_STAT_WILD_BATTLES);
}
@@ -598,9 +598,9 @@ void ScrSpecial_StartGroudonKyogreBattle(void)
gMain.savedCallback = CB2_EndScriptedWildBattle;
gBattleTypeFlags = BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_KYOGRE_GROUDON;
if (gGameVersion == VERSION_RUBY)
- CreateBattleStartTask(B_TRANSITION_SHARDS, BGM_BATTLE34); // GROUDON
+ CreateBattleStartTask(B_TRANSITION_SHARDS, MUS_BATTLE34); // GROUDON
else
- CreateBattleStartTask(B_TRANSITION_RIPPLE, BGM_BATTLE34); // KYOGRE
+ CreateBattleStartTask(B_TRANSITION_RIPPLE, MUS_BATTLE34); // KYOGRE
IncrementGameStat(GAME_STAT_TOTAL_BATTLES);
IncrementGameStat(GAME_STAT_WILD_BATTLES);
}
@@ -610,7 +610,7 @@ void ScrSpecial_StartRegiBattle(void)
ScriptContext2_Enable();
gMain.savedCallback = CB2_EndScriptedWildBattle;
gBattleTypeFlags = BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_REGI;
- CreateBattleStartTask(B_TRANSITION_GRID_SQUARES, BGM_BATTLE36);
+ CreateBattleStartTask(B_TRANSITION_GRID_SQUARES, MUS_BATTLE36);
IncrementGameStat(GAME_STAT_TOTAL_BATTLES);
IncrementGameStat(GAME_STAT_WILD_BATTLES);
}
@@ -663,7 +663,7 @@ s8 BattleSetup_GetTerrain(void)
case MAP_TYPE_ROUTE:
break;
case MAP_TYPE_UNDERGROUND:
- if (sub_80574C4(tileBehavior))
+ if (MetatileBehavior_IsIndoorEncounter(tileBehavior))
return BATTLE_TERRAIN_BUILDING;
if (MetatileBehavior_IsSurfableWaterOrUnderwater(tileBehavior))
return BATTLE_TERRAIN_POND;
@@ -678,15 +678,15 @@ s8 BattleSetup_GetTerrain(void)
return BATTLE_TERRAIN_WATER;
return BATTLE_TERRAIN_PLAIN;
}
- if (sub_8057568(tileBehavior))
+ if (MetatileBehavior_IsOceanWater(tileBehavior))
return BATTLE_TERRAIN_WATER;
if (MetatileBehavior_IsSurfableWaterOrUnderwater(tileBehavior))
return BATTLE_TERRAIN_POND;
- if (sub_80574D8(tileBehavior))
+ if (MetatileBehavior_IsMountainTop(tileBehavior))
return BATTLE_TERRAIN_MOUNTAIN;
if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING))
{
- if (sub_8057450(tileBehavior))
+ if (MetatileBehavior_GetBridgeType(tileBehavior))
return BATTLE_TERRAIN_POND;
if (MetatileBehavior_IsBridge(tileBehavior) == TRUE)
return BATTLE_TERRAIN_WATER;
@@ -747,7 +747,7 @@ static u8 GetSumOfEnemyPartyLevel(u16 opponentId, u8 numMons)
u8 i;
u8 sum;
u32 count = numMons;
- void *party;
+ const void *party;
if (gTrainers[opponentId].partySize < count)
count = gTrainers[opponentId].partySize;
@@ -801,25 +801,25 @@ static u8 GetTrainerBattleTransition(void)
u8 enemyLevel;
u8 playerLevel;
- if (gTrainerBattleOpponent == SECRET_BASE_OPPONENT) // link battle?
+ if (gTrainerBattleOpponent == SECRET_BASE_OPPONENT)
return B_TRANSITION_STEVEN;
trainer = gTrainers;
- if (trainer[gTrainerBattleOpponent].trainerClass == 24) // league?
+ if (trainer[gTrainerBattleOpponent].trainerClass == TRAINER_CLASS_ELITE_FOUR)
{
- if (gTrainerBattleOpponent == 261)
+ if (gTrainerBattleOpponent == OPPONENT_SIDNEY)
return B_TRANSITION_SYDNEY;
- if (gTrainerBattleOpponent == 262)
+ if (gTrainerBattleOpponent == OPPONENT_PHOEBE)
return B_TRANSITION_PHOEBE;
- if (gTrainerBattleOpponent == 263)
+ if (gTrainerBattleOpponent == OPPONENT_GLACIA)
return B_TRANSITION_GLACIA;
- if (gTrainerBattleOpponent == 264)
+ if (gTrainerBattleOpponent == OPPONENT_DRAKE)
return B_TRANSITION_DRAKE;
return B_TRANSITION_STEVEN;
}
- if (trainer[gTrainerBattleOpponent].trainerClass == 32) // team leader?
+ if (trainer[gTrainerBattleOpponent].trainerClass == TRAINER_CLASS_CHAMPION)
return B_TRANSITION_STEVEN;
if (trainer[gTrainerBattleOpponent].doubleBattle == TRUE)
@@ -876,8 +876,8 @@ static void CB2_StartFirstBattle(void)
gBattleTypeFlags = BATTLE_TYPE_FIRST_BATTLE;
gMain.savedCallback = CB2_EndFirstBattle;
SetMainCallback2(sub_800E7C4);
- prev_quest_postbuffer_cursor_backup_reset();
- overworld_poison_timer_set();
+ RestartWildEncounterImmunitySteps();
+ ClearPoisonStepCounter();
IncrementGameStat(GAME_STAT_TOTAL_BATTLES);
IncrementGameStat(GAME_STAT_WILD_BATTLES);
}
@@ -932,7 +932,7 @@ static void ResetTrainerOpponentIds(void)
{
sTrainerBattleMode = 0;
gTrainerBattleOpponent = 0;
- sTrainerMapObjectLocalId = 0;
+ sTrainerEventObjectLocalId = 0;
sTrainerIntroSpeech = 0;
sTrainerDefeatSpeech = 0;
sTrainerVictorySpeech = 0;
@@ -978,10 +978,10 @@ static void TrainerBattleLoadArgs(const struct TrainerBattleParameter *specs, co
static void SetMapVarsToTrainer(void)
{
- if (sTrainerMapObjectLocalId)
+ if (sTrainerEventObjectLocalId)
{
- gSpecialVar_LastTalked = sTrainerMapObjectLocalId;
- gSelectedMapObject = GetFieldObjectIdByLocalIdAndMap(sTrainerMapObjectLocalId, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup);
+ gSpecialVar_LastTalked = sTrainerEventObjectLocalId;
+ gSelectedEventObject = GetEventObjectIdByLocalIdAndMap(sTrainerEventObjectLocalId, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup);
}
}
@@ -1026,10 +1026,10 @@ u8 *BattleSetup_ConfigureTrainerBattle(const u8 *data)
}
}
-void TrainerWantsBattle(u8 trainerMapObjId, u8 *trainerScript)
+void TrainerWantsBattle(u8 trainerEventObjId, u8 *trainerScript)
{
- gSelectedMapObject = trainerMapObjId;
- gSpecialVar_LastTalked = gMapObjects[trainerMapObjId].localId;
+ gSelectedEventObject = trainerEventObjId;
+ gSpecialVar_LastTalked = gEventObjects[trainerEventObjId].localId;
BattleSetup_ConfigureTrainerBattle(trainerScript + 1);
ScriptContext1_SetupScript(gUnknown_0819F80B);
ScriptContext2_Enable();
@@ -1043,9 +1043,9 @@ bool32 GetTrainerFlagFromScriptPointer(u8 *data)
void sub_8082524(void)
{
- struct MapObject *mapObject = &gMapObjects[gSelectedMapObject];
+ struct EventObject *eventObject = &gEventObjects[gSelectedEventObject];
- npc_set_running_behaviour_etc(mapObject, npc_running_behaviour_by_direction(mapObject->mapobj_unk_18));
+ SetTrainerMovementType(eventObject, GetTrainerFacingDirectionMovementType(eventObject->facingDirection));
}
u8 ScrSpecial_GetTrainerBattleMode(void)
@@ -1095,7 +1095,7 @@ void CB2_EndTrainerBattle(void)
{
if (gTrainerBattleOpponent == SECRET_BASE_OPPONENT)
{
- SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); // link battle?
+ SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music);
}
else if (IsPlayerDefeated(gBattleOutcome) == TRUE)
{
@@ -1112,7 +1112,7 @@ void CB2_EndTrainerEyeRematchBattle(void)
{
if (gTrainerBattleOpponent == SECRET_BASE_OPPONENT)
{
- SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); // link battle?
+ SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music);
}
else if (IsPlayerDefeated(gBattleOutcome) == TRUE)
{
@@ -1172,46 +1172,46 @@ void PlayTrainerEncounterMusic(void)
switch (sub_803FC58(gTrainerBattleOpponent))
{
case TRAINER_ENCOUNTER_MUSIC_MALE:
- music = BGM_BOYEYE;
+ music = MUS_BOYEYE;
break;
case TRAINER_ENCOUNTER_MUSIC_FEMALE:
- music = BGM_GIRLEYE;
+ music = MUS_GIRLEYE;
break;
case TRAINER_ENCOUNTER_MUSIC_GIRL:
- music = BGM_SYOUJOEYE;
+ music = MUS_SYOUJOEYE;
break;
case TRAINER_ENCOUNTER_MUSIC_INTENSE:
- music = BGM_HAGESHII;
+ music = MUS_HAGESHII;
break;
case TRAINER_ENCOUNTER_MUSIC_COOL:
- music = BGM_KAKKOII;
+ music = MUS_KAKKOII;
break;
case TRAINER_ENCOUNTER_MUSIC_AQUA:
- music = BGM_AQA_0;
+ music = MUS_AQA_0;
break;
case TRAINER_ENCOUNTER_MUSIC_MAGMA:
- music = BGM_MGM0;
+ music = MUS_MGM0;
break;
case TRAINER_ENCOUNTER_MUSIC_SWIMMER:
- music = BGM_SWIMEYE;
+ music = MUS_SWIMEYE;
break;
case TRAINER_ENCOUNTER_MUSIC_TWINS:
- music = BGM_HUTAGO;
+ music = MUS_HUTAGO;
break;
case TRAINER_ENCOUNTER_MUSIC_ELITE_FOUR:
- music = BGM_SITENNOU;
+ music = MUS_SITENNOU;
break;
case TRAINER_ENCOUNTER_MUSIC_HIKER:
- music = BGM_YAMA_EYE;
+ music = MUS_YAMA_EYE;
break;
case TRAINER_ENCOUNTER_MUSIC_INTERVIEWER:
- music = BGM_INTER_V;
+ music = MUS_INTER_V;
break;
case TRAINER_ENCOUNTER_MUSIC_RICH:
- music = BGM_TEST;
+ music = MUS_TEST;
break;
default:
- music = BGM_AYASII;
+ music = MUS_AYASII;
}
PlayNewMapMusic(music);
}
diff --git a/src/battle/battle_transition.c b/src/battle/battle_transition.c
index a94974b27..a0c94f713 100644
--- a/src/battle/battle_transition.c
+++ b/src/battle/battle_transition.c
@@ -10,11 +10,12 @@
#include "random.h"
#include "sprite.h"
#include "sound.h"
-#include "constants/songs.h"
#include "trainer.h"
#include "field_camera.h"
#include "ewram.h"
#include "scanline_effect.h"
+#include "constants/songs.h"
+#include "constants/field_effects.h"
void ScanlineEffect_Clear(void);
@@ -642,7 +643,7 @@ static bool8 Phase2_Transition_Blur_Func2(struct Task* task)
{
task->data[1] = 4;
if (++task->data[2] == 10)
- BeginNormalPaletteFade(-1, -1, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, -1, 0, 16, RGB(0, 0, 0));
REG_MOSAIC = (task->data[2] & 15) * 17;
if (task->data[2] > 14)
task->tState++;
@@ -671,7 +672,7 @@ static bool8 Phase2_Transition_Swirl_Func1(struct Task* task)
sub_811D658();
ScanlineEffect_Clear();
- BeginNormalPaletteFade(-1, 4, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 4, 0, 16, RGB(0, 0, 0));
sub_811D6E8(gScanlineEffectRegBuffers[1], TRANSITION_STRUCT.field_14, 0, 2, 0, 160);
SetVBlankCallback(VBlankCB_Phase2_Transition_Swirl);
@@ -732,7 +733,7 @@ static bool8 Phase2_Transition_Shuffle_Func1(struct Task* task)
sub_811D658();
ScanlineEffect_Clear();
- BeginNormalPaletteFade(-1, 4, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 4, 0, 16, RGB(0, 0, 0));
memset(gScanlineEffectRegBuffers[1], TRANSITION_STRUCT.field_16, 0x140);
SetVBlankCallback(VBlankCB_Phase2_Transition_Shuffle);
@@ -1313,7 +1314,7 @@ static bool8 Phase2_Transition_Ripple_Func2(struct Task* task)
if (++task->data[3] == 81)
{
task->data[4]++;
- BeginNormalPaletteFade(-1, -2, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, -2, 0, 16, RGB(0, 0, 0));
}
if (task->data[4] != 0 && !gPaletteFade.active)
@@ -1663,7 +1664,7 @@ static bool8 Phase2_Mugshot_Func7(struct Task* task)
static bool8 Phase2_Mugshot_Func8(struct Task* task)
{
TRANSITION_STRUCT.VBlank_DMA = 0;
- BlendPalettes(-1, 0x10, 0x7FFF);
+ BlendPalettes(0xFFFFFFFF, 16, RGB(31, 31, 31));
TRANSITION_STRUCT.BLDCNT = 0xFF;
task->data[3] = 0;
@@ -1992,7 +1993,7 @@ static bool8 Phase2_Transition_WhiteFade_Func3(struct Task* task)
TRANSITION_STRUCT.VBlank_DMA = 0;
if (TRANSITION_STRUCT.field_20 > 7)
{
- BlendPalettes(-1, 0x10, 0x7FFF);
+ BlendPalettes(0xFFFFFFFF, 16, RGB(31, 31, 31));
task->tState++;
}
return FALSE;
@@ -2301,7 +2302,7 @@ static bool8 Phase1_TransitionAll_Func1(struct Task* task)
task->data[7] += task->data[4];
if (task->data[7] > 16)
task->data[7] = 16;
- BlendPalettes(-1, task->data[7], 0x2D6B);
+ BlendPalettes(0xFFFFFFFF, task->data[7], RGB(11, 11, 11));
}
if (task->data[7] > 15)
{
@@ -2319,7 +2320,7 @@ static bool8 Phase1_TransitionAll_Func2(struct Task* task)
task->data[7] -= task->data[5];
if (task->data[7] < 0)
task->data[7] = 0;
- BlendPalettes(-1, task->data[7], 0x2D6B);
+ BlendPalettes(0xFFFFFFFF, task->data[7], RGB(11, 11, 11));
}
if (task->data[7] == 0)
{
@@ -2378,7 +2379,7 @@ static void sub_811D6A8(u16** a0, u16** a1)
static void sub_811D6D4(void)
{
- BlendPalettes(-1, 0x10, 0);
+ BlendPalettes(0xFFFFFFFF, 16, RGB(0, 0, 0));
}
static void sub_811D6E8(s16* array, s16 sinAdd, s16 index, s16 indexIncrementer, s16 amplitude, s16 arrSize)
diff --git a/src/battle/battle_util.c b/src/battle/battle_util.c
index 194a002d3..7cb39acb7 100644
--- a/src/battle/battle_util.c
+++ b/src/battle/battle_util.c
@@ -25,7 +25,7 @@
extern u8 gUnknown_02023A14_50;
extern const u8* gBattlescriptCurrInstr;
-extern u8 gActiveBank;
+extern u8 gActiveBattler;
extern u8 gBattleBufferB[4][0x200];
extern u8* gUnknown_02024C1C[4]; //battlescript location when you try to choose a move you're not allowed to
extern u16 gLastUsedMove[4];
@@ -36,7 +36,7 @@ extern u16 gLastUsedItem;
extern u16 gCurrentMove;
extern const u32 gBitTable[];
extern u16 gBattleTypeFlags;
-extern u8 gNoOfAllBanks;
+extern u8 gBattlersCount;
extern u32 gStatuses3[4];
extern u8 gBankAttacker;
extern u8 gBankTarget;
@@ -44,17 +44,17 @@ extern u8 gBanksByTurnOrder[4];
extern u16 gSideAffecting[2];
extern u16 gBattleWeather;
extern void (*gBattleMainFunc)(void);
-extern u8 gAbsentBankFlags;
+extern u8 gAbsentBattlerFlags;
extern u8 gBattleCommunication[];
extern u32 gHitMarker;
extern u8 gEffectBank;
extern u8 gBank1;
extern s32 gBattleMoveDamage;
-extern u16 gBattlePartyID[4];
+extern u16 gBattlerPartyIndexes[4];
extern u16 gChosenMovesByBanks[4];
extern s32 gTakenDmg[4];
extern u8 gTakenDmgBanks[4];
-extern u8 gBattleMoveFlags;
+extern u8 gMoveResultFlags;
extern u8 gLastUsedAbility;
extern u8 gBattleTextBuff2[];
extern u8 gCurrentActionFuncId;
@@ -77,9 +77,9 @@ extern const u8 gStatusConditionString_LoveJpn[];
extern const BattleCmdFunc gBattleScriptingCommandsTable[];
u8 IsImprisoned(u8 bank, u16 move);
-u8 GetBankByIdentity(u8 ID);
-u8 GetBankIdentity(u8 bank);
-u8 GetBankSide(u8 bank);
+u8 GetBattlerAtPosition(u8 ID);
+u8 GetBattlerPosition(u8 bank);
+u8 GetBattlerSide(u8 bank);
void SetMoveEffect(bool8 primary, u8 certainArg);
bool8 UproarWakeUpCheck(u8 bank);
bool8 sub_8018018(u8 bank, u8, u8);
@@ -259,9 +259,9 @@ void PressurePPLose(u8 bankDef, u8 bankAtk, u16 move)
if (!(gBattleMons[bankAtk].status2 & STATUS2_TRANSFORMED)
&& !(gDisableStructs[bankAtk].unk18_b & gBitTable[i]))
{
- gActiveBank = bankAtk;
- EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + i, 0, 1, &gBattleMons[gActiveBank].pp[i]);
- MarkBufferBankForExecution(gActiveBank);
+ gActiveBattler = bankAtk;
+ EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + i, 0, 1, &gBattleMons[gActiveBattler].pp[i]);
+ MarkBufferBankForExecution(gActiveBattler);
}
}
@@ -269,11 +269,11 @@ void PressurePPLoseOnUsingImprision(u8 bankAtk)
{
s32 i, j;
s32 imprisionPos = 4;
- u8 atkSide = GetBankSide(bankAtk);
+ u8 atkSide = GetBattlerSide(bankAtk);
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
- if (atkSide != GetBankSide(i) && gBattleMons[i].ability == ABILITY_PRESSURE)
+ if (atkSide != GetBattlerSide(i) && gBattleMons[i].ability == ABILITY_PRESSURE)
{
for (j = 0; j < 4; j++)
{
@@ -293,9 +293,9 @@ void PressurePPLoseOnUsingImprision(u8 bankAtk)
&& !(gBattleMons[bankAtk].status2 & STATUS2_TRANSFORMED)
&& !(gDisableStructs[bankAtk].unk18_b & gBitTable[imprisionPos]))
{
- gActiveBank = bankAtk;
- EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + imprisionPos, 0, 1, &gBattleMons[gActiveBank].pp[imprisionPos]);
- MarkBufferBankForExecution(gActiveBank);
+ gActiveBattler = bankAtk;
+ EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + imprisionPos, 0, 1, &gBattleMons[gActiveBattler].pp[imprisionPos]);
+ MarkBufferBankForExecution(gActiveBattler);
}
}
@@ -304,7 +304,7 @@ void PressurePPLoseOnUsingPerishSong(u8 bankAtk)
s32 i, j;
s32 perishSongPos = 4;
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
if (gBattleMons[i].ability == ABILITY_PRESSURE && i != bankAtk)
{
@@ -326,9 +326,9 @@ void PressurePPLoseOnUsingPerishSong(u8 bankAtk)
&& !(gBattleMons[bankAtk].status2 & STATUS2_TRANSFORMED)
&& !(gDisableStructs[bankAtk].unk18_b & gBitTable[perishSongPos]))
{
- gActiveBank = bankAtk;
- EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + perishSongPos, 0, 1, &gBattleMons[gActiveBank].pp[perishSongPos]);
- MarkBufferBankForExecution(gActiveBank);
+ gActiveBattler = bankAtk;
+ EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + perishSongPos, 0, 1, &gBattleMons[gActiveBattler].pp[perishSongPos]);
+ MarkBufferBankForExecution(gActiveBattler);
}
}
@@ -339,12 +339,12 @@ void MarkAllBufferBanksForExecution(void) // unused
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
gBattleExecBuffer |= gBitTable[i] << 0x1C;
}
else
{
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
gBattleExecBuffer |= gBitTable[i];
}
}
@@ -402,9 +402,9 @@ bool8 WasUnableToUseMove(u8 bank)
void PrepareStringBattle(u16 stringId, u8 bank)
{
- gActiveBank = bank;
+ gActiveBattler = bank;
EmitPrintString(0, stringId);
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
}
void ResetSentPokesToOpponentValue(void)
@@ -415,11 +415,11 @@ void ResetSentPokesToOpponentValue(void)
gSentPokesToOpponent[0] = 0;
gSentPokesToOpponent[1] = 0;
- for (i = 0; i < gNoOfAllBanks; i += 2)
- bits |= gBitTable[gBattlePartyID[i]];
+ for (i = 0; i < gBattlersCount; i += 2)
+ bits |= gBitTable[gBattlerPartyIndexes[i]];
- for (i = 1; i < gNoOfAllBanks; i += 2)
- gSentPokesToOpponent[(i & BIT_MON) >> 1] = bits;
+ for (i = 1; i < gBattlersCount; i += 2)
+ gSentPokesToOpponent[(i & BIT_FLANK) >> 1] = bits;
}
void sub_8015740(u8 bank)
@@ -427,15 +427,15 @@ void sub_8015740(u8 bank)
s32 i = 0;
u32 bits = 0;
- if (GetBankSide(bank) == SIDE_OPPONENT)
+ if (GetBattlerSide(bank) == B_SIDE_OPPONENT)
{
- u8 id = ((bank & BIT_MON) >> 1);
+ u8 id = ((bank & BIT_FLANK) >> 1);
gSentPokesToOpponent[id] = 0;
- for (i = 0; i < gNoOfAllBanks; i += 2)
+ for (i = 0; i < gBattlersCount; i += 2)
{
- if (!(gAbsentBankFlags & gBitTable[i]))
- bits |= gBitTable[gBattlePartyID[i]];
+ if (!(gAbsentBattlerFlags & gBitTable[i]))
+ bits |= gBitTable[gBattlerPartyIndexes[i]];
}
gSentPokesToOpponent[id] = bits;
@@ -444,15 +444,15 @@ void sub_8015740(u8 bank)
void sub_80157C4(u8 bank)
{
- if (GetBankSide(bank) == SIDE_OPPONENT)
+ if (GetBattlerSide(bank) == B_SIDE_OPPONENT)
{
sub_8015740(bank);
}
else
{
s32 i;
- for (i = 1; i < gNoOfAllBanks; i++)
- gSentPokesToOpponent[(i & BIT_MON) >> 1] |= gBitTable[gBattlePartyID[bank]];
+ for (i = 1; i < gBattlersCount; i++)
+ gSentPokesToOpponent[(i & BIT_FLANK) >> 1] |= gBitTable[gBattlerPartyIndexes[bank]];
}
}
@@ -474,49 +474,49 @@ void BattleScriptPop(void)
u8 TrySetCantSelectMoveBattleScript(void) //msg can't select a move
{
u8 limitations = 0;
- u16 move = gBattleMons[gActiveBank].moves[gBattleBufferB[gActiveBank][2]];
+ u16 move = gBattleMons[gActiveBattler].moves[gBattleBufferB[gActiveBattler][2]];
u8 holdEffect;
- u16* choicedMove = CHOICED_MOVE(gActiveBank);
- if (gDisableStructs[gActiveBank].disabledMove == move && move)
+ u16* choicedMove = CHOICED_MOVE(gActiveBattler);
+ if (gDisableStructs[gActiveBattler].disabledMove == move && move)
{
- gBattleStruct->scriptingActive = gActiveBank;
+ gBattleStruct->scriptingActive = gActiveBattler;
gCurrentMove = move;
- gUnknown_02024C1C[gActiveBank] = BattleScript_MoveSelectionDisabledMove;
+ gUnknown_02024C1C[gActiveBattler] = BattleScript_MoveSelectionDisabledMove;
limitations++;
}
- if (move == gLastUsedMove[gActiveBank] && move != MOVE_STRUGGLE && gBattleMons[gActiveBank].status2 & STATUS2_TORMENT)
+ if (move == gLastUsedMove[gActiveBattler] && move != MOVE_STRUGGLE && gBattleMons[gActiveBattler].status2 & STATUS2_TORMENT)
{
- CancelMultiTurnMoves(gActiveBank);
- gUnknown_02024C1C[gActiveBank] = BattleScript_MoveSelectionTormented;
+ CancelMultiTurnMoves(gActiveBattler);
+ gUnknown_02024C1C[gActiveBattler] = BattleScript_MoveSelectionTormented;
limitations++;
}
- if (gDisableStructs[gActiveBank].tauntTimer1 && gBattleMoves[move].power == 0)
+ if (gDisableStructs[gActiveBattler].tauntTimer1 && gBattleMoves[move].power == 0)
{
gCurrentMove = move;
- gUnknown_02024C1C[gActiveBank] = BattleScript_MoveSelectionTaunted;
+ gUnknown_02024C1C[gActiveBattler] = BattleScript_MoveSelectionTaunted;
limitations++;
}
- if (IsImprisoned(gActiveBank, move))
+ if (IsImprisoned(gActiveBattler, move))
{
gCurrentMove = move;
- gUnknown_02024C1C[gActiveBank] = BattleScript_MoveSelectionImprisoned;
+ gUnknown_02024C1C[gActiveBattler] = BattleScript_MoveSelectionImprisoned;
limitations++;
}
- if (gBattleMons[gActiveBank].item == ITEM_ENIGMA_BERRY)
- holdEffect = gEnigmaBerries[gActiveBank].holdEffect;
+ if (gBattleMons[gActiveBattler].item == ITEM_ENIGMA_BERRY)
+ holdEffect = gEnigmaBerries[gActiveBattler].holdEffect;
else
- holdEffect = ItemId_GetHoldEffect(gBattleMons[gActiveBank].item);
- gStringBank = gActiveBank;
+ holdEffect = ItemId_GetHoldEffect(gBattleMons[gActiveBattler].item);
+ gStringBank = gActiveBattler;
if (holdEffect == HOLD_EFFECT_CHOICE_BAND && *choicedMove != 0 && *choicedMove != 0xFFFF && *choicedMove != move)
{
gCurrentMove = *choicedMove;
- gLastUsedItem = gBattleMons[gActiveBank].item;
- gUnknown_02024C1C[gActiveBank] = BattleScript_MoveSelectionChoiceBanded;
+ gLastUsedItem = gBattleMons[gActiveBattler].item;
+ gUnknown_02024C1C[gActiveBattler] = BattleScript_MoveSelectionChoiceBanded;
limitations++;
}
- if (gBattleMons[gActiveBank].pp[gBattleBufferB[gActiveBank][2]] == 0)
+ if (gBattleMons[gActiveBattler].pp[gBattleBufferB[gActiveBattler][2]] == 0)
{
- gUnknown_02024C1C[gActiveBank] = BattleScript_MoveSelectionNoPP;
+ gUnknown_02024C1C[gActiveBattler] = BattleScript_MoveSelectionNoPP;
limitations++;
}
return limitations;
@@ -564,29 +564,29 @@ u8 CheckMoveLimitations(u8 bank, u8 unusableMoves, u8 check)
bool8 AreAllMovesUnusable(void)
{
u8 unusable;
- unusable = CheckMoveLimitations(gActiveBank, 0, 0xFF);
+ unusable = CheckMoveLimitations(gActiveBattler, 0, 0xFF);
if (unusable == 0xF) //all moves are unusable
{
- gProtectStructs[gActiveBank].onlyStruggle = 1;
- gUnknown_02024C1C[gActiveBank] = BattleScript_NoMovesLeft;
+ gProtectStructs[gActiveBattler].onlyStruggle = 1;
+ gUnknown_02024C1C[gActiveBattler] = BattleScript_NoMovesLeft;
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
- gBattleBufferB[gActiveBank][3] = GetBankByIdentity((GetBankIdentity(gActiveBank) ^ 1) | (Random() & 2));
+ gBattleBufferB[gActiveBattler][3] = GetBattlerAtPosition((GetBattlerPosition(gActiveBattler) ^ 1) | (Random() & 2));
else
- gBattleBufferB[gActiveBank][3] = GetBankByIdentity(GetBankIdentity(gActiveBank) ^ 1);
+ gBattleBufferB[gActiveBattler][3] = GetBattlerAtPosition(GetBattlerPosition(gActiveBattler) ^ 1);
}
else
- gProtectStructs[gActiveBank].onlyStruggle = 0;
+ gProtectStructs[gActiveBattler].onlyStruggle = 0;
return (unusable == 0xF);
}
u8 IsImprisoned(u8 bank, u16 move)
{
u8 imprisionedMoves = 0;
- u8 bankSide = GetBankSide(bank);
+ u8 bankSide = GetBattlerSide(bank);
s32 i;
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
- if (bankSide != GetBankSide(i) && gStatuses3[i] & STATUS3_IMPRISIONED)
+ if (bankSide != GetBattlerSide(i) && gStatuses3[i] & STATUS3_IMPRISIONED)
{
s32 j;
for (j = 0; j < 4; j++)
@@ -606,10 +606,10 @@ u8 UpdateTurnCounters(void)
u8 effect = 0;
s32 i;
- for (gBankAttacker = 0; gBankAttacker < gNoOfAllBanks && gAbsentBankFlags & gBitTable[gBankAttacker]; gBankAttacker++)
+ for (gBankAttacker = 0; gBankAttacker < gBattlersCount && gAbsentBattlerFlags & gBitTable[gBankAttacker]; gBankAttacker++)
{
}
- for (gBankTarget = 0; gBankTarget < gNoOfAllBanks && gAbsentBankFlags & gBitTable[gBankTarget]; gBankTarget++)
+ for (gBankTarget = 0; gBankTarget < gBattlersCount && gAbsentBattlerFlags & gBitTable[gBankTarget]; gBankTarget++)
{
}
@@ -620,14 +620,14 @@ u8 UpdateTurnCounters(void)
switch (gBattleStruct->turncountersTracker)
{
case 0:
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
gBanksByTurnOrder[i] = i;
}
- for (i = 0; i < gNoOfAllBanks - 1; i++)
+ for (i = 0; i < gBattlersCount - 1; i++)
{
s32 j;
- for (j = i + 1; j < gNoOfAllBanks; j++)
+ for (j = i + 1; j < gBattlersCount; j++)
{
if (GetWhoStrikesFirst(gBanksByTurnOrder[i], gBanksByTurnOrder[j], 0))
SwapTurnOrder(i, j);
@@ -638,7 +638,7 @@ u8 UpdateTurnCounters(void)
case 1:
while (gBattleStruct->turnSideTracker < 2)
{
- gActiveBank = gBankAttacker = sideBank = gBattleStruct->turnSideTracker;
+ gActiveBattler = gBankAttacker = sideBank = gBattleStruct->turnSideTracker;
if (gSideAffecting[sideBank] & SIDE_STATUS_REFLECT)
{
@@ -668,7 +668,7 @@ u8 UpdateTurnCounters(void)
case 2:
while (gBattleStruct->turnSideTracker < 2)
{
- gActiveBank = gBankAttacker = sideBank = gBattleStruct->turnSideTracker;
+ gActiveBattler = gBankAttacker = sideBank = gBattleStruct->turnSideTracker;
if (gSideAffecting[sideBank] & SIDE_STATUS_LIGHTSCREEN)
{
if (--gSideTimers[sideBank].lightscreenTimer == 0)
@@ -697,7 +697,7 @@ u8 UpdateTurnCounters(void)
case 3:
while (gBattleStruct->turnSideTracker < 2)
{
- gActiveBank = gBankAttacker = sideBank = gBattleStruct->turnSideTracker;
+ gActiveBattler = gBankAttacker = sideBank = gBattleStruct->turnSideTracker;
if (gSideTimers[sideBank].mistTimer && --gSideTimers[sideBank].mistTimer == 0)
{
gSideAffecting[sideBank] &= ~SIDE_STATUS_MIST;
@@ -723,7 +723,7 @@ u8 UpdateTurnCounters(void)
case 4:
while (gBattleStruct->turnSideTracker < 2)
{
- gActiveBank = gBankAttacker = sideBank = gBattleStruct->turnSideTracker;
+ gActiveBattler = gBankAttacker = sideBank = gBattleStruct->turnSideTracker;
if (gSideAffecting[sideBank] & SIDE_STATUS_SAFEGUARD)
{
if (--gSideTimers[sideBank].safeguardTimer == 0)
@@ -744,12 +744,12 @@ u8 UpdateTurnCounters(void)
}
break;
case 5:
- while (gBattleStruct->turnSideTracker < gNoOfAllBanks)
+ while (gBattleStruct->turnSideTracker < gBattlersCount)
{
- gActiveBank = gBanksByTurnOrder[gBattleStruct->turnSideTracker];
- if (gWishFutureKnock.wishCounter[gActiveBank] && --gWishFutureKnock.wishCounter[gActiveBank] == 0 && gBattleMons[gActiveBank].hp)
+ gActiveBattler = gBanksByTurnOrder[gBattleStruct->turnSideTracker];
+ if (gWishFutureKnock.wishCounter[gActiveBattler] && --gWishFutureKnock.wishCounter[gActiveBattler] == 0 && gBattleMons[gActiveBattler].hp)
{
- gBankTarget = gActiveBank;
+ gBankTarget = gActiveBattler;
BattleScriptExecute(BattleScript_WishComesTrue);
effect++;
}
@@ -854,10 +854,10 @@ u8 TurnBasedEffects(void)
u8 effect = 0;
gHitMarker |= (HITMARKER_GRUDGE | HITMARKER_x20);
- while (gBattleStruct->turnEffectsBank < gNoOfAllBanks && gBattleStruct->turnEffectsTracker <= TURNBASED_MAX_CASE)
+ while (gBattleStruct->turnEffectsBank < gBattlersCount && gBattleStruct->turnEffectsTracker <= TURNBASED_MAX_CASE)
{
- gActiveBank = gBankAttacker = gBanksByTurnOrder[gBattleStruct->turnEffectsBank];
- if (gAbsentBankFlags & gBitTable[gActiveBank])
+ gActiveBattler = gBankAttacker = gBanksByTurnOrder[gBattleStruct->turnEffectsBank];
+ if (gAbsentBattlerFlags & gBitTable[gActiveBattler])
{
gBattleStruct->turnEffectsBank++;
}
@@ -866,11 +866,11 @@ u8 TurnBasedEffects(void)
switch (gBattleStruct->turnEffectsTracker)
{
case 0: // ingrain
- if ((gStatuses3[gActiveBank] & STATUS3_ROOTED)
- && gBattleMons[gActiveBank].hp != gBattleMons[gActiveBank].maxHP
- && gBattleMons[gActiveBank].hp != 0)
+ if ((gStatuses3[gActiveBattler] & STATUS3_ROOTED)
+ && gBattleMons[gActiveBattler].hp != gBattleMons[gActiveBattler].maxHP
+ && gBattleMons[gActiveBattler].hp != 0)
{
- gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 16;
+ gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 16;
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
gBattleMoveDamage *= -1;
@@ -880,25 +880,25 @@ u8 TurnBasedEffects(void)
gBattleStruct->turnEffectsTracker++;
break;
case 1: // end turn abilities
- if (AbilityBattleEffects(ABILITYEFFECT_ENDTURN, gActiveBank, 0, 0, 0))
+ if (AbilityBattleEffects(ABILITYEFFECT_ENDTURN, gActiveBattler, 0, 0, 0))
effect++;
gBattleStruct->turnEffectsTracker++;
break;
case 2: // item effects
- if (ItemBattleEffects(1, gActiveBank, 0))
+ if (ItemBattleEffects(1, gActiveBattler, 0))
effect++;
gBattleStruct->turnEffectsTracker++;
break;
case 18: // item effects again
- if (ItemBattleEffects(1, gActiveBank, 1))
+ if (ItemBattleEffects(1, gActiveBattler, 1))
effect++;
gBattleStruct->turnEffectsTracker++;
break;
case 3: // leech seed
- if (gStatuses3[gActiveBank] & STATUS3_LEECHSEED && gBattleMons[gStatuses3[gActiveBank] & STATUS3_LEECHSEED_BANK].hp != 0 && gBattleMons[gActiveBank].hp != 0)
+ if (gStatuses3[gActiveBattler] & STATUS3_LEECHSEED && gBattleMons[gStatuses3[gActiveBattler] & STATUS3_LEECHSEED_BANK].hp != 0 && gBattleMons[gActiveBattler].hp != 0)
{
- gBankTarget = gStatuses3[gActiveBank] & STATUS3_LEECHSEED_BANK; //funny how the 'target' is actually the bank that receives HP
- gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 8;
+ gBankTarget = gStatuses3[gActiveBattler] & STATUS3_LEECHSEED_BANK; //funny how the 'target' is actually the bank that receives HP
+ gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 8;
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
gBattleStruct->animArg1 = gBankTarget;
@@ -909,9 +909,9 @@ u8 TurnBasedEffects(void)
gBattleStruct->turnEffectsTracker++;
break;
case 4: // poison
- if ((gBattleMons[gActiveBank].status1 & STATUS_POISON) && gBattleMons[gActiveBank].hp != 0)
+ if ((gBattleMons[gActiveBattler].status1 & STATUS_POISON) && gBattleMons[gActiveBattler].hp != 0)
{
- gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 8;
+ gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 8;
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
BattleScriptExecute(BattleScript_PoisonTurnDmg);
@@ -920,23 +920,23 @@ u8 TurnBasedEffects(void)
gBattleStruct->turnEffectsTracker++;
break;
case 5: // toxic poison
- if ((gBattleMons[gActiveBank].status1 & STATUS_TOXIC_POISON) && gBattleMons[gActiveBank].hp != 0)
+ if ((gBattleMons[gActiveBattler].status1 & STATUS_TOXIC_POISON) && gBattleMons[gActiveBattler].hp != 0)
{
- gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 16;
+ gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 16;
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
- if ((gBattleMons[gActiveBank].status1 & 0xF00) != 0xF00) //not 16 turns
- gBattleMons[gActiveBank].status1 += 0x100;
- gBattleMoveDamage *= (gBattleMons[gActiveBank].status1 & 0xF00) >> 8;
+ if ((gBattleMons[gActiveBattler].status1 & 0xF00) != 0xF00) //not 16 turns
+ gBattleMons[gActiveBattler].status1 += 0x100;
+ gBattleMoveDamage *= (gBattleMons[gActiveBattler].status1 & 0xF00) >> 8;
BattleScriptExecute(BattleScript_PoisonTurnDmg);
effect++;
}
gBattleStruct->turnEffectsTracker++;
break;
case 6: // burn
- if ((gBattleMons[gActiveBank].status1 & STATUS_BURN) && gBattleMons[gActiveBank].hp != 0)
+ if ((gBattleMons[gActiveBattler].status1 & STATUS_BURN) && gBattleMons[gActiveBattler].hp != 0)
{
- gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 8;
+ gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 8;
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
BattleScriptExecute(BattleScript_BurnTurnDmg);
@@ -945,10 +945,10 @@ u8 TurnBasedEffects(void)
gBattleStruct->turnEffectsTracker++;
break;
case 7: // spooky nightmares
- if ((gBattleMons[gActiveBank].status2 & STATUS2_NIGHTMARE) && gBattleMons[gActiveBank].hp != 0)
+ if ((gBattleMons[gActiveBattler].status2 & STATUS2_NIGHTMARE) && gBattleMons[gActiveBattler].hp != 0)
{
// missing sleep check
- gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 4;
+ gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 4;
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
BattleScriptExecute(BattleScript_NightmareTurnDmg);
@@ -957,9 +957,9 @@ u8 TurnBasedEffects(void)
gBattleStruct->turnEffectsTracker++;
break;
case 8: // curse
- if ((gBattleMons[gActiveBank].status2 & STATUS2_CURSED) && gBattleMons[gActiveBank].hp != 0)
+ if ((gBattleMons[gActiveBattler].status2 & STATUS2_CURSED) && gBattleMons[gActiveBattler].hp != 0)
{
- gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 4;
+ gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 4;
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
BattleScriptExecute(BattleScript_CurseTurnDmg);
@@ -968,20 +968,20 @@ u8 TurnBasedEffects(void)
gBattleStruct->turnEffectsTracker++;
break;
case 9: // wrap
- if ((gBattleMons[gActiveBank].status2 & STATUS2_WRAPPED) && gBattleMons[gActiveBank].hp != 0)
+ if ((gBattleMons[gActiveBattler].status2 & STATUS2_WRAPPED) && gBattleMons[gActiveBattler].hp != 0)
{
- gBattleMons[gActiveBank].status2 -= 0x2000;
- if (gBattleMons[gActiveBank].status2 & STATUS2_WRAPPED) // damaged by wrap
+ gBattleMons[gActiveBattler].status2 -= 0x2000;
+ if (gBattleMons[gActiveBattler].status2 & STATUS2_WRAPPED) // damaged by wrap
{
- gBattleStruct->animArg1 = ewram16004arr(0, gActiveBank);
- gBattleStruct->animArg2 = ewram16004arr(1, gActiveBank);
+ gBattleStruct->animArg1 = ewram16004arr(0, gActiveBattler);
+ gBattleStruct->animArg2 = ewram16004arr(1, gActiveBattler);
gBattleTextBuff1[0] = 0xFD;
gBattleTextBuff1[1] = 2;
- gBattleTextBuff1[2] = ewram16004arr(0, gActiveBank);
- gBattleTextBuff1[3] = ewram16004arr(1, gActiveBank);
+ gBattleTextBuff1[2] = ewram16004arr(0, gActiveBattler);
+ gBattleTextBuff1[3] = ewram16004arr(1, gActiveBattler);
gBattleTextBuff1[4] = EOS;
gBattlescriptCurrInstr = BattleScript_WrapTurnDmg;
- gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 16;
+ gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 16;
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
}
@@ -989,8 +989,8 @@ u8 TurnBasedEffects(void)
{
gBattleTextBuff1[0] = 0xFD;
gBattleTextBuff1[1] = 2;
- gBattleTextBuff1[2] = ewram16004arr(0, gActiveBank);
- gBattleTextBuff1[3] = ewram16004arr(1, gActiveBank);
+ gBattleTextBuff1[2] = ewram16004arr(0, gActiveBattler);
+ gBattleTextBuff1[3] = ewram16004arr(1, gActiveBattler);
gBattleTextBuff1[4] = EOS;
gBattlescriptCurrInstr = BattleScript_WrapEnds;
}
@@ -1000,9 +1000,9 @@ u8 TurnBasedEffects(void)
gBattleStruct->turnEffectsTracker++;
break;
case 10: // uproar
- if (gBattleMons[gActiveBank].status2 & STATUS2_UPROAR)
+ if (gBattleMons[gActiveBattler].status2 & STATUS2_UPROAR)
{
- for (gBankAttacker = 0; gBankAttacker < gNoOfAllBanks; gBankAttacker++)
+ for (gBankAttacker = 0; gBankAttacker < gBattlersCount; gBankAttacker++)
{
if ((gBattleMons[gBankAttacker].status1 & STATUS_SLEEP)
&& gBattleMons[gBankAttacker].ability != ABILITY_SOUNDPROOF)
@@ -1011,35 +1011,35 @@ u8 TurnBasedEffects(void)
gBattleMons[gBankAttacker].status2 &= ~(STATUS2_NIGHTMARE);
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
BattleScriptExecute(BattleScript_MonWokeUpInUproar);
- gActiveBank = gBankAttacker;
- EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1);
- MarkBufferBankForExecution(gActiveBank);
+ gActiveBattler = gBankAttacker;
+ EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1);
+ MarkBufferBankForExecution(gActiveBattler);
break;
}
}
- if (gBankAttacker != gNoOfAllBanks)
+ if (gBankAttacker != gBattlersCount)
{
effect = 2; // a pokemon was awaken
break;
}
else
{
- gBankAttacker = gActiveBank;
- gBattleMons[gActiveBank].status2 -= 0x10; // uproar timer goes down
- if (WasUnableToUseMove(gActiveBank))
+ gBankAttacker = gActiveBattler;
+ gBattleMons[gActiveBattler].status2 -= 0x10; // uproar timer goes down
+ if (WasUnableToUseMove(gActiveBattler))
{
- CancelMultiTurnMoves(gActiveBank);
+ CancelMultiTurnMoves(gActiveBattler);
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
}
- else if (gBattleMons[gActiveBank].status2 & STATUS2_UPROAR)
+ else if (gBattleMons[gActiveBattler].status2 & STATUS2_UPROAR)
{
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
- gBattleMons[gActiveBank].status2 |= STATUS2_MULTIPLETURNS;
+ gBattleMons[gActiveBattler].status2 |= STATUS2_MULTIPLETURNS;
}
else
{
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
- CancelMultiTurnMoves(gActiveBank);
+ CancelMultiTurnMoves(gActiveBattler);
}
BattleScriptExecute(BattleScript_PrintUproarOverTurns);
effect = 1;
@@ -1049,20 +1049,20 @@ u8 TurnBasedEffects(void)
gBattleStruct->turnEffectsTracker++;
break;
case 11: // thrash
- if (gBattleMons[gActiveBank].status2 & STATUS2_LOCK_CONFUSE)
+ if (gBattleMons[gActiveBattler].status2 & STATUS2_LOCK_CONFUSE)
{
- gBattleMons[gActiveBank].status2 -= 0x400;
- if (WasUnableToUseMove(gActiveBank))
- CancelMultiTurnMoves(gActiveBank);
- else if (!(gBattleMons[gActiveBank].status2 & STATUS2_LOCK_CONFUSE)
- && (gBattleMons[gActiveBank].status2 & STATUS2_MULTIPLETURNS))
+ gBattleMons[gActiveBattler].status2 -= 0x400;
+ if (WasUnableToUseMove(gActiveBattler))
+ CancelMultiTurnMoves(gActiveBattler);
+ else if (!(gBattleMons[gActiveBattler].status2 & STATUS2_LOCK_CONFUSE)
+ && (gBattleMons[gActiveBattler].status2 & STATUS2_MULTIPLETURNS))
{
- gBattleMons[gActiveBank].status2 &= ~(STATUS2_MULTIPLETURNS);
- if (!(gBattleMons[gActiveBank].status2 & STATUS2_CONFUSION))
+ gBattleMons[gActiveBattler].status2 &= ~(STATUS2_MULTIPLETURNS);
+ if (!(gBattleMons[gActiveBattler].status2 & STATUS2_CONFUSION))
{
gBattleCommunication[MOVE_EFFECT_BYTE] = 0x47;
SetMoveEffect(1, 0);
- if (gBattleMons[gActiveBank].status2 & STATUS2_CONFUSION)
+ if (gBattleMons[gActiveBattler].status2 & STATUS2_CONFUSION)
BattleScriptExecute(BattleScript_ThrashConfuses);
effect++;
}
@@ -1071,22 +1071,22 @@ u8 TurnBasedEffects(void)
gBattleStruct->turnEffectsTracker++;
break;
case 12: // disable
- if (gDisableStructs[gActiveBank].disableTimer1 != 0)
+ if (gDisableStructs[gActiveBattler].disableTimer1 != 0)
{
int i;
for (i = 0; i < 4; i++)
{
- if (gDisableStructs[gActiveBank].disabledMove == gBattleMons[gActiveBank].moves[i])
+ if (gDisableStructs[gActiveBattler].disabledMove == gBattleMons[gActiveBattler].moves[i])
break;
}
if (i == 4) // pokemon does not have the disabled move anymore
{
- gDisableStructs[gActiveBank].disabledMove = 0;
- gDisableStructs[gActiveBank].disableTimer1 = 0;
+ gDisableStructs[gActiveBattler].disabledMove = 0;
+ gDisableStructs[gActiveBattler].disableTimer1 = 0;
}
- else if (--gDisableStructs[gActiveBank].disableTimer1 == 0) // disable ends
+ else if (--gDisableStructs[gActiveBattler].disableTimer1 == 0) // disable ends
{
- gDisableStructs[gActiveBank].disabledMove = 0;
+ gDisableStructs[gActiveBattler].disabledMove = 0;
BattleScriptExecute(BattleScript_DisabledNoMore);
effect++;
}
@@ -1094,18 +1094,18 @@ u8 TurnBasedEffects(void)
gBattleStruct->turnEffectsTracker++;
break;
case 13: // encore
- if (gDisableStructs[gActiveBank].encoreTimer1 != 0)
+ if (gDisableStructs[gActiveBattler].encoreTimer1 != 0)
{
- if (gBattleMons[gActiveBank].moves[gDisableStructs[gActiveBank].encoredMovePos] != gDisableStructs[gActiveBank].encoredMove) // pokemon does not have the encored move anymore
+ if (gBattleMons[gActiveBattler].moves[gDisableStructs[gActiveBattler].encoredMovePos] != gDisableStructs[gActiveBattler].encoredMove) // pokemon does not have the encored move anymore
{
- gDisableStructs[gActiveBank].encoredMove = 0;
- gDisableStructs[gActiveBank].encoreTimer1 = 0;
+ gDisableStructs[gActiveBattler].encoredMove = 0;
+ gDisableStructs[gActiveBattler].encoreTimer1 = 0;
}
- else if (--gDisableStructs[gActiveBank].encoreTimer1 == 0
- || gBattleMons[gActiveBank].pp[gDisableStructs[gActiveBank].encoredMovePos] == 0)
+ else if (--gDisableStructs[gActiveBattler].encoreTimer1 == 0
+ || gBattleMons[gActiveBattler].pp[gDisableStructs[gActiveBattler].encoredMovePos] == 0)
{
- gDisableStructs[gActiveBank].encoredMove = 0;
- gDisableStructs[gActiveBank].encoreTimer1 = 0;
+ gDisableStructs[gActiveBattler].encoredMove = 0;
+ gDisableStructs[gActiveBattler].encoreTimer1 = 0;
BattleScriptExecute(BattleScript_EncoredNoMore);
effect++;
}
@@ -1113,33 +1113,33 @@ u8 TurnBasedEffects(void)
gBattleStruct->turnEffectsTracker++;
break;
case 14: // lock-on decrement
- if (gStatuses3[gActiveBank] & STATUS3_ALWAYS_HITS)
- gStatuses3[gActiveBank] -= 0x8;
+ if (gStatuses3[gActiveBattler] & STATUS3_ALWAYS_HITS)
+ gStatuses3[gActiveBattler] -= 0x8;
gBattleStruct->turnEffectsTracker++;
break;
case 15: // charge
- if (gDisableStructs[gActiveBank].chargeTimer1 && --gDisableStructs[gActiveBank].chargeTimer1 == 0)
- gStatuses3[gActiveBank] &= ~STATUS3_CHARGED_UP;
+ if (gDisableStructs[gActiveBattler].chargeTimer1 && --gDisableStructs[gActiveBattler].chargeTimer1 == 0)
+ gStatuses3[gActiveBattler] &= ~STATUS3_CHARGED_UP;
gBattleStruct->turnEffectsTracker++;
break;
case 16: // taunt
- if (gDisableStructs[gActiveBank].tauntTimer1)
- gDisableStructs[gActiveBank].tauntTimer1--;
+ if (gDisableStructs[gActiveBattler].tauntTimer1)
+ gDisableStructs[gActiveBattler].tauntTimer1--;
gBattleStruct->turnEffectsTracker++;
break;
case 17: // yawn
- if (gStatuses3[gActiveBank] & STATUS3_YAWN)
- {
- gStatuses3[gActiveBank] -= 0x800;
- if (!(gStatuses3[gActiveBank] & STATUS3_YAWN) && !(gBattleMons[gActiveBank].status1 & STATUS_ANY)
- && gBattleMons[gActiveBank].ability != ABILITY_VITAL_SPIRIT
- && gBattleMons[gActiveBank].ability != ABILITY_INSOMNIA && !UproarWakeUpCheck(gActiveBank))
- {
- CancelMultiTurnMoves(gActiveBank);
- gBattleMons[gActiveBank].status1 |= (Random() & 3) + 2;
- EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1);
- MarkBufferBankForExecution(gActiveBank);
- gEffectBank = gActiveBank;
+ if (gStatuses3[gActiveBattler] & STATUS3_YAWN)
+ {
+ gStatuses3[gActiveBattler] -= 0x800;
+ if (!(gStatuses3[gActiveBattler] & STATUS3_YAWN) && !(gBattleMons[gActiveBattler].status1 & STATUS_ANY)
+ && gBattleMons[gActiveBattler].ability != ABILITY_VITAL_SPIRIT
+ && gBattleMons[gActiveBattler].ability != ABILITY_INSOMNIA && !UproarWakeUpCheck(gActiveBattler))
+ {
+ CancelMultiTurnMoves(gActiveBattler);
+ gBattleMons[gActiveBattler].status1 |= (Random() & 3) + 2;
+ EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1);
+ MarkBufferBankForExecution(gActiveBattler);
+ gEffectBank = gActiveBattler;
BattleScriptExecute(BattleScript_YawnMakesAsleep);
effect++;
}
@@ -1165,28 +1165,28 @@ bool8 HandleWishPerishSongOnTurnEnd(void)
switch (gBattleStruct->sub80170DC_Tracker)
{
case 0: // future sight
- while (gBattleStruct->sub80170DC_Bank < gNoOfAllBanks)
+ while (gBattleStruct->sub80170DC_Bank < gBattlersCount)
{
- gActiveBank = gBattleStruct->sub80170DC_Bank;
- if (gAbsentBankFlags & gBitTable[gActiveBank])
+ gActiveBattler = gBattleStruct->sub80170DC_Bank;
+ if (gAbsentBattlerFlags & gBitTable[gActiveBattler])
gBattleStruct->sub80170DC_Bank++;
else
{
gBattleStruct->sub80170DC_Bank++;
- if (gWishFutureKnock.futureSightCounter[gActiveBank] && --gWishFutureKnock.futureSightCounter[gActiveBank] == 0 && gBattleMons[gActiveBank].hp)
+ if (gWishFutureKnock.futureSightCounter[gActiveBattler] && --gWishFutureKnock.futureSightCounter[gActiveBattler] == 0 && gBattleMons[gActiveBattler].hp)
{
- if (gWishFutureKnock.futureSightMove[gActiveBank] == MOVE_FUTURE_SIGHT)
+ if (gWishFutureKnock.futureSightMove[gActiveBattler] == MOVE_FUTURE_SIGHT)
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
else //Doom Desire
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
gBattleTextBuff1[0] = 0xFD;
gBattleTextBuff1[1] = 2;
- gBattleTextBuff1[2] = gWishFutureKnock.futureSightMove[gActiveBank];
- gBattleTextBuff1[3] = gWishFutureKnock.futureSightMove[gActiveBank] >> 8;
+ gBattleTextBuff1[2] = gWishFutureKnock.futureSightMove[gActiveBattler];
+ gBattleTextBuff1[3] = gWishFutureKnock.futureSightMove[gActiveBattler] >> 8;
gBattleTextBuff1[4] = 0xFF;
- gBankTarget = gActiveBank;
- gBankAttacker = gWishFutureKnock.futureSightAttacker[gActiveBank];
- gBattleMoveDamage = gWishFutureKnock.futureSightDmg[gActiveBank];
+ gBankTarget = gActiveBattler;
+ gBankAttacker = gWishFutureKnock.futureSightAttacker[gActiveBattler];
+ gBattleMoveDamage = gWishFutureKnock.futureSightDmg[gActiveBattler];
gSpecialStatuses[gBankTarget].moveturnLostHP = 0xFFFF;
BattleScriptExecute(BattleScript_MonTookFutureAttack);
return 1;
@@ -1196,31 +1196,31 @@ bool8 HandleWishPerishSongOnTurnEnd(void)
gBattleStruct->sub80170DC_Tracker = 1;
gBattleStruct->sub80170DC_Bank = 0;
case 1: // perish song
- while (gBattleStruct->sub80170DC_Bank < gNoOfAllBanks)
+ while (gBattleStruct->sub80170DC_Bank < gBattlersCount)
{
- gActiveBank = gBankAttacker = gBanksByTurnOrder[gBattleStruct->sub80170DC_Bank];
- if (gAbsentBankFlags & gBitTable[gActiveBank])
+ gActiveBattler = gBankAttacker = gBanksByTurnOrder[gBattleStruct->sub80170DC_Bank];
+ if (gAbsentBattlerFlags & gBitTable[gActiveBattler])
gBattleStruct->sub80170DC_Bank++;
else
{
gBattleStruct->sub80170DC_Bank++;
- if (gStatuses3[gActiveBank] & STATUS3_PERISH_SONG)
+ if (gStatuses3[gActiveBattler] & STATUS3_PERISH_SONG)
{
gBattleTextBuff1[0] = 0xFD;
gBattleTextBuff1[1] = 1;
gBattleTextBuff1[2] = 1;
gBattleTextBuff1[3] = 1;
- gBattleTextBuff1[4] = gDisableStructs[gActiveBank].perishSong1;
+ gBattleTextBuff1[4] = gDisableStructs[gActiveBattler].perishSongTimer1;
gBattleTextBuff1[5] = 0xFF;
- if (gDisableStructs[gActiveBank].perishSong1 == 0)
+ if (gDisableStructs[gActiveBattler].perishSongTimer1 == 0)
{
- gStatuses3[gActiveBank] &= ~(STATUS3_PERISH_SONG);
- gBattleMoveDamage = gBattleMons[gActiveBank].hp;
+ gStatuses3[gActiveBattler] &= ~(STATUS3_PERISH_SONG);
+ gBattleMoveDamage = gBattleMons[gActiveBattler].hp;
gBattlescriptCurrInstr = BattleScript_PerishSongHits;
}
else
{
- gDisableStructs[gActiveBank].perishSong1--;
+ gDisableStructs[gActiveBattler].perishSongTimer1--;
gBattlescriptCurrInstr = BattleScript_PerishSongTimerGoesDown;
}
BattleScriptExecute(gBattlescriptCurrInstr);
@@ -1248,27 +1248,27 @@ bool8 HandleFaintedMonActions(void)
case 0:
gBattleStruct->unk1605A = 0;
gBattleStruct->sub80173A4_Tracker++;
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
- if (gAbsentBankFlags & gBitTable[i] && !sub_8018018(i, 6, 6))
- gAbsentBankFlags &= ~(gBitTable[i]);
+ if (gAbsentBattlerFlags & gBitTable[i] && !sub_8018018(i, 6, 6))
+ gAbsentBattlerFlags &= ~(gBitTable[i]);
}
case 1:
do
{
gBank1 = gBankTarget = gBattleStruct->unk1605A;
- if (gBattleMons[gBattleStruct->unk1605A].hp == 0 && !(gBattleStruct->unk16113 & gBitTable[gBattlePartyID[gBattleStruct->unk1605A]]) && !(gAbsentBankFlags & gBitTable[gBattleStruct->unk1605A]))
+ if (gBattleMons[gBattleStruct->unk1605A].hp == 0 && !(gBattleStruct->unk16113 & gBitTable[gBattlerPartyIndexes[gBattleStruct->unk1605A]]) && !(gAbsentBattlerFlags & gBitTable[gBattleStruct->unk1605A]))
{
BattleScriptExecute(BattleScript_GiveExp);
gBattleStruct->sub80173A4_Tracker = 2;
return 1;
}
- } while (++gBattleStruct->unk1605A != gNoOfAllBanks);
+ } while (++gBattleStruct->unk1605A != gBattlersCount);
gBattleStruct->sub80173A4_Tracker = 3;
break;
case 2:
sub_8015740(gBank1);
- if (++gBattleStruct->unk1605A == gNoOfAllBanks)
+ if (++gBattleStruct->unk1605A == gBattlersCount)
gBattleStruct->sub80173A4_Tracker = 3;
else
gBattleStruct->sub80173A4_Tracker = 1;
@@ -1280,17 +1280,17 @@ bool8 HandleFaintedMonActions(void)
do
{
gBank1 = gBankTarget = gBattleStruct->unk1605A; //or should banks be switched?
- if (gBattleMons[gBattleStruct->unk1605A].hp == 0 && !(gAbsentBankFlags & gBitTable[gBattleStruct->unk1605A]))
+ if (gBattleMons[gBattleStruct->unk1605A].hp == 0 && !(gAbsentBattlerFlags & gBitTable[gBattleStruct->unk1605A]))
{
BattleScriptExecute(BattleScript_HandleFaintedMon);
gBattleStruct->sub80173A4_Tracker = 5;
return 1;
}
- } while (++gBattleStruct->unk1605A != gNoOfAllBanks);
+ } while (++gBattleStruct->unk1605A != gBattlersCount);
gBattleStruct->sub80173A4_Tracker = 6;
break;
case 5:
- if (++gBattleStruct->unk1605A == gNoOfAllBanks)
+ if (++gBattleStruct->unk1605A == gBattlersCount)
gBattleStruct->sub80173A4_Tracker = 6;
else
gBattleStruct->sub80173A4_Tracker = 4;
@@ -1310,7 +1310,7 @@ bool8 HandleFaintedMonActions(void)
void TryClearRageStatuses(void)
{
int i;
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
if (gBattleMons[i].status2 & STATUS2_RAGE && gChosenMovesByBanks[i] != MOVE_RAGE)
gBattleMons[i].status2 &= ~(STATUS2_RAGE);
@@ -1410,7 +1410,7 @@ u8 AtkCanceller_UnableToUseMove(void)
gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE;
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
gBattlescriptCurrInstr = BattleScript_MoveUsedLoafingAround;
- gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gMoveResultFlags |= MOVE_RESULT_MISSED;
effect = 1;
}
gBattleStruct->atkCancellerTracker++;
@@ -1546,7 +1546,7 @@ u8 AtkCanceller_UnableToUseMove(void)
gCurrentMove = MOVE_BIDE;
*bideDmg = gTakenDmg[gBankAttacker] * 2;
gBankTarget = gTakenDmgBanks[gBankAttacker];
- if (gAbsentBankFlags & gBitTable[gBankTarget])
+ if (gAbsentBattlerFlags & gBitTable[gBankTarget])
gBankTarget = GetMoveTarget(MOVE_BIDE, 1);
gBattlescriptCurrInstr = BattleScript_BideAttack;
}
@@ -1579,9 +1579,9 @@ u8 AtkCanceller_UnableToUseMove(void)
if (effect == 2)
{
- gActiveBank = gBankAttacker;
- EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1);
- MarkBufferBankForExecution(gActiveBank);
+ gActiveBattler = gBankAttacker;
+ EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1);
+ MarkBufferBankForExecution(gActiveBattler);
}
return effect;
}
@@ -1597,7 +1597,7 @@ bool8 sub_8018018(u8 bank, u8 r1, u8 r2)
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
{
r7 = sub_803FC34(bank);
- if (GetBankSide(bank) == 0)
+ if (GetBattlerSide(bank) == 0)
party = gPlayerParty;
else
party = gEnemyParty;
@@ -1611,22 +1611,22 @@ bool8 sub_8018018(u8 bank, u8 r1, u8 r2)
}
else
{
- if (GetBankSide(bank) == 1)
+ if (GetBattlerSide(bank) == 1)
{
- r7 = GetBankByIdentity(1);
- r6 = GetBankByIdentity(3);
+ r7 = GetBattlerAtPosition(1);
+ r6 = GetBattlerAtPosition(3);
party = gEnemyParty;
}
else
{
- r7 = GetBankByIdentity(0);
- r6 = GetBankByIdentity(2);
+ r7 = GetBattlerAtPosition(0);
+ r6 = GetBattlerAtPosition(2);
party = gPlayerParty;
}
if (r1 == 6)
- r1 = gBattlePartyID[r7];
+ r1 = gBattlerPartyIndexes[r7];
if (r2 == 6)
- r2 = gBattlePartyID[r6];
+ r2 = gBattlerPartyIndexes[r6];
for (i = 0; i < 6; i++)
{
if (GetMonData(&party[i], MON_DATA_HP) && GetMonData(&party[i], MON_DATA_SPECIES2) && GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_EGG && i != r1 && i != r2 && i != ewram16068arr(r7) && i != ewram16068arr(r6))
@@ -1695,19 +1695,19 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
u32 pidAtk;
u32 pidDef;
- if (gBankAttacker >= gNoOfAllBanks)
+ if (gBankAttacker >= gBattlersCount)
gBankAttacker = bank;
- if (GetBankSide(gBankAttacker) == 0)
- pokeAtk = &gPlayerParty[gBattlePartyID[gBankAttacker]];
+ if (GetBattlerSide(gBankAttacker) == 0)
+ pokeAtk = &gPlayerParty[gBattlerPartyIndexes[gBankAttacker]];
else
- pokeAtk = &gEnemyParty[gBattlePartyID[gBankAttacker]];
+ pokeAtk = &gEnemyParty[gBattlerPartyIndexes[gBankAttacker]];
- if (gBankTarget >= gNoOfAllBanks)
+ if (gBankTarget >= gBattlersCount)
gBankTarget = bank;
- if (GetBankSide(gBankTarget) == 0)
- pokeDef = &gPlayerParty[gBattlePartyID[gBankTarget]];
+ if (GetBattlerSide(gBankTarget) == 0)
+ pokeDef = &gPlayerParty[gBattlerPartyIndexes[gBankTarget]];
else
- pokeDef = &gEnemyParty[gBattlePartyID[gBankTarget]];
+ pokeDef = &gEnemyParty[gBattlerPartyIndexes[gBankTarget]];
speciesAtk = GetMonData(pokeAtk, MON_DATA_SPECIES);
pidAtk = GetMonData(pokeAtk, MON_DATA_PERSONALITY);
@@ -1741,7 +1741,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
switch (caseID)
{
case ABILITYEFFECT_ON_SWITCHIN: // 0
- if (gBankAttacker >= gNoOfAllBanks)
+ if (gBankAttacker >= gBattlersCount)
gBankAttacker = bank;
switch (gLastUsedAbility)
{
@@ -1838,7 +1838,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
case ABILITY_AIR_LOCK:
{
// that's a weird choice for a variable, why not use i or bank?
- for (target1 = 0; target1 < gNoOfAllBanks; target1++)
+ for (target1 = 0; target1 < gBattlersCount; target1++)
{
effect = CastformDataTypeChange(target1);
if (effect != 0)
@@ -1888,10 +1888,10 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
gBattleMons[bank].status1 = 0;
// BUG: The nightmare status does not get cleared here. This was fixed in Emerald.
//gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE);
- gBattleStruct->scriptingActive = gActiveBank = bank;
+ gBattleStruct->scriptingActive = gActiveBattler = bank;
BattleScriptPushCursorAndCallback(BattleScript_ShedSkinActivates);
EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[bank].status1);
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
effect++;
}
break;
@@ -2002,7 +2002,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
switch (gLastUsedAbility)
{
case ABILITY_COLOR_CHANGE:
- if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)
&& move != MOVE_STRUGGLE
&& gBattleMoves[move].power != 0
&& (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
@@ -2022,11 +2022,11 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITY_ROUGH_SKIN:
- if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)
&& gBattleMons[gBankAttacker].hp != 0
&& !gProtectStructs[gBankAttacker].confusionSelfDmg
&& (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
- && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT))
+ && (gBattleMoves[move].flags & F_MAKES_CONTACT))
{
gBattleMoveDamage = gBattleMons[gBankAttacker].maxHP / 16;
if (gBattleMoveDamage == 0)
@@ -2039,11 +2039,11 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
case ABILITY_EFFECT_SPORE:
if (DEBUG && (gUnknown_02023A14_50 & 4))
{
- if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)
&& gBattleMons[gBankAttacker].hp != 0
&& !gProtectStructs[gBankAttacker].confusionSelfDmg
&& (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
- && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT))
+ && (gBattleMoves[move].flags & F_MAKES_CONTACT))
{
do
{
@@ -2060,11 +2060,11 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
else
{
- if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)
&& gBattleMons[gBankAttacker].hp != 0
&& !gProtectStructs[gBankAttacker].confusionSelfDmg
&& (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
- && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
+ && (gBattleMoves[move].flags & F_MAKES_CONTACT)
&& (Random() % 10) == 0)
{
do
@@ -2084,11 +2084,11 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
case ABILITY_POISON_POINT:
if (DEBUG && (gUnknown_02023A14_50 & 4))
{
- if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)
&& gBattleMons[gBankAttacker].hp != 0
&& !gProtectStructs[gBankAttacker].confusionSelfDmg
&& (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
- && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT))
+ && (gBattleMoves[move].flags & F_MAKES_CONTACT))
{
gBattleCommunication[MOVE_EFFECT_BYTE] = 0x42;
BattleScriptPushCursor();
@@ -2099,11 +2099,11 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
else
{
- if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)
&& gBattleMons[gBankAttacker].hp != 0
&& !gProtectStructs[gBankAttacker].confusionSelfDmg
&& (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
- && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
+ && (gBattleMoves[move].flags & F_MAKES_CONTACT)
&& (Random() % 3) == 0)
{
gBattleCommunication[MOVE_EFFECT_BYTE] = 0x42;
@@ -2117,11 +2117,11 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
case ABILITY_STATIC:
if (DEBUG && (gUnknown_02023A14_50 & 4))
{
- if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)
&& gBattleMons[gBankAttacker].hp != 0
&& !gProtectStructs[gBankAttacker].confusionSelfDmg
&& (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
- && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT))
+ && (gBattleMoves[move].flags & F_MAKES_CONTACT))
{
gBattleCommunication[MOVE_EFFECT_BYTE] = 0x45;
BattleScriptPushCursor();
@@ -2132,11 +2132,11 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
else
{
- if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)
&& gBattleMons[gBankAttacker].hp != 0
&& !gProtectStructs[gBankAttacker].confusionSelfDmg
&& (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
- && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
+ && (gBattleMoves[move].flags & F_MAKES_CONTACT)
&& (Random() % 3) == 0)
{
gBattleCommunication[MOVE_EFFECT_BYTE] = 0x45;
@@ -2150,10 +2150,10 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
case ABILITY_FLAME_BODY:
if (DEBUG && (gUnknown_02023A14_50 & 4))
{
- if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)
&& gBattleMons[gBankAttacker].hp != 0
&& !gProtectStructs[gBankAttacker].confusionSelfDmg
- && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
+ && (gBattleMoves[move].flags & F_MAKES_CONTACT)
&& (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special))
{
gBattleCommunication[MOVE_EFFECT_BYTE] = 0x43;
@@ -2165,10 +2165,10 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
else
{
- if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)
&& gBattleMons[gBankAttacker].hp != 0
&& !gProtectStructs[gBankAttacker].confusionSelfDmg
- && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
+ && (gBattleMoves[move].flags & F_MAKES_CONTACT)
&& (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
&& (Random() % 3) == 0)
{
@@ -2183,10 +2183,10 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
case ABILITY_CUTE_CHARM:
if (DEBUG && (gUnknown_02023A14_50 & 4))
{
- if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)
&& gBattleMons[gBankAttacker].hp != 0
&& !gProtectStructs[gBankAttacker].confusionSelfDmg
- && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
+ && (gBattleMoves[move].flags & F_MAKES_CONTACT)
&& (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
&& gBattleMons[gBankTarget].hp != 0
&& gBattleMons[gBankAttacker].ability != ABILITY_OBLIVIOUS
@@ -2203,10 +2203,10 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
else
{
- if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)
&& gBattleMons[gBankAttacker].hp != 0
&& !gProtectStructs[gBankAttacker].confusionSelfDmg
- && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
+ && (gBattleMoves[move].flags & F_MAKES_CONTACT)
&& (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
&& gBattleMons[gBankTarget].hp != 0
&& (Random() % 3) == 0
@@ -2227,7 +2227,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
break;
case ABILITYEFFECT_IMMUNITY: // 5
{
- for (bank = 0; bank < gNoOfAllBanks; bank++)
+ for (bank = 0; bank < gBattlersCount; bank++)
{
switch (gBattleMons[bank].ability)
{
@@ -2300,9 +2300,9 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_AbilityCuredStatus;
gBattleStruct->scriptingActive = bank;
- gActiveBank = bank;
- EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1);
- MarkBufferBankForExecution(gActiveBank);
+ gActiveBattler = bank;
+ EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1);
+ MarkBufferBankForExecution(gActiveBattler);
return effect;
}
}
@@ -2310,7 +2310,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
break;
case ABILITYEFFECT_FORECAST: // 6
{
- for (bank = 0; bank < gNoOfAllBanks; bank++)
+ for (bank = 0; bank < gBattlersCount; bank++)
{
if (gBattleMons[bank].ability == ABILITY_FORECAST)
{
@@ -2357,7 +2357,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_INTIMIDATE1: // 9
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
if (gBattleMons[i].ability == ABILITY_INTIMIDATE && gStatuses3[i] & STATUS3_INTIMIDATE_POKES)
{
@@ -2371,42 +2371,42 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_TRACE: // 11
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
if (gBattleMons[i].ability == ABILITY_TRACE && (gStatuses3[i] & STATUS3_TRACE))
{
u8 target2;
- side = (GetBankIdentity(i) ^ 1) & 1;
- target1 = GetBankByIdentity(side);
- target2 = GetBankByIdentity(side + 2);
+ side = (GetBattlerPosition(i) ^ 1) & 1;
+ target1 = GetBattlerAtPosition(side);
+ target2 = GetBattlerAtPosition(side + 2);
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
{
if (gBattleMons[target1].ability != 0 && gBattleMons[target1].hp != 0
&& gBattleMons[target2].ability != 0 && gBattleMons[target2].hp != 0)
{
- gActiveBank = GetBankByIdentity(((Random() & 1) * 2) | side);
- gBattleMons[i].ability = gBattleMons[gActiveBank].ability;
- gLastUsedAbility = gBattleMons[gActiveBank].ability;
+ gActiveBattler = GetBattlerAtPosition(((Random() & 1) * 2) | side);
+ gBattleMons[i].ability = gBattleMons[gActiveBattler].ability;
+ gLastUsedAbility = gBattleMons[gActiveBattler].ability;
effect++;
}
else if (gBattleMons[target1].ability != 0 && gBattleMons[target1].hp != 0)
{
- gActiveBank = target1;
- gBattleMons[i].ability = gBattleMons[gActiveBank].ability;
- gLastUsedAbility = gBattleMons[gActiveBank].ability;
+ gActiveBattler = target1;
+ gBattleMons[i].ability = gBattleMons[gActiveBattler].ability;
+ gLastUsedAbility = gBattleMons[gActiveBattler].ability;
effect++;
}
else if (gBattleMons[target2].ability != 0 && gBattleMons[target2].hp != 0)
{
- gActiveBank = target2;
- gBattleMons[i].ability = gBattleMons[gActiveBank].ability;
- gLastUsedAbility = gBattleMons[gActiveBank].ability;
+ gActiveBattler = target2;
+ gBattleMons[i].ability = gBattleMons[gActiveBattler].ability;
+ gLastUsedAbility = gBattleMons[gActiveBattler].ability;
effect++;
}
}
else
{
- gActiveBank = target1;
+ gActiveBattler = target1;
if (gBattleMons[target1].ability && gBattleMons[target1].hp)
{
gBattleMons[i].ability = gBattleMons[target1].ability;
@@ -2422,8 +2422,8 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
gBattleTextBuff1[0] = 0xFD;
gBattleTextBuff1[1] = 4;
- gBattleTextBuff1[2] = gActiveBank;
- gBattleTextBuff1[3] = gBattlePartyID[gActiveBank];
+ gBattleTextBuff1[2] = gActiveBattler;
+ gBattleTextBuff1[3] = gBattlerPartyIndexes[gActiveBattler];
gBattleTextBuff1[4] = EOS;
gBattleTextBuff2[0] = 0xFD;
@@ -2436,7 +2436,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_INTIMIDATE2: // 10
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
if (gBattleMons[i].ability == ABILITY_INTIMIDATE && (gStatuses3[i] & STATUS3_INTIMIDATE_POKES))
{
@@ -2451,10 +2451,10 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_CHECK_OTHER_SIDE: // 12
- side = GetBankSide(bank);
- for (i = 0; i < gNoOfAllBanks; i++)
+ side = GetBattlerSide(bank);
+ for (i = 0; i < gBattlersCount; i++)
{
- if (GetBankSide(i) != side && gBattleMons[i].ability == ability)
+ if (GetBattlerSide(i) != side && gBattleMons[i].ability == ability)
{
gLastUsedAbility = ability;
effect = i + 1;
@@ -2462,10 +2462,10 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_CHECK_BANK_SIDE: // 13
- side = GetBankSide(bank);
- for (i = 0; i < gNoOfAllBanks; i++)
+ side = GetBattlerSide(bank);
+ for (i = 0; i < gBattlersCount; i++)
{
- if (GetBankSide(i) == side && gBattleMons[i].ability == ability)
+ if (GetBattlerSide(i) == side && gBattleMons[i].ability == ability)
{
gLastUsedAbility = ability;
effect = i + 1;
@@ -2476,21 +2476,21 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
switch (gLastUsedAbility)
{
case 0xFD:
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
if (gStatuses3[i] & STATUS3_MUDSPORT)
effect = i + 1;
}
break;
case 0xFE:
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
if (gStatuses3[i] & STATUS3_WATERSPORT)
effect = i + 1;
}
break;
default:
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
if (gBattleMons[i].ability == ability)
{
@@ -2502,7 +2502,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_CHECK_ON_FIELD: // 19
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
if (gBattleMons[i].ability == ability && gBattleMons[i].hp != 0)
{
@@ -2512,7 +2512,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_CHECK_FIELD_EXCEPT_BANK: // 15
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
if (gBattleMons[i].ability == ability && i != bank)
{
@@ -2522,10 +2522,10 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_COUNT_OTHER_SIZE: // 16
- side = GetBankSide(bank);
- for (i = 0; i < gNoOfAllBanks; i++)
+ side = GetBattlerSide(bank);
+ for (i = 0; i < gBattlersCount; i++)
{
- if (GetBankSide(i) != side && gBattleMons[i].ability == ability)
+ if (GetBattlerSide(i) != side && gBattleMons[i].ability == ability)
{
gLastUsedAbility = ability;
effect++;
@@ -2533,10 +2533,10 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_COUNT_BANK_SIDE: // 17
- side = GetBankSide(bank);
- for (i = 0; i < gNoOfAllBanks; i++)
+ side = GetBattlerSide(bank);
+ for (i = 0; i < gBattlersCount; i++)
{
- if (GetBankSide(i) == side && gBattleMons[i].ability == ability)
+ if (GetBattlerSide(i) == side && gBattleMons[i].ability == ability)
{
gLastUsedAbility = ability;
effect++;
@@ -2544,7 +2544,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_COUNT_ON_FIELD: // 18
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
if (gBattleMons[i].ability == ability && i != bank)
{
@@ -2663,7 +2663,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
{
gBattleStruct->scriptingActive = bank;
gStringBank = bank;
- gActiveBank = gBankAttacker = bank;
+ gActiveBattler = gBankAttacker = bank;
BattleScriptExecute(BattleScript_WhiteHerbEnd2);
}
break;
@@ -2692,10 +2692,10 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
u8 ppBonuses;
u16 move;
- if (GetBankSide(bank) == 0)
- poke = &gPlayerParty[gBattlePartyID[bank]];
+ if (GetBattlerSide(bank) == 0)
+ poke = &gPlayerParty[gBattlerPartyIndexes[bank]];
else
- poke = &gEnemyParty[gBattlePartyID[bank]];
+ poke = &gEnemyParty[gBattlerPartyIndexes[bank]];
for (i = 0; i < 4; i++)
{
move = GetMonData(poke, MON_DATA_MOVE1 + i);
@@ -2718,7 +2718,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
gBattleTextBuff1[4] = 0xFF;
BattleScriptExecute(BattleScript_BerryPPHealEnd2);
EmitSetMonData(0, i + REQUEST_PPMOVE1_BATTLE, 0, 1, &changedPP);
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
effect = ITEM_PP_CHANGE;
}
}
@@ -2736,7 +2736,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
{
gBattleStruct->scriptingActive = bank;
gStringBank = bank;
- gActiveBank = gBankAttacker = bank;
+ gActiveBattler = gBankAttacker = bank;
BattleScriptExecute(BattleScript_WhiteHerbEnd2);
}
break;
@@ -3097,12 +3097,12 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
{
gBattleStruct->scriptingActive = bank;
gStringBank = bank;
- gActiveBank = gBankAttacker = bank;
+ gActiveBattler = gBankAttacker = bank;
switch (effect)
{
case ITEM_STATUS_CHANGE:
EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[bank].status1);
- MarkBufferBankForExecution(gActiveBank);
+ MarkBufferBankForExecution(gActiveBattler);
break;
case ITEM_PP_CHANGE:
if (!(gBattleMons[bank].status2 & STATUS2_TRANSFORMED) && !(gDisableStructs[bank].unk18_b & gBitTable[i]))
@@ -3115,7 +3115,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
case 2:
break;
case 3:
- for (bank = 0; bank < gNoOfAllBanks; bank++)
+ for (bank = 0; bank < gBattlersCount; bank++)
{
gLastUsedItem = gBattleMons[bank].item;
if (gBattleMons[bank].item == ITEM_ENIGMA_BERRY)
@@ -3255,9 +3255,9 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
{
gBattleStruct->scriptingActive = bank;
gStringBank = bank;
- gActiveBank = bank;
- EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1);
- MarkBufferBankForExecution(gActiveBank);
+ gActiveBattler = bank;
+ EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1);
+ MarkBufferBankForExecution(gActiveBattler);
break;
}
}
@@ -3268,10 +3268,10 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
switch (atkHoldEffect)
{
case HOLD_EFFECT_FLINCH:
- if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)
&& (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
&& (Random() % 100) < bankQuality
- && gBattleMoves[gCurrentMove].flags & FLAG_KINGSROCK_AFFECTED
+ && gBattleMoves[gCurrentMove].flags & F_AFFECTED_BY_KINGS_ROCK
&& gBattleMons[gBankTarget].hp)
{
gBattleCommunication[MOVE_EFFECT_BYTE] = 8;
@@ -3281,7 +3281,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
}
break;
case HOLD_EFFECT_SHELL_BELL:
- if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)
&& gSpecialStatuses[gBankTarget].moveturnLostHP != 0
&& gSpecialStatuses[gBankTarget].moveturnLostHP != 0xFFFF
&& gBankAttacker != gBankTarget
@@ -3331,22 +3331,22 @@ void unref_sub_801B40C(void)
u8 bank = 0;
do
{
- u8 absent = gAbsentBankFlags;
+ u8 absent = gAbsentBattlerFlags;
if (gBitTable[bank] & absent || absent & gBitTable[bank + 2])
bank++;
else
{
if (sCombinedMoves[i].move1 == gChosenMovesByBanks[bank] && sCombinedMoves[i].move2 == gChosenMovesByBanks[bank + 2])
{
- gSideTimers[GetBankIdentity(bank) & 1].field3 = (bank) | ((bank + 2) << 4);
- gSideTimers[GetBankIdentity(bank) & 1].field4 = sCombinedMoves[i].newMove;
- gSideAffecting[GetBankIdentity(bank) & 1] |= SIDE_STATUS_X4;
+ gSideTimers[GetBattlerPosition(bank) & 1].field3 = (bank) | ((bank + 2) << 4);
+ gSideTimers[GetBattlerPosition(bank) & 1].field4 = sCombinedMoves[i].newMove;
+ gSideAffecting[GetBattlerPosition(bank) & 1] |= SIDE_STATUS_X4;
}
if (sCombinedMoves[i].move1 == gChosenMovesByBanks[bank + 2] && sCombinedMoves[i].move2 == gChosenMovesByBanks[bank])
{
- gSideTimers[GetBankIdentity(bank) & 1].field3 = (bank + 2) | ((bank) << 4);
- gSideTimers[GetBankIdentity(bank) & 1].field4 = sCombinedMoves[i].newMove;
- gSideAffecting[GetBankIdentity(bank) & 1] |= SIDE_STATUS_X4;
+ gSideTimers[GetBattlerPosition(bank) & 1].field3 = (bank + 2) | ((bank) << 4);
+ gSideTimers[GetBattlerPosition(bank) & 1].field4 = sCombinedMoves[i].newMove;
+ gSideAffecting[GetBattlerPosition(bank) & 1] |= SIDE_STATUS_X4;
}
bank++;
}
@@ -3376,16 +3376,16 @@ u8 GetMoveTarget(u16 move, u8 useMoveTarget) //get move target
switch (moveTarget)
{
case 0:
- side = GetBankSide(gBankAttacker) ^ 1;
+ side = GetBattlerSide(gBankAttacker) ^ 1;
if (gSideTimers[side].followmeTimer && gBattleMons[gSideTimers[side].followmeTarget].hp)
targetBank = gSideTimers[side].followmeTarget;
else
{
- side = GetBankSide(gBankAttacker);
+ side = GetBattlerSide(gBankAttacker);
do
{
- targetBank = Random() % gNoOfAllBanks;
- } while (targetBank == gBankAttacker || side == GetBankSide(targetBank) || gAbsentBankFlags & gBitTable[targetBank]);
+ targetBank = Random() % gBattlersCount;
+ } while (targetBank == gBankAttacker || side == GetBattlerSide(targetBank) || gAbsentBattlerFlags & gBitTable[targetBank]);
if (gBattleMoves[move].type == TYPE_ELECTRIC
&& AbilityBattleEffects(ABILITYEFFECT_COUNT_OTHER_SIZE, gBankAttacker, ABILITY_LIGHTNING_ROD, 0, 0)
&& gBattleMons[targetBank].ability != ABILITY_LIGHTNING_ROD)
@@ -3400,35 +3400,35 @@ u8 GetMoveTarget(u16 move, u8 useMoveTarget) //get move target
case 8:
case 32:
case 64:
- targetBank = GetBankByIdentity((GetBankIdentity(gBankAttacker) & 1) ^ 1);
- if (gAbsentBankFlags & gBitTable[targetBank])
+ targetBank = GetBattlerAtPosition((GetBattlerPosition(gBankAttacker) & 1) ^ 1);
+ if (gAbsentBattlerFlags & gBitTable[targetBank])
targetBank ^= 2;
break;
case 4:
- side = GetBankSide(gBankAttacker) ^ 1;
+ side = GetBattlerSide(gBankAttacker) ^ 1;
if (gSideTimers[side].followmeTimer && gBattleMons[gSideTimers[side].followmeTarget].hp)
targetBank = gSideTimers[side].followmeTarget;
else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && moveTarget & 4)
{
- if (GetBankSide(gBankAttacker) == 0)
+ if (GetBattlerSide(gBankAttacker) == 0)
{
if (Random() & 1)
- targetBank = GetBankByIdentity(1);
+ targetBank = GetBattlerAtPosition(1);
else
- targetBank = GetBankByIdentity(3);
+ targetBank = GetBattlerAtPosition(3);
}
else
{
if (Random() & 1)
- targetBank = GetBankByIdentity(0);
+ targetBank = GetBattlerAtPosition(0);
else
- targetBank = GetBankByIdentity(2);
+ targetBank = GetBattlerAtPosition(2);
}
- if (gAbsentBankFlags & gBitTable[targetBank])
+ if (gAbsentBattlerFlags & gBitTable[targetBank])
targetBank ^= 2;
}
else
- targetBank = GetBankByIdentity((GetBankIdentity(gBankAttacker) & 1) ^ 1);
+ targetBank = GetBattlerAtPosition((GetBattlerPosition(gBankAttacker) & 1) ^ 1);
break;
case 2:
case 16:
@@ -3446,7 +3446,7 @@ u8 IsMonDisobedient(void)
s32 calc;
if (gBattleTypeFlags & BATTLE_TYPE_LINK
- || GetBankSide(gBankAttacker) == 1
+ || GetBattlerSide(gBankAttacker) == 1
|| !IsOtherTrainer(gBattleMons[gBankAttacker].otId, gBattleMons[gBankAttacker].otName))
return 0;
@@ -3519,12 +3519,12 @@ u8 IsMonDisobedient(void)
{
// try putting asleep
int i;
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
if (gBattleMons[i].status2 & STATUS2_UPROAR)
break;
}
- if (i == gNoOfAllBanks)
+ if (i == gBattlersCount)
{
gBattlescriptCurrInstr = BattleScript_IgnoresAndFallsAsleep;
return 1;
diff --git a/src/battle/calculate_base_damage.c b/src/battle/calculate_base_damage.c
index 217ab28a3..d983e47a4 100644
--- a/src/battle/calculate_base_damage.c
+++ b/src/battle/calculate_base_damage.c
@@ -71,7 +71,7 @@ const u8 gHoldEffectToType[][2] =
{HOLD_EFFECT_NORMAL_POWER, TYPE_NORMAL}
};
-u8 GetBankSide(u8 bank);
+u8 GetBattlerSide(u8 bank);
#define APPLY_STAT_MOD(var, mon, stat, statIndex) \
{ \
@@ -137,7 +137,7 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER)
&& gTrainerBattleOpponent != 1024
&& FlagGet(FLAG_BADGE01_GET)
- && !GetBankSide(bankAtk))
+ && !GetBattlerSide(bankAtk))
attack = (110 * attack) / 100;
}
if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER)))
@@ -145,7 +145,7 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER)
&& gTrainerBattleOpponent != 1024
&& FlagGet(FLAG_BADGE05_GET)
- && !GetBankSide(bankDef))
+ && !GetBattlerSide(bankDef))
defense = (110 * defense) / 100;
}
if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER)))
@@ -153,7 +153,7 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER)
&& gTrainerBattleOpponent != 1024
&& FlagGet(FLAG_BADGE07_GET)
- && !GetBankSide(bankAtk))
+ && !GetBattlerSide(bankAtk))
spAttack = (110 * spAttack) / 100;
}
if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER)))
@@ -161,7 +161,7 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER)
&& gTrainerBattleOpponent != 1024
&& FlagGet(FLAG_BADGE07_GET)
- && !GetBankSide(bankDef))
+ && !GetBattlerSide(bankDef))
spDefense = (110 * spDefense) / 100;
}
@@ -170,7 +170,7 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
if (attackerHoldEffect == gHoldEffectToType[i][0]
&& type == gHoldEffectToType[i][1])
{
- if (type <= 8)
+ if (TYPE_IS_PHYSICAL(type))
attack = (attack * (attackerHoldEffectParam + 100)) / 100;
else
spAttack = (spAttack * (attackerHoldEffectParam + 100)) / 100;
@@ -221,7 +221,7 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
if (gBattleMoves[gCurrentMove].effect == EFFECT_EXPLOSION)
defense /= 2;
- if (type < TYPE_MYSTERY) // is physical
+ if (TYPE_IS_PHYSICAL(type)) // type < TYPE_MYSTERY
{
if (gCritMultiplier == 2)
{
@@ -271,7 +271,7 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
if (type == TYPE_MYSTERY)
damage = 0; // is ??? type. does 0 damage.
- if (type > TYPE_MYSTERY) // is special?
+ if (TYPE_IS_SPECIAL(type)) // type > TYPE_MYSTERY
{
if (gCritMultiplier == 2)
{
diff --git a/src/battle/contest_link_80C2020.c b/src/battle/contest_link_80C2020.c
index 57f22b85c..10702b142 100644
--- a/src/battle/contest_link_80C2020.c
+++ b/src/battle/contest_link_80C2020.c
@@ -303,7 +303,7 @@ void sub_80C2358(void)
gBattle_WIN1V = 0x80a0;
CreateTask(sub_80C2F28, 20);
sub_80C3F00();
- PlayBGM(BGM_CON_K);
+ PlayBGM(MUS_CON_K);
SetVBlankCallback(sub_80C2448);
}
@@ -949,72 +949,96 @@ __attribute__((naked)) void sub_80C310C(void)
}
#endif
-void sub_80C3158(const u8 *string, u8 spriteId)
-{
- struct Sprite *sprite = gSprites + spriteId;
- u16 sp00[4] = {
- sprite->oam.tileNum,
- gSprites[sprite->data[0]].oam.tileNum,
- gSprites[sprite->data[1]].oam.tileNum,
- gSprites[sprite->data[2]].oam.tileNum
- };
- int i;
- u8 width;
- u8 * displayedStringBattle;
- void * dest;
+// void sub_80C3158(const u8 *string, u8 spriteId)
+// {
+// int i, j;
+// u8 width;
+// u8 * displayedStringBattle;
+// void * dest;
+// u8 * d1;
+// u8 * d2;
+// void *d3;
+// void *d4;
+// void *d5;
+// void *d6;
+// int w;
+// u16 sp00[4];
+// struct Sprite *sprite = &gSprites[spriteId];
+// sp00[0] = gSprites[spriteId].oam.tileNum;
+// sp00[1] = gSprites[sprite->data[0]].oam.tileNum;
+// sp00[2] = gSprites[sprite->data[1]].oam.tileNum;
+// sp00[3] = gSprites[sprite->data[2]].oam.tileNum;
- for (i = 0; i < 4; i++)
- {
- DmaFill32(3, 0, BG_CHAR_ADDR(4) + 32 * sp00[i], 0x400);
- }
+// for (i = 0; i < 4; i++)
+// {
+// DmaClear32(3, (void *)VRAM + 0x10000 + 32 * sp00[i], 0x400);
+// }
- width = Text_GetStringWidthFromWindowTemplate(&gWindowTemplate_81E7278, string);
- displayedStringBattle = gDisplayedStringBattle;
- displayedStringBattle = StringCopy(displayedStringBattle, gUnknown_083D17E2);
- if ((~width + 1) & 7)
- {
- displayedStringBattle[0] = EXT_CTRL_CODE_BEGIN;
- displayedStringBattle[1] = 0x11;
- displayedStringBattle[2] = ((~width + 1) & 7) / 2;
- displayedStringBattle += 3;
- }
- width = (width + 7) & (~8);
- displayedStringBattle = StringCopy(displayedStringBattle, string);
+// width = Text_GetStringWidthFromWindowTemplate(&gWindowTemplate_81E7278, string);
+// displayedStringBattle = gDisplayedStringBattle;
+// displayedStringBattle = StringCopy(displayedStringBattle, gUnknown_083D17E2);
+// if ((~width + 1) & 7)
+// {
+// displayedStringBattle[0] = EXT_CTRL_CODE_BEGIN;
+// displayedStringBattle[1] = 0x11;
+// displayedStringBattle[2] = ((~width + 1) & 7) / 2;
+// displayedStringBattle += 3;
+// }
- displayedStringBattle[0] = EXT_CTRL_CODE_BEGIN;
- displayedStringBattle[1] = 0x13;
- displayedStringBattle[2] = width;
- displayedStringBattle[3] = EOS;
+// width += -8 & (width + 7);
+// displayedStringBattle = StringCopy(displayedStringBattle, string);
- sub_80034D4(eContestLink80C2020Struct2018068, gDisplayedStringBattle);
+// displayedStringBattle[0] = EXT_CTRL_CODE_BEGIN;
+// displayedStringBattle[1] = 0x13;
+// displayedStringBattle[2] = width;
+// displayedStringBattle[3] = EOS;
- CpuCopy32(gUnknown_083D1624, BG_CHAR_ADDR(4) + 32 * sp00[0], 32);
- CpuCopy32(gUnknown_083D1624 + 0x40, BG_CHAR_ADDR(4) + 32 * sp00[0] + 0x100, 32);
- CpuCopy32(gUnknown_083D1624 + 0x40, BG_CHAR_ADDR(4) + 32 * sp00[0] + 0x200, 32);
- CpuCopy32(gUnknown_083D1624 + 0x20, BG_CHAR_ADDR(4) + 32 * sp00[0] + 0x300, 32);
+// sub_80034D4(eContestLink80C2020Struct2018068, gDisplayedStringBattle);
- for (i = 0; i < width / 8; i++)
- {
- if (i < 7)
- dest = (void *)VRAM + 0x10020 + 32 * sp00[0] + 32 * i;
- else if (i < 15)
- dest = (void *)VRAM + 0x0FF20 + 32 * sp00[0] + 32 * i;
- else if (i < 23)
- dest = (void *)VRAM + 0x0FE20 + 32 * sp00[0] + 32 * i;
- else
- dest = (void *)VRAM + 0x0FD20 + 32 * sp00[0] + 32 * i;
+// CpuSet(&gUnknown_083D1624[0x0], (void *)0x6010000 + 32 * sp00[0], 0x4000008);
+// CpuSet(&gUnknown_083D1624[0x40], (void *)0x6010000 + 32 * sp00[0] + 0x100, 0x4000008);
+// CpuSet(&gUnknown_083D1624[0x40], (void *)0x6010000 + 32 * sp00[0] + 0x200, 0x4000008);
+// CpuSet(&gUnknown_083D1624[0x20], (void *)0x6010000 + 32 * sp00[0] + 0x300, 0x4000008);
- if (i != width / 8)
- {
- CpuCopy32(gUnknown_083D16E4, dest, 32);
- CpuCopy32(gUnknown_083D16E4 + 0x10, dest + 0x300, 32);
- CpuCopy32(eContestLink80C2020Struct2018068 + 0x40 * i, dest + 0x100, 32);
- CpuCopy32(eContestLink80C2020Struct2018068 + 0x20 + 0x40 * i, dest + 0x200, 32);
- }
- }
+// w = width / 8;
+// j = 0;
+// if (j <= w)
+// {
+// d2 = eContestLink80C2020Struct2018068 + 0x20;
+// d1 = eContestLink80C2020Struct2018068;
+// d3 = (void *)VRAM + 0x0FD20;
+// d4 = (void *)VRAM + 0x0FE20;
+// d5 = (void *)VRAM + 0x0FF20;
+// d6 = (void *)VRAM + 0x10020;
+// while (j <= w)
+// {
+// if (j < 7)
+// dest = 32 * sp00[0] + d6;
+// else if (j < 15)
+// dest = 32 * sp00[1] + d5;
+// else if (j < 23)
+// dest = 32 * sp00[2] + d4;
+// else
+// dest = 32 * sp00[3] + d3;
- CpuCopy32(gUnknown_083D1644, dest, 32);
- CpuCopy32(gUnknown_083D1644 + 0x40, dest + 0x100, 32);
- CpuCopy32(gUnknown_083D1644 + 0x40, dest + 0x200, 32);
- CpuCopy32(gUnknown_083D1644 + 0x20, dest + 0x300, 32);
-}
+// if (j == w)
+// break;
+
+// CpuSet(gUnknown_083D16E4, dest, 0x4000008);
+// CpuSet(gUnknown_083D16E4 + 0x10, dest + 0x300, 0x4000008);
+// CpuSet(j * 0x40 + d2, dest + 0x100, 0x4000008);
+// CpuSet(j * 0x40 + d1, dest + 0x200, 0x4000008);
+
+// d3 += 0x20;
+// d4 += 0x20;
+// d5 += 0x20;
+// d6 += 0x20;
+// j++;
+// }
+// }
+
+// CpuSet(gUnknown_083D1644, dest, 0x4000008);
+// CpuSet(gUnknown_083D1644 + 0x40, dest + 0x100, 0x4000008);
+// CpuSet(gUnknown_083D1644 + 0x40, dest + 0x200, 0x4000008);
+// CpuSet(gUnknown_083D1644 + 0x20, dest + 0x300, 0x4000008);
+// }
diff --git a/src/battle/contest_link_80C857C.c b/src/battle/contest_link_80C857C.c
index 4fb236294..94454e45c 100644
--- a/src/battle/contest_link_80C857C.c
+++ b/src/battle/contest_link_80C857C.c
@@ -107,7 +107,7 @@ u8 sub_80C86A0(const u8 *string)
return language;
}
#else
-__attribute__((naked)) u8 sub_80C86A0(const u8 *string)
+NAKED u8 sub_80C86A0(const u8 *string)
{
asm_unified("\tpush {r4,r5,lr}\n"
"\tadds r4, r0, 0\n"
diff --git a/src/battle/pokeball.c b/src/battle/pokeball.c
index 20c6d8676..c619141a1 100644
--- a/src/battle/pokeball.c
+++ b/src/battle/pokeball.c
@@ -19,8 +19,8 @@
extern struct MusicPlayerInfo gMPlay_BGM;
extern u16 gBattleTypeFlags;
extern u8 gBankTarget;
-extern u8 gActiveBank;
-extern u16 gBattlePartyID[];
+extern u8 gActiveBattler;
+extern u16 gBattlerPartyIndexes[];
extern u8 gBankSpriteIds[];
extern u8 gDoingBattleAnim;
extern u8 gHealthboxIDs[];
@@ -333,11 +333,11 @@ u8 sub_8046400(u16 a, u8 b)
u8 taskId;
gDoingBattleAnim = 1;
- ewram17810[gActiveBank].unk0_3 = 1;
+ ewram17810[gActiveBattler].unk0_3 = 1;
taskId = CreateTask(sub_8046464, 5);
gTasks[taskId].data[1] = a;
gTasks[taskId].data[2] = b;
- gTasks[taskId].data[3] = gActiveBank;
+ gTasks[taskId].data[3] = gActiveBattler;
return 0;
}
@@ -357,10 +357,10 @@ static void sub_8046464(u8 taskId)
}
r8 = gTasks[taskId].data[2];
r5 = gTasks[taskId].data[3];
- if (GetBankSide(r5) != 0)
- ball = GetMonData(&gEnemyParty[gBattlePartyID[r5]], MON_DATA_POKEBALL);
+ if (GetBattlerSide(r5) != 0)
+ ball = GetMonData(&gEnemyParty[gBattlerPartyIndexes[r5]], MON_DATA_POKEBALL);
else
- ball = GetMonData(&gPlayerParty[gBattlePartyID[r5]], MON_DATA_POKEBALL);
+ ball = GetMonData(&gPlayerParty[gBattlerPartyIndexes[r5]], MON_DATA_POKEBALL);
r4 = ball_number_to_ball_processing_index(ball);
sub_80478DC(r4);
spriteId = CreateSprite(&gBallSpriteTemplates[r4], 32, 80, 0x1D);
@@ -376,14 +376,14 @@ static void sub_8046464(u8 taskId)
gSprites[spriteId].callback = sub_8047074;
break;
case 0xFE:
- gSprites[spriteId].pos1.x = GetBankPosition(r5, 0);
- gSprites[spriteId].pos1.y = GetBankPosition(r5, 1) + 24;
+ gSprites[spriteId].pos1.x = GetBattlerSpriteCoord(r5, 0);
+ gSprites[spriteId].pos1.y = GetBattlerSpriteCoord(r5, 1) + 24;
gBankTarget = r5;
gSprites[spriteId].data[0] = 0;
gSprites[spriteId].callback = sub_8047254;
break;
default:
- gBankTarget = GetBankByIdentity(1);
+ gBankTarget = GetBattlerAtPosition(1);
sp0 = TRUE;
break;
}
@@ -394,8 +394,8 @@ static void sub_8046464(u8 taskId)
return;
}
gSprites[spriteId].data[0] = 0x22;
- gSprites[spriteId].data[2] = GetBankPosition(gBankTarget, 0);
- gSprites[spriteId].data[4] = GetBankPosition(gBankTarget, 1) - 16;
+ gSprites[spriteId].data[2] = GetBattlerSpriteCoord(gBankTarget, 0);
+ gSprites[spriteId].data[4] = GetBattlerSpriteCoord(gBankTarget, 1) - 16;
gSprites[spriteId].data[5] = -40;
InitAnimSpriteTranslationOverDuration(&gSprites[spriteId]);
gSprites[spriteId].oam.affineParam = taskId;
@@ -711,18 +711,18 @@ static void sub_8046C78(struct Sprite *sprite)
u16 r4_2;
u8 taskId;
- if (GetBankSide(r5) != 0)
+ if (GetBattlerSide(r5) != 0)
{
- pkmn = &gEnemyParty[gBattlePartyID[r5]];
+ pkmn = &gEnemyParty[gBattlerPartyIndexes[r5]];
r8 = 25;
}
else
{
- pkmn = &gPlayerParty[gBattlePartyID[r5]];
+ pkmn = &gPlayerParty[gBattlerPartyIndexes[r5]];
r8 = -25;
}
species = GetMonData(pkmn, MON_DATA_SPECIES);
- if ((r5 == GetBankByIdentity(0) || r5 == GetBankByIdentity(1))
+ if ((r5 == GetBattlerAtPosition(0) || r5 == GetBattlerAtPosition(1))
&& IsDoubleBattle() && ewram17840.unk9_0)
{
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
@@ -737,7 +737,7 @@ static void sub_8046C78(struct Sprite *sprite)
}
if (!IsDoubleBattle() || !ewram17840.unk9_0)
r4_2 = 0;
- else if (r5 == GetBankByIdentity(0) || r5 == GetBankByIdentity(1))
+ else if (r5 == GetBattlerAtPosition(0) || r5 == GetBattlerAtPosition(1))
r4_2 = 1;
else
r4_2 = 2;
@@ -815,7 +815,7 @@ static void sub_8046FBC(struct Sprite *sprite)
{
gDoingBattleAnim = 0;
m4aMPlayAllStop();
- PlaySE(BGM_FANFA5);
+ PlaySE(MUS_FANFA5);
}
else if (sprite->data[4] == 315)
{
@@ -830,8 +830,8 @@ static void sub_8046FBC(struct Sprite *sprite)
static void sub_8047074(struct Sprite *sprite)
{
sprite->data[0] = 25;
- sprite->data[2] = GetBankPosition(sprite->data[6], 2);
- sprite->data[4] = GetBankPosition(sprite->data[6], 3) + 24;
+ sprite->data[2] = GetBattlerSpriteCoord(sprite->data[6], 2);
+ sprite->data[4] = GetBattlerSpriteCoord(sprite->data[6], 3) + 24;
sprite->data[5] = -30;
sprite->oam.affineParam = sprite->data[6];
InitAnimSpriteTranslationOverDuration(sprite);
@@ -885,7 +885,7 @@ static void sub_80470C4(struct Sprite *sprite)
sprite->data[6] = sprite->oam.affineParam & 0xFF;
sprite->data[0] = 0;
if (IsDoubleBattle() && ewram17840.unk9_0
- && sprite->data[6] == GetBankByIdentity(2))
+ && sprite->data[6] == GetBattlerAtPosition(2))
sprite->callback = sub_8047230;
else
sprite->callback = sub_8046C78;
@@ -910,7 +910,7 @@ static void sub_8047254(struct Sprite *sprite)
{
sprite->data[0] = 0;
if (IsDoubleBattle() && ewram17840.unk9_0
- && sprite->data[6] == GetBankByIdentity(3))
+ && sprite->data[6] == GetBattlerAtPosition(3))
sprite->callback = sub_8047230;
else
sprite->callback = sub_8046C78;
@@ -1102,7 +1102,7 @@ void sub_804777C(u8 a)
sprite->pos2.x = 0x73;
sprite->pos2.y = 0;
sprite->callback = sub_8047830;
- if (GetBankSide(a) != 0)
+ if (GetBattlerSide(a) != 0)
{
sprite->data[0] = -sprite->data[0];
sprite->data[1] = -sprite->data[1];
@@ -1110,7 +1110,7 @@ void sub_804777C(u8 a)
sprite->pos2.y = -sprite->pos2.y;
}
gSprites[sprite->data[5]].callback(&gSprites[sprite->data[5]]);
- if (GetBankIdentity(a) == 2)
+ if (GetBattlerPosition(a) == 2)
sprite->callback = sub_804780C;
}
@@ -1187,8 +1187,8 @@ void sub_804794C(u8 a)
static u16 sub_8047978(u8 a)
{
- if (GetBankSide(a) == 0)
- return GetMonData(&gPlayerParty[gBattlePartyID[a]], MON_DATA_POKEBALL);
+ if (GetBattlerSide(a) == 0)
+ return GetMonData(&gPlayerParty[gBattlerPartyIndexes[a]], MON_DATA_POKEBALL);
else
- return GetMonData(&gEnemyParty[gBattlePartyID[a]], MON_DATA_POKEBALL);
+ return GetMonData(&gEnemyParty[gBattlerPartyIndexes[a]], MON_DATA_POKEBALL);
}
diff --git a/src/battle/reshow_battle_screen.c b/src/battle/reshow_battle_screen.c
index 2235a2bbf..bc4d394f0 100644
--- a/src/battle/reshow_battle_screen.c
+++ b/src/battle/reshow_battle_screen.c
@@ -14,14 +14,14 @@ extern struct Window gUnknown_03004210;
extern u8 gReservedSpritePaletteCount;
extern u8 gActionSelectionCursor[4];
extern u8 gBankInMenu;
-extern u16 gBattlePartyID[4];
-extern u8 gNoOfAllBanks;
+extern u16 gBattlerPartyIndexes[4];
+extern u8 gBattlersCount;
extern u16 gBattleTypeFlags;
extern u8 gBankSpriteIds[4];
extern u8 gBattleMonForms[4];
extern u8 gHealthboxIDs[4];
-bool8 sub_800E414(u8 a0);
+bool8 LoadChosenBattleElement(u8 a0);
bool8 sub_8031C30(u8 a0);
void sub_8031EE8(void);
void sub_80327CC(void);
@@ -89,7 +89,7 @@ static void CB2_ReshowBattleScreenAfterMenu(void)
}
break;
case 2:
- if (!sub_800E414(gHelperState))
+ if (!LoadChosenBattleElement(gHelperState))
{
gHelperState++;
gReshowState--;
@@ -163,14 +163,14 @@ static void CB2_ReshowBattleScreenAfterMenu(void)
sub_80327CC();
- opponentBank = GetBankByIdentity(1);
- species = GetMonData(&gEnemyParty[gBattlePartyID[opponentBank]], MON_DATA_SPECIES);
+ opponentBank = GetBattlerAtPosition(1);
+ species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[opponentBank]], MON_DATA_SPECIES);
sub_8032984(opponentBank, species);
if (IsDoubleBattle())
{
- opponentBank = GetBankByIdentity(3);
- species = GetMonData(&gEnemyParty[gBattlePartyID[opponentBank]], MON_DATA_SPECIES);
+ opponentBank = GetBattlerAtPosition(3);
+ species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[opponentBank]], MON_DATA_SPECIES);
sub_8032984(opponentBank, species);
}
sub_802E3E4(gActionSelectionCursor[gBankInMenu], 0);
@@ -197,12 +197,12 @@ static void sub_807B06C(void)
static bool8 LoadAppropiateBankSprite(u8 bank)
{
- if (bank < gNoOfAllBanks)
+ if (bank < gBattlersCount)
{
- if (GetBankSide(bank))
+ if (GetBattlerSide(bank))
{
if (!ewram17800[bank].substituteSprite)
- BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[bank]], bank);
+ BattleLoadOpponentMonSprite(&gEnemyParty[gBattlerPartyIndexes[bank]], bank);
else
BattleLoadSubstituteSprite(bank, 0);
}
@@ -211,7 +211,7 @@ static bool8 LoadAppropiateBankSprite(u8 bank)
else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL && bank == 0)
LoadPlayerTrainerBankSprite(2, 0);
else if (!ewram17800[bank].substituteSprite)
- BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[bank]], bank);
+ BattleLoadPlayerMonSprite(&gPlayerParty[gBattlerPartyIndexes[bank]], bank);
else
BattleLoadSubstituteSprite(bank, 0);
@@ -222,7 +222,7 @@ static bool8 LoadAppropiateBankSprite(u8 bank)
static void sub_807B184(u8 bank)
{
- if (bank < gNoOfAllBanks)
+ if (bank < gBattlersCount)
{
u8 posY;
@@ -230,21 +230,21 @@ static void sub_807B184(u8 bank)
posY = sub_8077F7C(bank);
else
posY = sub_8077F68(bank);
- if (GetBankSide(bank))
+ if (GetBattlerSide(bank))
{
- if (GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_HP) == 0)
+ if (GetMonData(&gEnemyParty[gBattlerPartyIndexes[bank]], MON_DATA_HP) == 0)
return;
- GetMonSpriteTemplate_803C56C(GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_SPECIES), GetBankIdentity(bank));
- gBankSpriteIds[bank] = CreateSprite(&gUnknown_02024E8C, GetBankPosition(bank, 2), posY, sub_8079E90(bank));
+ GetMonSpriteTemplate_803C56C(GetMonData(&gEnemyParty[gBattlerPartyIndexes[bank]], MON_DATA_SPECIES), GetBattlerPosition(bank));
+ gBankSpriteIds[bank] = CreateSprite(&gUnknown_02024E8C, GetBattlerSpriteCoord(bank, 2), posY, sub_8079E90(bank));
gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank;
gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy;
gSprites[gBankSpriteIds[bank]].data[0] = bank;
- gSprites[gBankSpriteIds[bank]].data[2] = GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_SPECIES);
+ gSprites[gBankSpriteIds[bank]].data[2] = GetMonData(&gEnemyParty[gBattlerPartyIndexes[bank]], MON_DATA_SPECIES);
StartSpriteAnim(&gSprites[gBankSpriteIds[bank]], gBattleMonForms[bank]);
}
else if (gBattleTypeFlags & BATTLE_TYPE_SAFARI && bank == 0)
{
- GetMonSpriteTemplate_803C5A0(gSaveBlock2.playerGender, GetBankIdentity(0));
+ GetMonSpriteTemplate_803C5A0(gSaveBlock2.playerGender, GetBattlerPosition(0));
gBankSpriteIds[bank] = CreateSprite(&gUnknown_02024E8C, 0x50,
(8 - gTrainerBackPicCoords[gSaveBlock2.playerGender].coords) * 4 + 80,
sub_8079E90(0));
@@ -254,7 +254,7 @@ static void sub_807B184(u8 bank)
}
else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL && bank == 0)
{
- GetMonSpriteTemplate_803C5A0(2, GetBankIdentity(0));
+ GetMonSpriteTemplate_803C5A0(2, GetBattlerPosition(0));
gBankSpriteIds[bank] = CreateSprite(&gUnknown_02024E8C, 0x50,
(8 - gTrainerBackPicCoords[2].coords) * 4 + 80,
sub_8079E90(0));
@@ -264,14 +264,14 @@ static void sub_807B184(u8 bank)
}
else
{
- if (GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_HP) == 0)
+ if (GetMonData(&gPlayerParty[gBattlerPartyIndexes[bank]], MON_DATA_HP) == 0)
return;
- GetMonSpriteTemplate_803C56C(GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_SPECIES), GetBankIdentity(bank));
- gBankSpriteIds[bank] = CreateSprite(&gUnknown_02024E8C, GetBankPosition(bank, 2), posY, sub_8079E90(bank));
+ GetMonSpriteTemplate_803C56C(GetMonData(&gPlayerParty[gBattlerPartyIndexes[bank]], MON_DATA_SPECIES), GetBattlerPosition(bank));
+ gBankSpriteIds[bank] = CreateSprite(&gUnknown_02024E8C, GetBattlerSpriteCoord(bank, 2), posY, sub_8079E90(bank));
gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank;
gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy;
gSprites[gBankSpriteIds[bank]].data[0] = bank;
- gSprites[gBankSpriteIds[bank]].data[2] = GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_SPECIES);
+ gSprites[gBankSpriteIds[bank]].data[2] = GetMonData(&gPlayerParty[gBattlerPartyIndexes[bank]], MON_DATA_SPECIES);
StartSpriteAnim(&gSprites[gBankSpriteIds[bank]], gBattleMonForms[bank]);
}
gSprites[gBankSpriteIds[bank]].invisible = ewram17800[bank].invisible;
@@ -280,7 +280,7 @@ static void sub_807B184(u8 bank)
static void sub_807B508(u8 bank)
{
- if (bank < gNoOfAllBanks)
+ if (bank < gBattlersCount)
{
u8 healthboxID;
if (gBattleTypeFlags & BATTLE_TYPE_SAFARI && bank == 0)
@@ -292,24 +292,24 @@ static void sub_807B508(u8 bank)
gHealthboxIDs[bank] = healthboxID;
sub_8043F44(bank);
sub_8043DFC(healthboxID);
- if (GetBankSide(bank))
- sub_8045A5C(gHealthboxIDs[bank], &gEnemyParty[gBattlePartyID[bank]], 0);
+ if (GetBattlerSide(bank))
+ sub_8045A5C(gHealthboxIDs[bank], &gEnemyParty[gBattlerPartyIndexes[bank]], 0);
else if (gBattleTypeFlags & BATTLE_TYPE_SAFARI)
- sub_8045A5C(gHealthboxIDs[bank], &gPlayerParty[gBattlePartyID[bank]], 10);
+ sub_8045A5C(gHealthboxIDs[bank], &gPlayerParty[gBattlerPartyIndexes[bank]], 10);
else
- sub_8045A5C(gHealthboxIDs[bank], &gPlayerParty[gBattlePartyID[bank]], 0);
- if (GetBankIdentity(bank) == 3 || GetBankIdentity(bank) == 2)
+ sub_8045A5C(gHealthboxIDs[bank], &gPlayerParty[gBattlerPartyIndexes[bank]], 0);
+ if (GetBattlerPosition(bank) == 3 || GetBattlerPosition(bank) == 2)
nullsub_11(gHealthboxIDs[bank], 1);
else
nullsub_11(gHealthboxIDs[bank], 0);
- if (GetBankSide(bank))
+ if (GetBattlerSide(bank))
{
- if (GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_HP) == 0)
+ if (GetMonData(&gEnemyParty[gBattlerPartyIndexes[bank]], MON_DATA_HP) == 0)
sub_8043DB0(healthboxID);
}
else if (!(gBattleTypeFlags & BATTLE_TYPE_SAFARI))
{
- if (GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_HP) == 0)
+ if (GetMonData(&gPlayerParty[gBattlerPartyIndexes[bank]], MON_DATA_HP) == 0)
sub_8043DB0(healthboxID);
}
}
diff --git a/src/battle_tower.c b/src/battle_tower.c
index 8c44b71a3..4de8eba1f 100644
--- a/src/battle_tower.c
+++ b/src/battle_tower.c
@@ -10,7 +10,7 @@
#include "item.h"
#include "constants/items.h"
#include "main.h"
-#include "constants/map_objects.h"
+#include "constants/event_objects.h"
#include "constants/moves.h"
#include "new_game.h"
#include "overworld.h"
@@ -163,60 +163,60 @@ static const u8 sFemaleTrainerClasses[] =
static const u8 sMaleTrainerGfxIds[] =
{
- MAP_OBJ_GFX_HIKER,
- MAP_OBJ_GFX_TUBER_M,
- MAP_OBJ_GFX_MAN_4,
- MAP_OBJ_GFX_BOY_4,
- MAP_OBJ_GFX_MANIAC,
- MAP_OBJ_GFX_RUNNING_TRIATHLETE_M,
- MAP_OBJ_GFX_BLACK_BELT,
- MAP_OBJ_GFX_MAN_6,
- MAP_OBJ_GFX_MAN_6,
- MAP_OBJ_GFX_CAMPER,
- MAP_OBJ_GFX_MANIAC,
- MAP_OBJ_GFX_PSYCHIC_M,
- MAP_OBJ_GFX_GENTLEMAN,
- MAP_OBJ_GFX_SCHOOL_KID_M,
- MAP_OBJ_GFX_MAN_3,
- MAP_OBJ_GFX_OLD_MAN_1,
- MAP_OBJ_GFX_YOUNGSTER,
- MAP_OBJ_GFX_FISHERMAN,
- MAP_OBJ_GFX_CYCLING_TRIATHLETE_M,
- MAP_OBJ_GFX_RUNNING_TRIATHLETE_M,
- MAP_OBJ_GFX_RUNNING_TRIATHLETE_M,
- MAP_OBJ_GFX_MAN_4,
- MAP_OBJ_GFX_MAN_6,
- MAP_OBJ_GFX_LITTLE_BOY_1,
- MAP_OBJ_GFX_SAILOR,
- MAP_OBJ_GFX_MANIAC,
- MAP_OBJ_GFX_MAN_5,
- MAP_OBJ_GFX_CAMPER,
- MAP_OBJ_GFX_BUG_CATCHER,
- MAP_OBJ_GFX_HIKER,
+ EVENT_OBJ_GFX_HIKER,
+ EVENT_OBJ_GFX_TUBER_M,
+ EVENT_OBJ_GFX_MAN_4,
+ EVENT_OBJ_GFX_BOY_4,
+ EVENT_OBJ_GFX_MANIAC,
+ EVENT_OBJ_GFX_RUNNING_TRIATHLETE_M,
+ EVENT_OBJ_GFX_BLACK_BELT,
+ EVENT_OBJ_GFX_MAN_6,
+ EVENT_OBJ_GFX_MAN_6,
+ EVENT_OBJ_GFX_CAMPER,
+ EVENT_OBJ_GFX_MANIAC,
+ EVENT_OBJ_GFX_PSYCHIC_M,
+ EVENT_OBJ_GFX_GENTLEMAN,
+ EVENT_OBJ_GFX_SCHOOL_KID_M,
+ EVENT_OBJ_GFX_MAN_3,
+ EVENT_OBJ_GFX_OLD_MAN_1,
+ EVENT_OBJ_GFX_YOUNGSTER,
+ EVENT_OBJ_GFX_FISHERMAN,
+ EVENT_OBJ_GFX_CYCLING_TRIATHLETE_M,
+ EVENT_OBJ_GFX_RUNNING_TRIATHLETE_M,
+ EVENT_OBJ_GFX_RUNNING_TRIATHLETE_M,
+ EVENT_OBJ_GFX_MAN_4,
+ EVENT_OBJ_GFX_MAN_6,
+ EVENT_OBJ_GFX_LITTLE_BOY_1,
+ EVENT_OBJ_GFX_SAILOR,
+ EVENT_OBJ_GFX_MANIAC,
+ EVENT_OBJ_GFX_MAN_5,
+ EVENT_OBJ_GFX_CAMPER,
+ EVENT_OBJ_GFX_BUG_CATCHER,
+ EVENT_OBJ_GFX_HIKER,
};
static const u8 sFemaleTrainerGfxIds[] =
{
- MAP_OBJ_GFX_WOMAN_3,
- MAP_OBJ_GFX_TUBER_F,
- MAP_OBJ_GFX_WOMAN_7,
- MAP_OBJ_GFX_WOMAN_1,
- MAP_OBJ_GFX_WOMAN_3,
- MAP_OBJ_GFX_BEAUTY,
- MAP_OBJ_GFX_LASS,
- MAP_OBJ_GFX_GIRL_3,
- MAP_OBJ_GFX_WOMAN_2,
- MAP_OBJ_GFX_OLD_WOMAN_1,
- MAP_OBJ_GFX_CYCLING_TRIATHLETE_F,
- MAP_OBJ_GFX_RUNNING_TRIATHLETE_F,
- MAP_OBJ_GFX_RUNNING_TRIATHLETE_F,
- MAP_OBJ_GFX_GIRL_3,
- MAP_OBJ_GFX_WOMAN_7,
- MAP_OBJ_GFX_RUNNING_TRIATHLETE_F,
- MAP_OBJ_GFX_PICNICKER,
- MAP_OBJ_GFX_WOMAN_3,
- MAP_OBJ_GFX_PICNICKER,
- MAP_OBJ_GFX_LASS,
+ EVENT_OBJ_GFX_WOMAN_3,
+ EVENT_OBJ_GFX_TUBER_F,
+ EVENT_OBJ_GFX_WOMAN_7,
+ EVENT_OBJ_GFX_WOMAN_1,
+ EVENT_OBJ_GFX_WOMAN_3,
+ EVENT_OBJ_GFX_BEAUTY,
+ EVENT_OBJ_GFX_LASS,
+ EVENT_OBJ_GFX_GIRL_3,
+ EVENT_OBJ_GFX_WOMAN_2,
+ EVENT_OBJ_GFX_OLD_WOMAN_1,
+ EVENT_OBJ_GFX_CYCLING_TRIATHLETE_F,
+ EVENT_OBJ_GFX_RUNNING_TRIATHLETE_F,
+ EVENT_OBJ_GFX_RUNNING_TRIATHLETE_F,
+ EVENT_OBJ_GFX_GIRL_3,
+ EVENT_OBJ_GFX_WOMAN_7,
+ EVENT_OBJ_GFX_RUNNING_TRIATHLETE_F,
+ EVENT_OBJ_GFX_PICNICKER,
+ EVENT_OBJ_GFX_WOMAN_3,
+ EVENT_OBJ_GFX_PICNICKER,
+ EVENT_OBJ_GFX_LASS,
};
const u16 gBattleTowerBannedSpecies[] =
@@ -284,7 +284,6 @@ extern u16 gTrainerBattleOpponent;
extern u16 gBattleTypeFlags;
extern u8 gSelectedOrderFromParty[];
extern u8 gBattleOutcome;
-extern struct Pokemon gUnknown_030042FC[];
extern struct BattlePokemon gBattleMons[];
void sub_8134548(void)
@@ -514,7 +513,7 @@ bool8 sub_81346F4(void)
// }
// }
-__attribute__((naked))
+NAKED
void sub_81347F8(void)
{
asm(".syntax unified\n\
@@ -814,7 +813,7 @@ void SetBattleTowerTrainerGfxId(u8 trainerIndex)
return;
}
- VarSet(VAR_OBJ_GFX_ID_0, MAP_OBJ_GFX_BOY_1);
+ VarSet(VAR_OBJ_GFX_ID_0, EVENT_OBJ_GFX_BOY_1);
}
void SetEReaderTrainerGfxId(void)
@@ -906,7 +905,7 @@ void SetEReaderTrainerGfxId(void)
// gSaveBlock2.battleTower.records[var2[(Random() % l)]] = *record;
// }
-__attribute__((naked))
+NAKED
void sub_8134AC0(struct BattleTowerRecord *record)
{
asm(".syntax unified\n\
@@ -1795,7 +1794,7 @@ void sub_8135AC4(void)
playerRecord->greeting[i] = gSaveBlock1.easyChats.unk2B28[i];
for (i = 0; i < 3; i++)
- sub_803AF78(&gUnknown_030042FC[gSaveBlock2.battleTower.selectedPartyMons[i]], &playerRecord->party[i]);
+ sub_803AF78(&gPlayerParty[gSaveBlock2.battleTower.selectedPartyMons[i] - 1], &playerRecord->party[i]);
SetBattleTowerRecordChecksum(&gSaveBlock2.battleTower.playerRecord);
SaveCurrentWinStreak();
diff --git a/src/berry.c b/src/berry.c
index 9313c458b..323cb39cf 100644
--- a/src/berry.c
+++ b/src/berry.c
@@ -1,4 +1,5 @@
#include "global.h"
+#include "constants/items.h"
#include "berry.h"
#include "field_control_avatar.h"
#include "event_object_movement.h"
@@ -6,24 +7,12 @@
#include "item.h"
#include "item_menu.h"
#include "item_use.h"
-#include "constants/items.h"
#include "main.h"
#include "menu.h"
#include "random.h"
#include "task.h"
#include "text.h"
-#define BERRY_NAME_LENGTH 6
-#define BERRY_REGROW_LIMIT 10
-#define MAX_BERRY_TREES 128
-
-#define BERRY_NONE 0
-#define FIRST_BERRY ITEM_CHERI_BERRY
-#define LAST_BERRY ITEM_ENIGMA_BERRY
-
-#define GETBERRYID(berry) ((berry - FIRST_BERRY) + 1)
-#define GETITEMID(berry) ((berry + FIRST_BERRY) - 1)
-
#ifdef ENGLISH
#define NAME_CHERI_BERRY _("CHERI")
#define NAME_CHESTO_BERRY _("CHESTO")
@@ -1085,7 +1074,7 @@ extern u8 gUnknown_Debug_839B6CE[];
static const u8 gUnknown_Debug_083F7F84[] = _("そとから きた きのみ");
static const u8 gUnknown_Debug_083F7F90[] = _("ただいま かいはつちゅう");
-void debug_sub_80C2C18(u8 *name, u8 holdEffect, u8 holdEffectParam)
+void debug_sub_80C2C18(const u8 *name, u8 holdEffect, u8 holdEffectParam)
{
s32 i;
@@ -1161,11 +1150,11 @@ static struct BerryTree *GetBerryTreeInfo(u8 id)
// this was called because the berry script was successful: meaning the player chose to
// water the tree. We need to check for the current tree stage and set the appropriate
// water flag to true.
-bool32 FieldObjectInteractionWaterBerryTree(void)
+bool32 EventObjectInteractionWaterBerryTree(void)
{
// GetBerryTreeInfo does not sanitize the tree retrieved, but there are no known
// instances where this can cause problems.
- struct BerryTree *tree = GetBerryTreeInfo(FieldObjectGetBerryTreeId(gSelectedMapObject));
+ struct BerryTree *tree = GetBerryTreeInfo(EventObjectGetBerryTreeId(gSelectedEventObject));
switch (tree->stage)
{
@@ -1189,8 +1178,8 @@ bool32 FieldObjectInteractionWaterBerryTree(void)
bool8 IsPlayerFacingUnplantedSoil(void)
{
- if (GetFieldObjectScriptPointerPlayerFacing() == S_BerryTree
- && GetStageByBerryTreeId(FieldObjectGetBerryTreeId(gSelectedMapObject)) == BERRY_STAGE_NO_BERRY)
+ if (GetEventObjectScriptPointerPlayerFacing() == S_BerryTree
+ && GetStageByBerryTreeId(EventObjectGetBerryTreeId(gSelectedEventObject)) == BERRY_STAGE_NO_BERRY)
return TRUE;
else
return FALSE;
@@ -1198,10 +1187,10 @@ bool8 IsPlayerFacingUnplantedSoil(void)
bool8 TryToWaterBerryTree(void)
{
- if (GetFieldObjectScriptPointerPlayerFacing() != S_BerryTree)
+ if (GetEventObjectScriptPointerPlayerFacing() != S_BerryTree)
return FALSE;
else
- return FieldObjectInteractionWaterBerryTree();
+ return EventObjectInteractionWaterBerryTree();
}
void ClearBerryTrees(void)
@@ -1424,7 +1413,7 @@ static u16 GetStageDurationByBerryType(u8 berry)
return GetBerryInfo(berry)->stageDuration * 60;
}
-void FieldObjectInteractionGetBerryTreeData(void)
+void EventObjectInteractionGetBerryTreeData(void)
{
u8 id;
u8 berry;
@@ -1432,7 +1421,7 @@ void FieldObjectInteractionGetBerryTreeData(void)
u8 group;
u8 num;
- id = FieldObjectGetBerryTreeId(gSelectedMapObject);
+ id = EventObjectGetBerryTreeId(gSelectedEventObject);
berry = GetBerryTypeByBerryTreeId(id);
ResetBerryTreeSparkleFlag(id);
localId = gSpecialVar_LastTalked;
@@ -1457,25 +1446,25 @@ void Berry_FadeAndGoToBerryBagMenu(void)
SetMainCallback2(sub_80A68CC);
}
-void FieldObjectInteractionPlantBerryTree(void)
+void EventObjectInteractionPlantBerryTree(void)
{
u8 berry = ItemIdToBerryType(gSpecialVar_ItemId);
- PlantBerryTree(FieldObjectGetBerryTreeId(gSelectedMapObject), berry, 1, TRUE);
- FieldObjectInteractionGetBerryTreeData();
+ PlantBerryTree(EventObjectGetBerryTreeId(gSelectedEventObject), berry, 1, TRUE);
+ EventObjectInteractionGetBerryTreeData();
}
-void FieldObjectInteractionPickBerryTree(void)
+void EventObjectInteractionPickBerryTree(void)
{
- u8 id = FieldObjectGetBerryTreeId(gSelectedMapObject);
+ u8 id = EventObjectGetBerryTreeId(gSelectedEventObject);
u8 berry = GetBerryTypeByBerryTreeId(id);
gSpecialVar_0x8004 = AddBagItem(BerryTypeToItemId(berry), GetBerryCountByBerryTreeId(id));
}
-void FieldObjectInteractionRemoveBerryTree(void)
+void EventObjectInteractionRemoveBerryTree(void)
{
- RemoveBerryTree(FieldObjectGetBerryTreeId(gSelectedMapObject));
+ RemoveBerryTree(EventObjectGetBerryTreeId(gSelectedEventObject));
sub_8060288(gSpecialVar_LastTalked, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup);
}
@@ -1504,13 +1493,13 @@ static const u8 gUnknown_Debug_083F7FD3[] = _("");
u8* DebugOpenBerryInfo(void)
{
- if (GetFieldObjectScriptPointerPlayerFacing() != S_BerryTree)
+ if (GetEventObjectScriptPointerPlayerFacing() != S_BerryTree)
{
return NULL;
}
else
{
- u32 berryTreeId = FieldObjectGetBerryTreeId(gSelectedMapObject);
+ u32 berryTreeId = EventObjectGetBerryTreeId(gSelectedEventObject);
struct BerryTree *berryTree = GetBerryTreeInfo(berryTreeId);
s32 i;
@@ -1552,14 +1541,14 @@ void ResetBerryTreeSparkleFlags(void)
top = cam_top + 3;
right = cam_left + 14;
bottom = top + 8;
- for (i = 0; i < (u8)ARRAY_COUNT(gSaveBlock1.mapObjects); i++)
+ for (i = 0; i < (u8)ARRAY_COUNT(gSaveBlock1.eventObjects); i++)
{
- if (gMapObjects[i].active && gMapObjects[i].animPattern == 12) // is the object an active berry tree?
+ if (gEventObjects[i].active && gEventObjects[i].movementType == MOVEMENT_TYPE_BERRY_TREE_GROWTH)
{
- cam_left = gMapObjects[i].coords2.x;
- cam_top = gMapObjects[i].coords2.y;
+ cam_left = gEventObjects[i].currentCoords.x;
+ cam_top = gEventObjects[i].currentCoords.y;
if (left <= cam_left && cam_left <= right && top <= cam_top && cam_top <= bottom)
- ResetBerryTreeSparkleFlag(gMapObjects[i].trainerRange_berryTreeId);
+ ResetBerryTreeSparkleFlag(gEventObjects[i].trainerRange_berryTreeId);
}
}
}
diff --git a/src/berry_blender.c b/src/berry_blender.c
index bf634a49f..8bf669a92 100644
--- a/src/berry_blender.c
+++ b/src/berry_blender.c
@@ -1,52 +1,27 @@
#include "global.h"
+#include "berry.h"
#include "decompress.h"
-#include "palette.h"
#include "event_data.h"
+#include "ewram.h"
+#include "item.h"
+#include "link.h"
+#include "m4a.h"
#include "main.h"
-#include "text_window.h"
#include "menu.h"
-#include "strings2.h"
-#include "sound.h"
-#include "constants/songs.h"
-#include "berry.h"
-#include "string_util.h"
-#include "link.h"
-#include "task.h"
+#include "menu_cursor.h"
#include "overworld.h"
-#include "item.h"
-#include "constants/items.h"
+#include "palette.h"
+#include "pokeblock.h"
#include "random.h"
#include "save.h"
-#include "menu_cursor.h"
+#include "sound.h"
+#include "string_util.h"
+#include "strings2.h"
+#include "task.h"
+#include "text_window.h"
#include "trig.h"
-#include "pokeblock.h"
-#include "ewram.h"
-
-//needed to match Blender_ControlHitPitch
-struct MusicPlayerInfo
-{
- struct SongHeader *songHeader;
- u32 status;
- u8 trackCount;
- u8 priority;
- u8 cmd;
- u8 unk_B;
- u32 clock;
- u8 gap[8];
- u8 *memAccArea;
- u16 tempoD;
- u16 tempoU;
- u16 tempoI;
- u16 tempoC;
- u16 fadeOI;
- u16 fadeOC;
- u16 fadeOV;
- struct MusicPlayerTrack *tracks;
- struct ToneData *tone;
- u32 ident;
- u32 func;
- u32 intp;
-};
+#include "constants/songs.h"
+#include "constants/items.h"
#define BLENDER_SCORE_BEST 0
#define BLENDER_SCORE_GOOD 1
@@ -945,7 +920,7 @@ static void sub_804E56C(void)
}
break;
case 2:
- BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
sub_8051474();
gBerryBlenderData->field_0++;
break;
@@ -965,7 +940,7 @@ static void sub_804E56C(void)
if (Menu_UpdateWindowText())
{
gBerryBlenderData->field_0++;
- BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
}
break;
case 6:
@@ -1137,7 +1112,7 @@ static void sub_804E9F8(void)
gBerryBlenderData->field_0++;
break;
case 3:
- BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
gBerryBlenderData->field_0++;
break;
case 4:
@@ -1270,7 +1245,7 @@ static void sub_804E9F8(void)
{
gBerryBlenderData->field_178 = GetCurrentMapMusic();
}
- PlayBGM(BGM_CYCLING);
+ PlayBGM(MUS_CYCLING);
break;
case 100:
Menu_DrawStdWindowFrame(0, 13, 29, 19);
@@ -1432,7 +1407,7 @@ static void sub_804F378(void)
gBerryBlenderData->field_0++;
break;
case 3:
- BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
gBerryBlenderData->field_0++;
gBerryBlenderData->framesToWait = 0;
break;
@@ -1532,7 +1507,7 @@ static void sub_804F378(void)
{
gBerryBlenderData->field_178 = GetCurrentMapMusic();
}
- PlayBGM(BGM_CYCLING);
+ PlayBGM(MUS_CYCLING);
PlaySE(SE_MOTER);
Blender_ControlHitPitch();
break;
@@ -1921,14 +1896,14 @@ u32 Blender_GetPokeblockColor(struct BlenderBerry* berries, s16* a1, u8 playersN
r6++;
}
if (r6 == 5 || a3 > 3)
- return 12;
+ return PBLOCK_CLR_BLACK;
for (i = 0; i < playersNo; i++)
{
for (r6 = 0; r6 < playersNo; r6++)
{
if (berries[i].itemID == berries[r6].itemID && i != r6
&& (berries[i].itemID != ITEM_ENIGMA_BERRY || sub_80502A4(berries, i, r6)))
- return 12;
+ return PBLOCK_CLR_BLACK;
}
}
r2 = 0;
@@ -1938,24 +1913,24 @@ u32 Blender_GetPokeblockColor(struct BlenderBerry* berries, s16* a1, u8 playersN
r2++;
}
if (r2 > 3)
- return 13;
+ return PBLOCK_CLR_WHITE;
if (r2 == 3)
- return 11;
+ return PBLOCK_CLR_GRAY;
for (i = 0; i < 5; i++)
{
if (vars[i] > 50)
- return 14;
+ return PBLOCK_CLR_GOLD;
}
if (r2 == 1 && vars[0] > 0)
- return 1;
+ return PBLOCK_CLR_RED;
if (r2 == 1 && vars[1] > 0)
- return 2;
+ return PBLOCK_CLR_BLUE;
if (r2 == 1 && vars[2] > 0)
- return 3;
+ return PBLOCK_CLR_PINK;
if (r2 == 1 && vars[3] > 0)
- return 4;
+ return PBLOCK_CLR_GREEN;
if (r2 == 1 && vars[4] > 0)
- return 5;
+ return PBLOCK_CLR_YELLOW;
if (r2 == 2)
{
s32 var = 0;
@@ -1967,28 +1942,28 @@ u32 Blender_GetPokeblockColor(struct BlenderBerry* berries, s16* a1, u8 playersN
if (vars[gUnknown_03000520[0]] >= vars[gUnknown_03000520[1]])
{
if (gUnknown_03000520[0] == 0)
- return (gUnknown_03000520[1] << 16) | 6;
+ return (gUnknown_03000520[1] << 16) | PBLOCK_CLR_PURPLE;
if (gUnknown_03000520[0] == 1)
- return (gUnknown_03000520[1] << 16) | 7;
+ return (gUnknown_03000520[1] << 16) | PBLOCK_CLR_INDIGO;
if (gUnknown_03000520[0] == 2)
- return (gUnknown_03000520[1] << 16) | 8;
+ return (gUnknown_03000520[1] << 16) | PBLOCK_CLR_BROWN;
if (gUnknown_03000520[0] == 3)
- return (gUnknown_03000520[1] << 16) | 9;
+ return (gUnknown_03000520[1] << 16) | PBLOCK_CLR_LITEBLUE;
if (gUnknown_03000520[0] == 4)
- return (gUnknown_03000520[1] << 16) | 10;
+ return (gUnknown_03000520[1] << 16) | PBLOCK_CLR_OLIVE;
}
else
{
if (gUnknown_03000520[1] == 0)
- return (gUnknown_03000520[0] << 16) | 6;
+ return (gUnknown_03000520[0] << 16) | PBLOCK_CLR_PURPLE;
if (gUnknown_03000520[1] == 1)
- return (gUnknown_03000520[0] << 16) | 7;
+ return (gUnknown_03000520[0] << 16) | PBLOCK_CLR_INDIGO;
if (gUnknown_03000520[1] == 2)
- return (gUnknown_03000520[0] << 16) | 8;
+ return (gUnknown_03000520[0] << 16) | PBLOCK_CLR_BROWN;
if (gUnknown_03000520[1] == 3)
- return (gUnknown_03000520[0] << 16) | 9;
+ return (gUnknown_03000520[0] << 16) | PBLOCK_CLR_LITEBLUE;
if (gUnknown_03000520[1] == 4)
- return (gUnknown_03000520[0] << 16) | 10;
+ return (gUnknown_03000520[0] << 16) | PBLOCK_CLR_OLIVE;
}
}
return 0;
@@ -2479,7 +2454,7 @@ static void sub_8050E30(void)
case 9:
if (IsLinkTaskFinished())
{
- BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gBerryBlenderData->field_6F++;
}
break;
@@ -3039,24 +3014,24 @@ bool8 Blender_PrintBlendingResults(void)
textPtr[1] = CHAR_PERIOD;
textPtr[2] = CHAR_SPACE;
textPtr += 3;
- textPtr = sub_8072C74(textPtr, gLinkPlayers[place].name, 88, 0);
- sub_8072C74(textPtr, text[0], 157, 0);
+ textPtr = AlignStringInMenuWindow(textPtr, gLinkPlayers[place].name, 88, 0);
+ AlignStringInMenuWindow(textPtr, text[0], 157, 0);
Menu_PrintText(gBerryBlenderData->stringVar, 5, gUnknown_082165E9[gBerryBlenderData->playersNo] + (i * gUnknown_082165EE[gBerryBlenderData->playersNo]));
}
ConvertIntToDecimalStringN(text[0], gBerryBlenderData->max_RPM % 100, 2, 2);
textPtr = gBerryBlenderData->stringVar;
textPtr = StringCopy(textPtr, gOtherText_MaxSpeed);
- textPtr = sub_8072C14(textPtr, gBerryBlenderData->max_RPM / 100, 121, 1);
+ textPtr = AlignInt1InMenuWindow(textPtr, gBerryBlenderData->max_RPM / 100, 121, 1);
#ifdef ENGLISH
textPtr[0] = CHAR_SPACE;
textPtr[1] = CHAR_PERIOD;
textPtr[2] = CHAR_SPACE;
textPtr += 3;
- textPtr = sub_8072C74(textPtr, text[0], 142, 1);
+ textPtr = AlignStringInMenuWindow(textPtr, text[0], 142, 1);
#else
*textPtr++ = CHAR_COMMA;
- textPtr = sub_8072C74(textPtr, text[0], 136, 1);
+ textPtr = AlignStringInMenuWindow(textPtr, text[0], 136, 1);
#endif
StringCopy(textPtr, gOtherText_RPM);
Menu_PrintText(gBerryBlenderData->stringVar, 5, 13);
@@ -3070,13 +3045,13 @@ bool8 Blender_PrintBlendingResults(void)
textPtr = StringCopy(textPtr, gOtherText_RequiredTime);
#ifdef ENGLISH
- textPtr = sub_8072C74(textPtr, text[0], 102, 1);
+ textPtr = AlignStringInMenuWindow(textPtr, text[0], 102, 1);
#else
- textPtr = sub_8072C74(textPtr, text[0], 99, 1);
+ textPtr = AlignStringInMenuWindow(textPtr, text[0], 99, 1);
#endif
textPtr = StringAppend(textPtr, gOtherText_Min);
- textPtr = sub_8072C74(textPtr, text[1], 136, 1);
+ textPtr = AlignStringInMenuWindow(textPtr, text[1], 136, 1);
StringCopy(textPtr, gOtherText_Sec);
Menu_PrintText(gBerryBlenderData->stringVar, 5, 15);
@@ -3108,7 +3083,7 @@ bool8 Blender_PrintBlendingResults(void)
#endif
MenuPrintMessage(gBerryBlenderData->stringVar, 1, 15);
RemoveBagItem(gSpecialVar_ItemId, 1);
- sub_810CA34(&pokeblock);
+ GivePokeblock(&pokeblock);
gBerryBlenderData->field_0++;
break;
case 6:
@@ -3247,9 +3222,9 @@ static bool8 Blender_PrintBlendingRanking(void)
txtPtr = StringCopy(txtPtr, gLinkPlayers[place].name);
- txtPtr = sub_8072C14(txtPtr, gBerryBlenderData->scores[place][BLENDER_SCORE_BEST], 108, 1);
- txtPtr = sub_8072C14(txtPtr, gBerryBlenderData->scores[place][BLENDER_SCORE_GOOD], 132, 1);
- txtPtr = sub_8072C14(txtPtr, gBerryBlenderData->scores[place][BLENDER_SCORE_MISS], 156, 1);
+ txtPtr = AlignInt1InMenuWindow(txtPtr, gBerryBlenderData->scores[place][BLENDER_SCORE_BEST], 108, 1);
+ txtPtr = AlignInt1InMenuWindow(txtPtr, gBerryBlenderData->scores[place][BLENDER_SCORE_GOOD], 132, 1);
+ txtPtr = AlignInt1InMenuWindow(txtPtr, gBerryBlenderData->scores[place][BLENDER_SCORE_MISS], 156, 1);
Menu_PrintText(gBerryBlenderData->stringVar, 5, i * gUnknown_082165F3[gBerryBlenderData->playersNo] + 8);
}
@@ -3276,14 +3251,14 @@ static bool8 Blender_PrintBlendingRanking(void)
// debug menu goes here
-void unref_sub_80524BC(void)
+void debug_sub_80524BC(void)
{
ResetSpriteData();
FreeAllSpritePalettes();
ResetTasks();
SetVBlankCallback(VBlankCB1_BerryBlender);
- Text_LoadWindowTemplate(&gWindowTemplate_81E6CE4);
- InitMenuWindow(&gWindowTemplate_81E6CE4);
+ Text_LoadWindowTemplate(&gMenuTextWindowTemplate);
+ InitMenuWindow(&gMenuTextWindowTemplate);
SeedRng(gMain.vblankCounter1);
REG_DISPCNT = 0x1540;
RunTasks();
@@ -3528,7 +3503,7 @@ void ShowBerryBlenderRecordWindow(void)
for (i = 0; i < 3; i++)
{
u32 record = gSaveBlock1.berryBlenderRecords[i];
- u8* txtPtr = sub_8072C14(text, record / 100, 18, 1);
+ u8* txtPtr = AlignInt1InMenuWindow(text, record / 100, 18, 1);
#ifdef ENGLISH
txtPtr[0] = CHAR_SPACE;
@@ -3549,7 +3524,7 @@ static void sub_8052BD0(u8 taskID)
{
if (gTasks[taskID].data[0] == 0)
{
- PlayFanfare(BGM_FANFA1);
+ PlayFanfare(MUS_FANFA1);
gTasks[taskID].data[0]++;
}
if (IsFanfareTaskInactive())
diff --git a/src/berry_tag_screen.c b/src/berry_tag_screen.c
index 9fbfd0681..a8f797e28 100644
--- a/src/berry_tag_screen.c
+++ b/src/berry_tag_screen.c
@@ -157,7 +157,7 @@ static bool8 sub_8146058(void)
gMain.state += 1;
break;
case 12:
- BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
gPaletteFade.bufferTransferDisabled = 0;
SetMainCallback2(sub_8146014);
return TRUE;
@@ -238,7 +238,7 @@ static void sub_814640C(u8 taskId)
{
SetMainCallback2(sub_80A5B40);
sub_80A7DD4();
- gpu_pal_allocator_reset__manage_upper_four();
+ FreeAndReserveObjectSpritePalettes();
DestroyTask(taskId);
}
}
@@ -246,7 +246,7 @@ static void sub_814640C(u8 taskId)
static void sub_8146440(u8 taskId)
{
PlaySE(SE_SELECT);
- BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gTasks[taskId].func = sub_814640C;
}
diff --git a/src/bike.c b/src/bike.c
index 28439e6bb..41090a375 100644
--- a/src/bike.c
+++ b/src/bike.c
@@ -53,7 +53,7 @@ static void Bike_UpdateDirTimerHistory(u8);
static void Bike_UpdateABStartSelectHistory(u8);
static u8 Bike_DPadToDirection(u16);
static u8 get_some_collision(u8);
-static u8 Bike_CheckCollisionTryAdvanceCollisionCount(struct MapObject *, s16, s16, u8, u8);
+static u8 Bike_CheckCollisionTryAdvanceCollisionCount(struct EventObject *, s16, s16, u8, u8);
static bool8 IsRunningDisallowedByMetatile(u8);
static void Bike_TryAdvanceCyclingRoadCollisions();
static u8 CanBikeFaceDirOnMetatile(u8, u8);
@@ -153,7 +153,7 @@ static void MovePlayerOnMachBike(u8 direction, u16 newKeys, u16 heldKeys)
static u8 GetMachBikeTransition(u8 *dirTraveling)
{
// if the dir updated before this function, get the relevent new direction to check later.
- u8 direction = player_get_direction_upper_nybble();
+ u8 direction = GetPlayerMovementDirection();
// is the player standing still?
if (*dirTraveling == 0)
@@ -197,31 +197,31 @@ static void MachBikeTransition_FaceDirection(u8 direction)
static void MachBikeTransition_TurnDirection(u8 direction)
{
- struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+ struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
- if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E))
+ if (CanBikeFaceDirOnMetatile(direction, playerEventObj->currentMetatileBehavior))
{
PlayerTurnInPlace(direction);
Bike_SetBikeStill();
}
else
{
- MachBikeTransition_FaceDirection(playerMapObj->mapobj_unk_18);
+ MachBikeTransition_FaceDirection(playerEventObj->facingDirection);
}
}
static void MachBikeTransition_TrySpeedUp(u8 direction)
{
- struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+ struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
u8 collision;
- if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == FALSE)
+ if (CanBikeFaceDirOnMetatile(direction, playerEventObj->currentMetatileBehavior) == FALSE)
{
// we cannot go forward, so either slow down or, if we are stopped, idle face direction.
if (gPlayerAvatar.bikeSpeed)
- MachBikeTransition_TrySlowDown(playerMapObj->placeholder18);
+ MachBikeTransition_TrySlowDown(playerEventObj->movementDirection);
else
- MachBikeTransition_FaceDirection(playerMapObj->placeholder18);
+ MachBikeTransition_FaceDirection(playerEventObj->movementDirection);
}
else
{
@@ -301,7 +301,7 @@ static u8 CheckMovementInputAcroBike(u8 *newDirection, u16 newKeys, u16 heldKeys
static u8 AcroBikeHandleInputNormal(u8 *newDirection, u16 newKeys, u16 heldKeys)
{
- u8 direction = player_get_direction_upper_nybble();
+ u8 direction = GetPlayerMovementDirection();
gPlayerAvatar.bikeFrameCounter = 0;
if (*newDirection == DIR_NONE)
@@ -354,7 +354,7 @@ static u8 AcroBikeHandleInputTurning(u8 *newDirection, u16 newKeys, u16 heldKeys
Bike_SetBikeStill();
return ACRO_TRANS_TURN_DIRECTION;
}
- direction = player_get_direction_upper_nybble();
+ direction = GetPlayerMovementDirection();
if (*newDirection == AcroBike_GetJumpDirection())
{
Bike_SetBikeStill(); // Bike_SetBikeStill sets speed to standing, but the next line immediately overrides it. could have just reset acroBikeState to 0 here instead of wasting a jump.
@@ -381,10 +381,10 @@ static u8 AcroBikeHandleInputTurning(u8 *newDirection, u16 newKeys, u16 heldKeys
static u8 AcroBikeHandleInputWheelieStanding(u8 *newDirection, u16 newKeys, u16 heldKeys)
{
u8 direction;
- struct MapObject *playerMapObj;
+ struct EventObject *playerEventObj;
- direction = player_get_direction_upper_nybble();
- playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+ direction = GetPlayerMovementDirection();
+ playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
gPlayerAvatar.runningState = NOT_MOVING;
if (heldKeys & B_BUTTON)
@@ -393,7 +393,7 @@ static u8 AcroBikeHandleInputWheelieStanding(u8 *newDirection, u16 newKeys, u16
{
// B button was released.
gPlayerAvatar.bikeFrameCounter = 0;
- if (!MetatileBehavior_IsBumpySlope(playerMapObj->mapobj_unk_1E))
+ if (!MetatileBehavior_IsBumpySlope(playerEventObj->currentMetatileBehavior))
{
// Go back to normal on flat ground
*newDirection = direction;
@@ -428,15 +428,15 @@ static u8 AcroBikeHandleInputWheelieStanding(u8 *newDirection, u16 newKeys, u16
static u8 AcroBikeHandleInputBunnyHop(u8 *newDirection, u16 newKeys, u16 heldKeys)
{
u8 direction;
- struct MapObject *playerMapObj;
+ struct EventObject *playerEventObj;
- direction = player_get_direction_upper_nybble();
- playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+ direction = GetPlayerMovementDirection();
+ playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
if (!(heldKeys & B_BUTTON))
{
// B button was released
Bike_SetBikeStill();
- if (MetatileBehavior_IsBumpySlope(playerMapObj->mapobj_unk_1E))
+ if (MetatileBehavior_IsBumpySlope(playerEventObj->currentMetatileBehavior))
{
// even though B was released, dont undo the wheelie on the bumpy slope.
gPlayerAvatar.acroBikeState = ACRO_STATE_WHEELIE_STANDING;
@@ -475,15 +475,15 @@ static u8 AcroBikeHandleInputBunnyHop(u8 *newDirection, u16 newKeys, u16 heldKey
static u8 AcroBikeHandleInputWheelieMoving(u8 *newDirection, u16 newKeys, u16 heldKeys)
{
u8 direction;
- struct MapObject *playerMapObj;
+ struct EventObject *playerEventObj;
- direction = player_get_direction_lower_nybble();
- playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+ direction = GetPlayerFacingDirection();
+ playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
if (!(heldKeys & B_BUTTON))
{
// we were moving on a wheelie, but we let go while moving. reset bike still status
Bike_SetBikeStill();
- if (!MetatileBehavior_IsBumpySlope(playerMapObj->mapobj_unk_1E))
+ if (!MetatileBehavior_IsBumpySlope(playerEventObj->currentMetatileBehavior))
{
// we let go of B and arent on a bumpy slope, set state to normal because now we need to handle this
gPlayerAvatar.acroBikeState = ACRO_STATE_NORMAL;
@@ -529,10 +529,10 @@ static u8 AcroBikeHandleInputWheelieMoving(u8 *newDirection, u16 newKeys, u16 he
static u8 AcroBikeHandleInputSidewaysJump(u8 *ptr, u16 newKeys, u16 heldKeys)
{
- struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+ struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
- playerMapObj->mapobj_bit_9 = 0;
- FieldObjectSetDirection(playerMapObj, playerMapObj->mapobj_unk_18);
+ playerEventObj->facingDirectionLocked = 0;
+ SetEventObjectDirection(playerEventObj, playerEventObj->facingDirection);
gPlayerAvatar.acroBikeState = ACRO_STATE_NORMAL;
return CheckMovementInputAcroBike(ptr, newKeys, heldKeys);
}
@@ -550,21 +550,21 @@ static void AcroBikeTransition_FaceDirection(u8 direction)
static void AcroBikeTransition_TurnDirection(u8 direction)
{
- struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+ struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
- if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == 0)
- direction = playerMapObj->placeholder18;
+ if (CanBikeFaceDirOnMetatile(direction, playerEventObj->currentMetatileBehavior) == 0)
+ direction = playerEventObj->movementDirection;
PlayerFaceDirection(direction);
}
static void AcroBikeTransition_Moving(u8 direction)
{
u8 collision;
- struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+ struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
- if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == 0)
+ if (CanBikeFaceDirOnMetatile(direction, playerEventObj->currentMetatileBehavior) == 0)
{
- AcroBikeTransition_FaceDirection(playerMapObj->placeholder18);
+ AcroBikeTransition_FaceDirection(playerEventObj->movementDirection);
return;
}
collision = get_some_collision(direction);
@@ -577,54 +577,54 @@ static void AcroBikeTransition_Moving(u8 direction)
}
else
{
- npc_use_some_d2s(direction);
+ PlayerRideWaterCurrent(direction);
}
}
static void AcroBikeTransition_NormalToWheelie(u8 direction)
{
- struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+ struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
- if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == 0)
- direction = playerMapObj->placeholder18;
+ if (CanBikeFaceDirOnMetatile(direction, playerEventObj->currentMetatileBehavior) == 0)
+ direction = playerEventObj->movementDirection;
PlayerStartWheelie(direction);
}
static void AcroBikeTransition_WheelieToNormal(u8 direction)
{
- struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+ struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
- if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == 0)
- direction = playerMapObj->placeholder18;
+ if (CanBikeFaceDirOnMetatile(direction, playerEventObj->currentMetatileBehavior) == 0)
+ direction = playerEventObj->movementDirection;
PlayerEndWheelie(direction);
}
static void AcroBikeTransition_WheelieIdle(u8 direction)
{
- struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+ struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
- if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == 0)
- direction = playerMapObj->placeholder18;
+ if (CanBikeFaceDirOnMetatile(direction, playerEventObj->currentMetatileBehavior) == 0)
+ direction = playerEventObj->movementDirection;
PlayerIdleWheelie(direction);
}
static void AcroBikeTransition_WheelieHoppingStanding(u8 direction)
{
- struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+ struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
- if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == 0)
- direction = playerMapObj->placeholder18;
+ if (CanBikeFaceDirOnMetatile(direction, playerEventObj->currentMetatileBehavior) == 0)
+ direction = playerEventObj->movementDirection;
PlayerStandingHoppingWheelie(direction);
}
static void AcroBikeTransition_WheelieHoppingMoving(u8 direction)
{
u8 var;
- struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+ struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
- if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == 0)
+ if (CanBikeFaceDirOnMetatile(direction, playerEventObj->currentMetatileBehavior) == 0)
{
- AcroBikeTransition_WheelieHoppingStanding(playerMapObj->placeholder18);
+ AcroBikeTransition_WheelieHoppingStanding(playerEventObj->movementDirection);
return;
}
var = get_some_collision(direction);
@@ -654,7 +654,7 @@ static void AcroBikeTransition_WheelieHoppingMoving(u8 direction)
static void AcroBikeTransition_SideJump(u8 direction)
{
u8 var;
- struct MapObject *playerMapObj;
+ struct EventObject *playerEventObj;
var = get_some_collision(direction);
if (var != 0)
@@ -672,10 +672,10 @@ static void AcroBikeTransition_SideJump(u8 direction)
return;
}
}
- playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+ playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
PlaySE(SE_JITE_PYOKO);
- playerMapObj->mapobj_bit_9 = 1;
- PlayerSetAnimId(sub_80608A4(direction), 2);
+ playerEventObj->facingDirectionLocked = 1;
+ PlayerSetAnimId(GetJumpMovementAction(direction), 2);
}
static void AcroBikeTransition_TurnJump(u8 direction)
@@ -686,11 +686,11 @@ static void AcroBikeTransition_TurnJump(u8 direction)
static void AcroBikeTransition_WheelieMoving(u8 direction)
{
u8 var;
- struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+ struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
- if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == 0)
+ if (CanBikeFaceDirOnMetatile(direction, playerEventObj->currentMetatileBehavior) == 0)
{
- PlayerIdleWheelie(playerMapObj->placeholder18);
+ PlayerIdleWheelie(playerEventObj->movementDirection);
return;
}
var = get_some_collision(direction);
@@ -706,7 +706,7 @@ static void AcroBikeTransition_WheelieMoving(u8 direction)
}
else if (var <= 4)
{
- if (MetatileBehavior_IsBumpySlope(playerMapObj->mapobj_unk_1E))
+ if (MetatileBehavior_IsBumpySlope(playerEventObj->currentMetatileBehavior))
PlayerIdleWheelie(direction);
else
sub_80595DC(direction); //hit wall?
@@ -720,11 +720,11 @@ static void AcroBikeTransition_WheelieMoving(u8 direction)
static void AcroBikeTransition_WheelieRisingMoving(u8 direction)
{
u8 var;
- struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+ struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
- if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == 0)
+ if (CanBikeFaceDirOnMetatile(direction, playerEventObj->currentMetatileBehavior) == 0)
{
- PlayerStartWheelie(playerMapObj->placeholder18);
+ PlayerStartWheelie(playerEventObj->movementDirection);
return;
}
var = get_some_collision(direction);
@@ -740,7 +740,7 @@ static void AcroBikeTransition_WheelieRisingMoving(u8 direction)
}
else if (var <= 4)
{
- if (MetatileBehavior_IsBumpySlope(playerMapObj->mapobj_unk_1E))
+ if (MetatileBehavior_IsBumpySlope(playerEventObj->currentMetatileBehavior))
PlayerIdleWheelie(direction);
else
sub_80595DC(direction); //hit wall?
@@ -754,11 +754,11 @@ static void AcroBikeTransition_WheelieRisingMoving(u8 direction)
static void AcroBikeTransition_WheelieLoweringMoving(u8 direction)
{
u8 var;
- struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+ struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
- if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == 0)
+ if (CanBikeFaceDirOnMetatile(direction, playerEventObj->currentMetatileBehavior) == 0)
{
- PlayerEndWheelie(playerMapObj->placeholder18);
+ PlayerEndWheelie(playerEventObj->movementDirection);
return;
}
var = get_some_collision(direction);
@@ -883,18 +883,18 @@ static u8 get_some_collision(u8 direction)
s16 x;
s16 y;
u8 metatitleBehavior;
- struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+ struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
- x = playerMapObj->coords2.x;
- y = playerMapObj->coords2.y;
+ x = playerEventObj->currentCoords.x;
+ y = playerEventObj->currentCoords.y;
MoveCoords(direction, &x, &y);
metatitleBehavior = MapGridGetMetatileBehaviorAt(x, y);
- return Bike_CheckCollisionTryAdvanceCollisionCount(playerMapObj, x, y, direction, metatitleBehavior);
+ return Bike_CheckCollisionTryAdvanceCollisionCount(playerEventObj, x, y, direction, metatitleBehavior);
}
-static u8 Bike_CheckCollisionTryAdvanceCollisionCount(struct MapObject *mapObject, s16 x, s16 y, u8 direction, u8 metatitleBehavior)
+static u8 Bike_CheckCollisionTryAdvanceCollisionCount(struct EventObject *eventObject, s16 x, s16 y, u8 direction, u8 metatitleBehavior)
{
- u8 collision = CheckForFieldObjectCollision(mapObject, x, y, direction, metatitleBehavior);
+ u8 collision = CheckForEventObjectCollision(eventObject, x, y, direction, metatitleBehavior);
if (collision > 4)
return collision;
@@ -970,7 +970,7 @@ bool8 IsBikingDisallowedByPlayer(void)
s16 x, y;
u8 tileBehavior;
- if (!(gPlayerAvatar.flags & (PLAYER_AVATAR_FLAG_SURFING | PLAYER_AVATAR_FLAG_4)))
+ if (!(gPlayerAvatar.flags & (PLAYER_AVATAR_FLAG_SURFING | PLAYER_AVATAR_FLAG_UNDERWATER)))
{
PlayerGetDestCoords(&x, &y);
tileBehavior = MapGridGetMetatileBehaviorAt(x, y);
@@ -982,7 +982,7 @@ bool8 IsBikingDisallowedByPlayer(void)
bool8 player_should_look_direction_be_enforced_upon_movement(void)
{
- if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_ACRO_BIKE) != FALSE && MetatileBehavior_IsBumpySlope(gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_1E) != FALSE)
+ if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_ACRO_BIKE) != FALSE && MetatileBehavior_IsBumpySlope(gEventObjects[gPlayerAvatar.eventObjectId].currentMetatileBehavior) != FALSE)
return FALSE;
else
return TRUE;
@@ -1001,8 +1001,8 @@ void GetOnOffBike(u8 var)
else
{
SetPlayerAvatarTransitionFlags(var);
- Overworld_SetSavedMusic(BGM_CYCLING);
- Overworld_ChangeMusicTo(BGM_CYCLING);
+ Overworld_SetSavedMusic(MUS_CYCLING);
+ Overworld_ChangeMusicTo(MUS_CYCLING);
}
}
@@ -1065,7 +1065,7 @@ void Bike_HandleBumpySlopeJump(void)
if (MetatileBehavior_IsBumpySlope(tileBehavior))
{
gPlayerAvatar.acroBikeState = ACRO_STATE_WHEELIE_STANDING;
- sub_8059C94(player_get_direction_upper_nybble());
+ sub_8059C94(GetPlayerMovementDirection());
}
}
}
diff --git a/src/braille_puzzles.c b/src/braille_puzzles.c
index f11fb5fb3..7f26f0a9b 100644
--- a/src/braille_puzzles.c
+++ b/src/braille_puzzles.c
@@ -4,18 +4,19 @@
#include "field_camera.h"
#include "field_effect.h"
#include "fieldmap.h"
-#include "constants/flags.h"
#include "main.h"
-#include "constants/maps.h"
-#include "map_obj_lock.h"
+#include "event_obj_lock.h"
#include "menu.h"
#include "rom6.h"
#include "script.h"
-#include "constants/songs.h"
#include "sound.h"
-#include "constants/species.h"
#include "task.h"
#include "text.h"
+#include "constants/field_effects.h"
+#include "constants/flags.h"
+#include "constants/maps.h"
+#include "constants/songs.h"
+#include "constants/species.h"
extern u8 gPlayerPartyCount;
extern u8 gLastFieldPokeMenuOpened;
@@ -83,7 +84,7 @@ bool8 ShouldDoBrailleStrengthEffect(void)
void DoBrailleStrengthEffect(void)
{
- FieldEffectActiveListRemove(0x28);
+ FieldEffectActiveListRemove(FLDEFF_USE_STRENGTH);
MapGridSetMetatileIdAt(14, 26, 554);
MapGridSetMetatileIdAt(15, 26, 555);
MapGridSetMetatileIdAt(16, 26, 556);
@@ -184,7 +185,7 @@ void Task_BrailleWait(u8 taskId)
data[0] = 4;
break;
}
- sub_8064E2C();
+ ScriptUnfreezeEventObjects();
DestroyTask(taskId);
ScriptContext2_Disable();
break;
@@ -194,7 +195,7 @@ void Task_BrailleWait(u8 taskId)
data[0] = 4;
break;
case 4:
- sub_8064E2C();
+ ScriptUnfreezeEventObjects();
ScriptContext1_SetupScript(S_OpenRegiceChamber);
DestroyTask(taskId);
break;
diff --git a/src/cable_car.c b/src/cable_car.c
index 8c3f9885d..52111b285 100644
--- a/src/cable_car.c
+++ b/src/cable_car.c
@@ -18,7 +18,7 @@
#include "scanline_effect.h"
#include "event_data.h"
#include "cable_car_util.h"
-#include "constants/map_objects.h"
+#include "constants/event_objects.h"
#include "constants/weather.h"
extern u8 (*gMenuCallback)(void);
@@ -275,7 +275,7 @@ void CableCar(void)
{
ScriptContext2_Enable();
CreateTask(CableCarTask1, 1);
- BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
}
#if DEBUG
@@ -385,8 +385,8 @@ static void CableCarMainCallback_Setup(void)
gMain.state++;
break;
case 7:
- BeginNormalPaletteFade(-1, 3, 16, 0, 0);
- FadeInNewBGM(BGM_ROPEWAY, 1);
+ BeginNormalPaletteFade(0xFFFFFFFF, 3, 16, 0, RGB(0, 0, 0));
+ FadeInNewBGM(MUS_ROPEWAY, 1);
sub_8123FBC(1);
gMain.state++;
break;
@@ -439,7 +439,7 @@ static void sub_8123740(void)
DmaFill16Large(3, 0, VRAM, VRAM_SIZE, 0x1000);
DmaFill32Defvars(3, 0, OAM, OAM_SIZE);
DmaFill16Defvars(3, 0, PLTT, PLTT_SIZE);
- warp_in();
+ WarpIntoMap();
gFieldCallback = NULL;
SetMainCallback2(CB2_LoadMap);
}
@@ -497,7 +497,7 @@ static void sub_8123878(u8 taskId)
if (sCableCarPtr->unk_0006 == 570)
{
sCableCarPtr->unk_0001 = 3;
- BeginNormalPaletteFade(-1, 3, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 3, 0, 16, RGB(0, 0, 0));
FadeOutBGM(4);
}
break;
@@ -818,15 +818,15 @@ static void LoadSprites(void)
u8 i;
u8 playerGraphicsIds[2] = {
- MAP_OBJ_GFX_RIVAL_BRENDAN_NORMAL,
- MAP_OBJ_GFX_RIVAL_MAY_NORMAL
+ EVENT_OBJ_GFX_RIVAL_BRENDAN_NORMAL,
+ EVENT_OBJ_GFX_RIVAL_MAY_NORMAL
};
u16 rval = Random();
u8 hikerGraphicsIds[4] = {
- MAP_OBJ_GFX_HIKER,
- MAP_OBJ_GFX_CAMPER,
- MAP_OBJ_GFX_PICNICKER,
- MAP_OBJ_GFX_POOCHYENA
+ EVENT_OBJ_GFX_HIKER,
+ EVENT_OBJ_GFX_CAMPER,
+ EVENT_OBJ_GFX_PICNICKER,
+ EVENT_OBJ_GFX_POOCHYENA
};
s16 hikerCoords[2][2] = {
{ 0, 80 },
@@ -847,7 +847,7 @@ static void LoadSprites(void)
{
case 0:
default:
- spriteId = AddPseudoFieldObject(playerGraphicsIds[gSaveBlock2.playerGender], sub_8123D98, 0xc8, 0x49, 0x66);
+ spriteId = AddPseudoEventObject(playerGraphicsIds[gSaveBlock2.playerGender], sub_8123D98, 0xc8, 0x49, 0x66);
if (spriteId != MAX_SPRITES)
{
gSprites[spriteId].oam.priority = 2;
@@ -871,7 +871,7 @@ static void LoadSprites(void)
break;
case 1:
CableCarUtil_CopyWrapped(sCableCarPtr->unk_00fc, eCableCar2->mtChimneyTilemap + 0x24, 0x18, 0x1a, 0x0c, 0x03);
- spriteId = AddPseudoFieldObject(playerGraphicsIds[gSaveBlock2.playerGender], sub_8123D98, 0x80, 0x27, 0x66);
+ spriteId = AddPseudoEventObject(playerGraphicsIds[gSaveBlock2.playerGender], sub_8123D98, 0x80, 0x27, 0x66);
if (spriteId != MAX_SPRITES)
{
gSprites[spriteId].oam.priority = 2;
@@ -902,7 +902,7 @@ static void LoadSprites(void)
}
if ((rval % 64) == 0)
{
- spriteId = AddPseudoFieldObject(hikerGraphicsIds[rval % 3], callbacks[gSpecialVar_0x8004], hikerCoords[gSpecialVar_0x8004][0], hikerCoords[gSpecialVar_0x8004][1], 0x6a);
+ spriteId = AddPseudoEventObject(hikerGraphicsIds[rval % 3], callbacks[gSpecialVar_0x8004], hikerCoords[gSpecialVar_0x8004][0], hikerCoords[gSpecialVar_0x8004][1], 0x6a);
if (spriteId != MAX_SPRITES)
{
gSprites[spriteId].oam.priority = 2;
diff --git a/src/cable_car_util.c b/src/cable_car_util.c
index 02bfbc195..85c87a07b 100644
--- a/src/cable_car_util.c
+++ b/src/cable_car_util.c
@@ -1,14 +1,6 @@
#include "global.h"
#include "cable_car_util.h"
-// static types
-
-// static declarations
-
-// rodata
-
-// text
-
void CableCarUtil_FillWrapped(void *dest, u16 value, u8 left, u8 top, u8 width, u8 height)
{
u8 i;
diff --git a/src/cable_club.c b/src/cable_club.c
index 0da23c5f3..1e1f0af07 100644
--- a/src/cable_club.c
+++ b/src/cable_club.c
@@ -766,9 +766,9 @@ static void sub_808382C(u8 taskId)
break;
case 5:
if (gLinkPlayers[0].trainerId & 1)
- current_map_music_set__default_for_battle(BGM_BATTLE32);
+ current_map_music_set__default_for_battle(MUS_BATTLE32);
else
- current_map_music_set__default_for_battle(BGM_BATTLE20);
+ current_map_music_set__default_for_battle(MUS_BATTLE20);
switch (gSpecialVar_0x8004)
{
diff --git a/src/choose_party.c b/src/choose_party.c
index 4766b2fbb..8aef949cb 100644
--- a/src/choose_party.c
+++ b/src/choose_party.c
@@ -23,16 +23,15 @@
extern u8 gPlayerPartyCount;
extern u8 gLastFieldPokeMenuOpened;
extern u8 gUnknown_020384F0;
-extern struct UnknownPokemonStruct2 gUnknown_02023A00[3];
+extern struct UnknownPokemonStruct2 gMultiPartnerParty[3];
extern u8 gUnknown_0202E8F6;
-extern struct Pokemon gUnknown_030042FC[];
extern const u16 gBattleTowerBannedSpecies[];
EWRAM_DATA u8 gSelectedOrderFromParty[3] = {0};
extern u8 sub_806BD58(u8, u8);
extern void PartyMenuPrintMonsLevelOrStatus(void);
-extern void sub_806BC3C(u8, u8);
+extern void DrawMonDescriptorStatus(u8, u8);
extern u8 GetMonStatusAndPokerus();
extern void PartyMenuPrintHP();
extern bool8 sub_80F9344(void);
@@ -131,16 +130,16 @@ bool8 SetupBattleTowerPartyMenu(void)
{
if (gSelectedOrderFromParty[j] == i + 1)
{
- sub_806BC3C(i, j * 14 + 0x1C);
+ DrawMonDescriptorStatus(i, j * 14 + 0x1C);
break;
}
}
if (j == 3)
{
if (IsMonAllowedInBattleTower(&gPlayerParty[i]) == TRUE)
- sub_806BC3C(i, 0x70);
+ DrawMonDescriptorStatus(i, 0x70);
else
- sub_806BC3C(i, 0x7E);
+ DrawMonDescriptorStatus(i, 0x7E);
}
}
ewram1B000_alt.setupState++;
@@ -204,13 +203,13 @@ static u8 sub_81220C8(void)
{
u8 j;
- ewram1B000.unk282 = GetMonData(&gUnknown_030042FC[gSelectedOrderFromParty[i]], MON_DATA_SPECIES);
- ewram1B000.unk280 = GetMonData(&gUnknown_030042FC[gSelectedOrderFromParty[i]], MON_DATA_HELD_ITEM);
+ ewram1B000.unk282 = GetMonData(&gPlayerParty[gSelectedOrderFromParty[i] - 1], MON_DATA_SPECIES);
+ ewram1B000.unk280 = GetMonData(&gPlayerParty[gSelectedOrderFromParty[i] - 1], MON_DATA_HELD_ITEM);
for (j = i + 1; j < 3; j++)
{
- if (ewram1B000.unk282 == GetMonData(&gUnknown_030042FC[gSelectedOrderFromParty[j]], MON_DATA_SPECIES))
+ if (ewram1B000.unk282 == GetMonData(&gPlayerParty[gSelectedOrderFromParty[j] - 1], MON_DATA_SPECIES))
return 0x12;
- if (ewram1B000.unk280 != 0 && ewram1B000.unk280 == GetMonData(&gUnknown_030042FC[gSelectedOrderFromParty[j]], MON_DATA_HELD_ITEM))
+ if (ewram1B000.unk280 != 0 && ewram1B000.unk280 == GetMonData(&gPlayerParty[gSelectedOrderFromParty[j] - 1], MON_DATA_HELD_ITEM))
return 0x13;
}
}
@@ -231,7 +230,7 @@ static const struct MenuAction2 sBattleTowerEntryMenuItems[] =
{OtherText_Summary, BattleTowerEntryMenuCallback_Summary},
{OtherText_Enter2, BattleTowerEntryMenuCallback_Enter},
{OtherText_NoEntry, BattleTowerEntryMenuCallback_NoEntry},
- {gUnknownText_Exit, BattleTowerEntryMenuCallback_Exit},
+ {gOtherText_Exit, BattleTowerEntryMenuCallback_Exit},
};
static const u8 gUnknown_084017D0[] = {1, 0, 3};
@@ -305,7 +304,7 @@ void HandleBattleTowerPartyMenu(u8 taskId)
case B_BUTTON:
PlaySE(SE_SELECT);
ClearPartySelection();
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gTasks[taskId].func = sub_8122450;
break;
}
@@ -386,7 +385,7 @@ static void sub_81224A8(u8 taskId)
{
if (gSelectedOrderFromParty[0] != 0)
{
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gTasks[taskId].func = sub_8122450;
}
else
@@ -441,7 +440,7 @@ static void sub_81225D4(u8 taskId)
// Summary callback?
static void BattleTowerEntryMenuCallback_Summary(u8 taskId)
{
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gTasks[taskId].func = sub_81225D4;
}
@@ -454,7 +453,7 @@ static void BattleTowerEntryMenuCallback_Enter(u8 taskId)
if (gSelectedOrderFromParty[i] == 0)
{
gSelectedOrderFromParty[i] = gLastFieldPokeMenuOpened + 1;
- sub_806BC3C(gLastFieldPokeMenuOpened, i * 14 + 0x1C);
+ DrawMonDescriptorStatus(gLastFieldPokeMenuOpened, i * 14 + 0x1C);
if (i == 2)
SelectBattleTowerOKButton(taskId);
BattleTowerEntryMenuCallback_Exit(taskId);
@@ -506,11 +505,11 @@ static void BattleTowerEntryMenuCallback_NoEntry(u8 taskId)
break; // exit loop
}
}
- sub_806BC3C(gLastFieldPokeMenuOpened, 0x70);
+ DrawMonDescriptorStatus(gLastFieldPokeMenuOpened, 0x70);
if (gSelectedOrderFromParty[0] != 0)
- sub_806BC3C(gSelectedOrderFromParty[0] - 1, 0x1C);
+ DrawMonDescriptorStatus(gSelectedOrderFromParty[0] - 1, 0x1C);
if (gSelectedOrderFromParty[1] != 0)
- sub_806BC3C(gSelectedOrderFromParty[1] - 1, 0x2A);
+ DrawMonDescriptorStatus(gSelectedOrderFromParty[1] - 1, 0x2A);
BattleTowerEntryMenuCallback_Exit(taskId);
}
@@ -530,26 +529,26 @@ static void BattleTowerEntryMenuCallback_Exit(u8 taskId)
#if DEBUG
-void debug_sub_81381B4(void)
+void Debug_CopyLastThreePartyMonsToMultiPartnerParty(void)
{
u8 i;
- memset(gUnknown_02023A00, 0, sizeof(gUnknown_02023A00));
+ memset(gMultiPartnerParty, 0, sizeof(gMultiPartnerParty));
for (i = 0; i < 3; i++)
{
- gUnknown_02023A00[i].species = GetMonData(&gPlayerParty[3 + i], MON_DATA_SPECIES2);
- if (gUnknown_02023A00[i].species != 0)
+ gMultiPartnerParty[i].species = GetMonData(&gPlayerParty[3 + i], MON_DATA_SPECIES2);
+ if (gMultiPartnerParty[i].species != 0)
{
- gUnknown_02023A00[i].level = GetMonData(&gPlayerParty[3 + i], MON_DATA_LEVEL);
- gUnknown_02023A00[i].hp = GetMonData(&gPlayerParty[3 + i], MON_DATA_HP);
- gUnknown_02023A00[i].maxhp = GetMonData(&gPlayerParty[3 + i], MON_DATA_MAX_HP);
- gUnknown_02023A00[i].status = GetMonData(&gPlayerParty[3 + i], MON_DATA_STATUS);
- gUnknown_02023A00[i].heldItem = GetMonData(&gPlayerParty[3 + i], MON_DATA_HELD_ITEM);
- gUnknown_02023A00[i].personality = GetMonData(&gPlayerParty[3 + i], MON_DATA_PERSONALITY);
- gUnknown_02023A00[i].gender = GetMonGender(&gPlayerParty[3 + i]);
- GetMonData(&gPlayerParty[3 + i], MON_DATA_NICKNAME, gUnknown_02023A00[i].nickname);
- Text_StripExtCtrlCodes(gUnknown_02023A00[i].nickname);
- gUnknown_02023A00[i].language = GetMonData(&gPlayerParty[3 + i], MON_DATA_LANGUAGE);
+ gMultiPartnerParty[i].level = GetMonData(&gPlayerParty[3 + i], MON_DATA_LEVEL);
+ gMultiPartnerParty[i].hp = GetMonData(&gPlayerParty[3 + i], MON_DATA_HP);
+ gMultiPartnerParty[i].maxhp = GetMonData(&gPlayerParty[3 + i], MON_DATA_MAX_HP);
+ gMultiPartnerParty[i].status = GetMonData(&gPlayerParty[3 + i], MON_DATA_STATUS);
+ gMultiPartnerParty[i].heldItem = GetMonData(&gPlayerParty[3 + i], MON_DATA_HELD_ITEM);
+ gMultiPartnerParty[i].personality = GetMonData(&gPlayerParty[3 + i], MON_DATA_PERSONALITY);
+ gMultiPartnerParty[i].gender = GetMonGender(&gPlayerParty[3 + i]);
+ GetMonData(&gPlayerParty[3 + i], MON_DATA_NICKNAME, gMultiPartnerParty[i].nickname);
+ Text_StripExtCtrlCodes(gMultiPartnerParty[i].nickname);
+ gMultiPartnerParty[i].language = GetMonData(&gPlayerParty[3 + i], MON_DATA_LANGUAGE);
}
}
}
@@ -591,9 +590,9 @@ static void sub_81228E8(u8 a)
{
if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) != 0)
CreatePartyMenuMonIcon(a, i, 3, &gPlayerParty[i]);
- if (gUnknown_02023A00[i].species != 0)
+ if (gMultiPartnerParty[i].species != 0)
{
- CreateMonIcon_LinkMultiBattle(a, i + 3, 3, &gUnknown_02023A00[i]);
+ CreateMonIcon_LinkMultiBattle(a, i + 3, 3, &gMultiPartnerParty[i]);
sub_806D50C(a, i + 3);
}
}
@@ -611,8 +610,8 @@ static void sub_8122950(u8 a)
CreateHeldItemIcon_806DCD4(a, i, item);
}
- if (gUnknown_02023A00[i].species != 0)
- CreateHeldItemIcon_806DCD4(a, i + 3, gUnknown_02023A00[i].heldItem);
+ if (gMultiPartnerParty[i].species != 0)
+ CreateHeldItemIcon_806DCD4(a, i + 3, gMultiPartnerParty[i].heldItem);
}
}
@@ -628,7 +627,7 @@ static void sub_81229B8(void)
PartyMenuPrintHP(i, 3, &gPlayerParty[i]);
status = GetMonStatusAndPokerus(&gPlayerParty[i]);
- if (status != 0 && status != 6)
+ if (status && status != STATUS_PRIMARY_POKERUS)
PartyMenuPutStatusTilemap(i, 3, status - 1);
else
PartyMenuPrintLevel(i, 3, &gPlayerParty[i]);
@@ -644,9 +643,9 @@ void HandleLinkMultiBattlePartyMenu(u8 taskId)
if (!gPaletteFade.active)
{
gTasks[taskId].data[0] = 30;
- sub_806D4AC(taskId, gUnknown_02023A00[0].species, 0);
- sub_806D4AC(taskId, gUnknown_02023A00[1].species, 1);
- sub_806D4AC(taskId, gUnknown_02023A00[2].species, 2);
+ sub_806D4AC(taskId, gMultiPartnerParty[0].species, 0);
+ sub_806D4AC(taskId, gMultiPartnerParty[1].species, 1);
+ sub_806D4AC(taskId, gMultiPartnerParty[2].species, 2);
gTasks[taskId].func = sub_8122AB8;
ewram1B000.unk261 = 1;
}
@@ -654,7 +653,7 @@ void HandleLinkMultiBattlePartyMenu(u8 taskId)
static void sub_8122AB8(u8 taskId)
{
- sub_806D3B4(taskId, gUnknown_02023A00[1].species, gUnknown_02023A00[2].species);
+ sub_806D3B4(taskId, gMultiPartnerParty[1].species, gMultiPartnerParty[2].species);
if (gTasks[taskId].data[0] == 0)
{
gTasks[taskId].func = sub_8122B10;
@@ -669,25 +668,26 @@ static void sub_8122B10(u8 taskId)
for (i = 0; i < 3; i++)
{
- if (gUnknown_02023A00[i].species != 0)
+ if (gMultiPartnerParty[i].species != 0)
{
- u8 r2;
+ u8 primaryStatus;
- PartyMenuDoPrintHP(i + 3, 3, gUnknown_02023A00[i].hp, gUnknown_02023A00[i].maxhp);
- if (gUnknown_02023A00[i].hp == 0)
- r2 = 7;
+ PartyMenuDoPrintHP(i + 3, 3, gMultiPartnerParty[i].hp, gMultiPartnerParty[i].maxhp);
+ if (gMultiPartnerParty[i].hp == 0)
+ primaryStatus = STATUS_PRIMARY_FAINTED;
else
- r2 = pokemon_ailments_get_primary(gUnknown_02023A00[i].status);
- if (r2 != 0)
- PartyMenuPutStatusTilemap(i + 3, 3, r2 - 1);
+ primaryStatus = GetPrimaryStatus(gMultiPartnerParty[i].status);
+
+ if (primaryStatus != STATUS_PRIMARY_NONE)
+ PartyMenuPutStatusTilemap(i + 3, 3, primaryStatus - 1);
else
- PartyMenuDoPrintLevel(i + 3, 3, gUnknown_02023A00[i].level);
- PartyMenuDoPrintGenderIcon(gUnknown_02023A00[i].species, gUnknown_02023A00[i].gender, 3, i + 3, gUnknown_02023A00[i].nickname);
- StringCopy(gStringVar1, gUnknown_02023A00[i].nickname);
+ PartyMenuDoPrintLevel(i + 3, 3, gMultiPartnerParty[i].level);
+ PartyMenuDoPrintGenderIcon(gMultiPartnerParty[i].species, gMultiPartnerParty[i].gender, 3, i + 3, gMultiPartnerParty[i].nickname);
+ StringCopy(gStringVar1, gMultiPartnerParty[i].nickname);
StringGetEnd10(gStringVar1);
SanitizeNameString(gStringVar1);
PartyMenuDoPrintMonNickname(i + 3, 3, gStringVar1);
- PartyMenuDoDrawHPBar(i + 3, 3, gUnknown_02023A00[i].hp, gUnknown_02023A00[i].maxhp);
+ PartyMenuDoDrawHPBar(i + 3, 3, gMultiPartnerParty[i].hp, gMultiPartnerParty[i].maxhp);
}
}
gTasks[taskId].func = sub_8122C18;
@@ -699,7 +699,7 @@ static void sub_8122C18(u8 taskId)
gTasks[taskId].data[0]++;
if (gTasks[taskId].data[0] == 256)
{
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gTasks[taskId].func = sub_8122450;
}
}
@@ -780,7 +780,7 @@ static const struct MenuAction2 sDaycareStorageMenuItems[] =
{
{OtherText_Store, DaycareStorageMenuCallback_Store},
{OtherText_Summary, DaycareStorageMenuCallback_Summary},
- {gUnknownText_Exit, DaycareStorageMenuCallback_Exit},
+ {gOtherText_Exit, DaycareStorageMenuCallback_Exit},
};
static const u8 gUnknown_08401808[] = {0, 1, 2};
@@ -918,7 +918,7 @@ static void sub_8123034(u8 taskId)
static void DaycareStorageMenuCallback_Summary(u8 taskId)
{
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gTasks[taskId].func = sub_8123034;
}
@@ -933,7 +933,7 @@ static void DaycareStorageMenuCallback_Exit(u8 taskId)
void sub_8123138(u8 taskId)
{
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gTasks[taskId].func = sub_8123170;
}
diff --git a/src/clear_save_data_menu.c b/src/clear_save_data_menu.c
index b6053715a..05130a214 100644
--- a/src/clear_save_data_menu.c
+++ b/src/clear_save_data_menu.c
@@ -134,8 +134,8 @@ static u8 InitClearSaveDataScreen(void)
ResetSpriteData();
Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C);
- InitMenuWindow(&gWindowTemplate_81E6CE4);
- BeginNormalPaletteFade(-1, 0, 0x10, 0, 0xffff);
+ InitMenuWindow(&gMenuTextWindowTemplate);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, FADE_COLOR_WHITE);
ime = REG_IME;
REG_IME = 0;
@@ -164,7 +164,7 @@ static void CB2_SoftReset(void)
{
case 0:
default:
- BeginNormalPaletteFade(-1, 0, 0, 0x10, 0xffff);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, FADE_COLOR_WHITE);
gMain.state = 1;
break;
case 1:
diff --git a/src/contest.c b/src/contest.c
index 5cdaf7d09..78e2da3c0 100644
--- a/src/contest.c
+++ b/src/contest.c
@@ -1,6 +1,6 @@
#include "global.h"
#include "constants/items.h"
-#include "constants/map_objects.h"
+#include "constants/event_objects.h"
#include "constants/moves.h"
#include "constants/songs.h"
#include "constants/species.h"
@@ -8,6 +8,7 @@
#include "battle_anim.h"
#include "blend_palette.h"
#include "contest.h"
+#include "contest_effect.h"
#include "contest_link_80C857C.h"
#include "data2.h"
#include "decompress.h"
@@ -35,7 +36,6 @@
extern u8 gUnknown_020297ED;
-extern u8 AreMovesContestCombo(u16, u16); // I don't think this is a bool
extern void sub_80C8A38(u8);
extern void sub_80C8AD0(u8);
extern void sub_80C8C80(u8);
@@ -49,11 +49,9 @@ extern u8 gBankTarget;
extern u8 gBanksBySide[];
extern u8 gBankSpriteIds[];
extern struct Window gUnknown_03004210;
-extern u32 gContestRngValue; // saved RNG value
+extern u32 gContestRngValue;
extern struct SpriteTemplate gUnknown_02024E8C;
-
-
extern const struct ContestPokemon gContestOpponents[60];
extern const u8 gUnknown_083CA308[][2];
extern const u8 gUnknown_083CA310[][2];
@@ -176,7 +174,6 @@ void sub_80AE6E4(u8, u8);
u8 CreateJudgeSprite(void);
u8 sub_80AE8B4(void);
u8 sub_80AE9FC(u16, u32, u32);
-bool8 IsSpeciesNotUnown(u16);
void sub_80AEB30(void);
void sub_80AEBEC(u16);
void sub_80AED58(void);
@@ -189,7 +186,6 @@ void sub_80AF1B8(void);
void sub_80AF2A0(u8);
void sub_80AF2FC(void);
void sub_80AF3C0(void);
-bool8 Contest_IsMonsTurnDisabled(u8);
s16 sub_80AF688(u8);
void DetermineFinalStandings(void);
bool8 sub_80AF828(s32, s32, struct UnknownContestStruct6 *);
@@ -236,7 +232,6 @@ void sub_80B146C(u8, u8);
void sub_80B159C(void);
void sub_80B1710(u8);
void sub_80B1928(void);
-s8 Contest_GetMoveExcitement(u16);
u8 sub_80B1A2C(void);
void c3_08130B10(u8);
void sub_80B1B14(void);
@@ -252,7 +247,6 @@ void sub_80B1F4C(u8);
void sub_80B1FD0(bool8);
const u8 *GetTurnOrderNumberGfx(u8);
void sub_80B20C4(void);
-bool8 sub_80B214C(u8);
void sub_80B2184(void);
void sub_80B2280(void);
void sub_80B237C(u8);
@@ -378,8 +372,8 @@ void ClearContestVars(void)
for (i = 0; i < 4; i++)
{
sContestantStatus[i].unkB_0 = 0;
- sContestantStatus[i].unk13 = 0xFF;
- sContestantStatus[i].unk14 = 0xFF;
+ sContestantStatus[i].effectStringId = CONTEST_STRING_NONE;
+ sContestantStatus[i].effectStringId2 = CONTEST_STRING_NONE;
}
memset(&shared192D0, 0, sizeof(shared192D0));
@@ -390,7 +384,7 @@ void ClearContestVars(void)
sub_80B0F28(0);
for (i = 0; i < 4; i++)
{
- sContestantStatus[i].unk19 = 0xFF;
+ sContestantStatus[i].nextTurnOrder = 0xFF;
sContest.unk19218[i] = gUnknown_02038696[i];
}
sub_80B159C();
@@ -697,13 +691,13 @@ void sub_80ABCDC(u8 taskId)
if (sContestantStatus[gContestPlayerMonIndex].prevMove != MOVE_NONE
&& sub_80B214C(gContestPlayerMonIndex)
&& AreMovesContestCombo(sContestantStatus[gContestPlayerMonIndex].prevMove, move) != 0
- && sContestantStatus[gContestPlayerMonIndex].unk15_4)
+ && sContestantStatus[gContestPlayerMonIndex].hasJudgesAttention)
{
r5 = StringCopy(sp8, gUnknownText_UnknownFormatting2);
}
else if (move != 0
&& sContestantStatus[gContestPlayerMonIndex].prevMove == move
- && gContestMoves[move].effect != CONTEST_EFFECT_REPEATABLE)
+ && gContestMoves[move].effect != CONTEST_EFFECT_REPETITION_NOT_BORING)
{
// Gray the text because it is a repeated move
r5 = StringCopy(sp8, gUnknownText_UnknownFormatting3);
@@ -1078,7 +1072,7 @@ void sub_80AC2CC(u8 taskId)
{
case 0:
sub_80B0D7C();
- for (i = 0; sContest.unk19214 != shared192D0.unk0[i]; i++)
+ for (i = 0; sContest.unk19214 != shared192D0.turnOrder[i]; i++)
;
sContest.unk19215 = i;
r7 = sContest.unk19215;
@@ -1105,8 +1099,8 @@ void sub_80AC2CC(u8 taskId)
gTasks[taskId].data[0] = 2;
return;
case 2:
- if (sContestantStatus[r7].unkC_1 != 0
- || sContestantStatus[r7].unkB_7)
+ if (sContestantStatus[r7].numTurnsSkipped != 0
+ || sContestantStatus[r7].noMoreTurns)
{
gTasks[taskId].data[0] = 31;
}
@@ -1143,7 +1137,7 @@ void sub_80AC2CC(u8 taskId)
}
return;
case 5:
- if (sContestantStatus[r7].unkC_0)
+ if (sContestantStatus[r7].nervous)
{
gTasks[taskId].data[0] = 33;
}
@@ -1190,7 +1184,7 @@ void sub_80AC2CC(u8 taskId)
}
else
{
- if (!sContestantStatus[r7].unk15_4)
+ if (!sContestantStatus[r7].hasJudgesAttention)
sub_80B03A8(r7);
sub_80B20C4();
gTasks[taskId].data[0] = 23;
@@ -1206,25 +1200,25 @@ void sub_80AC2CC(u8 taskId)
return;
case 23:
gTasks[taskId].data[1] = 0;
- if (sContestantStatus[r7].unk13 != 0xFF)
+ if (sContestantStatus[r7].effectStringId != CONTEST_STRING_NONE)
{
- sub_80B146C(r7, sContestantStatus[r7].unk13);
- sContestantStatus[r7].unk13 = 0xFF;
+ sub_80B146C(r7, sContestantStatus[r7].effectStringId);
+ sContestantStatus[r7].effectStringId = CONTEST_STRING_NONE;
gTasks[taskId].data[0] = 24;
}
else
{
- if (sContestantStatus[r7].unk14 != 0xFF)
+ if (sContestantStatus[r7].effectStringId2 != CONTEST_STRING_NONE)
{
for (i = 0; i < 4; i++)
{
- if (i != r7 && sContestantStatus[i].unk13 != 0xFF)
+ if (i != r7 && sContestantStatus[i].effectStringId != CONTEST_STRING_NONE)
break;
}
if (i == 4)
{
- sub_80B146C(r7, sContestantStatus[r7].unk14);
- sContestantStatus[r7].unk14 = 0xFF;
+ sub_80B146C(r7, sContestantStatus[r7].effectStringId2);
+ sContestantStatus[r7].effectStringId2 = CONTEST_STRING_NONE;
gTasks[taskId].data[0] = 24;
}
else
@@ -1243,15 +1237,15 @@ void sub_80AC2CC(u8 taskId)
gTasks[taskId].data[0] = 23;
return;
case 48:
- if (sContestantStatus[r7].unk11_0 == 1)
+ if (sContestantStatus[r7].turnOrderModAction == 1)
{
sub_80B1710(5);
}
- else if (sContestantStatus[r7].unk11_0 == 2)
+ else if (sContestantStatus[r7].turnOrderModAction == 2)
{
sub_80B1710(6);
}
- else if (sContestantStatus[r7].unk11_0 == 3)
+ else if (sContestantStatus[r7].turnOrderModAction == 3)
{
sub_80B1710(7);
}
@@ -1279,7 +1273,7 @@ void sub_80AC2CC(u8 taskId)
gTasks[taskId].data[0] = 35;
return;
case 35:
- if (sContestantStatus[r7].unk10_4 == 1)
+ if (sContestantStatus[r7].conditionMod == 1)
sub_80B1710(8);
gTasks[taskId].data[0] = 36;
return;
@@ -1325,7 +1319,7 @@ void sub_80AC2CC(u8 taskId)
for (r2 = 0; r2 < 4; r2++)
{
if (r2 != r7 && gUnknown_02038696[r2] == i
- && sContestantStatus[r2].unk13 != 0xFF)
+ && sContestantStatus[r2].effectStringId != CONTEST_STRING_NONE)
{
r4 = 1;
break;
@@ -1337,8 +1331,8 @@ void sub_80AC2CC(u8 taskId)
if (r4)
{
gTasks[taskId].data[1] = gUnknown_02038696[r2];
- sub_80B146C(r2, sContestantStatus[r2].unk13);
- sContestantStatus[r2].unk13 = 0xFF;
+ sub_80B146C(r2, sContestantStatus[r2].effectStringId);
+ sContestantStatus[r2].effectStringId = CONTEST_STRING_NONE;
gTasks[taskId].data[0] = 27;
}
else
@@ -1357,7 +1351,7 @@ void sub_80AC2CC(u8 taskId)
case 28:
for (i = 0; gTasks[taskId].data[1] != gUnknown_02038696[i]; i++)
;
- sub_80AFBA0(sContestantStatus[i].appeal2 + sContestantStatus[i].unkE, -sContestantStatus[i].unkE, i);
+ sub_80AFBA0(sContestantStatus[i].appeal2 + sContestantStatus[i].jam, -sContestantStatus[i].jam, i);
gTasks[taskId].data[0] = 29;
return;
case 29:
@@ -1396,10 +1390,10 @@ void sub_80AC2CC(u8 taskId)
PlaySE(SE_C_PASI);
else
PlaySE(SE_C_SYU);
- if (sContestantStatus[i].unk15_5)
+ if (sContestantStatus[i].judgesAttentionWasRemoved)
{
sub_80B03A8(i);
- sContestantStatus[i].unk15_5 = 0;
+ sContestantStatus[i].judgesAttentionWasRemoved = 0;
}
gTasks[taskId].data[1]++;
gTasks[taskId].data[0] = 26;
@@ -1408,8 +1402,8 @@ void sub_80AC2CC(u8 taskId)
if (gTasks[taskId].data[10]++ > 9)
{
gTasks[taskId].data[10] = 0;
- if (sContestantStatus[r7].unkC_1 != 0
- || sContestantStatus[r7].unk11_2)
+ if (sContestantStatus[r7].numTurnsSkipped != 0
+ || sContestantStatus[r7].turnSkipped)
{
sub_80AF138();
StringCopy(gStringVar1, gContestMons[r7].nickname);
@@ -1466,7 +1460,7 @@ void sub_80AC2CC(u8 taskId)
{
if (++gTasks[taskId].data[10] > 50)
{
- if (!sContestantStatus[r7].unk15_4)
+ if (!sContestantStatus[r7].hasJudgesAttention)
{
sub_80AFBA0(
sContestantStatus[r7].appeal2,
@@ -1523,14 +1517,14 @@ void sub_80AC2CC(u8 taskId)
}
return;
case 41:
- if (shared19328.bits_8 && r7 != shared19328.bits_9)
+ if (shared19328.excitementFrozen && r7 != shared19328.excitementFreezer)
{
gTasks[taskId].data[0] = 57;
}
else
{
r4 = shared19328.bits_0;
- if (sContestantStatus[r7].unk11_4)
+ if (sContestantStatus[r7].overrideCategoryExcitementMod)
{
r4 = 1;
StringCopy(gStringVar3, gMoveNames[sContestantStatus[r7].currMove]);
@@ -1576,7 +1570,7 @@ void sub_80AC2CC(u8 taskId)
{
case 0:
sub_80B1EA8(-1, 1);
- PlayFanfare(BGM_ME_ZANNEN);
+ PlayFanfare(MUS_ME_ZANNEN);
gTasks[taskId].data[10]++;
break;
case 1:
@@ -1667,7 +1661,7 @@ void sub_80AC2CC(u8 taskId)
return;
case 57:
sub_80AF138();
- StringCopy(gStringVar3, gContestMons[shared19328.bits_9].nickname);
+ StringCopy(gStringVar3, gContestMons[shared19328.excitementFreezer].nickname);
StringCopy(gStringVar1, gContestMons[r7].nickname);
StringCopy(gStringVar2, gMoveNames[sContestantStatus[r7].currMove]);
StringExpandPlaceholders(gStringVar4, ContestString_CrowdWatches);
@@ -1691,8 +1685,8 @@ void sub_80AC2CC(u8 taskId)
}
return;
case 33:
- if (sContestantStatus[r7].unk15_4)
- sContestantStatus[r7].unk15_4 = 0;
+ if (sContestantStatus[r7].hasJudgesAttention)
+ sContestantStatus[r7].hasJudgesAttention = 0;
sub_80B09B0(r7);
StringCopy(gStringVar1, gContestMons[r7].nickname);
StringCopy(gStringVar2, gMoveNames[sContestantStatus[r7].currMove]);
@@ -2033,7 +2027,7 @@ void sub_80ADEEC(u8 taskId)
}
else
{
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gTasks[taskId].func = sub_80ADFD8;
}
}
@@ -2052,7 +2046,7 @@ void sub_80ADF4C(u8 taskId)
void sub_80ADF98(u8 taskId)
{
DestroyTask(taskId);
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gTasks[sContest.mainTaskId].func = sub_80ADFD8;
}
@@ -2129,9 +2123,9 @@ void Contest_CreatePlayerMon(u8 partyIndex)
}
memcpy(gContestMons[gContestPlayerMonIndex].trainerName, name, 8);
if (gSaveBlock2.playerGender == MALE)
- gContestMons[gContestPlayerMonIndex].trainerGfxId = MAP_OBJ_GFX_LINK_BRENDAN;
+ gContestMons[gContestPlayerMonIndex].trainerGfxId = EVENT_OBJ_GFX_LINK_BRENDAN;
else
- gContestMons[gContestPlayerMonIndex].trainerGfxId = MAP_OBJ_GFX_LINK_MAY;
+ gContestMons[gContestPlayerMonIndex].trainerGfxId = EVENT_OBJ_GFX_LINK_MAY;
gContestMons[gContestPlayerMonIndex].flags = 0;
gContestMons[gContestPlayerMonIndex].unk2C[0] = 0;
gContestMons[gContestPlayerMonIndex].species = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPECIES);
@@ -2665,14 +2659,14 @@ bool8 sub_80AEE54(u8 a, u8 b)
u16 r8;
s32 r4;
- if (sContestantStatus[a].unk10_4 == 0)
+ if (sContestantStatus[a].conditionMod == 0)
return FALSE;
r9 = gUnknown_02038696[a] * 5 + 2;
- if (sContestantStatus[a].unk10_4 == 1)
+ if (sContestantStatus[a].conditionMod == 1)
{
r8 = sub_80AEE4C(a);
r4 = 0;
- while (sContestantStatus[a].unkD / 10 > r4)
+ while (sContestantStatus[a].condition / 10 > r4)
{
*(u16 *)(VRAM + 0xC026 + (r9 + r4) * 64) = r8;
r4++;
@@ -2680,14 +2674,14 @@ bool8 sub_80AEE54(u8 a, u8 b)
if (b != 0)
{
PlaySE(SE_EXPMAX);
- sContestantStatus[a].unk10_4 = 0;
+ sContestantStatus[a].conditionMod = 0;
}
}
else
{
r8 = 0;
r4 = 3;
- while (sContestantStatus[a].unkD / 10 < r4)
+ while (sContestantStatus[a].condition / 10 < r4)
{
*(u16 *)(VRAM + 0xBFE6 + (r9 + r4) * 64) = r8;
r4--;
@@ -2695,7 +2689,7 @@ bool8 sub_80AEE54(u8 a, u8 b)
if (b != 0)
{
PlaySE(SE_FU_ZAKU2);
- sContestantStatus[a].unk10_4 = 0;
+ sContestantStatus[a].conditionMod = 0;
}
}
return TRUE;
@@ -2712,7 +2706,7 @@ void sub_80AEF50(void)
u16 r6 = sub_80AEE4C(i);
r4 = 0;
- while (r4 < sContestantStatus[i].unkD / 10)
+ while (r4 < sContestantStatus[i].condition / 10)
{
*(u16 *)(VRAM + 0xC026 + (r8 + r4) * 64) = r6;
r4++;
@@ -2758,11 +2752,11 @@ bool8 sub_80AF038(u8 a)
u16 r4 = 0;
u8 r6 = gUnknown_02038696[a] * 5 + 2;
- if (sContestantStatus[a].unk10_0 != 0 || sContestantStatus[a].unk10_1 != 0 || sContestantStatus[a].unk12 != 0 || sContestantStatus[a].unkF != 0)
+ if (sContestantStatus[a].resistant != 0 || sContestantStatus[a].immune != 0 || sContestantStatus[a].jamSafetyCount != 0 || sContestantStatus[a].jamReduction != 0)
r4 = sub_80AEFE8(a, 0);
- else if (sContestantStatus[a].unkC_0)
+ else if (sContestantStatus[a].nervous)
r4 = sub_80AEFE8(a, 1);
- else if (sContestantStatus[a].unkC_1 != 0 || sContestantStatus[a].unkB_7)
+ else if (sContestantStatus[a].numTurnsSkipped != 0 || sContestantStatus[a].noMoreTurns)
r4 = sub_80AEFE8(a, 2);
else
r5 = FALSE;
@@ -2936,7 +2930,7 @@ void sub_80AF3C0(void)
bool8 sub_80AF404(u8 a)
{
- if (sContestantStatus[a].unkC_1 != 0 || sContestantStatus[a].unkB_7)
+ if (sContestantStatus[a].numTurnsSkipped != 0 || sContestantStatus[a].noMoreTurns)
return FALSE;
else
return TRUE;
@@ -2951,34 +2945,34 @@ void sub_80AF438(void)
// This is bitfield hell...
sContestantStatus[i].appeal2 = 0;
sContestantStatus[i].appeal1 = 0;
- sContestantStatus[i].unk12 = 0;
- if (sContestantStatus[i].unkC_1 > 0)
- sContestantStatus[i].unkC_1--;
- sContestantStatus[i].unkE = 0;
- sContestantStatus[i].unk10_0 = 0;
- sContestantStatus[i].unkF = 0;
- sContestantStatus[i].unk10_1 = 0;
- sContestantStatus[i].unk10_2 = 0;
- sContestantStatus[i].unk10_3 = 0;
- sContestantStatus[i].unkC_0 = 0;
- sContestantStatus[i].unk13 = 0xFF;
- sContestantStatus[i].unk14 = -1;
- sContestantStatus[i].unk10_4 = 0;
+ sContestantStatus[i].jamSafetyCount = 0;
+ if (sContestantStatus[i].numTurnsSkipped > 0)
+ sContestantStatus[i].numTurnsSkipped--;
+ sContestantStatus[i].jam = 0;
+ sContestantStatus[i].resistant = 0;
+ sContestantStatus[i].jamReduction = 0;
+ sContestantStatus[i].immune = 0;
+ sContestantStatus[i].moreEasilyStartled = 0;
+ sContestantStatus[i].usedRepeatableMove = 0;
+ sContestantStatus[i].nervous = 0;
+ sContestantStatus[i].effectStringId = CONTEST_STRING_NONE;
+ sContestantStatus[i].effectStringId2 = CONTEST_STRING_NONE;
+ sContestantStatus[i].conditionMod = 0;
sContestantStatus[i].unk15_2 = sContestantStatus[i].disappointedRepeat;
sContestantStatus[i].disappointedRepeat = FALSE;
- sContestantStatus[i].unk11_0 = 0;
- sContestantStatus[i].unk11_5 = 0;
- if (sContestantStatus[i].unk11_2)
+ sContestantStatus[i].turnOrderModAction = 0;
+ sContestantStatus[i].appealTripleCondition = 0;
+ if (sContestantStatus[i].turnSkipped)
{
- sContestantStatus[i].unkC_1 = 1;
- sContestantStatus[i].unk11_2 = 0;
+ sContestantStatus[i].numTurnsSkipped = 1;
+ sContestantStatus[i].turnSkipped = 0;
}
- if (sContestantStatus[i].unk11_3)
+ if (sContestantStatus[i].exploded)
{
- sContestantStatus[i].unkB_7 = 1;
- sContestantStatus[i].unk11_3 = 0;
+ sContestantStatus[i].noMoreTurns = 1;
+ sContestantStatus[i].exploded = 0;
}
- sContestantStatus[i].unk11_4 = 0;
+ sContestantStatus[i].overrideCategoryExcitementMod = 0;
}
for (i = 0; i < 4; i++)
{
@@ -2987,12 +2981,12 @@ void sub_80AF438(void)
sContest.unk19248[sContest.turnNumber][i] = Contest_GetMoveExcitement(sContestantStatus[i].currMove);
sContestantStatus[i].currMove = MOVE_NONE;
}
- shared19328.bits_8 = 0;
+ shared19328.excitementFrozen = 0;
}
bool8 Contest_IsMonsTurnDisabled(u8 a)
{
- if (sContestantStatus[a].unkC_1 != 0 || sContestantStatus[a].unkB_7)
+ if (sContestantStatus[a].numTurnsSkipped != 0 || sContestantStatus[a].noMoreTurns)
return TRUE;
else
return FALSE;
@@ -3629,7 +3623,7 @@ void sub_80B03D8(u8 taskId)
{
gTasks[sContest.unk19211].data[r4 * 4 + 0] = 0xFF;
gTasks[sContest.unk19211].data[r4 * 4 + 1] = 0;
- BlendPalette((sContest.unk19218[r4] + 5) * 16 + 6, 2, 0, 0x4BFF);
+ BlendPalette((sContest.unk19218[r4] + 5) * 16 + 6, 2, 0, RGB(31, 31, 18));
DestroyTask(taskId);
}
}
@@ -3657,7 +3651,7 @@ void sub_80B0458(u8 taskId)
(sContest.unk19218[i] + 5) * 16 + 6,
2,
gTasks[taskId].data[r3 + 0],
- 0x4BFF);
+ RGB(31, 31, 18));
}
}
}
@@ -3737,8 +3731,8 @@ void sub_80B05FC(u8 taskId)
|| gTasks[taskId].data[r3 + 0] == 0)
gTasks[taskId].data[r3 + 1] ^= 1;
- BlendPalette((i + 5) * 16 + 10, 1, gTasks[taskId].data[r3 + 0], 0x4BFF);
- BlendPalette((i + 5) * 16 + 12 + i, 1, gTasks[taskId].data[r3 + 0], 0x4BFF);
+ BlendPalette((i + 5) * 16 + 10, 1, gTasks[taskId].data[r3 + 0], RGB(31, 31, 18));
+ BlendPalette((i + 5) * 16 + 12 + i, 1, gTasks[taskId].data[r3 + 0], RGB(31, 31, 18));
}
}
}
@@ -3789,7 +3783,7 @@ void sub_80B0748(u8 taskId)
{
//_080B07D2
r6 = 0;
- BlendPalette((r4 + 5) * 16 + 1, 3, r5, 0x7FFF);
+ BlendPalette((r4 + 5) * 16 + 1, 3, r5, RGB(31, 31, 31));
if (r5 == 0 && r8 == 4)
{
gTasks[taskId].data[r1 + 0] = 0;
@@ -3830,8 +3824,8 @@ void sub_80B0748(u8 taskId)
r8++;
if (r7 == 4 && r8 == 1)
{
- BlendPalette((r4 + 9) * 16 + 2, 1, 4, 0);
- BlendPalette((r4 + 9) * 16 + 5, 1, 4, 0);
+ BlendPalette((r4 + 9) * 16 + 2, 1, 4, RGB(0, 0, 0));
+ BlendPalette((r4 + 9) * 16 + 5, 1, 4, RGB(0, 0, 0));
}
}
}
@@ -3845,7 +3839,7 @@ void sub_80B0748(u8 taskId)
if (r6 == 12)
{
r6 = 0;
- BlendPalette((r4 + 5) * 16 + 1, 3, r5, 0);
+ BlendPalette((r4 + 5) * 16 + 1, 3, r5, RGB(0, 0, 0));
r5 += 1;
if (r5 == 5)
{
@@ -3882,7 +3876,7 @@ void sub_80B0748(u8 taskId)
#undef i
}
#else
-__attribute__((naked))
+NAKED
void sub_80B0748(u8 taskId)
{
asm(".syntax unified\n\
@@ -4196,7 +4190,7 @@ void unref_sub_80B0994(u8 a)
void sub_80B09B0(u8 a)
{
- if (sContestantStatus[a].unk15_4)
+ if (sContestantStatus[a].hasJudgesAttention)
sub_80B0368(a);
else
sub_80B03A8(a);
@@ -4530,34 +4524,34 @@ void sub_80B114C(u8 contestant)
}
sContestantStatus[contestant].appeal1 = gContestEffects[effect].appeal;
sContestantStatus[contestant].appeal2 = gContestEffects[effect].appeal;
- shared192D0.unk4 = gContestEffects[effect].jam;
- shared192D0.unk6 = gContestEffects[effect].jam;
- shared192D0.unk11 = contestant;
+ shared192D0.jam = gContestEffects[effect].jam;
+ shared192D0.jam2 = gContestEffects[effect].jam;
+ shared192D0.contestant = contestant;
for (i = 0; i < 4; i++)
{
- sContestantStatus[i].unkE = 0;
- shared192D0.unkD[i] = 0;
+ sContestantStatus[i].jam = 0;
+ shared192D0.unnervedPokes[i] = 0;
}
- if (sContestantStatus[contestant].unk15_4 && AreMovesContestCombo(sContestantStatus[contestant].prevMove, sContestantStatus[contestant].currMove) == 0)
- sContestantStatus[contestant].unk15_4 = 0;
+ if (sContestantStatus[contestant].hasJudgesAttention && AreMovesContestCombo(sContestantStatus[contestant].prevMove, sContestantStatus[contestant].currMove) == 0)
+ sContestantStatus[contestant].hasJudgesAttention = 0;
gContestEffectFuncs[effect]();
- if (sContestantStatus[contestant].unk10_4 == 1)
- sContestantStatus[contestant].appeal2 += sContestantStatus[contestant].unkD - 10;
- else if (sContestantStatus[contestant].unk11_5)
- sContestantStatus[contestant].appeal2 += sContestantStatus[contestant].unkD * 3;
+ if (sContestantStatus[contestant].conditionMod == 1)
+ sContestantStatus[contestant].appeal2 += sContestantStatus[contestant].condition - 10;
+ else if (sContestantStatus[contestant].appealTripleCondition)
+ sContestantStatus[contestant].appeal2 += sContestantStatus[contestant].condition * 3;
else
- sContestantStatus[contestant].appeal2 += sContestantStatus[contestant].unkD;
+ sContestantStatus[contestant].appeal2 += sContestantStatus[contestant].condition;
sContestantStatus[contestant].unk16 = 0;
sContestantStatus[contestant].unk15_6 = 0;
if (sub_80B214C(contestant))
{
u8 r2 = AreMovesContestCombo(sContestantStatus[contestant].prevMove, sContestantStatus[contestant].currMove);
- if (r2 != 0 && sContestantStatus[contestant].unk15_4)
+ if (r2 != 0 && sContestantStatus[contestant].hasJudgesAttention)
{
sContestantStatus[contestant].unk16 = r2;
sContestantStatus[contestant].unk15_6 = 1;
- sContestantStatus[contestant].unk15_4 = 0;
+ sContestantStatus[contestant].hasJudgesAttention = 0;
sContestantStatus[contestant].unk17 = sContestantStatus[contestant].appeal1 * sContestantStatus[contestant].unk16;
sContestantStatus[contestant].unk15_3 = 1;
}
@@ -4565,25 +4559,25 @@ void sub_80B114C(u8 contestant)
{
if (gContestMoves[sContestantStatus[contestant].currMove].comboStarterId != 0)
{
- sContestantStatus[contestant].unk15_4 = 1;
+ sContestantStatus[contestant].hasJudgesAttention = 1;
sContestantStatus[contestant].unk15_6 = 1;
}
else
{
- sContestantStatus[contestant].unk15_4 = 0;
+ sContestantStatus[contestant].hasJudgesAttention = 0;
}
}
}
if (sContestantStatus[contestant].disappointedRepeat)
sContestantStatus[contestant].unk18 = (sContestantStatus[contestant].moveRepeatCount + 1) * 10;
- if (sContestantStatus[contestant].unkC_0)
+ if (sContestantStatus[contestant].nervous)
{
- sContestantStatus[contestant].unk15_4 = 0;
+ sContestantStatus[contestant].hasJudgesAttention = 0;
sContestantStatus[contestant].appeal2 = 0;
sContestantStatus[contestant].appeal1 = 0;
}
shared19328.bits_0 = Contest_GetMoveExcitement(sContestantStatus[contestant].currMove);
- if (sContestantStatus[contestant].unk11_4)
+ if (sContestantStatus[contestant].overrideCategoryExcitementMod)
shared19328.bits_0 = 1;
if (shared19328.bits_0 > 0)
{
@@ -4611,52 +4605,52 @@ void sub_80B114C(u8 contestant)
}
}
-void sub_80B13EC(u8 a, u8 b)
+void SetContestantEffectStringID(u8 a, u8 b)
{
- sContestantStatus[a].unk13 = b;
+ sContestantStatus[a].effectStringId = b;
}
-void sub_80B1404(u8 a, u8 b)
+void SetContestantEffectStringID2(u8 a, u8 b)
{
- sContestantStatus[a].unk14 = b;
+ sContestantStatus[a].effectStringId2 = b;
}
-void sub_80B141C(u8 a, u8 b)
+void SetStartledString(u8 contestant, u8 jam)
{
- if (b >= 60)
- sub_80B13EC(a, 53);
- else if (b >= 40)
- sub_80B13EC(a, 52);
- else if (b >= 30)
- sub_80B13EC(a, 51);
- else if (b >= 20)
- sub_80B13EC(a, 50);
- else if (b >= 10)
- sub_80B13EC(a, 49);
+ if (jam >= 60)
+ SetContestantEffectStringID(contestant, CONTEST_STRING_TRIPPED_OVER);
+ else if (jam >= 40)
+ SetContestantEffectStringID(contestant, CONTEST_STRING_LEAPT_UP);
+ else if (jam >= 30)
+ SetContestantEffectStringID(contestant, CONTEST_STRING_UTTER_CRY);
+ else if (jam >= 20)
+ SetContestantEffectStringID(contestant, CONTEST_STRING_TURNED_BACK);
+ else if (jam >= 10)
+ SetContestantEffectStringID(contestant, CONTEST_STRING_LOOKED_DOWN);
}
-void sub_80B146C(u8 a, u8 b)
+void sub_80B146C(u8 contestant, u8 stringId)
{
- StringCopy(gStringVar1, gContestMons[a].nickname);
- StringCopy(gStringVar2, gMoveNames[sContestantStatus[a].currMove]);
- if (gContestMoves[sContestantStatus[shared192D0.unk11].currMove].contestCategory == CONTEST_CATEGORY_COOL)
+ StringCopy(gStringVar1, gContestMons[contestant].nickname);
+ StringCopy(gStringVar2, gMoveNames[sContestantStatus[contestant].currMove]);
+ if (gContestMoves[sContestantStatus[shared192D0.contestant].currMove].contestCategory == CONTEST_CATEGORY_COOL)
StringCopy(gStringVar3, gText_Contest_Shyness);
- else if (gContestMoves[sContestantStatus[shared192D0.unk11].currMove].contestCategory == CONTEST_CATEGORY_BEAUTY)
+ else if (gContestMoves[sContestantStatus[shared192D0.contestant].currMove].contestCategory == CONTEST_CATEGORY_BEAUTY)
StringCopy(gStringVar3, gText_Contest_Anxiety);
- else if (gContestMoves[sContestantStatus[shared192D0.unk11].currMove].contestCategory == CONTEST_CATEGORY_CUTE)
+ else if (gContestMoves[sContestantStatus[shared192D0.contestant].currMove].contestCategory == CONTEST_CATEGORY_CUTE)
StringCopy(gStringVar3, gText_Contest_Laziness);
- else if (gContestMoves[sContestantStatus[shared192D0.unk11].currMove].contestCategory == CONTEST_CATEGORY_SMART)
+ else if (gContestMoves[sContestantStatus[shared192D0.contestant].currMove].contestCategory == CONTEST_CATEGORY_SMART)
StringCopy(gStringVar3, gText_Contest_Hesitancy);
else
StringCopy(gStringVar3, gText_Contest_Fear);
- StringExpandPlaceholders(gStringVar4, gUnknown_083CC188[b]);
+ StringExpandPlaceholders(gStringVar4, gUnknown_083CC188[stringId]);
sub_80AF138();
Text_InitWindow8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15);
}
-void sub_80B157C(u8 p)
+void MakeContestantNervous(u8 p)
{
- sContestantStatus[p].unkC_0 = 1;
+ sContestantStatus[p].nervous = 1;
sContestantStatus[p].currMove = MOVE_NONE;
}
@@ -4679,7 +4673,7 @@ void sub_80B159C(void)
{
for (j = 0; j < 4; j++)
{
- if (sContestantStatus[j].unk19 == i)
+ if (sContestantStatus[j].nextTurnOrder == i)
{
sp0[j] = i;
sp4[j] = 1;
@@ -4690,7 +4684,7 @@ void sub_80B159C(void)
{
for (j = 0; j < 4; j++)
{
- if (sp4[j] == 0 && sContestantStatus[j].unk19 == 0xFF)
+ if (sp4[j] == 0 && sContestantStatus[j].nextTurnOrder == 0xFF)
{
r12 = j;
j++;
@@ -4699,7 +4693,7 @@ void sub_80B159C(void)
}
for (; j < 4; j++)
{
- if (sp4[j] == 0 && sContestantStatus[j].unk19 == 0xFF
+ if (sp4[j] == 0 && sContestantStatus[j].nextTurnOrder == 0xFF
&& gUnknown_02038696[r12] > gUnknown_02038696[j])
r12 = j;
}
@@ -4710,9 +4704,9 @@ void sub_80B159C(void)
for (i = 0; i < 4; i++)
{
- shared192D0.unk0[i] = sp0[i];
- sContestantStatus[i].unk19 = 0xFF;
- sContestantStatus[i].unk10_6 = 0;
+ shared192D0.turnOrder[i] = sp0[i];
+ sContestantStatus[i].nextTurnOrder = 0xFF;
+ sContestantStatus[i].turnOrderMod = 0;
gUnknown_02038696[i] = sp0[i];
}
}
@@ -4825,13 +4819,13 @@ void c3_08130B10(u8 taskId)
gTasks[taskId].data[4]++;
else
gTasks[taskId].data[4]--;
- BlendPalette(264 + gTasks[taskId].data[2] * 16, 1, gTasks[taskId].data[4], 0x7FFF);
+ BlendPalette(264 + gTasks[taskId].data[2] * 16, 1, gTasks[taskId].data[4], RGB(31, 31, 31));
if (gTasks[taskId].data[4] == 0 || gTasks[taskId].data[4] == 16)
{
gTasks[taskId].data[3] ^= 1;
if (sContest.applauseLevel < 5)
{
- BlendPalette(264 + gTasks[taskId].data[2] * 16, 1, 0, 31);
+ BlendPalette(264 + gTasks[taskId].data[2] * 16, 1, 0, RGB(31, 0, 0));
DestroyTask(taskId);
}
}
@@ -5055,7 +5049,7 @@ void sub_80B1FD0(bool8 a)
for (i = 0; i < 4; i++)
{
- if (sContestantStatus[i].unk10_6 != 0 && a)
+ if (sContestantStatus[i].turnOrderMod != 0 && a)
{
CpuCopy32(
GetTurnOrderNumberGfx(i),
@@ -5073,10 +5067,10 @@ void sub_80B1FD0(bool8 a)
const u8 *GetTurnOrderNumberGfx(u8 contestant)
{
- if (sContestantStatus[contestant].unk10_6 != 1)
+ if (sContestantStatus[contestant].turnOrderMod != 1)
return gContestNextTurnRandomGfx;
else
- return gContestNextTurnNumbersGfx + sContestantStatus[contestant].unk19 * 64;
+ return gContestNextTurnNumbersGfx + sContestantStatus[contestant].nextTurnOrder * 64;
}
void sub_80B20C4(void)
@@ -5085,7 +5079,7 @@ void sub_80B20C4(void)
for (i = 0; i < 4; i++)
{
- if (shared192D0.unkD[i] != 0 && !Contest_IsMonsTurnDisabled(i))
+ if (shared192D0.unnervedPokes[i] != 0 && !Contest_IsMonsTurnDisabled(i))
{
u8 r4 = gUnknown_02038696[i] * 5 + 2;
u16 r0 = sub_80AEFE8(i, 3);
@@ -5101,7 +5095,7 @@ void sub_80B20C4(void)
bool8 sub_80B214C(u8 a)
{
- if (sContestantStatus[a].disappointedRepeat || sContestantStatus[a].unkC_0)
+ if (sContestantStatus[a].disappointedRepeat || sContestantStatus[a].nervous)
return FALSE;
else
return TRUE;
@@ -5410,8 +5404,8 @@ void sub_80B2968(void)
sprite->pos2.x = 0;
sprite->pos2.y = 0;
- sprite->pos1.x = GetBankPosition(3, 0);
- sprite->pos1.y = GetBankPosition(3, 1);
+ sprite->pos1.x = GetBattlerSpriteCoord(3, 0);
+ sprite->pos1.y = GetBattlerSpriteCoord(3, 1);
sprite->invisible = TRUE;
}
diff --git a/src/contest_ai.c b/src/contest_ai.c
index 932f9fb8a..a6dde8afe 100644
--- a/src/contest_ai.c
+++ b/src/contest_ai.c
@@ -2,12 +2,9 @@
#include "contest.h"
#include "random.h"
#include "contest_ai.h"
+#include "contest_effect.h"
#include "ewram.h"
-extern u8 AreMovesContestCombo(u16, u16);
-extern bool8 sub_80B214C(u8);
-extern bool8 Contest_IsMonsTurnDisabled(u8);
-
extern u16 gSpecialVar_ContestCategory;
extern u8 *gAIScriptPtr;
@@ -383,7 +380,7 @@ static u8 sub_8128A7C(u8 var)
int i;
for(i = 0; i < 4; i++)
- if(shared192D0.unk0[i] == var)
+ if(shared192D0.turnOrder[i] == var)
break;
return i;
@@ -497,7 +494,7 @@ static void ContestAICmd_unk_0A(void)
static void ContestAICmd_get_user_order(void)
{
- eContestAI->scriptResult = shared192D0.unk0[eContestAI->unk41];
+ eContestAI->scriptResult = shared192D0.turnOrder[eContestAI->unk41];
gAIScriptPtr += 1;
}
@@ -543,7 +540,7 @@ static void ContestAICmd_unk_0F(void)
static void ContestAICmd_get_user_condition_maybe(void)
{
- eContestAI->scriptResult = sContestantStatus[eContestAI->unk41].unkD / 10;
+ eContestAI->scriptResult = sContestantStatus[eContestAI->unk41].condition / 10;
gAIScriptPtr += 1;
}
@@ -1150,7 +1147,7 @@ static void ContestAICmd_get_condition(void)
{
int var = sub_8128A7C(gAIScriptPtr[1]);
- eContestAI->scriptResult = sContestantStatus[var].unkD / 10;
+ eContestAI->scriptResult = sContestantStatus[var].condition / 10;
gAIScriptPtr += 2;
}
diff --git a/src/contest_effect.c b/src/contest_effect.c
new file mode 100644
index 000000000..a5615851f
--- /dev/null
+++ b/src/contest_effect.c
@@ -0,0 +1,1163 @@
+#include "global.h"
+#include "ewram.h"
+#include "random.h"
+#include "contest.h"
+
+static void ContestEffect_HighlyAppealing(void);
+static void ContestEffect_UserMoreEasilyStartled(void);
+static void ContestEffect_GreatAppealButNoMoreMoves(void);
+static void ContestEffect_RepetitionNotBoring(void);
+static void ContestEffect_AvoidStartleOnce(void);
+static void ContestEffect_AvoidStartle(void);
+static void ContestEffect_AvoidStartleSlightly(void);
+static void ContestEffect_UserLessEasilyStartled(void);
+static void ContestEffect_StartleFrontMon(void);
+static void ContestEffect_StartlePrevMons(void);
+static void ContestEffect_StartlePrevMon2(void);
+static void ContestEffect_StartlePrevMons2(void);
+static void ContestEffect_ShiftJudgeAttention(void);
+static void ContestEffect_StartleMonWithJudgesAttention(void);
+static void ContestEffect_JamsOthersButMissOneTurn(void);
+static void ContestEffect_StartleMonsSameTypeAppeal(void);
+static void ContestEffect_StartleMonsCoolAppeal(void);
+static void ContestEffect_StartleMonsBeautyAppeal(void);
+static void ContestEffect_StartleMonsCuteAppeal(void);
+static void ContestEffect_StartleMonsSmartAppeal(void);
+static void ContestEffect_StartleMonsToughAppeal(void);
+static void ContestEffect_MakeFollowingMonNervous(void);
+static void ContestEffect_MakeFollowingMonsNervous(void);
+static void ContestEffect_WorsenConditionOfPrevMons(void);
+static void ContestEffect_BadlyStartlesMonsInGoodCondition(void);
+static void ContestEffect_BetterIfFirst(void);
+static void ContestEffect_BetterIfLast(void);
+static void ContestEffect_AppealAsGoodAsPrevOnes(void);
+static void ContestEffect_AppealAsGoodAsPrevOne(void);
+static void ContestEffect_BetterWhenLater(void);
+static void ContestEffect_QualityDependsOnTiming(void);
+static void ContestEffect_BetterIfSameType(void);
+static void ContestEffect_BetterIfDiffType(void);
+static void ContestEffect_AffectedByPrevAppeal(void);
+static void ContestEffect_ImproveConditionPreventNervousness(void);
+static void ContestEffect_BetterWithGoodCondition(void);
+static void ContestEffect_NextAppealEarlier(void);
+static void ContestEffect_NextAppealLater(void);
+static void ContestEffect_MakeScramblingTurnOrderEasier(void);
+static void ContestEffect_ScrambleNextTurnOrder(void);
+static void ContestEffect_ExciteAudienceInAnyContest(void);
+static void ContestEffect_BadlyStartleMonsWithGoodAppeals(void);
+static void ContestEffect_BetterWhenAudienceExcited(void);
+static void ContestEffect_DontExciteAudience(void);
+static void JamByMoveCategory(u8);
+static bool8 CanUnnerveContestant(u8);
+static u8 WasAtLeastOneOpponentJammed(void);
+static void JamContestant(u8, u8);
+static s16 RoundTowardsZero(s16);
+static s16 RoundUp(s16);
+
+#include "data/contest_moves.h"
+
+bool8 AreMovesContestCombo(u16 lastMove, u16 nextMove) {
+ u8 nextMoveComboMoves[4];
+ u8 lastMoveComboStarterId = gContestMoves[lastMove].comboStarterId;
+ nextMoveComboMoves[0] = gContestMoves[nextMove].comboMoves[0];
+ nextMoveComboMoves[1] = gContestMoves[nextMove].comboMoves[1];
+ nextMoveComboMoves[2] = gContestMoves[nextMove].comboMoves[2];
+ nextMoveComboMoves[3] = gContestMoves[nextMove].comboMoves[3];
+
+ if (lastMoveComboStarterId == 0)
+ return 0;
+
+ if (lastMoveComboStarterId == nextMoveComboMoves[0] || lastMoveComboStarterId == nextMoveComboMoves[1] || lastMoveComboStarterId == nextMoveComboMoves[2] || lastMoveComboStarterId == nextMoveComboMoves[3])
+ return gComboStarterLookupTable[lastMoveComboStarterId];
+
+ return 0;
+}
+
+// A highly appealing move.
+static void ContestEffect_HighlyAppealing(void)
+{
+}
+
+// After this move, the user is more easily startled.
+static void ContestEffect_UserMoreEasilyStartled(void)
+{
+ sContestantStatus[shared192D0.contestant].moreEasilyStartled = TRUE;
+ SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_MORE_CONSCIOUS);
+}
+
+// Makes a great appeal, but allows no more to the end.
+static void ContestEffect_GreatAppealButNoMoreMoves(void)
+{
+ sContestantStatus[shared192D0.contestant].exploded = TRUE;
+ SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_NO_APPEAL);
+}
+
+// Can be used repeatedly without boring the JUDGE.
+static void ContestEffect_RepetitionNotBoring(void)
+{
+ sContestantStatus[shared192D0.contestant].usedRepeatableMove = TRUE;
+ sContestantStatus[shared192D0.contestant].disappointedRepeat = FALSE;
+ sContestantStatus[shared192D0.contestant].moveRepeatCount = 0;
+}
+
+// Can avoid being startled by others once.
+static void ContestEffect_AvoidStartleOnce(void)
+{
+ sContestantStatus[shared192D0.contestant].jamSafetyCount = 1;
+ SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_SETTLE_DOWN);
+}
+
+// Can avoid being startled by others.
+static void ContestEffect_AvoidStartle(void)
+{
+ sContestantStatus[shared192D0.contestant].immune = TRUE;
+ SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_OBLIVIOUS_TO_OTHERS);
+}
+
+// Can avoid being startled by others a little.
+static void ContestEffect_AvoidStartleSlightly(void)
+{
+ sContestantStatus[shared192D0.contestant].jamReduction = 20;
+ SetContestantEffectStringID(shared192D0.contestant,CONTEST_STRING_LESS_AWARE);
+}
+
+// After this move, the user is less likely to be startled.
+static void ContestEffect_UserLessEasilyStartled(void)
+{
+ sContestantStatus[shared192D0.contestant].resistant = TRUE;
+ SetContestantEffectStringID(shared192D0.contestant,CONTEST_STRING_STOPPED_CARING);
+}
+
+// Slightly startles the POKéMON in front.
+static void ContestEffect_StartleFrontMon(void)
+{
+ u8 idx = 0;
+ u8 a = shared192D0.contestant;
+
+ if (shared192D0.turnOrder[a] != 0) {
+ int i;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (shared192D0.turnOrder[a] - 1 == shared192D0.turnOrder[i])
+ break;
+ }
+ shared192D0.jamQueue[0] = i;
+ shared192D0.jamQueue[1] = 0xFF;
+ idx = WasAtLeastOneOpponentJammed();
+ }
+ if (idx == 0)
+ SetContestantEffectStringID2(shared192D0.contestant, CONTEST_STRING_MESSED_UP2);
+ SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_ATTEMPT_STARTLE);
+}
+
+// Slightly startles those that have made appeals.
+static void ContestEffect_StartlePrevMons(void)
+{
+ u8 idx = 0;
+ u8 a = shared192D0.contestant;
+
+ if (shared192D0.turnOrder[a] != 0) {
+ int i;
+ int j = 0;
+
+ for (i = 0; i < 4; i++)
+ if (shared192D0.turnOrder[a] > shared192D0.turnOrder[i])
+ shared192D0.jamQueue[j++] = i;
+ shared192D0.jamQueue[j] = 0xFF;
+ idx = WasAtLeastOneOpponentJammed();
+ }
+ if (idx == 0)
+ SetContestantEffectStringID2(shared192D0.contestant, CONTEST_STRING_MESSED_UP2);
+ SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_ATTEMPT_STARTLE);
+}
+
+// Startles the POKéMON that appealed before the user.
+static void ContestEffect_StartlePrevMon2(void)
+{
+ u8 rval = Random() % 10;
+ int jam;
+
+ if (rval < 2)
+ jam = 20;
+ else if (rval < 8)
+ jam = 40;
+ else
+ jam = 60;
+ shared192D0.jam = jam;
+ ContestEffect_StartleFrontMon();
+}
+
+// Startles all POKéMON that appealed before the user.
+static void ContestEffect_StartlePrevMons2(void)
+{
+ u8 numStartled = 0;
+ u8 contestant = shared192D0.contestant;
+
+ if (shared192D0.turnOrder[contestant] != 0)
+ {
+ int i;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (shared192D0.turnOrder[contestant] > shared192D0.turnOrder[i])
+ {
+ shared192D0.jamQueue[0] = i;
+ shared192D0.jamQueue[1] = 0xFF;
+ {
+ u8 rval = Random() % 10;
+ int jam;
+
+ if (rval == 0)
+ jam = 0;
+ else if (rval <= 2)
+ jam = 10;
+ else if (rval <= 4)
+ jam = 20;
+ else if (rval <= 6)
+ jam = 30;
+ else if (rval <= 8)
+ jam = 40;
+ else
+ jam = 60;
+ shared192D0.jam = jam;
+ }
+ if (WasAtLeastOneOpponentJammed())
+ numStartled++;
+ }
+ }
+ }
+ SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_ATTEMPT_STARTLE);
+ if (numStartled == 0)
+ SetContestantEffectStringID2(shared192D0.contestant, CONTEST_STRING_MESSED_UP2);
+}
+
+// Shifts the JUDGE’s attention from others.
+static void ContestEffect_ShiftJudgeAttention(void)
+{
+ bool32 hitAny = FALSE;
+ u8 contestant = shared192D0.contestant;
+
+ if (shared192D0.turnOrder[shared192D0.contestant] != 0)
+ {
+ int i;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (shared192D0.turnOrder[contestant] > shared192D0.turnOrder[i] &&
+ sContestantStatus[i].hasJudgesAttention &&
+ CanUnnerveContestant(i))
+ {
+ sContestantStatus[i].hasJudgesAttention = FALSE;
+ sContestantStatus[i].judgesAttentionWasRemoved = TRUE;
+ SetContestantEffectStringID(i, CONTEST_STRING_JUDGE_LOOK_AWAY2);
+ hitAny = TRUE;
+ }
+ }
+ }
+ SetContestantEffectStringID(shared192D0.contestant,CONTEST_STRING_DAZZLE_ATTEMPT);
+ if (!hitAny)
+ {
+ SetContestantEffectStringID2(shared192D0.contestant, CONTEST_STRING_MESSED_UP2);
+ }
+}
+
+// Startles the POKéMON that has the JUDGE’s attention.
+static void ContestEffect_StartleMonWithJudgesAttention(void)
+{
+ u8 numStartled = 0;
+ u8 contestant = shared192D0.contestant;
+
+ if (shared192D0.turnOrder[shared192D0.contestant] != 0)
+ {
+ int i;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (shared192D0.turnOrder[contestant] > shared192D0.turnOrder[i])
+ {
+ if (sContestantStatus[i].hasJudgesAttention)
+ shared192D0.jam = 50;
+ else
+ shared192D0.jam = 10;
+ shared192D0.jamQueue[0] = i;
+ shared192D0.jamQueue[1] = 0xFF;
+ if (WasAtLeastOneOpponentJammed())
+ numStartled++;
+ }
+ }
+ }
+ SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_ATTEMPT_STARTLE);
+ if (numStartled == 0)
+ SetContestantEffectStringID2(shared192D0.contestant, CONTEST_STRING_MESSED_UP2);
+}
+
+// Jams the others, and misses one turn of appeals.
+static void ContestEffect_JamsOthersButMissOneTurn(void)
+{
+ sContestantStatus[shared192D0.contestant].turnSkipped = TRUE;
+ ContestEffect_StartlePrevMons();
+ SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_ATTEMPT_STARTLE);
+}
+
+// Startles POKéMON that made a same-type appeal.
+static void ContestEffect_StartleMonsSameTypeAppeal(void)
+{
+ u16 move = sContestantStatus[shared192D0.contestant].currMove;
+ JamByMoveCategory(gContestMoves[move].contestCategory);
+ SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_ATTEMPT_STARTLE);
+}
+
+// Badly startles POKéMON that made COOL appeals.
+static void ContestEffect_StartleMonsCoolAppeal(void)
+{
+ JamByMoveCategory(CONTEST_CATEGORY_COOL);
+ SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_ATTEMPT_STARTLE);
+}
+
+// Badly startles POKéMON that made BEAUTY appeals.
+static void ContestEffect_StartleMonsBeautyAppeal(void)
+{
+ JamByMoveCategory(CONTEST_CATEGORY_BEAUTY);
+ SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_ATTEMPT_STARTLE);
+}
+
+// Badly startles POKéMON that made CUTE appeals.
+static void ContestEffect_StartleMonsCuteAppeal(void)
+{
+ JamByMoveCategory(CONTEST_CATEGORY_CUTE);
+ SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_ATTEMPT_STARTLE);
+}
+
+// Badly startles POKéMON that made SMART appeals.
+static void ContestEffect_StartleMonsSmartAppeal(void)
+{
+ JamByMoveCategory(CONTEST_CATEGORY_SMART);
+ SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_ATTEMPT_STARTLE);
+}
+
+// Badly startles POKéMON that made TOUGH appeals.
+static void ContestEffect_StartleMonsToughAppeal(void)
+{
+ JamByMoveCategory(CONTEST_CATEGORY_TOUGH);
+ SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_ATTEMPT_STARTLE);
+}
+
+// Makes one POKéMON after the user nervous.
+static void ContestEffect_MakeFollowingMonNervous(void)
+{
+ bool32 hitAny = FALSE;
+
+ if (shared192D0.turnOrder[shared192D0.contestant] != 3)
+ {
+ int i;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (shared192D0.turnOrder[shared192D0.contestant] + 1 == shared192D0.turnOrder[i])
+ {
+ if (CanUnnerveContestant(i))
+ {
+ MakeContestantNervous(i);
+ SetContestantEffectStringID(i, CONTEST_STRING_NERVOUS);
+ hitAny = TRUE;
+ }
+ else
+ {
+ SetContestantEffectStringID(i, CONTEST_STRING_UNAFFECTED);
+ hitAny = TRUE;
+ }
+ }
+ }
+ }
+ SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_UNNERVE_ATTEMPT);
+ if (!hitAny)
+ SetContestantEffectStringID2(shared192D0.contestant, CONTEST_STRING_MESSED_UP2);
+}
+
+// Makes all POKéMON after the user nervous.
+static void ContestEffect_MakeFollowingMonsNervous(void)
+{
+ u8 numUnnerved = 0;
+ bool32 contestantUnnerved = FALSE;
+ u8 contestantIds[5];
+ int i;
+ int numAfter;
+ s16 oddsMod[4];
+ s16 odds[4];
+
+ memset(contestantIds, 0xFF, ARRAY_COUNT(contestantIds));
+ for (i = 0, numAfter = 0; i < 4; i++)
+ {
+ if (shared192D0.turnOrder[shared192D0.contestant] < shared192D0.turnOrder[i] &&
+ !sContestantStatus[i].nervous && !Contest_IsMonsTurnDisabled(i))
+ contestantIds[numAfter++] = i;
+ }
+
+ if (numAfter == 1)
+ {
+ odds[0] = 60;
+ }
+ else if (numAfter == 2)
+ {
+ odds[0] = 30;
+ odds[1] = 30;
+ }
+ else if (numAfter == 3)
+ {
+ odds[0] = 20;
+ odds[1] = 20;
+ odds[2] = 20;
+ }
+ else
+ {
+ for (i = 0; i < 4; i++)
+ odds[i] = 0;
+ }
+ for (i = 0; i < 4; i++)
+ {
+ if (sContestantStatus[i].hasJudgesAttention && sub_80B214C(i))
+ oddsMod[i] = gComboStarterLookupTable[gContestMoves[sContestantStatus[i].prevMove].comboStarterId] * 10;
+ else
+ oddsMod[i] = 0;
+ oddsMod[i] -= (sContestantStatus[i].condition / 10) * 10;
+ }
+ if (odds[0] != 0)
+ {
+ for (i = 0; contestantIds[i] != 0xFF; i++)
+ {
+ if (Random() % 100 < odds[i] + oddsMod[contestantIds[i]])
+ {
+ if (CanUnnerveContestant(contestantIds[i]))
+ {
+ MakeContestantNervous(contestantIds[i]);
+ SetContestantEffectStringID(contestantIds[i], CONTEST_STRING_NERVOUS);
+ numUnnerved++;
+ } else
+ contestantUnnerved = TRUE;
+ } else
+ contestantUnnerved = TRUE;
+ if (contestantUnnerved)
+ {
+ contestantUnnerved = FALSE;
+ SetContestantEffectStringID(contestantIds[i], CONTEST_STRING_UNAFFECTED);
+ numUnnerved++;
+ }
+ shared192D0.unnervedPokes[contestantIds[i]] = 1;
+ }
+ }
+ SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_UNNERVE_WAITING);
+ if (numUnnerved == 0)
+ SetContestantEffectStringID2(shared192D0.contestant, CONTEST_STRING_MESSED_UP2);
+}
+
+// Worsens the condition of those that made appeals.
+static void ContestEffect_WorsenConditionOfPrevMons(void)
+{
+ u8 numHit = 0;
+ int i;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (shared192D0.turnOrder[shared192D0.contestant] > shared192D0.turnOrder[i] &&
+ sContestantStatus[i].condition > 0 &&
+ CanUnnerveContestant(i))
+ {
+ sContestantStatus[i].condition = 0;
+ sContestantStatus[i].conditionMod = 2;
+ SetContestantEffectStringID(i, CONTEST_STRING_REGAINED_FORM);
+ numHit++;
+ }
+ }
+
+ SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_TAUNT_WELL);
+ if (numHit == 0)
+ SetContestantEffectStringID2(shared192D0.contestant, CONTEST_STRING_IGNORED);
+}
+
+// Badly startles POKéMON in good condition.
+static void ContestEffect_BadlyStartlesMonsInGoodCondition(void)
+{
+ u8 numHit = 0;
+ int i;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (shared192D0.turnOrder[shared192D0.contestant] > shared192D0.turnOrder[i])
+ {
+ if (sContestantStatus[i].condition > 0)
+ shared192D0.jam = 40;
+ else
+ shared192D0.jam = 10;
+ shared192D0.jamQueue[0] = i;
+ shared192D0.jamQueue[1] = 0xFF;
+ if (WasAtLeastOneOpponentJammed())
+ numHit++;
+ }
+ }
+ SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_JAM_WELL);
+ if (numHit == 0)
+ SetContestantEffectStringID2(shared192D0.contestant, CONTEST_STRING_IGNORED);
+}
+
+// The appeal works great if performed first.
+static void ContestEffect_BetterIfFirst(void)
+{
+ if (gUnknown_02038696[shared192D0.contestant] == 0)
+ {
+ u16 move = sContestantStatus[shared192D0.contestant].currMove;
+ sContestantStatus[shared192D0.contestant].appeal2 += 2 * gContestEffects[gContestMoves[move].effect].appeal;
+ SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_HUSTLE_STANDOUT);
+ }
+}
+
+// The appeal works great if performed last.
+static void ContestEffect_BetterIfLast(void)
+{
+ if (gUnknown_02038696[shared192D0.contestant] == 3)
+ {
+ u16 move = sContestantStatus[shared192D0.contestant].currMove;
+ sContestantStatus[shared192D0.contestant].appeal2 += 2 * gContestEffects[gContestMoves[move].effect].appeal;
+ SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_WORK_HARD_UNNOTICED);
+ }
+}
+
+// Makes the appeal as good as those before it.
+static void ContestEffect_AppealAsGoodAsPrevOnes(void)
+{
+ int i;
+ int appealSum;
+
+ for (i = 0, appealSum = 0; i < 4; i++)
+ {
+ if (shared192D0.turnOrder[shared192D0.contestant] > shared192D0.turnOrder[i])
+ appealSum += sContestantStatus[i].appeal2;
+ }
+ if (appealSum < 0)
+ appealSum = 0;
+ if (shared192D0.turnOrder[shared192D0.contestant] == 0 || appealSum == 0)
+ SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_NOT_WELL);
+ else
+ {
+ sContestantStatus[shared192D0.contestant].appeal2 += appealSum / 2;
+ SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_WORK_BEFORE);
+ }
+ sContestantStatus[shared192D0.contestant].appeal2 = RoundTowardsZero(sContestantStatus[shared192D0.contestant].appeal2);
+}
+
+// Makes the appeal as good as the one before it.
+static void ContestEffect_AppealAsGoodAsPrevOne(void)
+{
+ s16 appeal = 0;
+
+ if (shared192D0.turnOrder[shared192D0.contestant] != 0)
+ {
+ int i;
+ for (i = 0; i < 4; i++)
+ {
+ if (shared192D0.turnOrder[shared192D0.contestant] - 1 == shared192D0.turnOrder[i])
+ appeal = sContestantStatus[i].appeal2;
+ }
+ }
+ if (shared192D0.turnOrder[shared192D0.contestant] == 0 || appeal <= 0)
+ SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_NOT_WELL2);
+ else
+ {
+ sContestantStatus[shared192D0.contestant].appeal2 += appeal;
+ SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_WORK_PRECEDING);
+ }
+}
+
+// The appeal works better the later it is performed.
+static void ContestEffect_BetterWhenLater(void)
+{
+ u8 whichTurn = shared192D0.turnOrder[shared192D0.contestant];
+ if (whichTurn == 0)
+ sContestantStatus[shared192D0.contestant].appeal2 = 10;
+ else
+ sContestantStatus[shared192D0.contestant].appeal2 = 20 * whichTurn;
+ if (whichTurn == 0)
+ SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_NOT_SHOWN_WELL);
+ else if (whichTurn == 1)
+ SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_SLIGHTLY_WELL);
+ else if (whichTurn == 2)
+ SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_PRETTY_WELL);
+ else
+ SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_EXCELLENTLY);
+}
+
+// The appeal’s quality varies depending on its timing.
+static void ContestEffect_QualityDependsOnTiming(void)
+{
+ u8 rval = Random() % 10;
+ s16 appeal;
+
+ if (rval < 3)
+ {
+ appeal = 10;
+ SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_NOT_VERY_WELL);
+ } else if (rval < 6)
+ {
+ appeal = 20;
+ SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_SLIGHTLY_WELL2);
+ } else if (rval < 8)
+ {
+ appeal = 40;
+ SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_PRETTY_WELL2);
+ } else if (rval < 9)
+ {
+ appeal = 60;
+ SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_VERY_WELL);
+ }
+ else
+ {
+ appeal = 80;
+ SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_EXCELLENTLY2);
+ }
+ sContestantStatus[shared192D0.contestant].appeal2 = appeal;
+}
+
+#ifdef NONMATCHING
+// Not even close, send help
+// Works well if it’s the same type as the one before.
+static void ContestEffect_BetterIfSameType(void)
+{
+ s8 r4;
+ s8 r2;
+
+ for (r4 = shared192D0.turnOrder[shared192D0.contestant]; r4 > 0; r4--)
+ {
+ for (r2 = 0; r2 < 4; r2++)
+ {
+ if (shared192D0.turnOrder[r2] == r4 - 1)
+ break;
+ }
+ if (!(sContestantStatus[r2].noMoreTurns || sContestantStatus[r2].nervous || sContestantStatus[r2].numTurnsSkipped))
+ {
+ u16 move = sContestantStatus[shared192D0.contestant].currMove;
+
+ if (gContestMoves[move].contestCategory == gContestMoves[sContestantStatus[r2].currMove].contestCategory)
+ {
+ sContestantStatus[shared192D0.contestant].appeal2 += gContestEffects[gContestMoves[move].effect].appeal * 2;
+ SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_SAME_TYPE_GOOD);
+ }
+ break;
+ }
+ }
+}
+#else
+NAKED void ContestEffect_BetterIfSameType(void)
+{
+ asm_unified("\tpush {r4-r7,lr}\n"
+ "\tldr r1, _080B8940 @ =gSharedMem + 0x192D0\n"
+ "\tldrb r0, [r1, 0x11]\n"
+ "\tadds r0, r1\n"
+ "\tmovs r2, 0\n"
+ "\tldrsb r2, [r0, r2]\n"
+ "\tsubs r0, r2, 0x1\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r4, r0, 24\n"
+ "\tmov r12, r1\n"
+ "\tcmp r2, 0\n"
+ "\tbeq _080B8994\n"
+ "\tldrb r5, [r1]\n"
+ "\tmov r6, r12\n"
+ "\tsubs r6, 0x70\n"
+ "_080B88EA:\n"
+ "\tmovs r2, 0\n"
+ "\tlsls r0, r4, 24\n"
+ "\tasrs r1, r0, 24\n"
+ "\tadds r4, r0, 0\n"
+ "\tcmp r5, r1\n"
+ "\tbeq _080B8910\n"
+ "\tldr r3, _080B8940 @ =gSharedMem + 0x192D0\n"
+ "_080B88F8:\n"
+ "\tlsls r0, r2, 24\n"
+ "\tmovs r2, 0x80\n"
+ "\tlsls r2, 17\n"
+ "\tadds r0, r2\n"
+ "\tlsrs r2, r0, 24\n"
+ "\tasrs r0, 24\n"
+ "\tcmp r0, 0x3\n"
+ "\tbgt _080B8910\n"
+ "\tadds r0, r3\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r0, r1\n"
+ "\tbne _080B88F8\n"
+ "_080B8910:\n"
+ "\tlsls r2, 24\n"
+ "\tasrs r1, r2, 24\n"
+ "\tlsls r0, r1, 3\n"
+ "\tsubs r0, r1\n"
+ "\tlsls r0, 2\n"
+ "\tadds r3, r0, r6\n"
+ "\tldrb r1, [r3, 0xB]\n"
+ "\tmovs r0, 0x80\n"
+ "\tands r0, r1\n"
+ "\tadds r7, r2, 0\n"
+ "\tcmp r0, 0\n"
+ "\tbne _080B8932\n"
+ "\tldrb r1, [r3, 0xC]\n"
+ "\tmovs r0, 0x7\n"
+ "\tands r0, r1\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _080B8944\n"
+ "_080B8932:\n"
+ "\tmovs r1, 0xFF\n"
+ "\tlsls r1, 24\n"
+ "\tadds r0, r4, r1\n"
+ "\tlsrs r4, r0, 24\n"
+ "\tcmp r0, 0\n"
+ "\tblt _080B8994\n"
+ "\tb _080B88EA\n"
+ "\t.align 2, 0\n"
+ "_080B8940: .4byte gSharedMem + 0x192D0\n"
+ "_080B8944:\n"
+ "\tmov r2, r12\n"
+ "\tldrb r1, [r2, 0x11]\n"
+ "\tlsls r0, r1, 3\n"
+ "\tsubs r0, r1\n"
+ "\tlsls r0, 2\n"
+ "\tmov r3, r12\n"
+ "\tsubs r3, 0x70\n"
+ "\tadds r5, r0, r3\n"
+ "\tldrh r0, [r5, 0x6]\n"
+ "\tldr r4, _080B899C @ =gContestMoves\n"
+ "\tlsls r0, 3\n"
+ "\tadds r6, r0, r4\n"
+ "\tldrb r2, [r6, 0x1]\n"
+ "\tlsls r2, 29\n"
+ "\tasrs r1, r7, 24\n"
+ "\tlsls r0, r1, 3\n"
+ "\tsubs r0, r1\n"
+ "\tlsls r0, 2\n"
+ "\tadds r0, r3\n"
+ "\tldrh r0, [r0, 0x6]\n"
+ "\tlsls r0, 3\n"
+ "\tadds r0, r4\n"
+ "\tldrb r0, [r0, 0x1]\n"
+ "\tlsls r0, 29\n"
+ "\tcmp r2, r0\n"
+ "\tbne _080B8994\n"
+ "\tldr r1, _080B89A0 @ =gContestEffects\n"
+ "\tldrb r0, [r6]\n"
+ "\tlsls r0, 2\n"
+ "\tadds r0, r1\n"
+ "\tldrb r0, [r0, 0x1]\n"
+ "\tlsls r0, 1\n"
+ "\tldrh r1, [r5, 0x2]\n"
+ "\tadds r0, r1\n"
+ "\tstrh r0, [r5, 0x2]\n"
+ "\tmov r2, r12\n"
+ "\tldrb r0, [r2, 0x11]\n"
+ "\tmovs r1, 0x1F\n"
+ "\tbl SetContestantEffectStringID\n"
+ "_080B8994:\n"
+ "\tpop {r4-r7}\n"
+ "\tpop {r0}\n"
+ "\tbx r0\n"
+ "\t.align 2, 0\n"
+ "_080B899C: .4byte gContestMoves\n"
+ "_080B89A0: .4byte gContestEffects");
+}
+#endif
+
+// Works well if different in type than the one before.
+static void ContestEffect_BetterIfDiffType(void)
+{
+ if (shared192D0.turnOrder[shared192D0.contestant] != 0)
+ {
+ u16 move = sContestantStatus[shared192D0.contestant].currMove;
+ int i;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (shared192D0.turnOrder[shared192D0.contestant] - 1 == shared192D0.turnOrder[i] &&
+ gContestMoves[move].contestCategory != gContestMoves[sContestantStatus[i].currMove].contestCategory)
+ {
+ sContestantStatus[shared192D0.contestant].appeal2 += gContestEffects[gContestMoves[move].effect].appeal * 2;
+ SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_DIFF_TYPE_GOOD);
+ break;
+ }
+ }
+ }
+}
+
+// Affected by how well the appeal in front goes.
+static void ContestEffect_AffectedByPrevAppeal(void)
+{
+ if (shared192D0.turnOrder[shared192D0.contestant] != 0)
+ {
+ int i;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (shared192D0.turnOrder[shared192D0.contestant] - 1 == shared192D0.turnOrder[i])
+ {
+ if (sContestantStatus[shared192D0.contestant].appeal2 > sContestantStatus[i].appeal2)
+ {
+ sContestantStatus[shared192D0.contestant].appeal2 *= 2;
+ SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_STOOD_OUT_AS_MUCH);
+ }
+ else if (sContestantStatus[shared192D0.contestant].appeal2 < sContestantStatus[i].appeal2)
+ {
+ sContestantStatus[shared192D0.contestant].appeal2 = 0;
+ SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_NOT_AS_WELL);
+ }
+ }
+ }
+ }
+}
+
+// Ups the user’s condition. Helps prevent nervousness.
+static void ContestEffect_ImproveConditionPreventNervousness(void)
+{
+ if (sContestantStatus[shared192D0.contestant].condition < 30)
+ {
+ sContestantStatus[shared192D0.contestant].condition += 10;
+ sContestantStatus[shared192D0.contestant].conditionMod = 1;
+ SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_CONDITION_ROSE);
+ }
+ else
+ SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_NO_CONDITION_IMPROVE);
+}
+
+// The appeal works well if the user’s condition is good.
+static void ContestEffect_BetterWithGoodCondition(void)
+{
+ sContestantStatus[shared192D0.contestant].appealTripleCondition = TRUE;
+ if (sContestantStatus[shared192D0.contestant].condition != 0)
+ SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_HOT_STATUS);
+ else
+ SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_BAD_CONDITION_WEAK_APPEAL);
+}
+
+// The next appeal can be made earlier next turn.
+static void ContestEffect_NextAppealEarlier(void)
+{
+ s8 i;
+ s8 j;
+ u8 turnOrder[4];
+
+ if (sContest.turnNumber != 4)
+ {
+ for (i = 0; i < 4; i++)
+ turnOrder[i] = sContestantStatus[i].nextTurnOrder;
+
+ turnOrder[shared192D0.contestant] = 0xFF;
+
+ for (i = 0; i < 4; i++)
+ {
+ for (j = 0; j < 4; j++)
+ {
+ if (j != shared192D0.contestant &&
+ i == turnOrder[j] &&
+ turnOrder[j] == sContestantStatus[j].nextTurnOrder)
+ {
+ turnOrder[j]++;
+ break;
+ }
+ }
+ if (j == 4)
+ break;
+ }
+
+ turnOrder[shared192D0.contestant] = 0;
+ sContestantStatus[shared192D0.contestant].turnOrderMod = 1;
+
+ for (i = 0; i < 4; i++)
+ {
+ sContestantStatus[i].nextTurnOrder = turnOrder[i];
+ }
+ sContestantStatus[shared192D0.contestant].turnOrderModAction = 1;
+ SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_MOVE_UP_LINE);
+ }
+}
+
+// The next appeal can be made later next turn.
+static void ContestEffect_NextAppealLater(void)
+{
+ s8 i;
+ s8 j;
+ u8 turnOrder[4];
+
+ if (sContest.turnNumber != 4)
+ {
+ for (i = 0; i < 4; i++)
+ turnOrder[i] = sContestantStatus[i].nextTurnOrder;
+
+ turnOrder[shared192D0.contestant] = 0xFF;
+
+ for (i = 3; i > -1; i--)
+ {
+ for (j = 0; j < 4; j++)
+ {
+ if (j != shared192D0.contestant &&
+ i == turnOrder[j] &&
+ turnOrder[j] == sContestantStatus[j].nextTurnOrder)
+ {
+ turnOrder[j]--;
+ break;
+ }
+ }
+ if (j == 4)
+ break;
+ }
+
+ turnOrder[shared192D0.contestant] = 3;
+ sContestantStatus[shared192D0.contestant].turnOrderMod = 1;
+
+ for (i = 0; i < 4; i++)
+ {
+ sContestantStatus[i].nextTurnOrder = turnOrder[i];
+ }
+ sContestantStatus[shared192D0.contestant].turnOrderModAction = 2;
+ SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_MOVE_BACK_LINE);
+ }
+}
+
+// Makes the next turn’s order more easily scrambled.
+static void ContestEffect_MakeScramblingTurnOrderEasier(void)
+{
+ // dummied out?
+}
+
+// Scrambles the order of appeals on the next turn.
+static void ContestEffect_ScrambleNextTurnOrder(void)
+{
+ s8 i;
+ s8 j;
+ u8 turnOrder[4];
+ u8 unselectedContestants[4];
+
+ if (sContest.turnNumber != 4)
+ {
+ for (i = 0; i < 4; i++)
+ {
+ turnOrder[i] = sContestantStatus[i].nextTurnOrder;
+ unselectedContestants[i] = i;
+ }
+
+ for (i = 0; i < 4; i++)
+ {
+ u8 rval = Random() % (4 - i);
+
+ for (j = 0; j < 4; j++)
+ {
+ if (unselectedContestants[j] != 0xFF)
+ {
+ if (rval == 0)
+ {
+ turnOrder[j] = i;
+ unselectedContestants[j] = 0xFF;
+ break;
+ }
+ else
+ rval--;
+ }
+ }
+ }
+
+ for (i = 0; i < 4; i++)
+ {
+ sContestantStatus[i].nextTurnOrder = turnOrder[i];
+ sContestantStatus[i].turnOrderMod = 2;
+ }
+ sContestantStatus[shared192D0.contestant].turnOrderModAction = 3;
+ SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_SCRAMBLE_ORDER);
+ }
+}
+
+// An appeal that excites the audience in any CONTEST.
+static void ContestEffect_ExciteAudienceInAnyContest(void)
+{
+ if (gContestMoves[sContestantStatus[shared192D0.contestant].currMove].contestCategory != gSpecialVar_ContestCategory)
+ {
+ sContestantStatus[shared192D0.contestant].overrideCategoryExcitementMod = TRUE;
+ }
+}
+
+// Badly startles all POKéMON that made good appeals.
+static void ContestEffect_BadlyStartleMonsWithGoodAppeals(void)
+{
+ int i;
+ u8 numJammed = 0;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (shared192D0.turnOrder[shared192D0.contestant] > shared192D0.turnOrder[i])
+ {
+ if (sContestantStatus[i].appeal2 > 0)
+ {
+ shared192D0.jam = sContestantStatus[i].appeal2 / 2;
+ shared192D0.jam = RoundUp(shared192D0.jam);
+ }
+ else
+ shared192D0.jam = 10;
+ shared192D0.jamQueue[0] = i;
+ shared192D0.jamQueue[1] = 0xFF;
+ if (WasAtLeastOneOpponentJammed())
+ numJammed++;
+ }
+ }
+ if (numJammed == 0)
+ SetContestantEffectStringID2(shared192D0.contestant, CONTEST_STRING_MESSED_UP2);
+ SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_ATTEMPT_STARTLE);
+}
+
+// The appeal works best the more the crowd is excited.
+static void ContestEffect_BetterWhenAudienceExcited(void)
+{
+ s16 appeal;
+
+ if (sContest.applauseLevel == 0)
+ {
+ appeal = 10;
+ SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_NOT_VERY_WELL);
+ }
+ else if (sContest.applauseLevel == 1)
+ {
+ appeal = 20;
+ SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_SLIGHTLY_WELL2);
+ }
+ else if (sContest.applauseLevel == 2)
+ {
+ appeal = 30;
+ SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_PRETTY_WELL2);
+ }
+ else if (sContest.applauseLevel == 3)
+ {
+ appeal = 50;
+ SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_VERY_WELL);
+ }
+ else
+ {
+ appeal = 60;
+ SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_EXCELLENTLY2);
+ }
+ sContestantStatus[shared192D0.contestant].appeal2 = appeal;
+}
+
+// Temporarily stops the crowd from growing excited.
+static void ContestEffect_DontExciteAudience(void)
+{
+ if (!shared19328.excitementFrozen)
+ {
+ shared19328.excitementFrozen = TRUE;
+ shared19328.excitementFreezer = shared192D0.contestant;
+ SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_ATTRACTED_ATTENTION);
+ }
+}
+
+static void JamByMoveCategory(u8 category)
+{
+ int i;
+ int numJammed = 0;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (shared192D0.turnOrder[shared192D0.contestant] > shared192D0.turnOrder[i])
+ {
+ if (category == gContestMoves[sContestantStatus[i].currMove].contestCategory)
+ shared192D0.jam = 40;
+ else
+ shared192D0.jam = 10;
+ shared192D0.jamQueue[0] = i;
+ shared192D0.jamQueue[1] = 0xFF;
+ if (WasAtLeastOneOpponentJammed())
+ numJammed++;
+ }
+ }
+
+ if (numJammed == 0)
+ SetContestantEffectStringID2(shared192D0.contestant, CONTEST_STRING_MESSED_UP2);
+}
+
+static bool8 CanUnnerveContestant(u8 i)
+{
+ shared192D0.unnervedPokes[i] = 1;
+ if (sContestantStatus[i].immune)
+ {
+ SetContestantEffectStringID(i, CONTEST_STRING_AVOID_SEEING);
+ return FALSE;
+ }
+ else if (sContestantStatus[i].jamSafetyCount != 0)
+ {
+ sContestantStatus[i].jamSafetyCount--;
+ SetContestantEffectStringID(i, CONTEST_STRING_AVERT_GAZE);
+ return FALSE;
+ }
+ else if (!sContestantStatus[i].noMoreTurns && sContestantStatus[i].numTurnsSkipped == 0)
+ {
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static bool8 WasAtLeastOneOpponentJammed(void)
+{
+ s16 jamBuffer[4] = {0};
+ int i;
+
+ for (i = 0; shared192D0.jamQueue[i] != 0xFF; i++)
+ {
+ u8 contestant = shared192D0.jamQueue[i];
+ if (CanUnnerveContestant(contestant))
+ {
+ shared192D0.jam2 = shared192D0.jam;
+ if (sContestantStatus[contestant].moreEasilyStartled)
+ shared192D0.jam2 *= 2;
+ if (sContestantStatus[contestant].resistant)
+ {
+ shared192D0.jam2 = 10;
+ SetContestantEffectStringID(contestant, CONTEST_STRING_LITTLE_DISTRACTED);
+ }
+ else if ((shared192D0.jam2 -= sContestantStatus[contestant].jamReduction) <= 0)
+ {
+ shared192D0.jam2 = 0;
+ SetContestantEffectStringID(contestant, CONTEST_STRING_NOT_FAZED);
+ }
+ else
+ {
+ JamContestant(contestant, shared192D0.jam2);
+ SetStartledString(contestant, shared192D0.jam2);
+ jamBuffer[contestant] = shared192D0.jam2;
+ }
+ }
+ }
+
+ for (i = 0; i < 4; i++)
+ {
+ if (jamBuffer[i] != 0)
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static void JamContestant(u8 i, u8 jam)
+{
+ sContestantStatus[i].appeal2 -= jam;
+ sContestantStatus[i].jam += jam;
+}
+
+static s16 RoundTowardsZero(s16 score)
+{
+ s16 absScore = abs(score) % 10;
+ if (score < 0)
+ {
+ if (absScore != 0)
+ score -= 10 - absScore;
+ }
+ else
+ score -= absScore;
+ return score;
+}
+
+static s16 RoundUp(s16 score)
+{
+ s16 absScore = abs(score) % 10;
+ if (absScore != 0)
+ score += 10 - absScore;
+ return score;
+}
diff --git a/src/contest_painting.c b/src/contest_painting.c
index 0aa02312f..03840215b 100644
--- a/src/contest_painting.c
+++ b/src/contest_painting.c
@@ -1,6 +1,6 @@
#include "global.h"
#include "contest_painting.h"
-#include "cute_sketch.h"
+#include "contest_painting_effects.h"
#include "data2.h"
#include "decompress.h"
#include "main.h"
@@ -104,7 +104,7 @@ static void VBlankCB_ContestPainting(void);
void sub_8106B90(); //should be static
static void sub_8107090(u8 arg0, u8 arg1);
-__attribute__((naked))
+NAKED
void sub_8106630(u32 arg0)
{
asm(".syntax unified\n\
@@ -212,7 +212,7 @@ static void HoldContestPainting(void)
u8 two = 2; //needed to make the asm match
gUnknown_03000750 = two;
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
}
if (gUnknown_03000756 != 0)
gUnknown_03000754 = 0;
@@ -333,8 +333,7 @@ static void sub_8106AC4(u16 species, u8 arg1)
{
void *pal;
- // Unsure what gUnknown_03005E8C->var0 is supposed to be.
- pal = GetMonSpritePalFromOtIdPersonality(species, gUnknown_03005E8C->var4, gUnknown_03005E8C->var0);
+ pal = GetMonSpritePalFromOtIdPersonality(species, gUnknown_03005E8C->otId, gUnknown_03005E8C->personality);
LZDecompressVram(pal, gUnknown_03005E90);
if (arg1 == 1)
@@ -346,7 +345,7 @@ static void sub_8106AC4(u16 species, u8 arg1)
0x2000000,
gUnknown_081FAF4C[1],
species,
- (u32)gUnknown_03005E8C->var0
+ (u32)gUnknown_03005E8C->personality
);
sub_8106B90(gUnknown_081FAF4C[1], gUnknown_03005E90, gUnknown_03005E10);
}
@@ -359,13 +358,13 @@ static void sub_8106AC4(u16 species, u8 arg1)
0x2000000,
gUnknown_081FAF4C[0],
species,
- (u32)gUnknown_03005E8C->var0
+ (u32)gUnknown_03005E8C->personality
);
sub_8106B90(gUnknown_081FAF4C[0], gUnknown_03005E90, gUnknown_03005E10);
}
}
#else
-__attribute__((naked))
+NAKED
static void sub_8106AC4(u16 arg0, u8 arg2)
{
asm(".syntax unified\n\
@@ -498,7 +497,7 @@ void sub_8106B90(u8 a[][8][8][4], u16 b[], u16 c[][8][8][8])
}
}
#else
-__attribute__((naked))
+NAKED
void sub_8106B90()
{
asm(".syntax unified\n\
@@ -743,7 +742,7 @@ static void sub_8106F6C(u8 arg0)
gUnknown_03005E20.var_4 = gUnknown_03005E10;
gUnknown_03005E20.var_8 = gUnknown_03005E90;
gUnknown_03005E20.var_18 = 0;
- gUnknown_03005E20.var_1F = gUnknown_03005E8C->var0;
+ gUnknown_03005E20.var_1F = gUnknown_03005E8C->personality % 256;
gUnknown_03005E20.var_19 = 0;
gUnknown_03005E20.var_1A = 0;
gUnknown_03005E20.var_1B = 64;
@@ -779,7 +778,7 @@ static void sub_8106F6C(u8 arg0)
static void sub_8107090(u8 arg0, u8 arg1)
{
sub_8106F4C();
- sub_8106AC4(gUnknown_03005E8C->var8, 0);
+ sub_8106AC4(gUnknown_03005E8C->species, 0);
sub_8106F6C(sub_8106EE0(arg0));
sub_8106E98(arg0);
sub_8106C40(arg0, arg1);
diff --git a/src/cute_sketch.c b/src/contest_painting_effects.c
index 5317bc334..b07319048 100644
--- a/src/cute_sketch.c
+++ b/src/contest_painting_effects.c
@@ -1,5 +1,5 @@
#include "global.h"
-#include "cute_sketch.h"
+#include "contest_painting_effects.h"
#include "contest_painting.h"
extern u16 (*gUnknown_03005DEC)[][32];
diff --git a/src/credits.c b/src/credits.c
index 9a85265e4..1a810492b 100644
--- a/src/credits.c
+++ b/src/credits.c
@@ -487,7 +487,7 @@ void sub_81439D0(void)
gTasks[taskIdB].data[TDB_TASK_A_ID] = taskIdA;
gTasks[taskIdA].data[TDA_TASK_B_ID] = taskIdB;
- BeginNormalPaletteFade(-1, 0, 16, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
savedIme = REG_IME;
REG_IME = 0;
@@ -497,7 +497,7 @@ void sub_81439D0(void)
SetVBlankCallback(vblank_8143948);
- m4aSongNumStart(BGM_THANKFOR);
+ m4aSongNumStart(MUS_THANKFOR);
SetMainCallback2(sub_814395C);
gUnknown_02039325 = 0;
@@ -541,14 +541,14 @@ static void task_a_8143B68(u8 taskIdA)
{
gTasks[taskIdA].data[TDA_13] = data1;
gTasks[taskIdA].data[TDA_11] = 0;
- BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gTasks[taskIdA].func = task_a_8143BFC;
}
else if (gTasks[taskIdA].data[TDA_11] == 2)
{
gTasks[taskIdA].data[TDA_13] = data1;
gTasks[taskIdA].data[TDA_11] = 0;
- BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gTasks[taskIdA].func = task_a_8143CC0;
}
}
@@ -571,7 +571,7 @@ static void task_a_80C9BFC(u8 taskIdA)
if (sub_8144ECC(gTasks[taskIdA].data[TDA_7], taskIdA))
{
- BeginNormalPaletteFade(-1, 0, 16, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
backup = REG_IME;
REG_IME = 0;
@@ -634,7 +634,7 @@ void task_a_8143D04(u8 taskIdA)
gTasks[gTasks[taskIdA].data[TDA_TASK_D_ID]].data[TDD_TASK_A_ID] = taskIdA;
gTasks[gTasks[taskIdA].data[TDA_TASK_D_ID]].data[TDD_2] = gTasks[taskIdA].data[TDA_7];
- BeginNormalPaletteFade(-1, 0, 16, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
REG_BG3HOFS = 0;
REG_BG3VOFS = 32;
REG_BG3CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(7) | BGCNT_16COLOR | BGCNT_TXT256x256;
@@ -655,7 +655,7 @@ static void task_a_8143EBC(u8 taskIdA)
return;
}
- BeginNormalPaletteFade(-1, 12, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 12, 0, 16, RGB(0, 0, 0));
gTasks[taskIdA].func = task_a_8143F04;
}
@@ -677,7 +677,7 @@ static void task_a_8143F3C(u8 taskIdA)
sub_8145128(0, 0x3800, 0);
ResetSpriteData();
FreeAllSpritePalettes();
- BeginNormalPaletteFade(-1, 8, 16, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 8, 16, 0, RGB(0, 0, 0));
REG_BG0CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(7) | BGCNT_16COLOR | BGCNT_TXT256x256;
backup = REG_IME;
@@ -699,7 +699,7 @@ static void task_a_8143FDC(u8 taskIdA)
return;
}
- BeginNormalPaletteFade(-1, 6, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 6, 0, 16, RGB(0, 0, 0));
gTasks[taskIdA].func = task_a_8144024;
}
@@ -709,7 +709,7 @@ static void task_a_8144024(u8 taskIdA)
{
sub_81452D0(0x3800, 0);
- BeginNormalPaletteFade(-1, 0, 0, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0, RGB(0, 0, 0));
gTasks[taskIdA].data[TDA_0] = 7200;
gTasks[taskIdA].func = task_a_8144080;
}
@@ -722,7 +722,7 @@ static void task_a_8144080(u8 taskIdA)
if (gTasks[taskIdA].data[TDA_0] == 0)
{
FadeOutBGM(4);
- BeginNormalPaletteFade(-1, 8, 0, 16, 0xFFFF);
+ BeginNormalPaletteFade(0xFFFFFFFF, 8, 0, 16, FADE_COLOR_WHITE);
gTasks[taskIdA].func = task_a_8144114;
return;
}
@@ -730,7 +730,7 @@ static void task_a_8144080(u8 taskIdA)
if (gMain.newKeys)
{
FadeOutBGM(4);
- BeginNormalPaletteFade(-1, 8, 0, 16, 0xFFFF);
+ BeginNormalPaletteFade(0xFFFFFFFF, 8, 0, 16, FADE_COLOR_WHITE);
gTasks[taskIdA].func = task_a_8144114;
return;
}
@@ -741,7 +741,7 @@ static void task_a_8144080(u8 taskIdA)
}
if (gTasks[taskIdA].data[TDA_0] == 6840)
- m4aSongNumStart(BGM_END);
+ m4aSongNumStart(MUS_END);
gTasks[taskIdA].data[TDA_0] -= 1;
}
diff --git a/src/data/battle_moves.c b/src/data/battle_moves.c
new file mode 100644
index 000000000..d2a4fcf8f
--- /dev/null
+++ b/src/data/battle_moves.c
@@ -0,0 +1,4268 @@
+#include "global.h"
+#include "battle.h"
+#include "constants/battle_move_effects.h"
+#include "constants/moves.h"
+
+const struct BattleMove gBattleMoves[] = {
+
+ [MOVE_NONE] = {
+ .effect = EFFECT_HIT,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 0,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_POUND] = {
+ .effect = EFFECT_HIT,
+ .power = 40,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 35,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_KARATE_CHOP] = {
+ .effect = EFFECT_HIGH_CRITICAL,
+ .power = 50,
+ .type = TYPE_FIGHTING,
+ .accuracy = 100,
+ .pp = 25,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_DOUBLE_SLAP] = {
+ .effect = EFFECT_MULTI_HIT,
+ .power = 15,
+ .type = TYPE_NORMAL,
+ .accuracy = 85,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_COMET_PUNCH] = {
+ .effect = EFFECT_MULTI_HIT,
+ .power = 18,
+ .type = TYPE_NORMAL,
+ .accuracy = 85,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_MEGA_PUNCH] = {
+ .effect = EFFECT_HIT,
+ .power = 80,
+ .type = TYPE_NORMAL,
+ .accuracy = 85,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_PAY_DAY] = {
+ .effect = EFFECT_PAY_DAY,
+ .power = 40,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 100,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_FIRE_PUNCH] = {
+ .effect = EFFECT_BURN_HIT,
+ .power = 75,
+ .type = TYPE_FIRE,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 10,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_ICE_PUNCH] = {
+ .effect = EFFECT_FREEZE_HIT,
+ .power = 75,
+ .type = TYPE_ICE,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 10,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_THUNDER_PUNCH] = {
+ .effect = EFFECT_PARALYZE_HIT,
+ .power = 75,
+ .type = TYPE_ELECTRIC,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 10,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_SCRATCH] = {
+ .effect = EFFECT_HIT,
+ .power = 40,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 35,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_VICE_GRIP] = {
+ .effect = EFFECT_HIT,
+ .power = 55,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_GUILLOTINE] = {
+ .effect = EFFECT_OHKO,
+ .power = 1,
+ .type = TYPE_NORMAL,
+ .accuracy = 30,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_RAZOR_WIND] = {
+ .effect = EFFECT_RAZOR_WIND,
+ .power = 80,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = TARGET_BOTH_ENEMIES,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_SWORDS_DANCE] = {
+ .effect = EFFECT_ATTACK_UP_2,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_SNATCH,
+ },
+
+ [MOVE_CUT] = {
+ .effect = EFFECT_HIT,
+ .power = 50,
+ .type = TYPE_NORMAL,
+ .accuracy = 95,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_GUST] = {
+ .effect = EFFECT_GUST,
+ .power = 40,
+ .type = TYPE_FLYING,
+ .accuracy = 100,
+ .pp = 35,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_WING_ATTACK] = {
+ .effect = EFFECT_HIT,
+ .power = 60,
+ .type = TYPE_FLYING,
+ .accuracy = 100,
+ .pp = 35,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_WHIRLWIND] = {
+ .effect = EFFECT_ROAR,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = -6,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_FLY] = {
+ .effect = EFFECT_FLY,
+ .power = 70,
+ .type = TYPE_FLYING,
+ .accuracy = 95,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_BIND] = {
+ .effect = EFFECT_TRAP,
+ .power = 15,
+ .type = TYPE_NORMAL,
+ .accuracy = 75,
+ .pp = 20,
+ .secondaryEffectChance = 100,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_SLAM] = {
+ .effect = EFFECT_HIT,
+ .power = 80,
+ .type = TYPE_NORMAL,
+ .accuracy = 75,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_VINE_WHIP] = {
+ .effect = EFFECT_HIT,
+ .power = 35,
+ .type = TYPE_GRASS,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_STOMP] = {
+ .effect = EFFECT_FLINCH_HIT_2,
+ .power = 65,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 30,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_DOUBLE_KICK] = {
+ .effect = EFFECT_DOUBLE_HIT,
+ .power = 30,
+ .type = TYPE_FIGHTING,
+ .accuracy = 100,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_MEGA_KICK] = {
+ .effect = EFFECT_HIT,
+ .power = 120,
+ .type = TYPE_NORMAL,
+ .accuracy = 75,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_JUMP_KICK] = {
+ .effect = EFFECT_RECOIL_IF_MISS,
+ .power = 70,
+ .type = TYPE_FIGHTING,
+ .accuracy = 95,
+ .pp = 25,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_ROLLING_KICK] = {
+ .effect = EFFECT_FLINCH_HIT,
+ .power = 60,
+ .type = TYPE_FIGHTING,
+ .accuracy = 85,
+ .pp = 15,
+ .secondaryEffectChance = 30,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_SAND_ATTACK] = {
+ .effect = EFFECT_ACCURACY_DOWN,
+ .power = 0,
+ .type = TYPE_GROUND,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_MAGIC_COAT | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_HEADBUTT] = {
+ .effect = EFFECT_FLINCH_HIT,
+ .power = 70,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 30,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_HORN_ATTACK] = {
+ .effect = EFFECT_HIT,
+ .power = 65,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 25,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_FURY_ATTACK] = {
+ .effect = EFFECT_MULTI_HIT,
+ .power = 15,
+ .type = TYPE_NORMAL,
+ .accuracy = 85,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_HORN_DRILL] = {
+ .effect = EFFECT_OHKO,
+ .power = 1,
+ .type = TYPE_NORMAL,
+ .accuracy = 30,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_TACKLE] = {
+ .effect = EFFECT_HIT,
+ .power = 35,
+ .type = TYPE_NORMAL,
+ .accuracy = 95,
+ .pp = 35,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_BODY_SLAM] = {
+ .effect = EFFECT_PARALYZE_HIT,
+ .power = 85,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 30,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_WRAP] = {
+ .effect = EFFECT_TRAP,
+ .power = 15,
+ .type = TYPE_NORMAL,
+ .accuracy = 85,
+ .pp = 20,
+ .secondaryEffectChance = 100,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_TAKE_DOWN] = {
+ .effect = EFFECT_RECOIL,
+ .power = 90,
+ .type = TYPE_NORMAL,
+ .accuracy = 85,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_THRASH] = {
+ .effect = EFFECT_RAMPAGE,
+ .power = 90,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 100,
+ .target = TARGET_RANDOM,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_DOUBLE_EDGE] = {
+ .effect = EFFECT_DOUBLE_EDGE,
+ .power = 120,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_TAIL_WHIP] = {
+ .effect = EFFECT_DEFENSE_DOWN,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = TARGET_BOTH_ENEMIES,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_MAGIC_COAT | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_POISON_STING] = {
+ .effect = EFFECT_POISON_HIT,
+ .power = 15,
+ .type = TYPE_POISON,
+ .accuracy = 100,
+ .pp = 35,
+ .secondaryEffectChance = 30,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_TWINEEDLE] = {
+ .effect = EFFECT_TWINEEDLE,
+ .power = 25,
+ .type = TYPE_BUG,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 20,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_PIN_MISSILE] = {
+ .effect = EFFECT_MULTI_HIT,
+ .power = 14,
+ .type = TYPE_BUG,
+ .accuracy = 85,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_LEER] = {
+ .effect = EFFECT_DEFENSE_DOWN,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = TARGET_BOTH_ENEMIES,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_MAGIC_COAT | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_BITE] = {
+ .effect = EFFECT_FLINCH_HIT,
+ .power = 60,
+ .type = TYPE_DARK,
+ .accuracy = 100,
+ .pp = 25,
+ .secondaryEffectChance = 30,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_GROWL] = {
+ .effect = EFFECT_ATTACK_DOWN,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = TARGET_BOTH_ENEMIES,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_MAGIC_COAT | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_ROAR] = {
+ .effect = EFFECT_ROAR,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = -6,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_SING] = {
+ .effect = EFFECT_SLEEP,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 55,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_MAGIC_COAT | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_SUPERSONIC] = {
+ .effect = EFFECT_CONFUSE,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 55,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_MAGIC_COAT | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_SONIC_BOOM] = {
+ .effect = EFFECT_SONICBOOM,
+ .power = 1,
+ .type = TYPE_NORMAL,
+ .accuracy = 90,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_DISABLE] = {
+ .effect = EFFECT_DISABLE,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 55,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_ACID] = {
+ .effect = EFFECT_DEFENSE_DOWN_HIT,
+ .power = 40,
+ .type = TYPE_POISON,
+ .accuracy = 100,
+ .pp = 30,
+ .secondaryEffectChance = 10,
+ .target = TARGET_BOTH_ENEMIES,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_EMBER] = {
+ .effect = EFFECT_BURN_HIT,
+ .power = 40,
+ .type = TYPE_FIRE,
+ .accuracy = 100,
+ .pp = 25,
+ .secondaryEffectChance = 10,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_FLAMETHROWER] = {
+ .effect = EFFECT_BURN_HIT,
+ .power = 95,
+ .type = TYPE_FIRE,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 10,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_MIST] = {
+ .effect = EFFECT_MIST,
+ .power = 0,
+ .type = TYPE_ICE,
+ .accuracy = 0,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_SNATCH,
+ },
+
+ [MOVE_WATER_GUN] = {
+ .effect = EFFECT_HIT,
+ .power = 40,
+ .type = TYPE_WATER,
+ .accuracy = 100,
+ .pp = 25,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_HYDRO_PUMP] = {
+ .effect = EFFECT_HIT,
+ .power = 120,
+ .type = TYPE_WATER,
+ .accuracy = 80,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_SURF] = {
+ .effect = EFFECT_HIT,
+ .power = 95,
+ .type = TYPE_WATER,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = TARGET_BOTH_ENEMIES,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_ICE_BEAM] = {
+ .effect = EFFECT_FREEZE_HIT,
+ .power = 95,
+ .type = TYPE_ICE,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 10,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_BLIZZARD] = {
+ .effect = EFFECT_FREEZE_HIT,
+ .power = 120,
+ .type = TYPE_ICE,
+ .accuracy = 70,
+ .pp = 5,
+ .secondaryEffectChance = 10,
+ .target = TARGET_BOTH_ENEMIES,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_PSYBEAM] = {
+ .effect = EFFECT_CONFUSE_HIT,
+ .power = 65,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 10,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_BUBBLE_BEAM] = {
+ .effect = EFFECT_SPEED_DOWN_HIT,
+ .power = 65,
+ .type = TYPE_WATER,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 10,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_AURORA_BEAM] = {
+ .effect = EFFECT_ATTACK_DOWN_HIT,
+ .power = 65,
+ .type = TYPE_ICE,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 10,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_HYPER_BEAM] = {
+ .effect = EFFECT_RECHARGE,
+ .power = 150,
+ .type = TYPE_NORMAL,
+ .accuracy = 90,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_PECK] = {
+ .effect = EFFECT_HIT,
+ .power = 35,
+ .type = TYPE_FLYING,
+ .accuracy = 100,
+ .pp = 35,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_DRILL_PECK] = {
+ .effect = EFFECT_HIT,
+ .power = 80,
+ .type = TYPE_FLYING,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_SUBMISSION] = {
+ .effect = EFFECT_RECOIL,
+ .power = 80,
+ .type = TYPE_FIGHTING,
+ .accuracy = 80,
+ .pp = 25,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_LOW_KICK] = {
+ .effect = EFFECT_LOW_KICK,
+ .power = 1,
+ .type = TYPE_FIGHTING,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_COUNTER] = {
+ .effect = EFFECT_COUNTER,
+ .power = 1,
+ .type = TYPE_FIGHTING,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SPECIAL,
+ .priority = -5,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_MAKES_CONTACT,
+ },
+
+ [MOVE_SEISMIC_TOSS] = {
+ .effect = EFFECT_LEVEL_DAMAGE,
+ .power = 1,
+ .type = TYPE_FIGHTING,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_STRENGTH] = {
+ .effect = EFFECT_HIT,
+ .power = 80,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_ABSORB] = {
+ .effect = EFFECT_ABSORB,
+ .power = 20,
+ .type = TYPE_GRASS,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_MEGA_DRAIN] = {
+ .effect = EFFECT_ABSORB,
+ .power = 40,
+ .type = TYPE_GRASS,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_LEECH_SEED] = {
+ .effect = EFFECT_LEECH_SEED,
+ .power = 0,
+ .type = TYPE_GRASS,
+ .accuracy = 90,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_MAGIC_COAT | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_GROWTH] = {
+ .effect = EFFECT_SPECIAL_ATTACK_UP,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_SNATCH,
+ },
+
+ [MOVE_RAZOR_LEAF] = {
+ .effect = EFFECT_HIGH_CRITICAL,
+ .power = 55,
+ .type = TYPE_GRASS,
+ .accuracy = 95,
+ .pp = 25,
+ .secondaryEffectChance = 0,
+ .target = TARGET_BOTH_ENEMIES,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_SOLAR_BEAM] = {
+ .effect = EFFECT_SOLARBEAM,
+ .power = 120,
+ .type = TYPE_GRASS,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_POISON_POWDER] = {
+ .effect = EFFECT_POISON,
+ .power = 0,
+ .type = TYPE_POISON,
+ .accuracy = 75,
+ .pp = 35,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_MAGIC_COAT | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_STUN_SPORE] = {
+ .effect = EFFECT_PARALYZE,
+ .power = 0,
+ .type = TYPE_GRASS,
+ .accuracy = 75,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_MAGIC_COAT | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_SLEEP_POWDER] = {
+ .effect = EFFECT_SLEEP,
+ .power = 0,
+ .type = TYPE_GRASS,
+ .accuracy = 75,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_MAGIC_COAT | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_PETAL_DANCE] = {
+ .effect = EFFECT_RAMPAGE,
+ .power = 70,
+ .type = TYPE_GRASS,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 100,
+ .target = TARGET_RANDOM,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_STRING_SHOT] = {
+ .effect = EFFECT_SPEED_DOWN,
+ .power = 0,
+ .type = TYPE_BUG,
+ .accuracy = 95,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = TARGET_BOTH_ENEMIES,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_MAGIC_COAT | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_DRAGON_RAGE] = {
+ .effect = EFFECT_DRAGON_RAGE,
+ .power = 1,
+ .type = TYPE_DRAGON,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_FIRE_SPIN] = {
+ .effect = EFFECT_TRAP,
+ .power = 15,
+ .type = TYPE_FIRE,
+ .accuracy = 70,
+ .pp = 15,
+ .secondaryEffectChance = 100,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_THUNDER_SHOCK] = {
+ .effect = EFFECT_PARALYZE_HIT,
+ .power = 40,
+ .type = TYPE_ELECTRIC,
+ .accuracy = 100,
+ .pp = 30,
+ .secondaryEffectChance = 10,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_THUNDERBOLT] = {
+ .effect = EFFECT_PARALYZE_HIT,
+ .power = 95,
+ .type = TYPE_ELECTRIC,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 10,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_THUNDER_WAVE] = {
+ .effect = EFFECT_PARALYZE,
+ .power = 0,
+ .type = TYPE_ELECTRIC,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_MAGIC_COAT | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_THUNDER] = {
+ .effect = EFFECT_THUNDER,
+ .power = 120,
+ .type = TYPE_ELECTRIC,
+ .accuracy = 70,
+ .pp = 10,
+ .secondaryEffectChance = 30,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_ROCK_THROW] = {
+ .effect = EFFECT_HIT,
+ .power = 50,
+ .type = TYPE_ROCK,
+ .accuracy = 90,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_EARTHQUAKE] = {
+ .effect = EFFECT_EARTHQUAKE,
+ .power = 100,
+ .type = TYPE_GROUND,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = TARGET_ALL_EXCEPT_USER,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_FISSURE] = {
+ .effect = EFFECT_OHKO,
+ .power = 1,
+ .type = TYPE_GROUND,
+ .accuracy = 30,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_DIG] = {
+ .effect = EFFECT_FLY,
+ .power = 60,
+ .type = TYPE_GROUND,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_TOXIC] = {
+ .effect = EFFECT_TOXIC,
+ .power = 0,
+ .type = TYPE_POISON,
+ .accuracy = 85,
+ .pp = 10,
+ .secondaryEffectChance = 100,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_MAGIC_COAT | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_CONFUSION] = {
+ .effect = EFFECT_CONFUSE_HIT,
+ .power = 50,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 100,
+ .pp = 25,
+ .secondaryEffectChance = 10,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_PSYCHIC] = {
+ .effect = EFFECT_SPECIAL_DEFENSE_DOWN_HIT,
+ .power = 90,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 10,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_HYPNOSIS] = {
+ .effect = EFFECT_SLEEP,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 60,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_MAGIC_COAT | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_MEDITATE] = {
+ .effect = EFFECT_ATTACK_UP,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 0,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_SNATCH,
+ },
+
+ [MOVE_AGILITY] = {
+ .effect = EFFECT_SPEED_UP_2,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 0,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_SNATCH,
+ },
+
+ [MOVE_QUICK_ATTACK] = {
+ .effect = EFFECT_QUICK_ATTACK,
+ .power = 40,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 1,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_RAGE] = {
+ .effect = EFFECT_RAGE,
+ .power = 20,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_TELEPORT] = {
+ .effect = EFFECT_TELEPORT,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_NIGHT_SHADE] = {
+ .effect = EFFECT_LEVEL_DAMAGE,
+ .power = 1,
+ .type = TYPE_GHOST,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_MIMIC] = {
+ .effect = EFFECT_MIMIC,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_SCREECH] = {
+ .effect = EFFECT_DEFENSE_DOWN_2,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 85,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_MAGIC_COAT | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_DOUBLE_TEAM] = {
+ .effect = EFFECT_EVASION_UP,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_SNATCH,
+ },
+
+ [MOVE_RECOVER] = {
+ .effect = EFFECT_RESTORE_HP,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_SNATCH,
+ },
+
+ [MOVE_HARDEN] = {
+ .effect = EFFECT_DEFENSE_UP,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_SNATCH,
+ },
+
+ [MOVE_MINIMIZE] = {
+ .effect = EFFECT_MINIMIZE,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_SNATCH,
+ },
+
+ [MOVE_SMOKESCREEN] = {
+ .effect = EFFECT_ACCURACY_DOWN,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_MAGIC_COAT | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_CONFUSE_RAY] = {
+ .effect = EFFECT_CONFUSE,
+ .power = 0,
+ .type = TYPE_GHOST,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_MAGIC_COAT | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_WITHDRAW] = {
+ .effect = EFFECT_DEFENSE_UP,
+ .power = 0,
+ .type = TYPE_WATER,
+ .accuracy = 0,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_SNATCH,
+ },
+
+ [MOVE_DEFENSE_CURL] = {
+ .effect = EFFECT_DEFENSE_CURL,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_SNATCH,
+ },
+
+ [MOVE_BARRIER] = {
+ .effect = EFFECT_DEFENSE_UP_2,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 0,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_SNATCH,
+ },
+
+ [MOVE_LIGHT_SCREEN] = {
+ .effect = EFFECT_LIGHT_SCREEN,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 0,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_SNATCH,
+ },
+
+ [MOVE_HAZE] = {
+ .effect = EFFECT_HAZE,
+ .power = 0,
+ .type = TYPE_ICE,
+ .accuracy = 0,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_REFLECT] = {
+ .effect = EFFECT_REFLECT,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_SNATCH,
+ },
+
+ [MOVE_FOCUS_ENERGY] = {
+ .effect = EFFECT_FOCUS_ENERGY,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_SNATCH,
+ },
+
+ [MOVE_BIDE] = {
+ .effect = EFFECT_BIDE,
+ .power = 1,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_METRONOME] = {
+ .effect = EFFECT_METRONOME,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SPECIAL,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_MIRROR_MOVE] = {
+ .effect = EFFECT_MIRROR_MOVE,
+ .power = 0,
+ .type = TYPE_FLYING,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SPECIAL,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_SELF_DESTRUCT] = {
+ .effect = EFFECT_EXPLOSION,
+ .power = 200,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = TARGET_ALL_EXCEPT_USER,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_EGG_BOMB] = {
+ .effect = EFFECT_HIT,
+ .power = 100,
+ .type = TYPE_NORMAL,
+ .accuracy = 75,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_LICK] = {
+ .effect = EFFECT_PARALYZE_HIT,
+ .power = 20,
+ .type = TYPE_GHOST,
+ .accuracy = 100,
+ .pp = 30,
+ .secondaryEffectChance = 30,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_SMOG] = {
+ .effect = EFFECT_POISON_HIT,
+ .power = 20,
+ .type = TYPE_POISON,
+ .accuracy = 70,
+ .pp = 20,
+ .secondaryEffectChance = 40,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_SLUDGE] = {
+ .effect = EFFECT_POISON_HIT,
+ .power = 65,
+ .type = TYPE_POISON,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 30,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_BONE_CLUB] = {
+ .effect = EFFECT_FLINCH_HIT,
+ .power = 65,
+ .type = TYPE_GROUND,
+ .accuracy = 85,
+ .pp = 20,
+ .secondaryEffectChance = 10,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_FIRE_BLAST] = {
+ .effect = EFFECT_BURN_HIT,
+ .power = 120,
+ .type = TYPE_FIRE,
+ .accuracy = 85,
+ .pp = 5,
+ .secondaryEffectChance = 10,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_WATERFALL] = {
+ .effect = EFFECT_HIT,
+ .power = 80,
+ .type = TYPE_WATER,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_CLAMP] = {
+ .effect = EFFECT_TRAP,
+ .power = 35,
+ .type = TYPE_WATER,
+ .accuracy = 75,
+ .pp = 10,
+ .secondaryEffectChance = 100,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_SWIFT] = {
+ .effect = EFFECT_ALWAYS_HIT,
+ .power = 60,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_BOTH_ENEMIES,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_SKULL_BASH] = {
+ .effect = EFFECT_SKULL_BASH,
+ .power = 100,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_SPIKE_CANNON] = {
+ .effect = EFFECT_MULTI_HIT,
+ .power = 20,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_CONSTRICT] = {
+ .effect = EFFECT_SPEED_DOWN_HIT,
+ .power = 10,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 35,
+ .secondaryEffectChance = 10,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_AMNESIA] = {
+ .effect = EFFECT_SPECIAL_DEFENSE_UP_2,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_SNATCH,
+ },
+
+ [MOVE_KINESIS] = {
+ .effect = EFFECT_ACCURACY_DOWN,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 80,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_SOFT_BOILED] = {
+ .effect = EFFECT_SOFTBOILED,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_SNATCH,
+ },
+
+ [MOVE_HI_JUMP_KICK] = {
+ .effect = EFFECT_RECOIL_IF_MISS,
+ .power = 85,
+ .type = TYPE_FIGHTING,
+ .accuracy = 90,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_GLARE] = {
+ .effect = EFFECT_PARALYZE,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 75,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_MAGIC_COAT | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_DREAM_EATER] = {
+ .effect = EFFECT_DREAM_EATER,
+ .power = 100,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_POISON_GAS] = {
+ .effect = EFFECT_POISON,
+ .power = 0,
+ .type = TYPE_POISON,
+ .accuracy = 55,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_MAGIC_COAT | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_BARRAGE] = {
+ .effect = EFFECT_MULTI_HIT,
+ .power = 15,
+ .type = TYPE_NORMAL,
+ .accuracy = 85,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_LEECH_LIFE] = {
+ .effect = EFFECT_ABSORB,
+ .power = 20,
+ .type = TYPE_BUG,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_LOVELY_KISS] = {
+ .effect = EFFECT_SLEEP,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 75,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_MAGIC_COAT | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_SKY_ATTACK] = {
+ .effect = EFFECT_SKY_ATTACK,
+ .power = 140,
+ .type = TYPE_FLYING,
+ .accuracy = 90,
+ .pp = 5,
+ .secondaryEffectChance = 30,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_TRANSFORM] = {
+ .effect = EFFECT_TRANSFORM,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_BUBBLE] = {
+ .effect = EFFECT_SPEED_DOWN_HIT,
+ .power = 20,
+ .type = TYPE_WATER,
+ .accuracy = 100,
+ .pp = 30,
+ .secondaryEffectChance = 10,
+ .target = TARGET_BOTH_ENEMIES,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_DIZZY_PUNCH] = {
+ .effect = EFFECT_CONFUSE_HIT,
+ .power = 70,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 20,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_SPORE] = {
+ .effect = EFFECT_SLEEP,
+ .power = 0,
+ .type = TYPE_GRASS,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_MAGIC_COAT | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_FLASH] = {
+ .effect = EFFECT_ACCURACY_DOWN,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 70,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_MAGIC_COAT | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_PSYWAVE] = {
+ .effect = EFFECT_PSYWAVE,
+ .power = 1,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 80,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_SPLASH] = {
+ .effect = EFFECT_SPLASH,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_ACID_ARMOR] = {
+ .effect = EFFECT_DEFENSE_UP_2,
+ .power = 0,
+ .type = TYPE_POISON,
+ .accuracy = 0,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_SNATCH,
+ },
+
+ [MOVE_CRABHAMMER] = {
+ .effect = EFFECT_HIGH_CRITICAL,
+ .power = 90,
+ .type = TYPE_WATER,
+ .accuracy = 85,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_EXPLOSION] = {
+ .effect = EFFECT_EXPLOSION,
+ .power = 250,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = TARGET_ALL_EXCEPT_USER,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_FURY_SWIPES] = {
+ .effect = EFFECT_MULTI_HIT,
+ .power = 18,
+ .type = TYPE_NORMAL,
+ .accuracy = 80,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_BONEMERANG] = {
+ .effect = EFFECT_DOUBLE_HIT,
+ .power = 50,
+ .type = TYPE_GROUND,
+ .accuracy = 90,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_REST] = {
+ .effect = EFFECT_REST,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 0,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_SNATCH,
+ },
+
+ [MOVE_ROCK_SLIDE] = {
+ .effect = EFFECT_FLINCH_HIT,
+ .power = 75,
+ .type = TYPE_ROCK,
+ .accuracy = 90,
+ .pp = 10,
+ .secondaryEffectChance = 30,
+ .target = TARGET_BOTH_ENEMIES,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_HYPER_FANG] = {
+ .effect = EFFECT_FLINCH_HIT,
+ .power = 80,
+ .type = TYPE_NORMAL,
+ .accuracy = 90,
+ .pp = 15,
+ .secondaryEffectChance = 10,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_SHARPEN] = {
+ .effect = EFFECT_ATTACK_UP,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_SNATCH,
+ },
+
+ [MOVE_CONVERSION] = {
+ .effect = EFFECT_CONVERSION,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_TRI_ATTACK] = {
+ .effect = EFFECT_TRI_ATTACK,
+ .power = 80,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 20,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_SUPER_FANG] = {
+ .effect = EFFECT_SUPER_FANG,
+ .power = 1,
+ .type = TYPE_NORMAL,
+ .accuracy = 90,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_SLASH] = {
+ .effect = EFFECT_HIGH_CRITICAL,
+ .power = 70,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_SUBSTITUTE] = {
+ .effect = EFFECT_SUBSTITUTE,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_SNATCH,
+ },
+
+ [MOVE_STRUGGLE] = {
+ .effect = EFFECT_RECOIL,
+ .power = 50,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 1,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_SKETCH] = {
+ .effect = EFFECT_SKETCH,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 1,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_TRIPLE_KICK] = {
+ .effect = EFFECT_TRIPLE_KICK,
+ .power = 10,
+ .type = TYPE_FIGHTING,
+ .accuracy = 90,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_THIEF] = {
+ .effect = EFFECT_THIEF,
+ .power = 40,
+ .type = TYPE_DARK,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 100,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_SPIDER_WEB] = {
+ .effect = EFFECT_MEAN_LOOK,
+ .power = 0,
+ .type = TYPE_BUG,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_MAGIC_COAT | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_MIND_READER] = {
+ .effect = EFFECT_LOCK_ON,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_NIGHTMARE] = {
+ .effect = EFFECT_NIGHTMARE,
+ .power = 0,
+ .type = TYPE_GHOST,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_FLAME_WHEEL] = {
+ .effect = EFFECT_THAW_HIT,
+ .power = 60,
+ .type = TYPE_FIRE,
+ .accuracy = 100,
+ .pp = 25,
+ .secondaryEffectChance = 10,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_SNORE] = {
+ .effect = EFFECT_SNORE,
+ .power = 40,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 30,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_CURSE] = {
+ .effect = EFFECT_CURSE,
+ .power = 0,
+ .type = TYPE_MYSTERY,
+ .accuracy = 0,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_FLAIL] = {
+ .effect = EFFECT_FLAIL,
+ .power = 1,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_CONVERSION_2] = {
+ .effect = EFFECT_CONVERSION_2,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_AEROBLAST] = {
+ .effect = EFFECT_HIGH_CRITICAL,
+ .power = 100,
+ .type = TYPE_FLYING,
+ .accuracy = 95,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_COTTON_SPORE] = {
+ .effect = EFFECT_SPEED_DOWN_2,
+ .power = 0,
+ .type = TYPE_GRASS,
+ .accuracy = 85,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_MAGIC_COAT | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_REVERSAL] = {
+ .effect = EFFECT_FLAIL,
+ .power = 1,
+ .type = TYPE_FIGHTING,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_SPITE] = {
+ .effect = EFFECT_SPITE,
+ .power = 0,
+ .type = TYPE_GHOST,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_POWDER_SNOW] = {
+ .effect = EFFECT_FREEZE_HIT,
+ .power = 40,
+ .type = TYPE_ICE,
+ .accuracy = 100,
+ .pp = 25,
+ .secondaryEffectChance = 10,
+ .target = TARGET_BOTH_ENEMIES,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_PROTECT] = {
+ .effect = EFFECT_PROTECT,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 3,
+ .flags = 0,
+ },
+
+ [MOVE_MACH_PUNCH] = {
+ .effect = EFFECT_QUICK_ATTACK,
+ .power = 40,
+ .type = TYPE_FIGHTING,
+ .accuracy = 100,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 1,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_SCARY_FACE] = {
+ .effect = EFFECT_SPEED_DOWN_2,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 90,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_MAGIC_COAT | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_FAINT_ATTACK] = {
+ .effect = EFFECT_ALWAYS_HIT,
+ .power = 60,
+ .type = TYPE_DARK,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_SWEET_KISS] = {
+ .effect = EFFECT_CONFUSE,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 75,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_MAGIC_COAT | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_BELLY_DRUM] = {
+ .effect = EFFECT_BELLY_DRUM,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_SNATCH,
+ },
+
+ [MOVE_SLUDGE_BOMB] = {
+ .effect = EFFECT_POISON_HIT,
+ .power = 90,
+ .type = TYPE_POISON,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 30,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_MUD_SLAP] = {
+ .effect = EFFECT_ACCURACY_DOWN_HIT,
+ .power = 20,
+ .type = TYPE_GROUND,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 100,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_OCTAZOOKA] = {
+ .effect = EFFECT_ACCURACY_DOWN_HIT,
+ .power = 65,
+ .type = TYPE_WATER,
+ .accuracy = 85,
+ .pp = 10,
+ .secondaryEffectChance = 50,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_SPIKES] = {
+ .effect = EFFECT_SPIKES,
+ .power = 0,
+ .type = TYPE_GROUND,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_ENEMY_SIDE,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_ZAP_CANNON] = {
+ .effect = EFFECT_PARALYZE_HIT,
+ .power = 100,
+ .type = TYPE_ELECTRIC,
+ .accuracy = 50,
+ .pp = 5,
+ .secondaryEffectChance = 100,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_FORESIGHT] = {
+ .effect = EFFECT_FORESIGHT,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_DESTINY_BOND] = {
+ .effect = EFFECT_DESTINY_BOND,
+ .power = 0,
+ .type = TYPE_GHOST,
+ .accuracy = 0,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_PERISH_SONG] = {
+ .effect = EFFECT_PERISH_SONG,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_ICY_WIND] = {
+ .effect = EFFECT_SPEED_DOWN_HIT,
+ .power = 55,
+ .type = TYPE_ICE,
+ .accuracy = 95,
+ .pp = 15,
+ .secondaryEffectChance = 100,
+ .target = TARGET_BOTH_ENEMIES,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_DETECT] = {
+ .effect = EFFECT_PROTECT,
+ .power = 0,
+ .type = TYPE_FIGHTING,
+ .accuracy = 0,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 3,
+ .flags = 0,
+ },
+
+ [MOVE_BONE_RUSH] = {
+ .effect = EFFECT_MULTI_HIT,
+ .power = 25,
+ .type = TYPE_GROUND,
+ .accuracy = 80,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_LOCK_ON] = {
+ .effect = EFFECT_LOCK_ON,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_OUTRAGE] = {
+ .effect = EFFECT_RAMPAGE,
+ .power = 90,
+ .type = TYPE_DRAGON,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 100,
+ .target = TARGET_RANDOM,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_SANDSTORM] = {
+ .effect = EFFECT_SANDSTORM,
+ .power = 0,
+ .type = TYPE_ROCK,
+ .accuracy = 0,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_GIGA_DRAIN] = {
+ .effect = EFFECT_ABSORB,
+ .power = 60,
+ .type = TYPE_GRASS,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_ENDURE] = {
+ .effect = EFFECT_ENDURE,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 3,
+ .flags = 0,
+ },
+
+ [MOVE_CHARM] = {
+ .effect = EFFECT_ATTACK_DOWN_2,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_MAGIC_COAT | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_ROLLOUT] = {
+ .effect = EFFECT_ROLLOUT,
+ .power = 30,
+ .type = TYPE_ROCK,
+ .accuracy = 90,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_FALSE_SWIPE] = {
+ .effect = EFFECT_FALSE_SWIPE,
+ .power = 40,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_SWAGGER] = {
+ .effect = EFFECT_SWAGGER,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 90,
+ .pp = 15,
+ .secondaryEffectChance = 100,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_MAGIC_COAT | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_MILK_DRINK] = {
+ .effect = EFFECT_SOFTBOILED,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_SNATCH | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_SPARK] = {
+ .effect = EFFECT_PARALYZE_HIT,
+ .power = 65,
+ .type = TYPE_ELECTRIC,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 30,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_FURY_CUTTER] = {
+ .effect = EFFECT_FURY_CUTTER,
+ .power = 10,
+ .type = TYPE_BUG,
+ .accuracy = 95,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_STEEL_WING] = {
+ .effect = EFFECT_DEFENSE_UP_HIT,
+ .power = 70,
+ .type = TYPE_STEEL,
+ .accuracy = 90,
+ .pp = 25,
+ .secondaryEffectChance = 10,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_MEAN_LOOK] = {
+ .effect = EFFECT_MEAN_LOOK,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_MAGIC_COAT | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_ATTRACT] = {
+ .effect = EFFECT_ATTRACT,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_MAGIC_COAT | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_SLEEP_TALK] = {
+ .effect = EFFECT_SLEEP_TALK,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SPECIAL,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_HEAL_BELL] = {
+ .effect = EFFECT_HEAL_BELL,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_SNATCH,
+ },
+
+ [MOVE_RETURN] = {
+ .effect = EFFECT_RETURN,
+ .power = 1,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_PRESENT] = {
+ .effect = EFFECT_PRESENT,
+ .power = 1,
+ .type = TYPE_NORMAL,
+ .accuracy = 90,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_FRUSTRATION] = {
+ .effect = EFFECT_FRUSTRATION,
+ .power = 1,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_SAFEGUARD] = {
+ .effect = EFFECT_SAFEGUARD,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 25,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_SNATCH,
+ },
+
+ [MOVE_PAIN_SPLIT] = {
+ .effect = EFFECT_PAIN_SPLIT,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_SACRED_FIRE] = {
+ .effect = EFFECT_THAW_HIT,
+ .power = 100,
+ .type = TYPE_FIRE,
+ .accuracy = 95,
+ .pp = 5,
+ .secondaryEffectChance = 50,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_MAGNITUDE] = {
+ .effect = EFFECT_MAGNITUDE,
+ .power = 1,
+ .type = TYPE_GROUND,
+ .accuracy = 100,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = TARGET_ALL_EXCEPT_USER,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_DYNAMIC_PUNCH] = {
+ .effect = EFFECT_CONFUSE_HIT,
+ .power = 100,
+ .type = TYPE_FIGHTING,
+ .accuracy = 50,
+ .pp = 5,
+ .secondaryEffectChance = 100,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_MEGAHORN] = {
+ .effect = EFFECT_HIT,
+ .power = 120,
+ .type = TYPE_BUG,
+ .accuracy = 85,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_DRAGON_BREATH] = {
+ .effect = EFFECT_PARALYZE_HIT,
+ .power = 60,
+ .type = TYPE_DRAGON,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 30,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_BATON_PASS] = {
+ .effect = EFFECT_BATON_PASS,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_ENCORE] = {
+ .effect = EFFECT_ENCORE,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_PURSUIT] = {
+ .effect = EFFECT_PURSUIT,
+ .power = 40,
+ .type = TYPE_DARK,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_RAPID_SPIN] = {
+ .effect = EFFECT_RAPID_SPIN,
+ .power = 20,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_SWEET_SCENT] = {
+ .effect = EFFECT_EVASION_DOWN,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_BOTH_ENEMIES,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_MAGIC_COAT | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_IRON_TAIL] = {
+ .effect = EFFECT_DEFENSE_DOWN_HIT,
+ .power = 100,
+ .type = TYPE_STEEL,
+ .accuracy = 75,
+ .pp = 15,
+ .secondaryEffectChance = 30,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_METAL_CLAW] = {
+ .effect = EFFECT_ATTACK_UP_HIT,
+ .power = 50,
+ .type = TYPE_STEEL,
+ .accuracy = 95,
+ .pp = 35,
+ .secondaryEffectChance = 10,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_VITAL_THROW] = {
+ .effect = EFFECT_VITAL_THROW,
+ .power = 70,
+ .type = TYPE_FIGHTING,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = -1,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_MORNING_SUN] = {
+ .effect = EFFECT_MORNING_SUN,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_SNATCH,
+ },
+
+ [MOVE_SYNTHESIS] = {
+ .effect = EFFECT_SYNTHESIS,
+ .power = 0,
+ .type = TYPE_GRASS,
+ .accuracy = 0,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_SNATCH,
+ },
+
+ [MOVE_MOONLIGHT] = {
+ .effect = EFFECT_MOONLIGHT,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_SNATCH,
+ },
+
+ [MOVE_HIDDEN_POWER] = {
+ .effect = EFFECT_HIDDEN_POWER,
+ .power = 1,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_CROSS_CHOP] = {
+ .effect = EFFECT_HIGH_CRITICAL,
+ .power = 100,
+ .type = TYPE_FIGHTING,
+ .accuracy = 80,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_TWISTER] = {
+ .effect = EFFECT_TWISTER,
+ .power = 40,
+ .type = TYPE_DRAGON,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 20,
+ .target = TARGET_BOTH_ENEMIES,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_RAIN_DANCE] = {
+ .effect = EFFECT_RAIN_DANCE,
+ .power = 0,
+ .type = TYPE_WATER,
+ .accuracy = 0,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_SUNNY_DAY] = {
+ .effect = EFFECT_SUNNY_DAY,
+ .power = 0,
+ .type = TYPE_FIRE,
+ .accuracy = 0,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_CRUNCH] = {
+ .effect = EFFECT_SPECIAL_DEFENSE_DOWN_HIT,
+ .power = 80,
+ .type = TYPE_DARK,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 20,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_MIRROR_COAT] = {
+ .effect = EFFECT_MIRROR_COAT,
+ .power = 1,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SPECIAL,
+ .priority = -5,
+ .flags = F_MIRROR_MOVE_COMPATIBLE,
+ },
+
+ [MOVE_PSYCH_UP] = {
+ .effect = EFFECT_PSYCH_UP,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_SNATCH,
+ },
+
+ [MOVE_EXTREME_SPEED] = {
+ .effect = EFFECT_QUICK_ATTACK,
+ .power = 80,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 1,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_ANCIENT_POWER] = {
+ .effect = EFFECT_ALL_STATS_UP_HIT,
+ .power = 60,
+ .type = TYPE_ROCK,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 10,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_SHADOW_BALL] = {
+ .effect = EFFECT_SPECIAL_DEFENSE_DOWN_HIT,
+ .power = 80,
+ .type = TYPE_GHOST,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 20,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_FUTURE_SIGHT] = {
+ .effect = EFFECT_FUTURE_SIGHT,
+ .power = 80,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 90,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_ROCK_SMASH] = {
+ .effect = EFFECT_DEFENSE_DOWN_HIT,
+ .power = 20,
+ .type = TYPE_FIGHTING,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 50,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_WHIRLPOOL] = {
+ .effect = EFFECT_TRAP,
+ .power = 15,
+ .type = TYPE_WATER,
+ .accuracy = 70,
+ .pp = 15,
+ .secondaryEffectChance = 100,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_BEAT_UP] = {
+ .effect = EFFECT_BEAT_UP,
+ .power = 10,
+ .type = TYPE_DARK,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_FAKE_OUT] = {
+ .effect = EFFECT_FAKE_OUT,
+ .power = 40,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 1,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_UPROAR] = {
+ .effect = EFFECT_UPROAR,
+ .power = 50,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 100,
+ .target = TARGET_RANDOM,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_STOCKPILE] = {
+ .effect = EFFECT_STOCKPILE,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_SNATCH,
+ },
+
+ [MOVE_SPIT_UP] = {
+ .effect = EFFECT_SPIT_UP,
+ .power = 100,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_SWALLOW] = {
+ .effect = EFFECT_SWALLOW,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_SNATCH,
+ },
+
+ [MOVE_HEAT_WAVE] = {
+ .effect = EFFECT_BURN_HIT,
+ .power = 100,
+ .type = TYPE_FIRE,
+ .accuracy = 90,
+ .pp = 10,
+ .secondaryEffectChance = 10,
+ .target = TARGET_BOTH_ENEMIES,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_HAIL] = {
+ .effect = EFFECT_HAIL,
+ .power = 0,
+ .type = TYPE_ICE,
+ .accuracy = 0,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_TORMENT] = {
+ .effect = EFFECT_TORMENT,
+ .power = 0,
+ .type = TYPE_DARK,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_FLATTER] = {
+ .effect = EFFECT_FLATTER,
+ .power = 0,
+ .type = TYPE_DARK,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_MAGIC_COAT | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_WILL_O_WISP] = {
+ .effect = EFFECT_WILL_O_WISP,
+ .power = 0,
+ .type = TYPE_FIRE,
+ .accuracy = 75,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_MAGIC_COAT | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_MEMENTO] = {
+ .effect = EFFECT_MEMENTO,
+ .power = 0,
+ .type = TYPE_DARK,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_FACADE] = {
+ .effect = EFFECT_FACADE,
+ .power = 70,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_FOCUS_PUNCH] = {
+ .effect = EFFECT_FOCUS_PUNCH,
+ .power = 150,
+ .type = TYPE_FIGHTING,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = -3,
+ .flags = F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_SMELLING_SALT] = {
+ .effect = EFFECT_SMELLINGSALT,
+ .power = 60,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_FOLLOW_ME] = {
+ .effect = EFFECT_FOLLOW_ME,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 3,
+ .flags = 0,
+ },
+
+ [MOVE_NATURE_POWER] = {
+ .effect = EFFECT_NATURE_POWER,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 95,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SPECIAL,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_CHARGE] = {
+ .effect = EFFECT_CHARGE,
+ .power = 0,
+ .type = TYPE_ELECTRIC,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_SNATCH,
+ },
+
+ [MOVE_TAUNT] = {
+ .effect = EFFECT_TAUNT,
+ .power = 0,
+ .type = TYPE_DARK,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_HELPING_HAND] = {
+ .effect = EFFECT_HELPING_HAND,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 5,
+ .flags = 0,
+ },
+
+ [MOVE_TRICK] = {
+ .effect = EFFECT_TRICK,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_ROLE_PLAY] = {
+ .effect = EFFECT_ROLE_PLAY,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_WISH] = {
+ .effect = EFFECT_WISH,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_ASSIST] = {
+ .effect = EFFECT_ASSIST,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SPECIAL,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_INGRAIN] = {
+ .effect = EFFECT_INGRAIN,
+ .power = 0,
+ .type = TYPE_GRASS,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_SNATCH,
+ },
+
+ [MOVE_SUPERPOWER] = {
+ .effect = EFFECT_SUPERPOWER,
+ .power = 120,
+ .type = TYPE_FIGHTING,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_MAGIC_COAT] = {
+ .effect = EFFECT_MAGIC_COAT,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SPECIAL,
+ .priority = 4,
+ .flags = 0,
+ },
+
+ [MOVE_RECYCLE] = {
+ .effect = EFFECT_RECYCLE,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_REVENGE] = {
+ .effect = EFFECT_REVENGE,
+ .power = 60,
+ .type = TYPE_FIGHTING,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = -4,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_BRICK_BREAK] = {
+ .effect = EFFECT_BRICK_BREAK,
+ .power = 75,
+ .type = TYPE_FIGHTING,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_YAWN] = {
+ .effect = EFFECT_YAWN,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_MAGIC_COAT | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_KNOCK_OFF] = {
+ .effect = EFFECT_KNOCK_OFF,
+ .power = 20,
+ .type = TYPE_DARK,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 100,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_ENDEAVOR] = {
+ .effect = EFFECT_ENDEAVOR,
+ .power = 1,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_ERUPTION] = {
+ .effect = EFFECT_ERUPTION,
+ .power = 150,
+ .type = TYPE_FIRE,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = TARGET_BOTH_ENEMIES,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_SKILL_SWAP] = {
+ .effect = EFFECT_SKILL_SWAP,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_IMPRISON] = {
+ .effect = EFFECT_IMPRISON,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_REFRESH] = {
+ .effect = EFFECT_REFRESH,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_SNATCH,
+ },
+
+ [MOVE_GRUDGE] = {
+ .effect = EFFECT_GRUDGE,
+ .power = 0,
+ .type = TYPE_GHOST,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_SNATCH] = {
+ .effect = EFFECT_SNATCH,
+ .power = 0,
+ .type = TYPE_DARK,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SPECIAL,
+ .priority = 4,
+ .flags = F_MIRROR_MOVE_COMPATIBLE,
+ },
+
+ [MOVE_SECRET_POWER] = {
+ .effect = EFFECT_SECRET_POWER,
+ .power = 70,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 30,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_DIVE] = {
+ .effect = EFFECT_FLY,
+ .power = 60,
+ .type = TYPE_WATER,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_ARM_THRUST] = {
+ .effect = EFFECT_MULTI_HIT,
+ .power = 15,
+ .type = TYPE_FIGHTING,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_CAMOUFLAGE] = {
+ .effect = EFFECT_CAMOUFLAGE,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_SNATCH,
+ },
+
+ [MOVE_TAIL_GLOW] = {
+ .effect = EFFECT_SPECIAL_ATTACK_UP_2,
+ .power = 0,
+ .type = TYPE_BUG,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_SNATCH,
+ },
+
+ [MOVE_LUSTER_PURGE] = {
+ .effect = EFFECT_SPECIAL_DEFENSE_DOWN_HIT,
+ .power = 70,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 50,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_MIST_BALL] = {
+ .effect = EFFECT_SPECIAL_ATTACK_DOWN_HIT,
+ .power = 70,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 50,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_FEATHER_DANCE] = {
+ .effect = EFFECT_ATTACK_DOWN_2,
+ .power = 0,
+ .type = TYPE_FLYING,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_MAGIC_COAT | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_TEETER_DANCE] = {
+ .effect = EFFECT_TEETER_DANCE,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_ALL_EXCEPT_USER,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_BLAZE_KICK] = {
+ .effect = EFFECT_BLAZE_KICK,
+ .power = 85,
+ .type = TYPE_FIRE,
+ .accuracy = 90,
+ .pp = 10,
+ .secondaryEffectChance = 10,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_MUD_SPORT] = {
+ .effect = EFFECT_MUD_SPORT,
+ .power = 0,
+ .type = TYPE_GROUND,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_ICE_BALL] = {
+ .effect = EFFECT_ROLLOUT,
+ .power = 30,
+ .type = TYPE_ICE,
+ .accuracy = 90,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_NEEDLE_ARM] = {
+ .effect = EFFECT_FLINCH_HIT_2,
+ .power = 60,
+ .type = TYPE_GRASS,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 30,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_SLACK_OFF] = {
+ .effect = EFFECT_RESTORE_HP,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_SNATCH,
+ },
+
+ [MOVE_HYPER_VOICE] = {
+ .effect = EFFECT_HIT,
+ .power = 90,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = TARGET_BOTH_ENEMIES,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_POISON_FANG] = {
+ .effect = EFFECT_POISON_FANG,
+ .power = 50,
+ .type = TYPE_POISON,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 30,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_CRUSH_CLAW] = {
+ .effect = EFFECT_DEFENSE_DOWN_HIT,
+ .power = 75,
+ .type = TYPE_NORMAL,
+ .accuracy = 95,
+ .pp = 10,
+ .secondaryEffectChance = 50,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_BLAST_BURN] = {
+ .effect = EFFECT_RECHARGE,
+ .power = 150,
+ .type = TYPE_FIRE,
+ .accuracy = 90,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_HYDRO_CANNON] = {
+ .effect = EFFECT_RECHARGE,
+ .power = 150,
+ .type = TYPE_WATER,
+ .accuracy = 90,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_METEOR_MASH] = {
+ .effect = EFFECT_ATTACK_UP_HIT,
+ .power = 100,
+ .type = TYPE_STEEL,
+ .accuracy = 85,
+ .pp = 10,
+ .secondaryEffectChance = 20,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_ASTONISH] = {
+ .effect = EFFECT_FLINCH_HIT_2,
+ .power = 30,
+ .type = TYPE_GHOST,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 30,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_WEATHER_BALL] = {
+ .effect = EFFECT_WEATHER_BALL,
+ .power = 50,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_AROMATHERAPY] = {
+ .effect = EFFECT_HEAL_BELL,
+ .power = 0,
+ .type = TYPE_GRASS,
+ .accuracy = 0,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_SNATCH,
+ },
+
+ [MOVE_FAKE_TEARS] = {
+ .effect = EFFECT_SPECIAL_DEFENSE_DOWN_2,
+ .power = 0,
+ .type = TYPE_DARK,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_MAGIC_COAT | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_AIR_CUTTER] = {
+ .effect = EFFECT_HIGH_CRITICAL,
+ .power = 55,
+ .type = TYPE_FLYING,
+ .accuracy = 95,
+ .pp = 25,
+ .secondaryEffectChance = 0,
+ .target = TARGET_BOTH_ENEMIES,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_OVERHEAT] = {
+ .effect = EFFECT_OVERHEAT,
+ .power = 140,
+ .type = TYPE_FIRE,
+ .accuracy = 90,
+ .pp = 5,
+ .secondaryEffectChance = 100,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_ODOR_SLEUTH] = {
+ .effect = EFFECT_FORESIGHT,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_ROCK_TOMB] = {
+ .effect = EFFECT_SPEED_DOWN_HIT,
+ .power = 50,
+ .type = TYPE_ROCK,
+ .accuracy = 80,
+ .pp = 10,
+ .secondaryEffectChance = 100,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_SILVER_WIND] = {
+ .effect = EFFECT_ALL_STATS_UP_HIT,
+ .power = 60,
+ .type = TYPE_BUG,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 10,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_METAL_SOUND] = {
+ .effect = EFFECT_SPECIAL_DEFENSE_DOWN_2,
+ .power = 0,
+ .type = TYPE_STEEL,
+ .accuracy = 85,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_MAGIC_COAT | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_GRASS_WHISTLE] = {
+ .effect = EFFECT_SLEEP,
+ .power = 0,
+ .type = TYPE_GRASS,
+ .accuracy = 55,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_MAGIC_COAT | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_TICKLE] = {
+ .effect = EFFECT_TICKLE,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_MAGIC_COAT | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_COSMIC_POWER] = {
+ .effect = EFFECT_COSMIC_POWER,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_SNATCH,
+ },
+
+ [MOVE_WATER_SPOUT] = {
+ .effect = EFFECT_ERUPTION,
+ .power = 150,
+ .type = TYPE_WATER,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = TARGET_BOTH_ENEMIES,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_SIGNAL_BEAM] = {
+ .effect = EFFECT_CONFUSE_HIT,
+ .power = 75,
+ .type = TYPE_BUG,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 10,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_SHADOW_PUNCH] = {
+ .effect = EFFECT_ALWAYS_HIT,
+ .power = 60,
+ .type = TYPE_GHOST,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_EXTRASENSORY] = {
+ .effect = EFFECT_FLINCH_HIT_2,
+ .power = 80,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 100,
+ .pp = 30,
+ .secondaryEffectChance = 10,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_SKY_UPPERCUT] = {
+ .effect = EFFECT_SKY_UPPERCUT,
+ .power = 85,
+ .type = TYPE_FIGHTING,
+ .accuracy = 90,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_SAND_TOMB] = {
+ .effect = EFFECT_TRAP,
+ .power = 15,
+ .type = TYPE_GROUND,
+ .accuracy = 70,
+ .pp = 15,
+ .secondaryEffectChance = 100,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_SHEER_COLD] = {
+ .effect = EFFECT_OHKO,
+ .power = 1,
+ .type = TYPE_ICE,
+ .accuracy = 30,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_MUDDY_WATER] = {
+ .effect = EFFECT_ACCURACY_DOWN_HIT,
+ .power = 95,
+ .type = TYPE_WATER,
+ .accuracy = 85,
+ .pp = 10,
+ .secondaryEffectChance = 30,
+ .target = TARGET_BOTH_ENEMIES,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_BULLET_SEED] = {
+ .effect = EFFECT_MULTI_HIT,
+ .power = 10,
+ .type = TYPE_GRASS,
+ .accuracy = 100,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_AERIAL_ACE] = {
+ .effect = EFFECT_ALWAYS_HIT,
+ .power = 60,
+ .type = TYPE_FLYING,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_ICICLE_SPEAR] = {
+ .effect = EFFECT_MULTI_HIT,
+ .power = 10,
+ .type = TYPE_ICE,
+ .accuracy = 100,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_IRON_DEFENSE] = {
+ .effect = EFFECT_DEFENSE_UP_2,
+ .power = 0,
+ .type = TYPE_STEEL,
+ .accuracy = 0,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_SNATCH,
+ },
+
+ [MOVE_BLOCK] = {
+ .effect = EFFECT_MEAN_LOOK,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_MAGIC_COAT | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_HOWL] = {
+ .effect = EFFECT_ATTACK_UP,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_SNATCH,
+ },
+
+ [MOVE_DRAGON_CLAW] = {
+ .effect = EFFECT_HIT,
+ .power = 80,
+ .type = TYPE_DRAGON,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_FRENZY_PLANT] = {
+ .effect = EFFECT_RECHARGE,
+ .power = 150,
+ .type = TYPE_GRASS,
+ .accuracy = 90,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_BULK_UP] = {
+ .effect = EFFECT_BULK_UP,
+ .power = 0,
+ .type = TYPE_FIGHTING,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_SNATCH,
+ },
+
+ [MOVE_BOUNCE] = {
+ .effect = EFFECT_FLY,
+ .power = 85,
+ .type = TYPE_FLYING,
+ .accuracy = 85,
+ .pp = 5,
+ .secondaryEffectChance = 30,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_MUD_SHOT] = {
+ .effect = EFFECT_SPEED_DOWN_HIT,
+ .power = 55,
+ .type = TYPE_GROUND,
+ .accuracy = 95,
+ .pp = 15,
+ .secondaryEffectChance = 100,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_POISON_TAIL] = {
+ .effect = EFFECT_POISON_TAIL,
+ .power = 50,
+ .type = TYPE_POISON,
+ .accuracy = 100,
+ .pp = 25,
+ .secondaryEffectChance = 10,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_COVET] = {
+ .effect = EFFECT_THIEF,
+ .power = 40,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 40,
+ .secondaryEffectChance = 100,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_VOLT_TACKLE] = {
+ .effect = EFFECT_DOUBLE_EDGE,
+ .power = 120,
+ .type = TYPE_ELECTRIC,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_MAGICAL_LEAF] = {
+ .effect = EFFECT_ALWAYS_HIT,
+ .power = 60,
+ .type = TYPE_GRASS,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_WATER_SPORT] = {
+ .effect = EFFECT_WATER_SPORT,
+ .power = 0,
+ .type = TYPE_WATER,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_CALM_MIND] = {
+ .effect = EFFECT_CALM_MIND,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_SNATCH,
+ },
+
+ [MOVE_LEAF_BLADE] = {
+ .effect = EFFECT_HIGH_CRITICAL,
+ .power = 70,
+ .type = TYPE_GRASS,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT | F_MAKES_CONTACT,
+ },
+
+ [MOVE_DRAGON_DANCE] = {
+ .effect = EFFECT_DRAGON_DANCE,
+ .power = 0,
+ .type = TYPE_DRAGON,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_USER,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_SNATCH,
+ },
+
+ [MOVE_ROCK_BLAST] = {
+ .effect = EFFECT_MULTI_HIT,
+ .power = 25,
+ .type = TYPE_ROCK,
+ .accuracy = 80,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_SHOCK_WAVE] = {
+ .effect = EFFECT_ALWAYS_HIT,
+ .power = 60,
+ .type = TYPE_ELECTRIC,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_WATER_PULSE] = {
+ .effect = EFFECT_CONFUSE_HIT,
+ .power = 60,
+ .type = TYPE_WATER,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 20,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+ [MOVE_DOOM_DESIRE] = {
+ .effect = EFFECT_FUTURE_SIGHT,
+ .power = 120,
+ .type = TYPE_STEEL,
+ .accuracy = 85,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_PSYCHO_BOOST] = {
+ .effect = EFFECT_OVERHEAT,
+ .power = 140,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 90,
+ .pp = 5,
+ .secondaryEffectChance = 100,
+ .target = TARGET_SELECTED_POKEMON,
+ .priority = 0,
+ .flags = F_AFFECTED_BY_KINGS_ROCK | F_MIRROR_MOVE_COMPATIBLE | F_AFFECTED_BY_PROTECT,
+ },
+
+};
diff --git a/src/data/battle_strings_en.h b/src/data/battle_strings_en.h
index 67eb70ee1..7ae5467dd 100644
--- a/src/data/battle_strings_en.h
+++ b/src/data/battle_strings_en.h
@@ -747,8 +747,8 @@ const u8 BattleText_BallBrokeOhNo[] = _("Oh, no!\nThe POKéMON broke free!");
const u8 BattleText_BallBrokeAppeared[] = _("Aww!\nIt appeared to be caught!");
const u8 BattleText_BallBrokeAlmost[] = _("Aargh!\nAlmost had it!");
const u8 BattleText_BallBrokeSoClose[] = _("Shoot!\nIt was so close, too!");
-const u8 BattleText_BallCaught1[] = _("Gotcha!\n{STRING 3} was caught!{UNKNOWN_A}{PLAY_BGM BGM_KACHI22}\p");
-const u8 BattleText_BallCaught2[] = _("Gotcha!\n{STRING 3} was caught!{UNKNOWN_A}{PLAY_BGM BGM_KACHI22}{PAUSE 127}");
+const u8 BattleText_BallCaught1[] = _("Gotcha!\n{STRING 3} was caught!{UNKNOWN_A}{PLAY_BGM MUS_KACHI22}\p");
+const u8 BattleText_BallCaught2[] = _("Gotcha!\n{STRING 3} was caught!{UNKNOWN_A}{PLAY_BGM MUS_KACHI22}{PAUSE 127}");
const u8 BattleText_GiveNickname[] = _("Give a nickname to the\ncaptured {STRING 3}?");
const u8 BattleText_SentToPC[] = _("{STRING 3} was sent to\n{STRING 35} PC.");
const u8 BattleText_Someone[] = _("someone’s");
diff --git a/src/data/contest_moves.h b/src/data/contest_moves.h
new file mode 100644
index 000000000..9d269e789
--- /dev/null
+++ b/src/data/contest_moves.h
@@ -0,0 +1,532 @@
+#ifndef POKERUBY_CONTEST_MOVES_H
+#define POKERUBY_CONTEST_MOVES_H
+
+const struct ContestMove gContestMoves[] = {
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // NONE
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_TOUGH, COMBO_STARTER_POUND, {0, 0, 0, 0}}, // POUND
+ {CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_FOCUS_ENERGY, 0, 0, 0}}, // KARATE_CHOP
+ {CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_POUND, 0, 0, 0}}, // DOUBLE_SLAP
+ {CONTEST_EFFECT_BETTER_IF_SAME_TYPE, CONTEST_CATEGORY_TOUGH, 0, {0, 0, 0, 0}}, // COMET_PUNCH
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_FOCUS_ENERGY, COMBO_STARTER_MIND_READER, 0, 0}}, // MEGA_PUNCH
+ {CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // PAY_DAY
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_BEAUTY, COMBO_STARTER_FIRE_PUNCH, {COMBO_STARTER_SUNNY_DAY, COMBO_STARTER_THUNDER_PUNCH, COMBO_STARTER_ICE_PUNCH, 0}}, // FIRE_PUNCH
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_BEAUTY, COMBO_STARTER_ICE_PUNCH, {COMBO_STARTER_THUNDER_PUNCH, COMBO_STARTER_FIRE_PUNCH, 0, 0}}, // ICE_PUNCH
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_COOL, COMBO_STARTER_THUNDER_PUNCH, {COMBO_STARTER_CHARGE, COMBO_STARTER_FIRE_PUNCH, COMBO_STARTER_ICE_PUNCH, 0}}, // THUNDER_PUNCH
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_TOUGH, COMBO_STARTER_SCRATCH, {COMBO_STARTER_LEER, 0, 0, 0}}, // SCRATCH
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_TOUGH, COMBO_STARTER_VICE_GRIP, {0, 0, 0, 0}}, // VICE_GRIP
+ {CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_VICE_GRIP, 0, 0, 0}}, // GUILLOTINE
+ {CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // RAZOR_WIND
+ {CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, CONTEST_CATEGORY_BEAUTY, COMBO_STARTER_SWORDS_DANCE, {0, 0, 0, 0}}, // SWORDS_DANCE
+ {CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_SWORDS_DANCE, 0, 0, 0}}, // CUT
+ {CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // GUST
+ {CONTEST_EFFECT_BETTER_IF_SAME_TYPE, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // WING_ATTACK
+ {CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // WHIRLWIND
+ {CONTEST_EFFECT_AVOID_STARTLE, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // FLY
+ {CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_VICE_GRIP, 0, 0, 0}}, // BIND
+ {CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_POUND, 0, 0, 0}}, // SLAM
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_GROWTH, 0, 0, 0}}, // VINE_WHIP
+ {CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, CONTEST_CATEGORY_TOUGH, 0, {0, COMBO_STARTER_LEER, 0, 0}}, // STOMP
+ {CONTEST_EFFECT_BETTER_IF_SAME_TYPE, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // DOUBLE_KICK
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_FOCUS_ENERGY, COMBO_STARTER_MIND_READER, 0, 0}}, // MEGA_KICK
+ {CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_MIND_READER, 0, 0, 0}}, // JUMP_KICK
+ {CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // ROLLING_KICK
+ {CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, CONTEST_CATEGORY_CUTE, COMBO_STARTER_SAND_ATTACK, {COMBO_STARTER_MUD_SLAP, COMBO_STARTER_SANDSTORM, 0, 0}}, // SAND_ATTACK
+ {CONTEST_EFFECT_STARTLE_PREV_MON, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_FOCUS_ENERGY, 0, 0, 0}}, // HEADBUTT
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_COOL, COMBO_STARTER_HORN_ATTACK, {COMBO_STARTER_LEER, 0, 0, 0}}, // HORN_ATTACK
+ {CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_HORN_ATTACK, COMBO_STARTER_PECK, 0, 0}}, // FURY_ATTACK
+ {CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_HORN_ATTACK, 0, 0, 0}}, // HORN_DRILL
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_DEFENSE_CURL, COMBO_STARTER_LEER, COMBO_STARTER_HARDEN, 0}}, // TACKLE
+ {CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, CONTEST_CATEGORY_TOUGH, 0, {0, 0, 0, 0}}, // BODY_SLAM
+ {CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, CONTEST_CATEGORY_TOUGH, 0, {0, 0, 0, 0}}, // WRAP
+ {CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_FOCUS_ENERGY, COMBO_STARTER_HARDEN, 0, 0}}, // TAKE_DOWN
+ {CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_RAGE, 0, 0, 0}}, // THRASH
+ {CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_FOCUS_ENERGY, COMBO_STARTER_HARDEN, 0, 0}}, // DOUBLE_EDGE
+ {CONTEST_EFFECT_BETTER_IF_LAST, CONTEST_CATEGORY_CUTE, 0, {COMBO_STARTER_CHARM, 0, 0, 0}}, // TAIL_WHIP
+ {CONTEST_EFFECT_STARTLE_PREV_MON, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // POISON_STING
+ {CONTEST_EFFECT_STARTLE_PREV_MON, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // TWINEEDLE
+ {CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // PIN_MISSILE
+ {CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, CONTEST_CATEGORY_COOL, COMBO_STARTER_LEER, {COMBO_STARTER_RAGE, COMBO_STARTER_SCARY_FACE, 0, 0}}, // LEER
+ {CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_LEER, COMBO_STARTER_SCARY_FACE, 0, 0}}, // BITE
+ {CONTEST_EFFECT_BETTER_IF_LAST, CONTEST_CATEGORY_CUTE, 0, {COMBO_STARTER_CHARM, 0, 0, 0}}, // GROWL
+ {CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // ROAR
+ {CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, CONTEST_CATEGORY_CUTE, COMBO_STARTER_SING, {0, 0, 0, 0}}, // SING
+ {CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // SUPERSONIC
+ {CONTEST_EFFECT_BETTER_IF_SAME_TYPE, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // SONIC_BOOM
+ {CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // DISABLE
+ {CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // ACID
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_BEAUTY, 0, {COMBO_STARTER_SUNNY_DAY, 0, 0, 0}}, // EMBER
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_BEAUTY, 0, {COMBO_STARTER_SUNNY_DAY, 0, 0, 0}}, // FLAMETHROWER
+ {CONTEST_EFFECT_AVOID_STARTLE, CONTEST_CATEGORY_BEAUTY, 0, {0, 0, 0, 0}}, // MIST
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_CUTE, 0, {COMBO_STARTER_RAIN_DANCE, COMBO_STARTER_WATER_SPORT, COMBO_STARTER_MUD_SPORT, 0}}, // WATER_GUN
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_BEAUTY, 0, {COMBO_STARTER_RAIN_DANCE, 0, 0, 0}}, // HYDRO_PUMP
+ {CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, CONTEST_CATEGORY_BEAUTY, COMBO_STARTER_SURF, {COMBO_STARTER_RAIN_DANCE, COMBO_STARTER_DIVE, 0, 0}}, // SURF
+ {CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, CONTEST_CATEGORY_BEAUTY, 0, {0, 0, 0, 0}}, // ICE_BEAM
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_BEAUTY, 0, {COMBO_STARTER_POWDER_SNOW, COMBO_STARTER_HAIL, 0, 0}}, // BLIZZARD
+ {CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, CONTEST_CATEGORY_BEAUTY, 0, {COMBO_STARTER_CALM_MIND, 0, 0, 0}}, // PSYBEAM
+ {CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, CONTEST_CATEGORY_BEAUTY, 0, {COMBO_STARTER_RAIN_DANCE, 0, 0, 0}}, // BUBBLE_BEAM
+ {CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, CONTEST_CATEGORY_BEAUTY, 0, {0, 0, 0, 0}}, // AURORA_BEAM
+ {CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // HYPER_BEAM
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_COOL, COMBO_STARTER_PECK, {0, 0, 0, 0}}, // PECK
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_PECK, 0, 0, 0}}, // DRILL_PECK
+ {CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_MIND_READER, 0, 0, 0}}, // SUBMISSION
+ {CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, CONTEST_CATEGORY_TOUGH, 0, {0, 0, 0, 0}}, // LOW_KICK
+ {CONTEST_EFFECT_AVOID_STARTLE_ONCE, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_TAUNT, 0, 0, 0}}, // COUNTER
+ {CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_FAKE_OUT, 0, 0, 0}}, // SEISMIC_TOSS
+ {CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, CONTEST_CATEGORY_TOUGH, 0, {0, 0, 0, 0}}, // STRENGTH
+ {CONTEST_EFFECT_STARTLE_PREV_MON, CONTEST_CATEGORY_SMART, 0, {COMBO_STARTER_GROWTH, 0, 0, 0}}, // ABSORB
+ {CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, CONTEST_CATEGORY_SMART, 0, {COMBO_STARTER_GROWTH, 0, 0, 0}}, // MEGA_DRAIN
+ {CONTEST_EFFECT_STARTLE_PREV_MONS, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // LEECH_SEED
+ {CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, CONTEST_CATEGORY_BEAUTY, COMBO_STARTER_GROWTH, {0, 0, 0, 0}}, // GROWTH
+ {CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_GROWTH, 0, 0, 0}}, // RAZOR_LEAF
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_SUNNY_DAY, COMBO_STARTER_GROWTH, 0, 0}}, // SOLAR_BEAM
+ {CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, CONTEST_CATEGORY_SMART, 0, {COMBO_STARTER_SWEET_SCENT, 0, 0, 0}}, // POISON_POWDER
+ {CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, CONTEST_CATEGORY_SMART, 0, {COMBO_STARTER_SWEET_SCENT, 0, 0, 0}}, // STUN_SPORE
+ {CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, CONTEST_CATEGORY_SMART, 0, {COMBO_STARTER_SWEET_SCENT, 0, 0, 0}}, // SLEEP_POWDER
+ {CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN, CONTEST_CATEGORY_BEAUTY, 0, {COMBO_STARTER_GROWTH, 0, 0, 0}}, // PETAL_DANCE
+ {CONTEST_EFFECT_STARTLE_PREV_MON, CONTEST_CATEGORY_SMART, COMBO_STARTER_STRING_SHOT, {0, 0, 0, 0}}, // STRING_SHOT
+ {CONTEST_EFFECT_BETTER_WHEN_LATER, CONTEST_CATEGORY_COOL, COMBO_STARTER_DRAGON_RAGE, {COMBO_STARTER_DRAGON_BREATH, COMBO_STARTER_DRAGON_DANCE, 0, 0}}, // DRAGON_RAGE
+ {CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, CONTEST_CATEGORY_BEAUTY, 0, {COMBO_STARTER_SUNNY_DAY, 0, 0, 0}}, // FIRE_SPIN
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_CHARGE, 0, 0, 0}}, // THUNDER_SHOCK
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_CHARGE, 0, 0, 0}}, // THUNDERBOLT
+ {CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_CHARGE, 0, 0, 0}}, // THUNDER_WAVE
+ {CONTEST_EFFECT_STARTLE_PREV_MONS, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_CHARGE, COMBO_STARTER_RAIN_DANCE, COMBO_STARTER_LOCK_ON, 0}}, // THUNDER
+ {CONTEST_EFFECT_BETTER_IF_SAME_TYPE, CONTEST_CATEGORY_TOUGH, COMBO_STARTER_ROCK_THROW, {0, 0, 0, 0}}, // ROCK_THROW
+ {CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, CONTEST_CATEGORY_TOUGH, COMBO_STARTER_EARTHQUAKE, {0, 0, 0, 0}}, // EARTHQUAKE
+ {CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_EARTHQUAKE, 0, 0, 0}}, // FISSURE
+ {CONTEST_EFFECT_AVOID_STARTLE, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // DIG
+ {CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // TOXIC
+ {CONTEST_EFFECT_STARTLE_PREV_MON, CONTEST_CATEGORY_SMART, COMBO_STARTER_CONFUSION, {COMBO_STARTER_PSYCHIC, COMBO_STARTER_KINESIS, COMBO_STARTER_CALM_MIND, 0}}, // CONFUSION
+ {CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, CONTEST_CATEGORY_SMART, COMBO_STARTER_PSYCHIC, {COMBO_STARTER_KINESIS, COMBO_STARTER_CONFUSION, COMBO_STARTER_CALM_MIND, 0}}, // PSYCHIC
+ {CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, CONTEST_CATEGORY_SMART, COMBO_STARTER_HYPNOSIS, {0, 0, 0, 0}}, // HYPNOSIS
+ {CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, CONTEST_CATEGORY_BEAUTY, 0, {COMBO_STARTER_CALM_MIND, 0, 0, 0}}, // MEDITATE
+ {CONTEST_EFFECT_NEXT_APPEAL_EARLIER, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_DOUBLE_TEAM, 0, 0, 0}}, // AGILITY
+ {CONTEST_EFFECT_NEXT_APPEAL_EARLIER, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_DOUBLE_TEAM, 0, 0, 0}}, // QUICK_ATTACK
+ {CONTEST_EFFECT_REPETITION_NOT_BORING, CONTEST_CATEGORY_COOL, COMBO_STARTER_RAGE, {0, 0, 0, 0}}, // RAGE
+ {CONTEST_EFFECT_AVOID_STARTLE, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_DOUBLE_TEAM, COMBO_STARTER_PSYCHIC, COMBO_STARTER_KINESIS, COMBO_STARTER_CONFUSION}}, // TELEPORT
+ {CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // NIGHT_SHADE
+ {CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONE, CONTEST_CATEGORY_CUTE, 0, {0, 0, 0, 0}}, // MIMIC
+ {CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // SCREECH
+ {CONTEST_EFFECT_AVOID_STARTLE_ONCE, CONTEST_CATEGORY_COOL, COMBO_STARTER_DOUBLE_TEAM, {0, 0, 0, 0}}, // DOUBLE_TEAM
+ {CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // RECOVER
+ {CONTEST_EFFECT_AVOID_STARTLE_ONCE, CONTEST_CATEGORY_TOUGH, COMBO_STARTER_HARDEN, {0, 0, 0, 0}}, // HARDEN
+ {CONTEST_EFFECT_AVOID_STARTLE_ONCE, CONTEST_CATEGORY_CUTE, 0, {0, 0, 0, 0}}, // MINIMIZE
+ {CONTEST_EFFECT_SHIFT_JUDGE_ATTENTION, CONTEST_CATEGORY_SMART, 0, {COMBO_STARTER_SMOG, 0, 0, 0}}, // SMOKESCREEN
+ {CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // CONFUSE_RAY
+ {CONTEST_EFFECT_AVOID_STARTLE, CONTEST_CATEGORY_CUTE, 0, {COMBO_STARTER_RAIN_DANCE, 0, 0, 0}}, // WITHDRAW
+ {CONTEST_EFFECT_AVOID_STARTLE_ONCE, CONTEST_CATEGORY_CUTE, COMBO_STARTER_DEFENSE_CURL, {0, 0, 0, 0}}, // DEFENSE_CURL
+ {CONTEST_EFFECT_AVOID_STARTLE, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // BARRIER
+ {CONTEST_EFFECT_AVOID_STARTLE, CONTEST_CATEGORY_BEAUTY, 0, {COMBO_STARTER_CALM_MIND, 0, 0, 0}}, // LIGHT_SCREEN
+ {CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, CONTEST_CATEGORY_BEAUTY, 0, {0, 0, 0, 0}}, // HAZE
+ {CONTEST_EFFECT_AVOID_STARTLE, CONTEST_CATEGORY_SMART, 0, {COMBO_STARTER_CALM_MIND, 0, 0, 0}}, // REFLECT
+ {CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, CONTEST_CATEGORY_COOL, COMBO_STARTER_FOCUS_ENERGY, {0, 0, 0, 0}}, // FOCUS_ENERGY
+ {CONTEST_EFFECT_AVOID_STARTLE, CONTEST_CATEGORY_TOUGH, 0, {0, 0, 0, 0}}, // BIDE
+ {CONTEST_EFFECT_REPETITION_NOT_BORING, CONTEST_CATEGORY_CUTE, 0, {0, 0, 0, 0}}, // METRONOME
+ {CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONE, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // MIRROR_MOVE
+ {CONTEST_EFFECT_GREAT_APPEAL_BUT_NO_MORE_MOVES, CONTEST_CATEGORY_BEAUTY, 0, {0, 0, 0, 0}}, // SELF_DESTRUCT
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_SOFT_BOILED, 0, 0, 0}}, // EGG_BOMB
+ {CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, CONTEST_CATEGORY_TOUGH, 0, {0, 0, 0, 0}}, // LICK
+ {CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, CONTEST_CATEGORY_TOUGH, COMBO_STARTER_SMOG, {0, 0, 0, 0}}, // SMOG
+ {CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, CONTEST_CATEGORY_TOUGH, COMBO_STARTER_SLUDGE, {COMBO_STARTER_SLUDGE_BOMB, 0, 0, 0}}, // SLUDGE
+ {CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, CONTEST_CATEGORY_TOUGH, COMBO_STARTER_BONE_CLUB, {COMBO_STARTER_BONEMERANG, COMBO_STARTER_BONE_RUSH, 0, 0}}, // BONE_CLUB
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_BEAUTY, 0, {COMBO_STARTER_SUNNY_DAY, 0, 0, 0}}, // FIRE_BLAST
+ {CONTEST_EFFECT_BETTER_IF_LAST, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_RAIN_DANCE, 0, 0, 0}}, // WATERFALL
+ {CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_RAIN_DANCE, 0, 0, 0}}, // CLAMP
+ {CONTEST_EFFECT_BETTER_IF_FIRST, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // SWIFT
+ {CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, CONTEST_CATEGORY_TOUGH, 0, {0, 0, 0, 0}}, // SKULL_BASH
+ {CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // SPIKE_CANNON
+ {CONTEST_EFFECT_STARTLE_PREV_MON, CONTEST_CATEGORY_TOUGH, 0, {0, 0, 0, 0}}, // CONSTRICT
+ {CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, CONTEST_CATEGORY_CUTE, 0, {0, 0, 0, 0}}, // AMNESIA
+ {CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, CONTEST_CATEGORY_SMART, COMBO_STARTER_KINESIS, {COMBO_STARTER_PSYCHIC, COMBO_STARTER_CONFUSION, 0, 0}}, // KINESIS
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_BEAUTY, COMBO_STARTER_SOFT_BOILED, {0, 0, 0, 0}}, // SOFT_BOILED
+ {CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_MIND_READER, 0, 0, 0}}, // HI_JUMP_KICK
+ {CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_LEER, 0, 0, 0}}, // GLARE
+ {CONTEST_EFFECT_STARTLE_PREV_MONS, CONTEST_CATEGORY_SMART, 0, {COMBO_STARTER_HYPNOSIS, COMBO_STARTER_CALM_MIND, 0, 0}}, // DREAM_EATER
+ {CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // POISON_GAS
+ {CONTEST_EFFECT_BETTER_IF_SAME_TYPE, CONTEST_CATEGORY_TOUGH, 0, {0, 0, 0, 0}}, // BARRAGE
+ {CONTEST_EFFECT_STARTLE_PREV_MON, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // LEECH_LIFE
+ {CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, CONTEST_CATEGORY_BEAUTY, 0, {0, 0, 0, 0}}, // LOVELY_KISS
+ {CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // SKY_ATTACK
+ {CONTEST_EFFECT_REPETITION_NOT_BORING, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // TRANSFORM
+ {CONTEST_EFFECT_STARTLE_PREV_MONS, CONTEST_CATEGORY_CUTE, 0, {COMBO_STARTER_RAIN_DANCE, 0, 0, 0}}, // BUBBLE
+ {CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // DIZZY_PUNCH
+ {CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, CONTEST_CATEGORY_BEAUTY, 0, {0, 0, 0, 0}}, // SPORE
+ {CONTEST_EFFECT_SHIFT_JUDGE_ATTENTION, CONTEST_CATEGORY_BEAUTY, 0, {0, 0, 0, 0}}, // FLASH
+ {CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, CONTEST_CATEGORY_SMART, 0, {COMBO_STARTER_CALM_MIND, 0, 0, 0}}, // PSYWAVE
+ {CONTEST_EFFECT_BETTER_IF_LAST, CONTEST_CATEGORY_CUTE, 0, {0, 0, 0, 0}}, // SPLASH
+ {CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, CONTEST_CATEGORY_TOUGH, 0, {0, 0, 0, 0}}, // ACID_ARMOR
+ {CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_RAIN_DANCE, COMBO_STARTER_SWORDS_DANCE, 0, 0}}, // CRABHAMMER
+ {CONTEST_EFFECT_GREAT_APPEAL_BUT_NO_MORE_MOVES, CONTEST_CATEGORY_BEAUTY, 0, {0, 0, 0, 0}}, // EXPLOSION
+ {CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_SCRATCH, 0, 0, 0}}, // FURY_SWIPES
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_TOUGH, COMBO_STARTER_BONEMERANG, {COMBO_STARTER_BONE_CLUB, COMBO_STARTER_BONE_RUSH, 0, 0}}, // BONEMERANG
+ {CONTEST_EFFECT_AVOID_STARTLE_ONCE, CONTEST_CATEGORY_CUTE, COMBO_STARTER_REST, {COMBO_STARTER_BELLY_DRUM, COMBO_STARTER_CHARM, COMBO_STARTER_YAWN, 0}}, // REST
+ {CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_ROCK_THROW, 0, 0, 0}}, // ROCK_SLIDE
+ {CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // HYPER_FANG
+ {CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, CONTEST_CATEGORY_CUTE, 0, {0, 0, 0, 0}}, // SHARPEN
+ {CONTEST_EFFECT_BETTER_IF_SAME_TYPE, CONTEST_CATEGORY_BEAUTY, 0, {0, 0, 0, 0}}, // CONVERSION
+ {CONTEST_EFFECT_STARTLE_PREV_MONS, CONTEST_CATEGORY_BEAUTY, 0, {COMBO_STARTER_LOCK_ON, 0, 0, 0}}, // TRI_ATTACK
+ {CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_SCARY_FACE, 0, 0, 0}}, // SUPER_FANG
+ {CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_SWORDS_DANCE, COMBO_STARTER_SCRATCH, 0, 0}}, // SLASH
+ {CONTEST_EFFECT_AVOID_STARTLE_ONCE, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // SUBSTITUTE
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // STRUGGLE
+ {CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONE, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // SKETCH
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_FOCUS_ENERGY, 0, 0, 0}}, // TRIPLE_KICK
+ {CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONES, CONTEST_CATEGORY_TOUGH, 0, {0, 0, 0, 0}}, // THIEF
+ {CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, CONTEST_CATEGORY_SMART, 0, {COMBO_STARTER_STRING_SHOT, 0, 0, 0}}, // SPIDER_WEB
+ {CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, CONTEST_CATEGORY_SMART, COMBO_STARTER_MIND_READER, {0, 0, 0, 0}}, // MIND_READER
+ {CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, CONTEST_CATEGORY_SMART, 0, {COMBO_STARTER_HYPNOSIS, 0, 0, 0}}, // NIGHTMARE
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_BEAUTY, 0, {COMBO_STARTER_SUNNY_DAY, 0, 0, 0}}, // FLAME_WHEEL
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_CUTE, 0, {COMBO_STARTER_REST, 0, 0, 0}}, // SNORE
+ {CONTEST_EFFECT_NEXT_APPEAL_LATER, CONTEST_CATEGORY_TOUGH, COMBO_STARTER_CURSE, {0, 0, 0, 0}}, // CURSE
+ {CONTEST_EFFECT_BETTER_WHEN_LATER, CONTEST_CATEGORY_CUTE, 0, {COMBO_STARTER_ENDURE, 0, 0, 0}}, // FLAIL
+ {CONTEST_EFFECT_BETTER_IF_SAME_TYPE, CONTEST_CATEGORY_BEAUTY, 0, {0, 0, 0, 0}}, // CONVERSION_2
+ {CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // AEROBLAST
+ {CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, CONTEST_CATEGORY_BEAUTY, 0, {0, 0, 0, 0}}, // COTTON_SPORE
+ {CONTEST_EFFECT_BETTER_IF_LAST, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_ENDURE, 0, 0, 0}}, // REVERSAL
+ {CONTEST_EFFECT_BETTER_WHEN_LATER, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_CURSE, 0, 0, 0}}, // SPITE
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_BEAUTY, COMBO_STARTER_POWDER_SNOW, {COMBO_STARTER_HAIL, 0, 0, 0}}, // POWDER_SNOW
+ {CONTEST_EFFECT_AVOID_STARTLE, CONTEST_CATEGORY_CUTE, 0, {COMBO_STARTER_HARDEN, 0, 0, 0}}, // PROTECT
+ {CONTEST_EFFECT_NEXT_APPEAL_EARLIER, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // MACH_PUNCH
+ {CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, CONTEST_CATEGORY_TOUGH, COMBO_STARTER_SCARY_FACE, {COMBO_STARTER_RAGE, COMBO_STARTER_LEER, 0, 0}}, // SCARY_FACE
+ {CONTEST_EFFECT_BETTER_IF_FIRST, CONTEST_CATEGORY_SMART, 0, {COMBO_STARTER_FAKE_OUT, COMBO_STARTER_LEER, COMBO_STARTER_POUND, 0}}, // FAINT_ATTACK
+ {CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, CONTEST_CATEGORY_CUTE, 0, {COMBO_STARTER_CHARM, 0, 0, 0}}, // SWEET_KISS
+ {CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, CONTEST_CATEGORY_CUTE, COMBO_STARTER_BELLY_DRUM, {0, 0, 0, 0}}, // BELLY_DRUM
+ {CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, CONTEST_CATEGORY_TOUGH, COMBO_STARTER_SLUDGE_BOMB, {COMBO_STARTER_SLUDGE, 0, 0, 0}}, // SLUDGE_BOMB
+ {CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, CONTEST_CATEGORY_CUTE, COMBO_STARTER_MUD_SLAP, {COMBO_STARTER_SAND_ATTACK, COMBO_STARTER_MUD_SPORT, COMBO_STARTER_SANDSTORM, 0}}, // MUD_SLAP
+ {CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_RAIN_DANCE, COMBO_STARTER_LOCK_ON, 0, 0}}, // OCTAZOOKA
+ {CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // SPIKES
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_LOCK_ON, 0, 0, 0}}, // ZAP_CANNON
+ {CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // FORESIGHT
+ {CONTEST_EFFECT_GREAT_APPEAL_BUT_NO_MORE_MOVES, CONTEST_CATEGORY_SMART, 0, {COMBO_STARTER_MEAN_LOOK, COMBO_STARTER_CURSE, COMBO_STARTER_ENDURE, 0}}, // DESTINY_BOND
+ {CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, CONTEST_CATEGORY_BEAUTY, 0, {COMBO_STARTER_MEAN_LOOK, COMBO_STARTER_SING, 0, 0}}, // PERISH_SONG
+ {CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, CONTEST_CATEGORY_BEAUTY, 0, {0, 0, 0, 0}}, // ICY_WIND
+ {CONTEST_EFFECT_AVOID_STARTLE_ONCE, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_TAUNT, 0, 0, 0}}, // DETECT
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_TOUGH, COMBO_STARTER_BONE_RUSH, {COMBO_STARTER_FOCUS_ENERGY, COMBO_STARTER_BONE_CLUB, COMBO_STARTER_BONEMERANG, 0}}, // BONE_RUSH
+ {CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, CONTEST_CATEGORY_SMART, COMBO_STARTER_LOCK_ON, {0, 0, 0, 0}}, // LOCK_ON
+ {CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // OUTRAGE
+ {CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, CONTEST_CATEGORY_TOUGH, COMBO_STARTER_SANDSTORM, {0, 0, 0, 0}}, // SANDSTORM
+ {CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, CONTEST_CATEGORY_SMART, 0, {COMBO_STARTER_GROWTH, 0, 0, 0}}, // GIGA_DRAIN
+ {CONTEST_EFFECT_AVOID_STARTLE_ONCE, CONTEST_CATEGORY_TOUGH, COMBO_STARTER_ENDURE, {0, 0, 0, 0}}, // ENDURE
+ {CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, CONTEST_CATEGORY_CUTE, COMBO_STARTER_CHARM, {0, 0, 0, 0}}, // CHARM
+ {CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_DEFENSE_CURL, COMBO_STARTER_HARDEN, 0, 0}}, // ROLLOUT
+ {CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_SWORDS_DANCE, 0, 0, 0}}, // FALSE_SWIPE
+ {CONTEST_EFFECT_BETTER_IF_FIRST, CONTEST_CATEGORY_CUTE, 0, {0, 0, 0, 0}}, // SWAGGER
+ {CONTEST_EFFECT_BETTER_IF_SAME_TYPE, CONTEST_CATEGORY_CUTE, 0, {0, 0, 0, 0}}, // MILK_DRINK
+ {CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_CHARGE, 0, 0, 0}}, // SPARK
+ {CONTEST_EFFECT_REPETITION_NOT_BORING, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_SWORDS_DANCE, 0, 0, 0}}, // FURY_CUTTER
+ {CONTEST_EFFECT_BETTER_IF_SAME_TYPE, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // STEEL_WING
+ {CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, CONTEST_CATEGORY_BEAUTY, COMBO_STARTER_MEAN_LOOK, {COMBO_STARTER_CURSE, 0, 0, 0}}, // MEAN_LOOK
+ {CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, CONTEST_CATEGORY_CUTE, 0, {0, 0, 0, 0}}, // ATTRACT
+ {CONTEST_EFFECT_REPETITION_NOT_BORING, CONTEST_CATEGORY_CUTE, 0, {COMBO_STARTER_REST, 0, 0, 0}}, // SLEEP_TALK
+ {CONTEST_EFFECT_BETTER_IF_LAST, CONTEST_CATEGORY_BEAUTY, 0, {0, 0, 0, 0}}, // HEAL_BELL
+ {CONTEST_EFFECT_EXCITE_AUDIENCE_IN_ANY_CONTEST, CONTEST_CATEGORY_CUTE, 0, {0, 0, 0, 0}}, // RETURN
+ {CONTEST_EFFECT_REPETITION_NOT_BORING, CONTEST_CATEGORY_CUTE, 0, {0, 0, 0, 0}}, // PRESENT
+ {CONTEST_EFFECT_EXCITE_AUDIENCE_IN_ANY_CONTEST, CONTEST_CATEGORY_CUTE, 0, {0, 0, 0, 0}}, // FRUSTRATION
+ {CONTEST_EFFECT_AVOID_STARTLE, CONTEST_CATEGORY_BEAUTY, 0, {0, 0, 0, 0}}, // SAFEGUARD
+ {CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, CONTEST_CATEGORY_SMART, 0, {COMBO_STARTER_ENDURE, 0, 0, 0}}, // PAIN_SPLIT
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_BEAUTY, 0, {COMBO_STARTER_SUNNY_DAY, 0, 0, 0}}, // SACRED_FIRE
+ {CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED, CONTEST_CATEGORY_TOUGH, 0, {0, 0, 0, 0}}, // MAGNITUDE
+ {CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_FOCUS_ENERGY, COMBO_STARTER_MIND_READER, 0, 0}}, // DYNAMIC_PUNCH
+ {CONTEST_EFFECT_BETTER_IF_SAME_TYPE, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // MEGAHORN
+ {CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, CONTEST_CATEGORY_COOL, COMBO_STARTER_DRAGON_BREATH, {COMBO_STARTER_DRAGON_RAGE, COMBO_STARTER_DRAGON_DANCE, 0, 0}}, // DRAGON_BREATH
+ {CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, CONTEST_CATEGORY_CUTE, 0, {0, 0, 0, 0}}, // BATON_PASS
+ {CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, CONTEST_CATEGORY_CUTE, 0, {0, 0, 0, 0}}, // ENCORE
+ {CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // PURSUIT
+ {CONTEST_EFFECT_AVOID_STARTLE_ONCE, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // RAPID_SPIN
+ {CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, CONTEST_CATEGORY_CUTE, COMBO_STARTER_SWEET_SCENT, {0, 0, 0, 0}}, // SWEET_SCENT
+ {CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // IRON_TAIL
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_METAL_SOUND, 0, 0, 0}}, // METAL_CLAW
+ {CONTEST_EFFECT_NEXT_APPEAL_LATER, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_FAKE_OUT, 0, 0, 0}}, // VITAL_THROW
+ {CONTEST_EFFECT_QUALITY_DEPENDS_ON_TIMING, CONTEST_CATEGORY_BEAUTY, 0, {COMBO_STARTER_SUNNY_DAY, 0, 0, 0}}, // MORNING_SUN
+ {CONTEST_EFFECT_QUALITY_DEPENDS_ON_TIMING, CONTEST_CATEGORY_SMART, 0, {COMBO_STARTER_SUNNY_DAY, 0, 0, 0}}, // SYNTHESIS
+ {CONTEST_EFFECT_QUALITY_DEPENDS_ON_TIMING, CONTEST_CATEGORY_BEAUTY, 0, {COMBO_STARTER_SUNNY_DAY, 0, 0, 0}}, // MOONLIGHT
+ {CONTEST_EFFECT_REPETITION_NOT_BORING, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // HIDDEN_POWER
+ {CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_FOCUS_ENERGY, 0, 0, 0}}, // CROSS_CHOP
+ {CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // TWISTER
+ {CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED, CONTEST_CATEGORY_TOUGH, COMBO_STARTER_RAIN_DANCE, {0, 0, 0, 0}}, // RAIN_DANCE
+ {CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED, CONTEST_CATEGORY_BEAUTY, COMBO_STARTER_SUNNY_DAY, {0, 0, 0, 0}}, // SUNNY_DAY
+ {CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_SCARY_FACE, 0, 0, 0}}, // CRUNCH
+ {CONTEST_EFFECT_AVOID_STARTLE_ONCE, CONTEST_CATEGORY_BEAUTY, 0, {COMBO_STARTER_TAUNT, 0, 0, 0}}, // MIRROR_COAT
+ {CONTEST_EFFECT_BETTER_IF_SAME_TYPE, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // PSYCH_UP
+ {CONTEST_EFFECT_NEXT_APPEAL_EARLIER, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // EXTREME_SPEED
+ {CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, CONTEST_CATEGORY_TOUGH, 0, {0, 0, 0, 0}}, // ANCIENT_POWER
+ {CONTEST_EFFECT_SHIFT_JUDGE_ATTENTION, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // SHADOW_BALL
+ {CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, CONTEST_CATEGORY_SMART, 0, {COMBO_STARTER_PSYCHIC, COMBO_STARTER_KINESIS, COMBO_STARTER_CONFUSION, COMBO_STARTER_CALM_MIND}}, // FUTURE_SIGHT
+ {CONTEST_EFFECT_BETTER_WITH_GOOD_CONDITION, CONTEST_CATEGORY_TOUGH, 0, {0, 0, 0, 0}}, // ROCK_SMASH
+ {CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, CONTEST_CATEGORY_BEAUTY, 0, {COMBO_STARTER_RAIN_DANCE, 0, 0, 0}}, // WHIRLPOOL
+ {CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // BEAT_UP
+ {CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, CONTEST_CATEGORY_CUTE, COMBO_STARTER_FAKE_OUT, {0, 0, 0, 0}}, // FAKE_OUT
+ {CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, CONTEST_CATEGORY_CUTE, 0, {0, 0, 0, 0}}, // UPROAR
+ {CONTEST_EFFECT_AVOID_STARTLE_ONCE, CONTEST_CATEGORY_TOUGH, COMBO_STARTER_STOCKPILE, {0, 0, 0, 0}}, // STOCKPILE
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_STOCKPILE, 0, 0, 0}}, // SPIT_UP
+ {CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_STOCKPILE, 0, 0, 0}}, // SWALLOW
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_BEAUTY, 0, {COMBO_STARTER_SUNNY_DAY, 0, 0, 0}}, // HEAT_WAVE
+ {CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, CONTEST_CATEGORY_BEAUTY, COMBO_STARTER_HAIL, {0, 0, 0, 0}}, // HAIL
+ {CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, CONTEST_CATEGORY_TOUGH, 0, {0, 0, 0, 0}}, // TORMENT
+ {CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, CONTEST_CATEGORY_SMART, 0, {COMBO_STARTER_CHARM, 0, 0, 0}}, // FLATTER
+ {CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, CONTEST_CATEGORY_BEAUTY, 0, {COMBO_STARTER_SUNNY_DAY, 0, 0, 0}}, // WILL_O_WISP
+ {CONTEST_EFFECT_GREAT_APPEAL_BUT_NO_MORE_MOVES, CONTEST_CATEGORY_TOUGH, 0, {0, 0, 0, 0}}, // MEMENTO
+ {CONTEST_EFFECT_BETTER_IF_LAST, CONTEST_CATEGORY_CUTE, 0, {0, 0, 0, 0}}, // FACADE
+ {CONTEST_EFFECT_NEXT_APPEAL_LATER, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_FOCUS_ENERGY, 0, 0, 0}}, // FOCUS_PUNCH
+ {CONTEST_EFFECT_STARTLE_PREV_MON, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // SMELLING_SALT
+ {CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, CONTEST_CATEGORY_CUTE, 0, {0, 0, 0, 0}}, // FOLLOW_ME
+ {CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED, CONTEST_CATEGORY_BEAUTY, 0, {0, 0, 0, 0}}, // NATURE_POWER
+ {CONTEST_EFFECT_BETTER_IF_SAME_TYPE, CONTEST_CATEGORY_SMART, COMBO_STARTER_CHARGE, {0, 0, 0, 0}}, // CHARGE
+ {CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, CONTEST_CATEGORY_SMART, COMBO_STARTER_TAUNT, {0, 0, 0, 0}}, // TAUNT
+ {CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // HELPING_HAND
+ {CONTEST_EFFECT_BETTER_IF_SAME_TYPE, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // TRICK
+ {CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONES, CONTEST_CATEGORY_CUTE, 0, {0, 0, 0, 0}}, // ROLE_PLAY
+ {CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, CONTEST_CATEGORY_CUTE, 0, {0, 0, 0, 0}}, // WISH
+ {CONTEST_EFFECT_QUALITY_DEPENDS_ON_TIMING, CONTEST_CATEGORY_CUTE, 0, {0, 0, 0, 0}}, // ASSIST
+ {CONTEST_EFFECT_AVOID_STARTLE, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // INGRAIN
+ {CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_LOCK_ON, 0, 0, 0}}, // SUPERPOWER
+ {CONTEST_EFFECT_AVOID_STARTLE, CONTEST_CATEGORY_BEAUTY, 0, {0, 0, 0, 0}}, // MAGIC_COAT
+ {CONTEST_EFFECT_REPETITION_NOT_BORING, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // RECYCLE
+ {CONTEST_EFFECT_NEXT_APPEAL_LATER, CONTEST_CATEGORY_TOUGH, 0, {0, 0, 0, 0}}, // REVENGE
+ {CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_FOCUS_ENERGY, 0, 0, 0}}, // BRICK_BREAK
+ {CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, CONTEST_CATEGORY_CUTE, COMBO_STARTER_YAWN, {0, 0, 0, 0}}, // YAWN
+ {CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, CONTEST_CATEGORY_SMART, 0, {COMBO_STARTER_FAKE_OUT, 0, 0, 0}}, // KNOCK_OFF
+ {CONTEST_EFFECT_BETTER_IF_LAST, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_ENDURE, 0, 0, 0}}, // ENDEAVOR
+ {CONTEST_EFFECT_BETTER_WHEN_LATER, CONTEST_CATEGORY_BEAUTY, 0, {COMBO_STARTER_ENDURE, COMBO_STARTER_EARTHQUAKE, COMBO_STARTER_SUNNY_DAY, 0}}, // ERUPTION
+ {CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONES, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // SKILL_SWAP
+ {CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // IMPRISON
+ {CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, CONTEST_CATEGORY_CUTE, 0, {COMBO_STARTER_WATER_SPORT, COMBO_STARTER_SING, 0, 0}}, // REFRESH
+ {CONTEST_EFFECT_BETTER_WHEN_LATER, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_CURSE, 0, 0, 0}}, // GRUDGE
+ {CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // SNATCH
+ {CONTEST_EFFECT_BETTER_WITH_GOOD_CONDITION, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // SECRET_POWER
+ {CONTEST_EFFECT_AVOID_STARTLE_ONCE, CONTEST_CATEGORY_BEAUTY, COMBO_STARTER_DIVE, {COMBO_STARTER_RAIN_DANCE, COMBO_STARTER_SURF, 0, 0}}, // DIVE
+ {CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_FOCUS_ENERGY, COMBO_STARTER_FAKE_OUT, 0, 0}}, // ARM_THRUST
+ {CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // CAMOUFLAGE
+ {CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, CONTEST_CATEGORY_BEAUTY, 0, {0, 0, 0, 0}}, // TAIL_GLOW
+ {CONTEST_EFFECT_STARTLE_PREV_MON, CONTEST_CATEGORY_SMART, 0, {COMBO_STARTER_CALM_MIND, 0, 0, 0}}, // LUSTER_PURGE
+ {CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, CONTEST_CATEGORY_SMART, 0, {COMBO_STARTER_CALM_MIND, 0, 0, 0}}, // MIST_BALL
+ {CONTEST_EFFECT_BETTER_IF_LAST, CONTEST_CATEGORY_BEAUTY, 0, {0, 0, 0, 0}}, // FEATHER_DANCE
+ {CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN, CONTEST_CATEGORY_CUTE, 0, {0, 0, 0, 0}}, // TEETER_DANCE
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_BEAUTY, 0, {COMBO_STARTER_SUNNY_DAY, 0, 0, 0}}, // BLAZE_KICK
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_CUTE, COMBO_STARTER_MUD_SPORT, {COMBO_STARTER_MUD_SLAP, COMBO_STARTER_WATER_SPORT, 0, 0}}, // MUD_SPORT
+ {CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, CONTEST_CATEGORY_BEAUTY, 0, {0, 0, 0, 0}}, // ICE_BALL
+ {CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // NEEDLE_ARM
+ {CONTEST_EFFECT_BETTER_WHEN_LATER, CONTEST_CATEGORY_CUTE, 0, {COMBO_STARTER_YAWN, 0, 0, 0}}, // SLACK_OFF
+ {CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // HYPER_VOICE
+ {CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // POISON_FANG
+ {CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_SWORDS_DANCE, 0, 0, 0}}, // CRUSH_CLAW
+ {CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN, CONTEST_CATEGORY_BEAUTY, 0, {COMBO_STARTER_SUNNY_DAY, 0, 0, 0}}, // BLAST_BURN
+ {CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN, CONTEST_CATEGORY_BEAUTY, 0, {COMBO_STARTER_RAIN_DANCE, 0, 0, 0}}, // HYDRO_CANNON
+ {CONTEST_EFFECT_BETTER_IF_SAME_TYPE, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // METEOR_MASH
+ {CONTEST_EFFECT_STARTLE_PREV_MON, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // ASTONISH
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_SMART, 0, {COMBO_STARTER_RAIN_DANCE, COMBO_STARTER_SUNNY_DAY, COMBO_STARTER_HAIL, COMBO_STARTER_SANDSTORM}}, // WEATHER_BALL
+ {CONTEST_EFFECT_BETTER_IF_LAST, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // AROMATHERAPY
+ {CONTEST_EFFECT_BETTER_IF_LAST, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // FAKE_TEARS
+ {CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // AIR_CUTTER
+ {CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, CONTEST_CATEGORY_BEAUTY, 0, {COMBO_STARTER_SUNNY_DAY, 0, 0, 0}}, // OVERHEAT
+ {CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // ODOR_SLEUTH
+ {CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, CONTEST_CATEGORY_SMART, 0, {COMBO_STARTER_ROCK_THROW, 0, 0, 0}}, // ROCK_TOMB
+ {CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, CONTEST_CATEGORY_BEAUTY, 0, {0, 0, 0, 0}}, // SILVER_WIND
+ {CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, CONTEST_CATEGORY_SMART, COMBO_STARTER_METAL_SOUND, {0, 0, 0, 0}}, // METAL_SOUND
+ {CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // GRASS_WHISTLE
+ {CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, CONTEST_CATEGORY_CUTE, 0, {0, 0, 0, 0}}, // TICKLE
+ {CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // COSMIC_POWER
+ {CONTEST_EFFECT_BETTER_WHEN_LATER, CONTEST_CATEGORY_BEAUTY, 0, {COMBO_STARTER_RAIN_DANCE, 0, 0, 0}}, // WATER_SPOUT
+ {CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, CONTEST_CATEGORY_BEAUTY, 0, {0, 0, 0, 0}}, // SIGNAL_BEAM
+ {CONTEST_EFFECT_BETTER_IF_FIRST, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // SHADOW_PUNCH
+ {CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // EXTRASENSORY
+ {CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_FOCUS_ENERGY, 0, 0, 0}}, // SKY_UPPERCUT
+ {CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, CONTEST_CATEGORY_SMART, 0, {COMBO_STARTER_SANDSTORM, 0, 0, 0}}, // SAND_TOMB
+ {CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, CONTEST_CATEGORY_BEAUTY, 0, {0, 0, 0, 0}}, // SHEER_COLD
+ {CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_RAIN_DANCE, 0, 0, 0}}, // MUDDY_WATER
+ {CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_GROWTH, 0, 0, 0}}, // BULLET_SEED
+ {CONTEST_EFFECT_BETTER_IF_FIRST, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // AERIAL_ACE
+ {CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, CONTEST_CATEGORY_BEAUTY, 0, {0, 0, 0, 0}}, // ICICLE_SPEAR
+ {CONTEST_EFFECT_AVOID_STARTLE, CONTEST_CATEGORY_TOUGH, 0, {0, 0, 0, 0}}, // IRON_DEFENSE
+ {CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, CONTEST_CATEGORY_CUTE, 0, {0, 0, 0, 0}}, // BLOCK
+ {CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // HOWL
+ {CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_DRAGON_BREATH, COMBO_STARTER_DRAGON_RAGE, COMBO_STARTER_DRAGON_DANCE, 0}}, // DRAGON_CLAW
+ {CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_GROWTH, 0, 0, 0}}, // FRENZY_PLANT
+ {CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, CONTEST_CATEGORY_BEAUTY, 0, {0, 0, 0, 0}}, // BULK_UP
+ {CONTEST_EFFECT_AVOID_STARTLE, CONTEST_CATEGORY_CUTE, 0, {0, 0, 0, 0}}, // BOUNCE
+ {CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, CONTEST_CATEGORY_TOUGH, 0, {0, 0, 0, 0}}, // MUD_SHOT
+ {CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // POISON_TAIL
+ {CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONES, CONTEST_CATEGORY_CUTE, 0, {0, 0, 0, 0}}, // COVET
+ {CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_CHARGE, 0, 0, 0}}, // VOLT_TACKLE
+ {CONTEST_EFFECT_BETTER_IF_FIRST, CONTEST_CATEGORY_BEAUTY, 0, {COMBO_STARTER_GROWTH, 0, 0, 0}}, // MAGICAL_LEAF
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_CUTE, COMBO_STARTER_WATER_SPORT, {COMBO_STARTER_RAIN_DANCE, COMBO_STARTER_MUD_SPORT, 0, 0}}, // WATER_SPORT
+ {CONTEST_EFFECT_AVOID_STARTLE_ONCE, CONTEST_CATEGORY_SMART, COMBO_STARTER_CALM_MIND, {0, 0, 0, 0}}, // CALM_MIND
+ {CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // LEAF_BLADE
+ {CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, CONTEST_CATEGORY_COOL, COMBO_STARTER_DRAGON_DANCE, {COMBO_STARTER_DRAGON_RAGE, COMBO_STARTER_DRAGON_BREATH, 0, 0}}, // DRAGON_DANCE
+ {CONTEST_EFFECT_BETTER_IF_SAME_TYPE, CONTEST_CATEGORY_TOUGH, 0, {0, 0, 0, 0}}, // ROCK_BLAST
+ {CONTEST_EFFECT_BETTER_IF_FIRST, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_CHARGE, 0, 0, 0}}, // SHOCK_WAVE
+ {CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, CONTEST_CATEGORY_BEAUTY, 0, {COMBO_STARTER_RAIN_DANCE, 0, 0, 0}}, // WATER_PULSE
+ {CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // DOOM_DESIRE
+ {CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, CONTEST_CATEGORY_SMART, 0, {COMBO_STARTER_CALM_MIND, 0, 0, 0}}, // PSYCHO_BOOST
+};
+
+const struct ContestEffect gContestEffects[] = {
+ {0, 40, 0}, // CONTEST_EFFECT_HIGHLY_APPEALING
+ {0, 60, 0}, // CONTEST_EFFECT_USER_MORE_EASILY_STARTLED
+ {0, 80, 0}, // CONTEST_EFFECT_GREAT_APPEAL_BUT_NO_MORE_MOVES
+ {0, 30, 0}, // CONTEST_EFFECT_REPETITION_NOT_BORING
+ {1, 20, 0}, // CONTEST_EFFECT_AVOID_STARTLE_ONCE
+ {1, 10, 0}, // CONTEST_EFFECT_AVOID_STARTLE
+ {1, 30, 0}, // CONTEST_EFFECT_AVOID_STARTLE_SLIGHTLY
+ {1, 30, 0}, // CONTEST_EFFECT_USER_LESS_EASILY_STARTLED
+ {2, 30, 20}, // CONTEST_EFFECT_STARTLE_FRONT_MON
+ {3, 30, 10}, // CONTEST_EFFECT_SLIGHTLY_STARTLE_PREV_MONS
+ {2, 20, 30}, // CONTEST_EFFECT_STARTLE_PREV_MON
+ {3, 20, 20}, // CONTEST_EFFECT_STARTLE_PREV_MONS
+ {2, 10, 40}, // CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON
+ {3, 10, 30}, // CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS
+ {2, 30, 20}, // CONTEST_EFFECT_STARTLE_PREV_MON_2
+ {3, 30, 10}, // CONTEST_EFFECT_STARTLE_PREV_MONS_2
+ {4, 30, 0}, // CONTEST_EFFECT_SHIFT_JUDGE_ATTENTION
+ {3, 20, 10}, // CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION
+ {3, 40, 40}, // CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN
+ {3, 20, 10}, // CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL
+ {3, 20, 10}, // CONTEST_EFFECT_STARTLE_MONS_COOL_APPEAL
+ {3, 20, 10}, // CONTEST_EFFECT_STARTLE_MONS_BEAUTY_APPEAL
+ {3, 20, 10}, // CONTEST_EFFECT_STARTLE_MONS_CUTE_APPEAL
+ {3, 20, 10}, // CONTEST_EFFECT_STARTLE_MONS_SMART_APPEAL
+ {3, 20, 10}, // CONTEST_EFFECT_STARTLE_MONS_TOUGH_APPEAL
+ {4, 20, 0}, // CONTEST_EFFECT_MAKE_FOLLOWING_MON_NERVOUS
+ {4, 20, 0}, // CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS
+ {4, 30, 0}, // CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS
+ {3, 30, 10}, // CONTEST_EFFECT_BADLY_STARTLES_MONS_IN_GOOD_CONDITION
+ {5, 20, 0}, // CONTEST_EFFECT_BETTER_IF_FIRST
+ {5, 20, 0}, // CONTEST_EFFECT_BETTER_IF_LAST
+ {5, 10, 0}, // CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONES
+ {5, 10, 0}, // CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONE
+ {5, 10, 0}, // CONTEST_EFFECT_BETTER_WHEN_LATER
+ {5, 10, 0}, // CONTEST_EFFECT_QUALITY_DEPENDS_ON_TIMING
+ {5, 20, 0}, // CONTEST_EFFECT_BETTER_IF_SAME_TYPE
+ {5, 20, 0}, // CONTEST_EFFECT_BETTER_IF_DIFF_TYPE
+ {5, 30, 0}, // CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL
+ {5, 10, 0}, // CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS
+ {5, 10, 0}, // CONTEST_EFFECT_BETTER_WITH_GOOD_CONDITION
+ {6, 30, 0}, // CONTEST_EFFECT_NEXT_APPEAL_EARLIER
+ {6, 30, 0}, // CONTEST_EFFECT_NEXT_APPEAL_LATER
+ {6, 30, 0}, // CONTEST_EFFECT_MAKE_SCRAMBLING_TURN_ORDER_EASIER
+ {6, 30, 0}, // CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER
+ {5, 10, 0}, // CONTEST_EFFECT_EXCITE_AUDIENCE_IN_ANY_CONTEST
+ {3, 20, 10}, // CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS
+ {5, 10, 0}, // CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED
+ {4, 30, 0} // CONTEST_EFFECT_DONT_EXCITE_AUDIENCE
+};
+
+// A lookup table with TRUE for each combo starter ID and FALSE for ID 0,
+// which means "not a combo starter move".
+const bool8 gComboStarterLookupTable[] = {
+ FALSE,
+ TRUE,
+ TRUE,
+ TRUE,
+ TRUE,
+ TRUE,
+ TRUE,
+ TRUE,
+ TRUE,
+ TRUE,
+ TRUE,
+ TRUE,
+ TRUE,
+ TRUE,
+ TRUE,
+ TRUE,
+ TRUE,
+ TRUE,
+ TRUE,
+ TRUE,
+ TRUE,
+ TRUE,
+ TRUE,
+ TRUE,
+ TRUE,
+ TRUE,
+ TRUE,
+ TRUE,
+ TRUE,
+ TRUE,
+ TRUE,
+ TRUE,
+ TRUE,
+ TRUE,
+ TRUE,
+ TRUE,
+ TRUE,
+ TRUE,
+ TRUE,
+ TRUE,
+ TRUE,
+ TRUE,
+ TRUE,
+ TRUE,
+ TRUE,
+ TRUE,
+ TRUE,
+ TRUE,
+ TRUE,
+ TRUE,
+ TRUE,
+ TRUE,
+ TRUE,
+ TRUE,
+ TRUE,
+ TRUE,
+ TRUE,
+ TRUE,
+ TRUE,
+ TRUE,
+ TRUE,
+ TRUE,
+ TRUE
+};
+
+void (*const gContestEffectFuncs[])(void) = {
+ ContestEffect_HighlyAppealing,
+ ContestEffect_UserMoreEasilyStartled,
+ ContestEffect_GreatAppealButNoMoreMoves,
+ ContestEffect_RepetitionNotBoring,
+ ContestEffect_AvoidStartleOnce,
+ ContestEffect_AvoidStartle,
+ ContestEffect_AvoidStartleSlightly,
+ ContestEffect_UserLessEasilyStartled,
+ ContestEffect_StartleFrontMon,
+ ContestEffect_StartlePrevMons,
+ ContestEffect_StartleFrontMon,
+ ContestEffect_StartlePrevMons,
+ ContestEffect_StartleFrontMon,
+ ContestEffect_StartlePrevMons,
+ ContestEffect_StartlePrevMon2,
+ ContestEffect_StartlePrevMons2,
+ ContestEffect_ShiftJudgeAttention,
+ ContestEffect_StartleMonWithJudgesAttention,
+ ContestEffect_JamsOthersButMissOneTurn,
+ ContestEffect_StartleMonsSameTypeAppeal,
+ ContestEffect_StartleMonsCoolAppeal,
+ ContestEffect_StartleMonsBeautyAppeal,
+ ContestEffect_StartleMonsCuteAppeal,
+ ContestEffect_StartleMonsSmartAppeal,
+ ContestEffect_StartleMonsToughAppeal,
+ ContestEffect_MakeFollowingMonNervous,
+ ContestEffect_MakeFollowingMonsNervous,
+ ContestEffect_WorsenConditionOfPrevMons,
+ ContestEffect_BadlyStartlesMonsInGoodCondition,
+ ContestEffect_BetterIfFirst,
+ ContestEffect_BetterIfLast,
+ ContestEffect_AppealAsGoodAsPrevOnes,
+ ContestEffect_AppealAsGoodAsPrevOne,
+ ContestEffect_BetterWhenLater,
+ ContestEffect_QualityDependsOnTiming,
+ ContestEffect_BetterIfSameType,
+ ContestEffect_BetterIfDiffType,
+ ContestEffect_AffectedByPrevAppeal,
+ ContestEffect_ImproveConditionPreventNervousness,
+ ContestEffect_BetterWithGoodCondition,
+ ContestEffect_NextAppealEarlier,
+ ContestEffect_NextAppealLater,
+ ContestEffect_MakeScramblingTurnOrderEasier,
+ ContestEffect_ScrambleNextTurnOrder,
+ ContestEffect_ExciteAudienceInAnyContest,
+ ContestEffect_BadlyStartleMonsWithGoodAppeals,
+ ContestEffect_BetterWhenAudienceExcited,
+ ContestEffect_DontExciteAudience
+};
+
+#endif //POKERUBY_CONTEST_MOVES_H
diff --git a/src/data/field_map_obj/base_oam.h b/src/data/field_event_obj/base_oam.h
index 49c14e8c2..49c14e8c2 100644
--- a/src/data/field_map_obj/base_oam.h
+++ b/src/data/field_event_obj/base_oam.h
diff --git a/src/data/field_event_obj/berry_tree_graphics_tables.h b/src/data/field_event_obj/berry_tree_graphics_tables.h
new file mode 100644
index 000000000..185efc68e
--- /dev/null
+++ b/src/data/field_event_obj/berry_tree_graphics_tables.h
@@ -0,0 +1,573 @@
+//
+
+//
+
+#ifndef POKERUBY_BERRY_TREE_GRAPHICS_TABLES_H
+#define POKERUBY_BERRY_TREE_GRAPHICS_TABLES_H
+
+const struct SpriteFrameImage gEventObjectPicTable_PechaBerryTree[] = {
+ obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
+ obj_frame_tiles(gEventObjectPic_PechaBerryTree_0),
+ obj_frame_tiles(gEventObjectPic_PechaBerryTree_1),
+ obj_frame_tiles(gEventObjectPic_PechaBerryTree_2),
+ obj_frame_tiles(gEventObjectPic_PechaBerryTree_3),
+ obj_frame_tiles(gEventObjectPic_PechaBerryTree_4),
+ obj_frame_tiles(gEventObjectPic_PechaBerryTree_5)
+};
+
+const u8 gBerryTreePaletteSlotTable_Pecha[] = {3, 4, 4, 4, 4};
+
+const struct SpriteFrameImage gEventObjectPicTable_KelpsyBerryTree[] = {
+ obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
+ obj_frame_tiles(gEventObjectPic_KelpsyBerryTree_0),
+ obj_frame_tiles(gEventObjectPic_KelpsyBerryTree_1),
+ obj_frame_tiles(gEventObjectPic_KelpsyBerryTree_2),
+ obj_frame_tiles(gEventObjectPic_KelpsyBerryTree_3),
+ obj_frame_tiles(gEventObjectPic_KelpsyBerryTree_4),
+ obj_frame_tiles(gEventObjectPic_KelpsyBerryTree_5)
+};
+
+const u8 gBerryTreePaletteSlotTable_Kelpsy[] = {3, 4, 2, 2, 2};
+
+const struct SpriteFrameImage gEventObjectPicTable_WepearBerryTree[] = {
+ obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
+ obj_frame_tiles(gEventObjectPic_WepearBerryTree_0),
+ obj_frame_tiles(gEventObjectPic_WepearBerryTree_1),
+ obj_frame_tiles(gEventObjectPic_WepearBerryTree_2),
+ obj_frame_tiles(gEventObjectPic_WepearBerryTree_3),
+ obj_frame_tiles(gEventObjectPic_WepearBerryTree_4),
+ obj_frame_tiles(gEventObjectPic_WepearBerryTree_5)
+};
+
+const u8 gBerryTreePaletteSlotTable_Wepear[] = {3, 4, 2, 2, 2};
+
+const struct SpriteFrameImage gEventObjectPicTable_IapapaBerryTree[] = {
+ obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
+ obj_frame_tiles(gEventObjectPic_IapapaBerryTree_0),
+ obj_frame_tiles(gEventObjectPic_IapapaBerryTree_1),
+ obj_frame_tiles(gEventObjectPic_IapapaBerryTree_2),
+ obj_frame_tiles(gEventObjectPic_IapapaBerryTree_3),
+ obj_frame_tiles(gEventObjectPic_IapapaBerryTree_4),
+ obj_frame_tiles(gEventObjectPic_IapapaBerryTree_5)
+};
+
+const u8 gBerryTreePaletteSlotTable_Iapapa[] = {3, 4, 3, 3, 3};
+
+const struct SpriteFrameImage gEventObjectPicTable_CheriBerryTree[] = {
+ obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
+ obj_frame_tiles(gEventObjectPic_CheriBerryTree_0),
+ obj_frame_tiles(gEventObjectPic_CheriBerryTree_1),
+ obj_frame_tiles(gEventObjectPic_CheriBerryTree_2),
+ obj_frame_tiles(gEventObjectPic_CheriBerryTree_3),
+ obj_frame_tiles(gEventObjectPic_CheriBerryTree_4),
+ obj_frame_tiles(gEventObjectPic_CheriBerryTree_5)
+};
+
+const u8 gBerryTreePaletteSlotTable_Cheri[] = {3, 4, 4, 4, 4};
+
+const struct SpriteFrameImage gEventObjectPicTable_FigyBerryTree[] = {
+ obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
+ obj_frame_tiles(gEventObjectPic_FigyBerryTree_0),
+ obj_frame_tiles(gEventObjectPic_FigyBerryTree_1),
+ obj_frame_tiles(gEventObjectPic_FigyBerryTree_2),
+ obj_frame_tiles(gEventObjectPic_FigyBerryTree_3),
+ obj_frame_tiles(gEventObjectPic_FigyBerryTree_4),
+ obj_frame_tiles(gEventObjectPic_FigyBerryTree_5)
+};
+
+const u8 gBerryTreePaletteSlotTable_Figy[] = {3, 4, 3, 3, 3};
+
+const struct SpriteFrameImage gEventObjectPicTable_MagoBerryTree[] = {
+ obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
+ obj_frame_tiles(gEventObjectPic_MagoBerryTree_0),
+ obj_frame_tiles(gEventObjectPic_MagoBerryTree_1),
+ obj_frame_tiles(gEventObjectPic_MagoBerryTree_2),
+ obj_frame_tiles(gEventObjectPic_MagoBerryTree_3),
+ obj_frame_tiles(gEventObjectPic_MagoBerryTree_4),
+ obj_frame_tiles(gEventObjectPic_MagoBerryTree_5)
+};
+
+const u8 gBerryTreePaletteSlotTable_Mago[] = {3, 4, 3, 3, 3};
+
+const struct SpriteFrameImage gEventObjectPicTable_LumBerryTree[] = {
+ obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
+ obj_frame_tiles(gEventObjectPic_LumBerryTree_0),
+ obj_frame_tiles(gEventObjectPic_LumBerryTree_1),
+ obj_frame_tiles(gEventObjectPic_LumBerryTree_2),
+ obj_frame_tiles(gEventObjectPic_LumBerryTree_3),
+ obj_frame_tiles(gEventObjectPic_LumBerryTree_4),
+ obj_frame_tiles(gEventObjectPic_LumBerryTree_5)
+};
+
+const u8 gBerryTreePaletteSlotTable_Lum[] = {3, 4, 4, 4, 4};
+
+const struct SpriteFrameImage gEventObjectPicTable_RazzBerryTree[] = {
+ obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
+ obj_frame_tiles(gEventObjectPic_RazzBerryTree_0),
+ obj_frame_tiles(gEventObjectPic_RazzBerryTree_1),
+ obj_frame_tiles(gEventObjectPic_RazzBerryTree_2),
+ obj_frame_tiles(gEventObjectPic_RazzBerryTree_3),
+ obj_frame_tiles(gEventObjectPic_RazzBerryTree_4),
+ obj_frame_tiles(gEventObjectPic_RazzBerryTree_5)
+};
+
+const u8 gBerryTreePaletteSlotTable_Razz[] = {3, 4, 4, 4, 4};
+
+const struct SpriteFrameImage gEventObjectPicTable_GrepaBerryTree[] = {
+ obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
+ obj_frame_tiles(gEventObjectPic_GrepaBerryTree_0),
+ obj_frame_tiles(gEventObjectPic_GrepaBerryTree_1),
+ obj_frame_tiles(gEventObjectPic_GrepaBerryTree_2),
+ obj_frame_tiles(gEventObjectPic_GrepaBerryTree_3),
+ obj_frame_tiles(gEventObjectPic_GrepaBerryTree_4),
+ obj_frame_tiles(gEventObjectPic_GrepaBerryTree_5)
+};
+
+const u8 gBerryTreePaletteSlotTable_Grepa[] = {3, 4, 3, 3, 3};
+
+const struct SpriteFrameImage gEventObjectPicTable_RabutaBerryTree[] = {
+ obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
+ obj_frame_tiles(gEventObjectPic_RabutaBerryTree_0),
+ obj_frame_tiles(gEventObjectPic_RabutaBerryTree_1),
+ obj_frame_tiles(gEventObjectPic_RabutaBerryTree_2),
+ obj_frame_tiles(gEventObjectPic_RabutaBerryTree_3),
+ obj_frame_tiles(gEventObjectPic_RabutaBerryTree_4),
+ obj_frame_tiles(gEventObjectPic_RabutaBerryTree_5)
+};
+
+const u8 gBerryTreePaletteSlotTable_Rabuta[] = {3, 4, 4, 4, 4};
+
+const struct SpriteFrameImage gEventObjectPicTable_NomelBerryTree[] = {
+ obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
+ obj_frame_tiles(gEventObjectPic_NomelBerryTree_0),
+ obj_frame_tiles(gEventObjectPic_NomelBerryTree_1),
+ obj_frame_tiles(gEventObjectPic_NomelBerryTree_2),
+ obj_frame_tiles(gEventObjectPic_NomelBerryTree_3),
+ obj_frame_tiles(gEventObjectPic_NomelBerryTree_4),
+ obj_frame_tiles(gEventObjectPic_NomelBerryTree_5)
+};
+
+const u8 gBerryTreePaletteSlotTable_Nomel[] = {3, 4, 3, 3, 3};
+
+const struct SpriteFrameImage gEventObjectPicTable_LeppaBerryTree[] = {
+ obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
+ obj_frame_tiles(gEventObjectPic_LeppaBerryTree_0),
+ obj_frame_tiles(gEventObjectPic_LeppaBerryTree_1),
+ obj_frame_tiles(gEventObjectPic_LeppaBerryTree_2),
+ obj_frame_tiles(gEventObjectPic_LeppaBerryTree_3),
+ obj_frame_tiles(gEventObjectPic_LeppaBerryTree_4),
+ obj_frame_tiles(gEventObjectPic_LeppaBerryTree_5)
+};
+
+const u8 gBerryTreePaletteSlotTable_Leppa[] = {3, 4, 3, 3, 3};
+
+const struct SpriteFrameImage gEventObjectPicTable_LiechiBerryTree[] = {
+ obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
+ obj_frame_tiles(gEventObjectPic_LiechiBerryTree_0),
+ obj_frame_tiles(gEventObjectPic_LiechiBerryTree_1),
+ obj_frame_tiles(gEventObjectPic_LiechiBerryTree_2),
+ obj_frame_tiles(gEventObjectPic_LiechiBerryTree_3),
+ obj_frame_tiles(gEventObjectPic_LiechiBerryTree_4),
+ obj_frame_tiles(gEventObjectPic_LiechiBerryTree_5)
+};
+
+const u8 gBerryTreePaletteSlotTable_Liechi[] = {3, 4, 4, 4, 4};
+
+const struct SpriteFrameImage gEventObjectPicTable_HondewBerryTree[] = {
+ obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
+ obj_frame_tiles(gEventObjectPic_HondewBerryTree_0),
+ obj_frame_tiles(gEventObjectPic_HondewBerryTree_1),
+ obj_frame_tiles(gEventObjectPic_HondewBerryTree_2),
+ obj_frame_tiles(gEventObjectPic_HondewBerryTree_3),
+ obj_frame_tiles(gEventObjectPic_HondewBerryTree_4),
+ obj_frame_tiles(gEventObjectPic_HondewBerryTree_5)
+};
+
+const u8 gBerryTreePaletteSlotTable_Hondew[] = {3, 4, 5, 5, 5};
+
+const struct SpriteFrameImage gEventObjectPicTable_AguavBerryTree[] = {
+ obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
+ obj_frame_tiles(gEventObjectPic_AguavBerryTree_0),
+ obj_frame_tiles(gEventObjectPic_AguavBerryTree_1),
+ obj_frame_tiles(gEventObjectPic_AguavBerryTree_2),
+ obj_frame_tiles(gEventObjectPic_AguavBerryTree_3),
+ obj_frame_tiles(gEventObjectPic_AguavBerryTree_4),
+ obj_frame_tiles(gEventObjectPic_AguavBerryTree_5)
+};
+
+const u8 gBerryTreePaletteSlotTable_Aguav[] = {3, 4, 4, 4, 4};
+
+const struct SpriteFrameImage gEventObjectPicTable_WikiBerryTree[] = {
+ obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
+ obj_frame_tiles(gEventObjectPic_WikiBerryTree_0),
+ obj_frame_tiles(gEventObjectPic_WikiBerryTree_1),
+ obj_frame_tiles(gEventObjectPic_WikiBerryTree_2),
+ obj_frame_tiles(gEventObjectPic_WikiBerryTree_3),
+ obj_frame_tiles(gEventObjectPic_WikiBerryTree_4),
+ obj_frame_tiles(gEventObjectPic_WikiBerryTree_5)
+};
+
+const u8 gBerryTreePaletteSlotTable_Wiki[] = {3, 4, 3, 3, 3};
+
+const struct SpriteFrameImage gEventObjectPicTable_PomegBerryTree[] = {
+ obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
+ obj_frame_tiles(gEventObjectPic_PomegBerryTree_0),
+ obj_frame_tiles(gEventObjectPic_PomegBerryTree_1),
+ obj_frame_tiles(gEventObjectPic_PomegBerryTree_2),
+ obj_frame_tiles(gEventObjectPic_PomegBerryTree_3),
+ obj_frame_tiles(gEventObjectPic_PomegBerryTree_4),
+ obj_frame_tiles(gEventObjectPic_PomegBerryTree_5)
+};
+
+const u8 gBerryTreePaletteSlotTable_Pomeg[] = {3, 4, 3, 3, 3};
+
+const struct SpriteFrameImage gEventObjectPicTable_RawstBerryTree[] = {
+ obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
+ obj_frame_tiles(gEventObjectPic_RawstBerryTree_0),
+ obj_frame_tiles(gEventObjectPic_RawstBerryTree_1),
+ obj_frame_tiles(gEventObjectPic_RawstBerryTree_2),
+ obj_frame_tiles(gEventObjectPic_RawstBerryTree_3),
+ obj_frame_tiles(gEventObjectPic_RawstBerryTree_4),
+ obj_frame_tiles(gEventObjectPic_RawstBerryTree_5)
+};
+
+const u8 gBerryTreePaletteSlotTable_Rawst[] = {3, 4, 4, 4, 4};
+
+const struct SpriteFrameImage gEventObjectPicTable_SpelonBerryTree[] = {
+ obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
+ obj_frame_tiles(gEventObjectPic_SpelonBerryTree_0),
+ obj_frame_tiles(gEventObjectPic_SpelonBerryTree_1),
+ obj_frame_tiles(gEventObjectPic_SpelonBerryTree_2),
+ obj_frame_tiles(gEventObjectPic_SpelonBerryTree_3),
+ obj_frame_tiles(gEventObjectPic_SpelonBerryTree_4),
+ obj_frame_tiles(gEventObjectPic_SpelonBerryTree_5)
+};
+
+const u8 gBerryTreePaletteSlotTable_Spelon[] = {3, 4, 3, 3, 3};
+
+const struct SpriteFrameImage gEventObjectPicTable_ChestoBerryTree[] = {
+ obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
+ obj_frame_tiles(gEventObjectPic_ChestoBerryTree_0),
+ obj_frame_tiles(gEventObjectPic_ChestoBerryTree_1),
+ obj_frame_tiles(gEventObjectPic_ChestoBerryTree_2),
+ obj_frame_tiles(gEventObjectPic_ChestoBerryTree_3),
+ obj_frame_tiles(gEventObjectPic_ChestoBerryTree_4),
+ obj_frame_tiles(gEventObjectPic_ChestoBerryTree_5)
+};
+
+const u8 gBerryTreePaletteSlotTable_Chesto[] = {3, 4, 2, 2, 2};
+
+const struct SpriteFrameImage gEventObjectPicTable_OranBerryTree[] = {
+ obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
+ obj_frame_tiles(gEventObjectPic_OranBerryTree_0),
+ obj_frame_tiles(gEventObjectPic_OranBerryTree_1),
+ obj_frame_tiles(gEventObjectPic_OranBerryTree_2),
+ obj_frame_tiles(gEventObjectPic_OranBerryTree_3),
+ obj_frame_tiles(gEventObjectPic_OranBerryTree_4),
+ obj_frame_tiles(gEventObjectPic_OranBerryTree_5)
+};
+
+const u8 gBerryTreePaletteSlotTable_Oran[] = {3, 4, 2, 2, 2};
+
+const struct SpriteFrameImage gEventObjectPicTable_PersimBerryTree[] = {
+ obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
+ obj_frame_tiles(gEventObjectPic_PersimBerryTree_0),
+ obj_frame_tiles(gEventObjectPic_PersimBerryTree_1),
+ obj_frame_tiles(gEventObjectPic_PersimBerryTree_2),
+ obj_frame_tiles(gEventObjectPic_PersimBerryTree_3),
+ obj_frame_tiles(gEventObjectPic_PersimBerryTree_4),
+ obj_frame_tiles(gEventObjectPic_PersimBerryTree_5)
+};
+
+const u8 gBerryTreePaletteSlotTable_Persim[] = {3, 4, 2, 2, 2};
+
+const struct SpriteFrameImage gEventObjectPicTable_SitrusBerryTree[] = {
+ obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
+ obj_frame_tiles(gEventObjectPic_SitrusBerryTree_0),
+ obj_frame_tiles(gEventObjectPic_SitrusBerryTree_1),
+ obj_frame_tiles(gEventObjectPic_SitrusBerryTree_2),
+ obj_frame_tiles(gEventObjectPic_SitrusBerryTree_3),
+ obj_frame_tiles(gEventObjectPic_SitrusBerryTree_4),
+ obj_frame_tiles(gEventObjectPic_SitrusBerryTree_5)
+};
+
+const u8 gBerryTreePaletteSlotTable_Sitrus[] = {3, 4, 4, 4, 4};
+
+const struct SpriteFrameImage gEventObjectPicTable_AspearBerryTree[] = {
+ obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
+ obj_frame_tiles(gEventObjectPic_AspearBerryTree_0),
+ obj_frame_tiles(gEventObjectPic_AspearBerryTree_1),
+ obj_frame_tiles(gEventObjectPic_AspearBerryTree_2),
+ obj_frame_tiles(gEventObjectPic_AspearBerryTree_3),
+ obj_frame_tiles(gEventObjectPic_AspearBerryTree_4),
+ obj_frame_tiles(gEventObjectPic_AspearBerryTree_5)
+};
+
+const u8 gBerryTreePaletteSlotTable_Aspear[] = {3, 4, 3, 3, 3};
+
+const struct SpriteFrameImage gEventObjectPicTable_PamtreBerryTree[] = {
+ obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
+ obj_frame_tiles(gEventObjectPic_PamtreBerryTree_0),
+ obj_frame_tiles(gEventObjectPic_PamtreBerryTree_1),
+ obj_frame_tiles(gEventObjectPic_PamtreBerryTree_2),
+ obj_frame_tiles(gEventObjectPic_PamtreBerryTree_3),
+ obj_frame_tiles(gEventObjectPic_PamtreBerryTree_4),
+ obj_frame_tiles(gEventObjectPic_PamtreBerryTree_5)
+};
+
+const u8 gBerryTreePaletteSlotTable_Pamtre[] = {3, 4, 2, 2, 2};
+
+const struct SpriteFrameImage gEventObjectPicTable_CornnBerryTree[] = {
+ obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
+ obj_frame_tiles(gEventObjectPic_CornnBerryTree_0),
+ obj_frame_tiles(gEventObjectPic_CornnBerryTree_1),
+ obj_frame_tiles(gEventObjectPic_CornnBerryTree_2),
+ obj_frame_tiles(gEventObjectPic_CornnBerryTree_3),
+ obj_frame_tiles(gEventObjectPic_CornnBerryTree_4),
+ obj_frame_tiles(gEventObjectPic_CornnBerryTree_5)
+};
+
+const u8 gBerryTreePaletteSlotTable_Cornn[] = {3, 4, 2, 2, 2};
+
+const struct SpriteFrameImage gEventObjectPicTable_LansatBerryTree[] = {
+ obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
+ obj_frame_tiles(gEventObjectPic_LansatBerryTree_0),
+ obj_frame_tiles(gEventObjectPic_LansatBerryTree_1),
+ obj_frame_tiles(gEventObjectPic_LansatBerryTree_2),
+ obj_frame_tiles(gEventObjectPic_LansatBerryTree_3),
+ obj_frame_tiles(gEventObjectPic_LansatBerryTree_4),
+ obj_frame_tiles(gEventObjectPic_LansatBerryTree_5)
+};
+
+const u8 gBerryTreePaletteSlotTable_Lansat[] = {3, 4, 2, 2, 2};
+
+const struct SpriteFrameImage gEventObjectPicTable_DurinBerryTree[] = {
+ obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
+ obj_frame_tiles(gEventObjectPic_DurinBerryTree_0),
+ obj_frame_tiles(gEventObjectPic_DurinBerryTree_1),
+ obj_frame_tiles(gEventObjectPic_DurinBerryTree_2),
+ obj_frame_tiles(gEventObjectPic_DurinBerryTree_3),
+ obj_frame_tiles(gEventObjectPic_DurinBerryTree_4),
+ obj_frame_tiles(gEventObjectPic_DurinBerryTree_5)
+};
+
+const u8 gBerryTreePaletteSlotTable_Durin[] = {3, 4, 4, 4, 4};
+
+const struct SpriteFrameImage gEventObjectPicTable_TamatoBerryTree[] = {
+ obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
+ obj_frame_tiles(gEventObjectPic_TamatoBerryTree_0),
+ obj_frame_tiles(gEventObjectPic_TamatoBerryTree_1),
+ obj_frame_tiles(gEventObjectPic_TamatoBerryTree_2),
+ obj_frame_tiles(gEventObjectPic_TamatoBerryTree_3),
+ obj_frame_tiles(gEventObjectPic_TamatoBerryTree_4),
+ obj_frame_tiles(gEventObjectPic_TamatoBerryTree_5)
+};
+
+const u8 gBerryTreePaletteSlotTable_Tamato[] = {3, 4, 2, 2, 2};
+
+const u8 gDeadBerryTreeGraphicsIdTable[] = {EVENT_OBJ_GFX_BERRY_TREE_EARLY_STAGES, EVENT_OBJ_GFX_BERRY_TREE_EARLY_STAGES, EVENT_OBJ_GFX_BERRY_TREE_EARLY_STAGES, EVENT_OBJ_GFX_BERRY_TREE_EARLY_STAGES, EVENT_OBJ_GFX_BERRY_TREE_EARLY_STAGES};
+
+const u8 gBerryTreeGraphicsIdTable[] = {EVENT_OBJ_GFX_BERRY_TREE_EARLY_STAGES, EVENT_OBJ_GFX_BERRY_TREE_EARLY_STAGES, EVENT_OBJ_GFX_BERRY_TREE_LATE_STAGES, EVENT_OBJ_GFX_BERRY_TREE_LATE_STAGES, EVENT_OBJ_GFX_BERRY_TREE_LATE_STAGES};
+
+const struct SpriteFrameImage *const gBerryTreePicTablePointers[] = {
+ gEventObjectPicTable_CheriBerryTree,
+ gEventObjectPicTable_ChestoBerryTree,
+ gEventObjectPicTable_PechaBerryTree,
+ gEventObjectPicTable_RawstBerryTree,
+ gEventObjectPicTable_AspearBerryTree,
+ gEventObjectPicTable_LeppaBerryTree,
+ gEventObjectPicTable_OranBerryTree,
+ gEventObjectPicTable_PersimBerryTree,
+ gEventObjectPicTable_LumBerryTree,
+ gEventObjectPicTable_SitrusBerryTree,
+ gEventObjectPicTable_FigyBerryTree,
+ gEventObjectPicTable_WikiBerryTree,
+ gEventObjectPicTable_MagoBerryTree,
+ gEventObjectPicTable_AguavBerryTree,
+ gEventObjectPicTable_IapapaBerryTree,
+ gEventObjectPicTable_RazzBerryTree,
+ gEventObjectPicTable_RazzBerryTree,
+ gEventObjectPicTable_MagoBerryTree,
+ gEventObjectPicTable_WepearBerryTree,
+ gEventObjectPicTable_IapapaBerryTree,
+ gEventObjectPicTable_PomegBerryTree,
+ gEventObjectPicTable_KelpsyBerryTree,
+ gEventObjectPicTable_WepearBerryTree,
+ gEventObjectPicTable_HondewBerryTree,
+ gEventObjectPicTable_GrepaBerryTree,
+ gEventObjectPicTable_TamatoBerryTree,
+ gEventObjectPicTable_CornnBerryTree,
+ gEventObjectPicTable_PomegBerryTree,
+ gEventObjectPicTable_RabutaBerryTree,
+ gEventObjectPicTable_NomelBerryTree,
+ gEventObjectPicTable_SpelonBerryTree,
+ gEventObjectPicTable_PamtreBerryTree,
+ gEventObjectPicTable_RabutaBerryTree,
+ gEventObjectPicTable_DurinBerryTree,
+ gEventObjectPicTable_HondewBerryTree,
+ gEventObjectPicTable_LiechiBerryTree,
+ gEventObjectPicTable_HondewBerryTree,
+ gEventObjectPicTable_AguavBerryTree,
+ gEventObjectPicTable_PomegBerryTree,
+ gEventObjectPicTable_GrepaBerryTree,
+ gEventObjectPicTable_LansatBerryTree,
+ gEventObjectPicTable_CornnBerryTree,
+ gEventObjectPicTable_DurinBerryTree
+};
+
+const u8 *const gBerryTreePaletteSlotTablePointers[] = {
+ gBerryTreePaletteSlotTable_Cheri,
+ gBerryTreePaletteSlotTable_Chesto,
+ gBerryTreePaletteSlotTable_Pecha,
+ gBerryTreePaletteSlotTable_Rawst,
+ gBerryTreePaletteSlotTable_Aspear,
+ gBerryTreePaletteSlotTable_Leppa,
+ gBerryTreePaletteSlotTable_Oran,
+ gBerryTreePaletteSlotTable_Persim,
+ gBerryTreePaletteSlotTable_Lum,
+ gBerryTreePaletteSlotTable_Sitrus,
+ gBerryTreePaletteSlotTable_Figy,
+ gBerryTreePaletteSlotTable_Wiki,
+ gBerryTreePaletteSlotTable_Mago,
+ gBerryTreePaletteSlotTable_Aguav,
+ gBerryTreePaletteSlotTable_Iapapa,
+ gBerryTreePaletteSlotTable_Razz,
+ gBerryTreePaletteSlotTable_Razz,
+ gBerryTreePaletteSlotTable_Mago,
+ gBerryTreePaletteSlotTable_Wepear,
+ gBerryTreePaletteSlotTable_Iapapa,
+ gBerryTreePaletteSlotTable_Pomeg,
+ gBerryTreePaletteSlotTable_Kelpsy,
+ gBerryTreePaletteSlotTable_Wepear,
+ gBerryTreePaletteSlotTable_Hondew,
+ gBerryTreePaletteSlotTable_Grepa,
+ gBerryTreePaletteSlotTable_Tamato,
+ gBerryTreePaletteSlotTable_Cornn,
+ gBerryTreePaletteSlotTable_Pomeg,
+ gBerryTreePaletteSlotTable_Rabuta,
+ gBerryTreePaletteSlotTable_Nomel,
+ gBerryTreePaletteSlotTable_Spelon,
+ gBerryTreePaletteSlotTable_Pamtre,
+ gBerryTreePaletteSlotTable_Rabuta,
+ gBerryTreePaletteSlotTable_Durin,
+ gBerryTreePaletteSlotTable_Hondew,
+ gBerryTreePaletteSlotTable_Liechi,
+ gBerryTreePaletteSlotTable_Hondew,
+ gBerryTreePaletteSlotTable_Aguav,
+ gBerryTreePaletteSlotTable_Pomeg,
+ gBerryTreePaletteSlotTable_Grepa,
+ gBerryTreePaletteSlotTable_Lansat,
+ gBerryTreePaletteSlotTable_Cornn,
+ gBerryTreePaletteSlotTable_Durin
+};
+
+const u8 *const gBerryTreeGraphicsIdTablePointers[] = {
+ gBerryTreeGraphicsIdTable,
+ gBerryTreeGraphicsIdTable,
+ gBerryTreeGraphicsIdTable,
+ gBerryTreeGraphicsIdTable,
+ gBerryTreeGraphicsIdTable,
+ gBerryTreeGraphicsIdTable,
+ gBerryTreeGraphicsIdTable,
+ gBerryTreeGraphicsIdTable,
+ gBerryTreeGraphicsIdTable,
+ gBerryTreeGraphicsIdTable,
+ gBerryTreeGraphicsIdTable,
+ gBerryTreeGraphicsIdTable,
+ gBerryTreeGraphicsIdTable,
+ gBerryTreeGraphicsIdTable,
+ gBerryTreeGraphicsIdTable,
+ gBerryTreeGraphicsIdTable,
+ gBerryTreeGraphicsIdTable,
+ gBerryTreeGraphicsIdTable,
+ gBerryTreeGraphicsIdTable,
+ gBerryTreeGraphicsIdTable,
+ gBerryTreeGraphicsIdTable,
+ gBerryTreeGraphicsIdTable,
+ gBerryTreeGraphicsIdTable,
+ gBerryTreeGraphicsIdTable,
+ gBerryTreeGraphicsIdTable,
+ gBerryTreeGraphicsIdTable,
+ gBerryTreeGraphicsIdTable,
+ gBerryTreeGraphicsIdTable,
+ gBerryTreeGraphicsIdTable,
+ gBerryTreeGraphicsIdTable,
+ gBerryTreeGraphicsIdTable,
+ gBerryTreeGraphicsIdTable,
+ gBerryTreeGraphicsIdTable,
+ gBerryTreeGraphicsIdTable,
+ gBerryTreeGraphicsIdTable,
+ gBerryTreeGraphicsIdTable,
+ gBerryTreeGraphicsIdTable,
+ gBerryTreeGraphicsIdTable,
+ gBerryTreeGraphicsIdTable,
+ gBerryTreeGraphicsIdTable,
+ gBerryTreeGraphicsIdTable,
+ gBerryTreeGraphicsIdTable,
+ gBerryTreeGraphicsIdTable,
+ gBerryTreeGraphicsIdTable,
+ gBerryTreeGraphicsIdTable,
+ gBerryTreeGraphicsIdTable
+};
+
+#endif //POKERUBY_BERRY_TREE_GRAPHICS_TABLES_H
diff --git a/src/data/field_event_obj/event_object_anims.h b/src/data/field_event_obj/event_object_anims.h
new file mode 100644
index 000000000..f1733b627
--- /dev/null
+++ b/src/data/field_event_obj/event_object_anims.h
@@ -0,0 +1,886 @@
+//
+
+//
+
+#ifndef POKERUBY_EVENT_OBJECT_ANIMS_H
+#define POKERUBY_EVENT_OBJECT_ANIMS_H
+
+
+const union AnimCmd gEventObjectImageAnim_83708C8[] = {
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gEventObjectImageAnim_83708DC[] = {
+ ANIMCMD_FRAME(0, 16),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gEventObjectImageAnim_83708E4[] = {
+ ANIMCMD_FRAME(1, 16),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gEventObjectImageAnim_83708EC[] = {
+ ANIMCMD_FRAME(2, 16),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gEventObjectImageAnim_83708F4[] = {
+ ANIMCMD_FRAME(2, 16, .hFlip = TRUE),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gEventObjectImageAnim_83708FC[] = {
+ ANIMCMD_FRAME(3, 8),
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(3, 8, .hFlip = TRUE),
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gEventObjectImageAnim_8370910[] = {
+ ANIMCMD_FRAME(4, 8),
+ ANIMCMD_FRAME(1, 8),
+ ANIMCMD_FRAME(4, 8, .hFlip = TRUE),
+ ANIMCMD_FRAME(1, 8),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gEventObjectImageAnim_8370924[] = {
+ ANIMCMD_FRAME(5, 8),
+ ANIMCMD_FRAME(2, 8),
+ ANIMCMD_FRAME(6, 8),
+ ANIMCMD_FRAME(2, 8),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gEventObjectImageAnim_8370938[] = {
+ ANIMCMD_FRAME(5, 8, .hFlip = TRUE),
+ ANIMCMD_FRAME(2, 8, .hFlip = TRUE),
+ ANIMCMD_FRAME(6, 8, .hFlip = TRUE),
+ ANIMCMD_FRAME(2, 8, .hFlip = TRUE),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gEventObjectImageAnim_837094C[] = {
+ ANIMCMD_FRAME(3, 4),
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(3, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gEventObjectImageAnim_8370960[] = {
+ ANIMCMD_FRAME(4, 4),
+ ANIMCMD_FRAME(1, 4),
+ ANIMCMD_FRAME(4, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(1, 4),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gEventObjectImageAnim_8370974[] = {
+ ANIMCMD_FRAME(5, 4),
+ ANIMCMD_FRAME(2, 4),
+ ANIMCMD_FRAME(6, 4),
+ ANIMCMD_FRAME(2, 4),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gEventObjectImageAnim_8370988[] = {
+ ANIMCMD_FRAME(5, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(2, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(6, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(2, 4, .hFlip = TRUE),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gEventObjectImageAnim_837099C[] = {
+ ANIMCMD_FRAME(3, 2),
+ ANIMCMD_FRAME(0, 2),
+ ANIMCMD_FRAME(3, 2, .hFlip = TRUE),
+ ANIMCMD_FRAME(0, 2),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gEventObjectImageAnim_83709B0[] = {
+ ANIMCMD_FRAME(4, 2),
+ ANIMCMD_FRAME(1, 2),
+ ANIMCMD_FRAME(4, 2, .hFlip = TRUE),
+ ANIMCMD_FRAME(1, 2),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gEventObjectImageAnim_83709C4[] = {
+ ANIMCMD_FRAME(5, 2),
+ ANIMCMD_FRAME(2, 2),
+ ANIMCMD_FRAME(6, 2),
+ ANIMCMD_FRAME(2, 2),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gEventObjectImageAnim_83709D8[] = {
+ ANIMCMD_FRAME(5, 2, .hFlip = TRUE),
+ ANIMCMD_FRAME(2, 2, .hFlip = TRUE),
+ ANIMCMD_FRAME(6, 2, .hFlip = TRUE),
+ ANIMCMD_FRAME(2, 2, .hFlip = TRUE),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gEventObjectImageAnim_83709EC[] = {
+ ANIMCMD_FRAME(3, 1),
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_FRAME(3, 1, .hFlip = TRUE),
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gEventObjectImageAnim_8370A00[] = {
+ ANIMCMD_FRAME(4, 1),
+ ANIMCMD_FRAME(1, 1),
+ ANIMCMD_FRAME(4, 1, .hFlip = TRUE),
+ ANIMCMD_FRAME(1, 1),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gEventObjectImageAnim_8370A14[] = {
+ ANIMCMD_FRAME(5, 1),
+ ANIMCMD_FRAME(2, 1),
+ ANIMCMD_FRAME(6, 1),
+ ANIMCMD_FRAME(2, 1),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gEventObjectImageAnim_8370A28[] = {
+ ANIMCMD_FRAME(5, 1, .hFlip = TRUE),
+ ANIMCMD_FRAME(2, 1, .hFlip = TRUE),
+ ANIMCMD_FRAME(6, 1, .hFlip = TRUE),
+ ANIMCMD_FRAME(2, 1, .hFlip = TRUE),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gEventObjectImageAnim_8370A3C[] = {
+ ANIMCMD_FRAME(0, 16),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gEventObjectImageAnim_8370A44[] = {
+ ANIMCMD_FRAME(1, 16),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gEventObjectImageAnim_8370A4C[] = {
+ ANIMCMD_FRAME(2, 16),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gEventObjectImageAnim_8370A54[] = {
+ ANIMCMD_FRAME(2, 16, .hFlip = TRUE),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gEventObjectImageAnim_8370A5C[] = {
+ ANIMCMD_FRAME(3, 8),
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(4, 8),
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gEventObjectImageAnim_8370A70[] = {
+ ANIMCMD_FRAME(5, 8),
+ ANIMCMD_FRAME(1, 8),
+ ANIMCMD_FRAME(6, 8),
+ ANIMCMD_FRAME(1, 8),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gEventObjectImageAnim_8370A84[] = {
+ ANIMCMD_FRAME(7, 8),
+ ANIMCMD_FRAME(2, 8),
+ ANIMCMD_FRAME(8, 8),
+ ANIMCMD_FRAME(2, 8),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gEventObjectImageAnim_8370A98[] = {
+ ANIMCMD_FRAME(7, 8, .hFlip = TRUE),
+ ANIMCMD_FRAME(2, 8, .hFlip = TRUE),
+ ANIMCMD_FRAME(8, 8, .hFlip = TRUE),
+ ANIMCMD_FRAME(2, 8, .hFlip = TRUE),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gEventObjectImageAnim_8370AAC[] = {
+ ANIMCMD_FRAME(3, 4),
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(4, 4),
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gEventObjectImageAnim_8370AC0[] = {
+ ANIMCMD_FRAME(5, 4),
+ ANIMCMD_FRAME(1, 4),
+ ANIMCMD_FRAME(6, 4),
+ ANIMCMD_FRAME(1, 4),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gEventObjectImageAnim_8370AD4[] = {
+ ANIMCMD_FRAME(7, 4),
+ ANIMCMD_FRAME(2, 4),
+ ANIMCMD_FRAME(8, 4),
+ ANIMCMD_FRAME(2, 4),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gEventObjectImageAnim_8370AE8[] = {
+ ANIMCMD_FRAME(7, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(2, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(8, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(2, 4, .hFlip = TRUE),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gEventObjectImageAnim_8370AFC[] = {
+ ANIMCMD_FRAME(3, 2),
+ ANIMCMD_FRAME(0, 2),
+ ANIMCMD_FRAME(4, 2),
+ ANIMCMD_FRAME(0, 2),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gEventObjectImageAnim_8370B10[] = {
+ ANIMCMD_FRAME(5, 2),
+ ANIMCMD_FRAME(1, 2),
+ ANIMCMD_FRAME(6, 2),
+ ANIMCMD_FRAME(1, 2),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gEventObjectImageAnim_8370B24[] = {
+ ANIMCMD_FRAME(7, 2),
+ ANIMCMD_FRAME(2, 2),
+ ANIMCMD_FRAME(8, 2),
+ ANIMCMD_FRAME(2, 2),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gEventObjectImageAnim_8370B38[] = {
+ ANIMCMD_FRAME(7, 2, .hFlip = TRUE),
+ ANIMCMD_FRAME(2, 2, .hFlip = TRUE),
+ ANIMCMD_FRAME(8, 2, .hFlip = TRUE),
+ ANIMCMD_FRAME(2, 2, .hFlip = TRUE),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gEventObjectImageAnim_8370B4C[] = {
+ ANIMCMD_FRAME(3, 1),
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_FRAME(4, 1),
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gEventObjectImageAnim_8370B60[] = {
+ ANIMCMD_FRAME(5, 1),
+ ANIMCMD_FRAME(1, 1),
+ ANIMCMD_FRAME(6, 1),
+ ANIMCMD_FRAME(1, 1),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gEventObjectImageAnim_8370B74[] = {
+ ANIMCMD_FRAME(7, 1),
+ ANIMCMD_FRAME(2, 1),
+ ANIMCMD_FRAME(8, 1),
+ ANIMCMD_FRAME(2, 1),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gEventObjectImageAnim_8370B88[] = {
+ ANIMCMD_FRAME(7, 1, .hFlip = TRUE),
+ ANIMCMD_FRAME(2, 1, .hFlip = TRUE),
+ ANIMCMD_FRAME(8, 1, .hFlip = TRUE),
+ ANIMCMD_FRAME(2, 1, .hFlip = TRUE),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gEventObjectImageAnim_8370B9C[] = {
+ ANIMCMD_FRAME(12, 5),
+ ANIMCMD_FRAME(9, 3),
+ ANIMCMD_FRAME(13, 5),
+ ANIMCMD_FRAME(9, 3),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gEventObjectImageAnim_8370BB0[] = {
+ ANIMCMD_FRAME(14, 5),
+ ANIMCMD_FRAME(10, 3),
+ ANIMCMD_FRAME(15, 5),
+ ANIMCMD_FRAME(10, 3),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gEventObjectImageAnim_8370BC4[] = {
+ ANIMCMD_FRAME(16, 5),
+ ANIMCMD_FRAME(11, 3),
+ ANIMCMD_FRAME(17, 5),
+ ANIMCMD_FRAME(11, 3),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gEventObjectImageAnim_8370BD8[] = {
+ ANIMCMD_FRAME(16, 5, .hFlip = TRUE),
+ ANIMCMD_FRAME(11, 3, .hFlip = TRUE),
+ ANIMCMD_FRAME(17, 5, .hFlip = TRUE),
+ ANIMCMD_FRAME(11, 3, .hFlip = TRUE),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gEventObjectImageAnim_8370BEC[] = {
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(1, 4),
+ ANIMCMD_FRAME(2, 4),
+ ANIMCMD_FRAME(3, 4),
+ ANIMCMD_FRAME(4, 8),
+ ANIMCMD_END
+};
+
+const union AnimCmd gEventObjectImageAnim_8370C04[] = {
+ ANIMCMD_FRAME(9, 32),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gEventObjectImageAnim_8370C0C[] = {
+ ANIMCMD_FRAME(10, 32),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gEventObjectImageAnim_8370C14[] = {
+ ANIMCMD_FRAME(11, 32),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gEventObjectImageAnim_8370C1C[] = {
+ ANIMCMD_FRAME(11, 32, .hFlip = TRUE),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gEventObjectImageAnim_8370C24[] = {
+ ANIMCMD_FRAME(9, 4),
+ ANIMCMD_FRAME(10, 4),
+ ANIMCMD_END
+};
+
+const union AnimCmd gEventObjectImageAnim_8370C30[] = {
+ ANIMCMD_FRAME(13, 4),
+ ANIMCMD_FRAME(14, 4),
+ ANIMCMD_END
+};
+
+const union AnimCmd gEventObjectImageAnim_8370C3C[] = {
+ ANIMCMD_FRAME(17, 4),
+ ANIMCMD_FRAME(18, 4),
+ ANIMCMD_END
+};
+
+const union AnimCmd gEventObjectImageAnim_8370C48[] = {
+ ANIMCMD_FRAME(17, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(18, 4, .hFlip = TRUE),
+ ANIMCMD_END
+};
+
+const union AnimCmd gEventObjectImageAnim_8370C54[] = {
+ ANIMCMD_FRAME(11, 4),
+ ANIMCMD_FRAME(12, 4),
+ ANIMCMD_END
+};
+
+const union AnimCmd gEventObjectImageAnim_8370C60[] = {
+ ANIMCMD_FRAME(15, 4),
+ ANIMCMD_FRAME(16, 4),
+ ANIMCMD_END
+};
+
+const union AnimCmd gEventObjectImageAnim_8370C6C[] = {
+ ANIMCMD_FRAME(19, 4),
+ ANIMCMD_FRAME(20, 4),
+ ANIMCMD_END
+};
+
+const union AnimCmd gEventObjectImageAnim_8370C78[] = {
+ ANIMCMD_FRAME(19, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(20, 4, .hFlip = TRUE),
+ ANIMCMD_END
+};
+
+const union AnimCmd gEventObjectImageAnim_8370C84[] = {
+ ANIMCMD_FRAME(9, 4),
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_END
+};
+
+const union AnimCmd gEventObjectImageAnim_8370C90[] = {
+ ANIMCMD_FRAME(13, 4),
+ ANIMCMD_FRAME(1, 4),
+ ANIMCMD_END
+};
+
+const union AnimCmd gEventObjectImageAnim_8370C9C[] = {
+ ANIMCMD_FRAME(17, 4),
+ ANIMCMD_FRAME(2, 4),
+ ANIMCMD_END
+};
+
+const union AnimCmd gEventObjectImageAnim_8370CA8[] = {
+ ANIMCMD_FRAME(17, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(2, 4, .hFlip = TRUE),
+ ANIMCMD_END
+};
+
+const union AnimCmd gEventObjectImageAnim_8370CB4[] = {
+ ANIMCMD_FRAME(11, 4),
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_END
+};
+
+const union AnimCmd gEventObjectImageAnim_8370CC0[] = {
+ ANIMCMD_FRAME(15, 4),
+ ANIMCMD_FRAME(1, 4),
+ ANIMCMD_END
+};
+
+const union AnimCmd gEventObjectImageAnim_8370CCC[] = {
+ ANIMCMD_FRAME(19, 4),
+ ANIMCMD_FRAME(2, 4),
+ ANIMCMD_END
+};
+
+const union AnimCmd gEventObjectImageAnim_8370CD8[] = {
+ ANIMCMD_FRAME(19, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(2, 4, .hFlip = TRUE),
+ ANIMCMD_END
+};
+
+const union AnimCmd gEventObjectImageAnim_8370CE4[] = {
+ ANIMCMD_FRAME(21, 4),
+ ANIMCMD_FRAME(10, 4),
+ ANIMCMD_FRAME(22, 4),
+ ANIMCMD_FRAME(10, 4),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gEventObjectImageAnim_8370CF8[] = {
+ ANIMCMD_FRAME(23, 4),
+ ANIMCMD_FRAME(14, 4),
+ ANIMCMD_FRAME(24, 4),
+ ANIMCMD_FRAME(14, 4),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gEventObjectImageAnim_8370D0C[] = {
+ ANIMCMD_FRAME(25, 4),
+ ANIMCMD_FRAME(18, 4),
+ ANIMCMD_FRAME(26, 4),
+ ANIMCMD_FRAME(18, 4),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gEventObjectImageAnim_8370D20[] = {
+ ANIMCMD_FRAME(25, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(18, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(26, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(18, 4, .hFlip = TRUE),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gEventObjectImageAnim_8370D34[] = {
+ ANIMCMD_FRAME(0, 32),
+ ANIMCMD_END
+};
+
+const union AnimCmd gEventObjectImageAnim_8370D3C[] = {
+ ANIMCMD_FRAME(1, 32),
+ ANIMCMD_FRAME(2, 32),
+ ANIMCMD_END
+};
+
+const union AnimCmd gEventObjectImageAnim_8370D48[] = {
+ ANIMCMD_FRAME(3, 48),
+ ANIMCMD_FRAME(4, 48),
+ ANIMCMD_END
+};
+
+const union AnimCmd gEventObjectImageAnim_8370D54[] = {
+ ANIMCMD_FRAME(5, 32),
+ ANIMCMD_FRAME(5, 32),
+ ANIMCMD_FRAME(6, 32),
+ ANIMCMD_FRAME(6, 32),
+ ANIMCMD_END
+};
+
+const union AnimCmd gEventObjectImageAnim_8370D68[] = {
+ ANIMCMD_FRAME(7, 48),
+ ANIMCMD_FRAME(7, 48),
+ ANIMCMD_FRAME(8, 48),
+ ANIMCMD_FRAME(8, 48),
+ ANIMCMD_END
+};
+
+const union AnimCmd gEventObjectImageAnim_8370D7C[] = {
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(9, 32),
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_END
+};
+
+const union AnimCmd gEventObjectImageAnim_8370D8C[] = {
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(1, 8),
+ ANIMCMD_FRAME(2, 8),
+ ANIMCMD_FRAME(3, 8),
+ ANIMCMD_END
+};
+
+const union AnimCmd gEventObjectImageAnim_8370DA0[] = {
+ ANIMCMD_FRAME(0, 6),
+ ANIMCMD_FRAME(1, 6),
+ ANIMCMD_FRAME(2, 6),
+ ANIMCMD_FRAME(3, 6),
+ ANIMCMD_END
+};
+
+const union AnimCmd gEventObjectImageAnim_8370DB4[] = {
+ ANIMCMD_FRAME(8, 4),
+ ANIMCMD_FRAME(9, 4),
+ ANIMCMD_FRAME(10, 4),
+ ANIMCMD_FRAME(11, 4),
+ ANIMCMD_END
+};
+
+const union AnimCmd gEventObjectImageAnim_8370DC8[] = {
+ ANIMCMD_FRAME(4, 4),
+ ANIMCMD_FRAME(5, 4),
+ ANIMCMD_FRAME(6, 4),
+ ANIMCMD_FRAME(7, 4),
+ ANIMCMD_END
+};
+
+const union AnimCmd gEventObjectImageAnim_8370DDC[] = {
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(1, 4),
+ ANIMCMD_FRAME(2, 4),
+ ANIMCMD_FRAME(3, 4),
+ ANIMCMD_END
+};
+
+const union AnimCmd gEventObjectImageAnim_8370DF0[] = {
+ ANIMCMD_FRAME(0, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(1, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(2, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(3, 4, .hFlip = TRUE),
+ ANIMCMD_END
+};
+
+const union AnimCmd gEventObjectImageAnim_8370E04[] = {
+ ANIMCMD_FRAME(11, 4),
+ ANIMCMD_FRAME(10, 6),
+ ANIMCMD_FRAME(9, 6),
+ ANIMCMD_FRAME(8, 6),
+ ANIMCMD_END
+};
+
+const union AnimCmd gEventObjectImageAnim_8370E18[] = {
+ ANIMCMD_FRAME(7, 4),
+ ANIMCMD_FRAME(6, 6),
+ ANIMCMD_FRAME(5, 6),
+ ANIMCMD_FRAME(4, 6),
+ ANIMCMD_END
+};
+
+const union AnimCmd gEventObjectImageAnim_8370E2C[] = {
+ ANIMCMD_FRAME(3, 4),
+ ANIMCMD_FRAME(2, 4),
+ ANIMCMD_FRAME(1, 4),
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_END
+};
+
+const union AnimCmd gEventObjectImageAnim_8370E40[] = {
+ ANIMCMD_FRAME(3, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(2, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(1, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(0, 4, .hFlip = TRUE),
+ ANIMCMD_END
+};
+
+const union AnimCmd gEventObjectImageAnim_8370E54[] = {
+ ANIMCMD_FRAME(10, 6),
+ ANIMCMD_FRAME(11, 6),
+ ANIMCMD_LOOP(1),
+ ANIMCMD_FRAME(11, 30),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gEventObjectImageAnim_8370E68[] = {
+ ANIMCMD_FRAME(6, 6),
+ ANIMCMD_FRAME(7, 6),
+ ANIMCMD_LOOP(1),
+ ANIMCMD_FRAME(7, 30),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gEventObjectImageAnim_8370E7C[] = {
+ ANIMCMD_FRAME(2, 6),
+ ANIMCMD_FRAME(3, 6),
+ ANIMCMD_LOOP(1),
+ ANIMCMD_FRAME(3, 30),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gEventObjectImageAnim_8370E90[] = {
+ ANIMCMD_FRAME(2, 6, .hFlip = TRUE),
+ ANIMCMD_FRAME(3, 6, .hFlip = TRUE),
+ ANIMCMD_LOOP(1),
+ ANIMCMD_FRAME(3, 30, .hFlip = TRUE),
+ ANIMCMD_JUMP(0)
+};
+
+const union AffineAnimCmd gEventObjectRotScalAnim_8370EA4[] = {
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 1),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 1),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 1),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 1),
+ AFFINEANIMCMD_LOOP(7),
+ AFFINEANIMCMD_JUMP(0)
+};
+
+const union AffineAnimCmd gEventObjectRotScalAnim_8370ED4[] = {
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -1, 1),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 1),
+ AFFINEANIMCMD_LOOP(15),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 1),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 1),
+ AFFINEANIMCMD_LOOP(15),
+ AFFINEANIMCMD_JUMP(0)
+};
+
+const union AnimCmd *const gEventObjectImageAnimTable_Inanimate[] = {
+ gEventObjectImageAnim_83708C8
+};
+
+const union AnimCmd *const gEventObjectImageAnimTable_QuintyPlump[] = {
+ gEventObjectImageAnim_83708DC,
+ gEventObjectImageAnim_83708E4,
+ gEventObjectImageAnim_83708EC,
+ gEventObjectImageAnim_83708F4,
+ gEventObjectImageAnim_83708FC,
+ gEventObjectImageAnim_8370910,
+ gEventObjectImageAnim_8370924,
+ gEventObjectImageAnim_8370938,
+ gEventObjectImageAnim_837094C,
+ gEventObjectImageAnim_8370960,
+ gEventObjectImageAnim_8370974,
+ gEventObjectImageAnim_8370988,
+ gEventObjectImageAnim_837099C,
+ gEventObjectImageAnim_83709B0,
+ gEventObjectImageAnim_83709C4,
+ gEventObjectImageAnim_83709D8,
+ gEventObjectImageAnim_83709EC,
+ gEventObjectImageAnim_8370A00,
+ gEventObjectImageAnim_8370A14,
+ gEventObjectImageAnim_8370A28
+};
+
+const union AnimCmd *const gEventObjectImageAnimTable_Standard[] = {
+ gEventObjectImageAnim_8370A3C,
+ gEventObjectImageAnim_8370A44,
+ gEventObjectImageAnim_8370A4C,
+ gEventObjectImageAnim_8370A54,
+ gEventObjectImageAnim_8370A5C,
+ gEventObjectImageAnim_8370A70,
+ gEventObjectImageAnim_8370A84,
+ gEventObjectImageAnim_8370A98,
+ gEventObjectImageAnim_8370AAC,
+ gEventObjectImageAnim_8370AC0,
+ gEventObjectImageAnim_8370AD4,
+ gEventObjectImageAnim_8370AE8,
+ gEventObjectImageAnim_8370AFC,
+ gEventObjectImageAnim_8370B10,
+ gEventObjectImageAnim_8370B24,
+ gEventObjectImageAnim_8370B38,
+ gEventObjectImageAnim_8370B4C,
+ gEventObjectImageAnim_8370B60,
+ gEventObjectImageAnim_8370B74,
+ gEventObjectImageAnim_8370B88
+};
+
+const union AnimCmd *const gEventObjectImageAnimTable_BrendanMayNormal[] = {
+ gEventObjectImageAnim_8370A3C,
+ gEventObjectImageAnim_8370A44,
+ gEventObjectImageAnim_8370A4C,
+ gEventObjectImageAnim_8370A54,
+ gEventObjectImageAnim_8370A5C,
+ gEventObjectImageAnim_8370A70,
+ gEventObjectImageAnim_8370A84,
+ gEventObjectImageAnim_8370A98,
+ gEventObjectImageAnim_8370AAC,
+ gEventObjectImageAnim_8370AC0,
+ gEventObjectImageAnim_8370AD4,
+ gEventObjectImageAnim_8370AE8,
+ gEventObjectImageAnim_8370AFC,
+ gEventObjectImageAnim_8370B10,
+ gEventObjectImageAnim_8370B24,
+ gEventObjectImageAnim_8370B38,
+ gEventObjectImageAnim_8370B4C,
+ gEventObjectImageAnim_8370B60,
+ gEventObjectImageAnim_8370B74,
+ gEventObjectImageAnim_8370B88,
+ gEventObjectImageAnim_8370B9C,
+ gEventObjectImageAnim_8370BB0,
+ gEventObjectImageAnim_8370BC4,
+ gEventObjectImageAnim_8370BD8
+};
+
+const union AnimCmd *const gEventObjectImageAnimTable_AcroBike[] = {
+ gEventObjectImageAnim_8370A3C,
+ gEventObjectImageAnim_8370A44,
+ gEventObjectImageAnim_8370A4C,
+ gEventObjectImageAnim_8370A54,
+ gEventObjectImageAnim_8370A5C,
+ gEventObjectImageAnim_8370A70,
+ gEventObjectImageAnim_8370A84,
+ gEventObjectImageAnim_8370A98,
+ gEventObjectImageAnim_8370AAC,
+ gEventObjectImageAnim_8370AC0,
+ gEventObjectImageAnim_8370AD4,
+ gEventObjectImageAnim_8370AE8,
+ gEventObjectImageAnim_8370AFC,
+ gEventObjectImageAnim_8370B10,
+ gEventObjectImageAnim_8370B24,
+ gEventObjectImageAnim_8370B38,
+ gEventObjectImageAnim_8370B4C,
+ gEventObjectImageAnim_8370B60,
+ gEventObjectImageAnim_8370B74,
+ gEventObjectImageAnim_8370B88,
+ gEventObjectImageAnim_8370C24,
+ gEventObjectImageAnim_8370C30,
+ gEventObjectImageAnim_8370C3C,
+ gEventObjectImageAnim_8370C48,
+ gEventObjectImageAnim_8370C54,
+ gEventObjectImageAnim_8370C60,
+ gEventObjectImageAnim_8370C6C,
+ gEventObjectImageAnim_8370C78,
+ gEventObjectImageAnim_8370C84,
+ gEventObjectImageAnim_8370C90,
+ gEventObjectImageAnim_8370C9C,
+ gEventObjectImageAnim_8370CA8,
+ gEventObjectImageAnim_8370CB4,
+ gEventObjectImageAnim_8370CC0,
+ gEventObjectImageAnim_8370CCC,
+ gEventObjectImageAnim_8370CD8,
+ gEventObjectImageAnim_8370CE4,
+ gEventObjectImageAnim_8370CF8,
+ gEventObjectImageAnim_8370D0C,
+ gEventObjectImageAnim_8370D20
+};
+
+const union AnimCmd *const gEventObjectImageAnimTable_Surfing[] = {
+ gEventObjectImageAnim_8370A3C,
+ gEventObjectImageAnim_8370A44,
+ gEventObjectImageAnim_8370A4C,
+ gEventObjectImageAnim_8370A54,
+ gEventObjectImageAnim_8370A5C,
+ gEventObjectImageAnim_8370A70,
+ gEventObjectImageAnim_8370A84,
+ gEventObjectImageAnim_8370A98,
+ gEventObjectImageAnim_8370AAC,
+ gEventObjectImageAnim_8370AC0,
+ gEventObjectImageAnim_8370AD4,
+ gEventObjectImageAnim_8370AE8,
+ gEventObjectImageAnim_8370AFC,
+ gEventObjectImageAnim_8370B10,
+ gEventObjectImageAnim_8370B24,
+ gEventObjectImageAnim_8370B38,
+ gEventObjectImageAnim_8370B4C,
+ gEventObjectImageAnim_8370B60,
+ gEventObjectImageAnim_8370B74,
+ gEventObjectImageAnim_8370B88,
+ gEventObjectImageAnim_8370C04,
+ gEventObjectImageAnim_8370C0C,
+ gEventObjectImageAnim_8370C14,
+ gEventObjectImageAnim_8370C1C
+};
+
+const union AnimCmd *const gEventObjectImageAnimTable_Nurse[] = {
+ gEventObjectImageAnim_8370A3C,
+ gEventObjectImageAnim_8370A44,
+ gEventObjectImageAnim_8370A4C,
+ gEventObjectImageAnim_8370A54,
+ gEventObjectImageAnim_8370A5C,
+ gEventObjectImageAnim_8370A70,
+ gEventObjectImageAnim_8370A84,
+ gEventObjectImageAnim_8370A98,
+ gEventObjectImageAnim_8370AAC,
+ gEventObjectImageAnim_8370AC0,
+ gEventObjectImageAnim_8370AD4,
+ gEventObjectImageAnim_8370AE8,
+ gEventObjectImageAnim_8370AFC,
+ gEventObjectImageAnim_8370B10,
+ gEventObjectImageAnim_8370B24,
+ gEventObjectImageAnim_8370B38,
+ gEventObjectImageAnim_8370B4C,
+ gEventObjectImageAnim_8370B60,
+ gEventObjectImageAnim_8370B74,
+ gEventObjectImageAnim_8370B88,
+ gEventObjectImageAnim_8370D7C
+};
+
+const union AnimCmd *const gEventObjectImageAnimTable_FieldMove[] = {
+ gEventObjectImageAnim_8370BEC
+};
+
+const union AnimCmd *const gEventObjectImageAnimTable_BerryTree[] = {
+ gEventObjectImageAnim_8370D34,
+ gEventObjectImageAnim_8370D3C,
+ gEventObjectImageAnim_8370D48,
+ gEventObjectImageAnim_8370D54,
+ gEventObjectImageAnim_8370D68
+};
+
+const union AnimCmd *const gEventObjectImageAnimTable_BreakableRock[] = {
+ gEventObjectImageAnim_83708C8,
+ gEventObjectImageAnim_8370D8C
+};
+
+const union AnimCmd *const gEventObjectImageAnimTable_CuttableTree[] = {
+ gEventObjectImageAnim_83708C8,
+ gEventObjectImageAnim_8370DA0
+};
+
+const union AnimCmd *const gEventObjectImageAnimTable_Fishing[] = {
+ gEventObjectImageAnim_8370DB4,
+ gEventObjectImageAnim_8370DC8,
+ gEventObjectImageAnim_8370DDC,
+ gEventObjectImageAnim_8370DF0,
+ gEventObjectImageAnim_8370E04,
+ gEventObjectImageAnim_8370E18,
+ gEventObjectImageAnim_8370E2C,
+ gEventObjectImageAnim_8370E40,
+ gEventObjectImageAnim_8370E54,
+ gEventObjectImageAnim_8370E68,
+ gEventObjectImageAnim_8370E7C,
+ gEventObjectImageAnim_8370E90
+};
+
+const union AffineAnimCmd *const gEventObjectRotScalAnimTable_KyogreGroudon[] = {
+ gEventObjectRotScalAnim_8370EA4,
+ gEventObjectRotScalAnim_8370ED4
+};
+
+#endif //POKERUBY_EVENT_OBJECT_ANIMS_H
diff --git a/src/data/field_event_obj/event_object_graphics.h b/src/data/field_event_obj/event_object_graphics.h
new file mode 100644
index 000000000..8f1bb96a8
--- /dev/null
+++ b/src/data/field_event_obj/event_object_graphics.h
@@ -0,0 +1,1319 @@
+#ifndef POKERUBY_EVENT_OBJECT_GFX_H
+#define POKERUBY_EVENT_OBJECT_GFX_H
+
+const u32 gEventObjectPic_BrendanNormal_0[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/normal/00.4bpp");
+const u32 gEventObjectPic_BrendanNormal_1[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/normal/01.4bpp");
+const u32 gEventObjectPic_BrendanNormal_2[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/normal/02.4bpp");
+const u32 gEventObjectPic_BrendanNormal_3[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/normal/03.4bpp");
+const u32 gEventObjectPic_BrendanNormal_4[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/normal/04.4bpp");
+const u32 gEventObjectPic_BrendanNormal_5[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/normal/05.4bpp");
+const u32 gEventObjectPic_BrendanNormal_6[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/normal/06.4bpp");
+const u32 gEventObjectPic_BrendanNormal_7[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/normal/07.4bpp");
+const u32 gEventObjectPic_BrendanNormal_8[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/normal/08.4bpp");
+const u32 gEventObjectPic_BrendanNormal_9[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/normal/09.4bpp");
+const u32 gEventObjectPic_BrendanNormal_10[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/normal/10.4bpp");
+const u32 gEventObjectPic_BrendanNormal_11[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/normal/11.4bpp");
+const u32 gEventObjectPic_BrendanNormal_12[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/normal/12.4bpp");
+const u32 gEventObjectPic_BrendanNormal_13[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/normal/13.4bpp");
+const u32 gEventObjectPic_BrendanNormal_14[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/normal/14.4bpp");
+const u32 gEventObjectPic_BrendanNormal_15[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/normal/15.4bpp");
+const u32 gEventObjectPic_BrendanNormal_16[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/normal/16.4bpp");
+const u32 gEventObjectPic_BrendanNormal_17[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/normal/17.4bpp");
+const u16 gEventObjectPalette8[] = INCBIN_U16("graphics/event_objects/palettes/08.gbapal");
+const u16 NullPalette_8310F68[16] = {};
+const u16 NullPalette_8310F88[16] = {};
+const u16 NullPalette_8310FA8[16] = {};
+const u16 NullPalette_8310FC8[16] = {};
+const u16 NullPalette_8310FE8[16] = {};
+const u16 NullPalette_8311008[16] = {};
+const u16 NullPalette_8311028[16] = {};
+const u16 NullPalette_8311048[16] = {};
+const u16 NullPalette_8311068[16] = {};
+const u16 NullPalette_8311088[16] = {};
+const u16 NullPalette_83110A8[16] = {};
+const u16 NullPalette_83110C8[16] = {};
+const u16 NullPalette_83110E8[16] = {};
+const u16 NullPalette_8311108[16] = {};
+const u16 NullPalette_8311128[16] = {};
+const u16 gEventObjectPalette9[] = INCBIN_U16("graphics/event_objects/palettes/09.gbapal");
+const u16 gEventObjectPalette10[] = INCBIN_U16("graphics/event_objects/palettes/10.gbapal");
+const u32 gEventObjectPic_BrendanFieldMove_0[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/field_move/0.4bpp");
+const u32 gEventObjectPic_BrendanFieldMove_1[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/field_move/1.4bpp");
+const u32 gEventObjectPic_BrendanFieldMove_2[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/field_move/2.4bpp");
+const u32 gEventObjectPic_BrendanFieldMove_3[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/field_move/3.4bpp");
+const u32 gEventObjectPic_BrendanFieldMove_4[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/field_move/4.4bpp");
+const u32 gEventObjectPic_BrendanSurfing_0[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/surfing/0.4bpp");
+const u32 gEventObjectPic_BrendanSurfing_3[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/surfing/3.4bpp");
+const u32 gEventObjectPic_BrendanSurfing_1[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/surfing/1.4bpp");
+const u32 gEventObjectPic_BrendanSurfing_4[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/surfing/4.4bpp");
+const u32 gEventObjectPic_BrendanSurfing_2[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/surfing/2.4bpp");
+const u32 gEventObjectPic_BrendanSurfing_5[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/surfing/5.4bpp");
+const u32 gEventObjectPic_BrendanMachBike_0[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/mach_bike/0.4bpp");
+const u32 gEventObjectPic_BrendanMachBike_1[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/mach_bike/1.4bpp");
+const u32 gEventObjectPic_BrendanMachBike_2[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/mach_bike/2.4bpp");
+const u32 gEventObjectPic_BrendanMachBike_3[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/mach_bike/3.4bpp");
+const u32 gEventObjectPic_BrendanMachBike_4[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/mach_bike/4.4bpp");
+const u32 gEventObjectPic_BrendanMachBike_5[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/mach_bike/5.4bpp");
+const u32 gEventObjectPic_BrendanMachBike_6[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/mach_bike/6.4bpp");
+const u32 gEventObjectPic_BrendanMachBike_7[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/mach_bike/7.4bpp");
+const u32 gEventObjectPic_BrendanMachBike_8[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/mach_bike/8.4bpp");
+const u32 gEventObjectPic_BrendanAcroBike_0[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/acro_bike/00.4bpp");
+const u32 gEventObjectPic_BrendanAcroBike_1[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/acro_bike/01.4bpp");
+const u32 gEventObjectPic_BrendanAcroBike_2[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/acro_bike/02.4bpp");
+const u32 gEventObjectPic_BrendanAcroBike_3[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/acro_bike/03.4bpp");
+const u32 gEventObjectPic_BrendanAcroBike_4[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/acro_bike/04.4bpp");
+const u32 gEventObjectPic_BrendanAcroBike_5[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/acro_bike/05.4bpp");
+const u32 gEventObjectPic_BrendanAcroBike_6[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/acro_bike/06.4bpp");
+const u32 gEventObjectPic_BrendanAcroBike_7[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/acro_bike/07.4bpp");
+const u32 gEventObjectPic_BrendanAcroBike_8[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/acro_bike/08.4bpp");
+const u32 gEventObjectPic_BrendanAcroBike_9[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/acro_bike/09.4bpp");
+const u32 gEventObjectPic_BrendanAcroBike_10[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/acro_bike/10.4bpp");
+const u32 gEventObjectPic_BrendanAcroBike_11[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/acro_bike/11.4bpp");
+const u32 gEventObjectPic_BrendanAcroBike_12[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/acro_bike/12.4bpp");
+const u32 gEventObjectPic_BrendanAcroBike_13[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/acro_bike/13.4bpp");
+const u32 gEventObjectPic_BrendanAcroBike_14[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/acro_bike/14.4bpp");
+const u32 gEventObjectPic_BrendanAcroBike_15[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/acro_bike/15.4bpp");
+const u32 gEventObjectPic_BrendanAcroBike_16[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/acro_bike/16.4bpp");
+const u32 gEventObjectPic_BrendanAcroBike_17[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/acro_bike/17.4bpp");
+const u32 gEventObjectPic_BrendanAcroBike_18[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/acro_bike/18.4bpp");
+const u32 gEventObjectPic_BrendanAcroBike_19[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/acro_bike/19.4bpp");
+const u32 gEventObjectPic_BrendanAcroBike_20[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/acro_bike/20.4bpp");
+const u32 gEventObjectPic_BrendanAcroBike_21[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/acro_bike/21.4bpp");
+const u32 gEventObjectPic_BrendanAcroBike_22[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/acro_bike/22.4bpp");
+const u32 gEventObjectPic_BrendanAcroBike_23[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/acro_bike/23.4bpp");
+const u32 gEventObjectPic_BrendanAcroBike_24[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/acro_bike/24.4bpp");
+const u32 gEventObjectPic_BrendanAcroBike_25[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/acro_bike/25.4bpp");
+const u32 gEventObjectPic_BrendanAcroBike_26[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/acro_bike/26.4bpp");
+const u32 gEventObjectPic_BrendanFishing_0[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/fishing/00.4bpp");
+const u32 gEventObjectPic_BrendanFishing_1[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/fishing/01.4bpp");
+const u32 gEventObjectPic_BrendanFishing_2[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/fishing/02.4bpp");
+const u32 gEventObjectPic_BrendanFishing_3[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/fishing/03.4bpp");
+const u32 gEventObjectPic_BrendanFishing_4[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/fishing/04.4bpp");
+const u32 gEventObjectPic_BrendanFishing_5[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/fishing/05.4bpp");
+const u32 gEventObjectPic_BrendanFishing_6[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/fishing/06.4bpp");
+const u32 gEventObjectPic_BrendanFishing_7[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/fishing/07.4bpp");
+const u32 gEventObjectPic_BrendanFishing_8[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/fishing/08.4bpp");
+const u32 gEventObjectPic_BrendanFishing_9[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/fishing/09.4bpp");
+const u32 gEventObjectPic_BrendanFishing_10[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/fishing/10.4bpp");
+const u32 gEventObjectPic_BrendanFishing_11[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/fishing/11.4bpp");
+const u32 gEventObjectPic_BrendanWatering_0[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/watering/0.4bpp");
+const u32 gEventObjectPic_BrendanWatering_3[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/watering/3.4bpp");
+const u32 gEventObjectPic_BrendanWatering_1[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/watering/1.4bpp");
+const u32 gEventObjectPic_BrendanWatering_4[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/watering/4.4bpp");
+const u32 gEventObjectPic_BrendanWatering_2[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/watering/2.4bpp");
+const u32 gEventObjectPic_BrendanWatering_5[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/watering/5.4bpp");
+const u32 gEventObjectPic_BrendanDecorating[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/decorating.4bpp");
+const u32 gEventObjectPic_MayDecorating[] = INCBIN_U32("graphics/event_objects/pics/people/may/decorating.4bpp");
+const u32 gEventObjectPic_BrendanUnderwater_0[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/underwater/0.4bpp");
+const u32 gEventObjectPic_BrendanUnderwater_1[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/underwater/1.4bpp");
+const u32 gEventObjectPic_BrendanUnderwater_2[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/underwater/2.4bpp");
+const u32 gEventObjectPic_BrendanUnderwater_3[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/underwater/3.4bpp");
+const u32 gEventObjectPic_MayUnderwater_0[] = INCBIN_U32("graphics/event_objects/pics/people/may/underwater/0.4bpp");
+const u32 gEventObjectPic_MayUnderwater_1[] = INCBIN_U32("graphics/event_objects/pics/people/may/underwater/1.4bpp");
+const u32 gEventObjectPic_MayUnderwater_2[] = INCBIN_U32("graphics/event_objects/pics/people/may/underwater/2.4bpp");
+const u32 gEventObjectPic_MayUnderwater_3[] = INCBIN_U32("graphics/event_objects/pics/people/may/underwater/3.4bpp");
+const u16 gEventObjectPalette11[] = INCBIN_U16("graphics/event_objects/palettes/11.gbapal");
+const u32 gEventObjectPic_MayNormal_0[] = INCBIN_U32("graphics/event_objects/pics/people/may/normal/00.4bpp");
+const u32 gEventObjectPic_MayNormal_1[] = INCBIN_U32("graphics/event_objects/pics/people/may/normal/01.4bpp");
+const u32 gEventObjectPic_MayNormal_2[] = INCBIN_U32("graphics/event_objects/pics/people/may/normal/02.4bpp");
+const u32 gEventObjectPic_MayNormal_3[] = INCBIN_U32("graphics/event_objects/pics/people/may/normal/03.4bpp");
+const u32 gEventObjectPic_MayNormal_4[] = INCBIN_U32("graphics/event_objects/pics/people/may/normal/04.4bpp");
+const u32 gEventObjectPic_MayNormal_5[] = INCBIN_U32("graphics/event_objects/pics/people/may/normal/05.4bpp");
+const u32 gEventObjectPic_MayNormal_6[] = INCBIN_U32("graphics/event_objects/pics/people/may/normal/06.4bpp");
+const u32 gEventObjectPic_MayNormal_7[] = INCBIN_U32("graphics/event_objects/pics/people/may/normal/07.4bpp");
+const u32 gEventObjectPic_MayNormal_8[] = INCBIN_U32("graphics/event_objects/pics/people/may/normal/08.4bpp");
+const u32 gEventObjectPic_MayNormal_9[] = INCBIN_U32("graphics/event_objects/pics/people/may/normal/09.4bpp");
+const u32 gEventObjectPic_MayNormal_10[] = INCBIN_U32("graphics/event_objects/pics/people/may/normal/10.4bpp");
+const u32 gEventObjectPic_MayNormal_11[] = INCBIN_U32("graphics/event_objects/pics/people/may/normal/11.4bpp");
+const u32 gEventObjectPic_MayNormal_12[] = INCBIN_U32("graphics/event_objects/pics/people/may/normal/12.4bpp");
+const u32 gEventObjectPic_MayNormal_13[] = INCBIN_U32("graphics/event_objects/pics/people/may/normal/13.4bpp");
+const u32 gEventObjectPic_MayNormal_14[] = INCBIN_U32("graphics/event_objects/pics/people/may/normal/14.4bpp");
+const u32 gEventObjectPic_MayNormal_15[] = INCBIN_U32("graphics/event_objects/pics/people/may/normal/15.4bpp");
+const u32 gEventObjectPic_MayNormal_16[] = INCBIN_U32("graphics/event_objects/pics/people/may/normal/16.4bpp");
+const u32 gEventObjectPic_MayNormal_17[] = INCBIN_U32("graphics/event_objects/pics/people/may/normal/17.4bpp");
+const u16 gEventObjectPalette17[] = INCBIN_U16("graphics/event_objects/palettes/17.gbapal");
+const u16 gEventObjectPalette18[] = INCBIN_U16("graphics/event_objects/palettes/18.gbapal");
+const u16 NullPalette_831B7E8[16] = {};
+const u16 NullPalette_831B808[16] = {};
+const u16 NullPalette_831B828[16] = {};
+const u16 NullPalette_831B848[16] = {};
+const u16 NullPalette_831B868[16] = {};
+const u16 NullPalette_831B888[16] = {};
+const u16 NullPalette_831B8A8[16] = {};
+const u16 NullPalette_831B8C8[16] = {};
+const u16 NullPalette_831B8E8[16] = {};
+const u16 NullPalette_831B908[16] = {};
+const u16 NullPalette_831B928[16] = {};
+const u16 NullPalette_831B948[16] = {};
+const u16 NullPalette_831B968[16] = {};
+const u16 NullPalette_831B988[16] = {};
+const u32 gEventObjectPic_MayMachBike_0[] = INCBIN_U32("graphics/event_objects/pics/people/may/mach_bike/0.4bpp");
+const u32 gEventObjectPic_MayMachBike_1[] = INCBIN_U32("graphics/event_objects/pics/people/may/mach_bike/1.4bpp");
+const u32 gEventObjectPic_MayMachBike_2[] = INCBIN_U32("graphics/event_objects/pics/people/may/mach_bike/2.4bpp");
+const u32 gEventObjectPic_MayMachBike_3[] = INCBIN_U32("graphics/event_objects/pics/people/may/mach_bike/3.4bpp");
+const u32 gEventObjectPic_MayMachBike_4[] = INCBIN_U32("graphics/event_objects/pics/people/may/mach_bike/4.4bpp");
+const u32 gEventObjectPic_MayMachBike_5[] = INCBIN_U32("graphics/event_objects/pics/people/may/mach_bike/5.4bpp");
+const u32 gEventObjectPic_MayMachBike_6[] = INCBIN_U32("graphics/event_objects/pics/people/may/mach_bike/6.4bpp");
+const u32 gEventObjectPic_MayMachBike_7[] = INCBIN_U32("graphics/event_objects/pics/people/may/mach_bike/7.4bpp");
+const u32 gEventObjectPic_MayMachBike_8[] = INCBIN_U32("graphics/event_objects/pics/people/may/mach_bike/8.4bpp");
+const u32 gEventObjectPic_MayAcroBike_0[] = INCBIN_U32("graphics/event_objects/pics/people/may/acro_bike/00.4bpp");
+const u32 gEventObjectPic_MayAcroBike_1[] = INCBIN_U32("graphics/event_objects/pics/people/may/acro_bike/01.4bpp");
+const u32 gEventObjectPic_MayAcroBike_2[] = INCBIN_U32("graphics/event_objects/pics/people/may/acro_bike/02.4bpp");
+const u32 gEventObjectPic_MayAcroBike_3[] = INCBIN_U32("graphics/event_objects/pics/people/may/acro_bike/03.4bpp");
+const u32 gEventObjectPic_MayAcroBike_4[] = INCBIN_U32("graphics/event_objects/pics/people/may/acro_bike/04.4bpp");
+const u32 gEventObjectPic_MayAcroBike_5[] = INCBIN_U32("graphics/event_objects/pics/people/may/acro_bike/05.4bpp");
+const u32 gEventObjectPic_MayAcroBike_6[] = INCBIN_U32("graphics/event_objects/pics/people/may/acro_bike/06.4bpp");
+const u32 gEventObjectPic_MayAcroBike_7[] = INCBIN_U32("graphics/event_objects/pics/people/may/acro_bike/07.4bpp");
+const u32 gEventObjectPic_MayAcroBike_8[] = INCBIN_U32("graphics/event_objects/pics/people/may/acro_bike/08.4bpp");
+const u32 gEventObjectPic_MayAcroBike_9[] = INCBIN_U32("graphics/event_objects/pics/people/may/acro_bike/09.4bpp");
+const u32 gEventObjectPic_MayAcroBike_10[] = INCBIN_U32("graphics/event_objects/pics/people/may/acro_bike/10.4bpp");
+const u32 gEventObjectPic_MayAcroBike_11[] = INCBIN_U32("graphics/event_objects/pics/people/may/acro_bike/11.4bpp");
+const u32 gEventObjectPic_MayAcroBike_12[] = INCBIN_U32("graphics/event_objects/pics/people/may/acro_bike/12.4bpp");
+const u32 gEventObjectPic_MayAcroBike_13[] = INCBIN_U32("graphics/event_objects/pics/people/may/acro_bike/13.4bpp");
+const u32 gEventObjectPic_MayAcroBike_14[] = INCBIN_U32("graphics/event_objects/pics/people/may/acro_bike/14.4bpp");
+const u32 gEventObjectPic_MayAcroBike_15[] = INCBIN_U32("graphics/event_objects/pics/people/may/acro_bike/15.4bpp");
+const u32 gEventObjectPic_MayAcroBike_16[] = INCBIN_U32("graphics/event_objects/pics/people/may/acro_bike/16.4bpp");
+const u32 gEventObjectPic_MayAcroBike_17[] = INCBIN_U32("graphics/event_objects/pics/people/may/acro_bike/17.4bpp");
+const u32 gEventObjectPic_MayAcroBike_18[] = INCBIN_U32("graphics/event_objects/pics/people/may/acro_bike/18.4bpp");
+const u32 gEventObjectPic_MayAcroBike_19[] = INCBIN_U32("graphics/event_objects/pics/people/may/acro_bike/19.4bpp");
+const u32 gEventObjectPic_MayAcroBike_20[] = INCBIN_U32("graphics/event_objects/pics/people/may/acro_bike/20.4bpp");
+const u32 gEventObjectPic_MayAcroBike_21[] = INCBIN_U32("graphics/event_objects/pics/people/may/acro_bike/21.4bpp");
+const u32 gEventObjectPic_MayAcroBike_22[] = INCBIN_U32("graphics/event_objects/pics/people/may/acro_bike/22.4bpp");
+const u32 gEventObjectPic_MayAcroBike_23[] = INCBIN_U32("graphics/event_objects/pics/people/may/acro_bike/23.4bpp");
+const u32 gEventObjectPic_MayAcroBike_24[] = INCBIN_U32("graphics/event_objects/pics/people/may/acro_bike/24.4bpp");
+const u32 gEventObjectPic_MayAcroBike_25[] = INCBIN_U32("graphics/event_objects/pics/people/may/acro_bike/25.4bpp");
+const u32 gEventObjectPic_MayAcroBike_26[] = INCBIN_U32("graphics/event_objects/pics/people/may/acro_bike/26.4bpp");
+const u32 gEventObjectPic_MaySurfing_0[] = INCBIN_U32("graphics/event_objects/pics/people/may/surfing/0.4bpp");
+const u32 gEventObjectPic_MaySurfing_3[] = INCBIN_U32("graphics/event_objects/pics/people/may/surfing/3.4bpp");
+const u32 gEventObjectPic_MaySurfing_1[] = INCBIN_U32("graphics/event_objects/pics/people/may/surfing/1.4bpp");
+const u32 gEventObjectPic_MaySurfing_4[] = INCBIN_U32("graphics/event_objects/pics/people/may/surfing/4.4bpp");
+const u32 gEventObjectPic_MaySurfing_2[] = INCBIN_U32("graphics/event_objects/pics/people/may/surfing/2.4bpp");
+const u32 gEventObjectPic_MaySurfing_5[] = INCBIN_U32("graphics/event_objects/pics/people/may/surfing/5.4bpp");
+const u32 gEventObjectPic_MayFieldMove_0[] = INCBIN_U32("graphics/event_objects/pics/people/may/field_move/0.4bpp");
+const u32 gEventObjectPic_MayFieldMove_1[] = INCBIN_U32("graphics/event_objects/pics/people/may/field_move/1.4bpp");
+const u32 gEventObjectPic_MayFieldMove_2[] = INCBIN_U32("graphics/event_objects/pics/people/may/field_move/2.4bpp");
+const u32 gEventObjectPic_MayFieldMove_3[] = INCBIN_U32("graphics/event_objects/pics/people/may/field_move/3.4bpp");
+const u32 gEventObjectPic_MayFieldMove_4[] = INCBIN_U32("graphics/event_objects/pics/people/may/field_move/4.4bpp");
+const u32 gEventObjectPic_MayFishing_0[] = INCBIN_U32("graphics/event_objects/pics/people/may/fishing/00.4bpp");
+const u32 gEventObjectPic_MayFishing_1[] = INCBIN_U32("graphics/event_objects/pics/people/may/fishing/01.4bpp");
+const u32 gEventObjectPic_MayFishing_2[] = INCBIN_U32("graphics/event_objects/pics/people/may/fishing/02.4bpp");
+const u32 gEventObjectPic_MayFishing_3[] = INCBIN_U32("graphics/event_objects/pics/people/may/fishing/03.4bpp");
+const u32 gEventObjectPic_MayFishing_4[] = INCBIN_U32("graphics/event_objects/pics/people/may/fishing/04.4bpp");
+const u32 gEventObjectPic_MayFishing_5[] = INCBIN_U32("graphics/event_objects/pics/people/may/fishing/05.4bpp");
+const u32 gEventObjectPic_MayFishing_6[] = INCBIN_U32("graphics/event_objects/pics/people/may/fishing/06.4bpp");
+const u32 gEventObjectPic_MayFishing_7[] = INCBIN_U32("graphics/event_objects/pics/people/may/fishing/07.4bpp");
+const u32 gEventObjectPic_MayFishing_8[] = INCBIN_U32("graphics/event_objects/pics/people/may/fishing/08.4bpp");
+const u32 gEventObjectPic_MayFishing_9[] = INCBIN_U32("graphics/event_objects/pics/people/may/fishing/09.4bpp");
+const u32 gEventObjectPic_MayFishing_10[] = INCBIN_U32("graphics/event_objects/pics/people/may/fishing/10.4bpp");
+const u32 gEventObjectPic_MayFishing_11[] = INCBIN_U32("graphics/event_objects/pics/people/may/fishing/11.4bpp");
+const u32 gEventObjectPic_MayWatering_0[] = INCBIN_U32("graphics/event_objects/pics/people/may/watering/0.4bpp");
+const u32 gEventObjectPic_MayWatering_3[] = INCBIN_U32("graphics/event_objects/pics/people/may/watering/3.4bpp");
+const u32 gEventObjectPic_MayWatering_1[] = INCBIN_U32("graphics/event_objects/pics/people/may/watering/1.4bpp");
+const u32 gEventObjectPic_MayWatering_4[] = INCBIN_U32("graphics/event_objects/pics/people/may/watering/4.4bpp");
+const u32 gEventObjectPic_MayWatering_2[] = INCBIN_U32("graphics/event_objects/pics/people/may/watering/2.4bpp");
+const u32 gEventObjectPic_MayWatering_5[] = INCBIN_U32("graphics/event_objects/pics/people/may/watering/5.4bpp");
+const u16 gEventObjectPalette0[] = INCBIN_U16("graphics/event_objects/palettes/00.gbapal");
+const u16 gEventObjectPalette1[] = INCBIN_U16("graphics/event_objects/palettes/01.gbapal");
+const u16 gEventObjectPalette2[] = INCBIN_U16("graphics/event_objects/palettes/02.gbapal");
+const u16 gEventObjectPalette3[] = INCBIN_U16("graphics/event_objects/palettes/03.gbapal");
+const u16 gEventObjectPalette4[] = INCBIN_U16("graphics/event_objects/palettes/04.gbapal");
+const u16 gEventObjectPalette5[] = INCBIN_U16("graphics/event_objects/palettes/05.gbapal");
+const u16 gEventObjectPalette6[] = INCBIN_U16("graphics/event_objects/palettes/06.gbapal");
+const u16 gEventObjectPalette7[] = INCBIN_U16("graphics/event_objects/palettes/07.gbapal");
+const u32 gEventObjectPic_LittleBoy1_0[] = INCBIN_U32("graphics/event_objects/pics/people/little_boy_1/0.4bpp");
+const u32 gEventObjectPic_LittleBoy1_1[] = INCBIN_U32("graphics/event_objects/pics/people/little_boy_1/1.4bpp");
+const u32 gEventObjectPic_LittleBoy1_2[] = INCBIN_U32("graphics/event_objects/pics/people/little_boy_1/2.4bpp");
+const u32 gEventObjectPic_LittleBoy1_3[] = INCBIN_U32("graphics/event_objects/pics/people/little_boy_1/3.4bpp");
+const u32 gEventObjectPic_LittleBoy1_4[] = INCBIN_U32("graphics/event_objects/pics/people/little_boy_1/4.4bpp");
+const u32 gEventObjectPic_LittleBoy1_5[] = INCBIN_U32("graphics/event_objects/pics/people/little_boy_1/5.4bpp");
+const u32 gEventObjectPic_LittleBoy1_6[] = INCBIN_U32("graphics/event_objects/pics/people/little_boy_1/6.4bpp");
+const u32 gEventObjectPic_LittleBoy1_7[] = INCBIN_U32("graphics/event_objects/pics/people/little_boy_1/7.4bpp");
+const u32 gEventObjectPic_LittleBoy1_8[] = INCBIN_U32("graphics/event_objects/pics/people/little_boy_1/8.4bpp");
+const u32 gEventObjectPic_LittleGirl1_0[] = INCBIN_U32("graphics/event_objects/pics/people/little_girl_1/0.4bpp");
+const u32 gEventObjectPic_LittleGirl1_1[] = INCBIN_U32("graphics/event_objects/pics/people/little_girl_1/1.4bpp");
+const u32 gEventObjectPic_LittleGirl1_2[] = INCBIN_U32("graphics/event_objects/pics/people/little_girl_1/2.4bpp");
+const u32 gEventObjectPic_LittleGirl1_3[] = INCBIN_U32("graphics/event_objects/pics/people/little_girl_1/3.4bpp");
+const u32 gEventObjectPic_LittleGirl1_4[] = INCBIN_U32("graphics/event_objects/pics/people/little_girl_1/4.4bpp");
+const u32 gEventObjectPic_LittleGirl1_5[] = INCBIN_U32("graphics/event_objects/pics/people/little_girl_1/5.4bpp");
+const u32 gEventObjectPic_LittleGirl1_6[] = INCBIN_U32("graphics/event_objects/pics/people/little_girl_1/6.4bpp");
+const u32 gEventObjectPic_LittleGirl1_7[] = INCBIN_U32("graphics/event_objects/pics/people/little_girl_1/7.4bpp");
+const u32 gEventObjectPic_LittleGirl1_8[] = INCBIN_U32("graphics/event_objects/pics/people/little_girl_1/8.4bpp");
+const u32 gEventObjectPic_Boy1_0[] = INCBIN_U32("graphics/event_objects/pics/people/boy_1/0.4bpp");
+const u32 gEventObjectPic_Boy1_1[] = INCBIN_U32("graphics/event_objects/pics/people/boy_1/1.4bpp");
+const u32 gEventObjectPic_Boy1_2[] = INCBIN_U32("graphics/event_objects/pics/people/boy_1/2.4bpp");
+const u32 gEventObjectPic_Boy1_3[] = INCBIN_U32("graphics/event_objects/pics/people/boy_1/3.4bpp");
+const u32 gEventObjectPic_Boy1_4[] = INCBIN_U32("graphics/event_objects/pics/people/boy_1/4.4bpp");
+const u32 gEventObjectPic_Boy1_5[] = INCBIN_U32("graphics/event_objects/pics/people/boy_1/5.4bpp");
+const u32 gEventObjectPic_Boy1_6[] = INCBIN_U32("graphics/event_objects/pics/people/boy_1/6.4bpp");
+const u32 gEventObjectPic_Boy1_7[] = INCBIN_U32("graphics/event_objects/pics/people/boy_1/7.4bpp");
+const u32 gEventObjectPic_Boy1_8[] = INCBIN_U32("graphics/event_objects/pics/people/boy_1/8.4bpp");
+const u32 gEventObjectPic_Girl1_0[] = INCBIN_U32("graphics/event_objects/pics/people/girl_1/0.4bpp");
+const u32 gEventObjectPic_Girl1_1[] = INCBIN_U32("graphics/event_objects/pics/people/girl_1/1.4bpp");
+const u32 gEventObjectPic_Girl1_2[] = INCBIN_U32("graphics/event_objects/pics/people/girl_1/2.4bpp");
+const u32 gEventObjectPic_Girl1_3[] = INCBIN_U32("graphics/event_objects/pics/people/girl_1/3.4bpp");
+const u32 gEventObjectPic_Girl1_4[] = INCBIN_U32("graphics/event_objects/pics/people/girl_1/4.4bpp");
+const u32 gEventObjectPic_Girl1_5[] = INCBIN_U32("graphics/event_objects/pics/people/girl_1/5.4bpp");
+const u32 gEventObjectPic_Girl1_6[] = INCBIN_U32("graphics/event_objects/pics/people/girl_1/6.4bpp");
+const u32 gEventObjectPic_Girl1_7[] = INCBIN_U32("graphics/event_objects/pics/people/girl_1/7.4bpp");
+const u32 gEventObjectPic_Girl1_8[] = INCBIN_U32("graphics/event_objects/pics/people/girl_1/8.4bpp");
+const u32 gEventObjectPic_Boy2_0[] = INCBIN_U32("graphics/event_objects/pics/people/boy_2/0.4bpp");
+const u32 gEventObjectPic_Boy2_1[] = INCBIN_U32("graphics/event_objects/pics/people/boy_2/1.4bpp");
+const u32 gEventObjectPic_Boy2_2[] = INCBIN_U32("graphics/event_objects/pics/people/boy_2/2.4bpp");
+const u32 gEventObjectPic_Boy2_3[] = INCBIN_U32("graphics/event_objects/pics/people/boy_2/3.4bpp");
+const u32 gEventObjectPic_Boy2_4[] = INCBIN_U32("graphics/event_objects/pics/people/boy_2/4.4bpp");
+const u32 gEventObjectPic_Boy2_5[] = INCBIN_U32("graphics/event_objects/pics/people/boy_2/5.4bpp");
+const u32 gEventObjectPic_Boy2_6[] = INCBIN_U32("graphics/event_objects/pics/people/boy_2/6.4bpp");
+const u32 gEventObjectPic_Boy2_7[] = INCBIN_U32("graphics/event_objects/pics/people/boy_2/7.4bpp");
+const u32 gEventObjectPic_Boy2_8[] = INCBIN_U32("graphics/event_objects/pics/people/boy_2/8.4bpp");
+const u32 gEventObjectPic_Girl2_0[] = INCBIN_U32("graphics/event_objects/pics/people/girl_2/0.4bpp");
+const u32 gEventObjectPic_Girl2_1[] = INCBIN_U32("graphics/event_objects/pics/people/girl_2/1.4bpp");
+const u32 gEventObjectPic_Girl2_2[] = INCBIN_U32("graphics/event_objects/pics/people/girl_2/2.4bpp");
+const u32 gEventObjectPic_Girl2_3[] = INCBIN_U32("graphics/event_objects/pics/people/girl_2/3.4bpp");
+const u32 gEventObjectPic_Girl2_4[] = INCBIN_U32("graphics/event_objects/pics/people/girl_2/4.4bpp");
+const u32 gEventObjectPic_Girl2_5[] = INCBIN_U32("graphics/event_objects/pics/people/girl_2/5.4bpp");
+const u32 gEventObjectPic_Girl2_6[] = INCBIN_U32("graphics/event_objects/pics/people/girl_2/6.4bpp");
+const u32 gEventObjectPic_Girl2_7[] = INCBIN_U32("graphics/event_objects/pics/people/girl_2/7.4bpp");
+const u32 gEventObjectPic_Girl2_8[] = INCBIN_U32("graphics/event_objects/pics/people/girl_2/8.4bpp");
+const u32 gEventObjectPic_LittleBoy2_0[] = INCBIN_U32("graphics/event_objects/pics/people/little_boy_2/0.4bpp");
+const u32 gEventObjectPic_LittleBoy2_1[] = INCBIN_U32("graphics/event_objects/pics/people/little_boy_2/1.4bpp");
+const u32 gEventObjectPic_LittleBoy2_2[] = INCBIN_U32("graphics/event_objects/pics/people/little_boy_2/2.4bpp");
+const u32 gEventObjectPic_LittleBoy2_3[] = INCBIN_U32("graphics/event_objects/pics/people/little_boy_2/3.4bpp");
+const u32 gEventObjectPic_LittleBoy2_4[] = INCBIN_U32("graphics/event_objects/pics/people/little_boy_2/4.4bpp");
+const u32 gEventObjectPic_LittleBoy2_5[] = INCBIN_U32("graphics/event_objects/pics/people/little_boy_2/5.4bpp");
+const u32 gEventObjectPic_LittleBoy2_6[] = INCBIN_U32("graphics/event_objects/pics/people/little_boy_2/6.4bpp");
+const u32 gEventObjectPic_LittleBoy2_7[] = INCBIN_U32("graphics/event_objects/pics/people/little_boy_2/7.4bpp");
+const u32 gEventObjectPic_LittleBoy2_8[] = INCBIN_U32("graphics/event_objects/pics/people/little_boy_2/8.4bpp");
+const u32 gEventObjectPic_LittleGirl2_0[] = INCBIN_U32("graphics/event_objects/pics/people/little_girl_2/0.4bpp");
+const u32 gEventObjectPic_LittleGirl2_1[] = INCBIN_U32("graphics/event_objects/pics/people/little_girl_2/1.4bpp");
+const u32 gEventObjectPic_LittleGirl2_2[] = INCBIN_U32("graphics/event_objects/pics/people/little_girl_2/2.4bpp");
+const u32 gEventObjectPic_LittleGirl2_3[] = INCBIN_U32("graphics/event_objects/pics/people/little_girl_2/3.4bpp");
+const u32 gEventObjectPic_LittleGirl2_4[] = INCBIN_U32("graphics/event_objects/pics/people/little_girl_2/4.4bpp");
+const u32 gEventObjectPic_LittleGirl2_5[] = INCBIN_U32("graphics/event_objects/pics/people/little_girl_2/5.4bpp");
+const u32 gEventObjectPic_LittleGirl2_6[] = INCBIN_U32("graphics/event_objects/pics/people/little_girl_2/6.4bpp");
+const u32 gEventObjectPic_LittleGirl2_7[] = INCBIN_U32("graphics/event_objects/pics/people/little_girl_2/7.4bpp");
+const u32 gEventObjectPic_LittleGirl2_8[] = INCBIN_U32("graphics/event_objects/pics/people/little_girl_2/8.4bpp");
+const u32 gEventObjectPic_Boy3_0[] = INCBIN_U32("graphics/event_objects/pics/people/boy_3/0.4bpp");
+const u32 gEventObjectPic_Boy3_1[] = INCBIN_U32("graphics/event_objects/pics/people/boy_3/1.4bpp");
+const u32 gEventObjectPic_Boy3_2[] = INCBIN_U32("graphics/event_objects/pics/people/boy_3/2.4bpp");
+const u32 gEventObjectPic_Boy3_3[] = INCBIN_U32("graphics/event_objects/pics/people/boy_3/3.4bpp");
+const u32 gEventObjectPic_Boy3_4[] = INCBIN_U32("graphics/event_objects/pics/people/boy_3/4.4bpp");
+const u32 gEventObjectPic_Boy3_5[] = INCBIN_U32("graphics/event_objects/pics/people/boy_3/5.4bpp");
+const u32 gEventObjectPic_Boy3_6[] = INCBIN_U32("graphics/event_objects/pics/people/boy_3/6.4bpp");
+const u32 gEventObjectPic_Boy3_7[] = INCBIN_U32("graphics/event_objects/pics/people/boy_3/7.4bpp");
+const u32 gEventObjectPic_Boy3_8[] = INCBIN_U32("graphics/event_objects/pics/people/boy_3/8.4bpp");
+const u32 gEventObjectPic_Girl3_0[] = INCBIN_U32("graphics/event_objects/pics/people/girl_3/0.4bpp");
+const u32 gEventObjectPic_Girl3_1[] = INCBIN_U32("graphics/event_objects/pics/people/girl_3/1.4bpp");
+const u32 gEventObjectPic_Girl3_2[] = INCBIN_U32("graphics/event_objects/pics/people/girl_3/2.4bpp");
+const u32 gEventObjectPic_Girl3_3[] = INCBIN_U32("graphics/event_objects/pics/people/girl_3/3.4bpp");
+const u32 gEventObjectPic_Girl3_4[] = INCBIN_U32("graphics/event_objects/pics/people/girl_3/4.4bpp");
+const u32 gEventObjectPic_Girl3_5[] = INCBIN_U32("graphics/event_objects/pics/people/girl_3/5.4bpp");
+const u32 gEventObjectPic_Girl3_6[] = INCBIN_U32("graphics/event_objects/pics/people/girl_3/6.4bpp");
+const u32 gEventObjectPic_Girl3_7[] = INCBIN_U32("graphics/event_objects/pics/people/girl_3/7.4bpp");
+const u32 gEventObjectPic_Girl3_8[] = INCBIN_U32("graphics/event_objects/pics/people/girl_3/8.4bpp");
+const u32 gEventObjectPic_Boy4_0[] = INCBIN_U32("graphics/event_objects/pics/people/boy_4/0.4bpp");
+const u32 gEventObjectPic_Boy4_1[] = INCBIN_U32("graphics/event_objects/pics/people/boy_4/1.4bpp");
+const u32 gEventObjectPic_Boy4_2[] = INCBIN_U32("graphics/event_objects/pics/people/boy_4/2.4bpp");
+const u32 gEventObjectPic_Boy4_3[] = INCBIN_U32("graphics/event_objects/pics/people/boy_4/3.4bpp");
+const u32 gEventObjectPic_Boy4_4[] = INCBIN_U32("graphics/event_objects/pics/people/boy_4/4.4bpp");
+const u32 gEventObjectPic_Boy4_5[] = INCBIN_U32("graphics/event_objects/pics/people/boy_4/5.4bpp");
+const u32 gEventObjectPic_Boy4_6[] = INCBIN_U32("graphics/event_objects/pics/people/boy_4/6.4bpp");
+const u32 gEventObjectPic_Boy4_7[] = INCBIN_U32("graphics/event_objects/pics/people/boy_4/7.4bpp");
+const u32 gEventObjectPic_Boy4_8[] = INCBIN_U32("graphics/event_objects/pics/people/boy_4/8.4bpp");
+const u32 gEventObjectPic_Woman1_0[] = INCBIN_U32("graphics/event_objects/pics/people/woman_1/0.4bpp");
+const u32 gEventObjectPic_Woman1_1[] = INCBIN_U32("graphics/event_objects/pics/people/woman_1/1.4bpp");
+const u32 gEventObjectPic_Woman1_2[] = INCBIN_U32("graphics/event_objects/pics/people/woman_1/2.4bpp");
+const u32 gEventObjectPic_Woman1_3[] = INCBIN_U32("graphics/event_objects/pics/people/woman_1/3.4bpp");
+const u32 gEventObjectPic_Woman1_4[] = INCBIN_U32("graphics/event_objects/pics/people/woman_1/4.4bpp");
+const u32 gEventObjectPic_Woman1_5[] = INCBIN_U32("graphics/event_objects/pics/people/woman_1/5.4bpp");
+const u32 gEventObjectPic_Woman1_6[] = INCBIN_U32("graphics/event_objects/pics/people/woman_1/6.4bpp");
+const u32 gEventObjectPic_Woman1_7[] = INCBIN_U32("graphics/event_objects/pics/people/woman_1/7.4bpp");
+const u32 gEventObjectPic_Woman1_8[] = INCBIN_U32("graphics/event_objects/pics/people/woman_1/8.4bpp");
+const u32 gEventObjectPic_FatMan_0[] = INCBIN_U32("graphics/event_objects/pics/people/fat_man/0.4bpp");
+const u32 gEventObjectPic_FatMan_1[] = INCBIN_U32("graphics/event_objects/pics/people/fat_man/1.4bpp");
+const u32 gEventObjectPic_FatMan_2[] = INCBIN_U32("graphics/event_objects/pics/people/fat_man/2.4bpp");
+const u32 gEventObjectPic_FatMan_3[] = INCBIN_U32("graphics/event_objects/pics/people/fat_man/3.4bpp");
+const u32 gEventObjectPic_FatMan_4[] = INCBIN_U32("graphics/event_objects/pics/people/fat_man/4.4bpp");
+const u32 gEventObjectPic_FatMan_5[] = INCBIN_U32("graphics/event_objects/pics/people/fat_man/5.4bpp");
+const u32 gEventObjectPic_FatMan_6[] = INCBIN_U32("graphics/event_objects/pics/people/fat_man/6.4bpp");
+const u32 gEventObjectPic_FatMan_7[] = INCBIN_U32("graphics/event_objects/pics/people/fat_man/7.4bpp");
+const u32 gEventObjectPic_FatMan_8[] = INCBIN_U32("graphics/event_objects/pics/people/fat_man/8.4bpp");
+const u32 gEventObjectPic_Woman2_0[] = INCBIN_U32("graphics/event_objects/pics/people/woman_2/0.4bpp");
+const u32 gEventObjectPic_Woman2_1[] = INCBIN_U32("graphics/event_objects/pics/people/woman_2/1.4bpp");
+const u32 gEventObjectPic_Woman2_2[] = INCBIN_U32("graphics/event_objects/pics/people/woman_2/2.4bpp");
+const u32 gEventObjectPic_Woman2_3[] = INCBIN_U32("graphics/event_objects/pics/people/woman_2/3.4bpp");
+const u32 gEventObjectPic_Woman2_4[] = INCBIN_U32("graphics/event_objects/pics/people/woman_2/4.4bpp");
+const u32 gEventObjectPic_Woman2_5[] = INCBIN_U32("graphics/event_objects/pics/people/woman_2/5.4bpp");
+const u32 gEventObjectPic_Woman2_6[] = INCBIN_U32("graphics/event_objects/pics/people/woman_2/6.4bpp");
+const u32 gEventObjectPic_Woman2_7[] = INCBIN_U32("graphics/event_objects/pics/people/woman_2/7.4bpp");
+const u32 gEventObjectPic_Woman2_8[] = INCBIN_U32("graphics/event_objects/pics/people/woman_2/8.4bpp");
+const u32 gEventObjectPic_Man1_0[] = INCBIN_U32("graphics/event_objects/pics/people/man_1/0.4bpp");
+const u32 gEventObjectPic_Man1_1[] = INCBIN_U32("graphics/event_objects/pics/people/man_1/1.4bpp");
+const u32 gEventObjectPic_Man1_2[] = INCBIN_U32("graphics/event_objects/pics/people/man_1/2.4bpp");
+const u32 gEventObjectPic_Man1_3[] = INCBIN_U32("graphics/event_objects/pics/people/man_1/3.4bpp");
+const u32 gEventObjectPic_Man1_4[] = INCBIN_U32("graphics/event_objects/pics/people/man_1/4.4bpp");
+const u32 gEventObjectPic_Man1_5[] = INCBIN_U32("graphics/event_objects/pics/people/man_1/5.4bpp");
+const u32 gEventObjectPic_Man1_6[] = INCBIN_U32("graphics/event_objects/pics/people/man_1/6.4bpp");
+const u32 gEventObjectPic_Man1_7[] = INCBIN_U32("graphics/event_objects/pics/people/man_1/7.4bpp");
+const u32 gEventObjectPic_Man1_8[] = INCBIN_U32("graphics/event_objects/pics/people/man_1/8.4bpp");
+const u32 gEventObjectPic_Woman3_0[] = INCBIN_U32("graphics/event_objects/pics/people/woman_3/0.4bpp");
+const u32 gEventObjectPic_Woman3_1[] = INCBIN_U32("graphics/event_objects/pics/people/woman_3/1.4bpp");
+const u32 gEventObjectPic_Woman3_2[] = INCBIN_U32("graphics/event_objects/pics/people/woman_3/2.4bpp");
+const u32 gEventObjectPic_Woman3_3[] = INCBIN_U32("graphics/event_objects/pics/people/woman_3/3.4bpp");
+const u32 gEventObjectPic_Woman3_4[] = INCBIN_U32("graphics/event_objects/pics/people/woman_3/4.4bpp");
+const u32 gEventObjectPic_Woman3_5[] = INCBIN_U32("graphics/event_objects/pics/people/woman_3/5.4bpp");
+const u32 gEventObjectPic_Woman3_6[] = INCBIN_U32("graphics/event_objects/pics/people/woman_3/6.4bpp");
+const u32 gEventObjectPic_Woman3_7[] = INCBIN_U32("graphics/event_objects/pics/people/woman_3/7.4bpp");
+const u32 gEventObjectPic_Woman3_8[] = INCBIN_U32("graphics/event_objects/pics/people/woman_3/8.4bpp");
+const u32 gEventObjectPic_OldMan1_0[] = INCBIN_U32("graphics/event_objects/pics/people/old_man_1/0.4bpp");
+const u32 gEventObjectPic_OldMan1_1[] = INCBIN_U32("graphics/event_objects/pics/people/old_man_1/1.4bpp");
+const u32 gEventObjectPic_OldMan1_2[] = INCBIN_U32("graphics/event_objects/pics/people/old_man_1/2.4bpp");
+const u32 gEventObjectPic_OldMan1_3[] = INCBIN_U32("graphics/event_objects/pics/people/old_man_1/3.4bpp");
+const u32 gEventObjectPic_OldMan1_4[] = INCBIN_U32("graphics/event_objects/pics/people/old_man_1/4.4bpp");
+const u32 gEventObjectPic_OldMan1_5[] = INCBIN_U32("graphics/event_objects/pics/people/old_man_1/5.4bpp");
+const u32 gEventObjectPic_OldMan1_6[] = INCBIN_U32("graphics/event_objects/pics/people/old_man_1/6.4bpp");
+const u32 gEventObjectPic_OldMan1_7[] = INCBIN_U32("graphics/event_objects/pics/people/old_man_1/7.4bpp");
+const u32 gEventObjectPic_OldMan1_8[] = INCBIN_U32("graphics/event_objects/pics/people/old_man_1/8.4bpp");
+const u32 gEventObjectPic_OldWoman1_0[] = INCBIN_U32("graphics/event_objects/pics/people/old_woman_1/0.4bpp");
+const u32 gEventObjectPic_OldWoman1_1[] = INCBIN_U32("graphics/event_objects/pics/people/old_woman_1/1.4bpp");
+const u32 gEventObjectPic_OldWoman1_2[] = INCBIN_U32("graphics/event_objects/pics/people/old_woman_1/2.4bpp");
+const u32 gEventObjectPic_OldWoman1_3[] = INCBIN_U32("graphics/event_objects/pics/people/old_woman_1/3.4bpp");
+const u32 gEventObjectPic_OldWoman1_4[] = INCBIN_U32("graphics/event_objects/pics/people/old_woman_1/4.4bpp");
+const u32 gEventObjectPic_OldWoman1_5[] = INCBIN_U32("graphics/event_objects/pics/people/old_woman_1/5.4bpp");
+const u32 gEventObjectPic_OldWoman1_6[] = INCBIN_U32("graphics/event_objects/pics/people/old_woman_1/6.4bpp");
+const u32 gEventObjectPic_OldWoman1_7[] = INCBIN_U32("graphics/event_objects/pics/people/old_woman_1/7.4bpp");
+const u32 gEventObjectPic_OldWoman1_8[] = INCBIN_U32("graphics/event_objects/pics/people/old_woman_1/8.4bpp");
+const u32 gEventObjectPic_Man2_0[] = INCBIN_U32("graphics/event_objects/pics/people/man_2/0.4bpp");
+const u32 gEventObjectPic_Man2_1[] = INCBIN_U32("graphics/event_objects/pics/people/man_2/1.4bpp");
+const u32 gEventObjectPic_Man2_2[] = INCBIN_U32("graphics/event_objects/pics/people/man_2/2.4bpp");
+const u32 gEventObjectPic_Man2_3[] = INCBIN_U32("graphics/event_objects/pics/people/man_2/3.4bpp");
+const u32 gEventObjectPic_Man2_4[] = INCBIN_U32("graphics/event_objects/pics/people/man_2/4.4bpp");
+const u32 gEventObjectPic_Man2_5[] = INCBIN_U32("graphics/event_objects/pics/people/man_2/5.4bpp");
+const u32 gEventObjectPic_Man2_6[] = INCBIN_U32("graphics/event_objects/pics/people/man_2/6.4bpp");
+const u32 gEventObjectPic_Man2_7[] = INCBIN_U32("graphics/event_objects/pics/people/man_2/7.4bpp");
+const u32 gEventObjectPic_Man2_8[] = INCBIN_U32("graphics/event_objects/pics/people/man_2/8.4bpp");
+const u32 gEventObjectPic_Woman4_0[] = INCBIN_U32("graphics/event_objects/pics/people/woman_4/0.4bpp");
+const u32 gEventObjectPic_Woman4_1[] = INCBIN_U32("graphics/event_objects/pics/people/woman_4/1.4bpp");
+const u32 gEventObjectPic_Woman4_2[] = INCBIN_U32("graphics/event_objects/pics/people/woman_4/2.4bpp");
+const u32 gEventObjectPic_Woman4_3[] = INCBIN_U32("graphics/event_objects/pics/people/woman_4/3.4bpp");
+const u32 gEventObjectPic_Woman4_4[] = INCBIN_U32("graphics/event_objects/pics/people/woman_4/4.4bpp");
+const u32 gEventObjectPic_Woman4_5[] = INCBIN_U32("graphics/event_objects/pics/people/woman_4/5.4bpp");
+const u32 gEventObjectPic_Woman4_6[] = INCBIN_U32("graphics/event_objects/pics/people/woman_4/6.4bpp");
+const u32 gEventObjectPic_Woman4_7[] = INCBIN_U32("graphics/event_objects/pics/people/woman_4/7.4bpp");
+const u32 gEventObjectPic_Woman4_8[] = INCBIN_U32("graphics/event_objects/pics/people/woman_4/8.4bpp");
+const u32 gEventObjectPic_Man3_0[] = INCBIN_U32("graphics/event_objects/pics/people/man_3/0.4bpp");
+const u32 gEventObjectPic_Man3_1[] = INCBIN_U32("graphics/event_objects/pics/people/man_3/1.4bpp");
+const u32 gEventObjectPic_Man3_2[] = INCBIN_U32("graphics/event_objects/pics/people/man_3/2.4bpp");
+const u32 gEventObjectPic_Man3_3[] = INCBIN_U32("graphics/event_objects/pics/people/man_3/3.4bpp");
+const u32 gEventObjectPic_Man3_4[] = INCBIN_U32("graphics/event_objects/pics/people/man_3/4.4bpp");
+const u32 gEventObjectPic_Man3_5[] = INCBIN_U32("graphics/event_objects/pics/people/man_3/5.4bpp");
+const u32 gEventObjectPic_Man3_6[] = INCBIN_U32("graphics/event_objects/pics/people/man_3/6.4bpp");
+const u32 gEventObjectPic_Man3_7[] = INCBIN_U32("graphics/event_objects/pics/people/man_3/7.4bpp");
+const u32 gEventObjectPic_Man3_8[] = INCBIN_U32("graphics/event_objects/pics/people/man_3/8.4bpp");
+const u32 gEventObjectPic_Woman5_0[] = INCBIN_U32("graphics/event_objects/pics/people/woman_5/0.4bpp");
+const u32 gEventObjectPic_Woman5_1[] = INCBIN_U32("graphics/event_objects/pics/people/woman_5/1.4bpp");
+const u32 gEventObjectPic_Woman5_2[] = INCBIN_U32("graphics/event_objects/pics/people/woman_5/2.4bpp");
+const u32 gEventObjectPic_Woman5_3[] = INCBIN_U32("graphics/event_objects/pics/people/woman_5/3.4bpp");
+const u32 gEventObjectPic_Woman5_4[] = INCBIN_U32("graphics/event_objects/pics/people/woman_5/4.4bpp");
+const u32 gEventObjectPic_Woman5_5[] = INCBIN_U32("graphics/event_objects/pics/people/woman_5/5.4bpp");
+const u32 gEventObjectPic_Woman5_6[] = INCBIN_U32("graphics/event_objects/pics/people/woman_5/6.4bpp");
+const u32 gEventObjectPic_Woman5_7[] = INCBIN_U32("graphics/event_objects/pics/people/woman_5/7.4bpp");
+const u32 gEventObjectPic_Woman5_8[] = INCBIN_U32("graphics/event_objects/pics/people/woman_5/8.4bpp");
+const u32 gEventObjectPic_Cook_0[] = INCBIN_U32("graphics/event_objects/pics/people/cook/0.4bpp");
+const u32 gEventObjectPic_Cook_1[] = INCBIN_U32("graphics/event_objects/pics/people/cook/1.4bpp");
+const u32 gEventObjectPic_Cook_2[] = INCBIN_U32("graphics/event_objects/pics/people/cook/2.4bpp");
+const u32 gEventObjectPic_Woman6_0[] = INCBIN_U32("graphics/event_objects/pics/people/woman_6/0.4bpp");
+const u32 gEventObjectPic_Woman6_1[] = INCBIN_U32("graphics/event_objects/pics/people/woman_6/1.4bpp");
+const u32 gEventObjectPic_Woman6_2[] = INCBIN_U32("graphics/event_objects/pics/people/woman_6/2.4bpp");
+const u32 gEventObjectPic_Woman6_3[] = INCBIN_U32("graphics/event_objects/pics/people/woman_6/3.4bpp");
+const u32 gEventObjectPic_Woman6_4[] = INCBIN_U32("graphics/event_objects/pics/people/woman_6/4.4bpp");
+const u32 gEventObjectPic_Woman6_5[] = INCBIN_U32("graphics/event_objects/pics/people/woman_6/5.4bpp");
+const u32 gEventObjectPic_Woman6_6[] = INCBIN_U32("graphics/event_objects/pics/people/woman_6/6.4bpp");
+const u32 gEventObjectPic_Woman6_7[] = INCBIN_U32("graphics/event_objects/pics/people/woman_6/7.4bpp");
+const u32 gEventObjectPic_Woman6_8[] = INCBIN_U32("graphics/event_objects/pics/people/woman_6/8.4bpp");
+const u32 gEventObjectPic_OldMan2_0[] = INCBIN_U32("graphics/event_objects/pics/people/old_man_2/0.4bpp");
+const u32 gEventObjectPic_OldMan2_1[] = INCBIN_U32("graphics/event_objects/pics/people/old_man_2/1.4bpp");
+const u32 gEventObjectPic_OldMan2_2[] = INCBIN_U32("graphics/event_objects/pics/people/old_man_2/2.4bpp");
+const u32 gEventObjectPic_OldWoman2_0[] = INCBIN_U32("graphics/event_objects/pics/people/old_woman_2/0.4bpp");
+const u32 gEventObjectPic_OldWoman2_1[] = INCBIN_U32("graphics/event_objects/pics/people/old_woman_2/1.4bpp");
+const u32 gEventObjectPic_OldWoman2_2[] = INCBIN_U32("graphics/event_objects/pics/people/old_woman_2/2.4bpp");
+const u32 gEventObjectPic_Camper_0[] = INCBIN_U32("graphics/event_objects/pics/people/camper/0.4bpp");
+const u32 gEventObjectPic_Camper_1[] = INCBIN_U32("graphics/event_objects/pics/people/camper/1.4bpp");
+const u32 gEventObjectPic_Camper_2[] = INCBIN_U32("graphics/event_objects/pics/people/camper/2.4bpp");
+const u32 gEventObjectPic_Camper_3[] = INCBIN_U32("graphics/event_objects/pics/people/camper/3.4bpp");
+const u32 gEventObjectPic_Camper_4[] = INCBIN_U32("graphics/event_objects/pics/people/camper/4.4bpp");
+const u32 gEventObjectPic_Camper_5[] = INCBIN_U32("graphics/event_objects/pics/people/camper/5.4bpp");
+const u32 gEventObjectPic_Camper_6[] = INCBIN_U32("graphics/event_objects/pics/people/camper/6.4bpp");
+const u32 gEventObjectPic_Camper_7[] = INCBIN_U32("graphics/event_objects/pics/people/camper/7.4bpp");
+const u32 gEventObjectPic_Camper_8[] = INCBIN_U32("graphics/event_objects/pics/people/camper/8.4bpp");
+const u32 gEventObjectPic_Picnicker_0[] = INCBIN_U32("graphics/event_objects/pics/people/picnicker/0.4bpp");
+const u32 gEventObjectPic_Picnicker_1[] = INCBIN_U32("graphics/event_objects/pics/people/picnicker/1.4bpp");
+const u32 gEventObjectPic_Picnicker_2[] = INCBIN_U32("graphics/event_objects/pics/people/picnicker/2.4bpp");
+const u32 gEventObjectPic_Picnicker_3[] = INCBIN_U32("graphics/event_objects/pics/people/picnicker/3.4bpp");
+const u32 gEventObjectPic_Picnicker_4[] = INCBIN_U32("graphics/event_objects/pics/people/picnicker/4.4bpp");
+const u32 gEventObjectPic_Picnicker_5[] = INCBIN_U32("graphics/event_objects/pics/people/picnicker/5.4bpp");
+const u32 gEventObjectPic_Picnicker_6[] = INCBIN_U32("graphics/event_objects/pics/people/picnicker/6.4bpp");
+const u32 gEventObjectPic_Picnicker_7[] = INCBIN_U32("graphics/event_objects/pics/people/picnicker/7.4bpp");
+const u32 gEventObjectPic_Picnicker_8[] = INCBIN_U32("graphics/event_objects/pics/people/picnicker/8.4bpp");
+const u32 gEventObjectPic_Man4_0[] = INCBIN_U32("graphics/event_objects/pics/people/man_4/0.4bpp");
+const u32 gEventObjectPic_Man4_1[] = INCBIN_U32("graphics/event_objects/pics/people/man_4/1.4bpp");
+const u32 gEventObjectPic_Man4_2[] = INCBIN_U32("graphics/event_objects/pics/people/man_4/2.4bpp");
+const u32 gEventObjectPic_Man4_3[] = INCBIN_U32("graphics/event_objects/pics/people/man_4/3.4bpp");
+const u32 gEventObjectPic_Man4_4[] = INCBIN_U32("graphics/event_objects/pics/people/man_4/4.4bpp");
+const u32 gEventObjectPic_Man4_5[] = INCBIN_U32("graphics/event_objects/pics/people/man_4/5.4bpp");
+const u32 gEventObjectPic_Man4_6[] = INCBIN_U32("graphics/event_objects/pics/people/man_4/6.4bpp");
+const u32 gEventObjectPic_Man4_7[] = INCBIN_U32("graphics/event_objects/pics/people/man_4/7.4bpp");
+const u32 gEventObjectPic_Man4_8[] = INCBIN_U32("graphics/event_objects/pics/people/man_4/8.4bpp");
+const u32 gEventObjectPic_Woman7_0[] = INCBIN_U32("graphics/event_objects/pics/people/woman_7/0.4bpp");
+const u32 gEventObjectPic_Woman7_1[] = INCBIN_U32("graphics/event_objects/pics/people/woman_7/1.4bpp");
+const u32 gEventObjectPic_Woman7_2[] = INCBIN_U32("graphics/event_objects/pics/people/woman_7/2.4bpp");
+const u32 gEventObjectPic_Woman7_3[] = INCBIN_U32("graphics/event_objects/pics/people/woman_7/3.4bpp");
+const u32 gEventObjectPic_Woman7_4[] = INCBIN_U32("graphics/event_objects/pics/people/woman_7/4.4bpp");
+const u32 gEventObjectPic_Woman7_5[] = INCBIN_U32("graphics/event_objects/pics/people/woman_7/5.4bpp");
+const u32 gEventObjectPic_Woman7_6[] = INCBIN_U32("graphics/event_objects/pics/people/woman_7/6.4bpp");
+const u32 gEventObjectPic_Woman7_7[] = INCBIN_U32("graphics/event_objects/pics/people/woman_7/7.4bpp");
+const u32 gEventObjectPic_Woman7_8[] = INCBIN_U32("graphics/event_objects/pics/people/woman_7/8.4bpp");
+const u32 gEventObjectPic_Youngster_0[] = INCBIN_U32("graphics/event_objects/pics/people/youngster/0.4bpp");
+const u32 gEventObjectPic_Youngster_1[] = INCBIN_U32("graphics/event_objects/pics/people/youngster/1.4bpp");
+const u32 gEventObjectPic_Youngster_2[] = INCBIN_U32("graphics/event_objects/pics/people/youngster/2.4bpp");
+const u32 gEventObjectPic_Youngster_3[] = INCBIN_U32("graphics/event_objects/pics/people/youngster/3.4bpp");
+const u32 gEventObjectPic_Youngster_4[] = INCBIN_U32("graphics/event_objects/pics/people/youngster/4.4bpp");
+const u32 gEventObjectPic_Youngster_5[] = INCBIN_U32("graphics/event_objects/pics/people/youngster/5.4bpp");
+const u32 gEventObjectPic_Youngster_6[] = INCBIN_U32("graphics/event_objects/pics/people/youngster/6.4bpp");
+const u32 gEventObjectPic_Youngster_7[] = INCBIN_U32("graphics/event_objects/pics/people/youngster/7.4bpp");
+const u32 gEventObjectPic_Youngster_8[] = INCBIN_U32("graphics/event_objects/pics/people/youngster/8.4bpp");
+const u32 gEventObjectPic_BugCatcher_0[] = INCBIN_U32("graphics/event_objects/pics/people/bug_catcher/0.4bpp");
+const u32 gEventObjectPic_BugCatcher_1[] = INCBIN_U32("graphics/event_objects/pics/people/bug_catcher/1.4bpp");
+const u32 gEventObjectPic_BugCatcher_2[] = INCBIN_U32("graphics/event_objects/pics/people/bug_catcher/2.4bpp");
+const u32 gEventObjectPic_BugCatcher_3[] = INCBIN_U32("graphics/event_objects/pics/people/bug_catcher/3.4bpp");
+const u32 gEventObjectPic_BugCatcher_4[] = INCBIN_U32("graphics/event_objects/pics/people/bug_catcher/4.4bpp");
+const u32 gEventObjectPic_BugCatcher_5[] = INCBIN_U32("graphics/event_objects/pics/people/bug_catcher/5.4bpp");
+const u32 gEventObjectPic_BugCatcher_6[] = INCBIN_U32("graphics/event_objects/pics/people/bug_catcher/6.4bpp");
+const u32 gEventObjectPic_BugCatcher_7[] = INCBIN_U32("graphics/event_objects/pics/people/bug_catcher/7.4bpp");
+const u32 gEventObjectPic_BugCatcher_8[] = INCBIN_U32("graphics/event_objects/pics/people/bug_catcher/8.4bpp");
+const u32 gEventObjectPic_PsychicM_0[] = INCBIN_U32("graphics/event_objects/pics/people/psychic_m/0.4bpp");
+const u32 gEventObjectPic_PsychicM_1[] = INCBIN_U32("graphics/event_objects/pics/people/psychic_m/1.4bpp");
+const u32 gEventObjectPic_PsychicM_2[] = INCBIN_U32("graphics/event_objects/pics/people/psychic_m/2.4bpp");
+const u32 gEventObjectPic_PsychicM_3[] = INCBIN_U32("graphics/event_objects/pics/people/psychic_m/3.4bpp");
+const u32 gEventObjectPic_PsychicM_4[] = INCBIN_U32("graphics/event_objects/pics/people/psychic_m/4.4bpp");
+const u32 gEventObjectPic_PsychicM_5[] = INCBIN_U32("graphics/event_objects/pics/people/psychic_m/5.4bpp");
+const u32 gEventObjectPic_PsychicM_6[] = INCBIN_U32("graphics/event_objects/pics/people/psychic_m/6.4bpp");
+const u32 gEventObjectPic_PsychicM_7[] = INCBIN_U32("graphics/event_objects/pics/people/psychic_m/7.4bpp");
+const u32 gEventObjectPic_PsychicM_8[] = INCBIN_U32("graphics/event_objects/pics/people/psychic_m/8.4bpp");
+const u32 gEventObjectPic_SchoolKidM_0[] = INCBIN_U32("graphics/event_objects/pics/people/school_kid_m/0.4bpp");
+const u32 gEventObjectPic_SchoolKidM_1[] = INCBIN_U32("graphics/event_objects/pics/people/school_kid_m/1.4bpp");
+const u32 gEventObjectPic_SchoolKidM_2[] = INCBIN_U32("graphics/event_objects/pics/people/school_kid_m/2.4bpp");
+const u32 gEventObjectPic_SchoolKidM_3[] = INCBIN_U32("graphics/event_objects/pics/people/school_kid_m/3.4bpp");
+const u32 gEventObjectPic_SchoolKidM_4[] = INCBIN_U32("graphics/event_objects/pics/people/school_kid_m/4.4bpp");
+const u32 gEventObjectPic_SchoolKidM_5[] = INCBIN_U32("graphics/event_objects/pics/people/school_kid_m/5.4bpp");
+const u32 gEventObjectPic_SchoolKidM_6[] = INCBIN_U32("graphics/event_objects/pics/people/school_kid_m/6.4bpp");
+const u32 gEventObjectPic_SchoolKidM_7[] = INCBIN_U32("graphics/event_objects/pics/people/school_kid_m/7.4bpp");
+const u32 gEventObjectPic_SchoolKidM_8[] = INCBIN_U32("graphics/event_objects/pics/people/school_kid_m/8.4bpp");
+const u32 gEventObjectPic_Maniac_0[] = INCBIN_U32("graphics/event_objects/pics/people/maniac/0.4bpp");
+const u32 gEventObjectPic_Maniac_1[] = INCBIN_U32("graphics/event_objects/pics/people/maniac/1.4bpp");
+const u32 gEventObjectPic_Maniac_2[] = INCBIN_U32("graphics/event_objects/pics/people/maniac/2.4bpp");
+const u32 gEventObjectPic_Maniac_3[] = INCBIN_U32("graphics/event_objects/pics/people/maniac/3.4bpp");
+const u32 gEventObjectPic_Maniac_4[] = INCBIN_U32("graphics/event_objects/pics/people/maniac/4.4bpp");
+const u32 gEventObjectPic_Maniac_5[] = INCBIN_U32("graphics/event_objects/pics/people/maniac/5.4bpp");
+const u32 gEventObjectPic_Maniac_6[] = INCBIN_U32("graphics/event_objects/pics/people/maniac/6.4bpp");
+const u32 gEventObjectPic_Maniac_7[] = INCBIN_U32("graphics/event_objects/pics/people/maniac/7.4bpp");
+const u32 gEventObjectPic_Maniac_8[] = INCBIN_U32("graphics/event_objects/pics/people/maniac/8.4bpp");
+const u32 gEventObjectPic_HexManiac_0[] = INCBIN_U32("graphics/event_objects/pics/people/hex_maniac/0.4bpp");
+const u32 gEventObjectPic_HexManiac_1[] = INCBIN_U32("graphics/event_objects/pics/people/hex_maniac/1.4bpp");
+const u32 gEventObjectPic_HexManiac_2[] = INCBIN_U32("graphics/event_objects/pics/people/hex_maniac/2.4bpp");
+const u32 gEventObjectPic_HexManiac_3[] = INCBIN_U32("graphics/event_objects/pics/people/hex_maniac/3.4bpp");
+const u32 gEventObjectPic_HexManiac_4[] = INCBIN_U32("graphics/event_objects/pics/people/hex_maniac/4.4bpp");
+const u32 gEventObjectPic_HexManiac_5[] = INCBIN_U32("graphics/event_objects/pics/people/hex_maniac/5.4bpp");
+const u32 gEventObjectPic_HexManiac_6[] = INCBIN_U32("graphics/event_objects/pics/people/hex_maniac/6.4bpp");
+const u32 gEventObjectPic_HexManiac_7[] = INCBIN_U32("graphics/event_objects/pics/people/hex_maniac/7.4bpp");
+const u32 gEventObjectPic_HexManiac_8[] = INCBIN_U32("graphics/event_objects/pics/people/hex_maniac/8.4bpp");
+const u32 gEventObjectPic_Woman8_0[] = INCBIN_U32("graphics/event_objects/pics/people/woman_8/0.4bpp");
+const u32 gEventObjectPic_Woman8_1[] = INCBIN_U32("graphics/event_objects/pics/people/woman_8/1.4bpp");
+const u32 gEventObjectPic_Woman8_2[] = INCBIN_U32("graphics/event_objects/pics/people/woman_8/2.4bpp");
+const u32 gEventObjectPic_Woman8_3[] = INCBIN_U32("graphics/event_objects/pics/people/woman_8/3.4bpp");
+const u32 gEventObjectPic_Woman8_4[] = INCBIN_U32("graphics/event_objects/pics/people/woman_8/4.4bpp");
+const u32 gEventObjectPic_Woman8_5[] = INCBIN_U32("graphics/event_objects/pics/people/woman_8/5.4bpp");
+const u32 gEventObjectPic_Woman8_6[] = INCBIN_U32("graphics/event_objects/pics/people/woman_8/6.4bpp");
+const u32 gEventObjectPic_Woman8_7[] = INCBIN_U32("graphics/event_objects/pics/people/woman_8/7.4bpp");
+const u32 gEventObjectPic_Woman8_8[] = INCBIN_U32("graphics/event_objects/pics/people/woman_8/8.4bpp");
+const u32 gEventObjectPic_SwimmerM_0[] = INCBIN_U32("graphics/event_objects/pics/people/swimmer_m/0.4bpp");
+const u32 gEventObjectPic_SwimmerM_1[] = INCBIN_U32("graphics/event_objects/pics/people/swimmer_m/1.4bpp");
+const u32 gEventObjectPic_SwimmerM_2[] = INCBIN_U32("graphics/event_objects/pics/people/swimmer_m/2.4bpp");
+const u32 gEventObjectPic_SwimmerM_3[] = INCBIN_U32("graphics/event_objects/pics/people/swimmer_m/3.4bpp");
+const u32 gEventObjectPic_SwimmerM_4[] = INCBIN_U32("graphics/event_objects/pics/people/swimmer_m/4.4bpp");
+const u32 gEventObjectPic_SwimmerM_5[] = INCBIN_U32("graphics/event_objects/pics/people/swimmer_m/5.4bpp");
+const u32 gEventObjectPic_SwimmerM_6[] = INCBIN_U32("graphics/event_objects/pics/people/swimmer_m/6.4bpp");
+const u32 gEventObjectPic_SwimmerM_7[] = INCBIN_U32("graphics/event_objects/pics/people/swimmer_m/7.4bpp");
+const u32 gEventObjectPic_SwimmerM_8[] = INCBIN_U32("graphics/event_objects/pics/people/swimmer_m/8.4bpp");
+const u32 gEventObjectPic_SwimmerF_0[] = INCBIN_U32("graphics/event_objects/pics/people/swimmer_f/0.4bpp");
+const u32 gEventObjectPic_SwimmerF_1[] = INCBIN_U32("graphics/event_objects/pics/people/swimmer_f/1.4bpp");
+const u32 gEventObjectPic_SwimmerF_2[] = INCBIN_U32("graphics/event_objects/pics/people/swimmer_f/2.4bpp");
+const u32 gEventObjectPic_SwimmerF_3[] = INCBIN_U32("graphics/event_objects/pics/people/swimmer_f/3.4bpp");
+const u32 gEventObjectPic_SwimmerF_4[] = INCBIN_U32("graphics/event_objects/pics/people/swimmer_f/4.4bpp");
+const u32 gEventObjectPic_SwimmerF_5[] = INCBIN_U32("graphics/event_objects/pics/people/swimmer_f/5.4bpp");
+const u32 gEventObjectPic_SwimmerF_6[] = INCBIN_U32("graphics/event_objects/pics/people/swimmer_f/6.4bpp");
+const u32 gEventObjectPic_SwimmerF_7[] = INCBIN_U32("graphics/event_objects/pics/people/swimmer_f/7.4bpp");
+const u32 gEventObjectPic_SwimmerF_8[] = INCBIN_U32("graphics/event_objects/pics/people/swimmer_f/8.4bpp");
+const u32 gEventObjectPic_BlackBelt_0[] = INCBIN_U32("graphics/event_objects/pics/people/black_belt/0.4bpp");
+const u32 gEventObjectPic_BlackBelt_1[] = INCBIN_U32("graphics/event_objects/pics/people/black_belt/1.4bpp");
+const u32 gEventObjectPic_BlackBelt_2[] = INCBIN_U32("graphics/event_objects/pics/people/black_belt/2.4bpp");
+const u32 gEventObjectPic_BlackBelt_3[] = INCBIN_U32("graphics/event_objects/pics/people/black_belt/3.4bpp");
+const u32 gEventObjectPic_BlackBelt_4[] = INCBIN_U32("graphics/event_objects/pics/people/black_belt/4.4bpp");
+const u32 gEventObjectPic_BlackBelt_5[] = INCBIN_U32("graphics/event_objects/pics/people/black_belt/5.4bpp");
+const u32 gEventObjectPic_BlackBelt_6[] = INCBIN_U32("graphics/event_objects/pics/people/black_belt/6.4bpp");
+const u32 gEventObjectPic_BlackBelt_7[] = INCBIN_U32("graphics/event_objects/pics/people/black_belt/7.4bpp");
+const u32 gEventObjectPic_BlackBelt_8[] = INCBIN_U32("graphics/event_objects/pics/people/black_belt/8.4bpp");
+const u32 gEventObjectPic_Beauty_0[] = INCBIN_U32("graphics/event_objects/pics/people/beauty/0.4bpp");
+const u32 gEventObjectPic_Beauty_1[] = INCBIN_U32("graphics/event_objects/pics/people/beauty/1.4bpp");
+const u32 gEventObjectPic_Beauty_2[] = INCBIN_U32("graphics/event_objects/pics/people/beauty/2.4bpp");
+const u32 gEventObjectPic_Beauty_3[] = INCBIN_U32("graphics/event_objects/pics/people/beauty/3.4bpp");
+const u32 gEventObjectPic_Beauty_4[] = INCBIN_U32("graphics/event_objects/pics/people/beauty/4.4bpp");
+const u32 gEventObjectPic_Beauty_5[] = INCBIN_U32("graphics/event_objects/pics/people/beauty/5.4bpp");
+const u32 gEventObjectPic_Beauty_6[] = INCBIN_U32("graphics/event_objects/pics/people/beauty/6.4bpp");
+const u32 gEventObjectPic_Beauty_7[] = INCBIN_U32("graphics/event_objects/pics/people/beauty/7.4bpp");
+const u32 gEventObjectPic_Beauty_8[] = INCBIN_U32("graphics/event_objects/pics/people/beauty/8.4bpp");
+const u32 gEventObjectPic_Scientist1_0[] = INCBIN_U32("graphics/event_objects/pics/people/scientist_1/0.4bpp");
+const u32 gEventObjectPic_Scientist1_1[] = INCBIN_U32("graphics/event_objects/pics/people/scientist_1/1.4bpp");
+const u32 gEventObjectPic_Scientist1_2[] = INCBIN_U32("graphics/event_objects/pics/people/scientist_1/2.4bpp");
+const u32 gEventObjectPic_Scientist1_3[] = INCBIN_U32("graphics/event_objects/pics/people/scientist_1/3.4bpp");
+const u32 gEventObjectPic_Scientist1_4[] = INCBIN_U32("graphics/event_objects/pics/people/scientist_1/4.4bpp");
+const u32 gEventObjectPic_Scientist1_5[] = INCBIN_U32("graphics/event_objects/pics/people/scientist_1/5.4bpp");
+const u32 gEventObjectPic_Scientist1_6[] = INCBIN_U32("graphics/event_objects/pics/people/scientist_1/6.4bpp");
+const u32 gEventObjectPic_Scientist1_7[] = INCBIN_U32("graphics/event_objects/pics/people/scientist_1/7.4bpp");
+const u32 gEventObjectPic_Scientist1_8[] = INCBIN_U32("graphics/event_objects/pics/people/scientist_1/8.4bpp");
+const u32 gEventObjectPic_Lass_0[] = INCBIN_U32("graphics/event_objects/pics/people/lass/0.4bpp");
+const u32 gEventObjectPic_Lass_1[] = INCBIN_U32("graphics/event_objects/pics/people/lass/1.4bpp");
+const u32 gEventObjectPic_Lass_2[] = INCBIN_U32("graphics/event_objects/pics/people/lass/2.4bpp");
+const u32 gEventObjectPic_Lass_3[] = INCBIN_U32("graphics/event_objects/pics/people/lass/3.4bpp");
+const u32 gEventObjectPic_Lass_4[] = INCBIN_U32("graphics/event_objects/pics/people/lass/4.4bpp");
+const u32 gEventObjectPic_Lass_5[] = INCBIN_U32("graphics/event_objects/pics/people/lass/5.4bpp");
+const u32 gEventObjectPic_Lass_6[] = INCBIN_U32("graphics/event_objects/pics/people/lass/6.4bpp");
+const u32 gEventObjectPic_Lass_7[] = INCBIN_U32("graphics/event_objects/pics/people/lass/7.4bpp");
+const u32 gEventObjectPic_Lass_8[] = INCBIN_U32("graphics/event_objects/pics/people/lass/8.4bpp");
+const u32 gEventObjectPic_Gentleman_0[] = INCBIN_U32("graphics/event_objects/pics/people/gentleman/0.4bpp");
+const u32 gEventObjectPic_Gentleman_1[] = INCBIN_U32("graphics/event_objects/pics/people/gentleman/1.4bpp");
+const u32 gEventObjectPic_Gentleman_2[] = INCBIN_U32("graphics/event_objects/pics/people/gentleman/2.4bpp");
+const u32 gEventObjectPic_Gentleman_3[] = INCBIN_U32("graphics/event_objects/pics/people/gentleman/3.4bpp");
+const u32 gEventObjectPic_Gentleman_4[] = INCBIN_U32("graphics/event_objects/pics/people/gentleman/4.4bpp");
+const u32 gEventObjectPic_Gentleman_5[] = INCBIN_U32("graphics/event_objects/pics/people/gentleman/5.4bpp");
+const u32 gEventObjectPic_Gentleman_6[] = INCBIN_U32("graphics/event_objects/pics/people/gentleman/6.4bpp");
+const u32 gEventObjectPic_Gentleman_7[] = INCBIN_U32("graphics/event_objects/pics/people/gentleman/7.4bpp");
+const u32 gEventObjectPic_Gentleman_8[] = INCBIN_U32("graphics/event_objects/pics/people/gentleman/8.4bpp");
+const u32 gEventObjectPic_Sailor_0[] = INCBIN_U32("graphics/event_objects/pics/people/sailor/0.4bpp");
+const u32 gEventObjectPic_Sailor_1[] = INCBIN_U32("graphics/event_objects/pics/people/sailor/1.4bpp");
+const u32 gEventObjectPic_Sailor_2[] = INCBIN_U32("graphics/event_objects/pics/people/sailor/2.4bpp");
+const u32 gEventObjectPic_Sailor_3[] = INCBIN_U32("graphics/event_objects/pics/people/sailor/3.4bpp");
+const u32 gEventObjectPic_Sailor_4[] = INCBIN_U32("graphics/event_objects/pics/people/sailor/4.4bpp");
+const u32 gEventObjectPic_Sailor_5[] = INCBIN_U32("graphics/event_objects/pics/people/sailor/5.4bpp");
+const u32 gEventObjectPic_Sailor_6[] = INCBIN_U32("graphics/event_objects/pics/people/sailor/6.4bpp");
+const u32 gEventObjectPic_Sailor_7[] = INCBIN_U32("graphics/event_objects/pics/people/sailor/7.4bpp");
+const u32 gEventObjectPic_Sailor_8[] = INCBIN_U32("graphics/event_objects/pics/people/sailor/8.4bpp");
+const u32 gEventObjectPic_Fisherman_0[] = INCBIN_U32("graphics/event_objects/pics/people/fisherman/0.4bpp");
+const u32 gEventObjectPic_Fisherman_1[] = INCBIN_U32("graphics/event_objects/pics/people/fisherman/1.4bpp");
+const u32 gEventObjectPic_Fisherman_2[] = INCBIN_U32("graphics/event_objects/pics/people/fisherman/2.4bpp");
+const u32 gEventObjectPic_Fisherman_3[] = INCBIN_U32("graphics/event_objects/pics/people/fisherman/3.4bpp");
+const u32 gEventObjectPic_Fisherman_4[] = INCBIN_U32("graphics/event_objects/pics/people/fisherman/4.4bpp");
+const u32 gEventObjectPic_Fisherman_5[] = INCBIN_U32("graphics/event_objects/pics/people/fisherman/5.4bpp");
+const u32 gEventObjectPic_Fisherman_6[] = INCBIN_U32("graphics/event_objects/pics/people/fisherman/6.4bpp");
+const u32 gEventObjectPic_Fisherman_7[] = INCBIN_U32("graphics/event_objects/pics/people/fisherman/7.4bpp");
+const u32 gEventObjectPic_Fisherman_8[] = INCBIN_U32("graphics/event_objects/pics/people/fisherman/8.4bpp");
+const u32 gEventObjectPic_RunningTriathleteM_0[] = INCBIN_U32("graphics/event_objects/pics/people/running_triathlete_m/0.4bpp");
+const u32 gEventObjectPic_RunningTriathleteM_1[] = INCBIN_U32("graphics/event_objects/pics/people/running_triathlete_m/1.4bpp");
+const u32 gEventObjectPic_RunningTriathleteM_2[] = INCBIN_U32("graphics/event_objects/pics/people/running_triathlete_m/2.4bpp");
+const u32 gEventObjectPic_RunningTriathleteM_3[] = INCBIN_U32("graphics/event_objects/pics/people/running_triathlete_m/3.4bpp");
+const u32 gEventObjectPic_RunningTriathleteM_4[] = INCBIN_U32("graphics/event_objects/pics/people/running_triathlete_m/4.4bpp");
+const u32 gEventObjectPic_RunningTriathleteM_5[] = INCBIN_U32("graphics/event_objects/pics/people/running_triathlete_m/5.4bpp");
+const u32 gEventObjectPic_RunningTriathleteM_6[] = INCBIN_U32("graphics/event_objects/pics/people/running_triathlete_m/6.4bpp");
+const u32 gEventObjectPic_RunningTriathleteM_7[] = INCBIN_U32("graphics/event_objects/pics/people/running_triathlete_m/7.4bpp");
+const u32 gEventObjectPic_RunningTriathleteM_8[] = INCBIN_U32("graphics/event_objects/pics/people/running_triathlete_m/8.4bpp");
+const u32 gEventObjectPic_RunningTriathleteF_0[] = INCBIN_U32("graphics/event_objects/pics/people/running_triathlete_f/0.4bpp");
+const u32 gEventObjectPic_RunningTriathleteF_1[] = INCBIN_U32("graphics/event_objects/pics/people/running_triathlete_f/1.4bpp");
+const u32 gEventObjectPic_RunningTriathleteF_2[] = INCBIN_U32("graphics/event_objects/pics/people/running_triathlete_f/2.4bpp");
+const u32 gEventObjectPic_RunningTriathleteF_3[] = INCBIN_U32("graphics/event_objects/pics/people/running_triathlete_f/3.4bpp");
+const u32 gEventObjectPic_RunningTriathleteF_4[] = INCBIN_U32("graphics/event_objects/pics/people/running_triathlete_f/4.4bpp");
+const u32 gEventObjectPic_RunningTriathleteF_5[] = INCBIN_U32("graphics/event_objects/pics/people/running_triathlete_f/5.4bpp");
+const u32 gEventObjectPic_RunningTriathleteF_6[] = INCBIN_U32("graphics/event_objects/pics/people/running_triathlete_f/6.4bpp");
+const u32 gEventObjectPic_RunningTriathleteF_7[] = INCBIN_U32("graphics/event_objects/pics/people/running_triathlete_f/7.4bpp");
+const u32 gEventObjectPic_RunningTriathleteF_8[] = INCBIN_U32("graphics/event_objects/pics/people/running_triathlete_f/8.4bpp");
+const u32 gEventObjectPic_TuberF_0[] = INCBIN_U32("graphics/event_objects/pics/people/tuber_f/0.4bpp");
+const u32 gEventObjectPic_TuberF_1[] = INCBIN_U32("graphics/event_objects/pics/people/tuber_f/1.4bpp");
+const u32 gEventObjectPic_TuberF_2[] = INCBIN_U32("graphics/event_objects/pics/people/tuber_f/2.4bpp");
+const u32 gEventObjectPic_TuberF_3[] = INCBIN_U32("graphics/event_objects/pics/people/tuber_f/3.4bpp");
+const u32 gEventObjectPic_TuberF_4[] = INCBIN_U32("graphics/event_objects/pics/people/tuber_f/4.4bpp");
+const u32 gEventObjectPic_TuberF_5[] = INCBIN_U32("graphics/event_objects/pics/people/tuber_f/5.4bpp");
+const u32 gEventObjectPic_TuberF_6[] = INCBIN_U32("graphics/event_objects/pics/people/tuber_f/6.4bpp");
+const u32 gEventObjectPic_TuberF_7[] = INCBIN_U32("graphics/event_objects/pics/people/tuber_f/7.4bpp");
+const u32 gEventObjectPic_TuberF_8[] = INCBIN_U32("graphics/event_objects/pics/people/tuber_f/8.4bpp");
+const u32 gEventObjectPic_TuberM_0[] = INCBIN_U32("graphics/event_objects/pics/people/tuber_m/0.4bpp");
+const u32 gEventObjectPic_TuberM_1[] = INCBIN_U32("graphics/event_objects/pics/people/tuber_m/1.4bpp");
+const u32 gEventObjectPic_TuberM_2[] = INCBIN_U32("graphics/event_objects/pics/people/tuber_m/2.4bpp");
+const u32 gEventObjectPic_TuberM_3[] = INCBIN_U32("graphics/event_objects/pics/people/tuber_m/3.4bpp");
+const u32 gEventObjectPic_TuberM_4[] = INCBIN_U32("graphics/event_objects/pics/people/tuber_m/4.4bpp");
+const u32 gEventObjectPic_TuberM_5[] = INCBIN_U32("graphics/event_objects/pics/people/tuber_m/5.4bpp");
+const u32 gEventObjectPic_TuberM_6[] = INCBIN_U32("graphics/event_objects/pics/people/tuber_m/6.4bpp");
+const u32 gEventObjectPic_TuberM_7[] = INCBIN_U32("graphics/event_objects/pics/people/tuber_m/7.4bpp");
+const u32 gEventObjectPic_TuberM_8[] = INCBIN_U32("graphics/event_objects/pics/people/tuber_m/8.4bpp");
+const u32 gEventObjectPic_Hiker_0[] = INCBIN_U32("graphics/event_objects/pics/people/hiker/0.4bpp");
+const u32 gEventObjectPic_Hiker_1[] = INCBIN_U32("graphics/event_objects/pics/people/hiker/1.4bpp");
+const u32 gEventObjectPic_Hiker_2[] = INCBIN_U32("graphics/event_objects/pics/people/hiker/2.4bpp");
+const u32 gEventObjectPic_Hiker_3[] = INCBIN_U32("graphics/event_objects/pics/people/hiker/3.4bpp");
+const u32 gEventObjectPic_Hiker_4[] = INCBIN_U32("graphics/event_objects/pics/people/hiker/4.4bpp");
+const u32 gEventObjectPic_Hiker_5[] = INCBIN_U32("graphics/event_objects/pics/people/hiker/5.4bpp");
+const u32 gEventObjectPic_Hiker_6[] = INCBIN_U32("graphics/event_objects/pics/people/hiker/6.4bpp");
+const u32 gEventObjectPic_Hiker_7[] = INCBIN_U32("graphics/event_objects/pics/people/hiker/7.4bpp");
+const u32 gEventObjectPic_Hiker_8[] = INCBIN_U32("graphics/event_objects/pics/people/hiker/8.4bpp");
+const u32 gEventObjectPic_CyclingTriathleteM_0[] = INCBIN_U32("graphics/event_objects/pics/people/cycling_triathlete_m/0.4bpp");
+const u32 gEventObjectPic_CyclingTriathleteM_1[] = INCBIN_U32("graphics/event_objects/pics/people/cycling_triathlete_m/1.4bpp");
+const u32 gEventObjectPic_CyclingTriathleteM_2[] = INCBIN_U32("graphics/event_objects/pics/people/cycling_triathlete_m/2.4bpp");
+const u32 gEventObjectPic_CyclingTriathleteM_3[] = INCBIN_U32("graphics/event_objects/pics/people/cycling_triathlete_m/3.4bpp");
+const u32 gEventObjectPic_CyclingTriathleteM_4[] = INCBIN_U32("graphics/event_objects/pics/people/cycling_triathlete_m/4.4bpp");
+const u32 gEventObjectPic_CyclingTriathleteM_5[] = INCBIN_U32("graphics/event_objects/pics/people/cycling_triathlete_m/5.4bpp");
+const u32 gEventObjectPic_CyclingTriathleteM_6[] = INCBIN_U32("graphics/event_objects/pics/people/cycling_triathlete_m/6.4bpp");
+const u32 gEventObjectPic_CyclingTriathleteM_7[] = INCBIN_U32("graphics/event_objects/pics/people/cycling_triathlete_m/7.4bpp");
+const u32 gEventObjectPic_CyclingTriathleteM_8[] = INCBIN_U32("graphics/event_objects/pics/people/cycling_triathlete_m/8.4bpp");
+const u32 gEventObjectPic_CyclingTriathleteF_0[] = INCBIN_U32("graphics/event_objects/pics/people/cycling_triathlete_f/0.4bpp");
+const u32 gEventObjectPic_CyclingTriathleteF_1[] = INCBIN_U32("graphics/event_objects/pics/people/cycling_triathlete_f/1.4bpp");
+const u32 gEventObjectPic_CyclingTriathleteF_2[] = INCBIN_U32("graphics/event_objects/pics/people/cycling_triathlete_f/2.4bpp");
+const u32 gEventObjectPic_CyclingTriathleteF_3[] = INCBIN_U32("graphics/event_objects/pics/people/cycling_triathlete_f/3.4bpp");
+const u32 gEventObjectPic_CyclingTriathleteF_4[] = INCBIN_U32("graphics/event_objects/pics/people/cycling_triathlete_f/4.4bpp");
+const u32 gEventObjectPic_CyclingTriathleteF_5[] = INCBIN_U32("graphics/event_objects/pics/people/cycling_triathlete_f/5.4bpp");
+const u32 gEventObjectPic_CyclingTriathleteF_6[] = INCBIN_U32("graphics/event_objects/pics/people/cycling_triathlete_f/6.4bpp");
+const u32 gEventObjectPic_CyclingTriathleteF_7[] = INCBIN_U32("graphics/event_objects/pics/people/cycling_triathlete_f/7.4bpp");
+const u32 gEventObjectPic_CyclingTriathleteF_8[] = INCBIN_U32("graphics/event_objects/pics/people/cycling_triathlete_f/8.4bpp");
+const u32 gEventObjectPic_Man5_0[] = INCBIN_U32("graphics/event_objects/pics/people/man_5/0.4bpp");
+const u32 gEventObjectPic_Man5_1[] = INCBIN_U32("graphics/event_objects/pics/people/man_5/1.4bpp");
+const u32 gEventObjectPic_Man5_2[] = INCBIN_U32("graphics/event_objects/pics/people/man_5/2.4bpp");
+const u32 gEventObjectPic_Man5_3[] = INCBIN_U32("graphics/event_objects/pics/people/man_5/3.4bpp");
+const u32 gEventObjectPic_Man5_4[] = INCBIN_U32("graphics/event_objects/pics/people/man_5/4.4bpp");
+const u32 gEventObjectPic_Man5_5[] = INCBIN_U32("graphics/event_objects/pics/people/man_5/5.4bpp");
+const u32 gEventObjectPic_Man5_6[] = INCBIN_U32("graphics/event_objects/pics/people/man_5/6.4bpp");
+const u32 gEventObjectPic_Man5_7[] = INCBIN_U32("graphics/event_objects/pics/people/man_5/7.4bpp");
+const u32 gEventObjectPic_Man5_8[] = INCBIN_U32("graphics/event_objects/pics/people/man_5/8.4bpp");
+const u32 gEventObjectPic_Man6_0[] = INCBIN_U32("graphics/event_objects/pics/people/man_6/0.4bpp");
+const u32 gEventObjectPic_Man6_1[] = INCBIN_U32("graphics/event_objects/pics/people/man_6/1.4bpp");
+const u32 gEventObjectPic_Man6_2[] = INCBIN_U32("graphics/event_objects/pics/people/man_6/2.4bpp");
+const u32 gEventObjectPic_Man6_3[] = INCBIN_U32("graphics/event_objects/pics/people/man_6/3.4bpp");
+const u32 gEventObjectPic_Man6_4[] = INCBIN_U32("graphics/event_objects/pics/people/man_6/4.4bpp");
+const u32 gEventObjectPic_Man6_5[] = INCBIN_U32("graphics/event_objects/pics/people/man_6/5.4bpp");
+const u32 gEventObjectPic_Man6_6[] = INCBIN_U32("graphics/event_objects/pics/people/man_6/6.4bpp");
+const u32 gEventObjectPic_Man6_7[] = INCBIN_U32("graphics/event_objects/pics/people/man_6/7.4bpp");
+const u32 gEventObjectPic_Man6_8[] = INCBIN_U32("graphics/event_objects/pics/people/man_6/8.4bpp");
+const u32 gEventObjectPic_Nurse_0[] = INCBIN_U32("graphics/event_objects/pics/people/nurse/0.4bpp");
+const u32 gEventObjectPic_Nurse_1[] = INCBIN_U32("graphics/event_objects/pics/people/nurse/1.4bpp");
+const u32 gEventObjectPic_Nurse_2[] = INCBIN_U32("graphics/event_objects/pics/people/nurse/2.4bpp");
+const u32 gEventObjectPic_Nurse_3[] = INCBIN_U32("graphics/event_objects/pics/people/nurse/3.4bpp");
+const u32 gEventObjectPic_Nurse_4[] = INCBIN_U32("graphics/event_objects/pics/people/nurse/4.4bpp");
+const u32 gEventObjectPic_Nurse_5[] = INCBIN_U32("graphics/event_objects/pics/people/nurse/5.4bpp");
+const u32 gEventObjectPic_Nurse_6[] = INCBIN_U32("graphics/event_objects/pics/people/nurse/6.4bpp");
+const u32 gEventObjectPic_Nurse_7[] = INCBIN_U32("graphics/event_objects/pics/people/nurse/7.4bpp");
+const u32 gEventObjectPic_Nurse_8[] = INCBIN_U32("graphics/event_objects/pics/people/nurse/8.4bpp");
+const u32 gEventObjectPic_Nurse_9[] = INCBIN_U32("graphics/event_objects/pics/people/nurse/9.4bpp");
+const u32 gEventObjectPic_ItemBall[] = INCBIN_U32("graphics/event_objects/pics/misc/item_ball.4bpp");
+const u32 gEventObjectPic_ProfBirch_0[] = INCBIN_U32("graphics/event_objects/pics/people/prof_birch/0.4bpp");
+const u32 gEventObjectPic_ProfBirch_1[] = INCBIN_U32("graphics/event_objects/pics/people/prof_birch/1.4bpp");
+const u32 gEventObjectPic_ProfBirch_2[] = INCBIN_U32("graphics/event_objects/pics/people/prof_birch/2.4bpp");
+const u32 gEventObjectPic_ProfBirch_3[] = INCBIN_U32("graphics/event_objects/pics/people/prof_birch/3.4bpp");
+const u32 gEventObjectPic_ProfBirch_4[] = INCBIN_U32("graphics/event_objects/pics/people/prof_birch/4.4bpp");
+const u32 gEventObjectPic_ProfBirch_5[] = INCBIN_U32("graphics/event_objects/pics/people/prof_birch/5.4bpp");
+const u32 gEventObjectPic_ProfBirch_6[] = INCBIN_U32("graphics/event_objects/pics/people/prof_birch/6.4bpp");
+const u32 gEventObjectPic_ProfBirch_7[] = INCBIN_U32("graphics/event_objects/pics/people/prof_birch/7.4bpp");
+const u32 gEventObjectPic_ProfBirch_8[] = INCBIN_U32("graphics/event_objects/pics/people/prof_birch/8.4bpp");
+const u32 gEventObjectPic_ReporterM_0[] = INCBIN_U32("graphics/event_objects/pics/people/reporter_m/0.4bpp");
+const u32 gEventObjectPic_ReporterM_1[] = INCBIN_U32("graphics/event_objects/pics/people/reporter_m/1.4bpp");
+const u32 gEventObjectPic_ReporterM_2[] = INCBIN_U32("graphics/event_objects/pics/people/reporter_m/2.4bpp");
+const u32 gEventObjectPic_ReporterM_3[] = INCBIN_U32("graphics/event_objects/pics/people/reporter_m/3.4bpp");
+const u32 gEventObjectPic_ReporterM_4[] = INCBIN_U32("graphics/event_objects/pics/people/reporter_m/4.4bpp");
+const u32 gEventObjectPic_ReporterM_5[] = INCBIN_U32("graphics/event_objects/pics/people/reporter_m/5.4bpp");
+const u32 gEventObjectPic_ReporterM_6[] = INCBIN_U32("graphics/event_objects/pics/people/reporter_m/6.4bpp");
+const u32 gEventObjectPic_ReporterM_7[] = INCBIN_U32("graphics/event_objects/pics/people/reporter_m/7.4bpp");
+const u32 gEventObjectPic_ReporterM_8[] = INCBIN_U32("graphics/event_objects/pics/people/reporter_m/8.4bpp");
+const u32 gEventObjectPic_ReporterF_0[] = INCBIN_U32("graphics/event_objects/pics/people/reporter_f/0.4bpp");
+const u32 gEventObjectPic_ReporterF_1[] = INCBIN_U32("graphics/event_objects/pics/people/reporter_f/1.4bpp");
+const u32 gEventObjectPic_ReporterF_2[] = INCBIN_U32("graphics/event_objects/pics/people/reporter_f/2.4bpp");
+const u32 gEventObjectPic_ReporterF_3[] = INCBIN_U32("graphics/event_objects/pics/people/reporter_f/3.4bpp");
+const u32 gEventObjectPic_ReporterF_4[] = INCBIN_U32("graphics/event_objects/pics/people/reporter_f/4.4bpp");
+const u32 gEventObjectPic_ReporterF_5[] = INCBIN_U32("graphics/event_objects/pics/people/reporter_f/5.4bpp");
+const u32 gEventObjectPic_ReporterF_6[] = INCBIN_U32("graphics/event_objects/pics/people/reporter_f/6.4bpp");
+const u32 gEventObjectPic_ReporterF_7[] = INCBIN_U32("graphics/event_objects/pics/people/reporter_f/7.4bpp");
+const u32 gEventObjectPic_ReporterF_8[] = INCBIN_U32("graphics/event_objects/pics/people/reporter_f/8.4bpp");
+const u32 gEventObjectPic_MauvilleOldMan1_0[] = INCBIN_U32("graphics/event_objects/pics/people/mauville_old_man_1/0.4bpp");
+const u32 gEventObjectPic_MauvilleOldMan1_1[] = INCBIN_U32("graphics/event_objects/pics/people/mauville_old_man_1/1.4bpp");
+const u32 gEventObjectPic_MauvilleOldMan1_2[] = INCBIN_U32("graphics/event_objects/pics/people/mauville_old_man_1/2.4bpp");
+const u32 gEventObjectPic_MauvilleOldMan1_3[] = INCBIN_U32("graphics/event_objects/pics/people/mauville_old_man_1/3.4bpp");
+const u32 gEventObjectPic_MauvilleOldMan1_4[] = INCBIN_U32("graphics/event_objects/pics/people/mauville_old_man_1/4.4bpp");
+const u32 gEventObjectPic_MauvilleOldMan1_5[] = INCBIN_U32("graphics/event_objects/pics/people/mauville_old_man_1/5.4bpp");
+const u32 gEventObjectPic_MauvilleOldMan1_6[] = INCBIN_U32("graphics/event_objects/pics/people/mauville_old_man_1/6.4bpp");
+const u32 gEventObjectPic_MauvilleOldMan1_7[] = INCBIN_U32("graphics/event_objects/pics/people/mauville_old_man_1/7.4bpp");
+const u32 gEventObjectPic_MauvilleOldMan1_8[] = INCBIN_U32("graphics/event_objects/pics/people/mauville_old_man_1/8.4bpp");
+const u32 gEventObjectPic_MauvilleOldMan2_0[] = INCBIN_U32("graphics/event_objects/pics/people/mauville_old_man_2/0.4bpp");
+const u32 gEventObjectPic_MauvilleOldMan2_1[] = INCBIN_U32("graphics/event_objects/pics/people/mauville_old_man_2/1.4bpp");
+const u32 gEventObjectPic_MauvilleOldMan2_2[] = INCBIN_U32("graphics/event_objects/pics/people/mauville_old_man_2/2.4bpp");
+const u32 gEventObjectPic_MauvilleOldMan2_3[] = INCBIN_U32("graphics/event_objects/pics/people/mauville_old_man_2/3.4bpp");
+const u32 gEventObjectPic_MauvilleOldMan2_4[] = INCBIN_U32("graphics/event_objects/pics/people/mauville_old_man_2/4.4bpp");
+const u32 gEventObjectPic_MauvilleOldMan2_5[] = INCBIN_U32("graphics/event_objects/pics/people/mauville_old_man_2/5.4bpp");
+const u32 gEventObjectPic_MauvilleOldMan2_6[] = INCBIN_U32("graphics/event_objects/pics/people/mauville_old_man_2/6.4bpp");
+const u32 gEventObjectPic_MauvilleOldMan2_7[] = INCBIN_U32("graphics/event_objects/pics/people/mauville_old_man_2/7.4bpp");
+const u32 gEventObjectPic_MauvilleOldMan2_8[] = INCBIN_U32("graphics/event_objects/pics/people/mauville_old_man_2/8.4bpp");
+const u32 gEventObjectPic_MartEmployee_0[] = INCBIN_U32("graphics/event_objects/pics/people/mart_employee/0.4bpp");
+const u32 gEventObjectPic_MartEmployee_1[] = INCBIN_U32("graphics/event_objects/pics/people/mart_employee/1.4bpp");
+const u32 gEventObjectPic_MartEmployee_2[] = INCBIN_U32("graphics/event_objects/pics/people/mart_employee/2.4bpp");
+const u32 gEventObjectPic_MartEmployee_3[] = INCBIN_U32("graphics/event_objects/pics/people/mart_employee/3.4bpp");
+const u32 gEventObjectPic_MartEmployee_4[] = INCBIN_U32("graphics/event_objects/pics/people/mart_employee/4.4bpp");
+const u32 gEventObjectPic_MartEmployee_5[] = INCBIN_U32("graphics/event_objects/pics/people/mart_employee/5.4bpp");
+const u32 gEventObjectPic_MartEmployee_6[] = INCBIN_U32("graphics/event_objects/pics/people/mart_employee/6.4bpp");
+const u32 gEventObjectPic_MartEmployee_7[] = INCBIN_U32("graphics/event_objects/pics/people/mart_employee/7.4bpp");
+const u32 gEventObjectPic_MartEmployee_8[] = INCBIN_U32("graphics/event_objects/pics/people/mart_employee/8.4bpp");
+const u32 gEventObjectPic_RooftopSaleWoman_0[] = INCBIN_U32("graphics/event_objects/pics/people/rooftop_sale_woman/0.4bpp");
+const u32 gEventObjectPic_RooftopSaleWoman_1[] = INCBIN_U32("graphics/event_objects/pics/people/rooftop_sale_woman/1.4bpp");
+const u32 gEventObjectPic_RooftopSaleWoman_2[] = INCBIN_U32("graphics/event_objects/pics/people/rooftop_sale_woman/2.4bpp");
+const u32 gEventObjectPic_RooftopSaleWoman_3[] = INCBIN_U32("graphics/event_objects/pics/people/rooftop_sale_woman/3.4bpp");
+const u32 gEventObjectPic_RooftopSaleWoman_4[] = INCBIN_U32("graphics/event_objects/pics/people/rooftop_sale_woman/4.4bpp");
+const u32 gEventObjectPic_RooftopSaleWoman_5[] = INCBIN_U32("graphics/event_objects/pics/people/rooftop_sale_woman/5.4bpp");
+const u32 gEventObjectPic_RooftopSaleWoman_6[] = INCBIN_U32("graphics/event_objects/pics/people/rooftop_sale_woman/6.4bpp");
+const u32 gEventObjectPic_RooftopSaleWoman_7[] = INCBIN_U32("graphics/event_objects/pics/people/rooftop_sale_woman/7.4bpp");
+const u32 gEventObjectPic_RooftopSaleWoman_8[] = INCBIN_U32("graphics/event_objects/pics/people/rooftop_sale_woman/8.4bpp");
+const u32 gEventObjectPic_Teala_0[] = INCBIN_U32("graphics/event_objects/pics/people/teala/0.4bpp");
+const u32 gEventObjectPic_Teala_1[] = INCBIN_U32("graphics/event_objects/pics/people/teala/1.4bpp");
+const u32 gEventObjectPic_Teala_2[] = INCBIN_U32("graphics/event_objects/pics/people/teala/2.4bpp");
+const u32 gEventObjectPic_Teala_3[] = INCBIN_U32("graphics/event_objects/pics/people/teala/3.4bpp");
+const u32 gEventObjectPic_Teala_4[] = INCBIN_U32("graphics/event_objects/pics/people/teala/4.4bpp");
+const u32 gEventObjectPic_Teala_5[] = INCBIN_U32("graphics/event_objects/pics/people/teala/5.4bpp");
+const u32 gEventObjectPic_Teala_6[] = INCBIN_U32("graphics/event_objects/pics/people/teala/6.4bpp");
+const u32 gEventObjectPic_Teala_7[] = INCBIN_U32("graphics/event_objects/pics/people/teala/7.4bpp");
+const u32 gEventObjectPic_Teala_8[] = INCBIN_U32("graphics/event_objects/pics/people/teala/8.4bpp");
+const u32 gEventObjectPic_Artist_0[] = INCBIN_U32("graphics/event_objects/pics/people/artist/0.4bpp");
+const u32 gEventObjectPic_Artist_1[] = INCBIN_U32("graphics/event_objects/pics/people/artist/1.4bpp");
+const u32 gEventObjectPic_Artist_2[] = INCBIN_U32("graphics/event_objects/pics/people/artist/2.4bpp");
+const u32 gEventObjectPic_Artist_3[] = INCBIN_U32("graphics/event_objects/pics/people/artist/3.4bpp");
+const u32 gEventObjectPic_Artist_4[] = INCBIN_U32("graphics/event_objects/pics/people/artist/4.4bpp");
+const u32 gEventObjectPic_Artist_5[] = INCBIN_U32("graphics/event_objects/pics/people/artist/5.4bpp");
+const u32 gEventObjectPic_Artist_6[] = INCBIN_U32("graphics/event_objects/pics/people/artist/6.4bpp");
+const u32 gEventObjectPic_Artist_7[] = INCBIN_U32("graphics/event_objects/pics/people/artist/7.4bpp");
+const u32 gEventObjectPic_Artist_8[] = INCBIN_U32("graphics/event_objects/pics/people/artist/8.4bpp");
+const u32 gEventObjectPic_Cameraman_0[] = INCBIN_U32("graphics/event_objects/pics/people/cameraman/0.4bpp");
+const u32 gEventObjectPic_Cameraman_1[] = INCBIN_U32("graphics/event_objects/pics/people/cameraman/1.4bpp");
+const u32 gEventObjectPic_Cameraman_2[] = INCBIN_U32("graphics/event_objects/pics/people/cameraman/2.4bpp");
+const u32 gEventObjectPic_Cameraman_3[] = INCBIN_U32("graphics/event_objects/pics/people/cameraman/3.4bpp");
+const u32 gEventObjectPic_Cameraman_4[] = INCBIN_U32("graphics/event_objects/pics/people/cameraman/4.4bpp");
+const u32 gEventObjectPic_Cameraman_5[] = INCBIN_U32("graphics/event_objects/pics/people/cameraman/5.4bpp");
+const u32 gEventObjectPic_Cameraman_6[] = INCBIN_U32("graphics/event_objects/pics/people/cameraman/6.4bpp");
+const u32 gEventObjectPic_Cameraman_7[] = INCBIN_U32("graphics/event_objects/pics/people/cameraman/7.4bpp");
+const u32 gEventObjectPic_Cameraman_8[] = INCBIN_U32("graphics/event_objects/pics/people/cameraman/8.4bpp");
+const u32 gEventObjectPic_Scientist2_0[] = INCBIN_U32("graphics/event_objects/pics/people/scientist_2/0.4bpp");
+const u32 gEventObjectPic_Scientist2_1[] = INCBIN_U32("graphics/event_objects/pics/people/scientist_2/1.4bpp");
+const u32 gEventObjectPic_Scientist2_2[] = INCBIN_U32("graphics/event_objects/pics/people/scientist_2/2.4bpp");
+const u32 gEventObjectPic_Scientist2_3[] = INCBIN_U32("graphics/event_objects/pics/people/scientist_2/3.4bpp");
+const u32 gEventObjectPic_Scientist2_4[] = INCBIN_U32("graphics/event_objects/pics/people/scientist_2/4.4bpp");
+const u32 gEventObjectPic_Scientist2_5[] = INCBIN_U32("graphics/event_objects/pics/people/scientist_2/5.4bpp");
+const u32 gEventObjectPic_Scientist2_6[] = INCBIN_U32("graphics/event_objects/pics/people/scientist_2/6.4bpp");
+const u32 gEventObjectPic_Scientist2_7[] = INCBIN_U32("graphics/event_objects/pics/people/scientist_2/7.4bpp");
+const u32 gEventObjectPic_Scientist2_8[] = INCBIN_U32("graphics/event_objects/pics/people/scientist_2/8.4bpp");
+const u32 gEventObjectPic_Man7_0[] = INCBIN_U32("graphics/event_objects/pics/people/man_7/0.4bpp");
+const u32 gEventObjectPic_Man7_1[] = INCBIN_U32("graphics/event_objects/pics/people/man_7/1.4bpp");
+const u32 gEventObjectPic_Man7_2[] = INCBIN_U32("graphics/event_objects/pics/people/man_7/2.4bpp");
+const u32 gEventObjectPic_Man7_3[] = INCBIN_U32("graphics/event_objects/pics/people/man_7/3.4bpp");
+const u32 gEventObjectPic_Man7_4[] = INCBIN_U32("graphics/event_objects/pics/people/man_7/4.4bpp");
+const u32 gEventObjectPic_Man7_5[] = INCBIN_U32("graphics/event_objects/pics/people/man_7/5.4bpp");
+const u32 gEventObjectPic_Man7_6[] = INCBIN_U32("graphics/event_objects/pics/people/man_7/6.4bpp");
+const u32 gEventObjectPic_Man7_7[] = INCBIN_U32("graphics/event_objects/pics/people/man_7/7.4bpp");
+const u32 gEventObjectPic_Man7_8[] = INCBIN_U32("graphics/event_objects/pics/people/man_7/8.4bpp");
+const u32 gEventObjectPic_AquaMemberM_0[] = INCBIN_U32("graphics/event_objects/pics/people/aqua_member_m/0.4bpp");
+const u32 gEventObjectPic_AquaMemberM_1[] = INCBIN_U32("graphics/event_objects/pics/people/aqua_member_m/1.4bpp");
+const u32 gEventObjectPic_AquaMemberM_2[] = INCBIN_U32("graphics/event_objects/pics/people/aqua_member_m/2.4bpp");
+const u32 gEventObjectPic_AquaMemberM_3[] = INCBIN_U32("graphics/event_objects/pics/people/aqua_member_m/3.4bpp");
+const u32 gEventObjectPic_AquaMemberM_4[] = INCBIN_U32("graphics/event_objects/pics/people/aqua_member_m/4.4bpp");
+const u32 gEventObjectPic_AquaMemberM_5[] = INCBIN_U32("graphics/event_objects/pics/people/aqua_member_m/5.4bpp");
+const u32 gEventObjectPic_AquaMemberM_6[] = INCBIN_U32("graphics/event_objects/pics/people/aqua_member_m/6.4bpp");
+const u32 gEventObjectPic_AquaMemberM_7[] = INCBIN_U32("graphics/event_objects/pics/people/aqua_member_m/7.4bpp");
+const u32 gEventObjectPic_AquaMemberM_8[] = INCBIN_U32("graphics/event_objects/pics/people/aqua_member_m/8.4bpp");
+const u32 gEventObjectPic_AquaMemberF_0[] = INCBIN_U32("graphics/event_objects/pics/people/aqua_member_f/0.4bpp");
+const u32 gEventObjectPic_AquaMemberF_1[] = INCBIN_U32("graphics/event_objects/pics/people/aqua_member_f/1.4bpp");
+const u32 gEventObjectPic_AquaMemberF_2[] = INCBIN_U32("graphics/event_objects/pics/people/aqua_member_f/2.4bpp");
+const u32 gEventObjectPic_AquaMemberF_3[] = INCBIN_U32("graphics/event_objects/pics/people/aqua_member_f/3.4bpp");
+const u32 gEventObjectPic_AquaMemberF_4[] = INCBIN_U32("graphics/event_objects/pics/people/aqua_member_f/4.4bpp");
+const u32 gEventObjectPic_AquaMemberF_5[] = INCBIN_U32("graphics/event_objects/pics/people/aqua_member_f/5.4bpp");
+const u32 gEventObjectPic_AquaMemberF_6[] = INCBIN_U32("graphics/event_objects/pics/people/aqua_member_f/6.4bpp");
+const u32 gEventObjectPic_AquaMemberF_7[] = INCBIN_U32("graphics/event_objects/pics/people/aqua_member_f/7.4bpp");
+const u32 gEventObjectPic_AquaMemberF_8[] = INCBIN_U32("graphics/event_objects/pics/people/aqua_member_f/8.4bpp");
+const u32 gEventObjectPic_MagmaMemberM_0[] = INCBIN_U32("graphics/event_objects/pics/people/magma_member_m/0.4bpp");
+const u32 gEventObjectPic_MagmaMemberM_1[] = INCBIN_U32("graphics/event_objects/pics/people/magma_member_m/1.4bpp");
+const u32 gEventObjectPic_MagmaMemberM_2[] = INCBIN_U32("graphics/event_objects/pics/people/magma_member_m/2.4bpp");
+const u32 gEventObjectPic_MagmaMemberM_3[] = INCBIN_U32("graphics/event_objects/pics/people/magma_member_m/3.4bpp");
+const u32 gEventObjectPic_MagmaMemberM_4[] = INCBIN_U32("graphics/event_objects/pics/people/magma_member_m/4.4bpp");
+const u32 gEventObjectPic_MagmaMemberM_5[] = INCBIN_U32("graphics/event_objects/pics/people/magma_member_m/5.4bpp");
+const u32 gEventObjectPic_MagmaMemberM_6[] = INCBIN_U32("graphics/event_objects/pics/people/magma_member_m/6.4bpp");
+const u32 gEventObjectPic_MagmaMemberM_7[] = INCBIN_U32("graphics/event_objects/pics/people/magma_member_m/7.4bpp");
+const u32 gEventObjectPic_MagmaMemberM_8[] = INCBIN_U32("graphics/event_objects/pics/people/magma_member_m/8.4bpp");
+const u32 gEventObjectPic_MagmaMemberF_0[] = INCBIN_U32("graphics/event_objects/pics/people/magma_member_f/0.4bpp");
+const u32 gEventObjectPic_MagmaMemberF_1[] = INCBIN_U32("graphics/event_objects/pics/people/magma_member_f/1.4bpp");
+const u32 gEventObjectPic_MagmaMemberF_2[] = INCBIN_U32("graphics/event_objects/pics/people/magma_member_f/2.4bpp");
+const u32 gEventObjectPic_MagmaMemberF_3[] = INCBIN_U32("graphics/event_objects/pics/people/magma_member_f/3.4bpp");
+const u32 gEventObjectPic_MagmaMemberF_4[] = INCBIN_U32("graphics/event_objects/pics/people/magma_member_f/4.4bpp");
+const u32 gEventObjectPic_MagmaMemberF_5[] = INCBIN_U32("graphics/event_objects/pics/people/magma_member_f/5.4bpp");
+const u32 gEventObjectPic_MagmaMemberF_6[] = INCBIN_U32("graphics/event_objects/pics/people/magma_member_f/6.4bpp");
+const u32 gEventObjectPic_MagmaMemberF_7[] = INCBIN_U32("graphics/event_objects/pics/people/magma_member_f/7.4bpp");
+const u32 gEventObjectPic_MagmaMemberF_8[] = INCBIN_U32("graphics/event_objects/pics/people/magma_member_f/8.4bpp");
+const u32 gEventObjectPic_Sidney_0[] = INCBIN_U32("graphics/event_objects/pics/people/sidney/0.4bpp");
+const u32 gEventObjectPic_Sidney_1[] = INCBIN_U32("graphics/event_objects/pics/people/sidney/1.4bpp");
+const u32 gEventObjectPic_Sidney_2[] = INCBIN_U32("graphics/event_objects/pics/people/sidney/2.4bpp");
+const u32 gEventObjectPic_Phoebe_0[] = INCBIN_U32("graphics/event_objects/pics/people/phoebe/0.4bpp");
+const u32 gEventObjectPic_Phoebe_1[] = INCBIN_U32("graphics/event_objects/pics/people/phoebe/1.4bpp");
+const u32 gEventObjectPic_Phoebe_2[] = INCBIN_U32("graphics/event_objects/pics/people/phoebe/2.4bpp");
+const u32 gEventObjectPic_Glacia_0[] = INCBIN_U32("graphics/event_objects/pics/people/glacia/0.4bpp");
+const u32 gEventObjectPic_Glacia_1[] = INCBIN_U32("graphics/event_objects/pics/people/glacia/1.4bpp");
+const u32 gEventObjectPic_Glacia_2[] = INCBIN_U32("graphics/event_objects/pics/people/glacia/2.4bpp");
+const u32 gEventObjectPic_Drake_0[] = INCBIN_U32("graphics/event_objects/pics/people/drake/0.4bpp");
+const u32 gEventObjectPic_Drake_1[] = INCBIN_U32("graphics/event_objects/pics/people/drake/1.4bpp");
+const u32 gEventObjectPic_Drake_2[] = INCBIN_U32("graphics/event_objects/pics/people/drake/2.4bpp");
+const u32 gEventObjectPic_Roxanne_0[] = INCBIN_U32("graphics/event_objects/pics/people/roxanne/0.4bpp");
+const u32 gEventObjectPic_Roxanne_1[] = INCBIN_U32("graphics/event_objects/pics/people/roxanne/1.4bpp");
+const u32 gEventObjectPic_Roxanne_2[] = INCBIN_U32("graphics/event_objects/pics/people/roxanne/2.4bpp");
+const u32 gEventObjectPic_Brawly_0[] = INCBIN_U32("graphics/event_objects/pics/people/brawly/0.4bpp");
+const u32 gEventObjectPic_Brawly_1[] = INCBIN_U32("graphics/event_objects/pics/people/brawly/1.4bpp");
+const u32 gEventObjectPic_Brawly_2[] = INCBIN_U32("graphics/event_objects/pics/people/brawly/2.4bpp");
+const u32 gEventObjectPic_Wattson_0[] = INCBIN_U32("graphics/event_objects/pics/people/wattson/0.4bpp");
+const u32 gEventObjectPic_Wattson_1[] = INCBIN_U32("graphics/event_objects/pics/people/wattson/1.4bpp");
+const u32 gEventObjectPic_Wattson_2[] = INCBIN_U32("graphics/event_objects/pics/people/wattson/2.4bpp");
+const u32 gEventObjectPic_Flannery_0[] = INCBIN_U32("graphics/event_objects/pics/people/flannery/0.4bpp");
+const u32 gEventObjectPic_Flannery_1[] = INCBIN_U32("graphics/event_objects/pics/people/flannery/1.4bpp");
+const u32 gEventObjectPic_Flannery_2[] = INCBIN_U32("graphics/event_objects/pics/people/flannery/2.4bpp");
+const u32 gEventObjectPic_Norman_0[] = INCBIN_U32("graphics/event_objects/pics/people/norman/0.4bpp");
+const u32 gEventObjectPic_Norman_1[] = INCBIN_U32("graphics/event_objects/pics/people/norman/1.4bpp");
+const u32 gEventObjectPic_Norman_2[] = INCBIN_U32("graphics/event_objects/pics/people/norman/2.4bpp");
+const u32 gEventObjectPic_Norman_3[] = INCBIN_U32("graphics/event_objects/pics/people/norman/3.4bpp");
+const u32 gEventObjectPic_Norman_4[] = INCBIN_U32("graphics/event_objects/pics/people/norman/4.4bpp");
+const u32 gEventObjectPic_Norman_5[] = INCBIN_U32("graphics/event_objects/pics/people/norman/5.4bpp");
+const u32 gEventObjectPic_Norman_6[] = INCBIN_U32("graphics/event_objects/pics/people/norman/6.4bpp");
+const u32 gEventObjectPic_Norman_7[] = INCBIN_U32("graphics/event_objects/pics/people/norman/7.4bpp");
+const u32 gEventObjectPic_Norman_8[] = INCBIN_U32("graphics/event_objects/pics/people/norman/8.4bpp");
+const u32 gEventObjectPic_Winona_0[] = INCBIN_U32("graphics/event_objects/pics/people/winona/0.4bpp");
+const u32 gEventObjectPic_Winona_1[] = INCBIN_U32("graphics/event_objects/pics/people/winona/1.4bpp");
+const u32 gEventObjectPic_Winona_2[] = INCBIN_U32("graphics/event_objects/pics/people/winona/2.4bpp");
+const u32 gEventObjectPic_Liza_0[] = INCBIN_U32("graphics/event_objects/pics/people/liza/0.4bpp");
+const u32 gEventObjectPic_Liza_1[] = INCBIN_U32("graphics/event_objects/pics/people/liza/1.4bpp");
+const u32 gEventObjectPic_Liza_2[] = INCBIN_U32("graphics/event_objects/pics/people/liza/2.4bpp");
+const u32 gEventObjectPic_Tate_0[] = INCBIN_U32("graphics/event_objects/pics/people/tate/0.4bpp");
+const u32 gEventObjectPic_Tate_1[] = INCBIN_U32("graphics/event_objects/pics/people/tate/1.4bpp");
+const u32 gEventObjectPic_Tate_2[] = INCBIN_U32("graphics/event_objects/pics/people/tate/2.4bpp");
+const u32 gEventObjectPic_Wallace_0[] = INCBIN_U32("graphics/event_objects/pics/people/wallace/0.4bpp");
+const u32 gEventObjectPic_Wallace_1[] = INCBIN_U32("graphics/event_objects/pics/people/wallace/1.4bpp");
+const u32 gEventObjectPic_Wallace_2[] = INCBIN_U32("graphics/event_objects/pics/people/wallace/2.4bpp");
+const u32 gEventObjectPic_Wallace_3[] = INCBIN_U32("graphics/event_objects/pics/people/wallace/3.4bpp");
+const u32 gEventObjectPic_Wallace_4[] = INCBIN_U32("graphics/event_objects/pics/people/wallace/4.4bpp");
+const u32 gEventObjectPic_Wallace_5[] = INCBIN_U32("graphics/event_objects/pics/people/wallace/5.4bpp");
+const u32 gEventObjectPic_Wallace_6[] = INCBIN_U32("graphics/event_objects/pics/people/wallace/6.4bpp");
+const u32 gEventObjectPic_Wallace_7[] = INCBIN_U32("graphics/event_objects/pics/people/wallace/7.4bpp");
+const u32 gEventObjectPic_Wallace_8[] = INCBIN_U32("graphics/event_objects/pics/people/wallace/8.4bpp");
+const u32 gEventObjectPic_Steven_0[] = INCBIN_U32("graphics/event_objects/pics/people/steven/0.4bpp");
+const u32 gEventObjectPic_Steven_1[] = INCBIN_U32("graphics/event_objects/pics/people/steven/1.4bpp");
+const u32 gEventObjectPic_Steven_2[] = INCBIN_U32("graphics/event_objects/pics/people/steven/2.4bpp");
+const u32 gEventObjectPic_Steven_3[] = INCBIN_U32("graphics/event_objects/pics/people/steven/3.4bpp");
+const u32 gEventObjectPic_Steven_4[] = INCBIN_U32("graphics/event_objects/pics/people/steven/4.4bpp");
+const u32 gEventObjectPic_Steven_5[] = INCBIN_U32("graphics/event_objects/pics/people/steven/5.4bpp");
+const u32 gEventObjectPic_Steven_6[] = INCBIN_U32("graphics/event_objects/pics/people/steven/6.4bpp");
+const u32 gEventObjectPic_Steven_7[] = INCBIN_U32("graphics/event_objects/pics/people/steven/7.4bpp");
+const u32 gEventObjectPic_Steven_8[] = INCBIN_U32("graphics/event_objects/pics/people/steven/8.4bpp");
+const u32 gEventObjectPic_Wally_0[] = INCBIN_U32("graphics/event_objects/pics/people/wally/0.4bpp");
+const u32 gEventObjectPic_Wally_1[] = INCBIN_U32("graphics/event_objects/pics/people/wally/1.4bpp");
+const u32 gEventObjectPic_Wally_2[] = INCBIN_U32("graphics/event_objects/pics/people/wally/2.4bpp");
+const u32 gEventObjectPic_Wally_3[] = INCBIN_U32("graphics/event_objects/pics/people/wally/3.4bpp");
+const u32 gEventObjectPic_Wally_4[] = INCBIN_U32("graphics/event_objects/pics/people/wally/4.4bpp");
+const u32 gEventObjectPic_Wally_5[] = INCBIN_U32("graphics/event_objects/pics/people/wally/5.4bpp");
+const u32 gEventObjectPic_Wally_6[] = INCBIN_U32("graphics/event_objects/pics/people/wally/6.4bpp");
+const u32 gEventObjectPic_Wally_7[] = INCBIN_U32("graphics/event_objects/pics/people/wally/7.4bpp");
+const u32 gEventObjectPic_Wally_8[] = INCBIN_U32("graphics/event_objects/pics/people/wally/8.4bpp");
+const u32 gEventObjectPic_LittleBoy3_0[] = INCBIN_U32("graphics/event_objects/pics/people/little_boy_3/0.4bpp");
+const u32 gEventObjectPic_LittleBoy3_1[] = INCBIN_U32("graphics/event_objects/pics/people/little_boy_3/1.4bpp");
+const u32 gEventObjectPic_LittleBoy3_2[] = INCBIN_U32("graphics/event_objects/pics/people/little_boy_3/2.4bpp");
+const u32 gEventObjectPic_LittleBoy3_3[] = INCBIN_U32("graphics/event_objects/pics/people/little_boy_3/3.4bpp");
+const u32 gEventObjectPic_LittleBoy3_4[] = INCBIN_U32("graphics/event_objects/pics/people/little_boy_3/4.4bpp");
+const u32 gEventObjectPic_LittleBoy3_5[] = INCBIN_U32("graphics/event_objects/pics/people/little_boy_3/5.4bpp");
+const u32 gEventObjectPic_LittleBoy3_6[] = INCBIN_U32("graphics/event_objects/pics/people/little_boy_3/6.4bpp");
+const u32 gEventObjectPic_LittleBoy3_7[] = INCBIN_U32("graphics/event_objects/pics/people/little_boy_3/7.4bpp");
+const u32 gEventObjectPic_LittleBoy3_8[] = INCBIN_U32("graphics/event_objects/pics/people/little_boy_3/8.4bpp");
+const u32 gEventObjectPic_HotSpringsOldWoman_0[] = INCBIN_U32("graphics/event_objects/pics/people/hot_springs_old_woman/0.4bpp");
+const u32 gEventObjectPic_HotSpringsOldWoman_1[] = INCBIN_U32("graphics/event_objects/pics/people/hot_springs_old_woman/1.4bpp");
+const u32 gEventObjectPic_HotSpringsOldWoman_2[] = INCBIN_U32("graphics/event_objects/pics/people/hot_springs_old_woman/2.4bpp");
+const u32 gEventObjectPic_HotSpringsOldWoman_3[] = INCBIN_U32("graphics/event_objects/pics/people/hot_springs_old_woman/3.4bpp");
+const u32 gEventObjectPic_HotSpringsOldWoman_4[] = INCBIN_U32("graphics/event_objects/pics/people/hot_springs_old_woman/4.4bpp");
+const u32 gEventObjectPic_HotSpringsOldWoman_5[] = INCBIN_U32("graphics/event_objects/pics/people/hot_springs_old_woman/5.4bpp");
+const u32 gEventObjectPic_HotSpringsOldWoman_6[] = INCBIN_U32("graphics/event_objects/pics/people/hot_springs_old_woman/6.4bpp");
+const u32 gEventObjectPic_HotSpringsOldWoman_7[] = INCBIN_U32("graphics/event_objects/pics/people/hot_springs_old_woman/7.4bpp");
+const u32 gEventObjectPic_HotSpringsOldWoman_8[] = INCBIN_U32("graphics/event_objects/pics/people/hot_springs_old_woman/8.4bpp");
+const u32 gEventObjectPic_LatiasLatios_0[] = INCBIN_U32("graphics/event_objects/pics/pokemon/latias_latios/0.4bpp");
+const u32 gEventObjectPic_LatiasLatios_1[] = INCBIN_U32("graphics/event_objects/pics/pokemon/latias_latios/1.4bpp");
+const u32 gEventObjectPic_LatiasLatios_2[] = INCBIN_U32("graphics/event_objects/pics/pokemon/latias_latios/2.4bpp");
+const u32 gEventObjectPic_Boy5_0[] = INCBIN_U32("graphics/event_objects/pics/people/boy_5/0.4bpp");
+const u32 gEventObjectPic_Boy5_1[] = INCBIN_U32("graphics/event_objects/pics/people/boy_5/1.4bpp");
+const u32 gEventObjectPic_Boy5_2[] = INCBIN_U32("graphics/event_objects/pics/people/boy_5/2.4bpp");
+const u32 gEventObjectPic_ContestJudge_0[] = INCBIN_U32("graphics/event_objects/pics/people/contest_judge/0.4bpp");
+const u32 gEventObjectPic_ContestJudge_1[] = INCBIN_U32("graphics/event_objects/pics/people/contest_judge/1.4bpp");
+const u32 gEventObjectPic_ContestJudge_2[] = INCBIN_U32("graphics/event_objects/pics/people/contest_judge/2.4bpp");
+const u32 gEventObjectPic_ContestJudge_3[] = INCBIN_U32("graphics/event_objects/pics/people/contest_judge/3.4bpp");
+const u32 gEventObjectPic_ContestJudge_4[] = INCBIN_U32("graphics/event_objects/pics/people/contest_judge/4.4bpp");
+const u32 gEventObjectPic_ContestJudge_5[] = INCBIN_U32("graphics/event_objects/pics/people/contest_judge/5.4bpp");
+const u32 gEventObjectPic_ContestJudge_6[] = INCBIN_U32("graphics/event_objects/pics/people/contest_judge/6.4bpp");
+const u32 gEventObjectPic_ContestJudge_7[] = INCBIN_U32("graphics/event_objects/pics/people/contest_judge/7.4bpp");
+const u32 gEventObjectPic_ContestJudge_8[] = INCBIN_U32("graphics/event_objects/pics/people/contest_judge/8.4bpp");
+const u32 gEventObjectPic_Archie_0[] = INCBIN_U32("graphics/event_objects/pics/people/archie/0.4bpp");
+const u32 gEventObjectPic_Archie_1[] = INCBIN_U32("graphics/event_objects/pics/people/archie/1.4bpp");
+const u32 gEventObjectPic_Archie_2[] = INCBIN_U32("graphics/event_objects/pics/people/archie/2.4bpp");
+const u32 gEventObjectPic_Archie_3[] = INCBIN_U32("graphics/event_objects/pics/people/archie/3.4bpp");
+const u32 gEventObjectPic_Archie_4[] = INCBIN_U32("graphics/event_objects/pics/people/archie/4.4bpp");
+const u32 gEventObjectPic_Archie_5[] = INCBIN_U32("graphics/event_objects/pics/people/archie/5.4bpp");
+const u32 gEventObjectPic_Archie_6[] = INCBIN_U32("graphics/event_objects/pics/people/archie/6.4bpp");
+const u32 gEventObjectPic_Archie_7[] = INCBIN_U32("graphics/event_objects/pics/people/archie/7.4bpp");
+const u32 gEventObjectPic_Archie_8[] = INCBIN_U32("graphics/event_objects/pics/people/archie/8.4bpp");
+const u32 gEventObjectPic_Maxie_0[] = INCBIN_U32("graphics/event_objects/pics/people/maxie/0.4bpp");
+const u32 gEventObjectPic_Maxie_1[] = INCBIN_U32("graphics/event_objects/pics/people/maxie/1.4bpp");
+const u32 gEventObjectPic_Maxie_2[] = INCBIN_U32("graphics/event_objects/pics/people/maxie/2.4bpp");
+const u32 gEventObjectPic_Maxie_3[] = INCBIN_U32("graphics/event_objects/pics/people/maxie/3.4bpp");
+const u32 gEventObjectPic_Maxie_4[] = INCBIN_U32("graphics/event_objects/pics/people/maxie/4.4bpp");
+const u32 gEventObjectPic_Maxie_5[] = INCBIN_U32("graphics/event_objects/pics/people/maxie/5.4bpp");
+const u32 gEventObjectPic_Maxie_6[] = INCBIN_U32("graphics/event_objects/pics/people/maxie/6.4bpp");
+const u32 gEventObjectPic_Maxie_7[] = INCBIN_U32("graphics/event_objects/pics/people/maxie/7.4bpp");
+const u32 gEventObjectPic_Maxie_8[] = INCBIN_U32("graphics/event_objects/pics/people/maxie/8.4bpp");
+const u32 gEventObjectPic_Kyogre_0[] = INCBIN_U32("graphics/event_objects/pics/pokemon/kyogre/0.4bpp");
+const u32 gEventObjectPic_Kyogre_1[] = INCBIN_U32("graphics/event_objects/pics/pokemon/kyogre/1.4bpp");
+const u32 gEventObjectPic_Groudon_0[] = INCBIN_U32("graphics/event_objects/pics/pokemon/groudon/0.4bpp");
+const u32 gEventObjectPic_Groudon_1[] = INCBIN_U32("graphics/event_objects/pics/pokemon/groudon/1.4bpp");
+const u32 gEventObjectPic_Regi[] = INCBIN_U32("graphics/event_objects/pics/pokemon/regi.4bpp");
+const u32 gEventObjectPic_Skitty_0[] = INCBIN_U32("graphics/event_objects/pics/pokemon/skitty/0.4bpp");
+const u32 gEventObjectPic_Skitty_1[] = INCBIN_U32("graphics/event_objects/pics/pokemon/skitty/1.4bpp");
+const u32 gEventObjectPic_Skitty_2[] = INCBIN_U32("graphics/event_objects/pics/pokemon/skitty/2.4bpp");
+const u32 gEventObjectPic_Kecleon_0[] = INCBIN_U32("graphics/event_objects/pics/pokemon/kecleon/0.4bpp");
+const u32 gEventObjectPic_Kecleon_1[] = INCBIN_U32("graphics/event_objects/pics/pokemon/kecleon/1.4bpp");
+const u32 gEventObjectPic_Kecleon_2[] = INCBIN_U32("graphics/event_objects/pics/pokemon/kecleon/2.4bpp");
+const u32 gEventObjectPic_Rayquaza_0[] = INCBIN_U32("graphics/event_objects/pics/pokemon/rayquaza/0.4bpp");
+const u32 gEventObjectPic_Rayquaza_1[] = INCBIN_U32("graphics/event_objects/pics/pokemon/rayquaza/1.4bpp");
+const u32 gEventObjectPic_Zigzagoon_0[] = INCBIN_U32("graphics/event_objects/pics/pokemon/zigzagoon/0.4bpp");
+const u32 gEventObjectPic_Zigzagoon_1[] = INCBIN_U32("graphics/event_objects/pics/pokemon/zigzagoon/1.4bpp");
+const u32 gEventObjectPic_Zigzagoon_2[] = INCBIN_U32("graphics/event_objects/pics/pokemon/zigzagoon/2.4bpp");
+const u32 gEventObjectPic_Pikachu_0[] = INCBIN_U32("graphics/event_objects/pics/pokemon/pikachu/0.4bpp");
+const u32 gEventObjectPic_Pikachu_1[] = INCBIN_U32("graphics/event_objects/pics/pokemon/pikachu/1.4bpp");
+const u32 gEventObjectPic_Pikachu_2[] = INCBIN_U32("graphics/event_objects/pics/pokemon/pikachu/2.4bpp");
+const u32 gEventObjectPic_Azumarill_0[] = INCBIN_U32("graphics/event_objects/pics/pokemon/azumarill/0.4bpp");
+const u32 gEventObjectPic_Azumarill_1[] = INCBIN_U32("graphics/event_objects/pics/pokemon/azumarill/1.4bpp");
+const u32 gEventObjectPic_Azumarill_2[] = INCBIN_U32("graphics/event_objects/pics/pokemon/azumarill/2.4bpp");
+const u32 gEventObjectPic_Wingull_0[] = INCBIN_U32("graphics/event_objects/pics/pokemon/wingull/0.4bpp");
+const u32 gEventObjectPic_Wingull_3[] = INCBIN_U32("graphics/event_objects/pics/pokemon/wingull/3.4bpp");
+const u32 gEventObjectPic_Wingull_1[] = INCBIN_U32("graphics/event_objects/pics/pokemon/wingull/1.4bpp");
+const u32 gEventObjectPic_Wingull_4[] = INCBIN_U32("graphics/event_objects/pics/pokemon/wingull/4.4bpp");
+const u32 gEventObjectPic_Wingull_2[] = INCBIN_U32("graphics/event_objects/pics/pokemon/wingull/2.4bpp");
+const u32 gEventObjectPic_Wingull_5[] = INCBIN_U32("graphics/event_objects/pics/pokemon/wingull/5.4bpp");
+const u32 gEventObjectPic_TuberMSwimming_0[] = INCBIN_U32("graphics/event_objects/pics/people/tuber_m_swimming/0.4bpp");
+const u32 gEventObjectPic_TuberMSwimming_1[] = INCBIN_U32("graphics/event_objects/pics/people/tuber_m_swimming/1.4bpp");
+const u32 gEventObjectPic_TuberMSwimming_2[] = INCBIN_U32("graphics/event_objects/pics/people/tuber_m_swimming/2.4bpp");
+const u32 gEventObjectPic_TuberMSwimming_3[] = INCBIN_U32("graphics/event_objects/pics/people/tuber_m_swimming/3.4bpp");
+const u32 gEventObjectPic_TuberMSwimming_4[] = INCBIN_U32("graphics/event_objects/pics/people/tuber_m_swimming/4.4bpp");
+const u32 gEventObjectPic_TuberMSwimming_5[] = INCBIN_U32("graphics/event_objects/pics/people/tuber_m_swimming/5.4bpp");
+const u32 gEventObjectPic_TuberMSwimming_6[] = INCBIN_U32("graphics/event_objects/pics/people/tuber_m_swimming/6.4bpp");
+const u32 gEventObjectPic_TuberMSwimming_7[] = INCBIN_U32("graphics/event_objects/pics/people/tuber_m_swimming/7.4bpp");
+const u32 gEventObjectPic_TuberMSwimming_8[] = INCBIN_U32("graphics/event_objects/pics/people/tuber_m_swimming/8.4bpp");
+const u32 gEventObjectPic_Azurill_0[] = INCBIN_U32("graphics/event_objects/pics/pokemon/azurill/0.4bpp");
+const u32 gEventObjectPic_Azurill_1[] = INCBIN_U32("graphics/event_objects/pics/pokemon/azurill/1.4bpp");
+const u32 gEventObjectPic_Azurill_2[] = INCBIN_U32("graphics/event_objects/pics/pokemon/azurill/2.4bpp");
+const u32 gEventObjectPic_Mom_0[] = INCBIN_U32("graphics/event_objects/pics/people/mom/0.4bpp");
+const u32 gEventObjectPic_Mom_1[] = INCBIN_U32("graphics/event_objects/pics/people/mom/1.4bpp");
+const u32 gEventObjectPic_Mom_2[] = INCBIN_U32("graphics/event_objects/pics/people/mom/2.4bpp");
+const u32 gEventObjectPic_Mom_3[] = INCBIN_U32("graphics/event_objects/pics/people/mom/3.4bpp");
+const u32 gEventObjectPic_Mom_4[] = INCBIN_U32("graphics/event_objects/pics/people/mom/4.4bpp");
+const u32 gEventObjectPic_Mom_5[] = INCBIN_U32("graphics/event_objects/pics/people/mom/5.4bpp");
+const u32 gEventObjectPic_Mom_6[] = INCBIN_U32("graphics/event_objects/pics/people/mom/6.4bpp");
+const u32 gEventObjectPic_Mom_7[] = INCBIN_U32("graphics/event_objects/pics/people/mom/7.4bpp");
+const u32 gEventObjectPic_Mom_8[] = INCBIN_U32("graphics/event_objects/pics/people/mom/8.4bpp");
+const u16 gEventObjectPalette22[] = INCBIN_U16("graphics/event_objects/palettes/22.gbapal");
+const u16 gEventObjectPalette23[] = INCBIN_U16("graphics/event_objects/palettes/23.gbapal");
+const u16 gEventObjectPalette24[] = INCBIN_U16("graphics/event_objects/palettes/24.gbapal");
+const u16 gEventObjectPalette25[] = INCBIN_U16("graphics/event_objects/palettes/25.gbapal");
+const u32 gEventObjectPic_UnusedNatuDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/unused_natu_doll.4bpp");
+const u32 gEventObjectPic_UnusedMagnemiteDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/unused_magnemite_doll.4bpp");
+const u32 gEventObjectPic_UnusedSquirtleDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/unused_squirtle_doll.4bpp");
+const u32 gEventObjectPic_UnusedWooperDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/unused_wooper_doll.4bpp");
+const u32 gEventObjectPic_UnusedPikachuDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/unused_pikachu_doll.4bpp");
+const u32 gEventObjectPic_UnusedPorygon2Doll[] = INCBIN_U32("graphics/event_objects/pics/dolls/unused_porygon2_doll.4bpp");
+const u32 gEventObjectPic_PichuDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/pichu_doll.4bpp");
+const u32 gEventObjectPic_PikachuDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/pikachu_doll.4bpp");
+const u32 gEventObjectPic_MarillDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/marill_doll.4bpp");
+const u32 gEventObjectPic_TogepiDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/togepi_doll.4bpp");
+const u32 gEventObjectPic_CyndaquilDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/cyndaquil_doll.4bpp");
+const u32 gEventObjectPic_ChikoritaDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/chikorita_doll.4bpp");
+const u32 gEventObjectPic_TotodileDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/totodile_doll.4bpp");
+const u32 gEventObjectPic_JigglypuffDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/jigglypuff_doll.4bpp");
+const u32 gEventObjectPic_MeowthDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/meowth_doll.4bpp");
+const u32 gEventObjectPic_ClefairyDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/clefairy_doll.4bpp");
+const u32 gEventObjectPic_DittoDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/ditto_doll.4bpp");
+const u32 gEventObjectPic_SmoochumDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/smoochum_doll.4bpp");
+const u32 gEventObjectPic_TreeckoDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/treecko_doll.4bpp");
+const u32 gEventObjectPic_TorchicDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/torchic_doll.4bpp");
+const u32 gEventObjectPic_MudkipDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/mudkip_doll.4bpp");
+const u32 gEventObjectPic_DuskullDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/duskull_doll.4bpp");
+const u32 gEventObjectPic_WynautDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/wynaut_doll.4bpp");
+const u32 gEventObjectPic_BaltoyDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/baltoy_doll.4bpp");
+const u32 gEventObjectPic_KecleonDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/kecleon_doll.4bpp");
+const u32 gEventObjectPic_AzurillDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/azurill_doll.4bpp");
+const u32 gEventObjectPic_SkittyDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/skitty_doll.4bpp");
+const u32 gEventObjectPic_SwabluDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/swablu_doll.4bpp");
+const u32 gEventObjectPic_GulpinDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/gulpin_doll.4bpp");
+const u32 gEventObjectPic_LotadDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/lotad_doll.4bpp");
+const u32 gEventObjectPic_SeedotDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/seedot_doll.4bpp");
+const u32 gEventObjectPic_PikaCushion[] = INCBIN_U32("graphics/event_objects/pics/cushions/pika_cushion.4bpp");
+const u32 gEventObjectPic_RoundCushion[] = INCBIN_U32("graphics/event_objects/pics/cushions/round_cushion.4bpp");
+const u32 gEventObjectPic_KissCushion[] = INCBIN_U32("graphics/event_objects/pics/cushions/kiss_cushion.4bpp");
+const u32 gEventObjectPic_ZigzagCushion[] = INCBIN_U32("graphics/event_objects/pics/cushions/zigzag_cushion.4bpp");
+const u32 gEventObjectPic_SpinCushion[] = INCBIN_U32("graphics/event_objects/pics/cushions/spin_cushion.4bpp");
+const u32 gEventObjectPic_DiamondCushion[] = INCBIN_U32("graphics/event_objects/pics/cushions/diamond_cushion.4bpp");
+const u32 gEventObjectPic_BallCushion[] = INCBIN_U32("graphics/event_objects/pics/cushions/ball_cushion.4bpp");
+const u32 gEventObjectPic_GrassCushion[] = INCBIN_U32("graphics/event_objects/pics/cushions/grass_cushion.4bpp");
+const u32 gEventObjectPic_FireCushion[] = INCBIN_U32("graphics/event_objects/pics/cushions/fire_cushion.4bpp");
+const u32 gEventObjectPic_WaterCushion[] = INCBIN_U32("graphics/event_objects/pics/cushions/water_cushion.4bpp");
+const u32 gEventObjectPic_BigSnorlaxDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/big_snorlax_doll.4bpp");
+const u32 gEventObjectPic_BigRhydonDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/big_rhydon_doll.4bpp");
+const u32 gEventObjectPic_BigLaprasDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/big_lapras_doll.4bpp");
+const u32 gEventObjectPic_BigVenusaurDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/big_venusaur_doll.4bpp");
+const u32 gEventObjectPic_BigCharizardDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/big_charizard_doll.4bpp");
+const u32 gEventObjectPic_BigBlastoiseDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/big_blastoise_doll.4bpp");
+const u32 gEventObjectPic_BigWailmerDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/big_wailmer_doll.4bpp");
+const u32 gEventObjectPic_BigRegirockDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/big_regirock_doll.4bpp");
+const u32 gEventObjectPic_BigRegiceDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/big_regice_doll.4bpp");
+const u32 gEventObjectPic_BigRegisteelDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/big_registeel_doll.4bpp");
+const u32 gEventObjectPic_CuttableTree_0[] = INCBIN_U32("graphics/event_objects/pics/misc/cuttable_tree/0.4bpp");
+const u32 gEventObjectPic_CuttableTree_1[] = INCBIN_U32("graphics/event_objects/pics/misc/cuttable_tree/1.4bpp");
+const u32 gEventObjectPic_CuttableTree_2[] = INCBIN_U32("graphics/event_objects/pics/misc/cuttable_tree/2.4bpp");
+const u32 gEventObjectPic_CuttableTree_3[] = INCBIN_U32("graphics/event_objects/pics/misc/cuttable_tree/3.4bpp");
+const u32 gEventObjectPic_BreakableRock_0[] = INCBIN_U32("graphics/event_objects/pics/misc/breakable_rock/0.4bpp");
+const u32 gEventObjectPic_BreakableRock_1[] = INCBIN_U32("graphics/event_objects/pics/misc/breakable_rock/1.4bpp");
+const u32 gEventObjectPic_BreakableRock_2[] = INCBIN_U32("graphics/event_objects/pics/misc/breakable_rock/2.4bpp");
+const u32 gEventObjectPic_BreakableRock_3[] = INCBIN_U32("graphics/event_objects/pics/misc/breakable_rock/3.4bpp");
+const u32 gEventObjectPic_PushableBoulder[] = INCBIN_U32("graphics/event_objects/pics/misc/pushable_boulder.4bpp");
+const u32 gEventObjectPic_MrBrineysBoat_0[] = INCBIN_U32("graphics/event_objects/pics/misc/mr_brineys_boat/0.4bpp");
+const u32 gEventObjectPic_MrBrineysBoat_1[] = INCBIN_U32("graphics/event_objects/pics/misc/mr_brineys_boat/1.4bpp");
+const u32 gEventObjectPic_MrBrineysBoat_2[] = INCBIN_U32("graphics/event_objects/pics/misc/mr_brineys_boat/2.4bpp");
+const u32 gEventObjectPic_Fossil[] = INCBIN_U32("graphics/event_objects/pics/misc/fossil.4bpp");
+const u32 gEventObjectPic_SubmarineShadow[] = INCBIN_U32("graphics/event_objects/pics/misc/submarine_shadow.4bpp");
+const u16 gEventObjectPalette26[] = INCBIN_U16("graphics/event_objects/palettes/26.gbapal");
+const u32 gEventObjectPic_Truck[] = INCBIN_U32("graphics/event_objects/pics/misc/truck.4bpp");
+const u16 gEventObjectPalette14[] = INCBIN_U16("graphics/event_objects/palettes/14.gbapal");
+const u32 gEventObjectPic_MachokeCarryingBox_0[] = INCBIN_U32("graphics/event_objects/pics/pokemon/machoke_carrying_box/0.4bpp");
+const u32 gEventObjectPic_MachokeCarryingBox_1[] = INCBIN_U32("graphics/event_objects/pics/pokemon/machoke_carrying_box/1.4bpp");
+const u32 gEventObjectPic_MachokeCarryingBox_2[] = INCBIN_U32("graphics/event_objects/pics/pokemon/machoke_carrying_box/2.4bpp");
+const u32 gEventObjectPic_MachokeFacingAway_0[] = INCBIN_U32("graphics/event_objects/pics/pokemon/machoke_facing_away/0.4bpp");
+const u32 gEventObjectPic_MachokeFacingAway_1[] = INCBIN_U32("graphics/event_objects/pics/pokemon/machoke_facing_away/1.4bpp");
+const u16 gEventObjectPalette15[] = INCBIN_U16("graphics/event_objects/palettes/15.gbapal");
+const u32 gEventObjectPic_BirchsBag[] = INCBIN_U32("graphics/event_objects/pics/misc/birchs_bag.4bpp");
+const u32 gEventObjectPic_Poochyena_0[] = INCBIN_U32("graphics/event_objects/pics/pokemon/poochyena/0.4bpp");
+const u32 gEventObjectPic_Poochyena_1[] = INCBIN_U32("graphics/event_objects/pics/pokemon/poochyena/1.4bpp");
+const u32 gEventObjectPic_Poochyena_2[] = INCBIN_U32("graphics/event_objects/pics/pokemon/poochyena/2.4bpp");
+const u32 gEventObjectPic_Poochyena_3[] = INCBIN_U32("graphics/event_objects/pics/pokemon/poochyena/3.4bpp");
+const u32 gEventObjectPic_Poochyena_4[] = INCBIN_U32("graphics/event_objects/pics/pokemon/poochyena/4.4bpp");
+const u32 gEventObjectPic_Poochyena_5[] = INCBIN_U32("graphics/event_objects/pics/pokemon/poochyena/5.4bpp");
+const u32 gEventObjectPic_Poochyena_6[] = INCBIN_U32("graphics/event_objects/pics/pokemon/poochyena/6.4bpp");
+const u32 gEventObjectPic_Poochyena_7[] = INCBIN_U32("graphics/event_objects/pics/pokemon/poochyena/7.4bpp");
+const u32 gEventObjectPic_Poochyena_8[] = INCBIN_U32("graphics/event_objects/pics/pokemon/poochyena/8.4bpp");
+const u16 gEventObjectPalette16[] = INCBIN_U16("graphics/event_objects/palettes/16.gbapal");
+const u32 gEventObjectPic_CableCar[] = INCBIN_U32("graphics/event_objects/pics/misc/cable_car.4bpp");
+const u16 gEventObjectPalette20[] = INCBIN_U16("graphics/event_objects/palettes/20.gbapal");
+const u32 gEventObjectPic_SSTidal[] = INCBIN_U32("graphics/event_objects/pics/misc/ss_tidal.4bpp");
+const u16 gEventObjectPalette21[] = INCBIN_U16("graphics/event_objects/palettes/21.gbapal");
+const u32 gFieldEffectPic_BerryTreeGrowthSparkle_0[] = INCBIN_U32("graphics/field_effect_objects/pics/berry_tree_growth_sparkle/0.4bpp");
+const u32 gFieldEffectPic_BerryTreeGrowthSparkle_1[] = INCBIN_U32("graphics/field_effect_objects/pics/berry_tree_growth_sparkle/1.4bpp");
+const u32 gFieldEffectPic_BerryTreeGrowthSparkle_2[] = INCBIN_U32("graphics/field_effect_objects/pics/berry_tree_growth_sparkle/2.4bpp");
+const u32 gFieldEffectPic_BerryTreeGrowthSparkle_3[] = INCBIN_U32("graphics/field_effect_objects/pics/berry_tree_growth_sparkle/3.4bpp");
+const u32 gFieldEffectPic_BerryTreeGrowthSparkle_4[] = INCBIN_U32("graphics/field_effect_objects/pics/berry_tree_growth_sparkle/4.4bpp");
+const u32 gFieldEffectPic_BerryTreeGrowthSparkle_5[] = INCBIN_U32("graphics/field_effect_objects/pics/berry_tree_growth_sparkle/5.4bpp");
+const u32 gEventObjectPic_BerryTreeDirtPile[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/dirt_pile.4bpp");
+const u32 gEventObjectPic_BerryTreeSprout_0[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/sprout/0.4bpp");
+const u32 gEventObjectPic_BerryTreeSprout_1[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/sprout/1.4bpp");
+const u32 gEventObjectPic_PechaBerryTree_0[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/pecha/0.4bpp");
+const u32 gEventObjectPic_PechaBerryTree_1[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/pecha/1.4bpp");
+const u32 gEventObjectPic_PechaBerryTree_2[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/pecha/2.4bpp");
+const u32 gEventObjectPic_PechaBerryTree_3[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/pecha/3.4bpp");
+const u32 gEventObjectPic_PechaBerryTree_4[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/pecha/4.4bpp");
+const u32 gEventObjectPic_PechaBerryTree_5[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/pecha/5.4bpp");
+const u32 gEventObjectPic_KelpsyBerryTree_0[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/kelpsy/0.4bpp");
+const u32 gEventObjectPic_KelpsyBerryTree_1[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/kelpsy/1.4bpp");
+const u32 gEventObjectPic_KelpsyBerryTree_2[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/kelpsy/2.4bpp");
+const u32 gEventObjectPic_KelpsyBerryTree_3[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/kelpsy/3.4bpp");
+const u32 gEventObjectPic_KelpsyBerryTree_4[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/kelpsy/4.4bpp");
+const u32 gEventObjectPic_KelpsyBerryTree_5[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/kelpsy/5.4bpp");
+const u32 gEventObjectPic_WepearBerryTree_0[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/wepear/0.4bpp");
+const u32 gEventObjectPic_WepearBerryTree_1[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/wepear/1.4bpp");
+const u32 gEventObjectPic_WepearBerryTree_2[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/wepear/2.4bpp");
+const u32 gEventObjectPic_WepearBerryTree_3[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/wepear/3.4bpp");
+const u32 gEventObjectPic_WepearBerryTree_4[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/wepear/4.4bpp");
+const u32 gEventObjectPic_WepearBerryTree_5[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/wepear/5.4bpp");
+const u32 gEventObjectPic_IapapaBerryTree_0[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/iapapa/0.4bpp");
+const u32 gEventObjectPic_IapapaBerryTree_1[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/iapapa/1.4bpp");
+const u32 gEventObjectPic_IapapaBerryTree_2[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/iapapa/2.4bpp");
+const u32 gEventObjectPic_IapapaBerryTree_3[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/iapapa/3.4bpp");
+const u32 gEventObjectPic_IapapaBerryTree_4[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/iapapa/4.4bpp");
+const u32 gEventObjectPic_IapapaBerryTree_5[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/iapapa/5.4bpp");
+const u32 gEventObjectPic_CheriBerryTree_0[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/cheri/0.4bpp");
+const u32 gEventObjectPic_CheriBerryTree_1[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/cheri/1.4bpp");
+const u32 gEventObjectPic_CheriBerryTree_2[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/cheri/2.4bpp");
+const u32 gEventObjectPic_CheriBerryTree_3[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/cheri/3.4bpp");
+const u32 gEventObjectPic_CheriBerryTree_4[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/cheri/4.4bpp");
+const u32 gEventObjectPic_CheriBerryTree_5[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/cheri/5.4bpp");
+const u32 gEventObjectPic_FigyBerryTree_0[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/figy/0.4bpp");
+const u32 gEventObjectPic_FigyBerryTree_1[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/figy/1.4bpp");
+const u32 gEventObjectPic_FigyBerryTree_2[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/figy/2.4bpp");
+const u32 gEventObjectPic_FigyBerryTree_3[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/figy/3.4bpp");
+const u32 gEventObjectPic_FigyBerryTree_4[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/figy/4.4bpp");
+const u32 gEventObjectPic_FigyBerryTree_5[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/figy/5.4bpp");
+const u32 gEventObjectPic_MagoBerryTree_0[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/mago/0.4bpp");
+const u32 gEventObjectPic_MagoBerryTree_1[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/mago/1.4bpp");
+const u32 gEventObjectPic_MagoBerryTree_2[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/mago/2.4bpp");
+const u32 gEventObjectPic_MagoBerryTree_3[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/mago/3.4bpp");
+const u32 gEventObjectPic_MagoBerryTree_4[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/mago/4.4bpp");
+const u32 gEventObjectPic_MagoBerryTree_5[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/mago/5.4bpp");
+const u32 gEventObjectPic_LumBerryTree_0[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/lum/0.4bpp");
+const u32 gEventObjectPic_LumBerryTree_1[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/lum/1.4bpp");
+const u32 gEventObjectPic_LumBerryTree_2[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/lum/2.4bpp");
+const u32 gEventObjectPic_LumBerryTree_3[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/lum/3.4bpp");
+const u32 gEventObjectPic_LumBerryTree_4[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/lum/4.4bpp");
+const u32 gEventObjectPic_LumBerryTree_5[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/lum/5.4bpp");
+const u32 gEventObjectPic_RazzBerryTree_0[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/razz/0.4bpp");
+const u32 gEventObjectPic_RazzBerryTree_1[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/razz/1.4bpp");
+const u32 gEventObjectPic_RazzBerryTree_2[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/razz/2.4bpp");
+const u32 gEventObjectPic_RazzBerryTree_3[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/razz/3.4bpp");
+const u32 gEventObjectPic_RazzBerryTree_4[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/razz/4.4bpp");
+const u32 gEventObjectPic_RazzBerryTree_5[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/razz/5.4bpp");
+const u32 gEventObjectPic_GrepaBerryTree_0[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/grepa/0.4bpp");
+const u32 gEventObjectPic_GrepaBerryTree_1[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/grepa/1.4bpp");
+const u32 gEventObjectPic_GrepaBerryTree_2[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/grepa/2.4bpp");
+const u32 gEventObjectPic_GrepaBerryTree_3[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/grepa/3.4bpp");
+const u32 gEventObjectPic_GrepaBerryTree_4[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/grepa/4.4bpp");
+const u32 gEventObjectPic_GrepaBerryTree_5[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/grepa/5.4bpp");
+const u32 gEventObjectPic_RabutaBerryTree_0[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/rabuta/0.4bpp");
+const u32 gEventObjectPic_RabutaBerryTree_1[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/rabuta/1.4bpp");
+const u32 gEventObjectPic_RabutaBerryTree_2[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/rabuta/2.4bpp");
+const u32 gEventObjectPic_RabutaBerryTree_3[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/rabuta/3.4bpp");
+const u32 gEventObjectPic_RabutaBerryTree_4[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/rabuta/4.4bpp");
+const u32 gEventObjectPic_RabutaBerryTree_5[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/rabuta/5.4bpp");
+const u32 gEventObjectPic_NomelBerryTree_0[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/nomel/0.4bpp");
+const u32 gEventObjectPic_NomelBerryTree_1[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/nomel/1.4bpp");
+const u32 gEventObjectPic_NomelBerryTree_2[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/nomel/2.4bpp");
+const u32 gEventObjectPic_NomelBerryTree_3[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/nomel/3.4bpp");
+const u32 gEventObjectPic_NomelBerryTree_4[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/nomel/4.4bpp");
+const u32 gEventObjectPic_NomelBerryTree_5[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/nomel/5.4bpp");
+const u32 gEventObjectPic_LeppaBerryTree_0[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/leppa/0.4bpp");
+const u32 gEventObjectPic_LeppaBerryTree_1[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/leppa/1.4bpp");
+const u32 gEventObjectPic_LeppaBerryTree_2[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/leppa/2.4bpp");
+const u32 gEventObjectPic_LeppaBerryTree_3[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/leppa/3.4bpp");
+const u32 gEventObjectPic_LeppaBerryTree_4[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/leppa/4.4bpp");
+const u32 gEventObjectPic_LeppaBerryTree_5[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/leppa/5.4bpp");
+const u32 gEventObjectPic_LiechiBerryTree_0[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/liechi/0.4bpp");
+const u32 gEventObjectPic_LiechiBerryTree_1[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/liechi/1.4bpp");
+const u32 gEventObjectPic_LiechiBerryTree_2[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/liechi/2.4bpp");
+const u32 gEventObjectPic_LiechiBerryTree_3[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/liechi/3.4bpp");
+const u32 gEventObjectPic_LiechiBerryTree_4[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/liechi/4.4bpp");
+const u32 gEventObjectPic_LiechiBerryTree_5[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/liechi/5.4bpp");
+const u32 gEventObjectPic_HondewBerryTree_0[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/hondew/0.4bpp");
+const u32 gEventObjectPic_HondewBerryTree_1[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/hondew/1.4bpp");
+const u32 gEventObjectPic_HondewBerryTree_2[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/hondew/2.4bpp");
+const u32 gEventObjectPic_HondewBerryTree_3[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/hondew/3.4bpp");
+const u32 gEventObjectPic_HondewBerryTree_4[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/hondew/4.4bpp");
+const u32 gEventObjectPic_HondewBerryTree_5[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/hondew/5.4bpp");
+const u32 gEventObjectPic_AguavBerryTree_0[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/aguav/0.4bpp");
+const u32 gEventObjectPic_AguavBerryTree_1[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/aguav/1.4bpp");
+const u32 gEventObjectPic_AguavBerryTree_2[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/aguav/2.4bpp");
+const u32 gEventObjectPic_AguavBerryTree_3[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/aguav/3.4bpp");
+const u32 gEventObjectPic_AguavBerryTree_4[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/aguav/4.4bpp");
+const u32 gEventObjectPic_AguavBerryTree_5[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/aguav/5.4bpp");
+const u32 gEventObjectPic_WikiBerryTree_0[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/wiki/0.4bpp");
+const u32 gEventObjectPic_WikiBerryTree_1[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/wiki/1.4bpp");
+const u32 gEventObjectPic_WikiBerryTree_2[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/wiki/2.4bpp");
+const u32 gEventObjectPic_WikiBerryTree_3[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/wiki/3.4bpp");
+const u32 gEventObjectPic_WikiBerryTree_4[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/wiki/4.4bpp");
+const u32 gEventObjectPic_WikiBerryTree_5[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/wiki/5.4bpp");
+const u32 gEventObjectPic_PomegBerryTree_0[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/pomeg/0.4bpp");
+const u32 gEventObjectPic_PomegBerryTree_1[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/pomeg/1.4bpp");
+const u32 gEventObjectPic_PomegBerryTree_2[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/pomeg/2.4bpp");
+const u32 gEventObjectPic_PomegBerryTree_3[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/pomeg/3.4bpp");
+const u32 gEventObjectPic_PomegBerryTree_4[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/pomeg/4.4bpp");
+const u32 gEventObjectPic_PomegBerryTree_5[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/pomeg/5.4bpp");
+const u32 gEventObjectPic_RawstBerryTree_0[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/rawst/0.4bpp");
+const u32 gEventObjectPic_RawstBerryTree_1[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/rawst/1.4bpp");
+const u32 gEventObjectPic_RawstBerryTree_2[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/rawst/2.4bpp");
+const u32 gEventObjectPic_RawstBerryTree_3[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/rawst/3.4bpp");
+const u32 gEventObjectPic_RawstBerryTree_4[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/rawst/4.4bpp");
+const u32 gEventObjectPic_RawstBerryTree_5[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/rawst/5.4bpp");
+const u32 gEventObjectPic_SpelonBerryTree_0[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/spelon/0.4bpp");
+const u32 gEventObjectPic_SpelonBerryTree_1[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/spelon/1.4bpp");
+const u32 gEventObjectPic_SpelonBerryTree_2[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/spelon/2.4bpp");
+const u32 gEventObjectPic_SpelonBerryTree_3[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/spelon/3.4bpp");
+const u32 gEventObjectPic_SpelonBerryTree_4[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/spelon/4.4bpp");
+const u32 gEventObjectPic_SpelonBerryTree_5[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/spelon/5.4bpp");
+const u32 gEventObjectPic_ChestoBerryTree_0[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/chesto/0.4bpp");
+const u32 gEventObjectPic_ChestoBerryTree_1[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/chesto/1.4bpp");
+const u32 gEventObjectPic_ChestoBerryTree_2[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/chesto/2.4bpp");
+const u32 gEventObjectPic_ChestoBerryTree_3[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/chesto/3.4bpp");
+const u32 gEventObjectPic_ChestoBerryTree_4[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/chesto/4.4bpp");
+const u32 gEventObjectPic_ChestoBerryTree_5[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/chesto/5.4bpp");
+const u32 gEventObjectPic_OranBerryTree_0[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/oran/0.4bpp");
+const u32 gEventObjectPic_OranBerryTree_1[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/oran/1.4bpp");
+const u32 gEventObjectPic_OranBerryTree_2[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/oran/2.4bpp");
+const u32 gEventObjectPic_OranBerryTree_3[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/oran/3.4bpp");
+const u32 gEventObjectPic_OranBerryTree_4[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/oran/4.4bpp");
+const u32 gEventObjectPic_OranBerryTree_5[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/oran/5.4bpp");
+const u32 gEventObjectPic_PersimBerryTree_0[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/persim/0.4bpp");
+const u32 gEventObjectPic_PersimBerryTree_1[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/persim/1.4bpp");
+const u32 gEventObjectPic_PersimBerryTree_2[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/persim/2.4bpp");
+const u32 gEventObjectPic_PersimBerryTree_3[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/persim/3.4bpp");
+const u32 gEventObjectPic_PersimBerryTree_4[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/persim/4.4bpp");
+const u32 gEventObjectPic_PersimBerryTree_5[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/persim/5.4bpp");
+const u32 gEventObjectPic_SitrusBerryTree_0[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/sitrus/0.4bpp");
+const u32 gEventObjectPic_SitrusBerryTree_1[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/sitrus/1.4bpp");
+const u32 gEventObjectPic_SitrusBerryTree_2[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/sitrus/2.4bpp");
+const u32 gEventObjectPic_SitrusBerryTree_3[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/sitrus/3.4bpp");
+const u32 gEventObjectPic_SitrusBerryTree_4[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/sitrus/4.4bpp");
+const u32 gEventObjectPic_SitrusBerryTree_5[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/sitrus/5.4bpp");
+const u32 gEventObjectPic_AspearBerryTree_0[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/aspear/0.4bpp");
+const u32 gEventObjectPic_AspearBerryTree_1[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/aspear/1.4bpp");
+const u32 gEventObjectPic_AspearBerryTree_2[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/aspear/2.4bpp");
+const u32 gEventObjectPic_AspearBerryTree_3[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/aspear/3.4bpp");
+const u32 gEventObjectPic_AspearBerryTree_4[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/aspear/4.4bpp");
+const u32 gEventObjectPic_AspearBerryTree_5[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/aspear/5.4bpp");
+const u32 gEventObjectPic_PamtreBerryTree_0[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/pamtre/0.4bpp");
+const u32 gEventObjectPic_PamtreBerryTree_1[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/pamtre/1.4bpp");
+const u32 gEventObjectPic_PamtreBerryTree_2[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/pamtre/2.4bpp");
+const u32 gEventObjectPic_PamtreBerryTree_3[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/pamtre/3.4bpp");
+const u32 gEventObjectPic_PamtreBerryTree_4[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/pamtre/4.4bpp");
+const u32 gEventObjectPic_PamtreBerryTree_5[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/pamtre/5.4bpp");
+const u32 gEventObjectPic_CornnBerryTree_0[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/cornn/0.4bpp");
+const u32 gEventObjectPic_CornnBerryTree_1[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/cornn/1.4bpp");
+const u32 gEventObjectPic_CornnBerryTree_2[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/cornn/2.4bpp");
+const u32 gEventObjectPic_CornnBerryTree_3[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/cornn/3.4bpp");
+const u32 gEventObjectPic_CornnBerryTree_4[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/cornn/4.4bpp");
+const u32 gEventObjectPic_CornnBerryTree_5[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/cornn/5.4bpp");
+const u32 gEventObjectPic_LansatBerryTree_0[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/lansat/0.4bpp");
+const u32 gEventObjectPic_LansatBerryTree_1[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/lansat/1.4bpp");
+const u32 gEventObjectPic_LansatBerryTree_2[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/lansat/2.4bpp");
+const u32 gEventObjectPic_LansatBerryTree_3[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/lansat/3.4bpp");
+const u32 gEventObjectPic_LansatBerryTree_4[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/lansat/4.4bpp");
+const u32 gEventObjectPic_LansatBerryTree_5[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/lansat/5.4bpp");
+const u32 gEventObjectPic_DurinBerryTree_0[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/durin/0.4bpp");
+const u32 gEventObjectPic_DurinBerryTree_1[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/durin/1.4bpp");
+const u32 gEventObjectPic_DurinBerryTree_2[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/durin/2.4bpp");
+const u32 gEventObjectPic_DurinBerryTree_3[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/durin/3.4bpp");
+const u32 gEventObjectPic_DurinBerryTree_4[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/durin/4.4bpp");
+const u32 gEventObjectPic_DurinBerryTree_5[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/durin/5.4bpp");
+const u32 gEventObjectPic_TamatoBerryTree_0[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/tamato/0.4bpp");
+const u32 gEventObjectPic_TamatoBerryTree_1[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/tamato/1.4bpp");
+const u32 gEventObjectPic_TamatoBerryTree_2[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/tamato/2.4bpp");
+const u32 gEventObjectPic_TamatoBerryTree_3[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/tamato/3.4bpp");
+const u32 gEventObjectPic_TamatoBerryTree_4[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/tamato/4.4bpp");
+const u32 gEventObjectPic_TamatoBerryTree_5[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/tamato/5.4bpp");
+const u32 gFieldEffectPic_SurfBlob_0[] = INCBIN_U32("graphics/field_effect_objects/pics/surf_blob/0.4bpp");
+const u32 gFieldEffectPic_SurfBlob_1[] = INCBIN_U32("graphics/field_effect_objects/pics/surf_blob/1.4bpp");
+const u32 gFieldEffectPic_SurfBlob_2[] = INCBIN_U32("graphics/field_effect_objects/pics/surf_blob/2.4bpp");
+const u32 gEventObjectPic_QuintyPlump_0[] = INCBIN_U32("graphics/event_objects/pics/people/quinty_plump/0.4bpp");
+const u32 gEventObjectPic_QuintyPlump_1[] = INCBIN_U32("graphics/event_objects/pics/people/quinty_plump/1.4bpp");
+const u32 gEventObjectPic_QuintyPlump_2[] = INCBIN_U32("graphics/event_objects/pics/people/quinty_plump/2.4bpp");
+const u32 gEventObjectPic_QuintyPlump_3[] = INCBIN_U32("graphics/event_objects/pics/people/quinty_plump/3.4bpp");
+const u32 gEventObjectPic_QuintyPlump_4[] = INCBIN_U32("graphics/event_objects/pics/people/quinty_plump/4.4bpp");
+const u32 gEventObjectPic_QuintyPlump_5[] = INCBIN_U32("graphics/event_objects/pics/people/quinty_plump/5.4bpp");
+const u32 gEventObjectPic_QuintyPlump_6[] = INCBIN_U32("graphics/event_objects/pics/people/quinty_plump/6.4bpp");
+const u16 gEventObjectPalette12[] = INCBIN_U16("graphics/event_objects/palettes/12.gbapal");
+const u16 gEventObjectPalette13[] = INCBIN_U16("graphics/event_objects/palettes/13.gbapal");
+
+#endif //POKERUBY_EVENT_OBJECT_GFX_H
diff --git a/src/data/field_event_obj/event_object_graphics_info.h b/src/data/field_event_obj/event_object_graphics_info.h
new file mode 100644
index 000000000..88085980b
--- /dev/null
+++ b/src/data/field_event_obj/event_object_graphics_info.h
@@ -0,0 +1,227 @@
+//
+
+//
+
+#ifndef POKERUBY_EVENT_OBJECT_GRAPHICS_INFO_H
+#define POKERUBY_EVENT_OBJECT_GRAPHICS_INFO_H
+
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BrendanNormal = {0xffff, 0x1100, 0x1102, 512, 16, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_BrendanMayNormal, gEventObjectPicTable_BrendanNormal, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BrendanMachBike = {0xffff, 0x1100, 0x1102, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gFieldOamData_32x32, gEventObjectSubspriteTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_BrendanMachBike, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BrendanAcroBike = {0xffff, 0x1100, 0x1102, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gFieldOamData_32x32, gEventObjectSubspriteTables_32x32, gEventObjectImageAnimTable_AcroBike, gEventObjectPicTable_BrendanAcroBike, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BrendanSurfing = {0xffff, 0x1100, 0x11ff, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gFieldOamData_32x32, gEventObjectSubspriteTables_32x32, gEventObjectImageAnimTable_Surfing, gEventObjectPicTable_BrendanSurfing, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BrendanFieldMove = {0xffff, 0x1100, 0x1102, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_32x32, gEventObjectSubspriteTables_32x32, gEventObjectImageAnimTable_FieldMove, gEventObjectPicTable_BrendanFieldMove, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_QuintyPlump = {0xffff, 0x110b, 0x11ff, 512, 32, 32, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_32x32, gEventObjectSubspriteTables_32x32, gEventObjectImageAnimTable_QuintyPlump, gEventObjectPicTable_QuintyPlump, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_LittleBoy1 = {0xffff, 0x1103, 0x11ff, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_LittleBoy1, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_LittleGirl1 = {0xffff, 0x1104, 0x11ff, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_LittleGirl1, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Boy1 = {0xffff, 0x1105, 0x11ff, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Boy1, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Girl1 = {0xffff, 0x1104, 0x11ff, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Girl1, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Boy2 = {0xffff, 0x1103, 0x11ff, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Boy2, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Girl2 = {0xffff, 0x1105, 0x11ff, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Girl2, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_LittleBoy2 = {0xffff, 0x1106, 0x11ff, 128, 16, 16, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_LittleBoy2, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_LittleGirl2 = {0xffff, 0x1104, 0x11ff, 128, 16, 16, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_LittleGirl2, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Boy3 = {0xffff, 0x1106, 0x11ff, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Boy3, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Girl3 = {0xffff, 0x1104, 0x11ff, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Girl3, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Boy4 = {0xffff, 0x1105, 0x11ff, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Boy4, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Woman1 = {0xffff, 0x1103, 0x11ff, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Woman1, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_FatMan = {0xffff, 0x1103, 0x11ff, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_FatMan, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Woman2 = {0xffff, 0x1104, 0x11ff, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Woman2, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Man1 = {0xffff, 0x1105, 0x11ff, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Man1, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Woman3 = {0xffff, 0x1105, 0x11ff, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Woman3, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_OldMan1 = {0xffff, 0x1106, 0x11ff, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_OldMan1, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_OldWoman1 = {0xffff, 0x1106, 0x11ff, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_OldWoman1, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Man2 = {0xffff, 0x1105, 0x11ff, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Man2, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Woman4 = {0xffff, 0x1104, 0x11ff, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Woman4, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Man3 = {0xffff, 0x1104, 0x11ff, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Man3, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Woman5 = {0xffff, 0x1103, 0x11ff, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Woman5, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Cook = {0xffff, 0x1105, 0x11ff, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Cook, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Woman6 = {0xffff, 0x1105, 0x11ff, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Woman6, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_OldMan2 = {0xffff, 0x1106, 0x11ff, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_OldMan2, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_OldWoman2 = {0xffff, 0x1105, 0x11ff, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_OldWoman2, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Camper = {0xffff, 0x1105, 0x11ff, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Camper, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Picnicker = {0xffff, 0x1105, 0x11ff, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Picnicker, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Man4 = {0xffff, 0x1104, 0x11ff, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Man4, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Woman7 = {0xffff, 0x1104, 0x11ff, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Woman7, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Youngster = {0xffff, 0x1103, 0x11ff, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Youngster, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BugCatcher = {0xffff, 0x1103, 0x11ff, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_BugCatcher, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_PsychicM = {0xffff, 0x1106, 0x11ff, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_PsychicM, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_SchoolKidM = {0xffff, 0x1103, 0x11ff, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_SchoolKidM, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Maniac = {0xffff, 0x1106, 0x11ff, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Maniac, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_HexManiac = {0xffff, 0x1106, 0x11ff, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_HexManiac, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Woman8 = {0xffff, 0x1105, 0x11ff, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Woman8, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_SwimmerM = {0xffff, 0x1103, 0x11ff, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_SwimmerM, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_SwimmerF = {0xffff, 0x1104, 0x11ff, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_SwimmerF, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BlackBelt = {0xffff, 0x1105, 0x11ff, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_BlackBelt, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Beauty = {0xffff, 0x1105, 0x11ff, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Beauty, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Scientist1 = {0xffff, 0x1105, 0x11ff, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Scientist1, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Lass = {0xffff, 0x1106, 0x11ff, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Lass, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Gentleman = {0xffff, 0x1105, 0x11ff, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Gentleman, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Sailor = {0xffff, 0x1103, 0x11ff, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Sailor, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Fisherman = {0xffff, 0x1104, 0x11ff, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Fisherman, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RunningTriathleteM = {0xffff, 0x1106, 0x11ff, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_RunningTriathleteM, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RunningTriathleteF = {0xffff, 0x1104, 0x11ff, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_RunningTriathleteF, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_TuberF = {0xffff, 0x1103, 0x11ff, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_TuberF, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_TuberM = {0xffff, 0x1104, 0x11ff, 128, 16, 16, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_TuberM, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Hiker = {0xffff, 0x1103, 0x11ff, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Hiker, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_CyclingTriathleteM = {0xffff, 0x1105, 0x11ff, 512, 32, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gFieldOamData_32x32, gEventObjectSubspriteTables_32x32, gEventObjectImageAnimTable_AcroBike, gEventObjectPicTable_CyclingTriathleteM, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_CyclingTriathleteF = {0xffff, 0x1103, 0x11ff, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gFieldOamData_32x32, gEventObjectSubspriteTables_32x32, gEventObjectImageAnimTable_AcroBike, gEventObjectPicTable_CyclingTriathleteF, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Nurse = {0xffff, 0x1103, 0x11ff, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Nurse, gEventObjectPicTable_Nurse, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_ItemBall = {0xffff, 0x1105, 0x11ff, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_ItemBall, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BerryTree = {0xffff, 0x1103, 0x11ff, 256, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, NULL, gEventObjectImageAnimTable_BerryTree, gEventObjectPicTable_PechaBerryTree, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BerryTreeEarlyStages = {0xffff, 0x1103, 0x11ff, 256, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_BerryTree, gEventObjectPicTable_PechaBerryTree, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BerryTreeLateStages = {0xffff, 0x1103, 0x11ff, 256, 16, 32, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_BerryTree, gEventObjectPicTable_PechaBerryTree, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_ProfBirch = {0xffff, 0x1105, 0x11ff, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_ProfBirch, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Man5 = {0xffff, 0x1106, 0x11ff, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Man5, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Man6 = {0xffff, 0x1104, 0x11ff, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Man6, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_ReporterM = {0xffff, 0x1106, 0x11ff, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_ReporterM, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_ReporterF = {0xffff, 0x1106, 0x11ff, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_ReporterF, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Bard = {0xffff, 0x1103, 0x11ff, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_MauvilleOldMan1, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Hipster = {0xffff, 0x1104, 0x11ff, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_MauvilleOldMan1, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Trader = {0xffff, 0x1105, 0x11ff, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_MauvilleOldMan1, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Storyteller = {0xffff, 0x1103, 0x11ff, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_MauvilleOldMan2, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Giddy = {0xffff, 0x1104, 0x11ff, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_MauvilleOldMan2, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_UnusedMauvilleOldMan1 = {0xffff, 0x1105, 0x11ff, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_MauvilleOldMan2, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_UnusedMauvilleOldMan2 = {0xffff, 0x1106, 0x11ff, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_MauvilleOldMan2, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_UnusedNatuDoll = {0xffff, 0x1105, 0x11ff, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_UnusedNatuDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_UnusedMagnemiteDoll = {0xffff, 0x1105, 0x11ff, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_UnusedMagnemiteDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_UnusedSquirtleDoll = {0xffff, 0x1103, 0x11ff, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_UnusedSquirtleDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_UnusedWooperDoll = {0xffff, 0x1105, 0x11ff, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_UnusedWooperDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_UnusedPikachuDoll = {0xffff, 0x1104, 0x11ff, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_UnusedPikachuDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_UnusedPorygon2Doll = {0xffff, 0x1103, 0x11ff, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_UnusedPorygon2Doll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_CuttableTree = {0xffff, 0x1105, 0x11ff, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_CuttableTree, gEventObjectPicTable_CuttableTree, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MartEmployee = {0xffff, 0x1103, 0x11ff, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_MartEmployee, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RooftopSaleWoman = {0xffff, 0x1103, 0x11ff, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_RooftopSaleWoman, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Teala = {0xffff, 0x1103, 0x11ff, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Teala, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BreakableRock = {0xffff, 0x1103, 0x11ff, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_BreakableRock, gEventObjectPicTable_BreakableRock, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_PushableBoulder = {0xffff, 0x1103, 0x11ff, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_PushableBoulder, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MrBrineysBoat = {0xffff, 0x1105, 0x11ff, 512, 32, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gFieldOamData_32x32, gEventObjectSubspriteTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_MrBrineysBoat, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MayNormal = {0xffff, 0x1110, 0x1102, 512, 16, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_BrendanMayNormal, gEventObjectPicTable_MayNormal, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MayMachBike = {0xffff, 0x1110, 0x1102, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gFieldOamData_32x32, gEventObjectSubspriteTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_MayMachBike, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MayAcroBike = {0xffff, 0x1110, 0x1102, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gFieldOamData_32x32, gEventObjectSubspriteTables_32x32, gEventObjectImageAnimTable_AcroBike, gEventObjectPicTable_MayAcroBike, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MaySurfing = {0xffff, 0x1110, 0x11ff, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gFieldOamData_32x32, gEventObjectSubspriteTables_32x32, gEventObjectImageAnimTable_Surfing, gEventObjectPicTable_MaySurfing, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MayFieldMove = {0xffff, 0x1110, 0x1102, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_32x32, gEventObjectSubspriteTables_32x32, gEventObjectImageAnimTable_FieldMove, gEventObjectPicTable_MayFieldMove, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Truck = {0xffff, 0x110d, 0x11ff, 1152, 48, 48, 10, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_32x32, gEventObjectSubspriteTables_Truck, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_Truck, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MachokeCarryingBox = {0xffff, 0x110e, 0x11ff, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_32x32, gEventObjectSubspriteTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_MachokeCarryingBox, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MachokeFacingAway = {0xffff, 0x110e, 0x11ff, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_32x32, gEventObjectSubspriteTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_MachokeFacingAway, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BirchsBag = {0xffff, 0x1104, 0x11ff, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_BirchsBag, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Poochyena = {0xffff, 0x110f, 0x11ff, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_32x32, gEventObjectSubspriteTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Poochyena, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Artist = {0xffff, 0x1106, 0x11ff, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Artist, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RivalBrendanNormal = {0xffff, 0x1100, 0x1102, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_BrendanMayNormal, gEventObjectPicTable_BrendanNormal, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RivalBrendanMachBike = {0xffff, 0x1100, 0x1102, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gFieldOamData_32x32, gEventObjectSubspriteTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_BrendanMachBike, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RivalBrendanAcroBike = {0xffff, 0x1100, 0x1102, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gFieldOamData_32x32, gEventObjectSubspriteTables_32x32, gEventObjectImageAnimTable_AcroBike, gEventObjectPicTable_BrendanAcroBike, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RivalBrendanSurfing = {0xffff, 0x1100, 0x11ff, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gFieldOamData_32x32, gEventObjectSubspriteTables_32x32, gEventObjectImageAnimTable_Surfing, gEventObjectPicTable_BrendanSurfing, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RivalBrendanFieldMove = {0xffff, 0x1100, 0x1102, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_32x32, gEventObjectSubspriteTables_32x32, gEventObjectImageAnimTable_FieldMove, gEventObjectPicTable_BrendanFieldMove, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RivalMayNormal = {0xffff, 0x1110, 0x1102, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_BrendanMayNormal, gEventObjectPicTable_MayNormal, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RivalMayMachBike = {0xffff, 0x1110, 0x1102, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gFieldOamData_32x32, gEventObjectSubspriteTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_MayMachBike, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RivalMayAcroBike = {0xffff, 0x1110, 0x1102, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gFieldOamData_32x32, gEventObjectSubspriteTables_32x32, gEventObjectImageAnimTable_AcroBike, gEventObjectPicTable_MayAcroBike, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RivalMaySurfing = {0xffff, 0x1110, 0x11ff, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gFieldOamData_32x32, gEventObjectSubspriteTables_32x32, gEventObjectImageAnimTable_Surfing, gEventObjectPicTable_MaySurfing, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RivalMayFieldMove = {0xffff, 0x1110, 0x1102, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_32x32, gEventObjectSubspriteTables_32x32, gEventObjectImageAnimTable_FieldMove, gEventObjectPicTable_MayFieldMove, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Cameraman = {0xffff, 0x1106, 0x11ff, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Cameraman, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BrendanUnderwater = {0xffff, 0x1115, 0x11ff, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gFieldOamData_32x32, gEventObjectSubspriteTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_BrendanUnderwater, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MayUnderwater = {0xffff, 0x1115, 0x11ff, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gFieldOamData_32x32, gEventObjectSubspriteTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_MayUnderwater, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MovingBox = {0xffff, 0x1112, 0x11ff, 128, 16, 16, 10, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_MovingBox, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_CableCar = {0xffff, 0x1113, 0x11ff, 2048, 64, 64, 10, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_64x64, gEventObjectSubspriteTables_CableCar, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_CableCar, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Scientist2 = {0xffff, 0x1103, 0x11ff, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Scientist2, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Man7 = {0xffff, 0x1104, 0x11ff, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Man7, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_AquaMemberM = {0xffff, 0x1106, 0x11ff, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_AquaMemberM, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_AquaMemberF = {0xffff, 0x1106, 0x11ff, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_AquaMemberF, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MagmaMemberM = {0xffff, 0x1104, 0x11ff, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_MagmaMemberM, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MagmaMemberF = {0xffff, 0x1104, 0x11ff, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_MagmaMemberF, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Sidney = {0xffff, 0x1104, 0x11ff, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Sidney, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Phoebe = {0xffff, 0x1103, 0x11ff, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Phoebe, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Glacia = {0xffff, 0x1104, 0x11ff, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Glacia, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Drake = {0xffff, 0x1105, 0x11ff, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Drake, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Roxanne = {0xffff, 0x1103, 0x11ff, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Roxanne, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Brawly = {0xffff, 0x1105, 0x11ff, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Brawly, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Wattson = {0xffff, 0x1104, 0x11ff, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Wattson, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Flannery = {0xffff, 0x1103, 0x11ff, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Flannery, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Norman = {0xffff, 0x1106, 0x11ff, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Norman, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Winona = {0xffff, 0x1106, 0x11ff, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Winona, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Liza = {0xffff, 0x1103, 0x11ff, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Liza, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Tate = {0xffff, 0x1103, 0x11ff, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Tate, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Wallace = {0xffff, 0x1106, 0x11ff, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Wallace, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Steven = {0xffff, 0x1106, 0x11ff, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Steven, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Wally = {0xffff, 0x1103, 0x11ff, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Wally, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_LittleBoy3 = {0xffff, 0x1103, 0x11ff, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_LittleBoy3, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BrendanFishing = {0xffff, 0x1100, 0x1102, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_32x32, gEventObjectSubspriteTables_32x32, gEventObjectImageAnimTable_Fishing, gEventObjectPicTable_BrendanFishing, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MayFishing = {0xffff, 0x1110, 0x1102, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_32x32, gEventObjectSubspriteTables_32x32, gEventObjectImageAnimTable_Fishing, gEventObjectPicTable_MayFishing, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_HotSpringsOldWoman = {0xffff, 0x1106, 0x11ff, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_HotSpringsOldWoman, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_SSTidal = {0xffff, 0x1114, 0x11ff, 1920, 96, 40, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gFieldOamData_8x8, gEventObjectSubspriteTables_SSTidal, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_SSTidal, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_SubmarineShadow = {0xffff, 0x111a, 0x11ff, 1408, 88, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gFieldOamData_8x8, gEventObjectSubspriteTables_SubmarineShadow, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_SubmarineShadow, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_PichuDoll = {0xffff, 0x1104, 0x11ff, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_PichuDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_PikachuDoll = {0xffff, 0x1104, 0x11ff, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_PikachuDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MarillDoll = {0xffff, 0x1103, 0x11ff, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_MarillDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_TogepiDoll = {0xffff, 0x1105, 0x11ff, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_TogepiDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_CyndaquilDoll = {0xffff, 0x1106, 0x11ff, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_CyndaquilDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_ChikoritaDoll = {0xffff, 0x1105, 0x11ff, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_ChikoritaDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_TotodileDoll = {0xffff, 0x1103, 0x11ff, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_TotodileDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_JigglypuffDoll = {0xffff, 0x1103, 0x11ff, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_JigglypuffDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MeowthDoll = {0xffff, 0x1104, 0x11ff, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_MeowthDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_ClefairyDoll = {0xffff, 0x1103, 0x11ff, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_ClefairyDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_DittoDoll = {0xffff, 0x1106, 0x11ff, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_DittoDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_SmoochumDoll = {0xffff, 0x1106, 0x11ff, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_SmoochumDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_TreeckoDoll = {0xffff, 0x1105, 0x11ff, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_TreeckoDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_TorchicDoll = {0xffff, 0x1104, 0x11ff, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_TorchicDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MudkipDoll = {0xffff, 0x1103, 0x11ff, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_MudkipDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_DuskullDoll = {0xffff, 0x1106, 0x11ff, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_DuskullDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_WynautDoll = {0xffff, 0x1103, 0x11ff, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_WynautDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BaltoyDoll = {0xffff, 0x1103, 0x11ff, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_BaltoyDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_KecleonDoll = {0xffff, 0x1105, 0x11ff, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_KecleonDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_AzurillDoll = {0xffff, 0x1103, 0x11ff, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_AzurillDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_SkittyDoll = {0xffff, 0x1103, 0x11ff, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_SkittyDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_SwabluDoll = {0xffff, 0x1103, 0x11ff, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_SwabluDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_GulpinDoll = {0xffff, 0x1105, 0x11ff, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_GulpinDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_LotadDoll = {0xffff, 0x1105, 0x11ff, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_LotadDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_SeedotDoll = {0xffff, 0x1105, 0x11ff, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_SeedotDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_PikaCushion = {0xffff, 0x1104, 0x11ff, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_PikaCushion, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RoundCushion = {0xffff, 0x1103, 0x11ff, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_RoundCushion, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_KissCushion = {0xffff, 0x1106, 0x11ff, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_KissCushion, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_ZigzagCushion = {0xffff, 0x1103, 0x11ff, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_ZigzagCushion, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_SpinCushion = {0xffff, 0x1103, 0x11ff, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_SpinCushion, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_DiamondCushion = {0xffff, 0x1106, 0x11ff, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_DiamondCushion, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BallCushion = {0xffff, 0x1105, 0x11ff, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_BallCushion, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_GrassCushion = {0xffff, 0x1105, 0x11ff, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_GrassCushion, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_FireCushion = {0xffff, 0x1104, 0x11ff, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_FireCushion, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_WaterCushion = {0xffff, 0x1103, 0x11ff, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_WaterCushion, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BigSnorlaxDoll = {0xffff, 0x1106, 0x11ff, 512, 32, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_32x32, gEventObjectSubspriteTables_32x32, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_BigSnorlaxDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BigRhydonDoll = {0xffff, 0x1106, 0x11ff, 512, 32, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_32x32, gEventObjectSubspriteTables_32x32, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_BigRhydonDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BigLaprasDoll = {0xffff, 0x1103, 0x11ff, 512, 32, 32, 2, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_32x32, gEventObjectSubspriteTables_32x32, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_BigLaprasDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BigVenusaurDoll = {0xffff, 0x1105, 0x11ff, 512, 32, 32, 4, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_32x32, gEventObjectSubspriteTables_32x32, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_BigVenusaurDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BigCharizardDoll = {0xffff, 0x1104, 0x11ff, 512, 32, 32, 3, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_32x32, gEventObjectSubspriteTables_32x32, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_BigCharizardDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BigBlastoiseDoll = {0xffff, 0x1103, 0x11ff, 512, 32, 32, 2, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_32x32, gEventObjectSubspriteTables_32x32, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_BigBlastoiseDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BigWailmerDoll = {0xffff, 0x1106, 0x11ff, 512, 32, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_32x32, gEventObjectSubspriteTables_32x32, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_BigWailmerDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BigRegirockDoll = {0xffff, 0x1103, 0x11ff, 512, 32, 32, 2, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_32x32, gEventObjectSubspriteTables_32x32, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_BigRegirockDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BigRegiceDoll = {0xffff, 0x1105, 0x11ff, 512, 32, 32, 4, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_32x32, gEventObjectSubspriteTables_32x32, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_BigRegiceDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BigRegisteelDoll = {0xffff, 0x1106, 0x11ff, 512, 32, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_32x32, gEventObjectSubspriteTables_32x32, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_BigRegisteelDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Latias = {0xffff, 0x1104, 0x11ff, 512, 32, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gFieldOamData_32x32, gEventObjectSubspriteTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_LatiasLatios, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Latios = {0xffff, 0x1103, 0x11ff, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gFieldOamData_32x32, gEventObjectSubspriteTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_LatiasLatios, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Boy5 = {0xffff, 0x1105, 0x11ff, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Boy5, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_ContestJudge = {0xffff, 0x1105, 0x11ff, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_ContestJudge, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BrendanWatering = {0xffff, 0x1100, 0x1102, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_32x32, gEventObjectSubspriteTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_BrendanWatering, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MayWatering = {0xffff, 0x1110, 0x1102, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_32x32, gEventObjectSubspriteTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_MayWatering, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BrendanDecorating = {0xffff, 0x1100, 0x1102, 256, 16, 32, 10, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_BrendanDecorating, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MayDecorating = {0xffff, 0x1110, 0x1102, 256, 16, 32, 10, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_MayDecorating, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Archie = {0xffff, 0x1103, 0x11ff, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Archie, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Maxie = {0xffff, 0x1104, 0x11ff, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Maxie, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Kyogre1 = {0xffff, 0x1106, 0x11ff, 512, 32, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_32x32, gEventObjectSubspriteTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Kyogre, gEventObjectRotScalAnimTable_KyogreGroudon};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Groudon1 = {0xffff, 0x1105, 0x11ff, 512, 32, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_32x32, gEventObjectSubspriteTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Groudon, gEventObjectRotScalAnimTable_KyogreGroudon};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Fossil = {0xffff, 0x1103, 0x11ff, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_Fossil, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Regirock = {0xffff, 0x1104, 0x11ff, 512, 32, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_32x32, gEventObjectSubspriteTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Regi, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Regice = {0xffff, 0x1105, 0x11ff, 512, 32, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_32x32, gEventObjectSubspriteTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Regi, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Registeel = {0xffff, 0x1106, 0x11ff, 512, 32, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_32x32, gEventObjectSubspriteTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Regi, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Skitty = {0xffff, 0x1103, 0x11ff, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Skitty, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Kecleon1 = {0xffff, 0x1105, 0x11ff, 128, 16, 16, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Kecleon, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Kyogre2 = {0xffff, 0x1116, 0x11ff, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_32x32, gEventObjectSubspriteTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Kyogre, gEventObjectRotScalAnimTable_KyogreGroudon};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Groudon2 = {0xffff, 0x1118, 0x11ff, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_32x32, gEventObjectSubspriteTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Groudon, gEventObjectRotScalAnimTable_KyogreGroudon};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Rayquaza = {0xffff, 0x1105, 0x11ff, 512, 32, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_32x32, gEventObjectSubspriteTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Rayquaza, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Zigzagoon = {0xffff, 0x1103, 0x11ff, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Zigzagoon, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Pikachu = {0xffff, 0x1104, 0x11ff, 128, 16, 16, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Pikachu, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Azumarill = {0xffff, 0x1103, 0x11ff, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Azumarill, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Wingull = {0xffff, 0x1103, 0x11ff, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Wingull, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Kecleon2 = {0xffff, 0x1105, 0x1102, 128, 16, 16, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Kecleon, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_TuberMSwimming = {0xffff, 0x1104, 0x11ff, 128, 16, 16, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_TuberMSwimming, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Azurill = {0xffff, 0x1103, 0x11ff, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x16, gEventObjectSubspriteTables_16x16, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Azurill, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Mom = {0xffff, 0x1106, 0x11ff, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Mom, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_LinkBrendan = {0xffff, 0x1110, 0x1102, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_BrendanMayNormal, gEventObjectPicTable_BrendanNormal, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_LinkMay = {0xffff, 0x1110, 0x1102, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gEventObjectSubspriteTables_16x32, gEventObjectImageAnimTable_BrendanMayNormal, gEventObjectPicTable_MayNormal, gDummySpriteAffineAnimTable};
+
+#endif //POKERUBY_EVENT_OBJECT_GRAPHICS_INFO_H
diff --git a/src/data/field_event_obj/event_object_graphics_info_pointers.h b/src/data/field_event_obj/event_object_graphics_info_pointers.h
new file mode 100644
index 000000000..87b7c85a6
--- /dev/null
+++ b/src/data/field_event_obj/event_object_graphics_info_pointers.h
@@ -0,0 +1,448 @@
+//
+
+//
+
+#ifndef POKERUBY_EVENT_OBJECT_GRAPHICS_INFO_POINTERS_H
+#define POKERUBY_EVENT_OBJECT_GRAPHICS_INFO_POINTERS_H
+
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BrendanNormal;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BrendanMachBike;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BrendanSurfing;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BrendanFieldMove;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_QuintyPlump;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_LittleBoy1;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_LittleGirl1;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Boy1;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Girl1;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Boy2;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Girl2;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_LittleBoy2;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_LittleGirl2;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Boy3;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Girl3;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Boy4;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Woman1;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_FatMan;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Woman2;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Man1;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Woman3;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_OldMan1;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_OldWoman1;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Man2;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Woman4;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Man3;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Woman5;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Cook;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Woman6;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_OldMan2;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_OldWoman2;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Camper;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Picnicker;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Man4;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Woman7;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Youngster;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BugCatcher;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_PsychicM;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_SchoolKidM;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Maniac;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_HexManiac;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Woman8;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_SwimmerM;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_SwimmerF;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BlackBelt;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Beauty;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Scientist1;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Lass;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Gentleman;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Sailor;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Fisherman;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RunningTriathleteM;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RunningTriathleteF;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_TuberF;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_TuberM;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Hiker;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_CyclingTriathleteM;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_CyclingTriathleteF;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Nurse;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_ItemBall;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BerryTree;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BerryTreeEarlyStages;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BerryTreeLateStages;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BrendanAcroBike;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_ProfBirch;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Man5;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Man6;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_ReporterM;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_ReporterF;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Bard;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Hipster;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Trader;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Storyteller;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Giddy;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_UnusedMauvilleOldMan1;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_UnusedMauvilleOldMan2;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_UnusedNatuDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_UnusedMagnemiteDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_UnusedSquirtleDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_UnusedWooperDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_UnusedPikachuDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_UnusedPorygon2Doll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_CuttableTree;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MartEmployee;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RooftopSaleWoman;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Teala;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BreakableRock;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_PushableBoulder;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MrBrineysBoat;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MayNormal;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MayMachBike;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MayAcroBike;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MaySurfing;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MayFieldMove;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Truck;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MachokeCarryingBox;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MachokeFacingAway;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BirchsBag;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Poochyena;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Artist;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RivalBrendanNormal;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RivalBrendanMachBike;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RivalBrendanAcroBike;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RivalBrendanSurfing;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RivalBrendanFieldMove;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RivalMayNormal;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RivalMayMachBike;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RivalMayAcroBike;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RivalMaySurfing;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RivalMayFieldMove;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Cameraman;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BrendanUnderwater;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MayUnderwater;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MovingBox;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_CableCar;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Scientist2;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Man7;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_AquaMemberM;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_AquaMemberF;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MagmaMemberM;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MagmaMemberF;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Sidney;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Phoebe;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Glacia;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Drake;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Roxanne;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Brawly;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Wattson;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Flannery;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Norman;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Winona;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Liza;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Tate;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Wallace;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Steven;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Wally;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_LittleBoy3;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BrendanFishing;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MayFishing;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_HotSpringsOldWoman;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_SSTidal;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_SubmarineShadow;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_PichuDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_PikachuDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MarillDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_TogepiDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_CyndaquilDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_ChikoritaDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_TotodileDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_JigglypuffDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MeowthDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_ClefairyDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_DittoDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_SmoochumDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_TreeckoDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_TorchicDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MudkipDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_DuskullDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_WynautDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BaltoyDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_KecleonDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_AzurillDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_SkittyDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_SwabluDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_GulpinDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_LotadDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_SeedotDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_PikaCushion;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RoundCushion;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_KissCushion;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_ZigzagCushion;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_SpinCushion;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_DiamondCushion;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BallCushion;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_GrassCushion;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_FireCushion;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_WaterCushion;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BigSnorlaxDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BigRhydonDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BigLaprasDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BigVenusaurDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BigCharizardDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BigBlastoiseDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BigWailmerDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BigRegirockDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BigRegiceDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BigRegisteelDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Latias;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Latios;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Boy5;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_ContestJudge;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BrendanWatering;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MayWatering;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BrendanDecorating;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MayDecorating;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Archie;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Maxie;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Kyogre1;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Groudon1;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Fossil;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Regirock;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Regice;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Registeel;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Skitty;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Kecleon1;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Kyogre2;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Groudon2;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Rayquaza;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Zigzagoon;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Pikachu;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Azumarill;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Wingull;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Kecleon2;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_TuberMSwimming;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Azurill;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Mom;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_LinkBrendan;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_LinkMay;
+
+const struct EventObjectGraphicsInfo *const gEventObjectGraphicsInfoPointers[] = {
+ &gEventObjectGraphicsInfo_BrendanNormal,
+ &gEventObjectGraphicsInfo_BrendanMachBike,
+ &gEventObjectGraphicsInfo_BrendanSurfing,
+ &gEventObjectGraphicsInfo_BrendanFieldMove,
+ &gEventObjectGraphicsInfo_QuintyPlump,
+ &gEventObjectGraphicsInfo_LittleBoy1,
+ &gEventObjectGraphicsInfo_LittleGirl1,
+ &gEventObjectGraphicsInfo_Boy1,
+ &gEventObjectGraphicsInfo_Girl1,
+ &gEventObjectGraphicsInfo_Boy2,
+ &gEventObjectGraphicsInfo_Girl2,
+ &gEventObjectGraphicsInfo_LittleBoy2,
+ &gEventObjectGraphicsInfo_LittleGirl2,
+ &gEventObjectGraphicsInfo_Boy3,
+ &gEventObjectGraphicsInfo_Girl3,
+ &gEventObjectGraphicsInfo_Boy4,
+ &gEventObjectGraphicsInfo_Woman1,
+ &gEventObjectGraphicsInfo_FatMan,
+ &gEventObjectGraphicsInfo_Woman2,
+ &gEventObjectGraphicsInfo_Man1,
+ &gEventObjectGraphicsInfo_Woman3,
+ &gEventObjectGraphicsInfo_OldMan1,
+ &gEventObjectGraphicsInfo_OldWoman1,
+ &gEventObjectGraphicsInfo_Man2,
+ &gEventObjectGraphicsInfo_Woman4,
+ &gEventObjectGraphicsInfo_Man3,
+ &gEventObjectGraphicsInfo_Woman5,
+ &gEventObjectGraphicsInfo_Cook,
+ &gEventObjectGraphicsInfo_Woman6,
+ &gEventObjectGraphicsInfo_OldMan2,
+ &gEventObjectGraphicsInfo_OldWoman2,
+ &gEventObjectGraphicsInfo_Camper,
+ &gEventObjectGraphicsInfo_Picnicker,
+ &gEventObjectGraphicsInfo_Man4,
+ &gEventObjectGraphicsInfo_Woman7,
+ &gEventObjectGraphicsInfo_Youngster,
+ &gEventObjectGraphicsInfo_BugCatcher,
+ &gEventObjectGraphicsInfo_PsychicM,
+ &gEventObjectGraphicsInfo_SchoolKidM,
+ &gEventObjectGraphicsInfo_Maniac,
+ &gEventObjectGraphicsInfo_HexManiac,
+ &gEventObjectGraphicsInfo_Woman8,
+ &gEventObjectGraphicsInfo_SwimmerM,
+ &gEventObjectGraphicsInfo_SwimmerF,
+ &gEventObjectGraphicsInfo_BlackBelt,
+ &gEventObjectGraphicsInfo_Beauty,
+ &gEventObjectGraphicsInfo_Scientist1,
+ &gEventObjectGraphicsInfo_Lass,
+ &gEventObjectGraphicsInfo_Gentleman,
+ &gEventObjectGraphicsInfo_Sailor,
+ &gEventObjectGraphicsInfo_Fisherman,
+ &gEventObjectGraphicsInfo_RunningTriathleteM,
+ &gEventObjectGraphicsInfo_RunningTriathleteF,
+ &gEventObjectGraphicsInfo_TuberF,
+ &gEventObjectGraphicsInfo_TuberM,
+ &gEventObjectGraphicsInfo_Hiker,
+ &gEventObjectGraphicsInfo_CyclingTriathleteM,
+ &gEventObjectGraphicsInfo_CyclingTriathleteF,
+ &gEventObjectGraphicsInfo_Nurse,
+ &gEventObjectGraphicsInfo_ItemBall,
+ &gEventObjectGraphicsInfo_BerryTree,
+ &gEventObjectGraphicsInfo_BerryTreeEarlyStages,
+ &gEventObjectGraphicsInfo_BerryTreeLateStages,
+ &gEventObjectGraphicsInfo_BrendanAcroBike,
+ &gEventObjectGraphicsInfo_ProfBirch,
+ &gEventObjectGraphicsInfo_Man5,
+ &gEventObjectGraphicsInfo_Man6,
+ &gEventObjectGraphicsInfo_ReporterM,
+ &gEventObjectGraphicsInfo_ReporterF,
+ &gEventObjectGraphicsInfo_Bard,
+ &gEventObjectGraphicsInfo_Hipster,
+ &gEventObjectGraphicsInfo_Trader,
+ &gEventObjectGraphicsInfo_Storyteller,
+ &gEventObjectGraphicsInfo_Giddy,
+ &gEventObjectGraphicsInfo_UnusedMauvilleOldMan1,
+ &gEventObjectGraphicsInfo_UnusedMauvilleOldMan2,
+ &gEventObjectGraphicsInfo_UnusedNatuDoll,
+ &gEventObjectGraphicsInfo_UnusedMagnemiteDoll,
+ &gEventObjectGraphicsInfo_UnusedSquirtleDoll,
+ &gEventObjectGraphicsInfo_UnusedWooperDoll,
+ &gEventObjectGraphicsInfo_UnusedPikachuDoll,
+ &gEventObjectGraphicsInfo_UnusedPorygon2Doll,
+ &gEventObjectGraphicsInfo_CuttableTree,
+ &gEventObjectGraphicsInfo_MartEmployee,
+ &gEventObjectGraphicsInfo_RooftopSaleWoman,
+ &gEventObjectGraphicsInfo_Teala,
+ &gEventObjectGraphicsInfo_BreakableRock,
+ &gEventObjectGraphicsInfo_PushableBoulder,
+ &gEventObjectGraphicsInfo_MrBrineysBoat,
+ &gEventObjectGraphicsInfo_MayNormal,
+ &gEventObjectGraphicsInfo_MayMachBike,
+ &gEventObjectGraphicsInfo_MayAcroBike,
+ &gEventObjectGraphicsInfo_MaySurfing,
+ &gEventObjectGraphicsInfo_MayFieldMove,
+ &gEventObjectGraphicsInfo_Truck,
+ &gEventObjectGraphicsInfo_MachokeCarryingBox,
+ &gEventObjectGraphicsInfo_MachokeFacingAway,
+ &gEventObjectGraphicsInfo_BirchsBag,
+ &gEventObjectGraphicsInfo_Poochyena,
+ &gEventObjectGraphicsInfo_Artist,
+ &gEventObjectGraphicsInfo_RivalBrendanNormal,
+ &gEventObjectGraphicsInfo_RivalBrendanMachBike,
+ &gEventObjectGraphicsInfo_RivalBrendanAcroBike,
+ &gEventObjectGraphicsInfo_RivalBrendanSurfing,
+ &gEventObjectGraphicsInfo_RivalBrendanFieldMove,
+ &gEventObjectGraphicsInfo_RivalMayNormal,
+ &gEventObjectGraphicsInfo_RivalMayMachBike,
+ &gEventObjectGraphicsInfo_RivalMayAcroBike,
+ &gEventObjectGraphicsInfo_RivalMaySurfing,
+ &gEventObjectGraphicsInfo_RivalMayFieldMove,
+ &gEventObjectGraphicsInfo_Cameraman,
+ &gEventObjectGraphicsInfo_BrendanUnderwater,
+ &gEventObjectGraphicsInfo_MayUnderwater,
+ &gEventObjectGraphicsInfo_MovingBox,
+ &gEventObjectGraphicsInfo_CableCar,
+ &gEventObjectGraphicsInfo_Scientist2,
+ &gEventObjectGraphicsInfo_Man7,
+ &gEventObjectGraphicsInfo_AquaMemberM,
+ &gEventObjectGraphicsInfo_AquaMemberF,
+ &gEventObjectGraphicsInfo_MagmaMemberM,
+ &gEventObjectGraphicsInfo_MagmaMemberF,
+ &gEventObjectGraphicsInfo_Sidney,
+ &gEventObjectGraphicsInfo_Phoebe,
+ &gEventObjectGraphicsInfo_Glacia,
+ &gEventObjectGraphicsInfo_Drake,
+ &gEventObjectGraphicsInfo_Roxanne,
+ &gEventObjectGraphicsInfo_Brawly,
+ &gEventObjectGraphicsInfo_Wattson,
+ &gEventObjectGraphicsInfo_Flannery,
+ &gEventObjectGraphicsInfo_Norman,
+ &gEventObjectGraphicsInfo_Winona,
+ &gEventObjectGraphicsInfo_Liza,
+ &gEventObjectGraphicsInfo_Tate,
+ &gEventObjectGraphicsInfo_Wallace,
+ &gEventObjectGraphicsInfo_Steven,
+ &gEventObjectGraphicsInfo_Wally,
+ &gEventObjectGraphicsInfo_LittleBoy3,
+ &gEventObjectGraphicsInfo_BrendanFishing,
+ &gEventObjectGraphicsInfo_MayFishing,
+ &gEventObjectGraphicsInfo_HotSpringsOldWoman,
+ &gEventObjectGraphicsInfo_SSTidal,
+ &gEventObjectGraphicsInfo_SubmarineShadow,
+ &gEventObjectGraphicsInfo_PichuDoll,
+ &gEventObjectGraphicsInfo_PikachuDoll,
+ &gEventObjectGraphicsInfo_MarillDoll,
+ &gEventObjectGraphicsInfo_TogepiDoll,
+ &gEventObjectGraphicsInfo_CyndaquilDoll,
+ &gEventObjectGraphicsInfo_ChikoritaDoll,
+ &gEventObjectGraphicsInfo_TotodileDoll,
+ &gEventObjectGraphicsInfo_JigglypuffDoll,
+ &gEventObjectGraphicsInfo_MeowthDoll,
+ &gEventObjectGraphicsInfo_ClefairyDoll,
+ &gEventObjectGraphicsInfo_DittoDoll,
+ &gEventObjectGraphicsInfo_SmoochumDoll,
+ &gEventObjectGraphicsInfo_TreeckoDoll,
+ &gEventObjectGraphicsInfo_TorchicDoll,
+ &gEventObjectGraphicsInfo_MudkipDoll,
+ &gEventObjectGraphicsInfo_DuskullDoll,
+ &gEventObjectGraphicsInfo_WynautDoll,
+ &gEventObjectGraphicsInfo_BaltoyDoll,
+ &gEventObjectGraphicsInfo_KecleonDoll,
+ &gEventObjectGraphicsInfo_AzurillDoll,
+ &gEventObjectGraphicsInfo_SkittyDoll,
+ &gEventObjectGraphicsInfo_SwabluDoll,
+ &gEventObjectGraphicsInfo_GulpinDoll,
+ &gEventObjectGraphicsInfo_LotadDoll,
+ &gEventObjectGraphicsInfo_SeedotDoll,
+ &gEventObjectGraphicsInfo_PikaCushion,
+ &gEventObjectGraphicsInfo_RoundCushion,
+ &gEventObjectGraphicsInfo_KissCushion,
+ &gEventObjectGraphicsInfo_ZigzagCushion,
+ &gEventObjectGraphicsInfo_SpinCushion,
+ &gEventObjectGraphicsInfo_DiamondCushion,
+ &gEventObjectGraphicsInfo_BallCushion,
+ &gEventObjectGraphicsInfo_GrassCushion,
+ &gEventObjectGraphicsInfo_FireCushion,
+ &gEventObjectGraphicsInfo_WaterCushion,
+ &gEventObjectGraphicsInfo_BigSnorlaxDoll,
+ &gEventObjectGraphicsInfo_BigRhydonDoll,
+ &gEventObjectGraphicsInfo_BigLaprasDoll,
+ &gEventObjectGraphicsInfo_BigVenusaurDoll,
+ &gEventObjectGraphicsInfo_BigCharizardDoll,
+ &gEventObjectGraphicsInfo_BigBlastoiseDoll,
+ &gEventObjectGraphicsInfo_BigWailmerDoll,
+ &gEventObjectGraphicsInfo_BigRegirockDoll,
+ &gEventObjectGraphicsInfo_BigRegiceDoll,
+ &gEventObjectGraphicsInfo_BigRegisteelDoll,
+ &gEventObjectGraphicsInfo_Latias,
+ &gEventObjectGraphicsInfo_Latios,
+ &gEventObjectGraphicsInfo_Boy5,
+ &gEventObjectGraphicsInfo_ContestJudge,
+ &gEventObjectGraphicsInfo_BrendanWatering,
+ &gEventObjectGraphicsInfo_MayWatering,
+ &gEventObjectGraphicsInfo_BrendanDecorating,
+ &gEventObjectGraphicsInfo_MayDecorating,
+ &gEventObjectGraphicsInfo_Archie,
+ &gEventObjectGraphicsInfo_Maxie,
+ &gEventObjectGraphicsInfo_Kyogre1,
+ &gEventObjectGraphicsInfo_Groudon1,
+ &gEventObjectGraphicsInfo_Fossil,
+ &gEventObjectGraphicsInfo_Regirock,
+ &gEventObjectGraphicsInfo_Regice,
+ &gEventObjectGraphicsInfo_Registeel,
+ &gEventObjectGraphicsInfo_Skitty,
+ &gEventObjectGraphicsInfo_Kecleon1,
+ &gEventObjectGraphicsInfo_Kyogre2,
+ &gEventObjectGraphicsInfo_Groudon2,
+ &gEventObjectGraphicsInfo_Rayquaza,
+ &gEventObjectGraphicsInfo_Zigzagoon,
+ &gEventObjectGraphicsInfo_Pikachu,
+ &gEventObjectGraphicsInfo_Azumarill,
+ &gEventObjectGraphicsInfo_Wingull,
+ &gEventObjectGraphicsInfo_Kecleon2,
+ &gEventObjectGraphicsInfo_TuberMSwimming,
+ &gEventObjectGraphicsInfo_Azurill,
+ &gEventObjectGraphicsInfo_Mom,
+ &gEventObjectGraphicsInfo_LinkBrendan,
+ &gEventObjectGraphicsInfo_LinkMay
+};
+
+#endif //POKERUBY_EVENT_OBJECT_GRAPHICS_INFO_POINTERS_H
diff --git a/src/data/field_event_obj/event_object_pic_tables.h b/src/data/field_event_obj/event_object_pic_tables.h
new file mode 100644
index 000000000..f7ed77f93
--- /dev/null
+++ b/src/data/field_event_obj/event_object_pic_tables.h
@@ -0,0 +1,1879 @@
+//
+
+//
+
+#ifndef POKERUBY_EVENT_OBJECT_PIC_TABLES_H
+#define POKERUBY_EVENT_OBJECT_PIC_TABLES_H
+
+const struct SpriteFrameImage gEventObjectPicTable_BrendanNormal[] = {
+ obj_frame_tiles(gEventObjectPic_BrendanNormal_0),
+ obj_frame_tiles(gEventObjectPic_BrendanNormal_1),
+ obj_frame_tiles(gEventObjectPic_BrendanNormal_2),
+ obj_frame_tiles(gEventObjectPic_BrendanNormal_3),
+ obj_frame_tiles(gEventObjectPic_BrendanNormal_4),
+ obj_frame_tiles(gEventObjectPic_BrendanNormal_5),
+ obj_frame_tiles(gEventObjectPic_BrendanNormal_6),
+ obj_frame_tiles(gEventObjectPic_BrendanNormal_7),
+ obj_frame_tiles(gEventObjectPic_BrendanNormal_8),
+ obj_frame_tiles(gEventObjectPic_BrendanNormal_9),
+ obj_frame_tiles(gEventObjectPic_BrendanNormal_10),
+ obj_frame_tiles(gEventObjectPic_BrendanNormal_11),
+ obj_frame_tiles(gEventObjectPic_BrendanNormal_12),
+ obj_frame_tiles(gEventObjectPic_BrendanNormal_13),
+ obj_frame_tiles(gEventObjectPic_BrendanNormal_14),
+ obj_frame_tiles(gEventObjectPic_BrendanNormal_15),
+ obj_frame_tiles(gEventObjectPic_BrendanNormal_16),
+ obj_frame_tiles(gEventObjectPic_BrendanNormal_17)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_BrendanMachBike[] = {
+ obj_frame_tiles(gEventObjectPic_BrendanMachBike_0),
+ obj_frame_tiles(gEventObjectPic_BrendanMachBike_1),
+ obj_frame_tiles(gEventObjectPic_BrendanMachBike_2),
+ obj_frame_tiles(gEventObjectPic_BrendanMachBike_3),
+ obj_frame_tiles(gEventObjectPic_BrendanMachBike_4),
+ obj_frame_tiles(gEventObjectPic_BrendanMachBike_5),
+ obj_frame_tiles(gEventObjectPic_BrendanMachBike_6),
+ obj_frame_tiles(gEventObjectPic_BrendanMachBike_7),
+ obj_frame_tiles(gEventObjectPic_BrendanMachBike_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_BrendanAcroBike[] = {
+ obj_frame_tiles(gEventObjectPic_BrendanAcroBike_0),
+ obj_frame_tiles(gEventObjectPic_BrendanAcroBike_1),
+ obj_frame_tiles(gEventObjectPic_BrendanAcroBike_2),
+ obj_frame_tiles(gEventObjectPic_BrendanAcroBike_3),
+ obj_frame_tiles(gEventObjectPic_BrendanAcroBike_4),
+ obj_frame_tiles(gEventObjectPic_BrendanAcroBike_5),
+ obj_frame_tiles(gEventObjectPic_BrendanAcroBike_6),
+ obj_frame_tiles(gEventObjectPic_BrendanAcroBike_7),
+ obj_frame_tiles(gEventObjectPic_BrendanAcroBike_8),
+ obj_frame_tiles(gEventObjectPic_BrendanAcroBike_9),
+ obj_frame_tiles(gEventObjectPic_BrendanAcroBike_10),
+ obj_frame_tiles(gEventObjectPic_BrendanAcroBike_11),
+ obj_frame_tiles(gEventObjectPic_BrendanAcroBike_12),
+ obj_frame_tiles(gEventObjectPic_BrendanAcroBike_13),
+ obj_frame_tiles(gEventObjectPic_BrendanAcroBike_14),
+ obj_frame_tiles(gEventObjectPic_BrendanAcroBike_15),
+ obj_frame_tiles(gEventObjectPic_BrendanAcroBike_16),
+ obj_frame_tiles(gEventObjectPic_BrendanAcroBike_17),
+ obj_frame_tiles(gEventObjectPic_BrendanAcroBike_18),
+ obj_frame_tiles(gEventObjectPic_BrendanAcroBike_19),
+ obj_frame_tiles(gEventObjectPic_BrendanAcroBike_20),
+ obj_frame_tiles(gEventObjectPic_BrendanAcroBike_21),
+ obj_frame_tiles(gEventObjectPic_BrendanAcroBike_22),
+ obj_frame_tiles(gEventObjectPic_BrendanAcroBike_23),
+ obj_frame_tiles(gEventObjectPic_BrendanAcroBike_24),
+ obj_frame_tiles(gEventObjectPic_BrendanAcroBike_25),
+ obj_frame_tiles(gEventObjectPic_BrendanAcroBike_26)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_BrendanSurfing[] = {
+ obj_frame_tiles(gEventObjectPic_BrendanSurfing_0),
+ obj_frame_tiles(gEventObjectPic_BrendanSurfing_1),
+ obj_frame_tiles(gEventObjectPic_BrendanSurfing_2),
+ obj_frame_tiles(gEventObjectPic_BrendanSurfing_0),
+ obj_frame_tiles(gEventObjectPic_BrendanSurfing_0),
+ obj_frame_tiles(gEventObjectPic_BrendanSurfing_1),
+ obj_frame_tiles(gEventObjectPic_BrendanSurfing_1),
+ obj_frame_tiles(gEventObjectPic_BrendanSurfing_2),
+ obj_frame_tiles(gEventObjectPic_BrendanSurfing_2),
+ obj_frame_tiles(gEventObjectPic_BrendanSurfing_3),
+ obj_frame_tiles(gEventObjectPic_BrendanSurfing_4),
+ obj_frame_tiles(gEventObjectPic_BrendanSurfing_5)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_BrendanUnderwater[] = {
+ obj_frame_tiles(gEventObjectPic_BrendanUnderwater_0),
+ obj_frame_tiles(gEventObjectPic_BrendanUnderwater_1),
+ obj_frame_tiles(gEventObjectPic_BrendanUnderwater_2),
+ obj_frame_tiles(gEventObjectPic_BrendanUnderwater_0),
+ obj_frame_tiles(gEventObjectPic_BrendanUnderwater_0),
+ obj_frame_tiles(gEventObjectPic_BrendanUnderwater_1),
+ obj_frame_tiles(gEventObjectPic_BrendanUnderwater_1),
+ obj_frame_tiles(gEventObjectPic_BrendanUnderwater_2),
+ obj_frame_tiles(gEventObjectPic_BrendanUnderwater_2)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_BrendanFieldMove[] = {
+ obj_frame_tiles(gEventObjectPic_BrendanFieldMove_0),
+ obj_frame_tiles(gEventObjectPic_BrendanFieldMove_1),
+ obj_frame_tiles(gEventObjectPic_BrendanFieldMove_2),
+ obj_frame_tiles(gEventObjectPic_BrendanFieldMove_3),
+ obj_frame_tiles(gEventObjectPic_BrendanFieldMove_4)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_QuintyPlump[] = {
+ obj_frame_tiles(gEventObjectPic_QuintyPlump_0),
+ obj_frame_tiles(gEventObjectPic_QuintyPlump_1),
+ obj_frame_tiles(gEventObjectPic_QuintyPlump_2),
+ obj_frame_tiles(gEventObjectPic_QuintyPlump_3),
+ obj_frame_tiles(gEventObjectPic_QuintyPlump_4),
+ obj_frame_tiles(gEventObjectPic_QuintyPlump_5),
+ obj_frame_tiles(gEventObjectPic_QuintyPlump_6)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_LittleBoy1[] = {
+ obj_frame_tiles(gEventObjectPic_LittleBoy1_0),
+ obj_frame_tiles(gEventObjectPic_LittleBoy1_1),
+ obj_frame_tiles(gEventObjectPic_LittleBoy1_2),
+ obj_frame_tiles(gEventObjectPic_LittleBoy1_3),
+ obj_frame_tiles(gEventObjectPic_LittleBoy1_4),
+ obj_frame_tiles(gEventObjectPic_LittleBoy1_5),
+ obj_frame_tiles(gEventObjectPic_LittleBoy1_6),
+ obj_frame_tiles(gEventObjectPic_LittleBoy1_7),
+ obj_frame_tiles(gEventObjectPic_LittleBoy1_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_LittleGirl1[] = {
+ obj_frame_tiles(gEventObjectPic_LittleGirl1_0),
+ obj_frame_tiles(gEventObjectPic_LittleGirl1_1),
+ obj_frame_tiles(gEventObjectPic_LittleGirl1_2),
+ obj_frame_tiles(gEventObjectPic_LittleGirl1_3),
+ obj_frame_tiles(gEventObjectPic_LittleGirl1_4),
+ obj_frame_tiles(gEventObjectPic_LittleGirl1_5),
+ obj_frame_tiles(gEventObjectPic_LittleGirl1_6),
+ obj_frame_tiles(gEventObjectPic_LittleGirl1_7),
+ obj_frame_tiles(gEventObjectPic_LittleGirl1_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Boy1[] = {
+ obj_frame_tiles(gEventObjectPic_Boy1_0),
+ obj_frame_tiles(gEventObjectPic_Boy1_1),
+ obj_frame_tiles(gEventObjectPic_Boy1_2),
+ obj_frame_tiles(gEventObjectPic_Boy1_3),
+ obj_frame_tiles(gEventObjectPic_Boy1_4),
+ obj_frame_tiles(gEventObjectPic_Boy1_5),
+ obj_frame_tiles(gEventObjectPic_Boy1_6),
+ obj_frame_tiles(gEventObjectPic_Boy1_7),
+ obj_frame_tiles(gEventObjectPic_Boy1_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Girl1[] = {
+ obj_frame_tiles(gEventObjectPic_Girl1_0),
+ obj_frame_tiles(gEventObjectPic_Girl1_1),
+ obj_frame_tiles(gEventObjectPic_Girl1_2),
+ obj_frame_tiles(gEventObjectPic_Girl1_3),
+ obj_frame_tiles(gEventObjectPic_Girl1_4),
+ obj_frame_tiles(gEventObjectPic_Girl1_5),
+ obj_frame_tiles(gEventObjectPic_Girl1_6),
+ obj_frame_tiles(gEventObjectPic_Girl1_7),
+ obj_frame_tiles(gEventObjectPic_Girl1_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Boy2[] = {
+ obj_frame_tiles(gEventObjectPic_Boy2_0),
+ obj_frame_tiles(gEventObjectPic_Boy2_1),
+ obj_frame_tiles(gEventObjectPic_Boy2_2),
+ obj_frame_tiles(gEventObjectPic_Boy2_3),
+ obj_frame_tiles(gEventObjectPic_Boy2_4),
+ obj_frame_tiles(gEventObjectPic_Boy2_5),
+ obj_frame_tiles(gEventObjectPic_Boy2_6),
+ obj_frame_tiles(gEventObjectPic_Boy2_7),
+ obj_frame_tiles(gEventObjectPic_Boy2_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Girl2[] = {
+ obj_frame_tiles(gEventObjectPic_Girl2_0),
+ obj_frame_tiles(gEventObjectPic_Girl2_1),
+ obj_frame_tiles(gEventObjectPic_Girl2_2),
+ obj_frame_tiles(gEventObjectPic_Girl2_3),
+ obj_frame_tiles(gEventObjectPic_Girl2_4),
+ obj_frame_tiles(gEventObjectPic_Girl2_5),
+ obj_frame_tiles(gEventObjectPic_Girl2_6),
+ obj_frame_tiles(gEventObjectPic_Girl2_7),
+ obj_frame_tiles(gEventObjectPic_Girl2_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_LittleBoy2[] = {
+ obj_frame_tiles(gEventObjectPic_LittleBoy2_0),
+ obj_frame_tiles(gEventObjectPic_LittleBoy2_1),
+ obj_frame_tiles(gEventObjectPic_LittleBoy2_2),
+ obj_frame_tiles(gEventObjectPic_LittleBoy2_3),
+ obj_frame_tiles(gEventObjectPic_LittleBoy2_4),
+ obj_frame_tiles(gEventObjectPic_LittleBoy2_5),
+ obj_frame_tiles(gEventObjectPic_LittleBoy2_6),
+ obj_frame_tiles(gEventObjectPic_LittleBoy2_7),
+ obj_frame_tiles(gEventObjectPic_LittleBoy2_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_LittleGirl2[] = {
+ obj_frame_tiles(gEventObjectPic_LittleGirl2_0),
+ obj_frame_tiles(gEventObjectPic_LittleGirl2_1),
+ obj_frame_tiles(gEventObjectPic_LittleGirl2_2),
+ obj_frame_tiles(gEventObjectPic_LittleGirl2_3),
+ obj_frame_tiles(gEventObjectPic_LittleGirl2_4),
+ obj_frame_tiles(gEventObjectPic_LittleGirl2_5),
+ obj_frame_tiles(gEventObjectPic_LittleGirl2_6),
+ obj_frame_tiles(gEventObjectPic_LittleGirl2_7),
+ obj_frame_tiles(gEventObjectPic_LittleGirl2_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Boy3[] = {
+ obj_frame_tiles(gEventObjectPic_Boy3_0),
+ obj_frame_tiles(gEventObjectPic_Boy3_1),
+ obj_frame_tiles(gEventObjectPic_Boy3_2),
+ obj_frame_tiles(gEventObjectPic_Boy3_3),
+ obj_frame_tiles(gEventObjectPic_Boy3_4),
+ obj_frame_tiles(gEventObjectPic_Boy3_5),
+ obj_frame_tiles(gEventObjectPic_Boy3_6),
+ obj_frame_tiles(gEventObjectPic_Boy3_7),
+ obj_frame_tiles(gEventObjectPic_Boy3_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Girl3[] = {
+ obj_frame_tiles(gEventObjectPic_Girl3_0),
+ obj_frame_tiles(gEventObjectPic_Girl3_1),
+ obj_frame_tiles(gEventObjectPic_Girl3_2),
+ obj_frame_tiles(gEventObjectPic_Girl3_3),
+ obj_frame_tiles(gEventObjectPic_Girl3_4),
+ obj_frame_tiles(gEventObjectPic_Girl3_5),
+ obj_frame_tiles(gEventObjectPic_Girl3_6),
+ obj_frame_tiles(gEventObjectPic_Girl3_7),
+ obj_frame_tiles(gEventObjectPic_Girl3_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Boy4[] = {
+ obj_frame_tiles(gEventObjectPic_Boy4_0),
+ obj_frame_tiles(gEventObjectPic_Boy4_1),
+ obj_frame_tiles(gEventObjectPic_Boy4_2),
+ obj_frame_tiles(gEventObjectPic_Boy4_3),
+ obj_frame_tiles(gEventObjectPic_Boy4_4),
+ obj_frame_tiles(gEventObjectPic_Boy4_5),
+ obj_frame_tiles(gEventObjectPic_Boy4_6),
+ obj_frame_tiles(gEventObjectPic_Boy4_7),
+ obj_frame_tiles(gEventObjectPic_Boy4_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Woman1[] = {
+ obj_frame_tiles(gEventObjectPic_Woman1_0),
+ obj_frame_tiles(gEventObjectPic_Woman1_1),
+ obj_frame_tiles(gEventObjectPic_Woman1_2),
+ obj_frame_tiles(gEventObjectPic_Woman1_3),
+ obj_frame_tiles(gEventObjectPic_Woman1_4),
+ obj_frame_tiles(gEventObjectPic_Woman1_5),
+ obj_frame_tiles(gEventObjectPic_Woman1_6),
+ obj_frame_tiles(gEventObjectPic_Woman1_7),
+ obj_frame_tiles(gEventObjectPic_Woman1_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_FatMan[] = {
+ obj_frame_tiles(gEventObjectPic_FatMan_0),
+ obj_frame_tiles(gEventObjectPic_FatMan_1),
+ obj_frame_tiles(gEventObjectPic_FatMan_2),
+ obj_frame_tiles(gEventObjectPic_FatMan_3),
+ obj_frame_tiles(gEventObjectPic_FatMan_4),
+ obj_frame_tiles(gEventObjectPic_FatMan_5),
+ obj_frame_tiles(gEventObjectPic_FatMan_6),
+ obj_frame_tiles(gEventObjectPic_FatMan_7),
+ obj_frame_tiles(gEventObjectPic_FatMan_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Woman2[] = {
+ obj_frame_tiles(gEventObjectPic_Woman2_0),
+ obj_frame_tiles(gEventObjectPic_Woman2_1),
+ obj_frame_tiles(gEventObjectPic_Woman2_2),
+ obj_frame_tiles(gEventObjectPic_Woman2_3),
+ obj_frame_tiles(gEventObjectPic_Woman2_4),
+ obj_frame_tiles(gEventObjectPic_Woman2_5),
+ obj_frame_tiles(gEventObjectPic_Woman2_6),
+ obj_frame_tiles(gEventObjectPic_Woman2_7),
+ obj_frame_tiles(gEventObjectPic_Woman2_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Man1[] = {
+ obj_frame_tiles(gEventObjectPic_Man1_0),
+ obj_frame_tiles(gEventObjectPic_Man1_1),
+ obj_frame_tiles(gEventObjectPic_Man1_2),
+ obj_frame_tiles(gEventObjectPic_Man1_3),
+ obj_frame_tiles(gEventObjectPic_Man1_4),
+ obj_frame_tiles(gEventObjectPic_Man1_5),
+ obj_frame_tiles(gEventObjectPic_Man1_6),
+ obj_frame_tiles(gEventObjectPic_Man1_7),
+ obj_frame_tiles(gEventObjectPic_Man1_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Woman3[] = {
+ obj_frame_tiles(gEventObjectPic_Woman3_0),
+ obj_frame_tiles(gEventObjectPic_Woman3_1),
+ obj_frame_tiles(gEventObjectPic_Woman3_2),
+ obj_frame_tiles(gEventObjectPic_Woman3_3),
+ obj_frame_tiles(gEventObjectPic_Woman3_4),
+ obj_frame_tiles(gEventObjectPic_Woman3_5),
+ obj_frame_tiles(gEventObjectPic_Woman3_6),
+ obj_frame_tiles(gEventObjectPic_Woman3_7),
+ obj_frame_tiles(gEventObjectPic_Woman3_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_OldMan1[] = {
+ obj_frame_tiles(gEventObjectPic_OldMan1_0),
+ obj_frame_tiles(gEventObjectPic_OldMan1_1),
+ obj_frame_tiles(gEventObjectPic_OldMan1_2),
+ obj_frame_tiles(gEventObjectPic_OldMan1_3),
+ obj_frame_tiles(gEventObjectPic_OldMan1_4),
+ obj_frame_tiles(gEventObjectPic_OldMan1_5),
+ obj_frame_tiles(gEventObjectPic_OldMan1_6),
+ obj_frame_tiles(gEventObjectPic_OldMan1_7),
+ obj_frame_tiles(gEventObjectPic_OldMan1_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_OldWoman1[] = {
+ obj_frame_tiles(gEventObjectPic_OldWoman1_0),
+ obj_frame_tiles(gEventObjectPic_OldWoman1_1),
+ obj_frame_tiles(gEventObjectPic_OldWoman1_2),
+ obj_frame_tiles(gEventObjectPic_OldWoman1_3),
+ obj_frame_tiles(gEventObjectPic_OldWoman1_4),
+ obj_frame_tiles(gEventObjectPic_OldWoman1_5),
+ obj_frame_tiles(gEventObjectPic_OldWoman1_6),
+ obj_frame_tiles(gEventObjectPic_OldWoman1_7),
+ obj_frame_tiles(gEventObjectPic_OldWoman1_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Man2[] = {
+ obj_frame_tiles(gEventObjectPic_Man2_0),
+ obj_frame_tiles(gEventObjectPic_Man2_1),
+ obj_frame_tiles(gEventObjectPic_Man2_2),
+ obj_frame_tiles(gEventObjectPic_Man2_3),
+ obj_frame_tiles(gEventObjectPic_Man2_4),
+ obj_frame_tiles(gEventObjectPic_Man2_5),
+ obj_frame_tiles(gEventObjectPic_Man2_6),
+ obj_frame_tiles(gEventObjectPic_Man2_7),
+ obj_frame_tiles(gEventObjectPic_Man2_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Woman4[] = {
+ obj_frame_tiles(gEventObjectPic_Woman4_0),
+ obj_frame_tiles(gEventObjectPic_Woman4_1),
+ obj_frame_tiles(gEventObjectPic_Woman4_2),
+ obj_frame_tiles(gEventObjectPic_Woman4_3),
+ obj_frame_tiles(gEventObjectPic_Woman4_4),
+ obj_frame_tiles(gEventObjectPic_Woman4_5),
+ obj_frame_tiles(gEventObjectPic_Woman4_6),
+ obj_frame_tiles(gEventObjectPic_Woman4_7),
+ obj_frame_tiles(gEventObjectPic_Woman4_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Man3[] = {
+ obj_frame_tiles(gEventObjectPic_Man3_0),
+ obj_frame_tiles(gEventObjectPic_Man3_1),
+ obj_frame_tiles(gEventObjectPic_Man3_2),
+ obj_frame_tiles(gEventObjectPic_Man3_3),
+ obj_frame_tiles(gEventObjectPic_Man3_4),
+ obj_frame_tiles(gEventObjectPic_Man3_5),
+ obj_frame_tiles(gEventObjectPic_Man3_6),
+ obj_frame_tiles(gEventObjectPic_Man3_7),
+ obj_frame_tiles(gEventObjectPic_Man3_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Woman5[] = {
+ obj_frame_tiles(gEventObjectPic_Woman5_0),
+ obj_frame_tiles(gEventObjectPic_Woman5_1),
+ obj_frame_tiles(gEventObjectPic_Woman5_2),
+ obj_frame_tiles(gEventObjectPic_Woman5_3),
+ obj_frame_tiles(gEventObjectPic_Woman5_4),
+ obj_frame_tiles(gEventObjectPic_Woman5_5),
+ obj_frame_tiles(gEventObjectPic_Woman5_6),
+ obj_frame_tiles(gEventObjectPic_Woman5_7),
+ obj_frame_tiles(gEventObjectPic_Woman5_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Cook[] = {
+ obj_frame_tiles(gEventObjectPic_Cook_0),
+ obj_frame_tiles(gEventObjectPic_Cook_1),
+ obj_frame_tiles(gEventObjectPic_Cook_2),
+ obj_frame_tiles(gEventObjectPic_Cook_0),
+ obj_frame_tiles(gEventObjectPic_Cook_0),
+ obj_frame_tiles(gEventObjectPic_Cook_1),
+ obj_frame_tiles(gEventObjectPic_Cook_1),
+ obj_frame_tiles(gEventObjectPic_Cook_2),
+ obj_frame_tiles(gEventObjectPic_Cook_2)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Woman6[] = {
+ obj_frame_tiles(gEventObjectPic_Woman6_0),
+ obj_frame_tiles(gEventObjectPic_Woman6_1),
+ obj_frame_tiles(gEventObjectPic_Woman6_2),
+ obj_frame_tiles(gEventObjectPic_Woman6_3),
+ obj_frame_tiles(gEventObjectPic_Woman6_4),
+ obj_frame_tiles(gEventObjectPic_Woman6_5),
+ obj_frame_tiles(gEventObjectPic_Woman6_6),
+ obj_frame_tiles(gEventObjectPic_Woman6_7),
+ obj_frame_tiles(gEventObjectPic_Woman6_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_OldMan2[] = {
+ obj_frame_tiles(gEventObjectPic_OldMan2_0),
+ obj_frame_tiles(gEventObjectPic_OldMan2_1),
+ obj_frame_tiles(gEventObjectPic_OldMan2_2),
+ obj_frame_tiles(gEventObjectPic_OldMan2_0),
+ obj_frame_tiles(gEventObjectPic_OldMan2_0),
+ obj_frame_tiles(gEventObjectPic_OldMan2_1),
+ obj_frame_tiles(gEventObjectPic_OldMan2_1),
+ obj_frame_tiles(gEventObjectPic_OldMan2_2),
+ obj_frame_tiles(gEventObjectPic_OldMan2_2)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_OldWoman2[] = {
+ obj_frame_tiles(gEventObjectPic_OldWoman2_0),
+ obj_frame_tiles(gEventObjectPic_OldWoman2_1),
+ obj_frame_tiles(gEventObjectPic_OldWoman2_2),
+ obj_frame_tiles(gEventObjectPic_OldWoman2_0),
+ obj_frame_tiles(gEventObjectPic_OldWoman2_0),
+ obj_frame_tiles(gEventObjectPic_OldWoman2_1),
+ obj_frame_tiles(gEventObjectPic_OldWoman2_1),
+ obj_frame_tiles(gEventObjectPic_OldWoman2_2),
+ obj_frame_tiles(gEventObjectPic_OldWoman2_2)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Camper[] = {
+ obj_frame_tiles(gEventObjectPic_Camper_0),
+ obj_frame_tiles(gEventObjectPic_Camper_1),
+ obj_frame_tiles(gEventObjectPic_Camper_2),
+ obj_frame_tiles(gEventObjectPic_Camper_3),
+ obj_frame_tiles(gEventObjectPic_Camper_4),
+ obj_frame_tiles(gEventObjectPic_Camper_5),
+ obj_frame_tiles(gEventObjectPic_Camper_6),
+ obj_frame_tiles(gEventObjectPic_Camper_7),
+ obj_frame_tiles(gEventObjectPic_Camper_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Picnicker[] = {
+ obj_frame_tiles(gEventObjectPic_Picnicker_0),
+ obj_frame_tiles(gEventObjectPic_Picnicker_1),
+ obj_frame_tiles(gEventObjectPic_Picnicker_2),
+ obj_frame_tiles(gEventObjectPic_Picnicker_3),
+ obj_frame_tiles(gEventObjectPic_Picnicker_4),
+ obj_frame_tiles(gEventObjectPic_Picnicker_5),
+ obj_frame_tiles(gEventObjectPic_Picnicker_6),
+ obj_frame_tiles(gEventObjectPic_Picnicker_7),
+ obj_frame_tiles(gEventObjectPic_Picnicker_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Man4[] = {
+ obj_frame_tiles(gEventObjectPic_Man4_0),
+ obj_frame_tiles(gEventObjectPic_Man4_1),
+ obj_frame_tiles(gEventObjectPic_Man4_2),
+ obj_frame_tiles(gEventObjectPic_Man4_3),
+ obj_frame_tiles(gEventObjectPic_Man4_4),
+ obj_frame_tiles(gEventObjectPic_Man4_5),
+ obj_frame_tiles(gEventObjectPic_Man4_6),
+ obj_frame_tiles(gEventObjectPic_Man4_7),
+ obj_frame_tiles(gEventObjectPic_Man4_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Woman7[] = {
+ obj_frame_tiles(gEventObjectPic_Woman7_0),
+ obj_frame_tiles(gEventObjectPic_Woman7_1),
+ obj_frame_tiles(gEventObjectPic_Woman7_2),
+ obj_frame_tiles(gEventObjectPic_Woman7_3),
+ obj_frame_tiles(gEventObjectPic_Woman7_4),
+ obj_frame_tiles(gEventObjectPic_Woman7_5),
+ obj_frame_tiles(gEventObjectPic_Woman7_6),
+ obj_frame_tiles(gEventObjectPic_Woman7_7),
+ obj_frame_tiles(gEventObjectPic_Woman7_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Youngster[] = {
+ obj_frame_tiles(gEventObjectPic_Youngster_0),
+ obj_frame_tiles(gEventObjectPic_Youngster_1),
+ obj_frame_tiles(gEventObjectPic_Youngster_2),
+ obj_frame_tiles(gEventObjectPic_Youngster_3),
+ obj_frame_tiles(gEventObjectPic_Youngster_4),
+ obj_frame_tiles(gEventObjectPic_Youngster_5),
+ obj_frame_tiles(gEventObjectPic_Youngster_6),
+ obj_frame_tiles(gEventObjectPic_Youngster_7),
+ obj_frame_tiles(gEventObjectPic_Youngster_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_BugCatcher[] = {
+ obj_frame_tiles(gEventObjectPic_BugCatcher_0),
+ obj_frame_tiles(gEventObjectPic_BugCatcher_1),
+ obj_frame_tiles(gEventObjectPic_BugCatcher_2),
+ obj_frame_tiles(gEventObjectPic_BugCatcher_3),
+ obj_frame_tiles(gEventObjectPic_BugCatcher_4),
+ obj_frame_tiles(gEventObjectPic_BugCatcher_5),
+ obj_frame_tiles(gEventObjectPic_BugCatcher_6),
+ obj_frame_tiles(gEventObjectPic_BugCatcher_7),
+ obj_frame_tiles(gEventObjectPic_BugCatcher_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_PsychicM[] = {
+ obj_frame_tiles(gEventObjectPic_PsychicM_0),
+ obj_frame_tiles(gEventObjectPic_PsychicM_1),
+ obj_frame_tiles(gEventObjectPic_PsychicM_2),
+ obj_frame_tiles(gEventObjectPic_PsychicM_3),
+ obj_frame_tiles(gEventObjectPic_PsychicM_4),
+ obj_frame_tiles(gEventObjectPic_PsychicM_5),
+ obj_frame_tiles(gEventObjectPic_PsychicM_6),
+ obj_frame_tiles(gEventObjectPic_PsychicM_7),
+ obj_frame_tiles(gEventObjectPic_PsychicM_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_SchoolKidM[] = {
+ obj_frame_tiles(gEventObjectPic_SchoolKidM_0),
+ obj_frame_tiles(gEventObjectPic_SchoolKidM_1),
+ obj_frame_tiles(gEventObjectPic_SchoolKidM_2),
+ obj_frame_tiles(gEventObjectPic_SchoolKidM_3),
+ obj_frame_tiles(gEventObjectPic_SchoolKidM_4),
+ obj_frame_tiles(gEventObjectPic_SchoolKidM_5),
+ obj_frame_tiles(gEventObjectPic_SchoolKidM_6),
+ obj_frame_tiles(gEventObjectPic_SchoolKidM_7),
+ obj_frame_tiles(gEventObjectPic_SchoolKidM_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Maniac[] = {
+ obj_frame_tiles(gEventObjectPic_Maniac_0),
+ obj_frame_tiles(gEventObjectPic_Maniac_1),
+ obj_frame_tiles(gEventObjectPic_Maniac_2),
+ obj_frame_tiles(gEventObjectPic_Maniac_3),
+ obj_frame_tiles(gEventObjectPic_Maniac_4),
+ obj_frame_tiles(gEventObjectPic_Maniac_5),
+ obj_frame_tiles(gEventObjectPic_Maniac_6),
+ obj_frame_tiles(gEventObjectPic_Maniac_7),
+ obj_frame_tiles(gEventObjectPic_Maniac_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_HexManiac[] = {
+ obj_frame_tiles(gEventObjectPic_HexManiac_0),
+ obj_frame_tiles(gEventObjectPic_HexManiac_1),
+ obj_frame_tiles(gEventObjectPic_HexManiac_2),
+ obj_frame_tiles(gEventObjectPic_HexManiac_3),
+ obj_frame_tiles(gEventObjectPic_HexManiac_4),
+ obj_frame_tiles(gEventObjectPic_HexManiac_5),
+ obj_frame_tiles(gEventObjectPic_HexManiac_6),
+ obj_frame_tiles(gEventObjectPic_HexManiac_7),
+ obj_frame_tiles(gEventObjectPic_HexManiac_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Woman8[] = {
+ obj_frame_tiles(gEventObjectPic_Woman8_0),
+ obj_frame_tiles(gEventObjectPic_Woman8_1),
+ obj_frame_tiles(gEventObjectPic_Woman8_2),
+ obj_frame_tiles(gEventObjectPic_Woman8_3),
+ obj_frame_tiles(gEventObjectPic_Woman8_4),
+ obj_frame_tiles(gEventObjectPic_Woman8_5),
+ obj_frame_tiles(gEventObjectPic_Woman8_6),
+ obj_frame_tiles(gEventObjectPic_Woman8_7),
+ obj_frame_tiles(gEventObjectPic_Woman8_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_SwimmerM[] = {
+ obj_frame_tiles(gEventObjectPic_SwimmerM_0),
+ obj_frame_tiles(gEventObjectPic_SwimmerM_1),
+ obj_frame_tiles(gEventObjectPic_SwimmerM_2),
+ obj_frame_tiles(gEventObjectPic_SwimmerM_3),
+ obj_frame_tiles(gEventObjectPic_SwimmerM_4),
+ obj_frame_tiles(gEventObjectPic_SwimmerM_5),
+ obj_frame_tiles(gEventObjectPic_SwimmerM_6),
+ obj_frame_tiles(gEventObjectPic_SwimmerM_7),
+ obj_frame_tiles(gEventObjectPic_SwimmerM_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_SwimmerF[] = {
+ obj_frame_tiles(gEventObjectPic_SwimmerF_0),
+ obj_frame_tiles(gEventObjectPic_SwimmerF_1),
+ obj_frame_tiles(gEventObjectPic_SwimmerF_2),
+ obj_frame_tiles(gEventObjectPic_SwimmerF_3),
+ obj_frame_tiles(gEventObjectPic_SwimmerF_4),
+ obj_frame_tiles(gEventObjectPic_SwimmerF_5),
+ obj_frame_tiles(gEventObjectPic_SwimmerF_6),
+ obj_frame_tiles(gEventObjectPic_SwimmerF_7),
+ obj_frame_tiles(gEventObjectPic_SwimmerF_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_BlackBelt[] = {
+ obj_frame_tiles(gEventObjectPic_BlackBelt_0),
+ obj_frame_tiles(gEventObjectPic_BlackBelt_1),
+ obj_frame_tiles(gEventObjectPic_BlackBelt_2),
+ obj_frame_tiles(gEventObjectPic_BlackBelt_3),
+ obj_frame_tiles(gEventObjectPic_BlackBelt_4),
+ obj_frame_tiles(gEventObjectPic_BlackBelt_5),
+ obj_frame_tiles(gEventObjectPic_BlackBelt_6),
+ obj_frame_tiles(gEventObjectPic_BlackBelt_7),
+ obj_frame_tiles(gEventObjectPic_BlackBelt_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Beauty[] = {
+ obj_frame_tiles(gEventObjectPic_Beauty_0),
+ obj_frame_tiles(gEventObjectPic_Beauty_1),
+ obj_frame_tiles(gEventObjectPic_Beauty_2),
+ obj_frame_tiles(gEventObjectPic_Beauty_3),
+ obj_frame_tiles(gEventObjectPic_Beauty_4),
+ obj_frame_tiles(gEventObjectPic_Beauty_5),
+ obj_frame_tiles(gEventObjectPic_Beauty_6),
+ obj_frame_tiles(gEventObjectPic_Beauty_7),
+ obj_frame_tiles(gEventObjectPic_Beauty_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Scientist1[] = {
+ obj_frame_tiles(gEventObjectPic_Scientist1_0),
+ obj_frame_tiles(gEventObjectPic_Scientist1_1),
+ obj_frame_tiles(gEventObjectPic_Scientist1_2),
+ obj_frame_tiles(gEventObjectPic_Scientist1_3),
+ obj_frame_tiles(gEventObjectPic_Scientist1_4),
+ obj_frame_tiles(gEventObjectPic_Scientist1_5),
+ obj_frame_tiles(gEventObjectPic_Scientist1_6),
+ obj_frame_tiles(gEventObjectPic_Scientist1_7),
+ obj_frame_tiles(gEventObjectPic_Scientist1_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Lass[] = {
+ obj_frame_tiles(gEventObjectPic_Lass_0),
+ obj_frame_tiles(gEventObjectPic_Lass_1),
+ obj_frame_tiles(gEventObjectPic_Lass_2),
+ obj_frame_tiles(gEventObjectPic_Lass_3),
+ obj_frame_tiles(gEventObjectPic_Lass_4),
+ obj_frame_tiles(gEventObjectPic_Lass_5),
+ obj_frame_tiles(gEventObjectPic_Lass_6),
+ obj_frame_tiles(gEventObjectPic_Lass_7),
+ obj_frame_tiles(gEventObjectPic_Lass_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Gentleman[] = {
+ obj_frame_tiles(gEventObjectPic_Gentleman_0),
+ obj_frame_tiles(gEventObjectPic_Gentleman_1),
+ obj_frame_tiles(gEventObjectPic_Gentleman_2),
+ obj_frame_tiles(gEventObjectPic_Gentleman_3),
+ obj_frame_tiles(gEventObjectPic_Gentleman_4),
+ obj_frame_tiles(gEventObjectPic_Gentleman_5),
+ obj_frame_tiles(gEventObjectPic_Gentleman_6),
+ obj_frame_tiles(gEventObjectPic_Gentleman_7),
+ obj_frame_tiles(gEventObjectPic_Gentleman_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Sailor[] = {
+ obj_frame_tiles(gEventObjectPic_Sailor_0),
+ obj_frame_tiles(gEventObjectPic_Sailor_1),
+ obj_frame_tiles(gEventObjectPic_Sailor_2),
+ obj_frame_tiles(gEventObjectPic_Sailor_3),
+ obj_frame_tiles(gEventObjectPic_Sailor_4),
+ obj_frame_tiles(gEventObjectPic_Sailor_5),
+ obj_frame_tiles(gEventObjectPic_Sailor_6),
+ obj_frame_tiles(gEventObjectPic_Sailor_7),
+ obj_frame_tiles(gEventObjectPic_Sailor_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Fisherman[] = {
+ obj_frame_tiles(gEventObjectPic_Fisherman_0),
+ obj_frame_tiles(gEventObjectPic_Fisherman_1),
+ obj_frame_tiles(gEventObjectPic_Fisherman_2),
+ obj_frame_tiles(gEventObjectPic_Fisherman_3),
+ obj_frame_tiles(gEventObjectPic_Fisherman_4),
+ obj_frame_tiles(gEventObjectPic_Fisherman_5),
+ obj_frame_tiles(gEventObjectPic_Fisherman_6),
+ obj_frame_tiles(gEventObjectPic_Fisherman_7),
+ obj_frame_tiles(gEventObjectPic_Fisherman_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_RunningTriathleteM[] = {
+ obj_frame_tiles(gEventObjectPic_RunningTriathleteM_0),
+ obj_frame_tiles(gEventObjectPic_RunningTriathleteM_1),
+ obj_frame_tiles(gEventObjectPic_RunningTriathleteM_2),
+ obj_frame_tiles(gEventObjectPic_RunningTriathleteM_3),
+ obj_frame_tiles(gEventObjectPic_RunningTriathleteM_4),
+ obj_frame_tiles(gEventObjectPic_RunningTriathleteM_5),
+ obj_frame_tiles(gEventObjectPic_RunningTriathleteM_6),
+ obj_frame_tiles(gEventObjectPic_RunningTriathleteM_7),
+ obj_frame_tiles(gEventObjectPic_RunningTriathleteM_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_RunningTriathleteF[] = {
+ obj_frame_tiles(gEventObjectPic_RunningTriathleteF_0),
+ obj_frame_tiles(gEventObjectPic_RunningTriathleteF_1),
+ obj_frame_tiles(gEventObjectPic_RunningTriathleteF_2),
+ obj_frame_tiles(gEventObjectPic_RunningTriathleteF_3),
+ obj_frame_tiles(gEventObjectPic_RunningTriathleteF_4),
+ obj_frame_tiles(gEventObjectPic_RunningTriathleteF_5),
+ obj_frame_tiles(gEventObjectPic_RunningTriathleteF_6),
+ obj_frame_tiles(gEventObjectPic_RunningTriathleteF_7),
+ obj_frame_tiles(gEventObjectPic_RunningTriathleteF_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_TuberF[] = {
+ obj_frame_tiles(gEventObjectPic_TuberF_0),
+ obj_frame_tiles(gEventObjectPic_TuberF_1),
+ obj_frame_tiles(gEventObjectPic_TuberF_2),
+ obj_frame_tiles(gEventObjectPic_TuberF_3),
+ obj_frame_tiles(gEventObjectPic_TuberF_4),
+ obj_frame_tiles(gEventObjectPic_TuberF_5),
+ obj_frame_tiles(gEventObjectPic_TuberF_6),
+ obj_frame_tiles(gEventObjectPic_TuberF_7),
+ obj_frame_tiles(gEventObjectPic_TuberF_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_TuberM[] = {
+ obj_frame_tiles(gEventObjectPic_TuberM_0),
+ obj_frame_tiles(gEventObjectPic_TuberM_1),
+ obj_frame_tiles(gEventObjectPic_TuberM_2),
+ obj_frame_tiles(gEventObjectPic_TuberM_3),
+ obj_frame_tiles(gEventObjectPic_TuberM_4),
+ obj_frame_tiles(gEventObjectPic_TuberM_5),
+ obj_frame_tiles(gEventObjectPic_TuberM_6),
+ obj_frame_tiles(gEventObjectPic_TuberM_7),
+ obj_frame_tiles(gEventObjectPic_TuberM_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Hiker[] = {
+ obj_frame_tiles(gEventObjectPic_Hiker_0),
+ obj_frame_tiles(gEventObjectPic_Hiker_1),
+ obj_frame_tiles(gEventObjectPic_Hiker_2),
+ obj_frame_tiles(gEventObjectPic_Hiker_3),
+ obj_frame_tiles(gEventObjectPic_Hiker_4),
+ obj_frame_tiles(gEventObjectPic_Hiker_5),
+ obj_frame_tiles(gEventObjectPic_Hiker_6),
+ obj_frame_tiles(gEventObjectPic_Hiker_7),
+ obj_frame_tiles(gEventObjectPic_Hiker_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_CyclingTriathleteM[] = {
+ obj_frame_tiles(gEventObjectPic_CyclingTriathleteM_0),
+ obj_frame_tiles(gEventObjectPic_CyclingTriathleteM_1),
+ obj_frame_tiles(gEventObjectPic_CyclingTriathleteM_2),
+ obj_frame_tiles(gEventObjectPic_CyclingTriathleteM_3),
+ obj_frame_tiles(gEventObjectPic_CyclingTriathleteM_4),
+ obj_frame_tiles(gEventObjectPic_CyclingTriathleteM_5),
+ obj_frame_tiles(gEventObjectPic_CyclingTriathleteM_6),
+ obj_frame_tiles(gEventObjectPic_CyclingTriathleteM_7),
+ obj_frame_tiles(gEventObjectPic_CyclingTriathleteM_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_CyclingTriathleteF[] = {
+ obj_frame_tiles(gEventObjectPic_CyclingTriathleteF_0),
+ obj_frame_tiles(gEventObjectPic_CyclingTriathleteF_1),
+ obj_frame_tiles(gEventObjectPic_CyclingTriathleteF_2),
+ obj_frame_tiles(gEventObjectPic_CyclingTriathleteF_3),
+ obj_frame_tiles(gEventObjectPic_CyclingTriathleteF_4),
+ obj_frame_tiles(gEventObjectPic_CyclingTriathleteF_5),
+ obj_frame_tiles(gEventObjectPic_CyclingTriathleteF_6),
+ obj_frame_tiles(gEventObjectPic_CyclingTriathleteF_7),
+ obj_frame_tiles(gEventObjectPic_CyclingTriathleteF_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Nurse[] = {
+ obj_frame_tiles(gEventObjectPic_Nurse_0),
+ obj_frame_tiles(gEventObjectPic_Nurse_1),
+ obj_frame_tiles(gEventObjectPic_Nurse_2),
+ obj_frame_tiles(gEventObjectPic_Nurse_3),
+ obj_frame_tiles(gEventObjectPic_Nurse_4),
+ obj_frame_tiles(gEventObjectPic_Nurse_5),
+ obj_frame_tiles(gEventObjectPic_Nurse_6),
+ obj_frame_tiles(gEventObjectPic_Nurse_7),
+ obj_frame_tiles(gEventObjectPic_Nurse_8),
+ obj_frame_tiles(gEventObjectPic_Nurse_9)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_ItemBall[] = {
+ obj_frame_tiles(gEventObjectPic_ItemBall)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_ProfBirch[] = {
+ obj_frame_tiles(gEventObjectPic_ProfBirch_0),
+ obj_frame_tiles(gEventObjectPic_ProfBirch_1),
+ obj_frame_tiles(gEventObjectPic_ProfBirch_2),
+ obj_frame_tiles(gEventObjectPic_ProfBirch_3),
+ obj_frame_tiles(gEventObjectPic_ProfBirch_4),
+ obj_frame_tiles(gEventObjectPic_ProfBirch_5),
+ obj_frame_tiles(gEventObjectPic_ProfBirch_6),
+ obj_frame_tiles(gEventObjectPic_ProfBirch_7),
+ obj_frame_tiles(gEventObjectPic_ProfBirch_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Man5[] = {
+ obj_frame_tiles(gEventObjectPic_Man5_0),
+ obj_frame_tiles(gEventObjectPic_Man5_1),
+ obj_frame_tiles(gEventObjectPic_Man5_2),
+ obj_frame_tiles(gEventObjectPic_Man5_3),
+ obj_frame_tiles(gEventObjectPic_Man5_4),
+ obj_frame_tiles(gEventObjectPic_Man5_5),
+ obj_frame_tiles(gEventObjectPic_Man5_6),
+ obj_frame_tiles(gEventObjectPic_Man5_7),
+ obj_frame_tiles(gEventObjectPic_Man5_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Man6[] = {
+ obj_frame_tiles(gEventObjectPic_Man6_0),
+ obj_frame_tiles(gEventObjectPic_Man6_1),
+ obj_frame_tiles(gEventObjectPic_Man6_2),
+ obj_frame_tiles(gEventObjectPic_Man6_3),
+ obj_frame_tiles(gEventObjectPic_Man6_4),
+ obj_frame_tiles(gEventObjectPic_Man6_5),
+ obj_frame_tiles(gEventObjectPic_Man6_6),
+ obj_frame_tiles(gEventObjectPic_Man6_7),
+ obj_frame_tiles(gEventObjectPic_Man6_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_ReporterM[] = {
+ obj_frame_tiles(gEventObjectPic_ReporterM_0),
+ obj_frame_tiles(gEventObjectPic_ReporterM_1),
+ obj_frame_tiles(gEventObjectPic_ReporterM_2),
+ obj_frame_tiles(gEventObjectPic_ReporterM_3),
+ obj_frame_tiles(gEventObjectPic_ReporterM_4),
+ obj_frame_tiles(gEventObjectPic_ReporterM_5),
+ obj_frame_tiles(gEventObjectPic_ReporterM_6),
+ obj_frame_tiles(gEventObjectPic_ReporterM_7),
+ obj_frame_tiles(gEventObjectPic_ReporterM_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_ReporterF[] = {
+ obj_frame_tiles(gEventObjectPic_ReporterF_0),
+ obj_frame_tiles(gEventObjectPic_ReporterF_1),
+ obj_frame_tiles(gEventObjectPic_ReporterF_2),
+ obj_frame_tiles(gEventObjectPic_ReporterF_3),
+ obj_frame_tiles(gEventObjectPic_ReporterF_4),
+ obj_frame_tiles(gEventObjectPic_ReporterF_5),
+ obj_frame_tiles(gEventObjectPic_ReporterF_6),
+ obj_frame_tiles(gEventObjectPic_ReporterF_7),
+ obj_frame_tiles(gEventObjectPic_ReporterF_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_MauvilleOldMan1[] = {
+ obj_frame_tiles(gEventObjectPic_MauvilleOldMan1_0),
+ obj_frame_tiles(gEventObjectPic_MauvilleOldMan1_1),
+ obj_frame_tiles(gEventObjectPic_MauvilleOldMan1_2),
+ obj_frame_tiles(gEventObjectPic_MauvilleOldMan1_3),
+ obj_frame_tiles(gEventObjectPic_MauvilleOldMan1_4),
+ obj_frame_tiles(gEventObjectPic_MauvilleOldMan1_5),
+ obj_frame_tiles(gEventObjectPic_MauvilleOldMan1_6),
+ obj_frame_tiles(gEventObjectPic_MauvilleOldMan1_7),
+ obj_frame_tiles(gEventObjectPic_MauvilleOldMan1_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_MauvilleOldMan2[] = {
+ obj_frame_tiles(gEventObjectPic_MauvilleOldMan2_0),
+ obj_frame_tiles(gEventObjectPic_MauvilleOldMan2_1),
+ obj_frame_tiles(gEventObjectPic_MauvilleOldMan2_2),
+ obj_frame_tiles(gEventObjectPic_MauvilleOldMan2_3),
+ obj_frame_tiles(gEventObjectPic_MauvilleOldMan2_4),
+ obj_frame_tiles(gEventObjectPic_MauvilleOldMan2_5),
+ obj_frame_tiles(gEventObjectPic_MauvilleOldMan2_6),
+ obj_frame_tiles(gEventObjectPic_MauvilleOldMan2_7),
+ obj_frame_tiles(gEventObjectPic_MauvilleOldMan2_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_UnusedNatuDoll[] = {
+ obj_frame_tiles(gEventObjectPic_UnusedNatuDoll)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_UnusedMagnemiteDoll[] = {
+ obj_frame_tiles(gEventObjectPic_UnusedMagnemiteDoll)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_UnusedSquirtleDoll[] = {
+ obj_frame_tiles(gEventObjectPic_UnusedSquirtleDoll)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_UnusedWooperDoll[] = {
+ obj_frame_tiles(gEventObjectPic_UnusedWooperDoll)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_UnusedPikachuDoll[] = {
+ obj_frame_tiles(gEventObjectPic_UnusedPikachuDoll)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_UnusedPorygon2Doll[] = {
+ obj_frame_tiles(gEventObjectPic_UnusedPorygon2Doll)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_CuttableTree[] = {
+ obj_frame_tiles(gEventObjectPic_CuttableTree_0),
+ obj_frame_tiles(gEventObjectPic_CuttableTree_1),
+ obj_frame_tiles(gEventObjectPic_CuttableTree_2),
+ obj_frame_tiles(gEventObjectPic_CuttableTree_3)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_MartEmployee[] = {
+ obj_frame_tiles(gEventObjectPic_MartEmployee_0),
+ obj_frame_tiles(gEventObjectPic_MartEmployee_1),
+ obj_frame_tiles(gEventObjectPic_MartEmployee_2),
+ obj_frame_tiles(gEventObjectPic_MartEmployee_3),
+ obj_frame_tiles(gEventObjectPic_MartEmployee_4),
+ obj_frame_tiles(gEventObjectPic_MartEmployee_5),
+ obj_frame_tiles(gEventObjectPic_MartEmployee_6),
+ obj_frame_tiles(gEventObjectPic_MartEmployee_7),
+ obj_frame_tiles(gEventObjectPic_MartEmployee_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_RooftopSaleWoman[] = {
+ obj_frame_tiles(gEventObjectPic_RooftopSaleWoman_0),
+ obj_frame_tiles(gEventObjectPic_RooftopSaleWoman_1),
+ obj_frame_tiles(gEventObjectPic_RooftopSaleWoman_2),
+ obj_frame_tiles(gEventObjectPic_RooftopSaleWoman_3),
+ obj_frame_tiles(gEventObjectPic_RooftopSaleWoman_4),
+ obj_frame_tiles(gEventObjectPic_RooftopSaleWoman_5),
+ obj_frame_tiles(gEventObjectPic_RooftopSaleWoman_6),
+ obj_frame_tiles(gEventObjectPic_RooftopSaleWoman_7),
+ obj_frame_tiles(gEventObjectPic_RooftopSaleWoman_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Teala[] = {
+ obj_frame_tiles(gEventObjectPic_Teala_0),
+ obj_frame_tiles(gEventObjectPic_Teala_1),
+ obj_frame_tiles(gEventObjectPic_Teala_2),
+ obj_frame_tiles(gEventObjectPic_Teala_3),
+ obj_frame_tiles(gEventObjectPic_Teala_4),
+ obj_frame_tiles(gEventObjectPic_Teala_5),
+ obj_frame_tiles(gEventObjectPic_Teala_6),
+ obj_frame_tiles(gEventObjectPic_Teala_7),
+ obj_frame_tiles(gEventObjectPic_Teala_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_BreakableRock[] = {
+ obj_frame_tiles(gEventObjectPic_BreakableRock_0),
+ obj_frame_tiles(gEventObjectPic_BreakableRock_1),
+ obj_frame_tiles(gEventObjectPic_BreakableRock_2),
+ obj_frame_tiles(gEventObjectPic_BreakableRock_3)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_PushableBoulder[] = {
+ obj_frame_tiles(gEventObjectPic_PushableBoulder)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_MrBrineysBoat[] = {
+ obj_frame_tiles(gEventObjectPic_MrBrineysBoat_0),
+ obj_frame_tiles(gEventObjectPic_MrBrineysBoat_1),
+ obj_frame_tiles(gEventObjectPic_MrBrineysBoat_2),
+ obj_frame_tiles(gEventObjectPic_MrBrineysBoat_0),
+ obj_frame_tiles(gEventObjectPic_MrBrineysBoat_0),
+ obj_frame_tiles(gEventObjectPic_MrBrineysBoat_1),
+ obj_frame_tiles(gEventObjectPic_MrBrineysBoat_1),
+ obj_frame_tiles(gEventObjectPic_MrBrineysBoat_2),
+ obj_frame_tiles(gEventObjectPic_MrBrineysBoat_2)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Truck[] = {
+ obj_frame_tiles(gEventObjectPic_Truck)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_MachokeCarryingBox[] = {
+ obj_frame_tiles(gEventObjectPic_MachokeCarryingBox_0),
+ obj_frame_tiles(gEventObjectPic_MachokeCarryingBox_0),
+ obj_frame_tiles(gEventObjectPic_MachokeCarryingBox_0),
+ obj_frame_tiles(gEventObjectPic_MachokeCarryingBox_1),
+ obj_frame_tiles(gEventObjectPic_MachokeCarryingBox_2),
+ obj_frame_tiles(gEventObjectPic_MachokeCarryingBox_1),
+ obj_frame_tiles(gEventObjectPic_MachokeCarryingBox_2),
+ obj_frame_tiles(gEventObjectPic_MachokeCarryingBox_1),
+ obj_frame_tiles(gEventObjectPic_MachokeCarryingBox_2)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_MachokeFacingAway[] = {
+ obj_frame_tiles(gEventObjectPic_MachokeFacingAway_0),
+ obj_frame_tiles(gEventObjectPic_MachokeFacingAway_0),
+ obj_frame_tiles(gEventObjectPic_MachokeFacingAway_0),
+ obj_frame_tiles(gEventObjectPic_MachokeFacingAway_1),
+ obj_frame_tiles(gEventObjectPic_MachokeFacingAway_1),
+ obj_frame_tiles(gEventObjectPic_MachokeFacingAway_1),
+ obj_frame_tiles(gEventObjectPic_MachokeFacingAway_1),
+ obj_frame_tiles(gEventObjectPic_MachokeFacingAway_1),
+ obj_frame_tiles(gEventObjectPic_MachokeFacingAway_1)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_BirchsBag[] = {
+ obj_frame_tiles(gEventObjectPic_BirchsBag)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Poochyena[] = {
+ obj_frame_tiles(gEventObjectPic_Poochyena_0),
+ obj_frame_tiles(gEventObjectPic_Poochyena_1),
+ obj_frame_tiles(gEventObjectPic_Poochyena_2),
+ obj_frame_tiles(gEventObjectPic_Poochyena_3),
+ obj_frame_tiles(gEventObjectPic_Poochyena_4),
+ obj_frame_tiles(gEventObjectPic_Poochyena_5),
+ obj_frame_tiles(gEventObjectPic_Poochyena_6),
+ obj_frame_tiles(gEventObjectPic_Poochyena_7),
+ obj_frame_tiles(gEventObjectPic_Poochyena_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Artist[] = {
+ obj_frame_tiles(gEventObjectPic_Artist_0),
+ obj_frame_tiles(gEventObjectPic_Artist_1),
+ obj_frame_tiles(gEventObjectPic_Artist_2),
+ obj_frame_tiles(gEventObjectPic_Artist_3),
+ obj_frame_tiles(gEventObjectPic_Artist_4),
+ obj_frame_tiles(gEventObjectPic_Artist_5),
+ obj_frame_tiles(gEventObjectPic_Artist_6),
+ obj_frame_tiles(gEventObjectPic_Artist_7),
+ obj_frame_tiles(gEventObjectPic_Artist_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_MayNormal[] = {
+ obj_frame_tiles(gEventObjectPic_MayNormal_0),
+ obj_frame_tiles(gEventObjectPic_MayNormal_1),
+ obj_frame_tiles(gEventObjectPic_MayNormal_2),
+ obj_frame_tiles(gEventObjectPic_MayNormal_3),
+ obj_frame_tiles(gEventObjectPic_MayNormal_4),
+ obj_frame_tiles(gEventObjectPic_MayNormal_5),
+ obj_frame_tiles(gEventObjectPic_MayNormal_6),
+ obj_frame_tiles(gEventObjectPic_MayNormal_7),
+ obj_frame_tiles(gEventObjectPic_MayNormal_8),
+ obj_frame_tiles(gEventObjectPic_MayNormal_9),
+ obj_frame_tiles(gEventObjectPic_MayNormal_10),
+ obj_frame_tiles(gEventObjectPic_MayNormal_11),
+ obj_frame_tiles(gEventObjectPic_MayNormal_12),
+ obj_frame_tiles(gEventObjectPic_MayNormal_13),
+ obj_frame_tiles(gEventObjectPic_MayNormal_14),
+ obj_frame_tiles(gEventObjectPic_MayNormal_15),
+ obj_frame_tiles(gEventObjectPic_MayNormal_16),
+ obj_frame_tiles(gEventObjectPic_MayNormal_17)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_MayMachBike[] = {
+ obj_frame_tiles(gEventObjectPic_MayMachBike_0),
+ obj_frame_tiles(gEventObjectPic_MayMachBike_1),
+ obj_frame_tiles(gEventObjectPic_MayMachBike_2),
+ obj_frame_tiles(gEventObjectPic_MayMachBike_3),
+ obj_frame_tiles(gEventObjectPic_MayMachBike_4),
+ obj_frame_tiles(gEventObjectPic_MayMachBike_5),
+ obj_frame_tiles(gEventObjectPic_MayMachBike_6),
+ obj_frame_tiles(gEventObjectPic_MayMachBike_7),
+ obj_frame_tiles(gEventObjectPic_MayMachBike_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_MayAcroBike[] = {
+ obj_frame_tiles(gEventObjectPic_MayAcroBike_0),
+ obj_frame_tiles(gEventObjectPic_MayAcroBike_1),
+ obj_frame_tiles(gEventObjectPic_MayAcroBike_2),
+ obj_frame_tiles(gEventObjectPic_MayAcroBike_3),
+ obj_frame_tiles(gEventObjectPic_MayAcroBike_4),
+ obj_frame_tiles(gEventObjectPic_MayAcroBike_5),
+ obj_frame_tiles(gEventObjectPic_MayAcroBike_6),
+ obj_frame_tiles(gEventObjectPic_MayAcroBike_7),
+ obj_frame_tiles(gEventObjectPic_MayAcroBike_8),
+ obj_frame_tiles(gEventObjectPic_MayAcroBike_9),
+ obj_frame_tiles(gEventObjectPic_MayAcroBike_10),
+ obj_frame_tiles(gEventObjectPic_MayAcroBike_11),
+ obj_frame_tiles(gEventObjectPic_MayAcroBike_12),
+ obj_frame_tiles(gEventObjectPic_MayAcroBike_13),
+ obj_frame_tiles(gEventObjectPic_MayAcroBike_14),
+ obj_frame_tiles(gEventObjectPic_MayAcroBike_15),
+ obj_frame_tiles(gEventObjectPic_MayAcroBike_16),
+ obj_frame_tiles(gEventObjectPic_MayAcroBike_17),
+ obj_frame_tiles(gEventObjectPic_MayAcroBike_18),
+ obj_frame_tiles(gEventObjectPic_MayAcroBike_19),
+ obj_frame_tiles(gEventObjectPic_MayAcroBike_20),
+ obj_frame_tiles(gEventObjectPic_MayAcroBike_21),
+ obj_frame_tiles(gEventObjectPic_MayAcroBike_22),
+ obj_frame_tiles(gEventObjectPic_MayAcroBike_23),
+ obj_frame_tiles(gEventObjectPic_MayAcroBike_24),
+ obj_frame_tiles(gEventObjectPic_MayAcroBike_25),
+ obj_frame_tiles(gEventObjectPic_MayAcroBike_26)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_MaySurfing[] = {
+ obj_frame_tiles(gEventObjectPic_MaySurfing_0),
+ obj_frame_tiles(gEventObjectPic_MaySurfing_1),
+ obj_frame_tiles(gEventObjectPic_MaySurfing_2),
+ obj_frame_tiles(gEventObjectPic_MaySurfing_0),
+ obj_frame_tiles(gEventObjectPic_MaySurfing_0),
+ obj_frame_tiles(gEventObjectPic_MaySurfing_1),
+ obj_frame_tiles(gEventObjectPic_MaySurfing_1),
+ obj_frame_tiles(gEventObjectPic_MaySurfing_2),
+ obj_frame_tiles(gEventObjectPic_MaySurfing_2),
+ obj_frame_tiles(gEventObjectPic_MaySurfing_3),
+ obj_frame_tiles(gEventObjectPic_MaySurfing_4),
+ obj_frame_tiles(gEventObjectPic_MaySurfing_5)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_MayUnderwater[] = {
+ obj_frame_tiles(gEventObjectPic_MayUnderwater_0),
+ obj_frame_tiles(gEventObjectPic_MayUnderwater_1),
+ obj_frame_tiles(gEventObjectPic_MayUnderwater_2),
+ obj_frame_tiles(gEventObjectPic_MayUnderwater_0),
+ obj_frame_tiles(gEventObjectPic_MayUnderwater_0),
+ obj_frame_tiles(gEventObjectPic_MayUnderwater_1),
+ obj_frame_tiles(gEventObjectPic_MayUnderwater_1),
+ obj_frame_tiles(gEventObjectPic_MayUnderwater_2),
+ obj_frame_tiles(gEventObjectPic_MayUnderwater_2)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_MayFieldMove[] = {
+ obj_frame_tiles(gEventObjectPic_MayFieldMove_0),
+ obj_frame_tiles(gEventObjectPic_MayFieldMove_1),
+ obj_frame_tiles(gEventObjectPic_MayFieldMove_2),
+ obj_frame_tiles(gEventObjectPic_MayFieldMove_3),
+ obj_frame_tiles(gEventObjectPic_MayFieldMove_4)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Cameraman[] = {
+ obj_frame_tiles(gEventObjectPic_Cameraman_0),
+ obj_frame_tiles(gEventObjectPic_Cameraman_1),
+ obj_frame_tiles(gEventObjectPic_Cameraman_2),
+ obj_frame_tiles(gEventObjectPic_Cameraman_3),
+ obj_frame_tiles(gEventObjectPic_Cameraman_4),
+ obj_frame_tiles(gEventObjectPic_Cameraman_5),
+ obj_frame_tiles(gEventObjectPic_Cameraman_6),
+ obj_frame_tiles(gEventObjectPic_Cameraman_7),
+ obj_frame_tiles(gEventObjectPic_Cameraman_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_MovingBox[] = {
+ obj_frame_tiles(gEventObjectPic_MovingBox)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_CableCar[] = {
+ obj_frame_tiles(gEventObjectPic_CableCar)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Scientist2[] = {
+ obj_frame_tiles(gEventObjectPic_Scientist2_0),
+ obj_frame_tiles(gEventObjectPic_Scientist2_1),
+ obj_frame_tiles(gEventObjectPic_Scientist2_2),
+ obj_frame_tiles(gEventObjectPic_Scientist2_3),
+ obj_frame_tiles(gEventObjectPic_Scientist2_4),
+ obj_frame_tiles(gEventObjectPic_Scientist2_5),
+ obj_frame_tiles(gEventObjectPic_Scientist2_6),
+ obj_frame_tiles(gEventObjectPic_Scientist2_7),
+ obj_frame_tiles(gEventObjectPic_Scientist2_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Man7[] = {
+ obj_frame_tiles(gEventObjectPic_Man7_0),
+ obj_frame_tiles(gEventObjectPic_Man7_1),
+ obj_frame_tiles(gEventObjectPic_Man7_2),
+ obj_frame_tiles(gEventObjectPic_Man7_3),
+ obj_frame_tiles(gEventObjectPic_Man7_4),
+ obj_frame_tiles(gEventObjectPic_Man7_5),
+ obj_frame_tiles(gEventObjectPic_Man7_6),
+ obj_frame_tiles(gEventObjectPic_Man7_7),
+ obj_frame_tiles(gEventObjectPic_Man7_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_AquaMemberM[] = {
+ obj_frame_tiles(gEventObjectPic_AquaMemberM_0),
+ obj_frame_tiles(gEventObjectPic_AquaMemberM_1),
+ obj_frame_tiles(gEventObjectPic_AquaMemberM_2),
+ obj_frame_tiles(gEventObjectPic_AquaMemberM_3),
+ obj_frame_tiles(gEventObjectPic_AquaMemberM_4),
+ obj_frame_tiles(gEventObjectPic_AquaMemberM_5),
+ obj_frame_tiles(gEventObjectPic_AquaMemberM_6),
+ obj_frame_tiles(gEventObjectPic_AquaMemberM_7),
+ obj_frame_tiles(gEventObjectPic_AquaMemberM_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_AquaMemberF[] = {
+ obj_frame_tiles(gEventObjectPic_AquaMemberF_0),
+ obj_frame_tiles(gEventObjectPic_AquaMemberF_1),
+ obj_frame_tiles(gEventObjectPic_AquaMemberF_2),
+ obj_frame_tiles(gEventObjectPic_AquaMemberF_3),
+ obj_frame_tiles(gEventObjectPic_AquaMemberF_4),
+ obj_frame_tiles(gEventObjectPic_AquaMemberF_5),
+ obj_frame_tiles(gEventObjectPic_AquaMemberF_6),
+ obj_frame_tiles(gEventObjectPic_AquaMemberF_7),
+ obj_frame_tiles(gEventObjectPic_AquaMemberF_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_MagmaMemberM[] = {
+ obj_frame_tiles(gEventObjectPic_MagmaMemberM_0),
+ obj_frame_tiles(gEventObjectPic_MagmaMemberM_1),
+ obj_frame_tiles(gEventObjectPic_MagmaMemberM_2),
+ obj_frame_tiles(gEventObjectPic_MagmaMemberM_3),
+ obj_frame_tiles(gEventObjectPic_MagmaMemberM_4),
+ obj_frame_tiles(gEventObjectPic_MagmaMemberM_5),
+ obj_frame_tiles(gEventObjectPic_MagmaMemberM_6),
+ obj_frame_tiles(gEventObjectPic_MagmaMemberM_7),
+ obj_frame_tiles(gEventObjectPic_MagmaMemberM_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_MagmaMemberF[] = {
+ obj_frame_tiles(gEventObjectPic_MagmaMemberF_0),
+ obj_frame_tiles(gEventObjectPic_MagmaMemberF_1),
+ obj_frame_tiles(gEventObjectPic_MagmaMemberF_2),
+ obj_frame_tiles(gEventObjectPic_MagmaMemberF_3),
+ obj_frame_tiles(gEventObjectPic_MagmaMemberF_4),
+ obj_frame_tiles(gEventObjectPic_MagmaMemberF_5),
+ obj_frame_tiles(gEventObjectPic_MagmaMemberF_6),
+ obj_frame_tiles(gEventObjectPic_MagmaMemberF_7),
+ obj_frame_tiles(gEventObjectPic_MagmaMemberF_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Sidney[] = {
+ obj_frame_tiles(gEventObjectPic_Sidney_0),
+ obj_frame_tiles(gEventObjectPic_Sidney_1),
+ obj_frame_tiles(gEventObjectPic_Sidney_2),
+ obj_frame_tiles(gEventObjectPic_Sidney_0),
+ obj_frame_tiles(gEventObjectPic_Sidney_0),
+ obj_frame_tiles(gEventObjectPic_Sidney_1),
+ obj_frame_tiles(gEventObjectPic_Sidney_1),
+ obj_frame_tiles(gEventObjectPic_Sidney_2),
+ obj_frame_tiles(gEventObjectPic_Sidney_2)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Phoebe[] = {
+ obj_frame_tiles(gEventObjectPic_Phoebe_0),
+ obj_frame_tiles(gEventObjectPic_Phoebe_1),
+ obj_frame_tiles(gEventObjectPic_Phoebe_2),
+ obj_frame_tiles(gEventObjectPic_Phoebe_0),
+ obj_frame_tiles(gEventObjectPic_Phoebe_0),
+ obj_frame_tiles(gEventObjectPic_Phoebe_1),
+ obj_frame_tiles(gEventObjectPic_Phoebe_1),
+ obj_frame_tiles(gEventObjectPic_Phoebe_2),
+ obj_frame_tiles(gEventObjectPic_Phoebe_2)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Glacia[] = {
+ obj_frame_tiles(gEventObjectPic_Glacia_0),
+ obj_frame_tiles(gEventObjectPic_Glacia_1),
+ obj_frame_tiles(gEventObjectPic_Glacia_2),
+ obj_frame_tiles(gEventObjectPic_Glacia_0),
+ obj_frame_tiles(gEventObjectPic_Glacia_0),
+ obj_frame_tiles(gEventObjectPic_Glacia_1),
+ obj_frame_tiles(gEventObjectPic_Glacia_1),
+ obj_frame_tiles(gEventObjectPic_Glacia_2),
+ obj_frame_tiles(gEventObjectPic_Glacia_2)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Drake[] = {
+ obj_frame_tiles(gEventObjectPic_Drake_0),
+ obj_frame_tiles(gEventObjectPic_Drake_1),
+ obj_frame_tiles(gEventObjectPic_Drake_2),
+ obj_frame_tiles(gEventObjectPic_Drake_0),
+ obj_frame_tiles(gEventObjectPic_Drake_0),
+ obj_frame_tiles(gEventObjectPic_Drake_1),
+ obj_frame_tiles(gEventObjectPic_Drake_1),
+ obj_frame_tiles(gEventObjectPic_Drake_2),
+ obj_frame_tiles(gEventObjectPic_Drake_2)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Roxanne[] = {
+ obj_frame_tiles(gEventObjectPic_Roxanne_0),
+ obj_frame_tiles(gEventObjectPic_Roxanne_1),
+ obj_frame_tiles(gEventObjectPic_Roxanne_2),
+ obj_frame_tiles(gEventObjectPic_Roxanne_0),
+ obj_frame_tiles(gEventObjectPic_Roxanne_0),
+ obj_frame_tiles(gEventObjectPic_Roxanne_1),
+ obj_frame_tiles(gEventObjectPic_Roxanne_1),
+ obj_frame_tiles(gEventObjectPic_Roxanne_2),
+ obj_frame_tiles(gEventObjectPic_Roxanne_2)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Brawly[] = {
+ obj_frame_tiles(gEventObjectPic_Brawly_0),
+ obj_frame_tiles(gEventObjectPic_Brawly_1),
+ obj_frame_tiles(gEventObjectPic_Brawly_2),
+ obj_frame_tiles(gEventObjectPic_Brawly_0),
+ obj_frame_tiles(gEventObjectPic_Brawly_0),
+ obj_frame_tiles(gEventObjectPic_Brawly_1),
+ obj_frame_tiles(gEventObjectPic_Brawly_1),
+ obj_frame_tiles(gEventObjectPic_Brawly_2),
+ obj_frame_tiles(gEventObjectPic_Brawly_2)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Wattson[] = {
+ obj_frame_tiles(gEventObjectPic_Wattson_0),
+ obj_frame_tiles(gEventObjectPic_Wattson_1),
+ obj_frame_tiles(gEventObjectPic_Wattson_2),
+ obj_frame_tiles(gEventObjectPic_Wattson_0),
+ obj_frame_tiles(gEventObjectPic_Wattson_0),
+ obj_frame_tiles(gEventObjectPic_Wattson_1),
+ obj_frame_tiles(gEventObjectPic_Wattson_1),
+ obj_frame_tiles(gEventObjectPic_Wattson_2),
+ obj_frame_tiles(gEventObjectPic_Wattson_2)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Flannery[] = {
+ obj_frame_tiles(gEventObjectPic_Flannery_0),
+ obj_frame_tiles(gEventObjectPic_Flannery_1),
+ obj_frame_tiles(gEventObjectPic_Flannery_2),
+ obj_frame_tiles(gEventObjectPic_Flannery_0),
+ obj_frame_tiles(gEventObjectPic_Flannery_0),
+ obj_frame_tiles(gEventObjectPic_Flannery_1),
+ obj_frame_tiles(gEventObjectPic_Flannery_1),
+ obj_frame_tiles(gEventObjectPic_Flannery_2),
+ obj_frame_tiles(gEventObjectPic_Flannery_2)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Norman[] = {
+ obj_frame_tiles(gEventObjectPic_Norman_0),
+ obj_frame_tiles(gEventObjectPic_Norman_1),
+ obj_frame_tiles(gEventObjectPic_Norman_2),
+ obj_frame_tiles(gEventObjectPic_Norman_3),
+ obj_frame_tiles(gEventObjectPic_Norman_4),
+ obj_frame_tiles(gEventObjectPic_Norman_5),
+ obj_frame_tiles(gEventObjectPic_Norman_6),
+ obj_frame_tiles(gEventObjectPic_Norman_7),
+ obj_frame_tiles(gEventObjectPic_Norman_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Winona[] = {
+ obj_frame_tiles(gEventObjectPic_Winona_0),
+ obj_frame_tiles(gEventObjectPic_Winona_1),
+ obj_frame_tiles(gEventObjectPic_Winona_2),
+ obj_frame_tiles(gEventObjectPic_Winona_0),
+ obj_frame_tiles(gEventObjectPic_Winona_0),
+ obj_frame_tiles(gEventObjectPic_Winona_1),
+ obj_frame_tiles(gEventObjectPic_Winona_1),
+ obj_frame_tiles(gEventObjectPic_Winona_2),
+ obj_frame_tiles(gEventObjectPic_Winona_2)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Liza[] = {
+ obj_frame_tiles(gEventObjectPic_Liza_0),
+ obj_frame_tiles(gEventObjectPic_Liza_1),
+ obj_frame_tiles(gEventObjectPic_Liza_2),
+ obj_frame_tiles(gEventObjectPic_Liza_0),
+ obj_frame_tiles(gEventObjectPic_Liza_0),
+ obj_frame_tiles(gEventObjectPic_Liza_1),
+ obj_frame_tiles(gEventObjectPic_Liza_1),
+ obj_frame_tiles(gEventObjectPic_Liza_2),
+ obj_frame_tiles(gEventObjectPic_Liza_2)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Tate[] = {
+ obj_frame_tiles(gEventObjectPic_Tate_0),
+ obj_frame_tiles(gEventObjectPic_Tate_1),
+ obj_frame_tiles(gEventObjectPic_Tate_2),
+ obj_frame_tiles(gEventObjectPic_Tate_0),
+ obj_frame_tiles(gEventObjectPic_Tate_0),
+ obj_frame_tiles(gEventObjectPic_Tate_1),
+ obj_frame_tiles(gEventObjectPic_Tate_1),
+ obj_frame_tiles(gEventObjectPic_Tate_2),
+ obj_frame_tiles(gEventObjectPic_Tate_2)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Wallace[] = {
+ obj_frame_tiles(gEventObjectPic_Wallace_0),
+ obj_frame_tiles(gEventObjectPic_Wallace_1),
+ obj_frame_tiles(gEventObjectPic_Wallace_2),
+ obj_frame_tiles(gEventObjectPic_Wallace_3),
+ obj_frame_tiles(gEventObjectPic_Wallace_4),
+ obj_frame_tiles(gEventObjectPic_Wallace_5),
+ obj_frame_tiles(gEventObjectPic_Wallace_6),
+ obj_frame_tiles(gEventObjectPic_Wallace_7),
+ obj_frame_tiles(gEventObjectPic_Wallace_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Steven[] = {
+ obj_frame_tiles(gEventObjectPic_Steven_0),
+ obj_frame_tiles(gEventObjectPic_Steven_1),
+ obj_frame_tiles(gEventObjectPic_Steven_2),
+ obj_frame_tiles(gEventObjectPic_Steven_3),
+ obj_frame_tiles(gEventObjectPic_Steven_4),
+ obj_frame_tiles(gEventObjectPic_Steven_5),
+ obj_frame_tiles(gEventObjectPic_Steven_6),
+ obj_frame_tiles(gEventObjectPic_Steven_7),
+ obj_frame_tiles(gEventObjectPic_Steven_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Wally[] = {
+ obj_frame_tiles(gEventObjectPic_Wally_0),
+ obj_frame_tiles(gEventObjectPic_Wally_1),
+ obj_frame_tiles(gEventObjectPic_Wally_2),
+ obj_frame_tiles(gEventObjectPic_Wally_3),
+ obj_frame_tiles(gEventObjectPic_Wally_4),
+ obj_frame_tiles(gEventObjectPic_Wally_5),
+ obj_frame_tiles(gEventObjectPic_Wally_6),
+ obj_frame_tiles(gEventObjectPic_Wally_7),
+ obj_frame_tiles(gEventObjectPic_Wally_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_LittleBoy3[] = {
+ obj_frame_tiles(gEventObjectPic_LittleBoy3_0),
+ obj_frame_tiles(gEventObjectPic_LittleBoy3_1),
+ obj_frame_tiles(gEventObjectPic_LittleBoy3_2),
+ obj_frame_tiles(gEventObjectPic_LittleBoy3_3),
+ obj_frame_tiles(gEventObjectPic_LittleBoy3_4),
+ obj_frame_tiles(gEventObjectPic_LittleBoy3_5),
+ obj_frame_tiles(gEventObjectPic_LittleBoy3_6),
+ obj_frame_tiles(gEventObjectPic_LittleBoy3_7),
+ obj_frame_tiles(gEventObjectPic_LittleBoy3_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_BrendanFishing[] = {
+ obj_frame_tiles(gEventObjectPic_BrendanFishing_0),
+ obj_frame_tiles(gEventObjectPic_BrendanFishing_1),
+ obj_frame_tiles(gEventObjectPic_BrendanFishing_2),
+ obj_frame_tiles(gEventObjectPic_BrendanFishing_3),
+ obj_frame_tiles(gEventObjectPic_BrendanFishing_4),
+ obj_frame_tiles(gEventObjectPic_BrendanFishing_5),
+ obj_frame_tiles(gEventObjectPic_BrendanFishing_6),
+ obj_frame_tiles(gEventObjectPic_BrendanFishing_7),
+ obj_frame_tiles(gEventObjectPic_BrendanFishing_8),
+ obj_frame_tiles(gEventObjectPic_BrendanFishing_9),
+ obj_frame_tiles(gEventObjectPic_BrendanFishing_10),
+ obj_frame_tiles(gEventObjectPic_BrendanFishing_11)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_MayFishing[] = {
+ obj_frame_tiles(gEventObjectPic_MayFishing_0),
+ obj_frame_tiles(gEventObjectPic_MayFishing_1),
+ obj_frame_tiles(gEventObjectPic_MayFishing_2),
+ obj_frame_tiles(gEventObjectPic_MayFishing_3),
+ obj_frame_tiles(gEventObjectPic_MayFishing_4),
+ obj_frame_tiles(gEventObjectPic_MayFishing_5),
+ obj_frame_tiles(gEventObjectPic_MayFishing_6),
+ obj_frame_tiles(gEventObjectPic_MayFishing_7),
+ obj_frame_tiles(gEventObjectPic_MayFishing_8),
+ obj_frame_tiles(gEventObjectPic_MayFishing_9),
+ obj_frame_tiles(gEventObjectPic_MayFishing_10),
+ obj_frame_tiles(gEventObjectPic_MayFishing_11)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_HotSpringsOldWoman[] = {
+ obj_frame_tiles(gEventObjectPic_HotSpringsOldWoman_0),
+ obj_frame_tiles(gEventObjectPic_HotSpringsOldWoman_1),
+ obj_frame_tiles(gEventObjectPic_HotSpringsOldWoman_2),
+ obj_frame_tiles(gEventObjectPic_HotSpringsOldWoman_3),
+ obj_frame_tiles(gEventObjectPic_HotSpringsOldWoman_4),
+ obj_frame_tiles(gEventObjectPic_HotSpringsOldWoman_5),
+ obj_frame_tiles(gEventObjectPic_HotSpringsOldWoman_6),
+ obj_frame_tiles(gEventObjectPic_HotSpringsOldWoman_7),
+ obj_frame_tiles(gEventObjectPic_HotSpringsOldWoman_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_SSTidal[] = {
+ obj_frame_tiles(gEventObjectPic_SSTidal),
+ obj_frame_tiles(gEventObjectPic_SSTidal),
+ obj_frame_tiles(gEventObjectPic_SSTidal),
+ obj_frame_tiles(gEventObjectPic_SSTidal),
+ obj_frame_tiles(gEventObjectPic_SSTidal),
+ obj_frame_tiles(gEventObjectPic_SSTidal),
+ obj_frame_tiles(gEventObjectPic_SSTidal),
+ obj_frame_tiles(gEventObjectPic_SSTidal),
+ obj_frame_tiles(gEventObjectPic_SSTidal)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_SubmarineShadow[] = {
+ obj_frame_tiles(gEventObjectPic_SubmarineShadow),
+ obj_frame_tiles(gEventObjectPic_SubmarineShadow),
+ obj_frame_tiles(gEventObjectPic_SubmarineShadow),
+ obj_frame_tiles(gEventObjectPic_SubmarineShadow),
+ obj_frame_tiles(gEventObjectPic_SubmarineShadow),
+ obj_frame_tiles(gEventObjectPic_SubmarineShadow),
+ obj_frame_tiles(gEventObjectPic_SubmarineShadow),
+ obj_frame_tiles(gEventObjectPic_SubmarineShadow),
+ obj_frame_tiles(gEventObjectPic_SubmarineShadow)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_PichuDoll[] = {
+ obj_frame_tiles(gEventObjectPic_PichuDoll)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_PikachuDoll[] = {
+ obj_frame_tiles(gEventObjectPic_PikachuDoll)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_MarillDoll[] = {
+ obj_frame_tiles(gEventObjectPic_MarillDoll)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_TogepiDoll[] = {
+ obj_frame_tiles(gEventObjectPic_TogepiDoll)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_CyndaquilDoll[] = {
+ obj_frame_tiles(gEventObjectPic_CyndaquilDoll)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_ChikoritaDoll[] = {
+ obj_frame_tiles(gEventObjectPic_ChikoritaDoll)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_TotodileDoll[] = {
+ obj_frame_tiles(gEventObjectPic_TotodileDoll)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_JigglypuffDoll[] = {
+ obj_frame_tiles(gEventObjectPic_JigglypuffDoll)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_MeowthDoll[] = {
+ obj_frame_tiles(gEventObjectPic_MeowthDoll)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_ClefairyDoll[] = {
+ obj_frame_tiles(gEventObjectPic_ClefairyDoll)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_DittoDoll[] = {
+ obj_frame_tiles(gEventObjectPic_DittoDoll)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_SmoochumDoll[] = {
+ obj_frame_tiles(gEventObjectPic_SmoochumDoll)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_TreeckoDoll[] = {
+ obj_frame_tiles(gEventObjectPic_TreeckoDoll)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_TorchicDoll[] = {
+ obj_frame_tiles(gEventObjectPic_TorchicDoll)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_MudkipDoll[] = {
+ obj_frame_tiles(gEventObjectPic_MudkipDoll)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_DuskullDoll[] = {
+ obj_frame_tiles(gEventObjectPic_DuskullDoll)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_WynautDoll[] = {
+ obj_frame_tiles(gEventObjectPic_WynautDoll)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_BaltoyDoll[] = {
+ obj_frame_tiles(gEventObjectPic_BaltoyDoll)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_KecleonDoll[] = {
+ obj_frame_tiles(gEventObjectPic_KecleonDoll)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_AzurillDoll[] = {
+ obj_frame_tiles(gEventObjectPic_AzurillDoll)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_SkittyDoll[] = {
+ obj_frame_tiles(gEventObjectPic_SkittyDoll)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_SwabluDoll[] = {
+ obj_frame_tiles(gEventObjectPic_SwabluDoll)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_GulpinDoll[] = {
+ obj_frame_tiles(gEventObjectPic_GulpinDoll)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_LotadDoll[] = {
+ obj_frame_tiles(gEventObjectPic_LotadDoll)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_SeedotDoll[] = {
+ obj_frame_tiles(gEventObjectPic_SeedotDoll)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_PikaCushion[] = {
+ obj_frame_tiles(gEventObjectPic_PikaCushion)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_RoundCushion[] = {
+ obj_frame_tiles(gEventObjectPic_RoundCushion)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_KissCushion[] = {
+ obj_frame_tiles(gEventObjectPic_KissCushion)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_ZigzagCushion[] = {
+ obj_frame_tiles(gEventObjectPic_ZigzagCushion)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_SpinCushion[] = {
+ obj_frame_tiles(gEventObjectPic_SpinCushion)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_DiamondCushion[] = {
+ obj_frame_tiles(gEventObjectPic_DiamondCushion)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_BallCushion[] = {
+ obj_frame_tiles(gEventObjectPic_BallCushion)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_GrassCushion[] = {
+ obj_frame_tiles(gEventObjectPic_GrassCushion)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_FireCushion[] = {
+ obj_frame_tiles(gEventObjectPic_FireCushion)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_WaterCushion[] = {
+ obj_frame_tiles(gEventObjectPic_WaterCushion)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_BigSnorlaxDoll[] = {
+ obj_frame_tiles(gEventObjectPic_BigSnorlaxDoll)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_BigRhydonDoll[] = {
+ obj_frame_tiles(gEventObjectPic_BigRhydonDoll)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_BigLaprasDoll[] = {
+ obj_frame_tiles(gEventObjectPic_BigLaprasDoll)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_BigVenusaurDoll[] = {
+ obj_frame_tiles(gEventObjectPic_BigVenusaurDoll)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_BigCharizardDoll[] = {
+ obj_frame_tiles(gEventObjectPic_BigCharizardDoll)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_BigBlastoiseDoll[] = {
+ obj_frame_tiles(gEventObjectPic_BigBlastoiseDoll)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_BigWailmerDoll[] = {
+ obj_frame_tiles(gEventObjectPic_BigWailmerDoll)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_BigRegirockDoll[] = {
+ obj_frame_tiles(gEventObjectPic_BigRegirockDoll)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_BigRegiceDoll[] = {
+ obj_frame_tiles(gEventObjectPic_BigRegiceDoll)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_BigRegisteelDoll[] = {
+ obj_frame_tiles(gEventObjectPic_BigRegisteelDoll)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_LatiasLatios[] = {
+ obj_frame_tiles(gEventObjectPic_LatiasLatios_0),
+ obj_frame_tiles(gEventObjectPic_LatiasLatios_0),
+ obj_frame_tiles(gEventObjectPic_LatiasLatios_0),
+ obj_frame_tiles(gEventObjectPic_LatiasLatios_1),
+ obj_frame_tiles(gEventObjectPic_LatiasLatios_2),
+ obj_frame_tiles(gEventObjectPic_LatiasLatios_1),
+ obj_frame_tiles(gEventObjectPic_LatiasLatios_2),
+ obj_frame_tiles(gEventObjectPic_LatiasLatios_1),
+ obj_frame_tiles(gEventObjectPic_LatiasLatios_2)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Boy5[] = {
+ obj_frame_tiles(gEventObjectPic_Boy5_0),
+ obj_frame_tiles(gEventObjectPic_Boy5_1),
+ obj_frame_tiles(gEventObjectPic_Boy5_2),
+ obj_frame_tiles(gEventObjectPic_Boy5_0),
+ obj_frame_tiles(gEventObjectPic_Boy5_0),
+ obj_frame_tiles(gEventObjectPic_Boy5_1),
+ obj_frame_tiles(gEventObjectPic_Boy5_1),
+ obj_frame_tiles(gEventObjectPic_Boy5_2),
+ obj_frame_tiles(gEventObjectPic_Boy5_2)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_ContestJudge[] = {
+ obj_frame_tiles(gEventObjectPic_ContestJudge_0),
+ obj_frame_tiles(gEventObjectPic_ContestJudge_1),
+ obj_frame_tiles(gEventObjectPic_ContestJudge_2),
+ obj_frame_tiles(gEventObjectPic_ContestJudge_3),
+ obj_frame_tiles(gEventObjectPic_ContestJudge_4),
+ obj_frame_tiles(gEventObjectPic_ContestJudge_5),
+ obj_frame_tiles(gEventObjectPic_ContestJudge_6),
+ obj_frame_tiles(gEventObjectPic_ContestJudge_7),
+ obj_frame_tiles(gEventObjectPic_ContestJudge_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_BrendanWatering[] = {
+ obj_frame_tiles(gEventObjectPic_BrendanWatering_0),
+ obj_frame_tiles(gEventObjectPic_BrendanWatering_1),
+ obj_frame_tiles(gEventObjectPic_BrendanWatering_2),
+ obj_frame_tiles(gEventObjectPic_BrendanWatering_3),
+ obj_frame_tiles(gEventObjectPic_BrendanWatering_3),
+ obj_frame_tiles(gEventObjectPic_BrendanWatering_4),
+ obj_frame_tiles(gEventObjectPic_BrendanWatering_4),
+ obj_frame_tiles(gEventObjectPic_BrendanWatering_5),
+ obj_frame_tiles(gEventObjectPic_BrendanWatering_5)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_MayWatering[] = {
+ obj_frame_tiles(gEventObjectPic_MayWatering_0),
+ obj_frame_tiles(gEventObjectPic_MayWatering_1),
+ obj_frame_tiles(gEventObjectPic_MayWatering_2),
+ obj_frame_tiles(gEventObjectPic_MayWatering_3),
+ obj_frame_tiles(gEventObjectPic_MayWatering_3),
+ obj_frame_tiles(gEventObjectPic_MayWatering_4),
+ obj_frame_tiles(gEventObjectPic_MayWatering_4),
+ obj_frame_tiles(gEventObjectPic_MayWatering_5),
+ obj_frame_tiles(gEventObjectPic_MayWatering_5)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_BrendanDecorating[] = {
+ obj_frame_tiles(gEventObjectPic_BrendanDecorating)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_MayDecorating[] = {
+ obj_frame_tiles(gEventObjectPic_MayDecorating)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Archie[] = {
+ obj_frame_tiles(gEventObjectPic_Archie_0),
+ obj_frame_tiles(gEventObjectPic_Archie_1),
+ obj_frame_tiles(gEventObjectPic_Archie_2),
+ obj_frame_tiles(gEventObjectPic_Archie_3),
+ obj_frame_tiles(gEventObjectPic_Archie_4),
+ obj_frame_tiles(gEventObjectPic_Archie_5),
+ obj_frame_tiles(gEventObjectPic_Archie_6),
+ obj_frame_tiles(gEventObjectPic_Archie_7),
+ obj_frame_tiles(gEventObjectPic_Archie_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Maxie[] = {
+ obj_frame_tiles(gEventObjectPic_Maxie_0),
+ obj_frame_tiles(gEventObjectPic_Maxie_1),
+ obj_frame_tiles(gEventObjectPic_Maxie_2),
+ obj_frame_tiles(gEventObjectPic_Maxie_3),
+ obj_frame_tiles(gEventObjectPic_Maxie_4),
+ obj_frame_tiles(gEventObjectPic_Maxie_5),
+ obj_frame_tiles(gEventObjectPic_Maxie_6),
+ obj_frame_tiles(gEventObjectPic_Maxie_7),
+ obj_frame_tiles(gEventObjectPic_Maxie_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Kyogre[] = {
+ obj_frame_tiles(gEventObjectPic_Kyogre_0),
+ obj_frame_tiles(gEventObjectPic_Kyogre_0),
+ obj_frame_tiles(gEventObjectPic_Kyogre_0),
+ obj_frame_tiles(gEventObjectPic_Kyogre_1),
+ obj_frame_tiles(gEventObjectPic_Kyogre_1),
+ obj_frame_tiles(gEventObjectPic_Kyogre_1),
+ obj_frame_tiles(gEventObjectPic_Kyogre_1),
+ obj_frame_tiles(gEventObjectPic_Kyogre_1),
+ obj_frame_tiles(gEventObjectPic_Kyogre_1)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Groudon[] = {
+ obj_frame_tiles(gEventObjectPic_Groudon_0),
+ obj_frame_tiles(gEventObjectPic_Groudon_0),
+ obj_frame_tiles(gEventObjectPic_Groudon_0),
+ obj_frame_tiles(gEventObjectPic_Groudon_1),
+ obj_frame_tiles(gEventObjectPic_Groudon_1),
+ obj_frame_tiles(gEventObjectPic_Groudon_1),
+ obj_frame_tiles(gEventObjectPic_Groudon_1),
+ obj_frame_tiles(gEventObjectPic_Groudon_1),
+ obj_frame_tiles(gEventObjectPic_Groudon_1)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Fossil[] = {
+ obj_frame_tiles(gEventObjectPic_Fossil)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Regi[] = {
+ obj_frame_tiles(gEventObjectPic_Regi),
+ obj_frame_tiles(gEventObjectPic_Regi),
+ obj_frame_tiles(gEventObjectPic_Regi),
+ obj_frame_tiles(gEventObjectPic_Regi),
+ obj_frame_tiles(gEventObjectPic_Regi),
+ obj_frame_tiles(gEventObjectPic_Regi),
+ obj_frame_tiles(gEventObjectPic_Regi),
+ obj_frame_tiles(gEventObjectPic_Regi),
+ obj_frame_tiles(gEventObjectPic_Regi)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Skitty[] = {
+ obj_frame_tiles(gEventObjectPic_Skitty_0),
+ obj_frame_tiles(gEventObjectPic_Skitty_1),
+ obj_frame_tiles(gEventObjectPic_Skitty_2),
+ obj_frame_tiles(gEventObjectPic_Skitty_0),
+ obj_frame_tiles(gEventObjectPic_Skitty_0),
+ obj_frame_tiles(gEventObjectPic_Skitty_1),
+ obj_frame_tiles(gEventObjectPic_Skitty_1),
+ obj_frame_tiles(gEventObjectPic_Skitty_2),
+ obj_frame_tiles(gEventObjectPic_Skitty_2)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Kecleon[] = {
+ obj_frame_tiles(gEventObjectPic_Kecleon_0),
+ obj_frame_tiles(gEventObjectPic_Kecleon_1),
+ obj_frame_tiles(gEventObjectPic_Kecleon_2),
+ obj_frame_tiles(gEventObjectPic_Kecleon_0),
+ obj_frame_tiles(gEventObjectPic_Kecleon_0),
+ obj_frame_tiles(gEventObjectPic_Kecleon_1),
+ obj_frame_tiles(gEventObjectPic_Kecleon_1),
+ obj_frame_tiles(gEventObjectPic_Kecleon_2),
+ obj_frame_tiles(gEventObjectPic_Kecleon_2)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Rayquaza[] = {
+ obj_frame_tiles(gEventObjectPic_Rayquaza_0),
+ obj_frame_tiles(gEventObjectPic_Rayquaza_0),
+ obj_frame_tiles(gEventObjectPic_Rayquaza_0),
+ obj_frame_tiles(gEventObjectPic_Rayquaza_1),
+ obj_frame_tiles(gEventObjectPic_Rayquaza_1),
+ obj_frame_tiles(gEventObjectPic_Rayquaza_1),
+ obj_frame_tiles(gEventObjectPic_Rayquaza_1),
+ obj_frame_tiles(gEventObjectPic_Rayquaza_1),
+ obj_frame_tiles(gEventObjectPic_Rayquaza_1)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Zigzagoon[] = {
+ obj_frame_tiles(gEventObjectPic_Zigzagoon_0),
+ obj_frame_tiles(gEventObjectPic_Zigzagoon_1),
+ obj_frame_tiles(gEventObjectPic_Zigzagoon_2),
+ obj_frame_tiles(gEventObjectPic_Zigzagoon_0),
+ obj_frame_tiles(gEventObjectPic_Zigzagoon_0),
+ obj_frame_tiles(gEventObjectPic_Zigzagoon_1),
+ obj_frame_tiles(gEventObjectPic_Zigzagoon_1),
+ obj_frame_tiles(gEventObjectPic_Zigzagoon_2),
+ obj_frame_tiles(gEventObjectPic_Zigzagoon_2)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Pikachu[] = {
+ obj_frame_tiles(gEventObjectPic_Pikachu_0),
+ obj_frame_tiles(gEventObjectPic_Pikachu_1),
+ obj_frame_tiles(gEventObjectPic_Pikachu_2),
+ obj_frame_tiles(gEventObjectPic_Pikachu_0),
+ obj_frame_tiles(gEventObjectPic_Pikachu_0),
+ obj_frame_tiles(gEventObjectPic_Pikachu_1),
+ obj_frame_tiles(gEventObjectPic_Pikachu_1),
+ obj_frame_tiles(gEventObjectPic_Pikachu_2),
+ obj_frame_tiles(gEventObjectPic_Pikachu_2)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Azumarill[] = {
+ obj_frame_tiles(gEventObjectPic_Azumarill_0),
+ obj_frame_tiles(gEventObjectPic_Azumarill_1),
+ obj_frame_tiles(gEventObjectPic_Azumarill_2),
+ obj_frame_tiles(gEventObjectPic_Azumarill_0),
+ obj_frame_tiles(gEventObjectPic_Azumarill_0),
+ obj_frame_tiles(gEventObjectPic_Azumarill_1),
+ obj_frame_tiles(gEventObjectPic_Azumarill_1),
+ obj_frame_tiles(gEventObjectPic_Azumarill_2),
+ obj_frame_tiles(gEventObjectPic_Azumarill_2)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Wingull[] = {
+ obj_frame_tiles(gEventObjectPic_Wingull_0),
+ obj_frame_tiles(gEventObjectPic_Wingull_1),
+ obj_frame_tiles(gEventObjectPic_Wingull_2),
+ obj_frame_tiles(gEventObjectPic_Wingull_3),
+ obj_frame_tiles(gEventObjectPic_Wingull_3),
+ obj_frame_tiles(gEventObjectPic_Wingull_4),
+ obj_frame_tiles(gEventObjectPic_Wingull_4),
+ obj_frame_tiles(gEventObjectPic_Wingull_5),
+ obj_frame_tiles(gEventObjectPic_Wingull_5)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_TuberMSwimming[] = {
+ obj_frame_tiles(gEventObjectPic_TuberMSwimming_0),
+ obj_frame_tiles(gEventObjectPic_TuberMSwimming_1),
+ obj_frame_tiles(gEventObjectPic_TuberMSwimming_2),
+ obj_frame_tiles(gEventObjectPic_TuberMSwimming_3),
+ obj_frame_tiles(gEventObjectPic_TuberMSwimming_4),
+ obj_frame_tiles(gEventObjectPic_TuberMSwimming_5),
+ obj_frame_tiles(gEventObjectPic_TuberMSwimming_6),
+ obj_frame_tiles(gEventObjectPic_TuberMSwimming_7),
+ obj_frame_tiles(gEventObjectPic_TuberMSwimming_8)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Azurill[] = {
+ obj_frame_tiles(gEventObjectPic_Azurill_0),
+ obj_frame_tiles(gEventObjectPic_Azurill_1),
+ obj_frame_tiles(gEventObjectPic_Azurill_2),
+ obj_frame_tiles(gEventObjectPic_Azurill_0),
+ obj_frame_tiles(gEventObjectPic_Azurill_0),
+ obj_frame_tiles(gEventObjectPic_Azurill_1),
+ obj_frame_tiles(gEventObjectPic_Azurill_1),
+ obj_frame_tiles(gEventObjectPic_Azurill_2),
+ obj_frame_tiles(gEventObjectPic_Azurill_2)
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Mom[] = {
+ obj_frame_tiles(gEventObjectPic_Mom_0),
+ obj_frame_tiles(gEventObjectPic_Mom_1),
+ obj_frame_tiles(gEventObjectPic_Mom_2),
+ obj_frame_tiles(gEventObjectPic_Mom_3),
+ obj_frame_tiles(gEventObjectPic_Mom_4),
+ obj_frame_tiles(gEventObjectPic_Mom_5),
+ obj_frame_tiles(gEventObjectPic_Mom_6),
+ obj_frame_tiles(gEventObjectPic_Mom_7),
+ obj_frame_tiles(gEventObjectPic_Mom_8),
+};
+
+#endif //POKERUBY_EVENT_OBJECT_PIC_TABLES_H
diff --git a/src/data/field_map_obj/map_object_subsprites.h b/src/data/field_event_obj/event_object_subsprites.h
index 951d71e99..95ff6dc03 100644
--- a/src/data/field_map_obj/map_object_subsprites.h
+++ b/src/data/field_event_obj/event_object_subsprites.h
@@ -2,108 +2,108 @@
//
-#ifndef POKERUBY_MAP_OBJECT_SUBSPRITES_H
-#define POKERUBY_MAP_OBJECT_SUBSPRITES_H
+#ifndef POKERUBY_EVENT_OBJECT_SUBSPRITES_H
+#define POKERUBY_EVENT_OBJECT_SUBSPRITES_H
-const struct Subsprite gMapObjectSubspriteTable_16x16_0[] = {
+const struct Subsprite gEventObjectSubspriteTable_16x16_0[] = {
{ -8, -8, 0, 1, 0, 2}
};
-const struct Subsprite gMapObjectSubspriteTable_16x16_1[] = {
+const struct Subsprite gEventObjectSubspriteTable_16x16_1[] = {
{ -8, -8, 0, 1, 0, 1}
};
-const struct Subsprite gMapObjectSubspriteTable_16x16_2[] = {
+const struct Subsprite gEventObjectSubspriteTable_16x16_2[] = {
{ -8, -8, 1, 0, 0, 2},
{ -8, 0, 1, 0, 2, 3}
};
-const struct Subsprite gMapObjectSubspriteTable_16x16_3[] = {
+const struct Subsprite gEventObjectSubspriteTable_16x16_3[] = {
{ -8, -8, 0, 1, 0, 2},
{ -8, -8, 0, 1, 0, 3}
};
-const struct Subsprite gMapObjectSubspriteTable_16x16_4[] = {
+const struct Subsprite gEventObjectSubspriteTable_16x16_4[] = {
{ -8, -8, 0, 1, 0, 1},
{ -8, -8, 0, 1, 0, 3}
};
-const struct SubspriteTable gMapObjectSubspriteTables_16x16[] = {
+const struct SubspriteTable gEventObjectSubspriteTables_16x16[] = {
{0, NULL},
- {1, gMapObjectSubspriteTable_16x16_0},
- {1, gMapObjectSubspriteTable_16x16_1},
- {2, gMapObjectSubspriteTable_16x16_2},
- {2, gMapObjectSubspriteTable_16x16_3},
- {2, gMapObjectSubspriteTable_16x16_4}
+ {1, gEventObjectSubspriteTable_16x16_0},
+ {1, gEventObjectSubspriteTable_16x16_1},
+ {2, gEventObjectSubspriteTable_16x16_2},
+ {2, gEventObjectSubspriteTable_16x16_3},
+ {2, gEventObjectSubspriteTable_16x16_4}
};
-const struct Subsprite gMapObjectSubspriteTable_16x32_0[] = {
+const struct Subsprite gEventObjectSubspriteTable_16x32_0[] = {
{ -8, -16, 2, 2, 0, 2}
};
-const struct Subsprite gMapObjectSubspriteTable_16x32_1[] = {
+const struct Subsprite gEventObjectSubspriteTable_16x32_1[] = {
{ -8, -16, 2, 2, 0, 1}
};
-const struct Subsprite gMapObjectSubspriteTable_16x32_2[] = {
+const struct Subsprite gEventObjectSubspriteTable_16x32_2[] = {
{ -8, -16, 0, 1, 0, 2},
{ -8, 0, 1, 0, 4, 2},
{ -8, 8, 1, 0, 6, 3}
};
-const struct Subsprite gMapObjectSubspriteTable_16x32_3[] = {
+const struct Subsprite gEventObjectSubspriteTable_16x32_3[] = {
{ -8, -16, 0, 1, 0, 2},
{ -8, 0, 0, 1, 4, 3}
};
-const struct Subsprite gMapObjectSubspriteTable_16x32_4[] = {
+const struct Subsprite gEventObjectSubspriteTable_16x32_4[] = {
{ -8, -16, 0, 1, 0, 1},
{ -8, 0, 0, 1, 4, 3}
};
-const struct SubspriteTable gMapObjectSubspriteTables_16x32[] = {
+const struct SubspriteTable gEventObjectSubspriteTables_16x32[] = {
{0, NULL},
- {1, gMapObjectSubspriteTable_16x32_0},
- {1, gMapObjectSubspriteTable_16x32_1},
- {3, gMapObjectSubspriteTable_16x32_2},
- {2, gMapObjectSubspriteTable_16x32_3},
- {2, gMapObjectSubspriteTable_16x32_4}
+ {1, gEventObjectSubspriteTable_16x32_0},
+ {1, gEventObjectSubspriteTable_16x32_1},
+ {3, gEventObjectSubspriteTable_16x32_2},
+ {2, gEventObjectSubspriteTable_16x32_3},
+ {2, gEventObjectSubspriteTable_16x32_4}
};
-const struct Subsprite gMapObjectSubspriteTable_32x32_0[] = {
+const struct Subsprite gEventObjectSubspriteTable_32x32_0[] = {
{-16, -16, 0, 2, 0, 2}
};
-const struct Subsprite gMapObjectSubspriteTable_32x32_1[] = {
+const struct Subsprite gEventObjectSubspriteTable_32x32_1[] = {
{-16, -16, 0, 2, 0, 1}
};
-const struct Subsprite gMapObjectSubspriteTable_32x32_2[] = {
+const struct Subsprite gEventObjectSubspriteTable_32x32_2[] = {
{-16, -16, 1, 2, 0, 2},
{-16, 0, 1, 1, 8, 2},
{-16, 8, 1, 1, 12, 3}
};
-const struct Subsprite gMapObjectSubspriteTable_32x32_3[] = {
+const struct Subsprite gEventObjectSubspriteTable_32x32_3[] = {
{-16, -16, 1, 2, 0, 2},
{-16, 0, 1, 2, 8, 3}
};
-const struct Subsprite gMapObjectSubspriteTable_32x32_4[] = {
+const struct Subsprite gEventObjectSubspriteTable_32x32_4[] = {
{-16, -16, 1, 2, 0, 1},
{-16, 0, 1, 2, 8, 3}
};
-const struct SubspriteTable gMapObjectSubspriteTables_32x32[] = {
+const struct SubspriteTable gEventObjectSubspriteTables_32x32[] = {
{0, NULL},
- {1, gMapObjectSubspriteTable_32x32_0},
- {1, gMapObjectSubspriteTable_32x32_1},
- {3, gMapObjectSubspriteTable_32x32_2},
- {2, gMapObjectSubspriteTable_32x32_3},
- {2, gMapObjectSubspriteTable_32x32_4}
+ {1, gEventObjectSubspriteTable_32x32_0},
+ {1, gEventObjectSubspriteTable_32x32_1},
+ {3, gEventObjectSubspriteTable_32x32_2},
+ {2, gEventObjectSubspriteTable_32x32_3},
+ {2, gEventObjectSubspriteTable_32x32_4}
};
-const struct Subsprite gMapObjectSubspriteTable_Truck_0[] = {
+const struct Subsprite gEventObjectSubspriteTable_Truck_0[] = {
{-24, -24, 1, 1, 0, 2},
{ 8, -24, 1, 0, 4, 2},
{-24, -16, 1, 1, 6, 2},
@@ -118,66 +118,66 @@ const struct Subsprite gMapObjectSubspriteTable_Truck_0[] = {
{ 8, 16, 1, 0, 34, 2}
};
-const struct SubspriteTable gMapObjectSubspriteTables_Truck[] = {
- {12, gMapObjectSubspriteTable_Truck_0},
- {12, gMapObjectSubspriteTable_Truck_0},
- {12, gMapObjectSubspriteTable_Truck_0},
- {12, gMapObjectSubspriteTable_Truck_0},
- {12, gMapObjectSubspriteTable_Truck_0},
- {12, gMapObjectSubspriteTable_Truck_0}
+const struct SubspriteTable gEventObjectSubspriteTables_Truck[] = {
+ {12, gEventObjectSubspriteTable_Truck_0},
+ {12, gEventObjectSubspriteTable_Truck_0},
+ {12, gEventObjectSubspriteTable_Truck_0},
+ {12, gEventObjectSubspriteTable_Truck_0},
+ {12, gEventObjectSubspriteTable_Truck_0},
+ {12, gEventObjectSubspriteTable_Truck_0}
};
-const struct Subsprite gMapObjectSubspriteTable_Unused_0[] = {
+const struct Subsprite gEventObjectSubspriteTable_Unused_0[] = {
{-32, -16, 1, 3, 0, 2}
};
-const struct Subsprite gMapObjectSubspriteTable_Unused_1[] = {
+const struct Subsprite gEventObjectSubspriteTable_Unused_1[] = {
{-32, -16, 1, 3, 0, 1}
};
-const struct Subsprite gMapObjectSubspriteTable_Unused_2[] = {
+const struct Subsprite gEventObjectSubspriteTable_Unused_2[] = {
{-32, -16, 1, 3, 0, 2}
};
-const struct Subsprite gMapObjectSubspriteTable_Unused_3[] = {
+const struct Subsprite gEventObjectSubspriteTable_Unused_3[] = {
{-32, -16, 1, 3, 0, 2}
};
-const struct SubspriteTable gMapObjectSubspriteTables_Unused[] = {
+const struct SubspriteTable gEventObjectSubspriteTables_Unused[] = {
{0, NULL},
- {1, gMapObjectSubspriteTable_Unused_0},
- {1, gMapObjectSubspriteTable_Unused_1},
- {1, gMapObjectSubspriteTable_Unused_2},
- {1, gMapObjectSubspriteTable_Unused_3},
- {1, gMapObjectSubspriteTable_Unused_3}
+ {1, gEventObjectSubspriteTable_Unused_0},
+ {1, gEventObjectSubspriteTable_Unused_1},
+ {1, gEventObjectSubspriteTable_Unused_2},
+ {1, gEventObjectSubspriteTable_Unused_3},
+ {1, gEventObjectSubspriteTable_Unused_3}
};
-const struct Subsprite gMapObjectSubspriteTable_CableCar_0[] = {
+const struct Subsprite gEventObjectSubspriteTable_CableCar_0[] = {
{-32, -32, 0, 3, 0, 2}
};
-const struct Subsprite gMapObjectSubspriteTable_CableCar_1[] = {
+const struct Subsprite gEventObjectSubspriteTable_CableCar_1[] = {
{-32, -32, 0, 3, 0, 1}
};
-const struct Subsprite gMapObjectSubspriteTable_CableCar_2[] = {
+const struct Subsprite gEventObjectSubspriteTable_CableCar_2[] = {
{-32, -32, 0, 3, 0, 2}
};
-const struct Subsprite gMapObjectSubspriteTable_CableCar_3[] = {
+const struct Subsprite gEventObjectSubspriteTable_CableCar_3[] = {
{-32, -32, 0, 3, 0, 2}
};
-const struct SubspriteTable gMapObjectSubspriteTables_CableCar[] = {
+const struct SubspriteTable gEventObjectSubspriteTables_CableCar[] = {
{0, NULL},
- {1, gMapObjectSubspriteTable_CableCar_0},
- {1, gMapObjectSubspriteTable_CableCar_1},
- {1, gMapObjectSubspriteTable_CableCar_2},
- {1, gMapObjectSubspriteTable_CableCar_3},
- {1, gMapObjectSubspriteTable_CableCar_3}
+ {1, gEventObjectSubspriteTable_CableCar_0},
+ {1, gEventObjectSubspriteTable_CableCar_1},
+ {1, gEventObjectSubspriteTable_CableCar_2},
+ {1, gEventObjectSubspriteTable_CableCar_3},
+ {1, gEventObjectSubspriteTable_CableCar_3}
};
-const struct Subsprite gMapObjectSubspriteTable_SSTidal_0[] = {
+const struct Subsprite gEventObjectSubspriteTable_SSTidal_0[] = {
{-48, -20, 1, 1, 0, 2},
{-16, -20, 1, 1, 4, 2},
{ 16, -20, 1, 1, 8, 2},
@@ -195,7 +195,7 @@ const struct Subsprite gMapObjectSubspriteTable_SSTidal_0[] = {
{ 16, 12, 1, 1, 56, 2}
};
-const struct Subsprite gMapObjectSubspriteTable_SSTidal_1[] = {
+const struct Subsprite gEventObjectSubspriteTable_SSTidal_1[] = {
{-48, -20, 1, 1, 0, 1},
{-16, -20, 1, 1, 4, 1},
{ 16, -20, 1, 1, 8, 1},
@@ -213,7 +213,7 @@ const struct Subsprite gMapObjectSubspriteTable_SSTidal_1[] = {
{ 16, 12, 1, 1, 56, 1}
};
-const struct Subsprite gMapObjectSubspriteTable_SSTidal_2[] = {
+const struct Subsprite gEventObjectSubspriteTable_SSTidal_2[] = {
{-48, -20, 1, 1, 0, 2},
{-16, -20, 1, 1, 4, 2},
{ 16, -20, 1, 1, 8, 2},
@@ -231,7 +231,7 @@ const struct Subsprite gMapObjectSubspriteTable_SSTidal_2[] = {
{ 16, 12, 1, 1, 56, 2}
};
-const struct Subsprite gMapObjectSubspriteTable_SSTidal_3[] = {
+const struct Subsprite gEventObjectSubspriteTable_SSTidal_3[] = {
{-48, -20, 1, 1, 0, 1},
{-16, -20, 1, 1, 4, 1},
{ 16, -20, 1, 1, 8, 1},
@@ -249,16 +249,16 @@ const struct Subsprite gMapObjectSubspriteTable_SSTidal_3[] = {
{ 16, 12, 1, 1, 56, 2}
};
-const struct SubspriteTable gMapObjectSubspriteTables_SSTidal[] = {
- {15, gMapObjectSubspriteTable_SSTidal_0},
- {15, gMapObjectSubspriteTable_SSTidal_0},
- {15, gMapObjectSubspriteTable_SSTidal_1},
- {15, gMapObjectSubspriteTable_SSTidal_2},
- {15, gMapObjectSubspriteTable_SSTidal_3},
- {15, gMapObjectSubspriteTable_SSTidal_3}
+const struct SubspriteTable gEventObjectSubspriteTables_SSTidal[] = {
+ {15, gEventObjectSubspriteTable_SSTidal_0},
+ {15, gEventObjectSubspriteTable_SSTidal_0},
+ {15, gEventObjectSubspriteTable_SSTidal_1},
+ {15, gEventObjectSubspriteTable_SSTidal_2},
+ {15, gEventObjectSubspriteTable_SSTidal_3},
+ {15, gEventObjectSubspriteTable_SSTidal_3}
};
-const struct Subsprite gMapObjectSubspriteTable_SubmarineShadow_0[] = {
+const struct Subsprite gEventObjectSubspriteTable_SubmarineShadow_0[] = {
{-48, -20, 1, 1, 0, 2},
{-16, -20, 1, 1, 4, 2},
{ 16, -20, 1, 0, 8, 2},
@@ -277,7 +277,7 @@ const struct Subsprite gMapObjectSubspriteTable_SubmarineShadow_0[] = {
{ 32, 4, 0, 0, 43, 2}
};
-const struct Subsprite gMapObjectSubspriteTable_SubmarineShadow_1[] = {
+const struct Subsprite gEventObjectSubspriteTable_SubmarineShadow_1[] = {
{-48, -20, 1, 1, 0, 1},
{-16, -20, 1, 1, 4, 1},
{ 16, -20, 1, 0, 8, 1},
@@ -296,7 +296,7 @@ const struct Subsprite gMapObjectSubspriteTable_SubmarineShadow_1[] = {
{ 32, 4, 0, 0, 43, 1}
};
-const struct Subsprite gMapObjectSubspriteTable_SubmarineShadow_2[] = {
+const struct Subsprite gEventObjectSubspriteTable_SubmarineShadow_2[] = {
{-48, -20, 1, 1, 0, 2},
{-16, -20, 1, 1, 4, 2},
{ 16, -20, 1, 0, 8, 2},
@@ -315,7 +315,7 @@ const struct Subsprite gMapObjectSubspriteTable_SubmarineShadow_2[] = {
{ 32, 4, 0, 0, 43, 2}
};
-const struct Subsprite gMapObjectSubspriteTable_SubmarineShadow_3[] = {
+const struct Subsprite gEventObjectSubspriteTable_SubmarineShadow_3[] = {
{-48, -20, 1, 1, 0, 1},
{-16, -20, 1, 1, 4, 1},
{ 16, -20, 1, 0, 8, 1},
@@ -334,12 +334,12 @@ const struct Subsprite gMapObjectSubspriteTable_SubmarineShadow_3[] = {
{ 32, 4, 0, 0, 43, 2}
};
-const struct SubspriteTable gMapObjectSubspriteTables_SubmarineShadow[] = {
- {16, gMapObjectSubspriteTable_SubmarineShadow_0},
- {16, gMapObjectSubspriteTable_SubmarineShadow_0},
- {16, gMapObjectSubspriteTable_SubmarineShadow_1},
- {16, gMapObjectSubspriteTable_SubmarineShadow_2},
- {16, gMapObjectSubspriteTable_SubmarineShadow_3},
- {16, gMapObjectSubspriteTable_SubmarineShadow_3}
+const struct SubspriteTable gEventObjectSubspriteTables_SubmarineShadow[] = {
+ {16, gEventObjectSubspriteTable_SubmarineShadow_0},
+ {16, gEventObjectSubspriteTable_SubmarineShadow_0},
+ {16, gEventObjectSubspriteTable_SubmarineShadow_1},
+ {16, gEventObjectSubspriteTable_SubmarineShadow_2},
+ {16, gEventObjectSubspriteTable_SubmarineShadow_3},
+ {16, gEventObjectSubspriteTable_SubmarineShadow_3}
};
-#endif //POKERUBY_MAP_OBJECT_SUBSPRITES_H
+#endif //POKERUBY_EVENT_OBJECT_SUBSPRITES_H
diff --git a/src/data/field_event_obj/field_effect_object_graphics.h b/src/data/field_event_obj/field_effect_object_graphics.h
new file mode 100644
index 000000000..36850a4ec
--- /dev/null
+++ b/src/data/field_event_obj/field_effect_object_graphics.h
@@ -0,0 +1,149 @@
+#ifndef POKERUBY_FIELD_EFFECT_OBJECT_GFX_H
+#define POKERUBY_FIELD_EFFECT_OBJECT_GFX_H
+
+const u32 gFieldEffectPic_ShadowSmall[] = INCBIN_U32("graphics/field_effect_objects/pics/shadow_small.4bpp");
+const u32 gFieldEffectPic_ShadowMedium[] = INCBIN_U32("graphics/field_effect_objects/pics/shadow_medium.4bpp");
+const u32 gFieldEffectPic_ShadowLarge[] = INCBIN_U32("graphics/field_effect_objects/pics/shadow_large.4bpp");
+const u32 gFieldEffectPic_ShadowExtraLarge[] = INCBIN_U32("graphics/field_effect_objects/pics/shadow_extra_large.4bpp");
+const u32 filler_8368A08[0x48] = {};
+const u8 gFieldEffectPic_CutGrass[] = INCBIN_U8("graphics/field_effect_objects/pics/cut_grass.4bpp");
+const u32 FieldEffectPic_CutGrass_Copy[] = INCBIN_U32("graphics/field_effect_objects/pics/cut_grass.4bpp");
+const u16 gFieldEffectObjectPalette6[] = INCBIN_U16("graphics/field_effect_objects/palettes/06.gbapal");
+const u32 gFieldEffectPic_Ripple_0[] = INCBIN_U32("graphics/field_effect_objects/pics/ripple/0.4bpp");
+const u32 gFieldEffectPic_Ripple_1[] = INCBIN_U32("graphics/field_effect_objects/pics/ripple/1.4bpp");
+const u32 gFieldEffectPic_Ripple_2[] = INCBIN_U32("graphics/field_effect_objects/pics/ripple/2.4bpp");
+const u32 gFieldEffectPic_Ripple_3[] = INCBIN_U32("graphics/field_effect_objects/pics/ripple/3.4bpp");
+const u32 gFieldEffectPic_Ripple_4[] = INCBIN_U32("graphics/field_effect_objects/pics/ripple/4.4bpp");
+const u32 gFieldEffectPic_Ash_0[] = INCBIN_U32("graphics/field_effect_objects/pics/ash/0.4bpp");
+const u32 gFieldEffectPic_Ash_1[] = INCBIN_U32("graphics/field_effect_objects/pics/ash/1.4bpp");
+const u32 gFieldEffectPic_Ash_2[] = INCBIN_U32("graphics/field_effect_objects/pics/ash/2.4bpp");
+const u32 gFieldEffectPic_Ash_3[] = INCBIN_U32("graphics/field_effect_objects/pics/ash/3.4bpp");
+const u32 gFieldEffectPic_Ash_4[] = INCBIN_U32("graphics/field_effect_objects/pics/ash/4.4bpp");
+const u32 gFieldEffectPic_Arrow_0[] = INCBIN_U32("graphics/field_effect_objects/pics/arrow/0.4bpp");
+const u32 gFieldEffectPic_Arrow_1[] = INCBIN_U32("graphics/field_effect_objects/pics/arrow/1.4bpp");
+const u32 gFieldEffectPic_Arrow_2[] = INCBIN_U32("graphics/field_effect_objects/pics/arrow/2.4bpp");
+const u32 gFieldEffectPic_Arrow_3[] = INCBIN_U32("graphics/field_effect_objects/pics/arrow/3.4bpp");
+const u32 gFieldEffectPic_Arrow_4[] = INCBIN_U32("graphics/field_effect_objects/pics/arrow/4.4bpp");
+const u32 gFieldEffectPic_Arrow_5[] = INCBIN_U32("graphics/field_effect_objects/pics/arrow/5.4bpp");
+const u32 gFieldEffectPic_Arrow_6[] = INCBIN_U32("graphics/field_effect_objects/pics/arrow/6.4bpp");
+const u32 gFieldEffectPic_Arrow_7[] = INCBIN_U32("graphics/field_effect_objects/pics/arrow/7.4bpp");
+const u16 gFieldEffectObjectPalette0[] = INCBIN_U16("graphics/field_effect_objects/palettes/00.gbapal");
+const u16 gFieldEffectObjectPalette1[] = INCBIN_U16("graphics/field_effect_objects/palettes/01.gbapal");
+const u32 gFieldEffectPic_Dust_0[] = INCBIN_U32("graphics/field_effect_objects/pics/dust/0.4bpp");
+const u32 gFieldEffectPic_Dust_1[] = INCBIN_U32("graphics/field_effect_objects/pics/dust/1.4bpp");
+const u32 gFieldEffectPic_Dust_2[] = INCBIN_U32("graphics/field_effect_objects/pics/dust/2.4bpp");
+const u32 unknown_8369588[] = INCBIN_U32("graphics/field_effect_objects/unknown.bin");
+const u32 gFieldEffectPic_JumpTallGrass_0[] = INCBIN_U32("graphics/field_effect_objects/pics/jump_tall_grass/0.4bpp");
+const u32 gFieldEffectPic_JumpTallGrass_1[] = INCBIN_U32("graphics/field_effect_objects/pics/jump_tall_grass/1.4bpp");
+const u32 gFieldEffectPic_JumpTallGrass_2[] = INCBIN_U32("graphics/field_effect_objects/pics/jump_tall_grass/2.4bpp");
+const u32 gFieldEffectPic_JumpTallGrass_3[] = INCBIN_U32("graphics/field_effect_objects/pics/jump_tall_grass/3.4bpp");
+const u32 UnusedGrass0[] = INCBIN_U32("graphics/field_effect_objects/pics/unused_grass/0.4bpp");
+const u32 UnusedGrass1[] = INCBIN_U32("graphics/field_effect_objects/pics/unused_grass/1.4bpp");
+const u32 UnusedGrass2[] = INCBIN_U32("graphics/field_effect_objects/pics/unused_grass/2.4bpp");
+const u32 UnusedGrass3[] = INCBIN_U32("graphics/field_effect_objects/pics/unused_grass/3.4bpp");
+const u32 gFieldEffectPic_JumpLongGrass_0[] = INCBIN_U32("graphics/field_effect_objects/pics/jump_long_grass/0.4bpp");
+const u32 gFieldEffectPic_JumpLongGrass_1[] = INCBIN_U32("graphics/field_effect_objects/pics/jump_long_grass/1.4bpp");
+const u32 gFieldEffectPic_JumpLongGrass_2[] = INCBIN_U32("graphics/field_effect_objects/pics/jump_long_grass/2.4bpp");
+const u32 gFieldEffectPic_JumpLongGrass_3[] = INCBIN_U32("graphics/field_effect_objects/pics/jump_long_grass/3.4bpp");
+const u32 gFieldEffectPic_JumpLongGrass_4[] = INCBIN_U32("graphics/field_effect_objects/pics/jump_long_grass/4.4bpp");
+const u32 UnusedGrassLong[] = INCBIN_U32("graphics/field_effect_objects/pics/jump_long_grass/unused.4bpp");
+const u32 gFieldEffectPic_JumpLongGrass_5[] = INCBIN_U32("graphics/field_effect_objects/pics/jump_long_grass/5.4bpp");
+const u32 gFieldEffectPic_Unknown17_0[] = INCBIN_U32("graphics/field_effect_objects/pics/unknown_17/0.4bpp");
+const u32 gFieldEffectPic_Unknown17_1[] = INCBIN_U32("graphics/field_effect_objects/pics/unknown_17/1.4bpp");
+const u32 gFieldEffectPic_Unknown17_2[] = INCBIN_U32("graphics/field_effect_objects/pics/unknown_17/2.4bpp");
+const u32 gFieldEffectPic_Unknown17_3[] = INCBIN_U32("graphics/field_effect_objects/pics/unknown_17/3.4bpp");
+const u32 gFieldEffectPic_Unknown17_4[] = INCBIN_U32("graphics/field_effect_objects/pics/unknown_17/4.4bpp");
+const u32 gFieldEffectPic_Unknown17_5[] = INCBIN_U32("graphics/field_effect_objects/pics/unknown_17/5.4bpp");
+const u32 gFieldEffectPic_Unknown17_6[] = INCBIN_U32("graphics/field_effect_objects/pics/unknown_17/6.4bpp");
+const u32 gFieldEffectPic_Unknown17_7[] = INCBIN_U32("graphics/field_effect_objects/pics/unknown_17/7.4bpp");
+const u32 gFieldEffectPic_Unknown18_0[] = INCBIN_U32("graphics/field_effect_objects/pics/unknown_18/0.4bpp");
+const u32 gFieldEffectPic_Unknown18_1[] = INCBIN_U32("graphics/field_effect_objects/pics/unknown_18/1.4bpp");
+const u32 gFieldEffectPic_Unknown18_2[] = INCBIN_U32("graphics/field_effect_objects/pics/unknown_18/2.4bpp");
+const u32 gFieldEffectPic_Unknown18_3[] = INCBIN_U32("graphics/field_effect_objects/pics/unknown_18/3.4bpp");
+const u32 gFieldEffectPic_LongGrass_0[] = INCBIN_U32("graphics/field_effect_objects/pics/long_grass/0.4bpp");
+const u32 gFieldEffectPic_LongGrass_1[] = INCBIN_U32("graphics/field_effect_objects/pics/long_grass/1.4bpp");
+const u32 gFieldEffectPic_LongGrass_2[] = INCBIN_U32("graphics/field_effect_objects/pics/long_grass/2.4bpp");
+const u32 gFieldEffectPic_LongGrass_3[] = INCBIN_U32("graphics/field_effect_objects/pics/long_grass/3.4bpp");
+const u32 gFieldEffectPic_TallGrass_0[] = INCBIN_U32("graphics/field_effect_objects/pics/tall_grass/0.4bpp");
+const u32 gFieldEffectPic_TallGrass_1[] = INCBIN_U32("graphics/field_effect_objects/pics/tall_grass/1.4bpp");
+const u32 gFieldEffectPic_TallGrass_2[] = INCBIN_U32("graphics/field_effect_objects/pics/tall_grass/2.4bpp");
+const u32 gFieldEffectPic_TallGrass_3[] = INCBIN_U32("graphics/field_effect_objects/pics/tall_grass/3.4bpp");
+const u32 gFieldEffectPic_TallGrass_4[] = INCBIN_U32("graphics/field_effect_objects/pics/tall_grass/4.4bpp");
+const u32 gFieldEffectPic_ShortGrass_0[] = INCBIN_U32("graphics/field_effect_objects/pics/short_grass/0.4bpp");
+const u32 gFieldEffectPic_ShortGrass_1[] = INCBIN_U32("graphics/field_effect_objects/pics/short_grass/1.4bpp");
+const u32 gFieldEffectPic_SandFootprints_0[] = INCBIN_U32("graphics/field_effect_objects/pics/sand_footprints/0.4bpp");
+const u32 gFieldEffectPic_SandFootprints_1[] = INCBIN_U32("graphics/field_effect_objects/pics/sand_footprints/1.4bpp");
+const u32 gFieldEffectPic_DeepSandFootprints_0[] = INCBIN_U32("graphics/field_effect_objects/pics/deep_sand_footprints/0.4bpp");
+const u32 gFieldEffectPic_DeepSandFootprints_1[] = INCBIN_U32("graphics/field_effect_objects/pics/deep_sand_footprints/1.4bpp");
+const u32 gFieldEffectPic_BikeTireTracks_0[] = INCBIN_U32("graphics/field_effect_objects/pics/bike_tire_tracks/0.4bpp");
+const u32 gFieldEffectPic_BikeTireTracks_1[] = INCBIN_U32("graphics/field_effect_objects/pics/bike_tire_tracks/1.4bpp");
+const u32 gFieldEffectPic_BikeTireTracks_2[] = INCBIN_U32("graphics/field_effect_objects/pics/bike_tire_tracks/2.4bpp");
+const u32 gFieldEffectPic_BikeTireTracks_3[] = INCBIN_U32("graphics/field_effect_objects/pics/bike_tire_tracks/3.4bpp");
+const u32 gFieldEffectPic_Unknown19_0[] = INCBIN_U32("graphics/field_effect_objects/pics/unknown_19/0.4bpp");
+const u32 gFieldEffectPic_Unknown19_1[] = INCBIN_U32("graphics/field_effect_objects/pics/unknown_19/1.4bpp");
+const u32 gFieldEffectPic_Unknown19_2[] = INCBIN_U32("graphics/field_effect_objects/pics/unknown_19/2.4bpp");
+const u32 gFieldEffectPic_Unknown19_3[] = INCBIN_U32("graphics/field_effect_objects/pics/unknown_19/3.4bpp");
+const u32 gFieldEffectPic_SandPile_0[] = INCBIN_U32("graphics/field_effect_objects/pics/sand_pile/0.4bpp");
+const u32 gFieldEffectPic_SandPile_1[] = INCBIN_U32("graphics/field_effect_objects/pics/sand_pile/1.4bpp");
+const u32 gFieldEffectPic_SandPile_2[] = INCBIN_U32("graphics/field_effect_objects/pics/sand_pile/2.4bpp");
+const u32 gFieldEffectPic_JumpBigSplash_0[] = INCBIN_U32("graphics/field_effect_objects/pics/jump_big_splash/0.4bpp");
+const u32 gFieldEffectPic_JumpBigSplash_1[] = INCBIN_U32("graphics/field_effect_objects/pics/jump_big_splash/1.4bpp");
+const u32 gFieldEffectPic_JumpBigSplash_2[] = INCBIN_U32("graphics/field_effect_objects/pics/jump_big_splash/2.4bpp");
+const u32 gFieldEffectPic_JumpBigSplash_3[] = INCBIN_U32("graphics/field_effect_objects/pics/jump_big_splash/3.4bpp");
+const u32 gFieldEffectPic_Splash_0[] = INCBIN_U32("graphics/field_effect_objects/pics/splash/0.4bpp");
+const u32 gFieldEffectPic_Splash_1[] = INCBIN_U32("graphics/field_effect_objects/pics/splash/1.4bpp");
+const u32 gFieldEffectPic_JumpSmallSplash_0[] = INCBIN_U32("graphics/field_effect_objects/pics/jump_small_splash/0.4bpp");
+const u32 gFieldEffectPic_JumpSmallSplash_1[] = INCBIN_U32("graphics/field_effect_objects/pics/jump_small_splash/1.4bpp");
+const u32 gFieldEffectPic_JumpSmallSplash_2[] = INCBIN_U32("graphics/field_effect_objects/pics/jump_small_splash/2.4bpp");
+const u32 gFieldEffectPic_Unknown20_0[] = INCBIN_U32("graphics/field_effect_objects/pics/unknown_20/0.4bpp");
+const u32 gFieldEffectPic_Unknown20_1[] = INCBIN_U32("graphics/field_effect_objects/pics/unknown_20/1.4bpp");
+const u32 gFieldEffectPic_Unknown20_2[] = INCBIN_U32("graphics/field_effect_objects/pics/unknown_20/2.4bpp");
+const u32 gFieldEffectPic_Unknown20_3[] = INCBIN_U32("graphics/field_effect_objects/pics/unknown_20/3.4bpp");
+const u32 gFieldEffectPic_Unknown20_4[] = INCBIN_U32("graphics/field_effect_objects/pics/unknown_20/4.4bpp");
+const u32 gFieldEffectPic_TreeDisguise_0[] = INCBIN_U32("graphics/field_effect_objects/pics/tree_disguise/0.4bpp");
+const u32 gFieldEffectPic_TreeDisguise_1[] = INCBIN_U32("graphics/field_effect_objects/pics/tree_disguise/1.4bpp");
+const u32 gFieldEffectPic_TreeDisguise_2[] = INCBIN_U32("graphics/field_effect_objects/pics/tree_disguise/2.4bpp");
+const u32 gFieldEffectPic_TreeDisguise_3[] = INCBIN_U32("graphics/field_effect_objects/pics/tree_disguise/3.4bpp");
+const u32 gFieldEffectPic_TreeDisguise_4[] = INCBIN_U32("graphics/field_effect_objects/pics/tree_disguise/4.4bpp");
+const u32 gFieldEffectPic_TreeDisguise_5[] = INCBIN_U32("graphics/field_effect_objects/pics/tree_disguise/5.4bpp");
+const u32 gFieldEffectPic_TreeDisguise_6[] = INCBIN_U32("graphics/field_effect_objects/pics/tree_disguise/6.4bpp");
+const u32 gFieldEffectPic_MountainDisguise_0[] = INCBIN_U32("graphics/field_effect_objects/pics/mountain_disguise/0.4bpp");
+const u32 gFieldEffectPic_MountainDisguise_1[] = INCBIN_U32("graphics/field_effect_objects/pics/mountain_disguise/1.4bpp");
+const u32 gFieldEffectPic_MountainDisguise_2[] = INCBIN_U32("graphics/field_effect_objects/pics/mountain_disguise/2.4bpp");
+const u32 gFieldEffectPic_MountainDisguise_3[] = INCBIN_U32("graphics/field_effect_objects/pics/mountain_disguise/3.4bpp");
+const u32 gFieldEffectPic_MountainDisguise_4[] = INCBIN_U32("graphics/field_effect_objects/pics/mountain_disguise/4.4bpp");
+const u32 gFieldEffectPic_MountainDisguise_5[] = INCBIN_U32("graphics/field_effect_objects/pics/mountain_disguise/5.4bpp");
+const u32 gFieldEffectPic_MountainDisguise_6[] = INCBIN_U32("graphics/field_effect_objects/pics/mountain_disguise/6.4bpp");
+const u32 gFieldEffectPic_SandDisguise_0[] = INCBIN_U32("graphics/field_effect_objects/pics/sand_disguise/0.4bpp");
+const u32 gFieldEffectPic_SandDisguise_1[] = INCBIN_U32("graphics/field_effect_objects/pics/sand_disguise/1.4bpp");
+const u32 gFieldEffectPic_SandDisguise_2[] = INCBIN_U32("graphics/field_effect_objects/pics/sand_disguise/2.4bpp");
+const u32 gFieldEffectPic_SandDisguise_3[] = INCBIN_U32("graphics/field_effect_objects/pics/sand_disguise/3.4bpp");
+const u32 gFieldEffectPic_SandDisguise_4[] = INCBIN_U32("graphics/field_effect_objects/pics/sand_disguise/4.4bpp");
+const u32 gFieldEffectPic_SandDisguise_5[] = INCBIN_U32("graphics/field_effect_objects/pics/sand_disguise/5.4bpp");
+const u32 gFieldEffectPic_SandDisguise_6[] = INCBIN_U32("graphics/field_effect_objects/pics/sand_disguise/6.4bpp");
+const u32 gFieldEffectPic_HotSpringsWater[] = INCBIN_U32("graphics/field_effect_objects/pics/hot_springs_water.4bpp");
+const u16 gFieldEffectObjectPalette2[] = INCBIN_U16("graphics/field_effect_objects/palettes/02.gbapal");
+const u32 gFieldEffectPic_PopOutOfAsh_0[] = INCBIN_U32("graphics/field_effect_objects/pics/pop_out_of_ash/0.4bpp");
+const u32 gFieldEffectPic_PopOutOfAsh_1[] = INCBIN_U32("graphics/field_effect_objects/pics/pop_out_of_ash/1.4bpp");
+const u32 gFieldEffectPic_PopOutOfAsh_2[] = INCBIN_U32("graphics/field_effect_objects/pics/pop_out_of_ash/2.4bpp");
+const u32 gFieldEffectPic_PopOutOfAsh_3[] = INCBIN_U32("graphics/field_effect_objects/pics/pop_out_of_ash/3.4bpp");
+const u32 gFieldEffectPic_PopOutOfAsh_4[] = INCBIN_U32("graphics/field_effect_objects/pics/pop_out_of_ash/4.4bpp");
+const u32 gFieldEffectPic_LavaridgeGymWarp_0[] = INCBIN_U32("graphics/field_effect_objects/pics/lavaridge_gym_warp/0.4bpp");
+const u32 gFieldEffectPic_LavaridgeGymWarp_1[] = INCBIN_U32("graphics/field_effect_objects/pics/lavaridge_gym_warp/1.4bpp");
+const u32 gFieldEffectPic_LavaridgeGymWarp_2[] = INCBIN_U32("graphics/field_effect_objects/pics/lavaridge_gym_warp/2.4bpp");
+const u32 gFieldEffectPic_LavaridgeGymWarp_3[] = INCBIN_U32("graphics/field_effect_objects/pics/lavaridge_gym_warp/3.4bpp");
+const u32 gFieldEffectPic_LavaridgeGymWarp_4[] = INCBIN_U32("graphics/field_effect_objects/pics/lavaridge_gym_warp/4.4bpp");
+const u32 gFieldEffectPic_Bubbles_0[] = INCBIN_U32("graphics/field_effect_objects/pics/bubbles/0.4bpp");
+const u32 gFieldEffectPic_Bubbles_1[] = INCBIN_U32("graphics/field_effect_objects/pics/bubbles/1.4bpp");
+const u32 gFieldEffectPic_Bubbles_2[] = INCBIN_U32("graphics/field_effect_objects/pics/bubbles/2.4bpp");
+const u32 gFieldEffectPic_Bubbles_3[] = INCBIN_U32("graphics/field_effect_objects/pics/bubbles/3.4bpp");
+const u32 gFieldEffectPic_Bubbles_4[] = INCBIN_U32("graphics/field_effect_objects/pics/bubbles/4.4bpp");
+const u32 gFieldEffectPic_Bubbles_5[] = INCBIN_U32("graphics/field_effect_objects/pics/bubbles/5.4bpp");
+const u32 gFieldEffectPic_Bubbles_6[] = INCBIN_U32("graphics/field_effect_objects/pics/bubbles/6.4bpp");
+const u32 gFieldEffectPic_Bubbles_7[] = INCBIN_U32("graphics/field_effect_objects/pics/bubbles/7.4bpp");
+const u32 gFieldEffectPic_Sparkle_0[] = INCBIN_U32("graphics/field_effect_objects/pics/sparkle/0.4bpp");
+const u32 gFieldEffectPic_Sparkle_1[] = INCBIN_U32("graphics/field_effect_objects/pics/sparkle/1.4bpp");
+const u16 gFieldEffectObjectPalette3[] = INCBIN_U16("graphics/field_effect_objects/palettes/03.gbapal");
+const u32 gFieldEffectPic_Bird[] = INCBIN_U32("graphics/field_effect_objects/pics/bird.4bpp");
+
+#endif // POKERUBY_FIELD_EFFECT_OBJECT_GFX_H
diff --git a/src/data/field_map_obj/field_effect_object_template_pointers.h b/src/data/field_event_obj/field_effect_object_template_pointers.h
index 320af1ff8..682816ed9 100644
--- a/src/data/field_map_obj/field_effect_object_template_pointers.h
+++ b/src/data/field_event_obj/field_effect_object_template_pointers.h
@@ -26,7 +26,7 @@ const struct SpriteTemplate gFieldEffectSpriteTemplate_Unknown17;
const struct SpriteTemplate gFieldEffectSpriteTemplate_Unknown18;
const struct SpriteTemplate gFieldEffectSpriteTemplate_Unknown19;
const struct SpriteTemplate gFieldEffectSpriteTemplate_Unknown20;
-const struct SpriteTemplate gFieldEffectSpriteTemplate_Unknown21;
+const struct SpriteTemplate gFieldEffectSpriteTemplate_Reflection;
const struct SpriteTemplate gFieldEffectSpriteTemplate_BerryTreeGrowthSparkle;
const struct SpriteTemplate gFieldEffectSpriteTemplate_DeepSandFootprints;
const struct SpriteTemplate gFieldEffectSpriteTemplate_TreeDisguise;
@@ -64,7 +64,7 @@ const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[] = {
&gFieldEffectSpriteTemplate_Unknown18,
&gFieldEffectSpriteTemplate_Unknown19,
&gFieldEffectSpriteTemplate_Unknown20,
- &gFieldEffectSpriteTemplate_Unknown21,
+ &gFieldEffectSpriteTemplate_Reflection,
&gFieldEffectSpriteTemplate_BerryTreeGrowthSparkle,
&gFieldEffectSpriteTemplate_DeepSandFootprints,
&gFieldEffectSpriteTemplate_TreeDisguise,
diff --git a/src/data/field_map_obj/field_effect_objects.h b/src/data/field_event_obj/field_effect_objects.h
index 9d3ae343d..8533b3cdd 100644
--- a/src/data/field_map_obj/field_effect_objects.h
+++ b/src/data/field_event_obj/field_effect_objects.h
@@ -34,13 +34,13 @@ const struct SpriteFrameImage gFieldEffectPicTable_ShadowExtraLarge[] = {
obj_frame_tiles(gFieldEffectPic_ShadowExtraLarge)
};
-const struct SpriteTemplate gFieldEffectSpriteTemplate_ShadowSmall = {0xFFFF, 0xFFFF, &gFieldOamData_8x8, gFieldEffectAnimTable_Shadow, gFieldEffectPicTable_ShadowSmall, gDummySpriteAffineAnimTable, oamc_shadow};
+const struct SpriteTemplate gFieldEffectSpriteTemplate_ShadowSmall = {0xFFFF, 0xFFFF, &gFieldOamData_8x8, gFieldEffectAnimTable_Shadow, gFieldEffectPicTable_ShadowSmall, gDummySpriteAffineAnimTable, UpdateShadowFieldEffect};
-const struct SpriteTemplate gFieldEffectSpriteTemplate_ShadowMedium = {0xFFFF, 0xFFFF, &gFieldOamData_16x8, gFieldEffectAnimTable_Shadow, gFieldEffectPicTable_ShadowMedium, gDummySpriteAffineAnimTable, oamc_shadow};
+const struct SpriteTemplate gFieldEffectSpriteTemplate_ShadowMedium = {0xFFFF, 0xFFFF, &gFieldOamData_16x8, gFieldEffectAnimTable_Shadow, gFieldEffectPicTable_ShadowMedium, gDummySpriteAffineAnimTable, UpdateShadowFieldEffect};
-const struct SpriteTemplate gFieldEffectSpriteTemplate_ShadowLarge = {0xFFFF, 0xFFFF, &gFieldOamData_32x8, gFieldEffectAnimTable_Shadow, gFieldEffectPicTable_ShadowLarge, gDummySpriteAffineAnimTable, oamc_shadow};
+const struct SpriteTemplate gFieldEffectSpriteTemplate_ShadowLarge = {0xFFFF, 0xFFFF, &gFieldOamData_32x8, gFieldEffectAnimTable_Shadow, gFieldEffectPicTable_ShadowLarge, gDummySpriteAffineAnimTable, UpdateShadowFieldEffect};
-const struct SpriteTemplate gFieldEffectSpriteTemplate_ShadowExtraLarge = {0xFFFF, 0xFFFF, &gFieldOamData_64x32, gFieldEffectAnimTable_Shadow, gFieldEffectPicTable_ShadowExtraLarge, gDummySpriteAffineAnimTable, oamc_shadow};
+const struct SpriteTemplate gFieldEffectSpriteTemplate_ShadowExtraLarge = {0xFFFF, 0xFFFF, &gFieldOamData_64x32, gFieldEffectAnimTable_Shadow, gFieldEffectPicTable_ShadowExtraLarge, gDummySpriteAffineAnimTable, UpdateShadowFieldEffect};
const struct SpriteFrameImage gFieldEffectPicTable_TallGrass[] = {
obj_frame_tiles(gFieldEffectPic_TallGrass_0),
@@ -63,7 +63,7 @@ const union AnimCmd *const gFieldEffectAnimTable_TallGrass[] = {
gFieldEffectAnim_83745E8
};
-const struct SpriteTemplate gFieldEffectSpriteTemplate_TallGrass = {0xFFFF, 0x1005, &gFieldOamData_16x16, gFieldEffectAnimTable_TallGrass, gFieldEffectPicTable_TallGrass, gDummySpriteAffineAnimTable, unc_grass_normal};
+const struct SpriteTemplate gFieldEffectSpriteTemplate_TallGrass = {0xFFFF, 0x1005, &gFieldOamData_16x16, gFieldEffectAnimTable_TallGrass, gFieldEffectPicTable_TallGrass, gDummySpriteAffineAnimTable, UpdateTallGrassFieldEffect};
const struct SpriteFrameImage gFieldEffectPicTable_Ripple[] = {
obj_frame_tiles(gFieldEffectPic_Ripple_0),
@@ -89,7 +89,7 @@ const union AnimCmd *const gFieldEffectAnimTable_Ripple[] = {
gFieldEffectAnim_8374644
};
-const struct SpriteTemplate gFieldEffectSpriteTemplate_Ripple = {0xFFFF, 0x1005, &gFieldOamData_16x16, gFieldEffectAnimTable_Ripple, gFieldEffectPicTable_Ripple, gDummySpriteAffineAnimTable, sub_8128800};
+const struct SpriteTemplate gFieldEffectSpriteTemplate_Ripple = {0xFFFF, 0x1005, &gFieldOamData_16x16, gFieldEffectAnimTable_Ripple, gFieldEffectPicTable_Ripple, gDummySpriteAffineAnimTable, WaitFieldEffectSpriteAnim};
const struct SpriteFrameImage gFieldEffectPicTable_Ash[] = {
obj_frame_tiles(gFieldEffectPic_Ash_0),
@@ -112,7 +112,7 @@ const union AnimCmd *const gFieldEffectAnimTable_Ash[] = {
gFieldEffectAnim_83746AC
};
-const struct SpriteTemplate gFieldEffectSpriteTemplate_Ash = {0xFFFF, 0x1005, &gFieldOamData_16x16, gFieldEffectAnimTable_Ash, gFieldEffectPicTable_Ash, gDummySpriteAffineAnimTable, sub_8127D84};
+const struct SpriteTemplate gFieldEffectSpriteTemplate_Ash = {0xFFFF, 0x1005, &gFieldOamData_16x16, gFieldEffectAnimTable_Ash, gFieldEffectPicTable_Ash, gDummySpriteAffineAnimTable, UpdateAshFieldEffect};
const struct SpriteFrameImage gFieldEffectPicTable_SurfBlob[] = {
obj_frame_tiles(gFieldEffectPic_SurfBlob_0),
@@ -147,7 +147,7 @@ const union AnimCmd *const gFieldEffectAnimTable_SurfBlob[] = {
gFieldEffectAnim_8374710
};
-const struct SpriteTemplate gFieldEffectSpriteTemplate_SurfBlob = {0xFFFF, 0xFFFF, &gFieldOamData_32x32, gFieldEffectAnimTable_SurfBlob, gFieldEffectPicTable_SurfBlob, gDummySpriteAffineAnimTable, sub_8127F7C};
+const struct SpriteTemplate gFieldEffectSpriteTemplate_SurfBlob = {0xFFFF, 0xFFFF, &gFieldOamData_32x32, gFieldEffectAnimTable_SurfBlob, gFieldEffectPicTable_SurfBlob, gDummySpriteAffineAnimTable, UpdateSurfBlobFieldEffect};
const struct SpriteFrameImage gFieldEffectPicTable_Arrow[] = {
obj_frame_tiles(gFieldEffectPic_Arrow_0),
@@ -210,7 +210,7 @@ const union AnimCmd *const gFieldEffectAnimTable_Dust[] = {
gFieldEffectAnim_83747F0
};
-const struct SpriteTemplate gFieldEffectSpriteTemplate_Dust = {0xFFFF, 0x1004, &gFieldOamData_16x8, gFieldEffectAnimTable_Dust, gFieldEffectPicTable_Dust, gDummySpriteAffineAnimTable, sub_81287C4};
+const struct SpriteTemplate gFieldEffectSpriteTemplate_Dust = {0xFFFF, 0x1004, &gFieldOamData_16x8, gFieldEffectAnimTable_Dust, gFieldEffectPicTable_Dust, gDummySpriteAffineAnimTable, UpdateJumpLandingFieldEffect};
const struct SpriteFrameImage gFieldEffectPicTable_JumpTallGrass[] = {
obj_frame_tiles(gFieldEffectPic_JumpTallGrass_0),
@@ -231,7 +231,7 @@ const union AnimCmd *const gFieldEffectAnimTable_JumpTallGrass[] = {
gFieldEffectAnim_837483C
};
-const struct SpriteTemplate gFieldEffectSpriteTemplate_JumpTallGrass = {0xFFFF, 0x1005, &gFieldOamData_16x8, gFieldEffectAnimTable_JumpTallGrass, gFieldEffectPicTable_JumpTallGrass, gDummySpriteAffineAnimTable, sub_81287C4};
+const struct SpriteTemplate gFieldEffectSpriteTemplate_JumpTallGrass = {0xFFFF, 0x1005, &gFieldOamData_16x8, gFieldEffectAnimTable_JumpTallGrass, gFieldEffectPicTable_JumpTallGrass, gDummySpriteAffineAnimTable, UpdateJumpLandingFieldEffect};
const struct SpriteFrameImage gFieldEffectPicTable_SandFootprints[] = {
obj_frame_tiles(gFieldEffectPic_SandFootprints_0),
@@ -266,7 +266,7 @@ const union AnimCmd *const gFieldEffectAnimTable_SandFootprints[] = {
gFieldEffectAnim_8374894
};
-const struct SpriteTemplate gFieldEffectSpriteTemplate_SandFootprints = {0xFFFF, 0x1004, &gFieldOamData_16x16, gFieldEffectAnimTable_SandFootprints, gFieldEffectPicTable_SandFootprints, gDummySpriteAffineAnimTable, sub_8127584};
+const struct SpriteTemplate gFieldEffectSpriteTemplate_SandFootprints = {0xFFFF, 0x1004, &gFieldOamData_16x16, gFieldEffectAnimTable_SandFootprints, gFieldEffectPicTable_SandFootprints, gDummySpriteAffineAnimTable, UpdateFootprintsTireTracksFieldEffect};
const struct SpriteFrameImage gFieldEffectPicTable_DeepSandFootprints[] = {
obj_frame_tiles(gFieldEffectPic_DeepSandFootprints_0),
@@ -301,7 +301,7 @@ const union AnimCmd *const gFieldEffectAnimTable_DeepSandFootprints[] = {
gFieldEffectAnim_83748F0
};
-const struct SpriteTemplate gFieldEffectSpriteTemplate_DeepSandFootprints = {0xFFFF, 0x1004, &gFieldOamData_16x16, gFieldEffectAnimTable_DeepSandFootprints, gFieldEffectPicTable_DeepSandFootprints, gDummySpriteAffineAnimTable, sub_8127584};
+const struct SpriteTemplate gFieldEffectSpriteTemplate_DeepSandFootprints = {0xFFFF, 0x1004, &gFieldOamData_16x16, gFieldEffectAnimTable_DeepSandFootprints, gFieldEffectPicTable_DeepSandFootprints, gDummySpriteAffineAnimTable, UpdateFootprintsTireTracksFieldEffect};
const struct SpriteFrameImage gFieldEffectPicTable_BikeTireTracks[] = {
obj_frame_tiles(gFieldEffectPic_BikeTireTracks_0),
@@ -362,7 +362,7 @@ const union AnimCmd *const gFieldEffectAnimTable_BikeTireTracks[] = {
gFieldEffectAnim_837497C
};
-const struct SpriteTemplate gFieldEffectSpriteTemplate_BikeTireTracks = {0xFFFF, 0x1004, &gFieldOamData_16x16, gFieldEffectAnimTable_BikeTireTracks, gFieldEffectPicTable_BikeTireTracks, gDummySpriteAffineAnimTable, sub_8127584};
+const struct SpriteTemplate gFieldEffectSpriteTemplate_BikeTireTracks = {0xFFFF, 0x1004, &gFieldOamData_16x16, gFieldEffectAnimTable_BikeTireTracks, gFieldEffectPicTable_BikeTireTracks, gDummySpriteAffineAnimTable, UpdateFootprintsTireTracksFieldEffect};
const struct SpriteFrameImage gFieldEffectPicTable_JumpBigSplash[] = {
obj_frame_tiles(gFieldEffectPic_JumpBigSplash_0),
@@ -383,7 +383,7 @@ const union AnimCmd *const gFieldEffectAnimTable_JumpBigSplash[] = {
gFieldEffectAnim_83749E0
};
-const struct SpriteTemplate gFieldEffectSpriteTemplate_JumpBigSplash = {0xFFFF, 0x1004, &gFieldOamData_16x16, gFieldEffectAnimTable_JumpBigSplash, gFieldEffectPicTable_JumpBigSplash, gDummySpriteAffineAnimTable, sub_81287C4};
+const struct SpriteTemplate gFieldEffectSpriteTemplate_JumpBigSplash = {0xFFFF, 0x1004, &gFieldOamData_16x16, gFieldEffectAnimTable_JumpBigSplash, gFieldEffectPicTable_JumpBigSplash, gDummySpriteAffineAnimTable, UpdateJumpLandingFieldEffect};
const struct SpriteFrameImage gFieldEffectPicTable_Splash[] = {
obj_frame_tiles(gFieldEffectPic_Splash_0),
@@ -413,7 +413,7 @@ const union AnimCmd *const gFieldEffectAnimTable_Splash[] = {
gFieldEffectAnim_8374A2C
};
-const struct SpriteTemplate gFieldEffectSpriteTemplate_Splash = {0xFFFF, 0x1004, &gFieldOamData_16x8, gFieldEffectAnimTable_Splash, gFieldEffectPicTable_Splash, gDummySpriteAffineAnimTable, sub_81276B4};
+const struct SpriteTemplate gFieldEffectSpriteTemplate_Splash = {0xFFFF, 0x1004, &gFieldOamData_16x8, gFieldEffectAnimTable_Splash, gFieldEffectPicTable_Splash, gDummySpriteAffineAnimTable, UpdateSplashFieldEffect};
const struct SpriteFrameImage gFieldEffectPicTable_JumpSmallSplash[] = {
obj_frame_tiles(gFieldEffectPic_JumpSmallSplash_0),
@@ -432,7 +432,7 @@ const union AnimCmd *const gFieldEffectAnimTable_JumpSmallSplash[] = {
gFieldEffectAnim_8374A88
};
-const struct SpriteTemplate gFieldEffectSpriteTemplate_JumpSmallSplash = {0xFFFF, 0x1004, &gFieldOamData_16x8, gFieldEffectAnimTable_JumpSmallSplash, gFieldEffectPicTable_JumpSmallSplash, gDummySpriteAffineAnimTable, sub_81287C4};
+const struct SpriteTemplate gFieldEffectSpriteTemplate_JumpSmallSplash = {0xFFFF, 0x1004, &gFieldOamData_16x8, gFieldEffectAnimTable_JumpSmallSplash, gFieldEffectPicTable_JumpSmallSplash, gDummySpriteAffineAnimTable, UpdateJumpLandingFieldEffect};
const struct SpriteFrameImage gFieldEffectPicTable_LongGrass[] = {
obj_frame_tiles(gFieldEffectPic_LongGrass_0),
@@ -456,7 +456,7 @@ const union AnimCmd *const gFieldEffectAnimTable_LongGrass[] = {
gFieldEffectAnim_8374AD4
};
-const struct SpriteTemplate gFieldEffectSpriteTemplate_LongGrass = {0xFFFF, 0x1005, &gFieldOamData_16x16, gFieldEffectAnimTable_LongGrass, gFieldEffectPicTable_LongGrass, gDummySpriteAffineAnimTable, unc_grass_tall};
+const struct SpriteTemplate gFieldEffectSpriteTemplate_LongGrass = {0xFFFF, 0x1005, &gFieldOamData_16x16, gFieldEffectAnimTable_LongGrass, gFieldEffectPicTable_LongGrass, gDummySpriteAffineAnimTable, UpdateLongGrassFieldEffect};
const struct SpriteFrameImage gFieldEffectPicTable_JumpLongGrass[] = {
obj_frame_tiles(gFieldEffectPic_JumpLongGrass_0),
@@ -481,7 +481,7 @@ const union AnimCmd *const gFieldEffectAnimTable_JumpLongGrass[] = {
gFieldEffectAnim_8374B40
};
-const struct SpriteTemplate gFieldEffectSpriteTemplate_JumpLongGrass = {0xFFFF, 0x1005, &gFieldOamData_16x16, gFieldEffectAnimTable_JumpLongGrass, gFieldEffectPicTable_JumpLongGrass, gDummySpriteAffineAnimTable, sub_81287C4};
+const struct SpriteTemplate gFieldEffectSpriteTemplate_JumpLongGrass = {0xFFFF, 0x1005, &gFieldOamData_16x16, gFieldEffectAnimTable_JumpLongGrass, gFieldEffectPicTable_JumpLongGrass, gDummySpriteAffineAnimTable, UpdateJumpLandingFieldEffect};
const struct SpriteFrameImage gFieldEffectPicTable_Unknown17[] = {
obj_frame_tiles(gFieldEffectPic_JumpLongGrass_5),
@@ -512,7 +512,7 @@ const union AnimCmd *const gFieldEffectAnimTable_Unknown17[] = {
gFieldEffectAnim_8374BC0
};
-const struct SpriteTemplate gFieldEffectSpriteTemplate_Unknown17 = {0xFFFF, 0x1005, &gFieldOamData_16x16, gFieldEffectAnimTable_Unknown17, gFieldEffectPicTable_Unknown17, gDummySpriteAffineAnimTable, sub_8128800};
+const struct SpriteTemplate gFieldEffectSpriteTemplate_Unknown17 = {0xFFFF, 0x1005, &gFieldOamData_16x16, gFieldEffectAnimTable_Unknown17, gFieldEffectPicTable_Unknown17, gDummySpriteAffineAnimTable, WaitFieldEffectSpriteAnim};
const struct SpriteFrameImage gFieldEffectPicTable_Unknown18[] = {
obj_frame_tiles(gFieldEffectPic_Unknown18_0),
@@ -535,7 +535,7 @@ const union AnimCmd *const gFieldEffectAnimTable_Unknown18[] = {
gFieldEffectAnim_8374C24
};
-const struct SpriteTemplate gFieldEffectSpriteTemplate_Unknown18 = {0xFFFF, 0x1005, &gFieldOamData_16x16, gFieldEffectAnimTable_Unknown18, gFieldEffectPicTable_Unknown18, gDummySpriteAffineAnimTable, sub_8128800};
+const struct SpriteTemplate gFieldEffectSpriteTemplate_Unknown18 = {0xFFFF, 0x1005, &gFieldOamData_16x16, gFieldEffectAnimTable_Unknown18, gFieldEffectPicTable_Unknown18, gDummySpriteAffineAnimTable, WaitFieldEffectSpriteAnim};
const struct SpriteFrameImage gFieldEffectPicTable_Unknown19[] = {
obj_frame_tiles(gFieldEffectPic_Unknown19_0),
@@ -556,7 +556,7 @@ const union AnimCmd *const gFieldEffectAnimTable_Unknown19[] = {
gFieldEffectAnim_8374C7C
};
-const struct SpriteTemplate gFieldEffectSpriteTemplate_Unknown19 = {0xFFFF, 0x1004, &gFieldOamData_16x16, gFieldEffectAnimTable_Unknown19, gFieldEffectPicTable_Unknown19, gDummySpriteAffineAnimTable, sub_8128800};
+const struct SpriteTemplate gFieldEffectSpriteTemplate_Unknown19 = {0xFFFF, 0x1004, &gFieldOamData_16x16, gFieldEffectAnimTable_Unknown19, gFieldEffectPicTable_Unknown19, gDummySpriteAffineAnimTable, WaitFieldEffectSpriteAnim};
const struct SpriteFrameImage gFieldEffectPicTable_SandPile[] = {
obj_frame_tiles(gFieldEffectPic_SandPile_0),
@@ -575,7 +575,7 @@ const union AnimCmd *const gFieldEffectAnimTable_SandPile[] = {
gFieldEffectAnim_8374CC4
};
-const struct SpriteTemplate gFieldEffectSpriteTemplate_SandPile = {0xFFFF, 0x1004, &gFieldOamData_16x8, gFieldEffectAnimTable_SandPile, gFieldEffectPicTable_SandPile, gDummySpriteAffineAnimTable, sub_81282E0};
+const struct SpriteTemplate gFieldEffectSpriteTemplate_SandPile = {0xFFFF, 0x1004, &gFieldOamData_16x8, gFieldEffectAnimTable_SandPile, gFieldEffectPicTable_SandPile, gDummySpriteAffineAnimTable, UpdateSandPileFieldEffect};
const struct SpriteFrameImage gFieldEffectPicTable_Unknown20[] = {
obj_frame_tiles(gFieldEffectPic_Unknown20_0),
@@ -598,40 +598,40 @@ const union AnimCmd *const gFieldEffectAnimTable_Unknown20[] = {
gFieldEffectAnim_8374D10
};
-const struct SpriteTemplate gFieldEffectSpriteTemplate_Unknown20 = {0xFFFF, 0x1004, &gFieldOamData_16x16, gFieldEffectAnimTable_Unknown20, gFieldEffectPicTable_Unknown20, gDummySpriteAffineAnimTable, sub_8128800};
+const struct SpriteTemplate gFieldEffectSpriteTemplate_Unknown20 = {0xFFFF, 0x1004, &gFieldOamData_16x16, gFieldEffectAnimTable_Unknown20, gFieldEffectPicTable_Unknown20, gDummySpriteAffineAnimTable, WaitFieldEffectSpriteAnim};
-const union AffineAnimCmd gFieldEffectAffineAnim_8374D48[] = {
+const union AffineAnimCmd gFieldEffectAffineAnim_WavyReflection[] = {
AFFINEANIMCMD_FRAME(0xFF00, 0x100, -128, 0),
- AFFINEANIMCMD_FRAME(0x1, 0x0, 0, 4),
- AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 8),
- AFFINEANIMCMD_FRAME(0xFFFF, 0x0, 0, 4),
- AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 8),
- AFFINEANIMCMD_FRAME(0xFFFF, 0x0, 0, 4),
- AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 8),
- AFFINEANIMCMD_FRAME(0x1, 0x0, 0, 4),
- AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 8),
+ AFFINEANIMCMD_FRAME( 1, 0, 0, 4),
+ AFFINEANIMCMD_FRAME( 0, 0, 0, 8),
+ AFFINEANIMCMD_FRAME(-1, 0, 0, 4),
+ AFFINEANIMCMD_FRAME( 0, 0, 0, 8),
+ AFFINEANIMCMD_FRAME(-1, 0, 0, 4),
+ AFFINEANIMCMD_FRAME( 0, 0, 0, 8),
+ AFFINEANIMCMD_FRAME( 1, 0, 0, 4),
+ AFFINEANIMCMD_FRAME( 0, 0, 0, 8),
AFFINEANIMCMD_JUMP(1)
};
-const union AffineAnimCmd gFieldEffectAffineAnim_8374D98[] = {
+const union AffineAnimCmd gFieldEffectAffineAnim_WavyReflectionFlipped[] = {
AFFINEANIMCMD_FRAME(0x100, 0x100, -128, 0),
- AFFINEANIMCMD_FRAME(0xFFFF, 0x0, 0, 4),
- AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 8),
- AFFINEANIMCMD_FRAME(0x1, 0x0, 0, 4),
- AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 8),
- AFFINEANIMCMD_FRAME(0x1, 0x0, 0, 4),
- AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 8),
- AFFINEANIMCMD_FRAME(0xFFFF, 0x0, 0, 4),
- AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 8),
+ AFFINEANIMCMD_FRAME(-1, 0, 0, 4),
+ AFFINEANIMCMD_FRAME( 0, 0, 0, 8),
+ AFFINEANIMCMD_FRAME( 1, 0, 0, 4),
+ AFFINEANIMCMD_FRAME( 0, 0, 0, 8),
+ AFFINEANIMCMD_FRAME( 1, 0, 0, 4),
+ AFFINEANIMCMD_FRAME( 0, 0, 0, 8),
+ AFFINEANIMCMD_FRAME(-1, 0, 0, 4),
+ AFFINEANIMCMD_FRAME( 0, 0, 0, 8),
AFFINEANIMCMD_JUMP(1)
};
-const union AffineAnimCmd *const gFieldEffectAffineAnimTable_Unknown21[] = {
- gFieldEffectAffineAnim_8374D48,
- gFieldEffectAffineAnim_8374D98
+const union AffineAnimCmd *const gFieldEffectAffineAnimTable_Reflection[] = {
+ gFieldEffectAffineAnim_WavyReflection,
+ gFieldEffectAffineAnim_WavyReflectionFlipped
};
-const struct SpriteTemplate gFieldEffectSpriteTemplate_Unknown21 = {0x0, 0xFFFF, &gDummyOamData, gDummySpriteAnimTable, NULL, gFieldEffectAffineAnimTable_Unknown21, SpriteCallbackDummy};
+const struct SpriteTemplate gFieldEffectSpriteTemplate_Reflection = {0x0, 0xFFFF, &gDummyOamData, gDummySpriteAnimTable, NULL, gFieldEffectAffineAnimTable_Reflection, SpriteCallbackDummy};
const struct SpriteFrameImage gFieldEffectPicTable_BerryTreeGrowthSparkle[] = {
obj_frame_tiles(gFieldEffectPic_BerryTreeGrowthSparkle_0),
@@ -670,7 +670,7 @@ const union AnimCmd *const gFieldEffectAnimTable_BerryTreeGrowthSparkle[] = {
gFieldEffectAnim_8374E38
};
-const struct SpriteTemplate gFieldEffectSpriteTemplate_BerryTreeGrowthSparkle = {0xFFFF, 0xFFFF, &gFieldOamData_16x16, gFieldEffectAnimTable_BerryTreeGrowthSparkle, gFieldEffectPicTable_BerryTreeGrowthSparkle, gDummySpriteAffineAnimTable, sub_8128800};
+const struct SpriteTemplate gFieldEffectSpriteTemplate_BerryTreeGrowthSparkle = {0xFFFF, 0xFFFF, &gFieldOamData_16x16, gFieldEffectAnimTable_BerryTreeGrowthSparkle, gFieldEffectPicTable_BerryTreeGrowthSparkle, gDummySpriteAffineAnimTable, WaitFieldEffectSpriteAnim};
const struct SpriteFrameImage gFieldEffectPicTable_TreeDisguise[] = {
obj_frame_tiles(gFieldEffectPic_TreeDisguise_0),
@@ -703,7 +703,7 @@ const union AnimCmd *const gFieldEffectAnimTable_TreeDisguise[] = {
gFieldEffectAnim_8374EE8
};
-const struct SpriteTemplate gFieldEffectSpriteTemplate_TreeDisguise = {0xFFFF, 0xFFFF, &gFieldOamData_16x32, gFieldEffectAnimTable_TreeDisguise, gFieldEffectPicTable_TreeDisguise, gDummySpriteAffineAnimTable, sub_81285AC};
+const struct SpriteTemplate gFieldEffectSpriteTemplate_TreeDisguise = {0xFFFF, 0xFFFF, &gFieldOamData_16x32, gFieldEffectAnimTable_TreeDisguise, gFieldEffectPicTable_TreeDisguise, gDummySpriteAffineAnimTable, UpdateDisguiseFieldEffect};
const struct SpriteFrameImage gFieldEffectPicTable_MountainDisguise[] = {
obj_frame_tiles(gFieldEffectPic_MountainDisguise_0),
@@ -736,7 +736,7 @@ const union AnimCmd *const gFieldEffectAnimTable_MountainDisguise[] = {
gFieldEffectAnim_8374F68
};
-const struct SpriteTemplate gFieldEffectSpriteTemplate_MountainDisguise = {0xFFFF, 0xFFFF, &gFieldOamData_16x32, gFieldEffectAnimTable_MountainDisguise, gFieldEffectPicTable_MountainDisguise, gDummySpriteAffineAnimTable, sub_81285AC};
+const struct SpriteTemplate gFieldEffectSpriteTemplate_MountainDisguise = {0xFFFF, 0xFFFF, &gFieldOamData_16x32, gFieldEffectAnimTable_MountainDisguise, gFieldEffectPicTable_MountainDisguise, gDummySpriteAffineAnimTable, UpdateDisguiseFieldEffect};
const struct SpriteFrameImage gFieldEffectPicTable_SandDisguise[] = {
obj_frame_tiles(gFieldEffectPic_SandDisguise_0),
@@ -748,7 +748,7 @@ const struct SpriteFrameImage gFieldEffectPicTable_SandDisguise[] = {
obj_frame_tiles(gFieldEffectPic_SandDisguise_6)
};
-const struct SpriteTemplate gFieldEffectSpriteTemplate_SandDisguise = {0xFFFF, 0xFFFF, &gFieldOamData_16x32, gFieldEffectAnimTable_TreeDisguise, gFieldEffectPicTable_SandDisguise, gDummySpriteAffineAnimTable, sub_81285AC};
+const struct SpriteTemplate gFieldEffectSpriteTemplate_SandDisguise = {0xFFFF, 0xFFFF, &gFieldOamData_16x32, gFieldEffectAnimTable_TreeDisguise, gFieldEffectPicTable_SandDisguise, gDummySpriteAffineAnimTable, UpdateDisguiseFieldEffect};
const struct SpriteFrameImage gFieldEffectPicTable_Bird[] = {
obj_frame_tiles(gFieldEffectPic_Bird)
@@ -780,7 +780,7 @@ const union AnimCmd *const gFieldEffectAnimTable_ShortGrass[] = {
gFieldEffectAnim_8375034
};
-const struct SpriteTemplate gFieldEffectSpriteTemplate_ShortGrass = {0xFFFF, 0x1005, &gFieldOamData_16x16, gFieldEffectAnimTable_ShortGrass, gFieldEffectPicTable_ShortGrass, gDummySpriteAffineAnimTable, sub_8127334};
+const struct SpriteTemplate gFieldEffectSpriteTemplate_ShortGrass = {0xFFFF, 0x1005, &gFieldOamData_16x16, gFieldEffectAnimTable_ShortGrass, gFieldEffectPicTable_ShortGrass, gDummySpriteAffineAnimTable, UpdateShortGrassFieldEffect};
const struct SpriteFrameImage gFieldEffectPicTable_HotSpringsWater[] = {
obj_frame_tiles(gFieldEffectPic_HotSpringsWater)
@@ -795,7 +795,7 @@ const union AnimCmd *const gFieldEffectAnimTable_HotSpringsWater[] = {
gFieldEffectAnim_8375064
};
-const struct SpriteTemplate gFieldEffectSpriteTemplate_HotSpringsWater = {0xFFFF, 0x1005, &gFieldOamData_16x16, gFieldEffectAnimTable_HotSpringsWater, gFieldEffectPicTable_HotSpringsWater, gDummySpriteAffineAnimTable, sub_8127A7C};
+const struct SpriteTemplate gFieldEffectSpriteTemplate_HotSpringsWater = {0xFFFF, 0x1005, &gFieldOamData_16x16, gFieldEffectAnimTable_HotSpringsWater, gFieldEffectPicTable_HotSpringsWater, gDummySpriteAffineAnimTable, UpdateHotSpringsWaterFieldEffect};
const struct SpriteFrameImage gFieldEffectPicTable_PopOutOfAsh[] = {
obj_frame_tiles(gFieldEffectPic_PopOutOfAsh_0),
@@ -872,7 +872,7 @@ const union AnimCmd *const gFieldEffectAnimTable_Bubbles[] = {
gFieldEffectAnim_8375188
};
-const struct SpriteTemplate gFieldEffectSpriteTemplate_Bubbles = {0xFFFF, 0x1004, &gFieldOamData_16x32, gFieldEffectAnimTable_Bubbles, gFieldEffectPicTable_Bubbles, gDummySpriteAffineAnimTable, sub_8128410};
+const struct SpriteTemplate gFieldEffectSpriteTemplate_Bubbles = {0xFFFF, 0x1004, &gFieldOamData_16x32, gFieldEffectAnimTable_Bubbles, gFieldEffectPicTable_Bubbles, gDummySpriteAffineAnimTable, UpdateBubblesFieldEffect};
const struct SpriteFrameImage gFieldEffectPicTable_Sparkle[] = {
obj_frame_tiles(gFieldEffectPic_Sparkle_0),
@@ -890,7 +890,7 @@ const union AnimCmd *const gFieldEffectAnimTable_Sparkle[] = {
gFieldEffectAnim_83751D8
};
-const struct SpriteTemplate gFieldEffectSpriteTemplate_Sparkle = {0xFFFF, 0x100F, &gFieldOamData_16x16, gFieldEffectAnimTable_Sparkle, gFieldEffectPicTable_Sparkle, gDummySpriteAffineAnimTable, sub_8128774};
+const struct SpriteTemplate gFieldEffectSpriteTemplate_Sparkle = {0xFFFF, 0x100F, &gFieldOamData_16x16, gFieldEffectAnimTable_Sparkle, gFieldEffectPicTable_Sparkle, gDummySpriteAffineAnimTable, UpdateSparkleFieldEffect};
const struct SpritePalette gFieldEffectObjectPaletteInfo3 = {gFieldEffectObjectPalette3, 0x100F};
diff --git a/src/data/field_event_obj/movement_action_func_tables.h b/src/data/field_event_obj/movement_action_func_tables.h
new file mode 100644
index 000000000..61871a2ca
--- /dev/null
+++ b/src/data/field_event_obj/movement_action_func_tables.h
@@ -0,0 +1,1356 @@
+#ifndef POKERUBY_MOVEMENT_ACTION_FUNC_TABLES_H
+#define POKERUBY_MOVEMENT_ACTION_FUNC_TABLES_H
+
+u8 MovementAction_FaceDown_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_PauseSpriteAnim(struct EventObject *, struct Sprite *);
+u8 MovementAction_FaceUp_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_FaceLeft_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_FaceRight_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkSlowDown_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkSlowDown_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkSlowUp_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkSlowUp_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkSlowLeft_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkSlowLeft_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkSlowRight_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkSlowRight_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkNormalDown_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkNormalDown_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkNormalUp_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkNormalUp_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkNormalLeft_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkNormalLeft_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkNormalRight_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkNormalRight_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_Jump2Down_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_Jump2Down_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_Jump2Up_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_Jump2Up_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_Jump2Left_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_Jump2Left_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_Jump2Right_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_Jump2Right_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_Delay1_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_Delay_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_Finish(struct EventObject *, struct Sprite *);
+u8 MovementAction_Delay2_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_Delay4_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_Delay8_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_Delay16_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkFastDown_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkFastDown_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkFastUp_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkFastUp_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkFastLeft_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkFastLeft_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkFastRight_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkFastRight_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkInPlaceSlowDown_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkInPlaceSlow_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkInPlaceSlowUp_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkInPlaceSlowLeft_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkInPlaceSlowRight_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkInPlaceNormalDown_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkInPlace_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkInPlaceNormalUp_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkInPlaceNormalLeft_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkInPlaceNormalRight_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkInPlaceFastDown_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkInPlaceFastUp_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkInPlaceFastLeft_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkInPlaceFastRight_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkInPlaceFastestDown_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkInPlaceFastestUp_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkInPlaceFastestLeft_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkInPlaceFastestRight_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_RideWaterCurrentDown_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_RideWaterCurrentDown_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_RideWaterCurrentUp_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_RideWaterCurrentUp_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_RideWaterCurrentLeft_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_RideWaterCurrentLeft_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_RideWaterCurrentRight_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_RideWaterCurrentRight_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkFastestDown_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkFastestDown_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkFastestUp_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkFastestUp_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkFastestLeft_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkFastestLeft_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkFastestRight_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkFastestRight_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_SlideDown_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_SlideDown_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_SlideUp_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_SlideUp_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_SlideLeft_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_SlideLeft_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_SlideRight_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_SlideRight_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_PlayerRunDown_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_PlayerRunDown_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_PlayerRunUp_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_PlayerRunUp_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_PlayerRunLeft_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_PlayerRunLeft_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_PlayerRunRight_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_PlayerRunRight_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_StartAnimInDirection_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WaitSpriteAnim(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpSpecialDown_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpSpecialDown_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpSpecialUp_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpSpecialUp_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpSpecialLeft_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpSpecialLeft_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpSpecialRight_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpSpecialRight_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_FacePlayer_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_FaceAwayPlayer_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_LockFacingDirection_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_UnlockFacingDirection_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpDown_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpDown_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpUp_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpUp_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpLeft_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpLeft_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpRight_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpRight_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpInPlaceDown_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpInPlaceDown_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpInPlaceUp_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpInPlaceUp_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpInPlaceLeft_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpInPlaceLeft_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpInPlaceRight_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpInPlaceRight_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpInPlaceDownUp_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpInPlaceDownUp_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpInPlaceUpDown_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpInPlaceUpDown_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpInPlaceLeftRight_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpInPlaceLeftRight_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpInPlaceRightLeft_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpInPlaceRightLeft_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_FaceOriginalDirection_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_NurseJoyBowDown_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_EnableJumpLandingGroundEffect_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_DisableJumpLandingGroundEffect_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_DisableAnimation_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_RestoreAnimation_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_SetInvisible_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_SetVisible_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_EmoteExclamationMark_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_EmoteQuestionMark_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_EmoteHeart_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_RevealTrainer_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_RevealTrainer_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_RockSmashBreak_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_RockSmashBreak_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_RockSmashBreak_Step2(struct EventObject *, struct Sprite *);
+u8 MovementAction_CutTree_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_CutTree_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_CutTree_Step2(struct EventObject *, struct Sprite *);
+u8 MovementAction_SetFixedPriority_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_ClearFixedPriority_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_InitAffineAnim_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_ClearAffineAnim_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkDownStartAffine_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkDownStartAffine_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkDownAffine_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkDownAffine_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieFaceDown_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieFaceUp_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieFaceLeft_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieFaceRight_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroPopWheelieDown_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroPopWheelieUp_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroPopWheelieLeft_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroPopWheelieRight_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroEndWheelieFaceDown_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroEndWheelieFaceUp_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroEndWheelieFaceLeft_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroEndWheelieFaceRight_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_UnusedAcroActionDown_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_UnusedAcroActionUp_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_UnusedAcroActionLeft_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_UnusedAcroActionRight_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieHopFaceDown_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieHopFaceDown_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieHopFaceUp_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieHopFaceUp_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieHopFaceLeft_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieHopFaceLeft_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieHopFaceRight_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieHopFaceRight_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieHopDown_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieHopDown_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieHopUp_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieHopUp_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieHopLeft_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieHopLeft_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieHopRight_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieHopRight_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieJumpDown_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieJumpDown_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieJumpUp_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieJumpUp_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieJumpLeft_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieJumpLeft_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieJumpRight_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieJumpRight_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieInPlaceDown_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkInPlace_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieInPlaceUp_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkInPlace_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieInPlaceLeft_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkInPlace_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieInPlaceRight_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkInPlace_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroPopWheelieMoveDown_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroPopWheelieMoveDown_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroPopWheelieMoveUp_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroPopWheelieMoveUp_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroPopWheelieMoveLeft_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroPopWheelieMoveLeft_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroPopWheelieMoveRight_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroPopWheelieMoveRight_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieMoveDown_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieMoveDown_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieMoveUp_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieMoveUp_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieMoveLeft_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieMoveLeft_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieMoveRight_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieMoveRight_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroEndWheelieMoveDown_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroEndWheelieMoveDown_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroEndWheelieMoveUp_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroEndWheelieMoveUp_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroEndWheelieMoveLeft_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroEndWheelieMoveLeft_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroEndWheelieMoveRight_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroEndWheelieMoveRight_Step1(struct EventObject *, struct Sprite *);
+
+u8 (*const gMovementActionFuncs_FaceDown[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_FaceUp[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_FaceLeft[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_FaceRight[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkSlowDown[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkSlowUp[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkSlowLeft[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkSlowRight[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkNormalDown[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkNormalUp[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkNormalLeft[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkNormalRight[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_Jump2Down[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_Jump2Up[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_Jump2Left[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_Jump2Right[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_Delay1[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_Delay2[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_Delay4[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_Delay8[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_Delay16[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkFastDown[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkFastUp[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkFastLeft[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkFastRight[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkInPlaceSlowDown[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkInPlaceSlowUp[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkInPlaceSlowLeft[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkInPlaceSlowRight[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkInPlaceNormalDown[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkInPlaceNormalLeft[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkInPlaceNormalUp[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkInPlaceNormalRight[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkInPlaceFastDown[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkInPlaceFastUp[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkInPlaceFastLeft[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkInPlaceFastRight[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkInPlaceFastestDown[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkInPlaceFastestUp[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkInPlaceFastestLeft[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkInPlaceFastestRight[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_RideWaterCurrentDown[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_RideWaterCurrentUp[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_RideWaterCurrentLeft[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_RideWaterCurrentRight[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkFastestDown[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkFastestUp[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkFastestLeft[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkFastestRight[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_SlideDown[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_SlideUp[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_SlideLeft[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_SlideRight[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_PlayerRunDown[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_PlayerRunUp[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_PlayerRunLeft[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_PlayerRunRight[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_StartAnimInDirection[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_JumpSpecialDown[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_JumpSpecialUp[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_JumpSpecialLeft[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_JumpSpecialRight[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_FacePlayer[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_FaceAwayPlayer[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_LockFacingDirection[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_UnlockFacingDirection[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_JumpDown[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_JumpUp[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_JumpLeft[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_JumpRight[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_JumpInPlaceDown[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_JumpInPlaceUp[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_JumpInPlaceLeft[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_JumpInPlaceRight[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_JumpInPlaceDownUp[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_JumpInPlaceUpDown[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_JumpInPlaceLeftRight[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_JumpInPlaceRightLeft[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_FaceOriginalDirection[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_NurseJoyBowDown[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_EnableJumpLandingGroundEffect[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_DisableJumpLandingGroundEffect[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_DisableAnimation[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_RestoreAnimation[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_SetInvisible[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_SetVisible[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_EmoteExclamationMark[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_EmoteQuestionMark[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_EmoteHeart[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_RevealTrainer[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_RockSmashBreak[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_CutTree[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_SetFixedPriority[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_ClearFixedPriority[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_InitAffineAnim[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_ClearAffineAnim[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkDownStartAffine[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkDownAffine[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroWheelieFaceDown[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroWheelieFaceUp[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroWheelieFaceLeft[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroWheelieFaceRight[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroPopWheelieDown[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroPopWheelieUp[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroPopWheelieLeft[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroPopWheelieRight[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroEndWheelieFaceDown[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroEndWheelieFaceUp[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroEndWheelieFaceLeft[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroEndWheelieFaceRight[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroWheelieHopFaceDown[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroWheelieHopFaceUp[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroWheelieHopFaceLeft[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroWheelieHopFaceRight[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroWheelieHopDown[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroWheelieHopUp[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroWheelieHopLeft[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroWheelieHopRight[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroWheelieJumpDown[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroWheelieJumpUp[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroWheelieJumpLeft[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroWheelieJumpRight[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroWheelieInPlaceDown[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroWheelieInPlaceUp[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroWheelieInPlaceLeft[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroWheelieInPlaceRight[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroPopWheelieMoveDown[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroPopWheelieMoveUp[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroPopWheelieMoveLeft[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroPopWheelieMoveRight[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroWheelieMoveDown[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroWheelieMoveUp[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroWheelieMoveLeft[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroWheelieMoveRight[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroEndWheelieMoveDown[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroEndWheelieMoveUp[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroEndWheelieMoveLeft[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroEndWheelieMoveRight[])(struct EventObject *, struct Sprite *);
+
+u8 (*const *const gMovementActionFuncs[])(struct EventObject *, struct Sprite *) = {
+ gMovementActionFuncs_FaceDown, // MOVEMENT_ACTION_FACE_DOWN
+ gMovementActionFuncs_FaceUp, // MOVEMENT_ACTION_FACE_UP
+ gMovementActionFuncs_FaceLeft, // MOVEMENT_ACTION_FACE_LEFT
+ gMovementActionFuncs_FaceRight, // MOVEMENT_ACTION_FACE_RIGHT
+ gMovementActionFuncs_WalkSlowDown, // MOVEMENT_ACTION_WALK_DOWN_SLOW
+ gMovementActionFuncs_WalkSlowUp, // MOVEMENT_ACTION_WALK_UP_SLOW
+ gMovementActionFuncs_WalkSlowLeft, // MOVEMENT_ACTION_WALK_LEFT_SLOW
+ gMovementActionFuncs_WalkSlowRight, // MOVEMENT_ACTION_WALK_RIGHT_SLOW
+ gMovementActionFuncs_WalkNormalDown, // MOVEMENT_ACTION_WALK_DOWN_NORMAL
+ gMovementActionFuncs_WalkNormalUp, // MOVEMENT_ACTION_WALK_UP_NORMAL
+ gMovementActionFuncs_WalkNormalLeft, // MOVEMENT_ACTION_WALK_LEFT_NORMAL
+ gMovementActionFuncs_WalkNormalRight, // MOVEMENT_ACTION_WALK_RIGHT_NORMAL
+ gMovementActionFuncs_Jump2Down, // MOVEMENT_ACTION_JUMP_2_DOWN
+ gMovementActionFuncs_Jump2Up, // MOVEMENT_ACTION_JUMP_2_UP
+ gMovementActionFuncs_Jump2Left, // MOVEMENT_ACTION_JUMP_2_LEFT
+ gMovementActionFuncs_Jump2Right, // MOVEMENT_ACTION_JUMP_2_RIGHT
+ gMovementActionFuncs_Delay1, // MOVEMENT_ACTION_DELAY_1
+ gMovementActionFuncs_Delay2, // MOVEMENT_ACTION_DELAY_2
+ gMovementActionFuncs_Delay4, // MOVEMENT_ACTION_DELAY_4
+ gMovementActionFuncs_Delay8, // MOVEMENT_ACTION_DELAY_8
+ gMovementActionFuncs_Delay16, // MOVEMENT_ACTION_DELAY_16
+ gMovementActionFuncs_WalkFastDown, // MOVEMENT_ACTION_WALK_FAST_DOWN
+ gMovementActionFuncs_WalkFastUp, // MOVEMENT_ACTION_WALK_FAST_UP
+ gMovementActionFuncs_WalkFastLeft, // MOVEMENT_ACTION_WALK_FAST_LEFT
+ gMovementActionFuncs_WalkFastRight, // MOVEMENT_ACTION_WALK_FAST_RIGHT
+ gMovementActionFuncs_WalkInPlaceSlowDown, // MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_DOWN
+ gMovementActionFuncs_WalkInPlaceSlowUp, // MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_UP
+ gMovementActionFuncs_WalkInPlaceSlowLeft, // MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_LEFT
+ gMovementActionFuncs_WalkInPlaceSlowRight, // MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_RIGHT
+ gMovementActionFuncs_WalkInPlaceNormalDown, // MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_DOWN
+ gMovementActionFuncs_WalkInPlaceNormalUp, // MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_UP
+ gMovementActionFuncs_WalkInPlaceNormalLeft, // MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_LEFT
+ gMovementActionFuncs_WalkInPlaceNormalRight, // MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_RIGHT
+ gMovementActionFuncs_WalkInPlaceFastDown, // MOVEMENT_ACTION_WALK_IN_PLACE_FAST_DOWN
+ gMovementActionFuncs_WalkInPlaceFastUp, // MOVEMENT_ACTION_WALK_IN_PLACE_FAST_UP
+ gMovementActionFuncs_WalkInPlaceFastLeft, // MOVEMENT_ACTION_WALK_IN_PLACE_FAST_LEFT
+ gMovementActionFuncs_WalkInPlaceFastRight, // MOVEMENT_ACTION_WALK_IN_PLACE_FAST_RIGHT
+ gMovementActionFuncs_WalkInPlaceFastestDown, // MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_DOWN
+ gMovementActionFuncs_WalkInPlaceFastestUp, // MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_UP
+ gMovementActionFuncs_WalkInPlaceFastestLeft, // MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_LEFT
+ gMovementActionFuncs_WalkInPlaceFastestRight, // MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_RIGHT
+ gMovementActionFuncs_RideWaterCurrentDown, // MOVEMENT_ACTION_RIDE_WATER_CURRENT_DOWN
+ gMovementActionFuncs_RideWaterCurrentUp, // MOVEMENT_ACTION_RIDE_WATER_CURRENT_UP
+ gMovementActionFuncs_RideWaterCurrentLeft, // MOVEMENT_ACTION_RIDE_WATER_CURRENT_LEFT
+ gMovementActionFuncs_RideWaterCurrentRight, // MOVEMENT_ACTION_RIDE_WATER_CURRENT_RIGHT
+ gMovementActionFuncs_WalkFastestDown, // MOVEMENT_ACTION_WALK_FASTEST_DOWN
+ gMovementActionFuncs_WalkFastestUp, // MOVEMENT_ACTION_WALK_FASTEST_UP
+ gMovementActionFuncs_WalkFastestLeft, // MOVEMENT_ACTION_WALK_FASTEST_LEFT
+ gMovementActionFuncs_WalkFastestRight, // MOVEMENT_ACTION_WALK_FASTEST_RIGHT
+ gMovementActionFuncs_SlideDown, // MOVEMENT_ACTION_SLIDE_DOWN
+ gMovementActionFuncs_SlideUp, // MOVEMENT_ACTION_SLIDE_UP
+ gMovementActionFuncs_SlideLeft, // MOVEMENT_ACTION_SLIDE_LEFT
+ gMovementActionFuncs_SlideRight, // MOVEMENT_ACTION_SLIDE_RIGHT
+ gMovementActionFuncs_PlayerRunDown, // MOVEMENT_ACTION_PLAYER_RUN_DOWN
+ gMovementActionFuncs_PlayerRunUp, // MOVEMENT_ACTION_PLAYER_RUN_UP
+ gMovementActionFuncs_PlayerRunLeft, // MOVEMENT_ACTION_PLAYER_RUN_LEFT
+ gMovementActionFuncs_PlayerRunRight, // MOVEMENT_ACTION_PLAYER_RUN_RIGHT
+ gMovementActionFuncs_StartAnimInDirection, // MOVEMENT_ACTION_START_ANIM_IN_DIRECTION
+ gMovementActionFuncs_JumpSpecialDown, // MOVEMENT_ACTION_JUMP_SPECIAL_DOWN
+ gMovementActionFuncs_JumpSpecialUp, // MOVEMENT_ACTION_JUMP_SPECIAL_UP
+ gMovementActionFuncs_JumpSpecialLeft, // MOVEMENT_ACTION_JUMP_SPECIAL_LEFT
+ gMovementActionFuncs_JumpSpecialRight, // MOVEMENT_ACTION_JUMP_SPECIAL_RIGHT
+ gMovementActionFuncs_FacePlayer, // MOVEMENT_ACTION_FACE_PLAYER
+ gMovementActionFuncs_FaceAwayPlayer, // MOVEMENT_ACTION_FACE_AWAY_PLAYER
+ gMovementActionFuncs_LockFacingDirection, // MOVEMENT_ACTION_LOCK_FACING_DIRECTION
+ gMovementActionFuncs_UnlockFacingDirection, // MOVEMENT_ACTION_UNLOCK_FACING_DIRECTION
+ gMovementActionFuncs_JumpDown, // MOVEMENT_ACTION_JUMP_DOWN
+ gMovementActionFuncs_JumpUp, // MOVEMENT_ACTION_JUMP_UP
+ gMovementActionFuncs_JumpLeft, // MOVEMENT_ACTION_JUMP_LEFT
+ gMovementActionFuncs_JumpRight, // MOVEMENT_ACTION_JUMP_RIGHT
+ gMovementActionFuncs_JumpInPlaceDown, // MOVEMENT_ACTION_JUMP_IN_PLACE_DOWN
+ gMovementActionFuncs_JumpInPlaceUp, // MOVEMENT_ACTION_JUMP_IN_PLACE_UP
+ gMovementActionFuncs_JumpInPlaceLeft, // MOVEMENT_ACTION_JUMP_IN_PLACE_LEFT
+ gMovementActionFuncs_JumpInPlaceRight, // MOVEMENT_ACTION_JUMP_IN_PLACE_RIGHT
+ gMovementActionFuncs_JumpInPlaceDownUp, // MOVEMENT_ACTION_JUMP_IN_PLACE_DOWN_UP
+ gMovementActionFuncs_JumpInPlaceUpDown, // MOVEMENT_ACTION_JUMP_IN_PLACE_UP_DOWN
+ gMovementActionFuncs_JumpInPlaceLeftRight, // MOVEMENT_ACTION_JUMP_IN_PLACE_LEFT_RIGHT
+ gMovementActionFuncs_JumpInPlaceRightLeft, // MOVEMENT_ACTION_JUMP_IN_PLACE_RIGHT_LEFT
+ gMovementActionFuncs_FaceOriginalDirection, // MOVEMENT_ACTION_FACE_ORIGINAL_DIRECTION
+ gMovementActionFuncs_NurseJoyBowDown, // MOVEMENT_ACTION_NURSE_JOY_BOW_DOWN
+ gMovementActionFuncs_EnableJumpLandingGroundEffect, // MOVEMENT_ACTION_ENABLE_JUMP_LANDING_GROUND_EFFECT
+ gMovementActionFuncs_DisableJumpLandingGroundEffect, // MOVEMENT_ACTION_DISABLE_JUMP_LANDING_GROUND_EFFECT
+ gMovementActionFuncs_DisableAnimation, // MOVEMENT_ACTION_DISABLE_ANIMATION
+ gMovementActionFuncs_RestoreAnimation, // MOVEMENT_ACTION_RESTORE_ANIMATION
+ gMovementActionFuncs_SetInvisible, // MOVEMENT_ACTION_SET_INVISIBLE
+ gMovementActionFuncs_SetVisible, // MOVEMENT_ACTION_SET_VISIBLE
+ gMovementActionFuncs_EmoteExclamationMark, // MOVEMENT_ACTION_EMOTE_EXCLAMATION_MARK
+ gMovementActionFuncs_EmoteQuestionMark, // MOVEMENT_ACTION_EMOTE_QUESTION_MARK
+ gMovementActionFuncs_EmoteHeart, // MOVEMENT_ACTION_EMOTE_HEART
+ gMovementActionFuncs_RevealTrainer, // MOVEMENT_ACTION_REVEAL_TRAINER
+ gMovementActionFuncs_RockSmashBreak, // MOVEMENT_ACTION_ROCK_SMASH_BREAK
+ gMovementActionFuncs_CutTree, // MOVEMENT_ACTION_CUT_TREE
+ gMovementActionFuncs_SetFixedPriority, // MOVEMENT_ACTION_SET_FIXED_PRIORITY
+ gMovementActionFuncs_ClearFixedPriority, // MOVEMENT_ACTION_CLEAR_FIXED_PRIORITY
+ gMovementActionFuncs_InitAffineAnim, // MOVEMENT_ACTION_INIT_AFFINE_ANIM
+ gMovementActionFuncs_ClearAffineAnim, // MOVEMENT_ACTION_CLEAR_AFFINE_ANIM
+ gMovementActionFuncs_WalkDownStartAffine, // MOVEMENT_ACTION_WALK_DOWN_START_AFFINE
+ gMovementActionFuncs_WalkDownAffine, // MOVEMENT_ACTION_WALK_DOWN_AFFINE_1
+ gMovementActionFuncs_AcroWheelieFaceDown, // MOVEMENT_ACTION_ACRO_WHEELIE_FACE_DOWN
+ gMovementActionFuncs_AcroWheelieFaceUp, // MOVEMENT_ACTION_ACRO_WHEELIE_FACE_UP
+ gMovementActionFuncs_AcroWheelieFaceLeft, // MOVEMENT_ACTION_ACRO_WHEELIE_FACE_LEFT
+ gMovementActionFuncs_AcroWheelieFaceRight, // MOVEMENT_ACTION_ACRO_WHEELIE_FACE_RIGHT
+ gMovementActionFuncs_AcroPopWheelieDown, // MOVEMENT_ACTION_ACRO_POP_WHEELIE_DOWN
+ gMovementActionFuncs_AcroPopWheelieUp, // MOVEMENT_ACTION_ACRO_POP_WHEELIE_UP
+ gMovementActionFuncs_AcroPopWheelieLeft, // MOVEMENT_ACTION_ACRO_POP_WHEELIE_LEFT
+ gMovementActionFuncs_AcroPopWheelieRight, // MOVEMENT_ACTION_ACRO_POP_WHEELIE_RIGHT
+ gMovementActionFuncs_AcroEndWheelieFaceDown, // MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_DOWN
+ gMovementActionFuncs_AcroEndWheelieFaceUp, // MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_UP
+ gMovementActionFuncs_AcroEndWheelieFaceLeft, // MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_LEFT
+ gMovementActionFuncs_AcroEndWheelieFaceRight, // MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_RIGHT
+ gMovementActionFuncs_AcroWheelieHopFaceDown, // MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_DOWN
+ gMovementActionFuncs_AcroWheelieHopFaceUp, // MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_UP
+ gMovementActionFuncs_AcroWheelieHopFaceLeft, // MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_LEFT
+ gMovementActionFuncs_AcroWheelieHopFaceRight, // MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_RIGHT
+ gMovementActionFuncs_AcroWheelieHopDown, // MOVEMENT_ACTION_ACRO_WHEELIE_HOP_DOWN
+ gMovementActionFuncs_AcroWheelieHopUp, // MOVEMENT_ACTION_ACRO_WHEELIE_HOP_UP
+ gMovementActionFuncs_AcroWheelieHopLeft, // MOVEMENT_ACTION_ACRO_WHEELIE_HOP_LEFT
+ gMovementActionFuncs_AcroWheelieHopRight, // MOVEMENT_ACTION_ACRO_WHEELIE_HOP_RIGHT
+ gMovementActionFuncs_AcroWheelieJumpDown, // MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_DOWN
+ gMovementActionFuncs_AcroWheelieJumpUp, // MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_UP
+ gMovementActionFuncs_AcroWheelieJumpLeft, // MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_LEFT
+ gMovementActionFuncs_AcroWheelieJumpRight, // MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_RIGHT
+ gMovementActionFuncs_AcroWheelieInPlaceDown, // MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_DOWN
+ gMovementActionFuncs_AcroWheelieInPlaceUp, // MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_UP
+ gMovementActionFuncs_AcroWheelieInPlaceLeft, // MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_LEFT
+ gMovementActionFuncs_AcroWheelieInPlaceRight, // MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_RIGHT
+ gMovementActionFuncs_AcroPopWheelieMoveDown, // MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_DOWN
+ gMovementActionFuncs_AcroPopWheelieMoveUp, // MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_UP
+ gMovementActionFuncs_AcroPopWheelieMoveLeft, // MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_LEFT
+ gMovementActionFuncs_AcroPopWheelieMoveRight, // MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_RIGHT
+ gMovementActionFuncs_AcroWheelieMoveDown, // MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_DOWN
+ gMovementActionFuncs_AcroWheelieMoveUp, // MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_UP
+ gMovementActionFuncs_AcroWheelieMoveLeft, // MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_LEFT
+ gMovementActionFuncs_AcroWheelieMoveRight, // MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_RIGHT
+ gMovementActionFuncs_AcroEndWheelieMoveDown, // MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_DOWN
+ gMovementActionFuncs_AcroEndWheelieMoveUp, // MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_UP
+ gMovementActionFuncs_AcroEndWheelieMoveLeft, // MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_LEFT
+ gMovementActionFuncs_AcroEndWheelieMoveRight, // MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_RIGHT
+};
+
+
+u8 (*const gMovementActionFuncs_FaceDown[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_FaceDown_Step0,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_FaceUp[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_FaceUp_Step0,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_FaceLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_FaceLeft_Step0,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_FaceRight[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_FaceRight_Step0,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gUnknown_083759C0[])(u8) = {
+ GetMoveDirectionAnimNum,
+ GetMoveDirectionFastAnimNum,
+ GetMoveDirectionFastAnimNum,
+ GetMoveDirectionFasterAnimNum,
+ GetMoveDirectionFastestAnimNum
+};
+
+u8 (*const gMovementActionFuncs_WalkSlowDown[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkSlowDown_Step0,
+ MovementAction_WalkSlowDown_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_WalkSlowUp[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkSlowUp_Step0,
+ MovementAction_WalkSlowUp_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_WalkSlowLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkSlowLeft_Step0,
+ MovementAction_WalkSlowLeft_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_WalkSlowRight[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkSlowRight_Step0,
+ MovementAction_WalkSlowRight_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_WalkNormalDown[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkNormalDown_Step0,
+ MovementAction_WalkNormalDown_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_WalkNormalUp[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkNormalUp_Step0,
+ MovementAction_WalkNormalUp_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_WalkNormalLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkNormalLeft_Step0,
+ MovementAction_WalkNormalLeft_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_WalkNormalRight[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkNormalRight_Step0,
+ MovementAction_WalkNormalRight_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+const s16 gUnknown_08375A34[] = {0, 1, 1};
+const s16 gUnknown_08375A3A[] = {0, 0, 1};
+
+u8 (*const gMovementActionFuncs_Jump2Down[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_Jump2Down_Step0,
+ MovementAction_Jump2Down_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_Jump2Up[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_Jump2Up_Step0,
+ MovementAction_Jump2Up_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_Jump2Left[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_Jump2Left_Step0,
+ MovementAction_Jump2Left_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_Jump2Right[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_Jump2Right_Step0,
+ MovementAction_Jump2Right_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_Delay1[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_Delay1_Step0,
+ MovementAction_Delay_Step1,
+ MovementAction_Finish
+};
+
+u8 (*const gMovementActionFuncs_Delay2[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_Delay2_Step0,
+ MovementAction_Delay_Step1,
+ MovementAction_Finish
+};
+
+u8 (*const gMovementActionFuncs_Delay4[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_Delay4_Step0,
+ MovementAction_Delay_Step1,
+ MovementAction_Finish
+};
+
+u8 (*const gMovementActionFuncs_Delay8[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_Delay8_Step0,
+ MovementAction_Delay_Step1,
+ MovementAction_Finish
+};
+
+u8 (*const gMovementActionFuncs_Delay16[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_Delay16_Step0,
+ MovementAction_Delay_Step1,
+ MovementAction_Finish
+};
+
+u8 (*const gMovementActionFuncs_WalkFastDown[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkFastDown_Step0,
+ MovementAction_WalkFastDown_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_WalkFastUp[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkFastUp_Step0,
+ MovementAction_WalkFastUp_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_WalkFastLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkFastLeft_Step0,
+ MovementAction_WalkFastLeft_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_WalkFastRight[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkFastRight_Step0,
+ MovementAction_WalkFastRight_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_WalkInPlaceSlowDown[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkInPlaceSlowDown_Step0,
+ MovementAction_WalkInPlaceSlow_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_WalkInPlaceSlowUp[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkInPlaceSlowUp_Step0,
+ MovementAction_WalkInPlaceSlow_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_WalkInPlaceSlowLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkInPlaceSlowLeft_Step0,
+ MovementAction_WalkInPlaceSlow_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_WalkInPlaceSlowRight[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkInPlaceSlowRight_Step0,
+ MovementAction_WalkInPlaceSlow_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_WalkInPlaceNormalDown[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkInPlaceNormalDown_Step0,
+ MovementAction_WalkInPlace_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_WalkInPlaceNormalUp[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkInPlaceNormalUp_Step0,
+ MovementAction_WalkInPlace_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_WalkInPlaceNormalLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkInPlaceNormalLeft_Step0,
+ MovementAction_WalkInPlace_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_WalkInPlaceNormalRight[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkInPlaceNormalRight_Step0,
+ MovementAction_WalkInPlace_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_WalkInPlaceFastDown[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkInPlaceFastDown_Step0,
+ MovementAction_WalkInPlace_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_WalkInPlaceFastUp[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkInPlaceFastUp_Step0,
+ MovementAction_WalkInPlace_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_WalkInPlaceFastLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkInPlaceFastLeft_Step0,
+ MovementAction_WalkInPlace_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_WalkInPlaceFastRight[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkInPlaceFastRight_Step0,
+ MovementAction_WalkInPlace_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_WalkInPlaceFastestDown[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkInPlaceFastestDown_Step0,
+ MovementAction_WalkInPlace_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_WalkInPlaceFastestUp[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkInPlaceFastestUp_Step0,
+ MovementAction_WalkInPlace_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_WalkInPlaceFastestLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkInPlaceFastestLeft_Step0,
+ MovementAction_WalkInPlace_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_WalkInPlaceFastestRight[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkInPlaceFastestRight_Step0,
+ MovementAction_WalkInPlace_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_RideWaterCurrentDown[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_RideWaterCurrentDown_Step0,
+ MovementAction_RideWaterCurrentDown_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_RideWaterCurrentUp[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_RideWaterCurrentUp_Step0,
+ MovementAction_RideWaterCurrentUp_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_RideWaterCurrentLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_RideWaterCurrentLeft_Step0,
+ MovementAction_RideWaterCurrentLeft_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_RideWaterCurrentRight[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_RideWaterCurrentRight_Step0,
+ MovementAction_RideWaterCurrentRight_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_WalkFastestDown[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkFastestDown_Step0,
+ MovementAction_WalkFastestDown_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_WalkFastestUp[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkFastestUp_Step0,
+ MovementAction_WalkFastestUp_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_WalkFastestLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkFastestLeft_Step0,
+ MovementAction_WalkFastestLeft_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_WalkFastestRight[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkFastestRight_Step0,
+ MovementAction_WalkFastestRight_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_SlideDown[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_SlideDown_Step0,
+ MovementAction_SlideDown_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_SlideUp[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_SlideUp_Step0,
+ MovementAction_SlideUp_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_SlideLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_SlideLeft_Step0,
+ MovementAction_SlideLeft_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_SlideRight[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_SlideRight_Step0,
+ MovementAction_SlideRight_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_PlayerRunDown[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_PlayerRunDown_Step0,
+ MovementAction_PlayerRunDown_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_PlayerRunUp[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_PlayerRunUp_Step0,
+ MovementAction_PlayerRunUp_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_PlayerRunLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_PlayerRunLeft_Step0,
+ MovementAction_PlayerRunLeft_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_PlayerRunRight[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_PlayerRunRight_Step0,
+ MovementAction_PlayerRunRight_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_StartAnimInDirection[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_StartAnimInDirection_Step0,
+ MovementAction_WaitSpriteAnim,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_JumpSpecialDown[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_JumpSpecialDown_Step0,
+ MovementAction_JumpSpecialDown_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_JumpSpecialUp[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_JumpSpecialUp_Step0,
+ MovementAction_JumpSpecialUp_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_JumpSpecialLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_JumpSpecialLeft_Step0,
+ MovementAction_JumpSpecialLeft_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_JumpSpecialRight[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_JumpSpecialRight_Step0,
+ MovementAction_JumpSpecialRight_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_FacePlayer[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_FacePlayer_Step0,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_FaceAwayPlayer[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_FaceAwayPlayer_Step0,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_LockFacingDirection[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_LockFacingDirection_Step0,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_UnlockFacingDirection[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_UnlockFacingDirection_Step0,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_JumpDown[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_JumpDown_Step0,
+ MovementAction_JumpDown_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_JumpUp[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_JumpUp_Step0,
+ MovementAction_JumpUp_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_JumpLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_JumpLeft_Step0,
+ MovementAction_JumpLeft_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_JumpRight[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_JumpRight_Step0,
+ MovementAction_JumpRight_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_JumpInPlaceDown[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_JumpInPlaceDown_Step0,
+ MovementAction_JumpInPlaceDown_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_JumpInPlaceUp[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_JumpInPlaceUp_Step0,
+ MovementAction_JumpInPlaceUp_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_JumpInPlaceLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_JumpInPlaceLeft_Step0,
+ MovementAction_JumpInPlaceLeft_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_JumpInPlaceRight[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_JumpInPlaceRight_Step0,
+ MovementAction_JumpInPlaceRight_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_JumpInPlaceDownUp[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_JumpInPlaceDownUp_Step0,
+ MovementAction_JumpInPlaceDownUp_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_JumpInPlaceUpDown[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_JumpInPlaceUpDown_Step0,
+ MovementAction_JumpInPlaceUpDown_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_JumpInPlaceLeftRight[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_JumpInPlaceLeftRight_Step0,
+ MovementAction_JumpInPlaceLeftRight_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_JumpInPlaceRightLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_JumpInPlaceRightLeft_Step0,
+ MovementAction_JumpInPlaceRightLeft_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_FaceOriginalDirection[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_FaceOriginalDirection_Step0,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_NurseJoyBowDown[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_NurseJoyBowDown_Step0,
+ MovementAction_WaitSpriteAnim,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_EnableJumpLandingGroundEffect[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_EnableJumpLandingGroundEffect_Step0,
+ MovementAction_Finish
+};
+
+u8 (*const gMovementActionFuncs_DisableJumpLandingGroundEffect[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_DisableJumpLandingGroundEffect_Step0,
+ MovementAction_Finish
+};
+
+u8 (*const gMovementActionFuncs_DisableAnimation[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_DisableAnimation_Step0,
+ MovementAction_Finish
+};
+
+u8 (*const gMovementActionFuncs_RestoreAnimation[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_RestoreAnimation_Step0,
+ MovementAction_Finish
+};
+
+u8 (*const gMovementActionFuncs_SetInvisible[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_SetInvisible_Step0,
+ MovementAction_Finish
+};
+
+u8 (*const gMovementActionFuncs_SetVisible[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_SetVisible_Step0,
+ MovementAction_Finish
+};
+
+u8 (*const gMovementActionFuncs_EmoteExclamationMark[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_EmoteExclamationMark_Step0,
+ MovementAction_Finish
+};
+
+u8 (*const gMovementActionFuncs_EmoteQuestionMark[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_EmoteQuestionMark_Step0,
+ MovementAction_Finish
+};
+
+u8 (*const gMovementActionFuncs_EmoteHeart[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_EmoteHeart_Step0,
+ MovementAction_Finish
+};
+
+u8 (*const gMovementActionFuncs_RevealTrainer[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_RevealTrainer_Step0,
+ MovementAction_RevealTrainer_Step1,
+ MovementAction_Finish
+};
+
+u8 (*const gMovementActionFuncs_RockSmashBreak[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_RockSmashBreak_Step0,
+ MovementAction_RockSmashBreak_Step1,
+ MovementAction_RockSmashBreak_Step2,
+ MovementAction_Finish
+};
+
+u8 (*const gMovementActionFuncs_CutTree[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_CutTree_Step0,
+ MovementAction_CutTree_Step1,
+ MovementAction_CutTree_Step2,
+ MovementAction_Finish
+};
+
+u8 (*const gMovementActionFuncs_SetFixedPriority[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_SetFixedPriority_Step0,
+ MovementAction_Finish
+};
+
+u8 (*const gMovementActionFuncs_ClearFixedPriority[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_ClearFixedPriority_Step0,
+ MovementAction_Finish
+};
+
+u8 (*const gMovementActionFuncs_InitAffineAnim[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_InitAffineAnim_Step0,
+ MovementAction_Finish
+};
+
+u8 (*const gMovementActionFuncs_ClearAffineAnim[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_ClearAffineAnim_Step0,
+ MovementAction_Finish
+};
+
+u8 (*const gMovementActionFuncs_WalkDownStartAffine[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkDownStartAffine_Step0,
+ MovementAction_WalkDownStartAffine_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_WalkDownAffine[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkDownAffine_Step0,
+ MovementAction_WalkDownAffine_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_AcroWheelieFaceDown[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroWheelieFaceDown_Step0,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_AcroWheelieFaceUp[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroWheelieFaceUp_Step0,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_AcroWheelieFaceLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroWheelieFaceLeft_Step0,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_AcroWheelieFaceRight[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroWheelieFaceRight_Step0,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_AcroPopWheelieDown[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroPopWheelieDown_Step0,
+ MovementAction_WaitSpriteAnim,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_AcroPopWheelieUp[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroPopWheelieUp_Step0,
+ MovementAction_WaitSpriteAnim,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_AcroPopWheelieLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroPopWheelieLeft_Step0,
+ MovementAction_WaitSpriteAnim,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_AcroPopWheelieRight[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroPopWheelieRight_Step0,
+ MovementAction_WaitSpriteAnim,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_AcroEndWheelieFaceDown[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroEndWheelieFaceDown_Step0,
+ MovementAction_WaitSpriteAnim,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_AcroEndWheelieFaceUp[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroEndWheelieFaceUp_Step0,
+ MovementAction_WaitSpriteAnim,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_AcroEndWheelieFaceLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroEndWheelieFaceLeft_Step0,
+ MovementAction_WaitSpriteAnim,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_AcroEndWheelieFaceRight[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroEndWheelieFaceRight_Step0,
+ MovementAction_WaitSpriteAnim,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_UnusedAcroActionDown[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_UnusedAcroActionDown_Step0,
+ MovementAction_WaitSpriteAnim,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_UnusedAcroActionUp[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_UnusedAcroActionUp_Step0,
+ MovementAction_WaitSpriteAnim,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_UnusedAcroActionLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_UnusedAcroActionLeft_Step0,
+ MovementAction_WaitSpriteAnim,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_UnusedAcroActionRight[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_UnusedAcroActionRight_Step0,
+ MovementAction_WaitSpriteAnim,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_AcroWheelieHopFaceDown[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroWheelieHopFaceDown_Step0,
+ MovementAction_AcroWheelieHopFaceDown_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_AcroWheelieHopFaceUp[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroWheelieHopFaceUp_Step0,
+ MovementAction_AcroWheelieHopFaceUp_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_AcroWheelieHopFaceLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroWheelieHopFaceLeft_Step0,
+ MovementAction_AcroWheelieHopFaceLeft_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_AcroWheelieHopFaceRight[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroWheelieHopFaceRight_Step0,
+ MovementAction_AcroWheelieHopFaceRight_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_AcroWheelieHopDown[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroWheelieHopDown_Step0,
+ MovementAction_AcroWheelieHopDown_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_AcroWheelieHopUp[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroWheelieHopUp_Step0,
+ MovementAction_AcroWheelieHopUp_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_AcroWheelieHopLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroWheelieHopLeft_Step0,
+ MovementAction_AcroWheelieHopLeft_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_AcroWheelieHopRight[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroWheelieHopRight_Step0,
+ MovementAction_AcroWheelieHopRight_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_AcroWheelieJumpDown[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroWheelieJumpDown_Step0,
+ MovementAction_AcroWheelieJumpDown_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_AcroWheelieJumpUp[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroWheelieJumpUp_Step0,
+ MovementAction_AcroWheelieJumpUp_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_AcroWheelieJumpLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroWheelieJumpLeft_Step0,
+ MovementAction_AcroWheelieJumpLeft_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_AcroWheelieJumpRight[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroWheelieJumpRight_Step0,
+ MovementAction_AcroWheelieJumpRight_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_AcroWheelieInPlaceDown[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroWheelieInPlaceDown_Step0,
+ MovementAction_WalkInPlace_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_AcroWheelieInPlaceUp[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroWheelieInPlaceUp_Step0,
+ MovementAction_WalkInPlace_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_AcroWheelieInPlaceLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroWheelieInPlaceLeft_Step0,
+ MovementAction_WalkInPlace_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_AcroWheelieInPlaceRight[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroWheelieInPlaceRight_Step0,
+ MovementAction_WalkInPlace_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_AcroPopWheelieMoveDown[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroPopWheelieMoveDown_Step0,
+ MovementAction_AcroPopWheelieMoveDown_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_AcroPopWheelieMoveUp[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroPopWheelieMoveUp_Step0,
+ MovementAction_AcroPopWheelieMoveUp_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_AcroPopWheelieMoveLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroPopWheelieMoveLeft_Step0,
+ MovementAction_AcroPopWheelieMoveLeft_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_AcroPopWheelieMoveRight[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroPopWheelieMoveRight_Step0,
+ MovementAction_AcroPopWheelieMoveRight_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_AcroWheelieMoveDown[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroWheelieMoveDown_Step0,
+ MovementAction_AcroWheelieMoveDown_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_AcroWheelieMoveUp[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroWheelieMoveUp_Step0,
+ MovementAction_AcroWheelieMoveUp_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_AcroWheelieMoveLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroWheelieMoveLeft_Step0,
+ MovementAction_AcroWheelieMoveLeft_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_AcroWheelieMoveRight[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroWheelieMoveRight_Step0,
+ MovementAction_AcroWheelieMoveRight_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_AcroEndWheelieMoveDown[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroEndWheelieMoveDown_Step0,
+ MovementAction_AcroEndWheelieMoveDown_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_AcroEndWheelieMoveUp[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroEndWheelieMoveUp_Step0,
+ MovementAction_AcroEndWheelieMoveUp_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_AcroEndWheelieMoveLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroEndWheelieMoveLeft_Step0,
+ MovementAction_AcroEndWheelieMoveLeft_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+u8 (*const gMovementActionFuncs_AcroEndWheelieMoveRight[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroEndWheelieMoveRight_Step0,
+ MovementAction_AcroEndWheelieMoveRight_Step1,
+ MovementAction_PauseSpriteAnim
+};
+
+#endif //POKERUBY_MOVEMENT_ACTION_FUNC_TABLES_H
diff --git a/src/data/field_event_obj/movement_type_func_tables.h b/src/data/field_event_obj/movement_type_func_tables.h
new file mode 100644
index 000000000..b038d5b20
--- /dev/null
+++ b/src/data/field_event_obj/movement_type_func_tables.h
@@ -0,0 +1,438 @@
+#ifndef POKERUBY_MOVEMENT_TYPE_FUNC_TABLES_H
+#define POKERUBY_MOVEMENT_TYPE_FUNC_TABLES_H
+
+u8 (*const gMovementTypeFuncs_WanderAround[])(struct EventObject *, struct Sprite *) = {
+ MovementType_WanderAround_Step0,
+ MovementType_WanderAround_Step1,
+ MovementType_WanderAround_Step2,
+ MovementType_WanderAround_Step3,
+ MovementType_WanderAround_Step4,
+ MovementType_WanderAround_Step5,
+ MovementType_WanderAround_Step6
+};
+
+const u8 gStandardDirections[] = {DIR_SOUTH, DIR_NORTH, DIR_WEST, DIR_EAST};
+
+u8 (*const gGetVectorDirectionFuncs[])(s16, s16, s16, s16) = {
+ GetVectorDirection,
+ GetLimitedVectorDirection_SouthNorth,
+ GetLimitedVectorDirection_WestEast,
+ GetLimitedVectorDirection_WestNorth,
+ GetLimitedVectorDirection_EastNorth,
+ GetLimitedVectorDirection_WestSouth,
+ GetLimitedVectorDirection_EastSouth,
+ GetLimitedVectorDirection_SouthNorthWest,
+ GetLimitedVectorDirection_SouthNorthEast,
+ GetLimitedVectorDirection_NorthWestEast,
+ GetLimitedVectorDirection_SouthWestEast
+};
+
+u8 (*const gMovementTypeFuncs_LookAround[])(struct EventObject *, struct Sprite *) = {
+ MovementType_LookAround_Step0,
+ MovementType_LookAround_Step1,
+ MovementType_LookAround_Step2,
+ MovementType_LookAround_Step3,
+ MovementType_LookAround_Step4,
+};
+
+u8 (*const gMovementTypeFuncs_WanderUpAndDown[])(struct EventObject *, struct Sprite *) = {
+ MovementType_WanderUpAndDown_Step0,
+ MovementType_WanderUpAndDown_Step1,
+ MovementType_WanderUpAndDown_Step2,
+ MovementType_WanderUpAndDown_Step3,
+ MovementType_WanderUpAndDown_Step4,
+ MovementType_WanderUpAndDown_Step5,
+ MovementType_WanderUpAndDown_Step6,
+};
+
+const u8 gUpAndDownDirections[] = {DIR_SOUTH, DIR_NORTH};
+
+u8 (*const gMovementTypeFuncs_WanderLeftAndRight[])(struct EventObject *, struct Sprite *) = {
+ MovementType_WanderLeftAndRight_Step0,
+ MovementType_WanderLeftAndRight_Step1,
+ MovementType_WanderLeftAndRight_Step2,
+ MovementType_WanderLeftAndRight_Step3,
+ MovementType_WanderLeftAndRight_Step4,
+ MovementType_WanderLeftAndRight_Step5,
+ MovementType_WanderLeftAndRight_Step6,
+};
+
+const u8 gLeftAndRightDirections[] = {DIR_WEST, DIR_EAST};
+
+u8 (*const gMovementTypeFuncs_FaceDirection[])(struct EventObject *, struct Sprite *) = {
+ MovementType_FaceDirection_Step0,
+ MovementType_FaceDirection_Step1,
+ MovementType_FaceDirection_Step2,
+};
+
+u8 (*const gMovementTypeFuncs_BerryTreeGrowth[])(struct EventObject *, struct Sprite *) = {
+ MovementType_BerryTreeGrowth_Step0,
+ MovementType_BerryTreeGrowth_Step1,
+ MovementType_BerryTreeGrowth_Step2,
+ MovementType_BerryTreeGrowth_Step3,
+ MovementType_BerryTreeGrowth_Step4,
+};
+
+u8 (*const gMovementTypeFuncs_FaceDownAndUp[])(struct EventObject *, struct Sprite *) = {
+ MovementType_FaceDownAndUp_Step0,
+ MovementType_FaceDownAndUp_Step1,
+ MovementType_FaceDownAndUp_Step2,
+ MovementType_FaceDownAndUp_Step3,
+ MovementType_FaceDownAndUp_Step4,
+};
+
+u8 (*const gMovementTypeFuncs_FaceLeftAndRight[])(struct EventObject *, struct Sprite *) = {
+ MovementType_FaceLeftAndRight_Step0,
+ MovementType_FaceLeftAndRight_Step1,
+ MovementType_FaceLeftAndRight_Step2,
+ MovementType_FaceLeftAndRight_Step3,
+ MovementType_FaceLeftAndRight_Step4,
+};
+
+u8 (*const gMovementTypeFuncs_FaceUpAndLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementType_FaceUpAndLeft_Step0,
+ MovementType_FaceUpAndLeft_Step1,
+ MovementType_FaceUpAndLeft_Step2,
+ MovementType_FaceUpAndLeft_Step3,
+ MovementType_FaceUpAndLeft_Step4,
+};
+
+const u8 gUpAndLeftDirections[] = {DIR_NORTH, DIR_WEST};
+
+u8 (*const gMovementTypeFuncs_FaceUpAndRight[])(struct EventObject *, struct Sprite *) = {
+ MovementType_FaceUpAndRight_Step0,
+ MovementType_FaceUpAndRight_Step1,
+ MovementType_FaceUpAndRight_Step2,
+ MovementType_FaceUpAndRight_Step3,
+ MovementType_FaceUpAndRight_Step4,
+};
+
+const u8 gUpAndRightDirections[] = {DIR_NORTH, DIR_EAST};
+
+u8 (*const gMovementTypeFuncs_FaceDownAndLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementType_FaceDownAndLeft_Step0,
+ MovementType_FaceDownAndLeft_Step1,
+ MovementType_FaceDownAndLeft_Step2,
+ MovementType_FaceDownAndLeft_Step3,
+ MovementType_FaceDownAndLeft_Step4,
+};
+
+const u8 gDownAndLeftDirections[] = {DIR_SOUTH, DIR_WEST};
+
+u8 (*const gMovementTypeFuncs_FaceDownAndRight[])(struct EventObject *, struct Sprite *) = {
+ MovementType_FaceDownAndRight_Step0,
+ MovementType_FaceDownAndRight_Step1,
+ MovementType_FaceDownAndRight_Step2,
+ MovementType_FaceDownAndRight_Step3,
+ MovementType_FaceDownAndRight_Step4,
+};
+
+const u8 gDownAndRightDirections[] = {DIR_SOUTH, DIR_EAST};
+
+u8 (*const gMovementTypeFuncs_FaceDownUpAndLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementType_FaceDownUpAndLeft_Step0,
+ MovementType_FaceDownUpAndLeft_Step1,
+ MovementType_FaceDownUpAndLeft_Step2,
+ MovementType_FaceDownUpAndLeft_Step3,
+ MovementType_FaceDownUpAndLeft_Step4,
+};
+
+const u8 gDownUpAndLeftDirections[] = {DIR_NORTH, DIR_SOUTH, DIR_WEST, DIR_SOUTH};
+
+u8 (*const gMovementTypeFuncs_FaceDownUpAndRight[])(struct EventObject *, struct Sprite *) = {
+ MovementType_FaceDownUpAndRight_Step0,
+ MovementType_FaceDownUpAndRight_Step1,
+ MovementType_FaceDownUpAndRight_Step2,
+ MovementType_FaceDownUpAndRight_Step3,
+ MovementType_FaceDownUpAndRight_Step4,
+};
+
+const u8 gDownUpAndRightDirections[] = {DIR_SOUTH, DIR_NORTH, DIR_EAST, DIR_SOUTH};
+
+u8 (*const gMovementTypeFuncs_FaceUpLeftAndRight[])(struct EventObject *, struct Sprite *) = {
+ MovementType_FaceUpLeftAndRight_Step0,
+ MovementType_FaceUpLeftAndRight_Step1,
+ MovementType_FaceUpLeftAndRight_Step2,
+ MovementType_FaceUpLeftAndRight_Step3,
+ MovementType_FaceUpLeftAndRight_Step4,
+};
+
+const u8 gUpLeftAndRightDirections[] = {DIR_NORTH, DIR_WEST, DIR_EAST, DIR_NORTH};
+
+u8 (*const gMovementTypeFuncs_FaceDownLeftAndRight[])(struct EventObject *, struct Sprite *) = {
+ MovementType_FaceDownLeftAndRight_Step0,
+ MovementType_FaceDownLeftAndRight_Step1,
+ MovementType_FaceDownLeftAndRight_Step2,
+ MovementType_FaceDownLeftAndRight_Step3,
+ MovementType_FaceDownLeftAndRight_Step4,
+};
+
+const u8 gDownLeftAndRightDirections[] = {DIR_WEST, DIR_EAST, DIR_SOUTH, DIR_SOUTH};
+
+u8 (*const gMovementTypeFuncs_RotateCounterclockwise[])(struct EventObject *, struct Sprite *) = {
+ MovementType_RotateCounterclockwise_Step0,
+ MovementType_RotateCounterclockwise_Step1,
+ MovementType_RotateCounterclockwise_Step2,
+ MovementType_RotateCounterclockwise_Step3,
+};
+
+const u8 gCounterclockwiseDirections[] = {DIR_SOUTH, DIR_EAST, DIR_WEST, DIR_SOUTH, DIR_NORTH};
+
+u8 (*const gMovementTypeFuncs_RotateClockwise[])(struct EventObject *, struct Sprite *) = {
+ MovementType_RotateClockwise_Step0,
+ MovementType_RotateClockwise_Step1,
+ MovementType_RotateClockwise_Step2,
+ MovementType_RotateClockwise_Step3,
+};
+
+const u8 gClockwiseDirections[] = {DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_NORTH, DIR_SOUTH};
+
+u8 (*const gMovementTypeFuncs_WalkBackAndForth[])(struct EventObject *, struct Sprite *) = {
+ MovementType_WalkBackAndForth_Step0,
+ MovementType_WalkBackAndForth_Step1,
+ MovementType_WalkBackAndForth_Step2,
+ MovementType_WalkBackAndForth_Step3,
+};
+
+u8 (*const gMovementTypeFuncs_WalkSequenceUpRightLeftDown[])(struct EventObject *, struct Sprite *) = {
+ MovementType_WalkSequence_Step0,
+ MovementType_WalkSequenceUpRightLeftDown_Step1,
+ MovementType_WalkSequence_Step2
+};
+
+const u8 gUpRightLeftDownDirections[] = {DIR_NORTH, DIR_EAST, DIR_WEST, DIR_SOUTH};
+
+u8 (*const gMovementTypeFuncs_WalkSequenceRightLeftDownUp[])(struct EventObject *, struct Sprite *) = {
+ MovementType_WalkSequence_Step0,
+ MovementType_WalkSequenceRightLeftDownUp_Step1,
+ MovementType_WalkSequence_Step2
+};
+
+const u8 gRightLeftDownUpDirections[] = {DIR_EAST, DIR_WEST, DIR_SOUTH, DIR_NORTH};
+
+u8 (*const gMovementTypeFuncs_WalkSequenceDownUpRightLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementType_WalkSequence_Step0,
+ MovementType_WalkSequenceDownUpRightLeft_Step1,
+ MovementType_WalkSequence_Step2
+};
+
+const u8 gDownUpRightLeftDirections[] = {DIR_SOUTH, DIR_NORTH, DIR_EAST, DIR_WEST};
+
+u8 (*const gMovementTypeFuncs_WalkSequenceLeftDownUpRight[])(struct EventObject *, struct Sprite *) = {
+ MovementType_WalkSequence_Step0,
+ MovementType_WalkSequenceLeftDownUpRight_Step1,
+ MovementType_WalkSequence_Step2
+};
+
+const u8 gLeftDownUpRightDirections[] = {DIR_WEST, DIR_SOUTH, DIR_NORTH, DIR_EAST};
+
+u8 (*const gMovementTypeFuncs_WalkSequenceUpLeftRightDown[])(struct EventObject *, struct Sprite *) = {
+ MovementType_WalkSequence_Step0,
+ MovementType_WalkSequenceUpLeftRightDown_Step1,
+ MovementType_WalkSequence_Step2
+};
+
+const u8 gUpLeftRightDownDirections[] = {DIR_NORTH, DIR_WEST, DIR_EAST, DIR_SOUTH};
+
+u8 (*const gMovementTypeFuncs_WalkSequenceLeftRightDownUp[])(struct EventObject *, struct Sprite *) = {
+ MovementType_WalkSequence_Step0,
+ MovementType_WalkSequenceLeftRightDownUp_Step1,
+ MovementType_WalkSequence_Step2
+};
+
+const u8 gLeftRightDownUpDirections[] = {DIR_WEST, DIR_EAST, DIR_SOUTH, DIR_NORTH};
+
+u8 (*const gMovementTypeFuncs_WalkSequenceDownUpLeftRight[])(struct EventObject *, struct Sprite *) = {
+ MovementType_WalkSequence_Step0,
+ MovementType_WalkSequenceDownUpLeftRight_Step1,
+ MovementType_WalkSequence_Step2
+};
+
+u8 (*const gMovementTypeFuncs_WalkSequenceRightDownUpLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementType_WalkSequence_Step0,
+ MovementType_WalkSequenceRightDownUpLeft_Step1,
+ MovementType_WalkSequence_Step2
+};
+
+const u8 gRightDownUpLeftDirections[] = {DIR_EAST, DIR_SOUTH, DIR_NORTH, DIR_WEST};
+
+u8 (*const gMovementTypeFuncs_WalkSequenceLeftUpDownRight[])(struct EventObject *, struct Sprite *) = {
+ MovementType_WalkSequence_Step0,
+ MovementType_WalkSequenceLeftUpDownRight_Step1,
+ MovementType_WalkSequence_Step2
+};
+
+const u8 gLeftUpDownRightDirections[] = {DIR_WEST, DIR_NORTH, DIR_SOUTH, DIR_EAST};
+
+u8 (*const gMovementTypeFuncs_WalkSequenceUpDownRightLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementType_WalkSequence_Step0,
+ MovementType_WalkSequenceUpDownRightLeft_Step1,
+ MovementType_WalkSequence_Step2
+};
+
+const u8 gUpDownRightLeftDirections[] = {DIR_NORTH, DIR_SOUTH, DIR_EAST, DIR_WEST};
+
+u8 (*const gMovementTypeFuncs_WalkSequenceRightLeftUpDown[])(struct EventObject *, struct Sprite *) = {
+ MovementType_WalkSequence_Step0,
+ MovementType_WalkSequenceRightLeftUpDown_Step1,
+ MovementType_WalkSequence_Step2
+};
+
+const u8 gRightLeftUpDownDirections[] = {DIR_EAST, DIR_WEST, DIR_NORTH, DIR_SOUTH};
+
+u8 (*const gMovementTypeFuncs_WalkSequenceDownRightLeftUp[])(struct EventObject *, struct Sprite *) = {
+ MovementType_WalkSequence_Step0,
+ MovementType_WalkSequenceDownRightLeftUp_Step1,
+ MovementType_WalkSequence_Step2
+};
+
+const u8 gDownRightLeftUpDirections[] = {DIR_SOUTH, DIR_EAST, DIR_WEST, DIR_NORTH};
+
+u8 (*const gMovementTypeFuncs_WalkSequenceRightUpDownLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementType_WalkSequence_Step0,
+ MovementType_WalkSequenceRightUpDownLeft_Step1,
+ MovementType_WalkSequence_Step2
+};
+
+const u8 gRightUpDownLeftDirections[] = {DIR_EAST, DIR_NORTH, DIR_SOUTH, DIR_WEST};
+
+u8 (*const gMovementTypeFuncs_WalkSequenceUpDownLeftRight[])(struct EventObject *, struct Sprite *) = {
+ MovementType_WalkSequence_Step0,
+ MovementType_WalkSequenceUpDownLeftRight_Step1,
+ MovementType_WalkSequence_Step2
+};
+
+const u8 gUpDownLeftRightDirections[] = {DIR_NORTH, DIR_SOUTH, DIR_WEST, DIR_EAST};
+
+u8 (*const gMovementTypeFuncs_WalkSequenceLeftRightUpDown[])(struct EventObject *, struct Sprite *) = {
+ MovementType_WalkSequence_Step0,
+ MovementType_WalkSequenceLeftRightUpDown_Step1,
+ MovementType_WalkSequence_Step2
+};
+
+const u8 gLeftRightUpDownDirections[] = {DIR_WEST, DIR_EAST, DIR_NORTH, DIR_SOUTH};
+
+u8 (*const gMovementTypeFuncs_WalkSequenceDownLeftRightUp[])(struct EventObject *, struct Sprite *) = {
+ MovementType_WalkSequence_Step0,
+ MovementType_WalkSequenceDownLeftRightUp_Step1,
+ MovementType_WalkSequence_Step2
+};
+
+const u8 gDownLeftRightUpDirections[] = {DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_NORTH};
+
+u8 (*const gMovementTypeFuncs_WalkSequenceUpLeftDownRight[])(struct EventObject *, struct Sprite *) = {
+ MovementType_WalkSequence_Step0,
+ MovementType_WalkSequenceUpLeftDownRight_Step1,
+ MovementType_WalkSequence_Step2
+};
+
+const u8 gUpLeftDownRightDirections[] = {DIR_NORTH, DIR_WEST, DIR_SOUTH, DIR_EAST};
+
+u8 (*const gMovementTypeFuncs_WalkSequenceDownRightUpLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementType_WalkSequence_Step0,
+ MovementType_WalkSequenceDownRightUpLeft_Step1,
+ MovementType_WalkSequence_Step2
+};
+
+const u8 gDownRightUpLeftDirections[] = {DIR_SOUTH, DIR_EAST, DIR_NORTH, DIR_WEST};
+
+u8 (*const gMovementTypeFuncs_WalkSequenceLeftDownRightUp[])(struct EventObject *, struct Sprite *) = {
+ MovementType_WalkSequence_Step0,
+ MovementType_WalkSequenceLeftDownRightUp_Step1,
+ MovementType_WalkSequence_Step2
+};
+
+const u8 gLeftDownRightUpDirections[] = {DIR_WEST, DIR_SOUTH, DIR_EAST, DIR_NORTH};
+
+u8 (*const gMovementTypeFuncs_WalkSequenceRightUpLeftDown[])(struct EventObject *, struct Sprite *) = {
+ MovementType_WalkSequence_Step0,
+ MovementType_WalkSequenceRightUpLeftDown_Step1,
+ MovementType_WalkSequence_Step2
+};
+
+const u8 gRightUpLeftDownDirections[] = {DIR_EAST, DIR_NORTH, DIR_WEST, DIR_SOUTH};
+
+u8 (*const gMovementTypeFuncs_WalkSequenceUpRightDownLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementType_WalkSequence_Step0,
+ MovementType_WalkSequenceUpRightDownLeft_Step1,
+ MovementType_WalkSequence_Step2
+};
+
+const u8 gUpRightDownLeftDirections[] = {DIR_NORTH, DIR_EAST, DIR_SOUTH, DIR_WEST};
+
+u8 (*const gMovementTypeFuncs_WalkSequenceDownLeftUpRight[])(struct EventObject *, struct Sprite *) = {
+ MovementType_WalkSequence_Step0,
+ MovementType_WalkSequenceDownLeftUpRight_Step1,
+ MovementType_WalkSequence_Step2
+};
+
+const u8 gDownLeftUpRightDirections[] = {DIR_SOUTH, DIR_WEST, DIR_NORTH, DIR_EAST};
+
+u8 (*const gMovementTypeFuncs_WalkSequenceLeftUpRightDown[])(struct EventObject *, struct Sprite *) = {
+ MovementType_WalkSequence_Step0,
+ MovementType_WalkSequenceLeftUpRightDown_Step1,
+ MovementType_WalkSequence_Step2
+};
+
+const u8 gLeftUpRightDownDirections[] = {DIR_WEST, DIR_NORTH, DIR_EAST, DIR_SOUTH};
+
+u8 (*const gMovementTypeFuncs_WalkSequenceRightDownLeftUp[])(struct EventObject *, struct Sprite *) = {
+ MovementType_WalkSequence_Step0,
+ MovementType_WalkSequenceRightDownLeftUp_Step1,
+ MovementType_WalkSequence_Step2
+};
+
+const u8 gRightDownLeftUpDirections[] = {DIR_EAST, DIR_SOUTH, DIR_WEST, DIR_NORTH};
+
+u8 (*const gMovementTypeFuncs_CopyPlayer[])(struct EventObject *, struct Sprite *) = {
+ MovementType_CopyPlayer_Step0,
+ MovementType_CopyPlayer_Step1,
+ MovementType_CopyPlayer_Step2
+};
+
+u8 (*const gCopyPlayerMovementFuncs[])(struct EventObject *, struct Sprite *, u8, bool8(u8)) = {
+ CopyablePlayerMovement_None,
+ CopyablePlayerMovement_FaceDirection,
+ CopyablePlayerMovement_GoSpeed0,
+ CopyablePlayerMovement_GoSpeed1,
+ CopyablePlayerMovement_GoSpeed2,
+ CopyablePlayerMovement_Slide,
+ cph_IM_DIFFERENT,
+ CopyablePlayerMovement_GoSpeed4,
+ CopyablePlayerMovement_Jump,
+ CopyablePlayerMovement_None,
+ CopyablePlayerMovement_None
+};
+
+u8 (*const gMovementTypeFuncs_CopyPlayerInGrass[])(struct EventObject *, struct Sprite *) = {
+ MovementType_CopyPlayer_Step0,
+ MovementType_CopyPlayerInGrass_Step1,
+ MovementType_CopyPlayer_Step2
+};
+
+u8 (*const gMovementTypeFuncs_Hidden[])(struct EventObject *, struct Sprite *) = {
+ MovementType_Hidden_Step0
+};
+
+u8 (*const gMovementTypeFuncs_WalkInPlace[])(struct EventObject *, struct Sprite *) = {
+ MovementType_WalkInPlace_Step0,
+ MovementType_MoveInPlace_Step1
+};
+
+u8 (*const gMovementTypeFuncs_JogInPlace[])(struct EventObject *, struct Sprite *) = {
+ MovementType_JogInPlace_Step0,
+ MovementType_MoveInPlace_Step1
+};
+
+u8 (*const gMovementTypeFuncs_RunInPlace[])(struct EventObject *, struct Sprite *) = {
+ MovementType_RunInPlace_Step0,
+ MovementType_MoveInPlace_Step1
+};
+
+u8 (*const gMovementTypeFuncs_Invisible[])(struct EventObject *, struct Sprite *) = {
+ MovementType_Invisible_Step0,
+ MovementType_Invisible_Step1,
+ MovementType_Invisible_Step2
+};
+
+#endif //POKERUBY_MOVEMENT_TYPE_FUNC_TABLES_H
diff --git a/src/data/field_map_obj/anim_func_ptrs.h b/src/data/field_map_obj/anim_func_ptrs.h
deleted file mode 100644
index 1d1fac71e..000000000
--- a/src/data/field_map_obj/anim_func_ptrs.h
+++ /dev/null
@@ -1,1519 +0,0 @@
-//
-
-//
-
-#ifndef POKERUBY_ANIM_FUNC_PTRS_H
-#define POKERUBY_ANIM_FUNC_PTRS_H
-
-u8 sub_8060CE0(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8060CF0(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8060D00(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8060D10(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8060F3C(struct MapObject *, struct Sprite *);
-u8 sub_8060F5C(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8060F7C(struct MapObject *, struct Sprite *);
-u8 sub_8060F9C(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8060FBC(struct MapObject *, struct Sprite *);
-u8 sub_8060FDC(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8060FFC(struct MapObject *, struct Sprite *);
-u8 sub_806101C(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_806103C(struct MapObject *, struct Sprite *);
-u8 sub_806105C(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_806107C(struct MapObject *, struct Sprite *);
-u8 sub_806109C(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_80610BC(struct MapObject *, struct Sprite *);
-u8 sub_80610DC(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_80610FC(struct MapObject *, struct Sprite *);
-u8 sub_806111C(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_80613A8(struct MapObject *, struct Sprite *);
-u8 sub_80613D4(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8061400(struct MapObject *, struct Sprite *);
-u8 sub_806142C(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8061458(struct MapObject *, struct Sprite *);
-u8 sub_8061484(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_80614B0(struct MapObject *, struct Sprite *);
-u8 sub_80614DC(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_806152C(struct MapObject *, struct Sprite *);
-u8 sub_8061510(struct MapObject *, struct Sprite *);
-u8 sub_8063470(struct MapObject *, struct Sprite *);
-u8 sub_806154C(struct MapObject *, struct Sprite *);
-u8 sub_8061510(struct MapObject *, struct Sprite *);
-u8 sub_8063470(struct MapObject *, struct Sprite *);
-u8 sub_806156C(struct MapObject *, struct Sprite *);
-u8 sub_8061510(struct MapObject *, struct Sprite *);
-u8 sub_8063470(struct MapObject *, struct Sprite *);
-u8 sub_806158C(struct MapObject *, struct Sprite *);
-u8 sub_8061510(struct MapObject *, struct Sprite *);
-u8 sub_8063470(struct MapObject *, struct Sprite *);
-u8 sub_80615AC(struct MapObject *, struct Sprite *);
-u8 sub_8061510(struct MapObject *, struct Sprite *);
-u8 sub_8063470(struct MapObject *, struct Sprite *);
-u8 sub_80615CC(struct MapObject *, struct Sprite *);
-u8 sub_80615EC(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_806160C(struct MapObject *, struct Sprite *);
-u8 sub_806162C(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_806164C(struct MapObject *, struct Sprite *);
-u8 sub_806166C(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_806168C(struct MapObject *, struct Sprite *);
-u8 sub_80616AC(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8061778(struct MapObject *, struct Sprite *);
-u8 sub_806173C(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_80617B0(struct MapObject *, struct Sprite *);
-u8 sub_806173C(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_80617E8(struct MapObject *, struct Sprite *);
-u8 sub_806173C(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8061820(struct MapObject *, struct Sprite *);
-u8 sub_806173C(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8061858(struct MapObject *, struct Sprite *);
-u8 sub_8061714(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8061890(struct MapObject *, struct Sprite *);
-u8 sub_8061714(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_80618C8(struct MapObject *, struct Sprite *);
-u8 sub_8061714(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8061900(struct MapObject *, struct Sprite *);
-u8 sub_8061714(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8061938(struct MapObject *, struct Sprite *);
-u8 sub_8061714(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8061970(struct MapObject *, struct Sprite *);
-u8 sub_8061714(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_80619A8(struct MapObject *, struct Sprite *);
-u8 sub_8061714(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_80619E0(struct MapObject *, struct Sprite *);
-u8 sub_8061714(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8061A18(struct MapObject *, struct Sprite *);
-u8 sub_8061714(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8061A50(struct MapObject *, struct Sprite *);
-u8 sub_8061714(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8061A88(struct MapObject *, struct Sprite *);
-u8 sub_8061714(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8061AC0(struct MapObject *, struct Sprite *);
-u8 sub_8061714(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8061AF8(struct MapObject *, struct Sprite *);
-u8 sub_8061B18(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8061B38(struct MapObject *, struct Sprite *);
-u8 sub_8061B58(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8061B78(struct MapObject *, struct Sprite *);
-u8 sub_8061B98(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8061BB8(struct MapObject *, struct Sprite *);
-u8 sub_8061BD8(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8061BF8(struct MapObject *, struct Sprite *);
-u8 sub_8061C18(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8061C38(struct MapObject *, struct Sprite *);
-u8 sub_8061C58(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8061C78(struct MapObject *, struct Sprite *);
-u8 sub_8061C98(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8061CB8(struct MapObject *, struct Sprite *);
-u8 sub_8061CD8(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8061CF8(struct MapObject *, struct Sprite *);
-u8 sub_8061D18(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8061D38(struct MapObject *, struct Sprite *);
-u8 sub_8061D58(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8061D78(struct MapObject *, struct Sprite *);
-u8 sub_8061D98(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8061DB8(struct MapObject *, struct Sprite *);
-u8 sub_8061DD8(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 do_run_south_anim(struct MapObject *, struct Sprite *);
-u8 sub_8061E18(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 do_run_north_anim(struct MapObject *, struct Sprite *);
-u8 sub_8061E58(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 do_run_west_anim(struct MapObject *, struct Sprite *);
-u8 sub_8061E98(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 do_run_east_anim(struct MapObject *, struct Sprite *);
-u8 sub_8061ED8(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8061F24(struct MapObject *, struct Sprite *);
-u8 sub_8061F3C(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8061F90(struct MapObject *, struct Sprite *);
-u8 sub_8061FB0(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8061FD8(struct MapObject *, struct Sprite *);
-u8 sub_8061FF8(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8062020(struct MapObject *, struct Sprite *);
-u8 sub_8062040(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8062068(struct MapObject *, struct Sprite *);
-u8 sub_8062088(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_80620B0(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_806210C(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8062170(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8062180(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8062190(struct MapObject *, struct Sprite *);
-u8 sub_80621BC(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_80621E8(struct MapObject *, struct Sprite *);
-u8 sub_8062214(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8062240(struct MapObject *, struct Sprite *);
-u8 sub_806226C(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8062298(struct MapObject *, struct Sprite *);
-u8 sub_80622C4(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_80622F0(struct MapObject *, struct Sprite *);
-u8 sub_806231C(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8062348(struct MapObject *, struct Sprite *);
-u8 sub_8062374(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_80623A0(struct MapObject *, struct Sprite *);
-u8 sub_80623CC(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_80623F8(struct MapObject *, struct Sprite *);
-u8 sub_8062424(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8062450(struct MapObject *, struct Sprite *);
-u8 sub_806247C(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_80624A8(struct MapObject *, struct Sprite *);
-u8 sub_80624D4(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8062500(struct MapObject *, struct Sprite *);
-u8 sub_806252C(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8062558(struct MapObject *, struct Sprite *);
-u8 sub_8062584(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_80625B0(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_80625C8(struct MapObject *, struct Sprite *);
-u8 sub_8061F3C(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_80625D8(struct MapObject *, struct Sprite *);
-u8 sub_8063470(struct MapObject *, struct Sprite *);
-u8 sub_80625E8(struct MapObject *, struct Sprite *);
-u8 sub_8063470(struct MapObject *, struct Sprite *);
-u8 sub_80625F8(struct MapObject *, struct Sprite *);
-u8 sub_8063470(struct MapObject *, struct Sprite *);
-u8 sub_8062608(struct MapObject *, struct Sprite *);
-u8 sub_8063470(struct MapObject *, struct Sprite *);
-u8 sub_8062634(struct MapObject *, struct Sprite *);
-u8 sub_8063470(struct MapObject *, struct Sprite *);
-u8 sub_8062644(struct MapObject *, struct Sprite *);
-u8 sub_8063470(struct MapObject *, struct Sprite *);
-u8 do_exclamation_mark_bubble_1(struct MapObject *, struct Sprite *);
-u8 sub_8063470(struct MapObject *, struct Sprite *);
-u8 do_exclamation_mark_bubble_2(struct MapObject *, struct Sprite *);
-u8 sub_8063470(struct MapObject *, struct Sprite *);
-u8 do_heart_bubble(struct MapObject *, struct Sprite *);
-u8 sub_8063470(struct MapObject *, struct Sprite *);
-u8 sub_80626C0(struct MapObject *, struct Sprite *);
-u8 sub_8062704(struct MapObject *, struct Sprite *);
-u8 sub_8063470(struct MapObject *, struct Sprite *);
-u8 sub_8062724(struct MapObject *, struct Sprite *);
-u8 sub_8062740(struct MapObject *, struct Sprite *);
-u8 sub_8062764(struct MapObject *, struct Sprite *);
-u8 sub_8063470(struct MapObject *, struct Sprite *);
-u8 sub_80627A0(struct MapObject *, struct Sprite *);
-u8 sub_80627BC(struct MapObject *, struct Sprite *);
-u8 sub_80627E0(struct MapObject *, struct Sprite *);
-u8 sub_8063470(struct MapObject *, struct Sprite *);
-u8 sub_806281C(struct MapObject *, struct Sprite *);
-u8 sub_8063470(struct MapObject *, struct Sprite *);
-u8 sub_806282C(struct MapObject *, struct Sprite *);
-u8 sub_8063470(struct MapObject *, struct Sprite *);
-u8 sub_806283C(struct MapObject *, struct Sprite *);
-u8 sub_8063470(struct MapObject *, struct Sprite *);
-u8 sub_806286C(struct MapObject *, struct Sprite *);
-u8 sub_8063470(struct MapObject *, struct Sprite *);
-u8 sub_806289C(struct MapObject *, struct Sprite *);
-u8 sub_80628D0(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_80628FC(struct MapObject *, struct Sprite *);
-u8 sub_8062930(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_806299C(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_80629AC(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_80629BC(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_80629CC(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_80629DC(struct MapObject *, struct Sprite *);
-u8 sub_8061F3C(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8062A00(struct MapObject *, struct Sprite *);
-u8 sub_8061F3C(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8062A24(struct MapObject *, struct Sprite *);
-u8 sub_8061F3C(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8062A48(struct MapObject *, struct Sprite *);
-u8 sub_8061F3C(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8062A6C(struct MapObject *, struct Sprite *);
-u8 sub_8061F3C(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8062A90(struct MapObject *, struct Sprite *);
-u8 sub_8061F3C(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8062AB4(struct MapObject *, struct Sprite *);
-u8 sub_8061F3C(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8062AD8(struct MapObject *, struct Sprite *);
-u8 sub_8061F3C(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8062AFC(struct MapObject *, struct Sprite *);
-u8 sub_8061F3C(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8062B20(struct MapObject *, struct Sprite *);
-u8 sub_8061F3C(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8062B44(struct MapObject *, struct Sprite *);
-u8 sub_8061F3C(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8062B68(struct MapObject *, struct Sprite *);
-u8 sub_8061F3C(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8062BD0(struct MapObject *, struct Sprite *);
-u8 sub_8062BFC(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8062C28(struct MapObject *, struct Sprite *);
-u8 sub_8062C54(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8062C80(struct MapObject *, struct Sprite *);
-u8 sub_8062CAC(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8062CD8(struct MapObject *, struct Sprite *);
-u8 sub_8062D04(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8062D30(struct MapObject *, struct Sprite *);
-u8 sub_8062D5C(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8062D88(struct MapObject *, struct Sprite *);
-u8 sub_8062DB4(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8062DE0(struct MapObject *, struct Sprite *);
-u8 sub_8062E0C(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8062E38(struct MapObject *, struct Sprite *);
-u8 sub_8062E64(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8062E90(struct MapObject *, struct Sprite *);
-u8 sub_8062EBC(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8062EE8(struct MapObject *, struct Sprite *);
-u8 sub_8062F14(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8062F40(struct MapObject *, struct Sprite *);
-u8 sub_8062F6C(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8062F98(struct MapObject *, struct Sprite *);
-u8 sub_8062FC4(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8062FF0(struct MapObject *, struct Sprite *);
-u8 sub_8061714(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8063028(struct MapObject *, struct Sprite *);
-u8 sub_8061714(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8063060(struct MapObject *, struct Sprite *);
-u8 sub_8061714(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8063098(struct MapObject *, struct Sprite *);
-u8 sub_8061714(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8063108(struct MapObject *, struct Sprite *);
-u8 sub_8063128(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8063148(struct MapObject *, struct Sprite *);
-u8 sub_8063168(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8063188(struct MapObject *, struct Sprite *);
-u8 sub_80631A8(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_80631C8(struct MapObject *, struct Sprite *);
-u8 sub_80631E8(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8063238(struct MapObject *, struct Sprite *);
-u8 sub_8063258(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8063278(struct MapObject *, struct Sprite *);
-u8 sub_8063298(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_80632B8(struct MapObject *, struct Sprite *);
-u8 sub_80632D8(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_80632F8(struct MapObject *, struct Sprite *);
-u8 sub_8063318(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8063370(struct MapObject *, struct Sprite *);
-u8 sub_8063390(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_80633B0(struct MapObject *, struct Sprite *);
-u8 sub_80633D0(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_80633F0(struct MapObject *, struct Sprite *);
-u8 sub_8063410(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-u8 sub_8063430(struct MapObject *, struct Sprite *);
-u8 sub_8063450(struct MapObject *, struct Sprite *);
-u8 sub_8063474(struct MapObject *, struct Sprite *);
-
-u8 (*const Unknown_83759A0[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_83759A8[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_83759B0[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_83759B8[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_83759D4[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_83759E0[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_83759EC[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_83759F8[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375A04[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375A10[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375A1C[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375A28[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375A40[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375A4C[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375A58[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375A64[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375A70[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375A7C[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375A88[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375A94[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375AA0[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375AAC[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375AB8[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375AC4[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375AD0[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375ADC[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375AE8[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375AF4[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375B00[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375B0C[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375B18[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375B24[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375B30[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375B3C[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375B48[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375B54[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375B60[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375B6C[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375B78[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375B84[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375B90[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375B9C[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375BA8[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375BB4[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375BC0[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375BCC[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375BD8[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375BE4[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375BF0[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375BFC[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375C08[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375C14[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375C20[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375C2C[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375C38[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375C44[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375C50[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375C5C[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375C68[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375C74[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375C80[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375C8C[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375C98[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375CA0[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375CA8[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375CB0[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375CB8[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375CC4[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375CD0[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375CDC[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375CE8[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375CF4[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375D00[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375D0C[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375D18[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375D24[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375D30[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375D3C[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375D48[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375D50[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375D5C[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375D64[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375D6C[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375D74[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375D7C[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375D84[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375D8C[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375D94[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375D9C[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375DA4[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375DB0[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375DC0[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375DD0[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375DD8[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375DE0[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375DE8[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375DF0[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375DFC[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375E08[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375E10[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375E18[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375E20[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375E28[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375E34[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375E40[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375E4C[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375E58[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375E64[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375E70[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375E7C[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375EB8[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375EC4[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375ED0[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375EDC[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375EE8[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375EF4[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375F00[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375F0C[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375F18[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375F24[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375F30[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375F3C[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375F48[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375F54[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375F60[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375F6C[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375F78[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375F84[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375F90[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375F9C[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375FA8[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375FB4[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375FC0[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375FCC[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375FD8[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375FE4[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375FF0[])(struct MapObject *, struct Sprite *);
-u8 (*const Unknown_8375FFC[])(struct MapObject *, struct Sprite *);
-
-u8 (*const *const gUnknown_08375778[])(struct MapObject *, struct Sprite *) = {
- Unknown_83759A0,
- Unknown_83759A8,
- Unknown_83759B0,
- Unknown_83759B8,
- Unknown_83759D4,
- Unknown_83759E0,
- Unknown_83759EC,
- Unknown_83759F8,
- Unknown_8375A04,
- Unknown_8375A10,
- Unknown_8375A1C,
- Unknown_8375A28,
- Unknown_8375A40,
- Unknown_8375A4C,
- Unknown_8375A58,
- Unknown_8375A64,
- Unknown_8375A70,
- Unknown_8375A7C,
- Unknown_8375A88,
- Unknown_8375A94,
- Unknown_8375AA0,
- Unknown_8375AAC,
- Unknown_8375AB8,
- Unknown_8375AC4,
- Unknown_8375AD0,
- Unknown_8375ADC,
- Unknown_8375AE8,
- Unknown_8375AF4,
- Unknown_8375B00,
- Unknown_8375B0C,
- Unknown_8375B18,
- Unknown_8375B24,
- Unknown_8375B30,
- Unknown_8375B3C,
- Unknown_8375B48,
- Unknown_8375B54,
- Unknown_8375B60,
- Unknown_8375B6C,
- Unknown_8375B78,
- Unknown_8375B84,
- Unknown_8375B90,
- Unknown_8375B9C,
- Unknown_8375BA8,
- Unknown_8375BB4,
- Unknown_8375BC0,
- Unknown_8375BCC,
- Unknown_8375BD8,
- Unknown_8375BE4,
- Unknown_8375BF0,
- Unknown_8375BFC,
- Unknown_8375C08,
- Unknown_8375C14,
- Unknown_8375C20,
- Unknown_8375C2C,
- Unknown_8375C38,
- Unknown_8375C44,
- Unknown_8375C50,
- Unknown_8375C5C,
- Unknown_8375C68,
- Unknown_8375C74,
- Unknown_8375C80,
- Unknown_8375C8C,
- Unknown_8375C98,
- Unknown_8375CA0,
- Unknown_8375CA8,
- Unknown_8375CB0,
- Unknown_8375CB8,
- Unknown_8375CC4,
- Unknown_8375CD0,
- Unknown_8375CDC,
- Unknown_8375CE8,
- Unknown_8375CF4,
- Unknown_8375D00,
- Unknown_8375D0C,
- Unknown_8375D18,
- Unknown_8375D24,
- Unknown_8375D30,
- Unknown_8375D3C,
- Unknown_8375D48,
- Unknown_8375D50,
- Unknown_8375D5C,
- Unknown_8375D64,
- Unknown_8375D6C,
- Unknown_8375D74,
- Unknown_8375D7C,
- Unknown_8375D84,
- Unknown_8375D8C,
- Unknown_8375D94,
- Unknown_8375D9C,
- Unknown_8375DA4,
- Unknown_8375DB0,
- Unknown_8375DC0,
- Unknown_8375DD0,
- Unknown_8375DD8,
- Unknown_8375DE0,
- Unknown_8375DE8,
- Unknown_8375DF0,
- Unknown_8375DFC,
- Unknown_8375E08,
- Unknown_8375E10,
- Unknown_8375E18,
- Unknown_8375E20,
- Unknown_8375E28,
- Unknown_8375E34,
- Unknown_8375E40,
- Unknown_8375E4C,
- Unknown_8375E58,
- Unknown_8375E64,
- Unknown_8375E70,
- Unknown_8375E7C,
- Unknown_8375EB8,
- Unknown_8375EC4,
- Unknown_8375ED0,
- Unknown_8375EDC,
- Unknown_8375EE8,
- Unknown_8375EF4,
- Unknown_8375F00,
- Unknown_8375F0C,
- Unknown_8375F18,
- Unknown_8375F24,
- Unknown_8375F30,
- Unknown_8375F3C,
- Unknown_8375F48,
- Unknown_8375F54,
- Unknown_8375F60,
- Unknown_8375F6C,
- Unknown_8375F78,
- Unknown_8375F84,
- Unknown_8375F90,
- Unknown_8375F9C,
- Unknown_8375FA8,
- Unknown_8375FB4,
- Unknown_8375FC0,
- Unknown_8375FCC,
- Unknown_8375FD8,
- Unknown_8375FE4,
- Unknown_8375FF0,
- Unknown_8375FFC
-};
-
-
-u8 (*const Unknown_83759A0[])(struct MapObject *, struct Sprite *) = {
- sub_8060CE0,
- sub_8063474
-};
-
-u8 (*const Unknown_83759A8[])(struct MapObject *, struct Sprite *) = {
- sub_8060CF0,
- sub_8063474
-};
-
-u8 (*const Unknown_83759B0[])(struct MapObject *, struct Sprite *) = {
- sub_8060D00,
- sub_8063474
-};
-
-u8 (*const Unknown_83759B8[])(struct MapObject *, struct Sprite *) = {
- sub_8060D10,
- sub_8063474
-};
-
-u8 (*const gUnknown_083759C0[])(u8) = {
- get_go_image_anim_num,
- get_go_fast_image_anim_num,
- get_go_fast_image_anim_num,
- get_go_faster_image_anim_num,
- sub_805FD78
-};
-
-u8 (*const Unknown_83759D4[])(struct MapObject *, struct Sprite *) = {
- sub_8060F3C,
- sub_8060F5C,
- sub_8063474
-};
-
-u8 (*const Unknown_83759E0[])(struct MapObject *, struct Sprite *) = {
- sub_8060F7C,
- sub_8060F9C,
- sub_8063474
-};
-
-u8 (*const Unknown_83759EC[])(struct MapObject *, struct Sprite *) = {
- sub_8060FBC,
- sub_8060FDC,
- sub_8063474
-};
-
-u8 (*const Unknown_83759F8[])(struct MapObject *, struct Sprite *) = {
- sub_8060FFC,
- sub_806101C,
- sub_8063474
-};
-
-u8 (*const Unknown_8375A04[])(struct MapObject *, struct Sprite *) = {
- sub_806103C,
- sub_806105C,
- sub_8063474
-};
-
-u8 (*const Unknown_8375A10[])(struct MapObject *, struct Sprite *) = {
- sub_806107C,
- sub_806109C,
- sub_8063474
-};
-
-u8 (*const Unknown_8375A1C[])(struct MapObject *, struct Sprite *) = {
- sub_80610BC,
- sub_80610DC,
- sub_8063474
-};
-
-u8 (*const Unknown_8375A28[])(struct MapObject *, struct Sprite *) = {
- sub_80610FC,
- sub_806111C,
- sub_8063474
-};
-
-const s16 gUnknown_08375A34[] = {0, 1, 1};
-const s16 gUnknown_08375A3A[] = {0, 0, 1};
-
-u8 (*const Unknown_8375A40[])(struct MapObject *, struct Sprite *) = {
- sub_80613A8,
- sub_80613D4,
- sub_8063474
-};
-
-u8 (*const Unknown_8375A4C[])(struct MapObject *, struct Sprite *) = {
- sub_8061400,
- sub_806142C,
- sub_8063474
-};
-
-u8 (*const Unknown_8375A58[])(struct MapObject *, struct Sprite *) = {
- sub_8061458,
- sub_8061484,
- sub_8063474
-};
-
-u8 (*const Unknown_8375A64[])(struct MapObject *, struct Sprite *) = {
- sub_80614B0,
- sub_80614DC,
- sub_8063474
-};
-
-u8 (*const Unknown_8375A70[])(struct MapObject *, struct Sprite *) = {
- sub_806152C,
- sub_8061510,
- sub_8063470
-};
-
-u8 (*const Unknown_8375A7C[])(struct MapObject *, struct Sprite *) = {
- sub_806154C,
- sub_8061510,
- sub_8063470
-};
-
-u8 (*const Unknown_8375A88[])(struct MapObject *, struct Sprite *) = {
- sub_806156C,
- sub_8061510,
- sub_8063470
-};
-
-u8 (*const Unknown_8375A94[])(struct MapObject *, struct Sprite *) = {
- sub_806158C,
- sub_8061510,
- sub_8063470
-};
-
-u8 (*const Unknown_8375AA0[])(struct MapObject *, struct Sprite *) = {
- sub_80615AC,
- sub_8061510,
- sub_8063470
-};
-
-u8 (*const Unknown_8375AAC[])(struct MapObject *, struct Sprite *) = {
- sub_80615CC,
- sub_80615EC,
- sub_8063474
-};
-
-u8 (*const Unknown_8375AB8[])(struct MapObject *, struct Sprite *) = {
- sub_806160C,
- sub_806162C,
- sub_8063474
-};
-
-u8 (*const Unknown_8375AC4[])(struct MapObject *, struct Sprite *) = {
- sub_806164C,
- sub_806166C,
- sub_8063474
-};
-
-u8 (*const Unknown_8375AD0[])(struct MapObject *, struct Sprite *) = {
- sub_806168C,
- sub_80616AC,
- sub_8063474
-};
-
-u8 (*const Unknown_8375ADC[])(struct MapObject *, struct Sprite *) = {
- sub_8061778,
- sub_806173C,
- sub_8063474
-};
-
-u8 (*const Unknown_8375AE8[])(struct MapObject *, struct Sprite *) = {
- sub_80617B0,
- sub_806173C,
- sub_8063474
-};
-
-u8 (*const Unknown_8375AF4[])(struct MapObject *, struct Sprite *) = {
- sub_80617E8,
- sub_806173C,
- sub_8063474
-};
-
-u8 (*const Unknown_8375B00[])(struct MapObject *, struct Sprite *) = {
- sub_8061820,
- sub_806173C,
- sub_8063474
-};
-
-u8 (*const Unknown_8375B0C[])(struct MapObject *, struct Sprite *) = {
- sub_8061858,
- sub_8061714,
- sub_8063474
-};
-
-u8 (*const Unknown_8375B18[])(struct MapObject *, struct Sprite *) = {
- sub_8061890,
- sub_8061714,
- sub_8063474
-};
-
-u8 (*const Unknown_8375B24[])(struct MapObject *, struct Sprite *) = {
- sub_80618C8,
- sub_8061714,
- sub_8063474
-};
-
-u8 (*const Unknown_8375B30[])(struct MapObject *, struct Sprite *) = {
- sub_8061900,
- sub_8061714,
- sub_8063474
-};
-
-u8 (*const Unknown_8375B3C[])(struct MapObject *, struct Sprite *) = {
- sub_8061938,
- sub_8061714,
- sub_8063474
-};
-
-u8 (*const Unknown_8375B48[])(struct MapObject *, struct Sprite *) = {
- sub_8061970,
- sub_8061714,
- sub_8063474
-};
-
-u8 (*const Unknown_8375B54[])(struct MapObject *, struct Sprite *) = {
- sub_80619A8,
- sub_8061714,
- sub_8063474
-};
-
-u8 (*const Unknown_8375B60[])(struct MapObject *, struct Sprite *) = {
- sub_80619E0,
- sub_8061714,
- sub_8063474
-};
-
-u8 (*const Unknown_8375B6C[])(struct MapObject *, struct Sprite *) = {
- sub_8061A18,
- sub_8061714,
- sub_8063474
-};
-
-u8 (*const Unknown_8375B78[])(struct MapObject *, struct Sprite *) = {
- sub_8061A50,
- sub_8061714,
- sub_8063474
-};
-
-u8 (*const Unknown_8375B84[])(struct MapObject *, struct Sprite *) = {
- sub_8061A88,
- sub_8061714,
- sub_8063474
-};
-
-u8 (*const Unknown_8375B90[])(struct MapObject *, struct Sprite *) = {
- sub_8061AC0,
- sub_8061714,
- sub_8063474
-};
-
-u8 (*const Unknown_8375B9C[])(struct MapObject *, struct Sprite *) = {
- sub_8061AF8,
- sub_8061B18,
- sub_8063474
-};
-
-u8 (*const Unknown_8375BA8[])(struct MapObject *, struct Sprite *) = {
- sub_8061B38,
- sub_8061B58,
- sub_8063474
-};
-
-u8 (*const Unknown_8375BB4[])(struct MapObject *, struct Sprite *) = {
- sub_8061B78,
- sub_8061B98,
- sub_8063474
-};
-
-u8 (*const Unknown_8375BC0[])(struct MapObject *, struct Sprite *) = {
- sub_8061BB8,
- sub_8061BD8,
- sub_8063474
-};
-
-u8 (*const Unknown_8375BCC[])(struct MapObject *, struct Sprite *) = {
- sub_8061BF8,
- sub_8061C18,
- sub_8063474
-};
-
-u8 (*const Unknown_8375BD8[])(struct MapObject *, struct Sprite *) = {
- sub_8061C38,
- sub_8061C58,
- sub_8063474
-};
-
-u8 (*const Unknown_8375BE4[])(struct MapObject *, struct Sprite *) = {
- sub_8061C78,
- sub_8061C98,
- sub_8063474
-};
-
-u8 (*const Unknown_8375BF0[])(struct MapObject *, struct Sprite *) = {
- sub_8061CB8,
- sub_8061CD8,
- sub_8063474
-};
-
-u8 (*const Unknown_8375BFC[])(struct MapObject *, struct Sprite *) = {
- sub_8061CF8,
- sub_8061D18,
- sub_8063474
-};
-
-u8 (*const Unknown_8375C08[])(struct MapObject *, struct Sprite *) = {
- sub_8061D38,
- sub_8061D58,
- sub_8063474
-};
-
-u8 (*const Unknown_8375C14[])(struct MapObject *, struct Sprite *) = {
- sub_8061D78,
- sub_8061D98,
- sub_8063474
-};
-
-u8 (*const Unknown_8375C20[])(struct MapObject *, struct Sprite *) = {
- sub_8061DB8,
- sub_8061DD8,
- sub_8063474
-};
-
-u8 (*const Unknown_8375C2C[])(struct MapObject *, struct Sprite *) = {
- do_run_south_anim,
- sub_8061E18,
- sub_8063474
-};
-
-u8 (*const Unknown_8375C38[])(struct MapObject *, struct Sprite *) = {
- do_run_north_anim,
- sub_8061E58,
- sub_8063474
-};
-
-u8 (*const Unknown_8375C44[])(struct MapObject *, struct Sprite *) = {
- do_run_west_anim,
- sub_8061E98,
- sub_8063474
-};
-
-u8 (*const Unknown_8375C50[])(struct MapObject *, struct Sprite *) = {
- do_run_east_anim,
- sub_8061ED8,
- sub_8063474
-};
-
-u8 (*const Unknown_8375C5C[])(struct MapObject *, struct Sprite *) = {
- sub_8061F24,
- sub_8061F3C,
- sub_8063474
-};
-
-u8 (*const Unknown_8375C68[])(struct MapObject *, struct Sprite *) = {
- sub_8061F90,
- sub_8061FB0,
- sub_8063474
-};
-
-u8 (*const Unknown_8375C74[])(struct MapObject *, struct Sprite *) = {
- sub_8061FD8,
- sub_8061FF8,
- sub_8063474
-};
-
-u8 (*const Unknown_8375C80[])(struct MapObject *, struct Sprite *) = {
- sub_8062020,
- sub_8062040,
- sub_8063474
-};
-
-u8 (*const Unknown_8375C8C[])(struct MapObject *, struct Sprite *) = {
- sub_8062068,
- sub_8062088,
- sub_8063474
-};
-
-u8 (*const Unknown_8375C98[])(struct MapObject *, struct Sprite *) = {
- sub_80620B0,
- sub_8063474
-};
-
-u8 (*const Unknown_8375CA0[])(struct MapObject *, struct Sprite *) = {
- sub_806210C,
- sub_8063474
-};
-
-u8 (*const Unknown_8375CA8[])(struct MapObject *, struct Sprite *) = {
- sub_8062170,
- sub_8063474
-};
-
-u8 (*const Unknown_8375CB0[])(struct MapObject *, struct Sprite *) = {
- sub_8062180,
- sub_8063474
-};
-
-u8 (*const Unknown_8375CB8[])(struct MapObject *, struct Sprite *) = {
- sub_8062190,
- sub_80621BC,
- sub_8063474
-};
-
-u8 (*const Unknown_8375CC4[])(struct MapObject *, struct Sprite *) = {
- sub_80621E8,
- sub_8062214,
- sub_8063474
-};
-
-u8 (*const Unknown_8375CD0[])(struct MapObject *, struct Sprite *) = {
- sub_8062240,
- sub_806226C,
- sub_8063474
-};
-
-u8 (*const Unknown_8375CDC[])(struct MapObject *, struct Sprite *) = {
- sub_8062298,
- sub_80622C4,
- sub_8063474
-};
-
-u8 (*const Unknown_8375CE8[])(struct MapObject *, struct Sprite *) = {
- sub_80622F0,
- sub_806231C,
- sub_8063474
-};
-
-u8 (*const Unknown_8375CF4[])(struct MapObject *, struct Sprite *) = {
- sub_8062348,
- sub_8062374,
- sub_8063474
-};
-
-u8 (*const Unknown_8375D00[])(struct MapObject *, struct Sprite *) = {
- sub_80623A0,
- sub_80623CC,
- sub_8063474
-};
-
-u8 (*const Unknown_8375D0C[])(struct MapObject *, struct Sprite *) = {
- sub_80623F8,
- sub_8062424,
- sub_8063474
-};
-
-u8 (*const Unknown_8375D18[])(struct MapObject *, struct Sprite *) = {
- sub_8062450,
- sub_806247C,
- sub_8063474
-};
-
-u8 (*const Unknown_8375D24[])(struct MapObject *, struct Sprite *) = {
- sub_80624A8,
- sub_80624D4,
- sub_8063474
-};
-
-u8 (*const Unknown_8375D30[])(struct MapObject *, struct Sprite *) = {
- sub_8062500,
- sub_806252C,
- sub_8063474
-};
-
-u8 (*const Unknown_8375D3C[])(struct MapObject *, struct Sprite *) = {
- sub_8062558,
- sub_8062584,
- sub_8063474
-};
-
-u8 (*const Unknown_8375D48[])(struct MapObject *, struct Sprite *) = {
- sub_80625B0,
- sub_8063474
-};
-
-u8 (*const Unknown_8375D50[])(struct MapObject *, struct Sprite *) = {
- sub_80625C8,
- sub_8061F3C,
- sub_8063474
-};
-
-u8 (*const Unknown_8375D5C[])(struct MapObject *, struct Sprite *) = {
- sub_80625D8,
- sub_8063470
-};
-
-u8 (*const Unknown_8375D64[])(struct MapObject *, struct Sprite *) = {
- sub_80625E8,
- sub_8063470
-};
-
-u8 (*const Unknown_8375D6C[])(struct MapObject *, struct Sprite *) = {
- sub_80625F8,
- sub_8063470
-};
-
-u8 (*const Unknown_8375D74[])(struct MapObject *, struct Sprite *) = {
- sub_8062608,
- sub_8063470
-};
-
-u8 (*const Unknown_8375D7C[])(struct MapObject *, struct Sprite *) = {
- sub_8062634,
- sub_8063470
-};
-
-u8 (*const Unknown_8375D84[])(struct MapObject *, struct Sprite *) = {
- sub_8062644,
- sub_8063470
-};
-
-u8 (*const Unknown_8375D8C[])(struct MapObject *, struct Sprite *) = {
- do_exclamation_mark_bubble_1,
- sub_8063470
-};
-
-u8 (*const Unknown_8375D94[])(struct MapObject *, struct Sprite *) = {
- do_exclamation_mark_bubble_2,
- sub_8063470
-};
-
-u8 (*const Unknown_8375D9C[])(struct MapObject *, struct Sprite *) = {
- do_heart_bubble,
- sub_8063470
-};
-
-u8 (*const Unknown_8375DA4[])(struct MapObject *, struct Sprite *) = {
- sub_80626C0,
- sub_8062704,
- sub_8063470
-};
-
-u8 (*const Unknown_8375DB0[])(struct MapObject *, struct Sprite *) = {
- sub_8062724,
- sub_8062740,
- sub_8062764,
- sub_8063470
-};
-
-u8 (*const Unknown_8375DC0[])(struct MapObject *, struct Sprite *) = {
- sub_80627A0,
- sub_80627BC,
- sub_80627E0,
- sub_8063470
-};
-
-u8 (*const Unknown_8375DD0[])(struct MapObject *, struct Sprite *) = {
- sub_806281C,
- sub_8063470
-};
-
-u8 (*const Unknown_8375DD8[])(struct MapObject *, struct Sprite *) = {
- sub_806282C,
- sub_8063470
-};
-
-u8 (*const Unknown_8375DE0[])(struct MapObject *, struct Sprite *) = {
- sub_806283C,
- sub_8063470
-};
-
-u8 (*const Unknown_8375DE8[])(struct MapObject *, struct Sprite *) = {
- sub_806286C,
- sub_8063470
-};
-
-u8 (*const Unknown_8375DF0[])(struct MapObject *, struct Sprite *) = {
- sub_806289C,
- sub_80628D0,
- sub_8063474
-};
-
-u8 (*const Unknown_8375DFC[])(struct MapObject *, struct Sprite *) = {
- sub_80628FC,
- sub_8062930,
- sub_8063474
-};
-
-u8 (*const Unknown_8375E08[])(struct MapObject *, struct Sprite *) = {
- sub_806299C,
- sub_8063474
-};
-
-u8 (*const Unknown_8375E10[])(struct MapObject *, struct Sprite *) = {
- sub_80629AC,
- sub_8063474
-};
-
-u8 (*const Unknown_8375E18[])(struct MapObject *, struct Sprite *) = {
- sub_80629BC,
- sub_8063474
-};
-
-u8 (*const Unknown_8375E20[])(struct MapObject *, struct Sprite *) = {
- sub_80629CC,
- sub_8063474
-};
-
-u8 (*const Unknown_8375E28[])(struct MapObject *, struct Sprite *) = {
- sub_80629DC,
- sub_8061F3C,
- sub_8063474
-};
-
-u8 (*const Unknown_8375E34[])(struct MapObject *, struct Sprite *) = {
- sub_8062A00,
- sub_8061F3C,
- sub_8063474
-};
-
-u8 (*const Unknown_8375E40[])(struct MapObject *, struct Sprite *) = {
- sub_8062A24,
- sub_8061F3C,
- sub_8063474
-};
-
-u8 (*const Unknown_8375E4C[])(struct MapObject *, struct Sprite *) = {
- sub_8062A48,
- sub_8061F3C,
- sub_8063474
-};
-
-u8 (*const Unknown_8375E58[])(struct MapObject *, struct Sprite *) = {
- sub_8062A6C,
- sub_8061F3C,
- sub_8063474
-};
-
-u8 (*const Unknown_8375E64[])(struct MapObject *, struct Sprite *) = {
- sub_8062A90,
- sub_8061F3C,
- sub_8063474
-};
-
-u8 (*const Unknown_8375E70[])(struct MapObject *, struct Sprite *) = {
- sub_8062AB4,
- sub_8061F3C,
- sub_8063474
-};
-
-u8 (*const Unknown_8375E7C[])(struct MapObject *, struct Sprite *) = {
- sub_8062AD8,
- sub_8061F3C,
- sub_8063474,
- sub_8062AFC,
- sub_8061F3C,
- sub_8063474,
- sub_8062B20,
- sub_8061F3C,
- sub_8063474,
- sub_8062B44,
- sub_8061F3C,
- sub_8063474,
- sub_8062B68,
- sub_8061F3C,
- sub_8063474
-};
-
-u8 (*const Unknown_8375EB8[])(struct MapObject *, struct Sprite *) = {
- sub_8062BD0,
- sub_8062BFC,
- sub_8063474
-};
-
-u8 (*const Unknown_8375EC4[])(struct MapObject *, struct Sprite *) = {
- sub_8062C28,
- sub_8062C54,
- sub_8063474
-};
-
-u8 (*const Unknown_8375ED0[])(struct MapObject *, struct Sprite *) = {
- sub_8062C80,
- sub_8062CAC,
- sub_8063474
-};
-
-u8 (*const Unknown_8375EDC[])(struct MapObject *, struct Sprite *) = {
- sub_8062CD8,
- sub_8062D04,
- sub_8063474
-};
-
-u8 (*const Unknown_8375EE8[])(struct MapObject *, struct Sprite *) = {
- sub_8062D30,
- sub_8062D5C,
- sub_8063474
-};
-
-u8 (*const Unknown_8375EF4[])(struct MapObject *, struct Sprite *) = {
- sub_8062D88,
- sub_8062DB4,
- sub_8063474
-};
-
-u8 (*const Unknown_8375F00[])(struct MapObject *, struct Sprite *) = {
- sub_8062DE0,
- sub_8062E0C,
- sub_8063474
-};
-
-u8 (*const Unknown_8375F0C[])(struct MapObject *, struct Sprite *) = {
- sub_8062E38,
- sub_8062E64,
- sub_8063474
-};
-
-u8 (*const Unknown_8375F18[])(struct MapObject *, struct Sprite *) = {
- sub_8062E90,
- sub_8062EBC,
- sub_8063474
-};
-
-u8 (*const Unknown_8375F24[])(struct MapObject *, struct Sprite *) = {
- sub_8062EE8,
- sub_8062F14,
- sub_8063474
-};
-
-u8 (*const Unknown_8375F30[])(struct MapObject *, struct Sprite *) = {
- sub_8062F40,
- sub_8062F6C,
- sub_8063474
-};
-
-u8 (*const Unknown_8375F3C[])(struct MapObject *, struct Sprite *) = {
- sub_8062F98,
- sub_8062FC4,
- sub_8063474
-};
-
-u8 (*const Unknown_8375F48[])(struct MapObject *, struct Sprite *) = {
- sub_8062FF0,
- sub_8061714,
- sub_8063474
-};
-
-u8 (*const Unknown_8375F54[])(struct MapObject *, struct Sprite *) = {
- sub_8063028,
- sub_8061714,
- sub_8063474
-};
-
-u8 (*const Unknown_8375F60[])(struct MapObject *, struct Sprite *) = {
- sub_8063060,
- sub_8061714,
- sub_8063474
-};
-
-u8 (*const Unknown_8375F6C[])(struct MapObject *, struct Sprite *) = {
- sub_8063098,
- sub_8061714,
- sub_8063474
-};
-
-u8 (*const Unknown_8375F78[])(struct MapObject *, struct Sprite *) = {
- sub_8063108,
- sub_8063128,
- sub_8063474
-};
-
-u8 (*const Unknown_8375F84[])(struct MapObject *, struct Sprite *) = {
- sub_8063148,
- sub_8063168,
- sub_8063474
-};
-
-u8 (*const Unknown_8375F90[])(struct MapObject *, struct Sprite *) = {
- sub_8063188,
- sub_80631A8,
- sub_8063474
-};
-
-u8 (*const Unknown_8375F9C[])(struct MapObject *, struct Sprite *) = {
- sub_80631C8,
- sub_80631E8,
- sub_8063474
-};
-
-u8 (*const Unknown_8375FA8[])(struct MapObject *, struct Sprite *) = {
- sub_8063238,
- sub_8063258,
- sub_8063474
-};
-
-u8 (*const Unknown_8375FB4[])(struct MapObject *, struct Sprite *) = {
- sub_8063278,
- sub_8063298,
- sub_8063474
-};
-
-u8 (*const Unknown_8375FC0[])(struct MapObject *, struct Sprite *) = {
- sub_80632B8,
- sub_80632D8,
- sub_8063474
-};
-
-u8 (*const Unknown_8375FCC[])(struct MapObject *, struct Sprite *) = {
- sub_80632F8,
- sub_8063318,
- sub_8063474
-};
-
-u8 (*const Unknown_8375FD8[])(struct MapObject *, struct Sprite *) = {
- sub_8063370,
- sub_8063390,
- sub_8063474
-};
-
-u8 (*const Unknown_8375FE4[])(struct MapObject *, struct Sprite *) = {
- sub_80633B0,
- sub_80633D0,
- sub_8063474
-};
-
-u8 (*const Unknown_8375FF0[])(struct MapObject *, struct Sprite *) = {
- sub_80633F0,
- sub_8063410,
- sub_8063474
-};
-
-u8 (*const Unknown_8375FFC[])(struct MapObject *, struct Sprite *) = {
- sub_8063430,
- sub_8063450,
- sub_8063474
-};
-
-#endif //POKERUBY_ANIM_FUNC_PTRS_H
diff --git a/src/data/field_map_obj/berry_tree_graphics_tables.h b/src/data/field_map_obj/berry_tree_graphics_tables.h
deleted file mode 100644
index 5b60fee6f..000000000
--- a/src/data/field_map_obj/berry_tree_graphics_tables.h
+++ /dev/null
@@ -1,573 +0,0 @@
-//
-
-//
-
-#ifndef POKERUBY_BERRY_TREE_GRAPHICS_TABLES_H
-#define POKERUBY_BERRY_TREE_GRAPHICS_TABLES_H
-
-const struct SpriteFrameImage gMapObjectPicTable_PechaBerryTree[] = {
- obj_frame_tiles(gMapObjectPic_BerryTreeDirtPile),
- obj_frame_tiles(gMapObjectPic_BerryTreeSprout_0),
- obj_frame_tiles(gMapObjectPic_BerryTreeSprout_1),
- obj_frame_tiles(gMapObjectPic_PechaBerryTree_0),
- obj_frame_tiles(gMapObjectPic_PechaBerryTree_1),
- obj_frame_tiles(gMapObjectPic_PechaBerryTree_2),
- obj_frame_tiles(gMapObjectPic_PechaBerryTree_3),
- obj_frame_tiles(gMapObjectPic_PechaBerryTree_4),
- obj_frame_tiles(gMapObjectPic_PechaBerryTree_5)
-};
-
-const u8 gBerryTreePaletteSlotTable_Pecha[] = {3, 4, 4, 4, 4};
-
-const struct SpriteFrameImage gMapObjectPicTable_KelpsyBerryTree[] = {
- obj_frame_tiles(gMapObjectPic_BerryTreeDirtPile),
- obj_frame_tiles(gMapObjectPic_BerryTreeSprout_0),
- obj_frame_tiles(gMapObjectPic_BerryTreeSprout_1),
- obj_frame_tiles(gMapObjectPic_KelpsyBerryTree_0),
- obj_frame_tiles(gMapObjectPic_KelpsyBerryTree_1),
- obj_frame_tiles(gMapObjectPic_KelpsyBerryTree_2),
- obj_frame_tiles(gMapObjectPic_KelpsyBerryTree_3),
- obj_frame_tiles(gMapObjectPic_KelpsyBerryTree_4),
- obj_frame_tiles(gMapObjectPic_KelpsyBerryTree_5)
-};
-
-const u8 gBerryTreePaletteSlotTable_Kelpsy[] = {3, 4, 2, 2, 2};
-
-const struct SpriteFrameImage gMapObjectPicTable_WepearBerryTree[] = {
- obj_frame_tiles(gMapObjectPic_BerryTreeDirtPile),
- obj_frame_tiles(gMapObjectPic_BerryTreeSprout_0),
- obj_frame_tiles(gMapObjectPic_BerryTreeSprout_1),
- obj_frame_tiles(gMapObjectPic_WepearBerryTree_0),
- obj_frame_tiles(gMapObjectPic_WepearBerryTree_1),
- obj_frame_tiles(gMapObjectPic_WepearBerryTree_2),
- obj_frame_tiles(gMapObjectPic_WepearBerryTree_3),
- obj_frame_tiles(gMapObjectPic_WepearBerryTree_4),
- obj_frame_tiles(gMapObjectPic_WepearBerryTree_5)
-};
-
-const u8 gBerryTreePaletteSlotTable_Wepear[] = {3, 4, 2, 2, 2};
-
-const struct SpriteFrameImage gMapObjectPicTable_IapapaBerryTree[] = {
- obj_frame_tiles(gMapObjectPic_BerryTreeDirtPile),
- obj_frame_tiles(gMapObjectPic_BerryTreeSprout_0),
- obj_frame_tiles(gMapObjectPic_BerryTreeSprout_1),
- obj_frame_tiles(gMapObjectPic_IapapaBerryTree_0),
- obj_frame_tiles(gMapObjectPic_IapapaBerryTree_1),
- obj_frame_tiles(gMapObjectPic_IapapaBerryTree_2),
- obj_frame_tiles(gMapObjectPic_IapapaBerryTree_3),
- obj_frame_tiles(gMapObjectPic_IapapaBerryTree_4),
- obj_frame_tiles(gMapObjectPic_IapapaBerryTree_5)
-};
-
-const u8 gBerryTreePaletteSlotTable_Iapapa[] = {3, 4, 3, 3, 3};
-
-const struct SpriteFrameImage gMapObjectPicTable_CheriBerryTree[] = {
- obj_frame_tiles(gMapObjectPic_BerryTreeDirtPile),
- obj_frame_tiles(gMapObjectPic_BerryTreeSprout_0),
- obj_frame_tiles(gMapObjectPic_BerryTreeSprout_1),
- obj_frame_tiles(gMapObjectPic_CheriBerryTree_0),
- obj_frame_tiles(gMapObjectPic_CheriBerryTree_1),
- obj_frame_tiles(gMapObjectPic_CheriBerryTree_2),
- obj_frame_tiles(gMapObjectPic_CheriBerryTree_3),
- obj_frame_tiles(gMapObjectPic_CheriBerryTree_4),
- obj_frame_tiles(gMapObjectPic_CheriBerryTree_5)
-};
-
-const u8 gBerryTreePaletteSlotTable_Cheri[] = {3, 4, 4, 4, 4};
-
-const struct SpriteFrameImage gMapObjectPicTable_FigyBerryTree[] = {
- obj_frame_tiles(gMapObjectPic_BerryTreeDirtPile),
- obj_frame_tiles(gMapObjectPic_BerryTreeSprout_0),
- obj_frame_tiles(gMapObjectPic_BerryTreeSprout_1),
- obj_frame_tiles(gMapObjectPic_FigyBerryTree_0),
- obj_frame_tiles(gMapObjectPic_FigyBerryTree_1),
- obj_frame_tiles(gMapObjectPic_FigyBerryTree_2),
- obj_frame_tiles(gMapObjectPic_FigyBerryTree_3),
- obj_frame_tiles(gMapObjectPic_FigyBerryTree_4),
- obj_frame_tiles(gMapObjectPic_FigyBerryTree_5)
-};
-
-const u8 gBerryTreePaletteSlotTable_Figy[] = {3, 4, 3, 3, 3};
-
-const struct SpriteFrameImage gMapObjectPicTable_MagoBerryTree[] = {
- obj_frame_tiles(gMapObjectPic_BerryTreeDirtPile),
- obj_frame_tiles(gMapObjectPic_BerryTreeSprout_0),
- obj_frame_tiles(gMapObjectPic_BerryTreeSprout_1),
- obj_frame_tiles(gMapObjectPic_MagoBerryTree_0),
- obj_frame_tiles(gMapObjectPic_MagoBerryTree_1),
- obj_frame_tiles(gMapObjectPic_MagoBerryTree_2),
- obj_frame_tiles(gMapObjectPic_MagoBerryTree_3),
- obj_frame_tiles(gMapObjectPic_MagoBerryTree_4),
- obj_frame_tiles(gMapObjectPic_MagoBerryTree_5)
-};
-
-const u8 gBerryTreePaletteSlotTable_Mago[] = {3, 4, 3, 3, 3};
-
-const struct SpriteFrameImage gMapObjectPicTable_LumBerryTree[] = {
- obj_frame_tiles(gMapObjectPic_BerryTreeDirtPile),
- obj_frame_tiles(gMapObjectPic_BerryTreeSprout_0),
- obj_frame_tiles(gMapObjectPic_BerryTreeSprout_1),
- obj_frame_tiles(gMapObjectPic_LumBerryTree_0),
- obj_frame_tiles(gMapObjectPic_LumBerryTree_1),
- obj_frame_tiles(gMapObjectPic_LumBerryTree_2),
- obj_frame_tiles(gMapObjectPic_LumBerryTree_3),
- obj_frame_tiles(gMapObjectPic_LumBerryTree_4),
- obj_frame_tiles(gMapObjectPic_LumBerryTree_5)
-};
-
-const u8 gBerryTreePaletteSlotTable_Lum[] = {3, 4, 4, 4, 4};
-
-const struct SpriteFrameImage gMapObjectPicTable_RazzBerryTree[] = {
- obj_frame_tiles(gMapObjectPic_BerryTreeDirtPile),
- obj_frame_tiles(gMapObjectPic_BerryTreeSprout_0),
- obj_frame_tiles(gMapObjectPic_BerryTreeSprout_1),
- obj_frame_tiles(gMapObjectPic_RazzBerryTree_0),
- obj_frame_tiles(gMapObjectPic_RazzBerryTree_1),
- obj_frame_tiles(gMapObjectPic_RazzBerryTree_2),
- obj_frame_tiles(gMapObjectPic_RazzBerryTree_3),
- obj_frame_tiles(gMapObjectPic_RazzBerryTree_4),
- obj_frame_tiles(gMapObjectPic_RazzBerryTree_5)
-};
-
-const u8 gBerryTreePaletteSlotTable_Razz[] = {3, 4, 4, 4, 4};
-
-const struct SpriteFrameImage gMapObjectPicTable_GrepaBerryTree[] = {
- obj_frame_tiles(gMapObjectPic_BerryTreeDirtPile),
- obj_frame_tiles(gMapObjectPic_BerryTreeSprout_0),
- obj_frame_tiles(gMapObjectPic_BerryTreeSprout_1),
- obj_frame_tiles(gMapObjectPic_GrepaBerryTree_0),
- obj_frame_tiles(gMapObjectPic_GrepaBerryTree_1),
- obj_frame_tiles(gMapObjectPic_GrepaBerryTree_2),
- obj_frame_tiles(gMapObjectPic_GrepaBerryTree_3),
- obj_frame_tiles(gMapObjectPic_GrepaBerryTree_4),
- obj_frame_tiles(gMapObjectPic_GrepaBerryTree_5)
-};
-
-const u8 gBerryTreePaletteSlotTable_Grepa[] = {3, 4, 3, 3, 3};
-
-const struct SpriteFrameImage gMapObjectPicTable_RabutaBerryTree[] = {
- obj_frame_tiles(gMapObjectPic_BerryTreeDirtPile),
- obj_frame_tiles(gMapObjectPic_BerryTreeSprout_0),
- obj_frame_tiles(gMapObjectPic_BerryTreeSprout_1),
- obj_frame_tiles(gMapObjectPic_RabutaBerryTree_0),
- obj_frame_tiles(gMapObjectPic_RabutaBerryTree_1),
- obj_frame_tiles(gMapObjectPic_RabutaBerryTree_2),
- obj_frame_tiles(gMapObjectPic_RabutaBerryTree_3),
- obj_frame_tiles(gMapObjectPic_RabutaBerryTree_4),
- obj_frame_tiles(gMapObjectPic_RabutaBerryTree_5)
-};
-
-const u8 gBerryTreePaletteSlotTable_Rabuta[] = {3, 4, 4, 4, 4};
-
-const struct SpriteFrameImage gMapObjectPicTable_NomelBerryTree[] = {
- obj_frame_tiles(gMapObjectPic_BerryTreeDirtPile),
- obj_frame_tiles(gMapObjectPic_BerryTreeSprout_0),
- obj_frame_tiles(gMapObjectPic_BerryTreeSprout_1),
- obj_frame_tiles(gMapObjectPic_NomelBerryTree_0),
- obj_frame_tiles(gMapObjectPic_NomelBerryTree_1),
- obj_frame_tiles(gMapObjectPic_NomelBerryTree_2),
- obj_frame_tiles(gMapObjectPic_NomelBerryTree_3),
- obj_frame_tiles(gMapObjectPic_NomelBerryTree_4),
- obj_frame_tiles(gMapObjectPic_NomelBerryTree_5)
-};
-
-const u8 gBerryTreePaletteSlotTable_Nomel[] = {3, 4, 3, 3, 3};
-
-const struct SpriteFrameImage gMapObjectPicTable_LeppaBerryTree[] = {
- obj_frame_tiles(gMapObjectPic_BerryTreeDirtPile),
- obj_frame_tiles(gMapObjectPic_BerryTreeSprout_0),
- obj_frame_tiles(gMapObjectPic_BerryTreeSprout_1),
- obj_frame_tiles(gMapObjectPic_LeppaBerryTree_0),
- obj_frame_tiles(gMapObjectPic_LeppaBerryTree_1),
- obj_frame_tiles(gMapObjectPic_LeppaBerryTree_2),
- obj_frame_tiles(gMapObjectPic_LeppaBerryTree_3),
- obj_frame_tiles(gMapObjectPic_LeppaBerryTree_4),
- obj_frame_tiles(gMapObjectPic_LeppaBerryTree_5)
-};
-
-const u8 gBerryTreePaletteSlotTable_Leppa[] = {3, 4, 3, 3, 3};
-
-const struct SpriteFrameImage gMapObjectPicTable_LiechiBerryTree[] = {
- obj_frame_tiles(gMapObjectPic_BerryTreeDirtPile),
- obj_frame_tiles(gMapObjectPic_BerryTreeSprout_0),
- obj_frame_tiles(gMapObjectPic_BerryTreeSprout_1),
- obj_frame_tiles(gMapObjectPic_LiechiBerryTree_0),
- obj_frame_tiles(gMapObjectPic_LiechiBerryTree_1),
- obj_frame_tiles(gMapObjectPic_LiechiBerryTree_2),
- obj_frame_tiles(gMapObjectPic_LiechiBerryTree_3),
- obj_frame_tiles(gMapObjectPic_LiechiBerryTree_4),
- obj_frame_tiles(gMapObjectPic_LiechiBerryTree_5)
-};
-
-const u8 gBerryTreePaletteSlotTable_Liechi[] = {3, 4, 4, 4, 4};
-
-const struct SpriteFrameImage gMapObjectPicTable_HondewBerryTree[] = {
- obj_frame_tiles(gMapObjectPic_BerryTreeDirtPile),
- obj_frame_tiles(gMapObjectPic_BerryTreeSprout_0),
- obj_frame_tiles(gMapObjectPic_BerryTreeSprout_1),
- obj_frame_tiles(gMapObjectPic_HondewBerryTree_0),
- obj_frame_tiles(gMapObjectPic_HondewBerryTree_1),
- obj_frame_tiles(gMapObjectPic_HondewBerryTree_2),
- obj_frame_tiles(gMapObjectPic_HondewBerryTree_3),
- obj_frame_tiles(gMapObjectPic_HondewBerryTree_4),
- obj_frame_tiles(gMapObjectPic_HondewBerryTree_5)
-};
-
-const u8 gBerryTreePaletteSlotTable_Hondew[] = {3, 4, 5, 5, 5};
-
-const struct SpriteFrameImage gMapObjectPicTable_AguavBerryTree[] = {
- obj_frame_tiles(gMapObjectPic_BerryTreeDirtPile),
- obj_frame_tiles(gMapObjectPic_BerryTreeSprout_0),
- obj_frame_tiles(gMapObjectPic_BerryTreeSprout_1),
- obj_frame_tiles(gMapObjectPic_AguavBerryTree_0),
- obj_frame_tiles(gMapObjectPic_AguavBerryTree_1),
- obj_frame_tiles(gMapObjectPic_AguavBerryTree_2),
- obj_frame_tiles(gMapObjectPic_AguavBerryTree_3),
- obj_frame_tiles(gMapObjectPic_AguavBerryTree_4),
- obj_frame_tiles(gMapObjectPic_AguavBerryTree_5)
-};
-
-const u8 gBerryTreePaletteSlotTable_Aguav[] = {3, 4, 4, 4, 4};
-
-const struct SpriteFrameImage gMapObjectPicTable_WikiBerryTree[] = {
- obj_frame_tiles(gMapObjectPic_BerryTreeDirtPile),
- obj_frame_tiles(gMapObjectPic_BerryTreeSprout_0),
- obj_frame_tiles(gMapObjectPic_BerryTreeSprout_1),
- obj_frame_tiles(gMapObjectPic_WikiBerryTree_0),
- obj_frame_tiles(gMapObjectPic_WikiBerryTree_1),
- obj_frame_tiles(gMapObjectPic_WikiBerryTree_2),
- obj_frame_tiles(gMapObjectPic_WikiBerryTree_3),
- obj_frame_tiles(gMapObjectPic_WikiBerryTree_4),
- obj_frame_tiles(gMapObjectPic_WikiBerryTree_5)
-};
-
-const u8 gBerryTreePaletteSlotTable_Wiki[] = {3, 4, 3, 3, 3};
-
-const struct SpriteFrameImage gMapObjectPicTable_PomegBerryTree[] = {
- obj_frame_tiles(gMapObjectPic_BerryTreeDirtPile),
- obj_frame_tiles(gMapObjectPic_BerryTreeSprout_0),
- obj_frame_tiles(gMapObjectPic_BerryTreeSprout_1),
- obj_frame_tiles(gMapObjectPic_PomegBerryTree_0),
- obj_frame_tiles(gMapObjectPic_PomegBerryTree_1),
- obj_frame_tiles(gMapObjectPic_PomegBerryTree_2),
- obj_frame_tiles(gMapObjectPic_PomegBerryTree_3),
- obj_frame_tiles(gMapObjectPic_PomegBerryTree_4),
- obj_frame_tiles(gMapObjectPic_PomegBerryTree_5)
-};
-
-const u8 gBerryTreePaletteSlotTable_Pomeg[] = {3, 4, 3, 3, 3};
-
-const struct SpriteFrameImage gMapObjectPicTable_RawstBerryTree[] = {
- obj_frame_tiles(gMapObjectPic_BerryTreeDirtPile),
- obj_frame_tiles(gMapObjectPic_BerryTreeSprout_0),
- obj_frame_tiles(gMapObjectPic_BerryTreeSprout_1),
- obj_frame_tiles(gMapObjectPic_RawstBerryTree_0),
- obj_frame_tiles(gMapObjectPic_RawstBerryTree_1),
- obj_frame_tiles(gMapObjectPic_RawstBerryTree_2),
- obj_frame_tiles(gMapObjectPic_RawstBerryTree_3),
- obj_frame_tiles(gMapObjectPic_RawstBerryTree_4),
- obj_frame_tiles(gMapObjectPic_RawstBerryTree_5)
-};
-
-const u8 gBerryTreePaletteSlotTable_Rawst[] = {3, 4, 4, 4, 4};
-
-const struct SpriteFrameImage gMapObjectPicTable_SpelonBerryTree[] = {
- obj_frame_tiles(gMapObjectPic_BerryTreeDirtPile),
- obj_frame_tiles(gMapObjectPic_BerryTreeSprout_0),
- obj_frame_tiles(gMapObjectPic_BerryTreeSprout_1),
- obj_frame_tiles(gMapObjectPic_SpelonBerryTree_0),
- obj_frame_tiles(gMapObjectPic_SpelonBerryTree_1),
- obj_frame_tiles(gMapObjectPic_SpelonBerryTree_2),
- obj_frame_tiles(gMapObjectPic_SpelonBerryTree_3),
- obj_frame_tiles(gMapObjectPic_SpelonBerryTree_4),
- obj_frame_tiles(gMapObjectPic_SpelonBerryTree_5)
-};
-
-const u8 gBerryTreePaletteSlotTable_Spelon[] = {3, 4, 3, 3, 3};
-
-const struct SpriteFrameImage gMapObjectPicTable_ChestoBerryTree[] = {
- obj_frame_tiles(gMapObjectPic_BerryTreeDirtPile),
- obj_frame_tiles(gMapObjectPic_BerryTreeSprout_0),
- obj_frame_tiles(gMapObjectPic_BerryTreeSprout_1),
- obj_frame_tiles(gMapObjectPic_ChestoBerryTree_0),
- obj_frame_tiles(gMapObjectPic_ChestoBerryTree_1),
- obj_frame_tiles(gMapObjectPic_ChestoBerryTree_2),
- obj_frame_tiles(gMapObjectPic_ChestoBerryTree_3),
- obj_frame_tiles(gMapObjectPic_ChestoBerryTree_4),
- obj_frame_tiles(gMapObjectPic_ChestoBerryTree_5)
-};
-
-const u8 gBerryTreePaletteSlotTable_Chesto[] = {3, 4, 2, 2, 2};
-
-const struct SpriteFrameImage gMapObjectPicTable_OranBerryTree[] = {
- obj_frame_tiles(gMapObjectPic_BerryTreeDirtPile),
- obj_frame_tiles(gMapObjectPic_BerryTreeSprout_0),
- obj_frame_tiles(gMapObjectPic_BerryTreeSprout_1),
- obj_frame_tiles(gMapObjectPic_OranBerryTree_0),
- obj_frame_tiles(gMapObjectPic_OranBerryTree_1),
- obj_frame_tiles(gMapObjectPic_OranBerryTree_2),
- obj_frame_tiles(gMapObjectPic_OranBerryTree_3),
- obj_frame_tiles(gMapObjectPic_OranBerryTree_4),
- obj_frame_tiles(gMapObjectPic_OranBerryTree_5)
-};
-
-const u8 gBerryTreePaletteSlotTable_Oran[] = {3, 4, 2, 2, 2};
-
-const struct SpriteFrameImage gMapObjectPicTable_PersimBerryTree[] = {
- obj_frame_tiles(gMapObjectPic_BerryTreeDirtPile),
- obj_frame_tiles(gMapObjectPic_BerryTreeSprout_0),
- obj_frame_tiles(gMapObjectPic_BerryTreeSprout_1),
- obj_frame_tiles(gMapObjectPic_PersimBerryTree_0),
- obj_frame_tiles(gMapObjectPic_PersimBerryTree_1),
- obj_frame_tiles(gMapObjectPic_PersimBerryTree_2),
- obj_frame_tiles(gMapObjectPic_PersimBerryTree_3),
- obj_frame_tiles(gMapObjectPic_PersimBerryTree_4),
- obj_frame_tiles(gMapObjectPic_PersimBerryTree_5)
-};
-
-const u8 gBerryTreePaletteSlotTable_Persim[] = {3, 4, 2, 2, 2};
-
-const struct SpriteFrameImage gMapObjectPicTable_SitrusBerryTree[] = {
- obj_frame_tiles(gMapObjectPic_BerryTreeDirtPile),
- obj_frame_tiles(gMapObjectPic_BerryTreeSprout_0),
- obj_frame_tiles(gMapObjectPic_BerryTreeSprout_1),
- obj_frame_tiles(gMapObjectPic_SitrusBerryTree_0),
- obj_frame_tiles(gMapObjectPic_SitrusBerryTree_1),
- obj_frame_tiles(gMapObjectPic_SitrusBerryTree_2),
- obj_frame_tiles(gMapObjectPic_SitrusBerryTree_3),
- obj_frame_tiles(gMapObjectPic_SitrusBerryTree_4),
- obj_frame_tiles(gMapObjectPic_SitrusBerryTree_5)
-};
-
-const u8 gBerryTreePaletteSlotTable_Sitrus[] = {3, 4, 4, 4, 4};
-
-const struct SpriteFrameImage gMapObjectPicTable_AspearBerryTree[] = {
- obj_frame_tiles(gMapObjectPic_BerryTreeDirtPile),
- obj_frame_tiles(gMapObjectPic_BerryTreeSprout_0),
- obj_frame_tiles(gMapObjectPic_BerryTreeSprout_1),
- obj_frame_tiles(gMapObjectPic_AspearBerryTree_0),
- obj_frame_tiles(gMapObjectPic_AspearBerryTree_1),
- obj_frame_tiles(gMapObjectPic_AspearBerryTree_2),
- obj_frame_tiles(gMapObjectPic_AspearBerryTree_3),
- obj_frame_tiles(gMapObjectPic_AspearBerryTree_4),
- obj_frame_tiles(gMapObjectPic_AspearBerryTree_5)
-};
-
-const u8 gBerryTreePaletteSlotTable_Aspear[] = {3, 4, 3, 3, 3};
-
-const struct SpriteFrameImage gMapObjectPicTable_PamtreBerryTree[] = {
- obj_frame_tiles(gMapObjectPic_BerryTreeDirtPile),
- obj_frame_tiles(gMapObjectPic_BerryTreeSprout_0),
- obj_frame_tiles(gMapObjectPic_BerryTreeSprout_1),
- obj_frame_tiles(gMapObjectPic_PamtreBerryTree_0),
- obj_frame_tiles(gMapObjectPic_PamtreBerryTree_1),
- obj_frame_tiles(gMapObjectPic_PamtreBerryTree_2),
- obj_frame_tiles(gMapObjectPic_PamtreBerryTree_3),
- obj_frame_tiles(gMapObjectPic_PamtreBerryTree_4),
- obj_frame_tiles(gMapObjectPic_PamtreBerryTree_5)
-};
-
-const u8 gBerryTreePaletteSlotTable_Pamtre[] = {3, 4, 2, 2, 2};
-
-const struct SpriteFrameImage gMapObjectPicTable_CornnBerryTree[] = {
- obj_frame_tiles(gMapObjectPic_BerryTreeDirtPile),
- obj_frame_tiles(gMapObjectPic_BerryTreeSprout_0),
- obj_frame_tiles(gMapObjectPic_BerryTreeSprout_1),
- obj_frame_tiles(gMapObjectPic_CornnBerryTree_0),
- obj_frame_tiles(gMapObjectPic_CornnBerryTree_1),
- obj_frame_tiles(gMapObjectPic_CornnBerryTree_2),
- obj_frame_tiles(gMapObjectPic_CornnBerryTree_3),
- obj_frame_tiles(gMapObjectPic_CornnBerryTree_4),
- obj_frame_tiles(gMapObjectPic_CornnBerryTree_5)
-};
-
-const u8 gBerryTreePaletteSlotTable_Cornn[] = {3, 4, 2, 2, 2};
-
-const struct SpriteFrameImage gMapObjectPicTable_LansatBerryTree[] = {
- obj_frame_tiles(gMapObjectPic_BerryTreeDirtPile),
- obj_frame_tiles(gMapObjectPic_BerryTreeSprout_0),
- obj_frame_tiles(gMapObjectPic_BerryTreeSprout_1),
- obj_frame_tiles(gMapObjectPic_LansatBerryTree_0),
- obj_frame_tiles(gMapObjectPic_LansatBerryTree_1),
- obj_frame_tiles(gMapObjectPic_LansatBerryTree_2),
- obj_frame_tiles(gMapObjectPic_LansatBerryTree_3),
- obj_frame_tiles(gMapObjectPic_LansatBerryTree_4),
- obj_frame_tiles(gMapObjectPic_LansatBerryTree_5)
-};
-
-const u8 gBerryTreePaletteSlotTable_Lansat[] = {3, 4, 2, 2, 2};
-
-const struct SpriteFrameImage gMapObjectPicTable_DurinBerryTree[] = {
- obj_frame_tiles(gMapObjectPic_BerryTreeDirtPile),
- obj_frame_tiles(gMapObjectPic_BerryTreeSprout_0),
- obj_frame_tiles(gMapObjectPic_BerryTreeSprout_1),
- obj_frame_tiles(gMapObjectPic_DurinBerryTree_0),
- obj_frame_tiles(gMapObjectPic_DurinBerryTree_1),
- obj_frame_tiles(gMapObjectPic_DurinBerryTree_2),
- obj_frame_tiles(gMapObjectPic_DurinBerryTree_3),
- obj_frame_tiles(gMapObjectPic_DurinBerryTree_4),
- obj_frame_tiles(gMapObjectPic_DurinBerryTree_5)
-};
-
-const u8 gBerryTreePaletteSlotTable_Durin[] = {3, 4, 4, 4, 4};
-
-const struct SpriteFrameImage gMapObjectPicTable_TamatoBerryTree[] = {
- obj_frame_tiles(gMapObjectPic_BerryTreeDirtPile),
- obj_frame_tiles(gMapObjectPic_BerryTreeSprout_0),
- obj_frame_tiles(gMapObjectPic_BerryTreeSprout_1),
- obj_frame_tiles(gMapObjectPic_TamatoBerryTree_0),
- obj_frame_tiles(gMapObjectPic_TamatoBerryTree_1),
- obj_frame_tiles(gMapObjectPic_TamatoBerryTree_2),
- obj_frame_tiles(gMapObjectPic_TamatoBerryTree_3),
- obj_frame_tiles(gMapObjectPic_TamatoBerryTree_4),
- obj_frame_tiles(gMapObjectPic_TamatoBerryTree_5)
-};
-
-const u8 gBerryTreePaletteSlotTable_Tamato[] = {3, 4, 2, 2, 2};
-
-const u8 gDeadBerryTreeGraphicsIdTable[] = {MAP_OBJ_GFX_BERRY_TREE_EARLY_STAGES, MAP_OBJ_GFX_BERRY_TREE_EARLY_STAGES, MAP_OBJ_GFX_BERRY_TREE_EARLY_STAGES, MAP_OBJ_GFX_BERRY_TREE_EARLY_STAGES, MAP_OBJ_GFX_BERRY_TREE_EARLY_STAGES};
-
-const u8 gBerryTreeGraphicsIdTable[] = {MAP_OBJ_GFX_BERRY_TREE_EARLY_STAGES, MAP_OBJ_GFX_BERRY_TREE_EARLY_STAGES, MAP_OBJ_GFX_BERRY_TREE_LATE_STAGES, MAP_OBJ_GFX_BERRY_TREE_LATE_STAGES, MAP_OBJ_GFX_BERRY_TREE_LATE_STAGES};
-
-const struct SpriteFrameImage *const gBerryTreePicTablePointers[] = {
- gMapObjectPicTable_CheriBerryTree,
- gMapObjectPicTable_ChestoBerryTree,
- gMapObjectPicTable_PechaBerryTree,
- gMapObjectPicTable_RawstBerryTree,
- gMapObjectPicTable_AspearBerryTree,
- gMapObjectPicTable_LeppaBerryTree,
- gMapObjectPicTable_OranBerryTree,
- gMapObjectPicTable_PersimBerryTree,
- gMapObjectPicTable_LumBerryTree,
- gMapObjectPicTable_SitrusBerryTree,
- gMapObjectPicTable_FigyBerryTree,
- gMapObjectPicTable_WikiBerryTree,
- gMapObjectPicTable_MagoBerryTree,
- gMapObjectPicTable_AguavBerryTree,
- gMapObjectPicTable_IapapaBerryTree,
- gMapObjectPicTable_RazzBerryTree,
- gMapObjectPicTable_RazzBerryTree,
- gMapObjectPicTable_MagoBerryTree,
- gMapObjectPicTable_WepearBerryTree,
- gMapObjectPicTable_IapapaBerryTree,
- gMapObjectPicTable_PomegBerryTree,
- gMapObjectPicTable_KelpsyBerryTree,
- gMapObjectPicTable_WepearBerryTree,
- gMapObjectPicTable_HondewBerryTree,
- gMapObjectPicTable_GrepaBerryTree,
- gMapObjectPicTable_TamatoBerryTree,
- gMapObjectPicTable_CornnBerryTree,
- gMapObjectPicTable_PomegBerryTree,
- gMapObjectPicTable_RabutaBerryTree,
- gMapObjectPicTable_NomelBerryTree,
- gMapObjectPicTable_SpelonBerryTree,
- gMapObjectPicTable_PamtreBerryTree,
- gMapObjectPicTable_RabutaBerryTree,
- gMapObjectPicTable_DurinBerryTree,
- gMapObjectPicTable_HondewBerryTree,
- gMapObjectPicTable_LiechiBerryTree,
- gMapObjectPicTable_HondewBerryTree,
- gMapObjectPicTable_AguavBerryTree,
- gMapObjectPicTable_PomegBerryTree,
- gMapObjectPicTable_GrepaBerryTree,
- gMapObjectPicTable_LansatBerryTree,
- gMapObjectPicTable_CornnBerryTree,
- gMapObjectPicTable_DurinBerryTree
-};
-
-const u8 *const gBerryTreePaletteSlotTablePointers[] = {
- gBerryTreePaletteSlotTable_Cheri,
- gBerryTreePaletteSlotTable_Chesto,
- gBerryTreePaletteSlotTable_Pecha,
- gBerryTreePaletteSlotTable_Rawst,
- gBerryTreePaletteSlotTable_Aspear,
- gBerryTreePaletteSlotTable_Leppa,
- gBerryTreePaletteSlotTable_Oran,
- gBerryTreePaletteSlotTable_Persim,
- gBerryTreePaletteSlotTable_Lum,
- gBerryTreePaletteSlotTable_Sitrus,
- gBerryTreePaletteSlotTable_Figy,
- gBerryTreePaletteSlotTable_Wiki,
- gBerryTreePaletteSlotTable_Mago,
- gBerryTreePaletteSlotTable_Aguav,
- gBerryTreePaletteSlotTable_Iapapa,
- gBerryTreePaletteSlotTable_Razz,
- gBerryTreePaletteSlotTable_Razz,
- gBerryTreePaletteSlotTable_Mago,
- gBerryTreePaletteSlotTable_Wepear,
- gBerryTreePaletteSlotTable_Iapapa,
- gBerryTreePaletteSlotTable_Pomeg,
- gBerryTreePaletteSlotTable_Kelpsy,
- gBerryTreePaletteSlotTable_Wepear,
- gBerryTreePaletteSlotTable_Hondew,
- gBerryTreePaletteSlotTable_Grepa,
- gBerryTreePaletteSlotTable_Tamato,
- gBerryTreePaletteSlotTable_Cornn,
- gBerryTreePaletteSlotTable_Pomeg,
- gBerryTreePaletteSlotTable_Rabuta,
- gBerryTreePaletteSlotTable_Nomel,
- gBerryTreePaletteSlotTable_Spelon,
- gBerryTreePaletteSlotTable_Pamtre,
- gBerryTreePaletteSlotTable_Rabuta,
- gBerryTreePaletteSlotTable_Durin,
- gBerryTreePaletteSlotTable_Hondew,
- gBerryTreePaletteSlotTable_Liechi,
- gBerryTreePaletteSlotTable_Hondew,
- gBerryTreePaletteSlotTable_Aguav,
- gBerryTreePaletteSlotTable_Pomeg,
- gBerryTreePaletteSlotTable_Grepa,
- gBerryTreePaletteSlotTable_Lansat,
- gBerryTreePaletteSlotTable_Cornn,
- gBerryTreePaletteSlotTable_Durin
-};
-
-const u8 *const gBerryTreeGraphicsIdTablePointers[] = {
- gBerryTreeGraphicsIdTable,
- gBerryTreeGraphicsIdTable,
- gBerryTreeGraphicsIdTable,
- gBerryTreeGraphicsIdTable,
- gBerryTreeGraphicsIdTable,
- gBerryTreeGraphicsIdTable,
- gBerryTreeGraphicsIdTable,
- gBerryTreeGraphicsIdTable,
- gBerryTreeGraphicsIdTable,
- gBerryTreeGraphicsIdTable,
- gBerryTreeGraphicsIdTable,
- gBerryTreeGraphicsIdTable,
- gBerryTreeGraphicsIdTable,
- gBerryTreeGraphicsIdTable,
- gBerryTreeGraphicsIdTable,
- gBerryTreeGraphicsIdTable,
- gBerryTreeGraphicsIdTable,
- gBerryTreeGraphicsIdTable,
- gBerryTreeGraphicsIdTable,
- gBerryTreeGraphicsIdTable,
- gBerryTreeGraphicsIdTable,
- gBerryTreeGraphicsIdTable,
- gBerryTreeGraphicsIdTable,
- gBerryTreeGraphicsIdTable,
- gBerryTreeGraphicsIdTable,
- gBerryTreeGraphicsIdTable,
- gBerryTreeGraphicsIdTable,
- gBerryTreeGraphicsIdTable,
- gBerryTreeGraphicsIdTable,
- gBerryTreeGraphicsIdTable,
- gBerryTreeGraphicsIdTable,
- gBerryTreeGraphicsIdTable,
- gBerryTreeGraphicsIdTable,
- gBerryTreeGraphicsIdTable,
- gBerryTreeGraphicsIdTable,
- gBerryTreeGraphicsIdTable,
- gBerryTreeGraphicsIdTable,
- gBerryTreeGraphicsIdTable,
- gBerryTreeGraphicsIdTable,
- gBerryTreeGraphicsIdTable,
- gBerryTreeGraphicsIdTable,
- gBerryTreeGraphicsIdTable,
- gBerryTreeGraphicsIdTable,
- gBerryTreeGraphicsIdTable,
- gBerryTreeGraphicsIdTable,
- gBerryTreeGraphicsIdTable
-};
-
-#endif //POKERUBY_BERRY_TREE_GRAPHICS_TABLES_H
diff --git a/src/data/field_map_obj/callback_subroutine_pointers.h b/src/data/field_map_obj/callback_subroutine_pointers.h
deleted file mode 100644
index a324066b7..000000000
--- a/src/data/field_map_obj/callback_subroutine_pointers.h
+++ /dev/null
@@ -1,442 +0,0 @@
-//
-
-//
-
-#ifndef POKERUBY_CALLBACK_SUBROUTINE_POINTERS_H
-#define POKERUBY_CALLBACK_SUBROUTINE_POINTERS_H
-
-
-u8 (*const gUnknown_08375224[])(struct MapObject *, struct Sprite *) = {
- sub_805C8F0,
- sub_805C904,
- sub_805C930,
- sub_805C96C,
- sub_805C98C,
- sub_805C9D8,
- sub_805CA08
-};
-
-const u8 gUnknown_08375240[] = {DIR_SOUTH, DIR_NORTH, DIR_WEST, DIR_EAST};
-
-u8 (*const gUnknown_08375244[])(s16, s16, s16, s16) = {
- sub_805CAAC,
- sub_805CADC,
- sub_805CAEC,
- sub_805CB00,
- sub_805CB5C,
- sub_805CBB8,
- sub_805CC14,
- sub_805CC70,
- sub_805CCAC,
- sub_805CCE8,
- sub_805CD24
-};
-
-u8 (*const gUnknown_08375270[])(struct MapObject *, struct Sprite *) = {
- sub_805CE2C,
- sub_805CE40,
- sub_805CE6C,
- sub_805CEB0,
- sub_805CEE0
-};
-
-u8 (*const gUnknown_08375284[])(struct MapObject *, struct Sprite *) = {
- sub_805CF6C,
- sub_805CF80,
- sub_805CFAC,
- sub_805CFE8,
- sub_805D008,
- sub_805D054,
- sub_805D084
-};
-
-const u8 gUnknown_083752A0[] = {DIR_SOUTH, DIR_NORTH};
-
-u8 (*const gUnknown_083752A4[])(struct MapObject *, struct Sprite *) = {
- sub_805D0F0,
- sub_805D104,
- sub_805D130,
- sub_805D16C,
- sub_805D18C,
- sub_805D1D8,
- sub_805D208
-};
-
-const u8 gUnknown_083752C0[] = {DIR_WEST, DIR_EAST};
-
-u8 (*const gUnknown_083752C4[])(struct MapObject *, struct Sprite *) = {
- sub_805D274,
- sub_805D2A0,
- sub_805D2C0
-};
-
-u8 (*const gUnknown_083752D0[])(struct MapObject *, struct Sprite *) = {
- do_berry_tree_growth_sparkle_1,
- sub_805D3EC,
- do_berry_tree_growth_sparkle_2,
- sub_805D458,
- sub_805D4A8
-};
-
-u8 (*const gUnknown_083752E4[])(struct MapObject *, struct Sprite *) = {
- sub_805D538,
- sub_805D54C,
- sub_805D578,
- sub_805D5BC,
- sub_805D5EC
-};
-
-u8 (*const gUnknown_083752F8[])(struct MapObject *, struct Sprite *) = {
- sub_805D678,
- sub_805D68C,
- sub_805D6B8,
- sub_805D6FC,
- sub_805D72C
-};
-
-u8 (*const gUnknown_0837530C[])(struct MapObject *, struct Sprite *) = {
- sub_805D7B8,
- sub_805D7CC,
- sub_805D7F8,
- sub_805D83C,
- sub_805D86C
-};
-
-const u8 gUnknown_08375320[] = {DIR_NORTH, DIR_WEST};
-
-u8 (*const gUnknown_08375324[])(struct MapObject *, struct Sprite *) = {
- sub_805D8F8,
- sub_805D90C,
- sub_805D938,
- sub_805D97C,
- sub_805D9AC
-};
-
-const u8 gUnknown_08375338[] = {DIR_NORTH, DIR_EAST};
-
-u8 (*const gUnknown_0837533C[])(struct MapObject *, struct Sprite *) = {
- sub_805DA38,
- sub_805DA4C,
- sub_805DA78,
- sub_805DABC,
- sub_805DAEC
-};
-
-const u8 gUnknown_08375350[] = {DIR_SOUTH, DIR_WEST};
-
-u8 (*const gUnknown_08375354[])(struct MapObject *, struct Sprite *) = {
- sub_805DB78,
- sub_805DB8C,
- sub_805DBB8,
- sub_805DBFC,
- sub_805DC2C
-};
-
-const u8 gUnknown_08375368[] = {DIR_SOUTH, DIR_EAST};
-
-u8 (*const gUnknown_0837536C[])(struct MapObject *, struct Sprite *) = {
- sub_805DCB8,
- sub_805DCCC,
- sub_805DCF8,
- sub_805DD3C,
- sub_805DD6C
-};
-
-const u8 gUnknown_08375380[] = {DIR_NORTH, DIR_SOUTH, DIR_WEST, DIR_SOUTH};
-
-u8 (*const gUnknown_08375384[])(struct MapObject *, struct Sprite *) = {
- sub_805DDF8,
- sub_805DE0C,
- sub_805DE38,
- sub_805DE7C,
- sub_805DEAC
-};
-
-const u8 gUnknown_08375398[] = {DIR_SOUTH, DIR_NORTH, DIR_EAST, DIR_SOUTH};
-
-u8 (*const gUnknown_0837539C[])(struct MapObject *, struct Sprite *) = {
- sub_805DF38,
- sub_805DF4C,
- sub_805DF78,
- sub_805DFBC,
- sub_805DFEC
-};
-
-const u8 gUnknown_083753B0[] = {DIR_NORTH, DIR_WEST, DIR_EAST, DIR_NORTH};
-
-u8 (*const gUnknown_083753B4[])(struct MapObject *, struct Sprite *) = {
- sub_805E078,
- sub_805E08C,
- sub_805E0B8,
- sub_805E0FC,
- sub_805E12C
-};
-
-const u8 gUnknown_083753C8[] = {DIR_WEST, DIR_EAST, DIR_SOUTH, DIR_SOUTH};
-
-u8 (*const gUnknown_083753CC[])(struct MapObject *, struct Sprite *) = {
- sub_805E1B8,
- sub_805E1E4,
- sub_805E208,
- sub_805E234
-};
-
-const u8 gUnknown_083753DC[] = {DIR_SOUTH, DIR_EAST, DIR_WEST, DIR_SOUTH, DIR_NORTH};
-
-u8 (*const gUnknown_083753E4[])(struct MapObject *, struct Sprite *) = {
- sub_805E2BC,
- sub_805E2E8,
- sub_805E30C,
- sub_805E338
-};
-
-const u8 gUnknown_083753F4[] = {DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_NORTH, DIR_SOUTH};
-
-u8 (*const gUnknown_083753FC[])(struct MapObject *, struct Sprite *) = {
- sub_805E3C0,
- sub_805E3D4,
- sub_805E40C,
- sub_805E4C4
-};
-
-u8 (*const gUnknown_0837540C[])(struct MapObject *, struct Sprite *) = {
- sub_805E4EC,
- sub_805E620,
- sub_805E5B4
-};
-
-const u8 gUnknown_08375418[] = {DIR_NORTH, DIR_EAST, DIR_WEST, DIR_SOUTH};
-
-u8 (*const gUnknown_0837541C[])(struct MapObject *, struct Sprite *) = {
- sub_805E4EC,
- sub_805E6AC,
- sub_805E5B4
-};
-
-const u8 gUnknown_08375428[] = {DIR_EAST, DIR_WEST, DIR_SOUTH, DIR_NORTH};
-u8 (*const gUnknown_0837542C[])(struct MapObject *, struct Sprite *) = {
- sub_805E4EC,
- sub_805E738,
- sub_805E5B4
-};
-
-const u8 gUnknown_08375438[] = {DIR_SOUTH, DIR_NORTH, DIR_EAST, DIR_WEST};
-
-u8 (*const gUnknown_0837543C[])(struct MapObject *, struct Sprite *) = {
- sub_805E4EC,
- sub_805E7C4,
- sub_805E5B4
-};
-
-const u8 gUnknown_08375448[] = {DIR_WEST, DIR_SOUTH, DIR_NORTH, DIR_EAST};
-
-u8 (*const gUnknown_0837544C[])(struct MapObject *, struct Sprite *) = {
- sub_805E4EC,
- sub_805E850,
- sub_805E5B4
-};
-
-const u8 gUnknown_08375458[] = {DIR_NORTH, DIR_WEST, DIR_EAST, DIR_SOUTH};
-
-u8 (*const gUnknown_0837545C[])(struct MapObject *, struct Sprite *) = {
- sub_805E4EC,
- sub_805E8DC,
- sub_805E5B4
-};
-
-const u8 gUnknown_08375468[] = {DIR_WEST, DIR_EAST, DIR_SOUTH, DIR_NORTH};
-
-u8 (*const gUnknown_0837546C[])(struct MapObject *, struct Sprite *) = {
- sub_805E4EC,
- sub_805E968,
- sub_805E5B4
-};
-
-u8 (*const gUnknown_08375478[])(struct MapObject *, struct Sprite *) = {
- sub_805E4EC,
- sub_805E9F4,
- sub_805E5B4
-};
-
-const u8 gUnknown_08375484[] = {DIR_EAST, DIR_SOUTH, DIR_NORTH, DIR_WEST};
-
-u8 (*const gUnknown_08375488[])(struct MapObject *, struct Sprite *) = {
- sub_805E4EC,
- sub_805EA80,
- sub_805E5B4
-};
-
-const u8 gUnknown_08375494[] = {DIR_WEST, DIR_NORTH, DIR_SOUTH, DIR_EAST};
-
-u8 (*const gUnknown_08375498[])(struct MapObject *, struct Sprite *) = {
- sub_805E4EC,
- sub_805EB0C,
- sub_805E5B4
-};
-
-const u8 gUnknown_083754A4[] = {DIR_NORTH, DIR_SOUTH, DIR_EAST, DIR_WEST};
-
-u8 (*const gUnknown_083754A8[])(struct MapObject *, struct Sprite *) = {
- sub_805E4EC,
- sub_805EB98,
- sub_805E5B4
-};
-
-const u8 gUnknown_083754B4[] = {DIR_EAST, DIR_WEST, DIR_NORTH, DIR_SOUTH};
-
-u8 (*const gUnknown_083754B8[])(struct MapObject *, struct Sprite *) = {
- sub_805E4EC,
- sub_805EC24,
- sub_805E5B4
-};
-
-const u8 gUnknown_083754C4[] = {DIR_SOUTH, DIR_EAST, DIR_WEST, DIR_NORTH};
-
-u8 (*const gUnknown_083754C8[])(struct MapObject *, struct Sprite *) = {
- sub_805E4EC,
- sub_805ECB0,
- sub_805E5B4
-};
-
-const u8 gUnknown_083754D4[] = {DIR_EAST, DIR_NORTH, DIR_SOUTH, DIR_WEST};
-
-u8 (*const gUnknown_083754D8[])(struct MapObject *, struct Sprite *) = {
- sub_805E4EC,
- sub_805ED3C,
- sub_805E5B4
-};
-
-const u8 gUnknown_083754E4[] = {DIR_NORTH, DIR_SOUTH, DIR_WEST, DIR_EAST};
-
-u8 (*const gUnknown_083754E8[])(struct MapObject *, struct Sprite *) = {
- sub_805E4EC,
- sub_805EDC8,
- sub_805E5B4
-};
-
-const u8 gUnknown_083754F4[] = {DIR_WEST, DIR_EAST, DIR_NORTH, DIR_SOUTH};
-
-u8 (*const gUnknown_083754F8[])(struct MapObject *, struct Sprite *) = {
- sub_805E4EC,
- sub_805EE54,
- sub_805E5B4
-};
-
-const u8 gUnknown_08375504[] = {DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_NORTH};
-
-u8 (*const gUnknown_08375508[])(struct MapObject *, struct Sprite *) = {
- sub_805E4EC,
- sub_805EEE0,
- sub_805E5B4
-};
-
-const u8 gUnknown_08375514[] = {DIR_NORTH, DIR_WEST, DIR_SOUTH, DIR_EAST};
-
-u8 (*const gUnknown_08375518[])(struct MapObject *, struct Sprite *) = {
- sub_805E4EC,
- sub_805EF6C,
- sub_805E5B4
-};
-
-const u8 gUnknown_08375524[] = {DIR_SOUTH, DIR_EAST, DIR_NORTH, DIR_WEST};
-
-u8 (*const gUnknown_08375528[])(struct MapObject *, struct Sprite *) = {
- sub_805E4EC,
- sub_805EFF8,
- sub_805E5B4
-};
-
-const u8 gUnknown_08375534[] = {DIR_WEST, DIR_SOUTH, DIR_EAST, DIR_NORTH};
-
-u8 (*const gUnknown_08375538[])(struct MapObject *, struct Sprite *) = {
- sub_805E4EC,
- sub_805F084,
- sub_805E5B4
-};
-
-const u8 gUnknown_08375544[] = {DIR_EAST, DIR_NORTH, DIR_WEST, DIR_SOUTH};
-
-u8 (*const gUnknown_08375548[])(struct MapObject *, struct Sprite *) = {
- sub_805E4EC,
- sub_805F110,
- sub_805E5B4
-};
-
-const u8 gUnknown_08375554[] = {DIR_NORTH, DIR_EAST, DIR_SOUTH, DIR_WEST};
-
-u8 (*const gUnknown_08375558[])(struct MapObject *, struct Sprite *) = {
- sub_805E4EC,
- sub_805F19C,
- sub_805E5B4
-};
-
-const u8 gUnknown_08375564[] = {DIR_SOUTH, DIR_WEST, DIR_NORTH, DIR_EAST};
-
-u8 (*const gUnknown_08375568[])(struct MapObject *, struct Sprite *) = {
- sub_805E4EC,
- sub_805F228,
- sub_805E5B4
-};
-
-const u8 gUnknown_08375574[] = {DIR_WEST, DIR_NORTH, DIR_EAST, DIR_SOUTH};
-
-u8 (*const gUnknown_08375578[])(struct MapObject *, struct Sprite *) = {
- sub_805E4EC,
- sub_805F2B4,
- sub_805E5B4
-};
-
-const u8 gUnknown_08375584[] = {DIR_EAST, DIR_SOUTH, DIR_WEST, DIR_NORTH};
-
-u8 (*const gUnknown_08375588[])(struct MapObject *, struct Sprite *) = {
- mss_npc_reset_oampriv3_1_unk2_unk3,
- sub_805F364,
- sub_805F3C4
-};
-
-u8 (*const gUnknown_08375594[])(struct MapObject *, struct Sprite *, u8, bool8(u8)) = {
- sub_805F3EC,
- sub_805F3F0,
- sub_805F438,
- sub_805F4F0,
- sub_805F5A8,
- sub_805F660,
- cph_IM_DIFFERENT,
- sub_805F760,
- oac_hopping,
- sub_805F3EC,
- sub_805F3EC
-};
-
-u8 (*const gUnknown_083755C0[])(struct MapObject *, struct Sprite *) = {
- mss_npc_reset_oampriv3_1_unk2_unk3,
- mss_08062EA4,
- sub_805F3C4
-};
-
-u8 (*const gUnknown_083755CC[])(struct MapObject *, struct Sprite *) = {
- sub_805FAF8
-};
-
-u8 (*const gUnknown_083755D0[])(struct MapObject *, struct Sprite *) = {
- sub_805FB64,
- sub_805FB04
-};
-
-u8 (*const gUnknown_083755D8[])(struct MapObject *, struct Sprite *) = {
- sub_805FBD4,
- sub_805FB04
-};
-
-u8 (*const gUnknown_083755E0[])(struct MapObject *, struct Sprite *) = {
- sub_805FC44,
- sub_805FB04
-};
-
-u8 (*const gUnknown_083755E8[])(struct MapObject *, struct Sprite *) = {
- sub_805FCB4,
- sub_805FCE8,
- sub_805FD08
-};
-
-#endif //POKERUBY_CALLBACK_SUBROUTINE_POINTERS_H
diff --git a/src/data/field_map_obj/map_object_anims.h b/src/data/field_map_obj/map_object_anims.h
deleted file mode 100644
index 0993f3efd..000000000
--- a/src/data/field_map_obj/map_object_anims.h
+++ /dev/null
@@ -1,886 +0,0 @@
-//
-
-//
-
-#ifndef POKERUBY_MAP_OBJECT_ANIMS_H
-#define POKERUBY_MAP_OBJECT_ANIMS_H
-
-
-const union AnimCmd gMapObjectImageAnim_83708C8[] = {
- ANIMCMD_FRAME(0, 8),
- ANIMCMD_FRAME(0, 8),
- ANIMCMD_FRAME(0, 8),
- ANIMCMD_FRAME(0, 8),
- ANIMCMD_JUMP(0)
-};
-
-const union AnimCmd gMapObjectImageAnim_83708DC[] = {
- ANIMCMD_FRAME(0, 16),
- ANIMCMD_JUMP(0)
-};
-
-const union AnimCmd gMapObjectImageAnim_83708E4[] = {
- ANIMCMD_FRAME(1, 16),
- ANIMCMD_JUMP(0)
-};
-
-const union AnimCmd gMapObjectImageAnim_83708EC[] = {
- ANIMCMD_FRAME(2, 16),
- ANIMCMD_JUMP(0)
-};
-
-const union AnimCmd gMapObjectImageAnim_83708F4[] = {
- ANIMCMD_FRAME(2, 16, .hFlip = TRUE),
- ANIMCMD_JUMP(0)
-};
-
-const union AnimCmd gMapObjectImageAnim_83708FC[] = {
- ANIMCMD_FRAME(3, 8),
- ANIMCMD_FRAME(0, 8),
- ANIMCMD_FRAME(3, 8, .hFlip = TRUE),
- ANIMCMD_FRAME(0, 8),
- ANIMCMD_JUMP(0)
-};
-
-const union AnimCmd gMapObjectImageAnim_8370910[] = {
- ANIMCMD_FRAME(4, 8),
- ANIMCMD_FRAME(1, 8),
- ANIMCMD_FRAME(4, 8, .hFlip = TRUE),
- ANIMCMD_FRAME(1, 8),
- ANIMCMD_JUMP(0)
-};
-
-const union AnimCmd gMapObjectImageAnim_8370924[] = {
- ANIMCMD_FRAME(5, 8),
- ANIMCMD_FRAME(2, 8),
- ANIMCMD_FRAME(6, 8),
- ANIMCMD_FRAME(2, 8),
- ANIMCMD_JUMP(0)
-};
-
-const union AnimCmd gMapObjectImageAnim_8370938[] = {
- ANIMCMD_FRAME(5, 8, .hFlip = TRUE),
- ANIMCMD_FRAME(2, 8, .hFlip = TRUE),
- ANIMCMD_FRAME(6, 8, .hFlip = TRUE),
- ANIMCMD_FRAME(2, 8, .hFlip = TRUE),
- ANIMCMD_JUMP(0)
-};
-
-const union AnimCmd gMapObjectImageAnim_837094C[] = {
- ANIMCMD_FRAME(3, 4),
- ANIMCMD_FRAME(0, 4),
- ANIMCMD_FRAME(3, 4, .hFlip = TRUE),
- ANIMCMD_FRAME(0, 4),
- ANIMCMD_JUMP(0)
-};
-
-const union AnimCmd gMapObjectImageAnim_8370960[] = {
- ANIMCMD_FRAME(4, 4),
- ANIMCMD_FRAME(1, 4),
- ANIMCMD_FRAME(4, 4, .hFlip = TRUE),
- ANIMCMD_FRAME(1, 4),
- ANIMCMD_JUMP(0)
-};
-
-const union AnimCmd gMapObjectImageAnim_8370974[] = {
- ANIMCMD_FRAME(5, 4),
- ANIMCMD_FRAME(2, 4),
- ANIMCMD_FRAME(6, 4),
- ANIMCMD_FRAME(2, 4),
- ANIMCMD_JUMP(0)
-};
-
-const union AnimCmd gMapObjectImageAnim_8370988[] = {
- ANIMCMD_FRAME(5, 4, .hFlip = TRUE),
- ANIMCMD_FRAME(2, 4, .hFlip = TRUE),
- ANIMCMD_FRAME(6, 4, .hFlip = TRUE),
- ANIMCMD_FRAME(2, 4, .hFlip = TRUE),
- ANIMCMD_JUMP(0)
-};
-
-const union AnimCmd gMapObjectImageAnim_837099C[] = {
- ANIMCMD_FRAME(3, 2),
- ANIMCMD_FRAME(0, 2),
- ANIMCMD_FRAME(3, 2, .hFlip = TRUE),
- ANIMCMD_FRAME(0, 2),
- ANIMCMD_JUMP(0)
-};
-
-const union AnimCmd gMapObjectImageAnim_83709B0[] = {
- ANIMCMD_FRAME(4, 2),
- ANIMCMD_FRAME(1, 2),
- ANIMCMD_FRAME(4, 2, .hFlip = TRUE),
- ANIMCMD_FRAME(1, 2),
- ANIMCMD_JUMP(0)
-};
-
-const union AnimCmd gMapObjectImageAnim_83709C4[] = {
- ANIMCMD_FRAME(5, 2),
- ANIMCMD_FRAME(2, 2),
- ANIMCMD_FRAME(6, 2),
- ANIMCMD_FRAME(2, 2),
- ANIMCMD_JUMP(0)
-};
-
-const union AnimCmd gMapObjectImageAnim_83709D8[] = {
- ANIMCMD_FRAME(5, 2, .hFlip = TRUE),
- ANIMCMD_FRAME(2, 2, .hFlip = TRUE),
- ANIMCMD_FRAME(6, 2, .hFlip = TRUE),
- ANIMCMD_FRAME(2, 2, .hFlip = TRUE),
- ANIMCMD_JUMP(0)
-};
-
-const union AnimCmd gMapObjectImageAnim_83709EC[] = {
- ANIMCMD_FRAME(3, 1),
- ANIMCMD_FRAME(0, 1),
- ANIMCMD_FRAME(3, 1, .hFlip = TRUE),
- ANIMCMD_FRAME(0, 1),
- ANIMCMD_JUMP(0)
-};
-
-const union AnimCmd gMapObjectImageAnim_8370A00[] = {
- ANIMCMD_FRAME(4, 1),
- ANIMCMD_FRAME(1, 1),
- ANIMCMD_FRAME(4, 1, .hFlip = TRUE),
- ANIMCMD_FRAME(1, 1),
- ANIMCMD_JUMP(0)
-};
-
-const union AnimCmd gMapObjectImageAnim_8370A14[] = {
- ANIMCMD_FRAME(5, 1),
- ANIMCMD_FRAME(2, 1),
- ANIMCMD_FRAME(6, 1),
- ANIMCMD_FRAME(2, 1),
- ANIMCMD_JUMP(0)
-};
-
-const union AnimCmd gMapObjectImageAnim_8370A28[] = {
- ANIMCMD_FRAME(5, 1, .hFlip = TRUE),
- ANIMCMD_FRAME(2, 1, .hFlip = TRUE),
- ANIMCMD_FRAME(6, 1, .hFlip = TRUE),
- ANIMCMD_FRAME(2, 1, .hFlip = TRUE),
- ANIMCMD_JUMP(0)
-};
-
-const union AnimCmd gMapObjectImageAnim_8370A3C[] = {
- ANIMCMD_FRAME(0, 16),
- ANIMCMD_JUMP(0)
-};
-
-const union AnimCmd gMapObjectImageAnim_8370A44[] = {
- ANIMCMD_FRAME(1, 16),
- ANIMCMD_JUMP(0)
-};
-
-const union AnimCmd gMapObjectImageAnim_8370A4C[] = {
- ANIMCMD_FRAME(2, 16),
- ANIMCMD_JUMP(0)
-};
-
-const union AnimCmd gMapObjectImageAnim_8370A54[] = {
- ANIMCMD_FRAME(2, 16, .hFlip = TRUE),
- ANIMCMD_JUMP(0)
-};
-
-const union AnimCmd gMapObjectImageAnim_8370A5C[] = {
- ANIMCMD_FRAME(3, 8),
- ANIMCMD_FRAME(0, 8),
- ANIMCMD_FRAME(4, 8),
- ANIMCMD_FRAME(0, 8),
- ANIMCMD_JUMP(0)
-};
-
-const union AnimCmd gMapObjectImageAnim_8370A70[] = {
- ANIMCMD_FRAME(5, 8),
- ANIMCMD_FRAME(1, 8),
- ANIMCMD_FRAME(6, 8),
- ANIMCMD_FRAME(1, 8),
- ANIMCMD_JUMP(0)
-};
-
-const union AnimCmd gMapObjectImageAnim_8370A84[] = {
- ANIMCMD_FRAME(7, 8),
- ANIMCMD_FRAME(2, 8),
- ANIMCMD_FRAME(8, 8),
- ANIMCMD_FRAME(2, 8),
- ANIMCMD_JUMP(0)
-};
-
-const union AnimCmd gMapObjectImageAnim_8370A98[] = {
- ANIMCMD_FRAME(7, 8, .hFlip = TRUE),
- ANIMCMD_FRAME(2, 8, .hFlip = TRUE),
- ANIMCMD_FRAME(8, 8, .hFlip = TRUE),
- ANIMCMD_FRAME(2, 8, .hFlip = TRUE),
- ANIMCMD_JUMP(0)
-};
-
-const union AnimCmd gMapObjectImageAnim_8370AAC[] = {
- ANIMCMD_FRAME(3, 4),
- ANIMCMD_FRAME(0, 4),
- ANIMCMD_FRAME(4, 4),
- ANIMCMD_FRAME(0, 4),
- ANIMCMD_JUMP(0)
-};
-
-const union AnimCmd gMapObjectImageAnim_8370AC0[] = {
- ANIMCMD_FRAME(5, 4),
- ANIMCMD_FRAME(1, 4),
- ANIMCMD_FRAME(6, 4),
- ANIMCMD_FRAME(1, 4),
- ANIMCMD_JUMP(0)
-};
-
-const union AnimCmd gMapObjectImageAnim_8370AD4[] = {
- ANIMCMD_FRAME(7, 4),
- ANIMCMD_FRAME(2, 4),
- ANIMCMD_FRAME(8, 4),
- ANIMCMD_FRAME(2, 4),
- ANIMCMD_JUMP(0)
-};
-
-const union AnimCmd gMapObjectImageAnim_8370AE8[] = {
- ANIMCMD_FRAME(7, 4, .hFlip = TRUE),
- ANIMCMD_FRAME(2, 4, .hFlip = TRUE),
- ANIMCMD_FRAME(8, 4, .hFlip = TRUE),
- ANIMCMD_FRAME(2, 4, .hFlip = TRUE),
- ANIMCMD_JUMP(0)
-};
-
-const union AnimCmd gMapObjectImageAnim_8370AFC[] = {
- ANIMCMD_FRAME(3, 2),
- ANIMCMD_FRAME(0, 2),
- ANIMCMD_FRAME(4, 2),
- ANIMCMD_FRAME(0, 2),
- ANIMCMD_JUMP(0)
-};
-
-const union AnimCmd gMapObjectImageAnim_8370B10[] = {
- ANIMCMD_FRAME(5, 2),
- ANIMCMD_FRAME(1, 2),
- ANIMCMD_FRAME(6, 2),
- ANIMCMD_FRAME(1, 2),
- ANIMCMD_JUMP(0)
-};
-
-const union AnimCmd gMapObjectImageAnim_8370B24[] = {
- ANIMCMD_FRAME(7, 2),
- ANIMCMD_FRAME(2, 2),
- ANIMCMD_FRAME(8, 2),
- ANIMCMD_FRAME(2, 2),
- ANIMCMD_JUMP(0)
-};
-
-const union AnimCmd gMapObjectImageAnim_8370B38[] = {
- ANIMCMD_FRAME(7, 2, .hFlip = TRUE),
- ANIMCMD_FRAME(2, 2, .hFlip = TRUE),
- ANIMCMD_FRAME(8, 2, .hFlip = TRUE),
- ANIMCMD_FRAME(2, 2, .hFlip = TRUE),
- ANIMCMD_JUMP(0)
-};
-
-const union AnimCmd gMapObjectImageAnim_8370B4C[] = {
- ANIMCMD_FRAME(3, 1),
- ANIMCMD_FRAME(0, 1),
- ANIMCMD_FRAME(4, 1),
- ANIMCMD_FRAME(0, 1),
- ANIMCMD_JUMP(0)
-};
-
-const union AnimCmd gMapObjectImageAnim_8370B60[] = {
- ANIMCMD_FRAME(5, 1),
- ANIMCMD_FRAME(1, 1),
- ANIMCMD_FRAME(6, 1),
- ANIMCMD_FRAME(1, 1),
- ANIMCMD_JUMP(0)
-};
-
-const union AnimCmd gMapObjectImageAnim_8370B74[] = {
- ANIMCMD_FRAME(7, 1),
- ANIMCMD_FRAME(2, 1),
- ANIMCMD_FRAME(8, 1),
- ANIMCMD_FRAME(2, 1),
- ANIMCMD_JUMP(0)
-};
-
-const union AnimCmd gMapObjectImageAnim_8370B88[] = {
- ANIMCMD_FRAME(7, 1, .hFlip = TRUE),
- ANIMCMD_FRAME(2, 1, .hFlip = TRUE),
- ANIMCMD_FRAME(8, 1, .hFlip = TRUE),
- ANIMCMD_FRAME(2, 1, .hFlip = TRUE),
- ANIMCMD_JUMP(0)
-};
-
-const union AnimCmd gMapObjectImageAnim_8370B9C[] = {
- ANIMCMD_FRAME(12, 5),
- ANIMCMD_FRAME(9, 3),
- ANIMCMD_FRAME(13, 5),
- ANIMCMD_FRAME(9, 3),
- ANIMCMD_JUMP(0)
-};
-
-const union AnimCmd gMapObjectImageAnim_8370BB0[] = {
- ANIMCMD_FRAME(14, 5),
- ANIMCMD_FRAME(10, 3),
- ANIMCMD_FRAME(15, 5),
- ANIMCMD_FRAME(10, 3),
- ANIMCMD_JUMP(0)
-};
-
-const union AnimCmd gMapObjectImageAnim_8370BC4[] = {
- ANIMCMD_FRAME(16, 5),
- ANIMCMD_FRAME(11, 3),
- ANIMCMD_FRAME(17, 5),
- ANIMCMD_FRAME(11, 3),
- ANIMCMD_JUMP(0)
-};
-
-const union AnimCmd gMapObjectImageAnim_8370BD8[] = {
- ANIMCMD_FRAME(16, 5, .hFlip = TRUE),
- ANIMCMD_FRAME(11, 3, .hFlip = TRUE),
- ANIMCMD_FRAME(17, 5, .hFlip = TRUE),
- ANIMCMD_FRAME(11, 3, .hFlip = TRUE),
- ANIMCMD_JUMP(0)
-};
-
-const union AnimCmd gMapObjectImageAnim_8370BEC[] = {
- ANIMCMD_FRAME(0, 4),
- ANIMCMD_FRAME(1, 4),
- ANIMCMD_FRAME(2, 4),
- ANIMCMD_FRAME(3, 4),
- ANIMCMD_FRAME(4, 8),
- ANIMCMD_END
-};
-
-const union AnimCmd gMapObjectImageAnim_8370C04[] = {
- ANIMCMD_FRAME(9, 32),
- ANIMCMD_JUMP(0)
-};
-
-const union AnimCmd gMapObjectImageAnim_8370C0C[] = {
- ANIMCMD_FRAME(10, 32),
- ANIMCMD_JUMP(0)
-};
-
-const union AnimCmd gMapObjectImageAnim_8370C14[] = {
- ANIMCMD_FRAME(11, 32),
- ANIMCMD_JUMP(0)
-};
-
-const union AnimCmd gMapObjectImageAnim_8370C1C[] = {
- ANIMCMD_FRAME(11, 32, .hFlip = TRUE),
- ANIMCMD_JUMP(0)
-};
-
-const union AnimCmd gMapObjectImageAnim_8370C24[] = {
- ANIMCMD_FRAME(9, 4),
- ANIMCMD_FRAME(10, 4),
- ANIMCMD_END
-};
-
-const union AnimCmd gMapObjectImageAnim_8370C30[] = {
- ANIMCMD_FRAME(13, 4),
- ANIMCMD_FRAME(14, 4),
- ANIMCMD_END
-};
-
-const union AnimCmd gMapObjectImageAnim_8370C3C[] = {
- ANIMCMD_FRAME(17, 4),
- ANIMCMD_FRAME(18, 4),
- ANIMCMD_END
-};
-
-const union AnimCmd gMapObjectImageAnim_8370C48[] = {
- ANIMCMD_FRAME(17, 4, .hFlip = TRUE),
- ANIMCMD_FRAME(18, 4, .hFlip = TRUE),
- ANIMCMD_END
-};
-
-const union AnimCmd gMapObjectImageAnim_8370C54[] = {
- ANIMCMD_FRAME(11, 4),
- ANIMCMD_FRAME(12, 4),
- ANIMCMD_END
-};
-
-const union AnimCmd gMapObjectImageAnim_8370C60[] = {
- ANIMCMD_FRAME(15, 4),
- ANIMCMD_FRAME(16, 4),
- ANIMCMD_END
-};
-
-const union AnimCmd gMapObjectImageAnim_8370C6C[] = {
- ANIMCMD_FRAME(19, 4),
- ANIMCMD_FRAME(20, 4),
- ANIMCMD_END
-};
-
-const union AnimCmd gMapObjectImageAnim_8370C78[] = {
- ANIMCMD_FRAME(19, 4, .hFlip = TRUE),
- ANIMCMD_FRAME(20, 4, .hFlip = TRUE),
- ANIMCMD_END
-};
-
-const union AnimCmd gMapObjectImageAnim_8370C84[] = {
- ANIMCMD_FRAME(9, 4),
- ANIMCMD_FRAME(0, 4),
- ANIMCMD_END
-};
-
-const union AnimCmd gMapObjectImageAnim_8370C90[] = {
- ANIMCMD_FRAME(13, 4),
- ANIMCMD_FRAME(1, 4),
- ANIMCMD_END
-};
-
-const union AnimCmd gMapObjectImageAnim_8370C9C[] = {
- ANIMCMD_FRAME(17, 4),
- ANIMCMD_FRAME(2, 4),
- ANIMCMD_END
-};
-
-const union AnimCmd gMapObjectImageAnim_8370CA8[] = {
- ANIMCMD_FRAME(17, 4, .hFlip = TRUE),
- ANIMCMD_FRAME(2, 4, .hFlip = TRUE),
- ANIMCMD_END
-};
-
-const union AnimCmd gMapObjectImageAnim_8370CB4[] = {
- ANIMCMD_FRAME(11, 4),
- ANIMCMD_FRAME(0, 4),
- ANIMCMD_END
-};
-
-const union AnimCmd gMapObjectImageAnim_8370CC0[] = {
- ANIMCMD_FRAME(15, 4),
- ANIMCMD_FRAME(1, 4),
- ANIMCMD_END
-};
-
-const union AnimCmd gMapObjectImageAnim_8370CCC[] = {
- ANIMCMD_FRAME(19, 4),
- ANIMCMD_FRAME(2, 4),
- ANIMCMD_END
-};
-
-const union AnimCmd gMapObjectImageAnim_8370CD8[] = {
- ANIMCMD_FRAME(19, 4, .hFlip = TRUE),
- ANIMCMD_FRAME(2, 4, .hFlip = TRUE),
- ANIMCMD_END
-};
-
-const union AnimCmd gMapObjectImageAnim_8370CE4[] = {
- ANIMCMD_FRAME(21, 4),
- ANIMCMD_FRAME(10, 4),
- ANIMCMD_FRAME(22, 4),
- ANIMCMD_FRAME(10, 4),
- ANIMCMD_JUMP(0)
-};
-
-const union AnimCmd gMapObjectImageAnim_8370CF8[] = {
- ANIMCMD_FRAME(23, 4),
- ANIMCMD_FRAME(14, 4),
- ANIMCMD_FRAME(24, 4),
- ANIMCMD_FRAME(14, 4),
- ANIMCMD_JUMP(0)
-};
-
-const union AnimCmd gMapObjectImageAnim_8370D0C[] = {
- ANIMCMD_FRAME(25, 4),
- ANIMCMD_FRAME(18, 4),
- ANIMCMD_FRAME(26, 4),
- ANIMCMD_FRAME(18, 4),
- ANIMCMD_JUMP(0)
-};
-
-const union AnimCmd gMapObjectImageAnim_8370D20[] = {
- ANIMCMD_FRAME(25, 4, .hFlip = TRUE),
- ANIMCMD_FRAME(18, 4, .hFlip = TRUE),
- ANIMCMD_FRAME(26, 4, .hFlip = TRUE),
- ANIMCMD_FRAME(18, 4, .hFlip = TRUE),
- ANIMCMD_JUMP(0)
-};
-
-const union AnimCmd gMapObjectImageAnim_8370D34[] = {
- ANIMCMD_FRAME(0, 32),
- ANIMCMD_END
-};
-
-const union AnimCmd gMapObjectImageAnim_8370D3C[] = {
- ANIMCMD_FRAME(1, 32),
- ANIMCMD_FRAME(2, 32),
- ANIMCMD_END
-};
-
-const union AnimCmd gMapObjectImageAnim_8370D48[] = {
- ANIMCMD_FRAME(3, 48),
- ANIMCMD_FRAME(4, 48),
- ANIMCMD_END
-};
-
-const union AnimCmd gMapObjectImageAnim_8370D54[] = {
- ANIMCMD_FRAME(5, 32),
- ANIMCMD_FRAME(5, 32),
- ANIMCMD_FRAME(6, 32),
- ANIMCMD_FRAME(6, 32),
- ANIMCMD_END
-};
-
-const union AnimCmd gMapObjectImageAnim_8370D68[] = {
- ANIMCMD_FRAME(7, 48),
- ANIMCMD_FRAME(7, 48),
- ANIMCMD_FRAME(8, 48),
- ANIMCMD_FRAME(8, 48),
- ANIMCMD_END
-};
-
-const union AnimCmd gMapObjectImageAnim_8370D7C[] = {
- ANIMCMD_FRAME(0, 8),
- ANIMCMD_FRAME(9, 32),
- ANIMCMD_FRAME(0, 8),
- ANIMCMD_END
-};
-
-const union AnimCmd gMapObjectImageAnim_8370D8C[] = {
- ANIMCMD_FRAME(0, 8),
- ANIMCMD_FRAME(1, 8),
- ANIMCMD_FRAME(2, 8),
- ANIMCMD_FRAME(3, 8),
- ANIMCMD_END
-};
-
-const union AnimCmd gMapObjectImageAnim_8370DA0[] = {
- ANIMCMD_FRAME(0, 6),
- ANIMCMD_FRAME(1, 6),
- ANIMCMD_FRAME(2, 6),
- ANIMCMD_FRAME(3, 6),
- ANIMCMD_END
-};
-
-const union AnimCmd gMapObjectImageAnim_8370DB4[] = {
- ANIMCMD_FRAME(8, 4),
- ANIMCMD_FRAME(9, 4),
- ANIMCMD_FRAME(10, 4),
- ANIMCMD_FRAME(11, 4),
- ANIMCMD_END
-};
-
-const union AnimCmd gMapObjectImageAnim_8370DC8[] = {
- ANIMCMD_FRAME(4, 4),
- ANIMCMD_FRAME(5, 4),
- ANIMCMD_FRAME(6, 4),
- ANIMCMD_FRAME(7, 4),
- ANIMCMD_END
-};
-
-const union AnimCmd gMapObjectImageAnim_8370DDC[] = {
- ANIMCMD_FRAME(0, 4),
- ANIMCMD_FRAME(1, 4),
- ANIMCMD_FRAME(2, 4),
- ANIMCMD_FRAME(3, 4),
- ANIMCMD_END
-};
-
-const union AnimCmd gMapObjectImageAnim_8370DF0[] = {
- ANIMCMD_FRAME(0, 4, .hFlip = TRUE),
- ANIMCMD_FRAME(1, 4, .hFlip = TRUE),
- ANIMCMD_FRAME(2, 4, .hFlip = TRUE),
- ANIMCMD_FRAME(3, 4, .hFlip = TRUE),
- ANIMCMD_END
-};
-
-const union AnimCmd gMapObjectImageAnim_8370E04[] = {
- ANIMCMD_FRAME(11, 4),
- ANIMCMD_FRAME(10, 6),
- ANIMCMD_FRAME(9, 6),
- ANIMCMD_FRAME(8, 6),
- ANIMCMD_END
-};
-
-const union AnimCmd gMapObjectImageAnim_8370E18[] = {
- ANIMCMD_FRAME(7, 4),
- ANIMCMD_FRAME(6, 6),
- ANIMCMD_FRAME(5, 6),
- ANIMCMD_FRAME(4, 6),
- ANIMCMD_END
-};
-
-const union AnimCmd gMapObjectImageAnim_8370E2C[] = {
- ANIMCMD_FRAME(3, 4),
- ANIMCMD_FRAME(2, 4),
- ANIMCMD_FRAME(1, 4),
- ANIMCMD_FRAME(0, 4),
- ANIMCMD_END
-};
-
-const union AnimCmd gMapObjectImageAnim_8370E40[] = {
- ANIMCMD_FRAME(3, 4, .hFlip = TRUE),
- ANIMCMD_FRAME(2, 4, .hFlip = TRUE),
- ANIMCMD_FRAME(1, 4, .hFlip = TRUE),
- ANIMCMD_FRAME(0, 4, .hFlip = TRUE),
- ANIMCMD_END
-};
-
-const union AnimCmd gMapObjectImageAnim_8370E54[] = {
- ANIMCMD_FRAME(10, 6),
- ANIMCMD_FRAME(11, 6),
- ANIMCMD_LOOP(1),
- ANIMCMD_FRAME(11, 30),
- ANIMCMD_JUMP(0)
-};
-
-const union AnimCmd gMapObjectImageAnim_8370E68[] = {
- ANIMCMD_FRAME(6, 6),
- ANIMCMD_FRAME(7, 6),
- ANIMCMD_LOOP(1),
- ANIMCMD_FRAME(7, 30),
- ANIMCMD_JUMP(0)
-};
-
-const union AnimCmd gMapObjectImageAnim_8370E7C[] = {
- ANIMCMD_FRAME(2, 6),
- ANIMCMD_FRAME(3, 6),
- ANIMCMD_LOOP(1),
- ANIMCMD_FRAME(3, 30),
- ANIMCMD_JUMP(0)
-};
-
-const union AnimCmd gMapObjectImageAnim_8370E90[] = {
- ANIMCMD_FRAME(2, 6, .hFlip = TRUE),
- ANIMCMD_FRAME(3, 6, .hFlip = TRUE),
- ANIMCMD_LOOP(1),
- ANIMCMD_FRAME(3, 30, .hFlip = TRUE),
- ANIMCMD_JUMP(0)
-};
-
-const union AffineAnimCmd gMapObjectRotScalAnim_8370EA4[] = {
- AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 1),
- AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 1),
- AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 1),
- AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 1),
- AFFINEANIMCMD_LOOP(7),
- AFFINEANIMCMD_JUMP(0)
-};
-
-const union AffineAnimCmd gMapObjectRotScalAnim_8370ED4[] = {
- AFFINEANIMCMD_FRAME(0x0, 0x0, -1, 1),
- AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 1),
- AFFINEANIMCMD_LOOP(15),
- AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 1),
- AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 1),
- AFFINEANIMCMD_LOOP(15),
- AFFINEANIMCMD_JUMP(0)
-};
-
-const union AnimCmd *const gMapObjectImageAnimTable_Inanimate[] = {
- gMapObjectImageAnim_83708C8
-};
-
-const union AnimCmd *const gMapObjectImageAnimTable_QuintyPlump[] = {
- gMapObjectImageAnim_83708DC,
- gMapObjectImageAnim_83708E4,
- gMapObjectImageAnim_83708EC,
- gMapObjectImageAnim_83708F4,
- gMapObjectImageAnim_83708FC,
- gMapObjectImageAnim_8370910,
- gMapObjectImageAnim_8370924,
- gMapObjectImageAnim_8370938,
- gMapObjectImageAnim_837094C,
- gMapObjectImageAnim_8370960,
- gMapObjectImageAnim_8370974,
- gMapObjectImageAnim_8370988,
- gMapObjectImageAnim_837099C,
- gMapObjectImageAnim_83709B0,
- gMapObjectImageAnim_83709C4,
- gMapObjectImageAnim_83709D8,
- gMapObjectImageAnim_83709EC,
- gMapObjectImageAnim_8370A00,
- gMapObjectImageAnim_8370A14,
- gMapObjectImageAnim_8370A28
-};
-
-const union AnimCmd *const gMapObjectImageAnimTable_Standard[] = {
- gMapObjectImageAnim_8370A3C,
- gMapObjectImageAnim_8370A44,
- gMapObjectImageAnim_8370A4C,
- gMapObjectImageAnim_8370A54,
- gMapObjectImageAnim_8370A5C,
- gMapObjectImageAnim_8370A70,
- gMapObjectImageAnim_8370A84,
- gMapObjectImageAnim_8370A98,
- gMapObjectImageAnim_8370AAC,
- gMapObjectImageAnim_8370AC0,
- gMapObjectImageAnim_8370AD4,
- gMapObjectImageAnim_8370AE8,
- gMapObjectImageAnim_8370AFC,
- gMapObjectImageAnim_8370B10,
- gMapObjectImageAnim_8370B24,
- gMapObjectImageAnim_8370B38,
- gMapObjectImageAnim_8370B4C,
- gMapObjectImageAnim_8370B60,
- gMapObjectImageAnim_8370B74,
- gMapObjectImageAnim_8370B88
-};
-
-const union AnimCmd *const gMapObjectImageAnimTable_BrendanMayNormal[] = {
- gMapObjectImageAnim_8370A3C,
- gMapObjectImageAnim_8370A44,
- gMapObjectImageAnim_8370A4C,
- gMapObjectImageAnim_8370A54,
- gMapObjectImageAnim_8370A5C,
- gMapObjectImageAnim_8370A70,
- gMapObjectImageAnim_8370A84,
- gMapObjectImageAnim_8370A98,
- gMapObjectImageAnim_8370AAC,
- gMapObjectImageAnim_8370AC0,
- gMapObjectImageAnim_8370AD4,
- gMapObjectImageAnim_8370AE8,
- gMapObjectImageAnim_8370AFC,
- gMapObjectImageAnim_8370B10,
- gMapObjectImageAnim_8370B24,
- gMapObjectImageAnim_8370B38,
- gMapObjectImageAnim_8370B4C,
- gMapObjectImageAnim_8370B60,
- gMapObjectImageAnim_8370B74,
- gMapObjectImageAnim_8370B88,
- gMapObjectImageAnim_8370B9C,
- gMapObjectImageAnim_8370BB0,
- gMapObjectImageAnim_8370BC4,
- gMapObjectImageAnim_8370BD8
-};
-
-const union AnimCmd *const gMapObjectImageAnimTable_AcroBike[] = {
- gMapObjectImageAnim_8370A3C,
- gMapObjectImageAnim_8370A44,
- gMapObjectImageAnim_8370A4C,
- gMapObjectImageAnim_8370A54,
- gMapObjectImageAnim_8370A5C,
- gMapObjectImageAnim_8370A70,
- gMapObjectImageAnim_8370A84,
- gMapObjectImageAnim_8370A98,
- gMapObjectImageAnim_8370AAC,
- gMapObjectImageAnim_8370AC0,
- gMapObjectImageAnim_8370AD4,
- gMapObjectImageAnim_8370AE8,
- gMapObjectImageAnim_8370AFC,
- gMapObjectImageAnim_8370B10,
- gMapObjectImageAnim_8370B24,
- gMapObjectImageAnim_8370B38,
- gMapObjectImageAnim_8370B4C,
- gMapObjectImageAnim_8370B60,
- gMapObjectImageAnim_8370B74,
- gMapObjectImageAnim_8370B88,
- gMapObjectImageAnim_8370C24,
- gMapObjectImageAnim_8370C30,
- gMapObjectImageAnim_8370C3C,
- gMapObjectImageAnim_8370C48,
- gMapObjectImageAnim_8370C54,
- gMapObjectImageAnim_8370C60,
- gMapObjectImageAnim_8370C6C,
- gMapObjectImageAnim_8370C78,
- gMapObjectImageAnim_8370C84,
- gMapObjectImageAnim_8370C90,
- gMapObjectImageAnim_8370C9C,
- gMapObjectImageAnim_8370CA8,
- gMapObjectImageAnim_8370CB4,
- gMapObjectImageAnim_8370CC0,
- gMapObjectImageAnim_8370CCC,
- gMapObjectImageAnim_8370CD8,
- gMapObjectImageAnim_8370CE4,
- gMapObjectImageAnim_8370CF8,
- gMapObjectImageAnim_8370D0C,
- gMapObjectImageAnim_8370D20
-};
-
-const union AnimCmd *const gMapObjectImageAnimTable_Surfing[] = {
- gMapObjectImageAnim_8370A3C,
- gMapObjectImageAnim_8370A44,
- gMapObjectImageAnim_8370A4C,
- gMapObjectImageAnim_8370A54,
- gMapObjectImageAnim_8370A5C,
- gMapObjectImageAnim_8370A70,
- gMapObjectImageAnim_8370A84,
- gMapObjectImageAnim_8370A98,
- gMapObjectImageAnim_8370AAC,
- gMapObjectImageAnim_8370AC0,
- gMapObjectImageAnim_8370AD4,
- gMapObjectImageAnim_8370AE8,
- gMapObjectImageAnim_8370AFC,
- gMapObjectImageAnim_8370B10,
- gMapObjectImageAnim_8370B24,
- gMapObjectImageAnim_8370B38,
- gMapObjectImageAnim_8370B4C,
- gMapObjectImageAnim_8370B60,
- gMapObjectImageAnim_8370B74,
- gMapObjectImageAnim_8370B88,
- gMapObjectImageAnim_8370C04,
- gMapObjectImageAnim_8370C0C,
- gMapObjectImageAnim_8370C14,
- gMapObjectImageAnim_8370C1C
-};
-
-const union AnimCmd *const gMapObjectImageAnimTable_Nurse[] = {
- gMapObjectImageAnim_8370A3C,
- gMapObjectImageAnim_8370A44,
- gMapObjectImageAnim_8370A4C,
- gMapObjectImageAnim_8370A54,
- gMapObjectImageAnim_8370A5C,
- gMapObjectImageAnim_8370A70,
- gMapObjectImageAnim_8370A84,
- gMapObjectImageAnim_8370A98,
- gMapObjectImageAnim_8370AAC,
- gMapObjectImageAnim_8370AC0,
- gMapObjectImageAnim_8370AD4,
- gMapObjectImageAnim_8370AE8,
- gMapObjectImageAnim_8370AFC,
- gMapObjectImageAnim_8370B10,
- gMapObjectImageAnim_8370B24,
- gMapObjectImageAnim_8370B38,
- gMapObjectImageAnim_8370B4C,
- gMapObjectImageAnim_8370B60,
- gMapObjectImageAnim_8370B74,
- gMapObjectImageAnim_8370B88,
- gMapObjectImageAnim_8370D7C
-};
-
-const union AnimCmd *const gMapObjectImageAnimTable_FieldMove[] = {
- gMapObjectImageAnim_8370BEC
-};
-
-const union AnimCmd *const gMapObjectImageAnimTable_BerryTree[] = {
- gMapObjectImageAnim_8370D34,
- gMapObjectImageAnim_8370D3C,
- gMapObjectImageAnim_8370D48,
- gMapObjectImageAnim_8370D54,
- gMapObjectImageAnim_8370D68
-};
-
-const union AnimCmd *const gMapObjectImageAnimTable_BreakableRock[] = {
- gMapObjectImageAnim_83708C8,
- gMapObjectImageAnim_8370D8C
-};
-
-const union AnimCmd *const gMapObjectImageAnimTable_CuttableTree[] = {
- gMapObjectImageAnim_83708C8,
- gMapObjectImageAnim_8370DA0
-};
-
-const union AnimCmd *const gMapObjectImageAnimTable_Fishing[] = {
- gMapObjectImageAnim_8370DB4,
- gMapObjectImageAnim_8370DC8,
- gMapObjectImageAnim_8370DDC,
- gMapObjectImageAnim_8370DF0,
- gMapObjectImageAnim_8370E04,
- gMapObjectImageAnim_8370E18,
- gMapObjectImageAnim_8370E2C,
- gMapObjectImageAnim_8370E40,
- gMapObjectImageAnim_8370E54,
- gMapObjectImageAnim_8370E68,
- gMapObjectImageAnim_8370E7C,
- gMapObjectImageAnim_8370E90
-};
-
-const union AffineAnimCmd *const gMapObjectRotScalAnimTable_KyogreGroudon[] = {
- gMapObjectRotScalAnim_8370EA4,
- gMapObjectRotScalAnim_8370ED4
-};
-
-#endif //POKERUBY_MAP_OBJECT_ANIMS_H
diff --git a/src/data/field_map_obj/map_object_graphics_info.h b/src/data/field_map_obj/map_object_graphics_info.h
deleted file mode 100644
index 7b021b66d..000000000
--- a/src/data/field_map_obj/map_object_graphics_info.h
+++ /dev/null
@@ -1,227 +0,0 @@
-//
-
-//
-
-#ifndef POKERUBY_MAP_OBJECT_GRAPHICS_INFO_H
-#define POKERUBY_MAP_OBJECT_GRAPHICS_INFO_H
-
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_BrendanNormal = {0xffff, 0x1100, 0x1102, 512, 16, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_BrendanMayNormal, gMapObjectPicTable_BrendanNormal, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_BrendanMachBike = {0xffff, 0x1100, 0x1102, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gFieldOamData_32x32, gMapObjectSubspriteTables_32x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_BrendanMachBike, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_BrendanAcroBike = {0xffff, 0x1100, 0x1102, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gFieldOamData_32x32, gMapObjectSubspriteTables_32x32, gMapObjectImageAnimTable_AcroBike, gMapObjectPicTable_BrendanAcroBike, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_BrendanSurfing = {0xffff, 0x1100, 0x11ff, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gFieldOamData_32x32, gMapObjectSubspriteTables_32x32, gMapObjectImageAnimTable_Surfing, gMapObjectPicTable_BrendanSurfing, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_BrendanFieldMove = {0xffff, 0x1100, 0x1102, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_32x32, gMapObjectSubspriteTables_32x32, gMapObjectImageAnimTable_FieldMove, gMapObjectPicTable_BrendanFieldMove, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_QuintyPlump = {0xffff, 0x110b, 0x11ff, 512, 32, 32, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_32x32, gMapObjectSubspriteTables_32x32, gMapObjectImageAnimTable_QuintyPlump, gMapObjectPicTable_QuintyPlump, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_LittleBoy1 = {0xffff, 0x1103, 0x11ff, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_LittleBoy1, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_LittleGirl1 = {0xffff, 0x1104, 0x11ff, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_LittleGirl1, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Boy1 = {0xffff, 0x1105, 0x11ff, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Boy1, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Girl1 = {0xffff, 0x1104, 0x11ff, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Girl1, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Boy2 = {0xffff, 0x1103, 0x11ff, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Boy2, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Girl2 = {0xffff, 0x1105, 0x11ff, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Girl2, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_LittleBoy2 = {0xffff, 0x1106, 0x11ff, 128, 16, 16, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_LittleBoy2, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_LittleGirl2 = {0xffff, 0x1104, 0x11ff, 128, 16, 16, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_LittleGirl2, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Boy3 = {0xffff, 0x1106, 0x11ff, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Boy3, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Girl3 = {0xffff, 0x1104, 0x11ff, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Girl3, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Boy4 = {0xffff, 0x1105, 0x11ff, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Boy4, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Woman1 = {0xffff, 0x1103, 0x11ff, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Woman1, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_FatMan = {0xffff, 0x1103, 0x11ff, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_FatMan, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Woman2 = {0xffff, 0x1104, 0x11ff, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Woman2, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Man1 = {0xffff, 0x1105, 0x11ff, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Man1, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Woman3 = {0xffff, 0x1105, 0x11ff, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Woman3, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_OldMan1 = {0xffff, 0x1106, 0x11ff, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_OldMan1, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_OldWoman1 = {0xffff, 0x1106, 0x11ff, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_OldWoman1, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Man2 = {0xffff, 0x1105, 0x11ff, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Man2, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Woman4 = {0xffff, 0x1104, 0x11ff, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Woman4, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Man3 = {0xffff, 0x1104, 0x11ff, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Man3, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Woman5 = {0xffff, 0x1103, 0x11ff, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Woman5, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Cook = {0xffff, 0x1105, 0x11ff, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Cook, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Woman6 = {0xffff, 0x1105, 0x11ff, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Woman6, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_OldMan2 = {0xffff, 0x1106, 0x11ff, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_OldMan2, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_OldWoman2 = {0xffff, 0x1105, 0x11ff, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_OldWoman2, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Camper = {0xffff, 0x1105, 0x11ff, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Camper, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Picnicker = {0xffff, 0x1105, 0x11ff, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Picnicker, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Man4 = {0xffff, 0x1104, 0x11ff, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Man4, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Woman7 = {0xffff, 0x1104, 0x11ff, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Woman7, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Youngster = {0xffff, 0x1103, 0x11ff, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Youngster, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_BugCatcher = {0xffff, 0x1103, 0x11ff, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_BugCatcher, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_PsychicM = {0xffff, 0x1106, 0x11ff, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_PsychicM, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_SchoolKidM = {0xffff, 0x1103, 0x11ff, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_SchoolKidM, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Maniac = {0xffff, 0x1106, 0x11ff, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Maniac, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_HexManiac = {0xffff, 0x1106, 0x11ff, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_HexManiac, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Woman8 = {0xffff, 0x1105, 0x11ff, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Woman8, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_SwimmerM = {0xffff, 0x1103, 0x11ff, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_SwimmerM, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_SwimmerF = {0xffff, 0x1104, 0x11ff, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_SwimmerF, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_BlackBelt = {0xffff, 0x1105, 0x11ff, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_BlackBelt, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Beauty = {0xffff, 0x1105, 0x11ff, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Beauty, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Scientist1 = {0xffff, 0x1105, 0x11ff, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Scientist1, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Lass = {0xffff, 0x1106, 0x11ff, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Lass, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Gentleman = {0xffff, 0x1105, 0x11ff, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Gentleman, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Sailor = {0xffff, 0x1103, 0x11ff, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Sailor, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Fisherman = {0xffff, 0x1104, 0x11ff, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Fisherman, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_RunningTriathleteM = {0xffff, 0x1106, 0x11ff, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_RunningTriathleteM, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_RunningTriathleteF = {0xffff, 0x1104, 0x11ff, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_RunningTriathleteF, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_TuberF = {0xffff, 0x1103, 0x11ff, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_TuberF, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_TuberM = {0xffff, 0x1104, 0x11ff, 128, 16, 16, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_TuberM, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Hiker = {0xffff, 0x1103, 0x11ff, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Hiker, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_CyclingTriathleteM = {0xffff, 0x1105, 0x11ff, 512, 32, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gFieldOamData_32x32, gMapObjectSubspriteTables_32x32, gMapObjectImageAnimTable_AcroBike, gMapObjectPicTable_CyclingTriathleteM, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_CyclingTriathleteF = {0xffff, 0x1103, 0x11ff, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gFieldOamData_32x32, gMapObjectSubspriteTables_32x32, gMapObjectImageAnimTable_AcroBike, gMapObjectPicTable_CyclingTriathleteF, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Nurse = {0xffff, 0x1103, 0x11ff, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Nurse, gMapObjectPicTable_Nurse, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_ItemBall = {0xffff, 0x1105, 0x11ff, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_Inanimate, gMapObjectPicTable_ItemBall, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_BerryTree = {0xffff, 0x1103, 0x11ff, 256, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, NULL, gMapObjectImageAnimTable_BerryTree, gMapObjectPicTable_PechaBerryTree, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_BerryTreeEarlyStages = {0xffff, 0x1103, 0x11ff, 256, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_BerryTree, gMapObjectPicTable_PechaBerryTree, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_BerryTreeLateStages = {0xffff, 0x1103, 0x11ff, 256, 16, 32, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_BerryTree, gMapObjectPicTable_PechaBerryTree, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_ProfBirch = {0xffff, 0x1105, 0x11ff, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_ProfBirch, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Man5 = {0xffff, 0x1106, 0x11ff, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Man5, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Man6 = {0xffff, 0x1104, 0x11ff, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Man6, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_ReporterM = {0xffff, 0x1106, 0x11ff, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_ReporterM, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_ReporterF = {0xffff, 0x1106, 0x11ff, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_ReporterF, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Bard = {0xffff, 0x1103, 0x11ff, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_MauvilleOldMan1, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Hipster = {0xffff, 0x1104, 0x11ff, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_MauvilleOldMan1, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Trader = {0xffff, 0x1105, 0x11ff, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_MauvilleOldMan1, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Storyteller = {0xffff, 0x1103, 0x11ff, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_MauvilleOldMan2, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Giddy = {0xffff, 0x1104, 0x11ff, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_MauvilleOldMan2, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_UnusedMauvilleOldMan1 = {0xffff, 0x1105, 0x11ff, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_MauvilleOldMan2, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_UnusedMauvilleOldMan2 = {0xffff, 0x1106, 0x11ff, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_MauvilleOldMan2, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_UnusedNatuDoll = {0xffff, 0x1105, 0x11ff, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_Inanimate, gMapObjectPicTable_UnusedNatuDoll, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_UnusedMagnemiteDoll = {0xffff, 0x1105, 0x11ff, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_Inanimate, gMapObjectPicTable_UnusedMagnemiteDoll, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_UnusedSquirtleDoll = {0xffff, 0x1103, 0x11ff, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_Inanimate, gMapObjectPicTable_UnusedSquirtleDoll, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_UnusedWooperDoll = {0xffff, 0x1105, 0x11ff, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_Inanimate, gMapObjectPicTable_UnusedWooperDoll, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_UnusedPikachuDoll = {0xffff, 0x1104, 0x11ff, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_Inanimate, gMapObjectPicTable_UnusedPikachuDoll, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_UnusedPorygon2Doll = {0xffff, 0x1103, 0x11ff, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_Inanimate, gMapObjectPicTable_UnusedPorygon2Doll, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_CuttableTree = {0xffff, 0x1105, 0x11ff, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_CuttableTree, gMapObjectPicTable_CuttableTree, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_MartEmployee = {0xffff, 0x1103, 0x11ff, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_MartEmployee, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_RooftopSaleWoman = {0xffff, 0x1103, 0x11ff, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_RooftopSaleWoman, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Teala = {0xffff, 0x1103, 0x11ff, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Teala, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_BreakableRock = {0xffff, 0x1103, 0x11ff, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_BreakableRock, gMapObjectPicTable_BreakableRock, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_PushableBoulder = {0xffff, 0x1103, 0x11ff, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_Inanimate, gMapObjectPicTable_PushableBoulder, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_MrBrineysBoat = {0xffff, 0x1105, 0x11ff, 512, 32, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gFieldOamData_32x32, gMapObjectSubspriteTables_32x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_MrBrineysBoat, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_MayNormal = {0xffff, 0x1110, 0x1102, 512, 16, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_BrendanMayNormal, gMapObjectPicTable_MayNormal, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_MayMachBike = {0xffff, 0x1110, 0x1102, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gFieldOamData_32x32, gMapObjectSubspriteTables_32x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_MayMachBike, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_MayAcroBike = {0xffff, 0x1110, 0x1102, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gFieldOamData_32x32, gMapObjectSubspriteTables_32x32, gMapObjectImageAnimTable_AcroBike, gMapObjectPicTable_MayAcroBike, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_MaySurfing = {0xffff, 0x1110, 0x11ff, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gFieldOamData_32x32, gMapObjectSubspriteTables_32x32, gMapObjectImageAnimTable_Surfing, gMapObjectPicTable_MaySurfing, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_MayFieldMove = {0xffff, 0x1110, 0x1102, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_32x32, gMapObjectSubspriteTables_32x32, gMapObjectImageAnimTable_FieldMove, gMapObjectPicTable_MayFieldMove, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Truck = {0xffff, 0x110d, 0x11ff, 1152, 48, 48, 10, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_32x32, gMapObjectSubspriteTables_Truck, gMapObjectImageAnimTable_Inanimate, gMapObjectPicTable_Truck, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_MachokeCarryingBox = {0xffff, 0x110e, 0x11ff, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_32x32, gMapObjectSubspriteTables_32x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_MachokeCarryingBox, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_MachokeFacingAway = {0xffff, 0x110e, 0x11ff, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_32x32, gMapObjectSubspriteTables_32x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_MachokeFacingAway, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_BirchsBag = {0xffff, 0x1104, 0x11ff, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_Inanimate, gMapObjectPicTable_BirchsBag, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Poochyena = {0xffff, 0x110f, 0x11ff, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_32x32, gMapObjectSubspriteTables_32x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Poochyena, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Artist = {0xffff, 0x1106, 0x11ff, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Artist, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_RivalBrendanNormal = {0xffff, 0x1100, 0x1102, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_BrendanMayNormal, gMapObjectPicTable_BrendanNormal, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_RivalBrendanMachBike = {0xffff, 0x1100, 0x1102, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gFieldOamData_32x32, gMapObjectSubspriteTables_32x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_BrendanMachBike, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_RivalBrendanAcroBike = {0xffff, 0x1100, 0x1102, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gFieldOamData_32x32, gMapObjectSubspriteTables_32x32, gMapObjectImageAnimTable_AcroBike, gMapObjectPicTable_BrendanAcroBike, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_RivalBrendanSurfing = {0xffff, 0x1100, 0x11ff, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gFieldOamData_32x32, gMapObjectSubspriteTables_32x32, gMapObjectImageAnimTable_Surfing, gMapObjectPicTable_BrendanSurfing, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_RivalBrendanFieldMove = {0xffff, 0x1100, 0x1102, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_32x32, gMapObjectSubspriteTables_32x32, gMapObjectImageAnimTable_FieldMove, gMapObjectPicTable_BrendanFieldMove, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_RivalMayNormal = {0xffff, 0x1110, 0x1102, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_BrendanMayNormal, gMapObjectPicTable_MayNormal, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_RivalMayMachBike = {0xffff, 0x1110, 0x1102, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gFieldOamData_32x32, gMapObjectSubspriteTables_32x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_MayMachBike, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_RivalMayAcroBike = {0xffff, 0x1110, 0x1102, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gFieldOamData_32x32, gMapObjectSubspriteTables_32x32, gMapObjectImageAnimTable_AcroBike, gMapObjectPicTable_MayAcroBike, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_RivalMaySurfing = {0xffff, 0x1110, 0x11ff, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gFieldOamData_32x32, gMapObjectSubspriteTables_32x32, gMapObjectImageAnimTable_Surfing, gMapObjectPicTable_MaySurfing, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_RivalMayFieldMove = {0xffff, 0x1110, 0x1102, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_32x32, gMapObjectSubspriteTables_32x32, gMapObjectImageAnimTable_FieldMove, gMapObjectPicTable_MayFieldMove, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Cameraman = {0xffff, 0x1106, 0x11ff, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Cameraman, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_BrendanUnderwater = {0xffff, 0x1115, 0x11ff, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gFieldOamData_32x32, gMapObjectSubspriteTables_32x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_BrendanUnderwater, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_MayUnderwater = {0xffff, 0x1115, 0x11ff, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gFieldOamData_32x32, gMapObjectSubspriteTables_32x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_MayUnderwater, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_MovingBox = {0xffff, 0x1112, 0x11ff, 128, 16, 16, 10, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_Inanimate, gMapObjectPicTable_MovingBox, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_CableCar = {0xffff, 0x1113, 0x11ff, 2048, 64, 64, 10, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_64x64, gMapObjectSubspriteTables_CableCar, gMapObjectImageAnimTable_Inanimate, gMapObjectPicTable_CableCar, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Scientist2 = {0xffff, 0x1103, 0x11ff, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Scientist2, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Man7 = {0xffff, 0x1104, 0x11ff, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Man7, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_AquaMemberM = {0xffff, 0x1106, 0x11ff, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_AquaMemberM, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_AquaMemberF = {0xffff, 0x1106, 0x11ff, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_AquaMemberF, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_MagmaMemberM = {0xffff, 0x1104, 0x11ff, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_MagmaMemberM, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_MagmaMemberF = {0xffff, 0x1104, 0x11ff, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_MagmaMemberF, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Sidney = {0xffff, 0x1104, 0x11ff, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Sidney, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Phoebe = {0xffff, 0x1103, 0x11ff, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Phoebe, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Glacia = {0xffff, 0x1104, 0x11ff, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Glacia, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Drake = {0xffff, 0x1105, 0x11ff, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Drake, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Roxanne = {0xffff, 0x1103, 0x11ff, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Roxanne, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Brawly = {0xffff, 0x1105, 0x11ff, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Brawly, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Wattson = {0xffff, 0x1104, 0x11ff, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Wattson, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Flannery = {0xffff, 0x1103, 0x11ff, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Flannery, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Norman = {0xffff, 0x1106, 0x11ff, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Norman, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Winona = {0xffff, 0x1106, 0x11ff, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Winona, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Liza = {0xffff, 0x1103, 0x11ff, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Liza, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Tate = {0xffff, 0x1103, 0x11ff, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Tate, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Wallace = {0xffff, 0x1106, 0x11ff, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Wallace, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Steven = {0xffff, 0x1106, 0x11ff, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Steven, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Wally = {0xffff, 0x1103, 0x11ff, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Wally, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_LittleBoy3 = {0xffff, 0x1103, 0x11ff, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_LittleBoy3, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_BrendanFishing = {0xffff, 0x1100, 0x1102, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_32x32, gMapObjectSubspriteTables_32x32, gMapObjectImageAnimTable_Fishing, gMapObjectPicTable_BrendanFishing, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_MayFishing = {0xffff, 0x1110, 0x1102, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_32x32, gMapObjectSubspriteTables_32x32, gMapObjectImageAnimTable_Fishing, gMapObjectPicTable_MayFishing, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_HotSpringsOldWoman = {0xffff, 0x1106, 0x11ff, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_HotSpringsOldWoman, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_SSTidal = {0xffff, 0x1114, 0x11ff, 1920, 96, 40, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gFieldOamData_8x8, gMapObjectSubspriteTables_SSTidal, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_SSTidal, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_SubmarineShadow = {0xffff, 0x111a, 0x11ff, 1408, 88, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gFieldOamData_8x8, gMapObjectSubspriteTables_SubmarineShadow, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_SubmarineShadow, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_PichuDoll = {0xffff, 0x1104, 0x11ff, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_Inanimate, gMapObjectPicTable_PichuDoll, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_PikachuDoll = {0xffff, 0x1104, 0x11ff, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_Inanimate, gMapObjectPicTable_PikachuDoll, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_MarillDoll = {0xffff, 0x1103, 0x11ff, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_Inanimate, gMapObjectPicTable_MarillDoll, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_TogepiDoll = {0xffff, 0x1105, 0x11ff, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_Inanimate, gMapObjectPicTable_TogepiDoll, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_CyndaquilDoll = {0xffff, 0x1106, 0x11ff, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_Inanimate, gMapObjectPicTable_CyndaquilDoll, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_ChikoritaDoll = {0xffff, 0x1105, 0x11ff, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_Inanimate, gMapObjectPicTable_ChikoritaDoll, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_TotodileDoll = {0xffff, 0x1103, 0x11ff, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_Inanimate, gMapObjectPicTable_TotodileDoll, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_JigglypuffDoll = {0xffff, 0x1103, 0x11ff, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_Inanimate, gMapObjectPicTable_JigglypuffDoll, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_MeowthDoll = {0xffff, 0x1104, 0x11ff, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_Inanimate, gMapObjectPicTable_MeowthDoll, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_ClefairyDoll = {0xffff, 0x1103, 0x11ff, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_Inanimate, gMapObjectPicTable_ClefairyDoll, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_DittoDoll = {0xffff, 0x1106, 0x11ff, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_Inanimate, gMapObjectPicTable_DittoDoll, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_SmoochumDoll = {0xffff, 0x1106, 0x11ff, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_Inanimate, gMapObjectPicTable_SmoochumDoll, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_TreeckoDoll = {0xffff, 0x1105, 0x11ff, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_Inanimate, gMapObjectPicTable_TreeckoDoll, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_TorchicDoll = {0xffff, 0x1104, 0x11ff, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_Inanimate, gMapObjectPicTable_TorchicDoll, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_MudkipDoll = {0xffff, 0x1103, 0x11ff, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_Inanimate, gMapObjectPicTable_MudkipDoll, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_DuskullDoll = {0xffff, 0x1106, 0x11ff, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_Inanimate, gMapObjectPicTable_DuskullDoll, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_WynautDoll = {0xffff, 0x1103, 0x11ff, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_Inanimate, gMapObjectPicTable_WynautDoll, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_BaltoyDoll = {0xffff, 0x1103, 0x11ff, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_Inanimate, gMapObjectPicTable_BaltoyDoll, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_KecleonDoll = {0xffff, 0x1105, 0x11ff, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_Inanimate, gMapObjectPicTable_KecleonDoll, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_AzurillDoll = {0xffff, 0x1103, 0x11ff, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_Inanimate, gMapObjectPicTable_AzurillDoll, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_SkittyDoll = {0xffff, 0x1103, 0x11ff, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_Inanimate, gMapObjectPicTable_SkittyDoll, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_SwabluDoll = {0xffff, 0x1103, 0x11ff, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_Inanimate, gMapObjectPicTable_SwabluDoll, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_GulpinDoll = {0xffff, 0x1105, 0x11ff, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_Inanimate, gMapObjectPicTable_GulpinDoll, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_LotadDoll = {0xffff, 0x1105, 0x11ff, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_Inanimate, gMapObjectPicTable_LotadDoll, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_SeedotDoll = {0xffff, 0x1105, 0x11ff, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_Inanimate, gMapObjectPicTable_SeedotDoll, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_PikaCushion = {0xffff, 0x1104, 0x11ff, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_Inanimate, gMapObjectPicTable_PikaCushion, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_RoundCushion = {0xffff, 0x1103, 0x11ff, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_Inanimate, gMapObjectPicTable_RoundCushion, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_KissCushion = {0xffff, 0x1106, 0x11ff, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_Inanimate, gMapObjectPicTable_KissCushion, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_ZigzagCushion = {0xffff, 0x1103, 0x11ff, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_Inanimate, gMapObjectPicTable_ZigzagCushion, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_SpinCushion = {0xffff, 0x1103, 0x11ff, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_Inanimate, gMapObjectPicTable_SpinCushion, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_DiamondCushion = {0xffff, 0x1106, 0x11ff, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_Inanimate, gMapObjectPicTable_DiamondCushion, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_BallCushion = {0xffff, 0x1105, 0x11ff, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_Inanimate, gMapObjectPicTable_BallCushion, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_GrassCushion = {0xffff, 0x1105, 0x11ff, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_Inanimate, gMapObjectPicTable_GrassCushion, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_FireCushion = {0xffff, 0x1104, 0x11ff, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_Inanimate, gMapObjectPicTable_FireCushion, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_WaterCushion = {0xffff, 0x1103, 0x11ff, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_Inanimate, gMapObjectPicTable_WaterCushion, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_BigSnorlaxDoll = {0xffff, 0x1106, 0x11ff, 512, 32, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_32x32, gMapObjectSubspriteTables_32x32, gMapObjectImageAnimTable_Inanimate, gMapObjectPicTable_BigSnorlaxDoll, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_BigRhydonDoll = {0xffff, 0x1106, 0x11ff, 512, 32, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_32x32, gMapObjectSubspriteTables_32x32, gMapObjectImageAnimTable_Inanimate, gMapObjectPicTable_BigRhydonDoll, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_BigLaprasDoll = {0xffff, 0x1103, 0x11ff, 512, 32, 32, 2, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_32x32, gMapObjectSubspriteTables_32x32, gMapObjectImageAnimTable_Inanimate, gMapObjectPicTable_BigLaprasDoll, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_BigVenusaurDoll = {0xffff, 0x1105, 0x11ff, 512, 32, 32, 4, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_32x32, gMapObjectSubspriteTables_32x32, gMapObjectImageAnimTable_Inanimate, gMapObjectPicTable_BigVenusaurDoll, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_BigCharizardDoll = {0xffff, 0x1104, 0x11ff, 512, 32, 32, 3, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_32x32, gMapObjectSubspriteTables_32x32, gMapObjectImageAnimTable_Inanimate, gMapObjectPicTable_BigCharizardDoll, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_BigBlastoiseDoll = {0xffff, 0x1103, 0x11ff, 512, 32, 32, 2, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_32x32, gMapObjectSubspriteTables_32x32, gMapObjectImageAnimTable_Inanimate, gMapObjectPicTable_BigBlastoiseDoll, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_BigWailmerDoll = {0xffff, 0x1106, 0x11ff, 512, 32, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_32x32, gMapObjectSubspriteTables_32x32, gMapObjectImageAnimTable_Inanimate, gMapObjectPicTable_BigWailmerDoll, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_BigRegirockDoll = {0xffff, 0x1103, 0x11ff, 512, 32, 32, 2, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_32x32, gMapObjectSubspriteTables_32x32, gMapObjectImageAnimTable_Inanimate, gMapObjectPicTable_BigRegirockDoll, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_BigRegiceDoll = {0xffff, 0x1105, 0x11ff, 512, 32, 32, 4, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_32x32, gMapObjectSubspriteTables_32x32, gMapObjectImageAnimTable_Inanimate, gMapObjectPicTable_BigRegiceDoll, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_BigRegisteelDoll = {0xffff, 0x1106, 0x11ff, 512, 32, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_32x32, gMapObjectSubspriteTables_32x32, gMapObjectImageAnimTable_Inanimate, gMapObjectPicTable_BigRegisteelDoll, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Latias = {0xffff, 0x1104, 0x11ff, 512, 32, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gFieldOamData_32x32, gMapObjectSubspriteTables_32x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_LatiasLatios, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Latios = {0xffff, 0x1103, 0x11ff, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gFieldOamData_32x32, gMapObjectSubspriteTables_32x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_LatiasLatios, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Boy5 = {0xffff, 0x1105, 0x11ff, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Boy5, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_ContestJudge = {0xffff, 0x1105, 0x11ff, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_ContestJudge, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_BrendanWatering = {0xffff, 0x1100, 0x1102, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_32x32, gMapObjectSubspriteTables_32x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_BrendanWatering, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_MayWatering = {0xffff, 0x1110, 0x1102, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_32x32, gMapObjectSubspriteTables_32x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_MayWatering, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_BrendanDecorating = {0xffff, 0x1100, 0x1102, 256, 16, 32, 10, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Inanimate, gMapObjectPicTable_BrendanDecorating, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_MayDecorating = {0xffff, 0x1110, 0x1102, 256, 16, 32, 10, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Inanimate, gMapObjectPicTable_MayDecorating, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Archie = {0xffff, 0x1103, 0x11ff, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Archie, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Maxie = {0xffff, 0x1104, 0x11ff, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Maxie, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Kyogre1 = {0xffff, 0x1106, 0x11ff, 512, 32, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_32x32, gMapObjectSubspriteTables_32x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Kyogre, gMapObjectRotScalAnimTable_KyogreGroudon};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Groudon1 = {0xffff, 0x1105, 0x11ff, 512, 32, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_32x32, gMapObjectSubspriteTables_32x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Groudon, gMapObjectRotScalAnimTable_KyogreGroudon};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Fossil = {0xffff, 0x1103, 0x11ff, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_Inanimate, gMapObjectPicTable_Fossil, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Regirock = {0xffff, 0x1104, 0x11ff, 512, 32, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_32x32, gMapObjectSubspriteTables_32x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Regi, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Regice = {0xffff, 0x1105, 0x11ff, 512, 32, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_32x32, gMapObjectSubspriteTables_32x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Regi, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Registeel = {0xffff, 0x1106, 0x11ff, 512, 32, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_32x32, gMapObjectSubspriteTables_32x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Regi, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Skitty = {0xffff, 0x1103, 0x11ff, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Skitty, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Kecleon1 = {0xffff, 0x1105, 0x11ff, 128, 16, 16, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Kecleon, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Kyogre2 = {0xffff, 0x1116, 0x11ff, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_32x32, gMapObjectSubspriteTables_32x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Kyogre, gMapObjectRotScalAnimTable_KyogreGroudon};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Groudon2 = {0xffff, 0x1118, 0x11ff, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_32x32, gMapObjectSubspriteTables_32x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Groudon, gMapObjectRotScalAnimTable_KyogreGroudon};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Rayquaza = {0xffff, 0x1105, 0x11ff, 512, 32, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_32x32, gMapObjectSubspriteTables_32x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Rayquaza, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Zigzagoon = {0xffff, 0x1103, 0x11ff, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Zigzagoon, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Pikachu = {0xffff, 0x1104, 0x11ff, 128, 16, 16, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Pikachu, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Azumarill = {0xffff, 0x1103, 0x11ff, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Azumarill, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Wingull = {0xffff, 0x1103, 0x11ff, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Wingull, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Kecleon2 = {0xffff, 0x1105, 0x1102, 128, 16, 16, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Kecleon, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_TuberMSwimming = {0xffff, 0x1104, 0x11ff, 128, 16, 16, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_TuberMSwimming, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Azurill = {0xffff, 0x1103, 0x11ff, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x16, gMapObjectSubspriteTables_16x16, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Azurill, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Mom = {0xffff, 0x1106, 0x11ff, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_Standard, gMapObjectPicTable_Mom, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_LinkBrendan = {0xffff, 0x1110, 0x1102, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_BrendanMayNormal, gMapObjectPicTable_BrendanNormal, gDummySpriteAffineAnimTable};
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_LinkMay = {0xffff, 0x1110, 0x1102, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gFieldOamData_16x32, gMapObjectSubspriteTables_16x32, gMapObjectImageAnimTable_BrendanMayNormal, gMapObjectPicTable_MayNormal, gDummySpriteAffineAnimTable};
-
-#endif //POKERUBY_MAP_OBJECT_GRAPHICS_INFO_H
diff --git a/src/data/field_map_obj/map_object_graphics_info_pointers.h b/src/data/field_map_obj/map_object_graphics_info_pointers.h
deleted file mode 100644
index 22a052b0d..000000000
--- a/src/data/field_map_obj/map_object_graphics_info_pointers.h
+++ /dev/null
@@ -1,448 +0,0 @@
-//
-
-//
-
-#ifndef POKERUBY_MAP_OBJECT_GRAPHICS_INFO_POINTERS_H
-#define POKERUBY_MAP_OBJECT_GRAPHICS_INFO_POINTERS_H
-
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_BrendanNormal;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_BrendanMachBike;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_BrendanSurfing;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_BrendanFieldMove;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_QuintyPlump;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_LittleBoy1;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_LittleGirl1;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Boy1;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Girl1;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Boy2;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Girl2;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_LittleBoy2;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_LittleGirl2;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Boy3;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Girl3;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Boy4;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Woman1;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_FatMan;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Woman2;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Man1;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Woman3;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_OldMan1;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_OldWoman1;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Man2;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Woman4;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Man3;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Woman5;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Cook;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Woman6;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_OldMan2;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_OldWoman2;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Camper;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Picnicker;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Man4;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Woman7;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Youngster;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_BugCatcher;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_PsychicM;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_SchoolKidM;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Maniac;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_HexManiac;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Woman8;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_SwimmerM;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_SwimmerF;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_BlackBelt;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Beauty;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Scientist1;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Lass;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Gentleman;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Sailor;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Fisherman;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_RunningTriathleteM;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_RunningTriathleteF;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_TuberF;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_TuberM;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Hiker;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_CyclingTriathleteM;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_CyclingTriathleteF;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Nurse;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_ItemBall;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_BerryTree;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_BerryTreeEarlyStages;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_BerryTreeLateStages;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_BrendanAcroBike;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_ProfBirch;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Man5;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Man6;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_ReporterM;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_ReporterF;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Bard;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Hipster;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Trader;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Storyteller;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Giddy;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_UnusedMauvilleOldMan1;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_UnusedMauvilleOldMan2;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_UnusedNatuDoll;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_UnusedMagnemiteDoll;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_UnusedSquirtleDoll;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_UnusedWooperDoll;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_UnusedPikachuDoll;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_UnusedPorygon2Doll;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_CuttableTree;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_MartEmployee;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_RooftopSaleWoman;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Teala;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_BreakableRock;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_PushableBoulder;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_MrBrineysBoat;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_MayNormal;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_MayMachBike;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_MayAcroBike;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_MaySurfing;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_MayFieldMove;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Truck;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_MachokeCarryingBox;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_MachokeFacingAway;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_BirchsBag;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Poochyena;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Artist;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_RivalBrendanNormal;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_RivalBrendanMachBike;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_RivalBrendanAcroBike;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_RivalBrendanSurfing;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_RivalBrendanFieldMove;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_RivalMayNormal;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_RivalMayMachBike;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_RivalMayAcroBike;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_RivalMaySurfing;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_RivalMayFieldMove;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Cameraman;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_BrendanUnderwater;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_MayUnderwater;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_MovingBox;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_CableCar;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Scientist2;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Man7;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_AquaMemberM;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_AquaMemberF;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_MagmaMemberM;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_MagmaMemberF;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Sidney;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Phoebe;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Glacia;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Drake;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Roxanne;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Brawly;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Wattson;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Flannery;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Norman;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Winona;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Liza;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Tate;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Wallace;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Steven;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Wally;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_LittleBoy3;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_BrendanFishing;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_MayFishing;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_HotSpringsOldWoman;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_SSTidal;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_SubmarineShadow;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_PichuDoll;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_PikachuDoll;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_MarillDoll;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_TogepiDoll;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_CyndaquilDoll;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_ChikoritaDoll;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_TotodileDoll;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_JigglypuffDoll;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_MeowthDoll;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_ClefairyDoll;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_DittoDoll;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_SmoochumDoll;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_TreeckoDoll;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_TorchicDoll;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_MudkipDoll;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_DuskullDoll;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_WynautDoll;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_BaltoyDoll;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_KecleonDoll;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_AzurillDoll;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_SkittyDoll;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_SwabluDoll;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_GulpinDoll;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_LotadDoll;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_SeedotDoll;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_PikaCushion;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_RoundCushion;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_KissCushion;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_ZigzagCushion;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_SpinCushion;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_DiamondCushion;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_BallCushion;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_GrassCushion;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_FireCushion;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_WaterCushion;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_BigSnorlaxDoll;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_BigRhydonDoll;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_BigLaprasDoll;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_BigVenusaurDoll;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_BigCharizardDoll;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_BigBlastoiseDoll;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_BigWailmerDoll;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_BigRegirockDoll;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_BigRegiceDoll;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_BigRegisteelDoll;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Latias;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Latios;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Boy5;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_ContestJudge;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_BrendanWatering;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_MayWatering;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_BrendanDecorating;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_MayDecorating;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Archie;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Maxie;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Kyogre1;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Groudon1;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Fossil;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Regirock;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Regice;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Registeel;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Skitty;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Kecleon1;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Kyogre2;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Groudon2;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Rayquaza;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Zigzagoon;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Pikachu;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Azumarill;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Wingull;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Kecleon2;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_TuberMSwimming;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Azurill;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_Mom;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_LinkBrendan;
-const struct MapObjectGraphicsInfo gMapObjectGraphicsInfo_LinkMay;
-
-const struct MapObjectGraphicsInfo *const gMapObjectGraphicsInfoPointers[] = {
- &gMapObjectGraphicsInfo_BrendanNormal,
- &gMapObjectGraphicsInfo_BrendanMachBike,
- &gMapObjectGraphicsInfo_BrendanSurfing,
- &gMapObjectGraphicsInfo_BrendanFieldMove,
- &gMapObjectGraphicsInfo_QuintyPlump,
- &gMapObjectGraphicsInfo_LittleBoy1,
- &gMapObjectGraphicsInfo_LittleGirl1,
- &gMapObjectGraphicsInfo_Boy1,
- &gMapObjectGraphicsInfo_Girl1,
- &gMapObjectGraphicsInfo_Boy2,
- &gMapObjectGraphicsInfo_Girl2,
- &gMapObjectGraphicsInfo_LittleBoy2,
- &gMapObjectGraphicsInfo_LittleGirl2,
- &gMapObjectGraphicsInfo_Boy3,
- &gMapObjectGraphicsInfo_Girl3,
- &gMapObjectGraphicsInfo_Boy4,
- &gMapObjectGraphicsInfo_Woman1,
- &gMapObjectGraphicsInfo_FatMan,
- &gMapObjectGraphicsInfo_Woman2,
- &gMapObjectGraphicsInfo_Man1,
- &gMapObjectGraphicsInfo_Woman3,
- &gMapObjectGraphicsInfo_OldMan1,
- &gMapObjectGraphicsInfo_OldWoman1,
- &gMapObjectGraphicsInfo_Man2,
- &gMapObjectGraphicsInfo_Woman4,
- &gMapObjectGraphicsInfo_Man3,
- &gMapObjectGraphicsInfo_Woman5,
- &gMapObjectGraphicsInfo_Cook,
- &gMapObjectGraphicsInfo_Woman6,
- &gMapObjectGraphicsInfo_OldMan2,
- &gMapObjectGraphicsInfo_OldWoman2,
- &gMapObjectGraphicsInfo_Camper,
- &gMapObjectGraphicsInfo_Picnicker,
- &gMapObjectGraphicsInfo_Man4,
- &gMapObjectGraphicsInfo_Woman7,
- &gMapObjectGraphicsInfo_Youngster,
- &gMapObjectGraphicsInfo_BugCatcher,
- &gMapObjectGraphicsInfo_PsychicM,
- &gMapObjectGraphicsInfo_SchoolKidM,
- &gMapObjectGraphicsInfo_Maniac,
- &gMapObjectGraphicsInfo_HexManiac,
- &gMapObjectGraphicsInfo_Woman8,
- &gMapObjectGraphicsInfo_SwimmerM,
- &gMapObjectGraphicsInfo_SwimmerF,
- &gMapObjectGraphicsInfo_BlackBelt,
- &gMapObjectGraphicsInfo_Beauty,
- &gMapObjectGraphicsInfo_Scientist1,
- &gMapObjectGraphicsInfo_Lass,
- &gMapObjectGraphicsInfo_Gentleman,
- &gMapObjectGraphicsInfo_Sailor,
- &gMapObjectGraphicsInfo_Fisherman,
- &gMapObjectGraphicsInfo_RunningTriathleteM,
- &gMapObjectGraphicsInfo_RunningTriathleteF,
- &gMapObjectGraphicsInfo_TuberF,
- &gMapObjectGraphicsInfo_TuberM,
- &gMapObjectGraphicsInfo_Hiker,
- &gMapObjectGraphicsInfo_CyclingTriathleteM,
- &gMapObjectGraphicsInfo_CyclingTriathleteF,
- &gMapObjectGraphicsInfo_Nurse,
- &gMapObjectGraphicsInfo_ItemBall,
- &gMapObjectGraphicsInfo_BerryTree,
- &gMapObjectGraphicsInfo_BerryTreeEarlyStages,
- &gMapObjectGraphicsInfo_BerryTreeLateStages,
- &gMapObjectGraphicsInfo_BrendanAcroBike,
- &gMapObjectGraphicsInfo_ProfBirch,
- &gMapObjectGraphicsInfo_Man5,
- &gMapObjectGraphicsInfo_Man6,
- &gMapObjectGraphicsInfo_ReporterM,
- &gMapObjectGraphicsInfo_ReporterF,
- &gMapObjectGraphicsInfo_Bard,
- &gMapObjectGraphicsInfo_Hipster,
- &gMapObjectGraphicsInfo_Trader,
- &gMapObjectGraphicsInfo_Storyteller,
- &gMapObjectGraphicsInfo_Giddy,
- &gMapObjectGraphicsInfo_UnusedMauvilleOldMan1,
- &gMapObjectGraphicsInfo_UnusedMauvilleOldMan2,
- &gMapObjectGraphicsInfo_UnusedNatuDoll,
- &gMapObjectGraphicsInfo_UnusedMagnemiteDoll,
- &gMapObjectGraphicsInfo_UnusedSquirtleDoll,
- &gMapObjectGraphicsInfo_UnusedWooperDoll,
- &gMapObjectGraphicsInfo_UnusedPikachuDoll,
- &gMapObjectGraphicsInfo_UnusedPorygon2Doll,
- &gMapObjectGraphicsInfo_CuttableTree,
- &gMapObjectGraphicsInfo_MartEmployee,
- &gMapObjectGraphicsInfo_RooftopSaleWoman,
- &gMapObjectGraphicsInfo_Teala,
- &gMapObjectGraphicsInfo_BreakableRock,
- &gMapObjectGraphicsInfo_PushableBoulder,
- &gMapObjectGraphicsInfo_MrBrineysBoat,
- &gMapObjectGraphicsInfo_MayNormal,
- &gMapObjectGraphicsInfo_MayMachBike,
- &gMapObjectGraphicsInfo_MayAcroBike,
- &gMapObjectGraphicsInfo_MaySurfing,
- &gMapObjectGraphicsInfo_MayFieldMove,
- &gMapObjectGraphicsInfo_Truck,
- &gMapObjectGraphicsInfo_MachokeCarryingBox,
- &gMapObjectGraphicsInfo_MachokeFacingAway,
- &gMapObjectGraphicsInfo_BirchsBag,
- &gMapObjectGraphicsInfo_Poochyena,
- &gMapObjectGraphicsInfo_Artist,
- &gMapObjectGraphicsInfo_RivalBrendanNormal,
- &gMapObjectGraphicsInfo_RivalBrendanMachBike,
- &gMapObjectGraphicsInfo_RivalBrendanAcroBike,
- &gMapObjectGraphicsInfo_RivalBrendanSurfing,
- &gMapObjectGraphicsInfo_RivalBrendanFieldMove,
- &gMapObjectGraphicsInfo_RivalMayNormal,
- &gMapObjectGraphicsInfo_RivalMayMachBike,
- &gMapObjectGraphicsInfo_RivalMayAcroBike,
- &gMapObjectGraphicsInfo_RivalMaySurfing,
- &gMapObjectGraphicsInfo_RivalMayFieldMove,
- &gMapObjectGraphicsInfo_Cameraman,
- &gMapObjectGraphicsInfo_BrendanUnderwater,
- &gMapObjectGraphicsInfo_MayUnderwater,
- &gMapObjectGraphicsInfo_MovingBox,
- &gMapObjectGraphicsInfo_CableCar,
- &gMapObjectGraphicsInfo_Scientist2,
- &gMapObjectGraphicsInfo_Man7,
- &gMapObjectGraphicsInfo_AquaMemberM,
- &gMapObjectGraphicsInfo_AquaMemberF,
- &gMapObjectGraphicsInfo_MagmaMemberM,
- &gMapObjectGraphicsInfo_MagmaMemberF,
- &gMapObjectGraphicsInfo_Sidney,
- &gMapObjectGraphicsInfo_Phoebe,
- &gMapObjectGraphicsInfo_Glacia,
- &gMapObjectGraphicsInfo_Drake,
- &gMapObjectGraphicsInfo_Roxanne,
- &gMapObjectGraphicsInfo_Brawly,
- &gMapObjectGraphicsInfo_Wattson,
- &gMapObjectGraphicsInfo_Flannery,
- &gMapObjectGraphicsInfo_Norman,
- &gMapObjectGraphicsInfo_Winona,
- &gMapObjectGraphicsInfo_Liza,
- &gMapObjectGraphicsInfo_Tate,
- &gMapObjectGraphicsInfo_Wallace,
- &gMapObjectGraphicsInfo_Steven,
- &gMapObjectGraphicsInfo_Wally,
- &gMapObjectGraphicsInfo_LittleBoy3,
- &gMapObjectGraphicsInfo_BrendanFishing,
- &gMapObjectGraphicsInfo_MayFishing,
- &gMapObjectGraphicsInfo_HotSpringsOldWoman,
- &gMapObjectGraphicsInfo_SSTidal,
- &gMapObjectGraphicsInfo_SubmarineShadow,
- &gMapObjectGraphicsInfo_PichuDoll,
- &gMapObjectGraphicsInfo_PikachuDoll,
- &gMapObjectGraphicsInfo_MarillDoll,
- &gMapObjectGraphicsInfo_TogepiDoll,
- &gMapObjectGraphicsInfo_CyndaquilDoll,
- &gMapObjectGraphicsInfo_ChikoritaDoll,
- &gMapObjectGraphicsInfo_TotodileDoll,
- &gMapObjectGraphicsInfo_JigglypuffDoll,
- &gMapObjectGraphicsInfo_MeowthDoll,
- &gMapObjectGraphicsInfo_ClefairyDoll,
- &gMapObjectGraphicsInfo_DittoDoll,
- &gMapObjectGraphicsInfo_SmoochumDoll,
- &gMapObjectGraphicsInfo_TreeckoDoll,
- &gMapObjectGraphicsInfo_TorchicDoll,
- &gMapObjectGraphicsInfo_MudkipDoll,
- &gMapObjectGraphicsInfo_DuskullDoll,
- &gMapObjectGraphicsInfo_WynautDoll,
- &gMapObjectGraphicsInfo_BaltoyDoll,
- &gMapObjectGraphicsInfo_KecleonDoll,
- &gMapObjectGraphicsInfo_AzurillDoll,
- &gMapObjectGraphicsInfo_SkittyDoll,
- &gMapObjectGraphicsInfo_SwabluDoll,
- &gMapObjectGraphicsInfo_GulpinDoll,
- &gMapObjectGraphicsInfo_LotadDoll,
- &gMapObjectGraphicsInfo_SeedotDoll,
- &gMapObjectGraphicsInfo_PikaCushion,
- &gMapObjectGraphicsInfo_RoundCushion,
- &gMapObjectGraphicsInfo_KissCushion,
- &gMapObjectGraphicsInfo_ZigzagCushion,
- &gMapObjectGraphicsInfo_SpinCushion,
- &gMapObjectGraphicsInfo_DiamondCushion,
- &gMapObjectGraphicsInfo_BallCushion,
- &gMapObjectGraphicsInfo_GrassCushion,
- &gMapObjectGraphicsInfo_FireCushion,
- &gMapObjectGraphicsInfo_WaterCushion,
- &gMapObjectGraphicsInfo_BigSnorlaxDoll,
- &gMapObjectGraphicsInfo_BigRhydonDoll,
- &gMapObjectGraphicsInfo_BigLaprasDoll,
- &gMapObjectGraphicsInfo_BigVenusaurDoll,
- &gMapObjectGraphicsInfo_BigCharizardDoll,
- &gMapObjectGraphicsInfo_BigBlastoiseDoll,
- &gMapObjectGraphicsInfo_BigWailmerDoll,
- &gMapObjectGraphicsInfo_BigRegirockDoll,
- &gMapObjectGraphicsInfo_BigRegiceDoll,
- &gMapObjectGraphicsInfo_BigRegisteelDoll,
- &gMapObjectGraphicsInfo_Latias,
- &gMapObjectGraphicsInfo_Latios,
- &gMapObjectGraphicsInfo_Boy5,
- &gMapObjectGraphicsInfo_ContestJudge,
- &gMapObjectGraphicsInfo_BrendanWatering,
- &gMapObjectGraphicsInfo_MayWatering,
- &gMapObjectGraphicsInfo_BrendanDecorating,
- &gMapObjectGraphicsInfo_MayDecorating,
- &gMapObjectGraphicsInfo_Archie,
- &gMapObjectGraphicsInfo_Maxie,
- &gMapObjectGraphicsInfo_Kyogre1,
- &gMapObjectGraphicsInfo_Groudon1,
- &gMapObjectGraphicsInfo_Fossil,
- &gMapObjectGraphicsInfo_Regirock,
- &gMapObjectGraphicsInfo_Regice,
- &gMapObjectGraphicsInfo_Registeel,
- &gMapObjectGraphicsInfo_Skitty,
- &gMapObjectGraphicsInfo_Kecleon1,
- &gMapObjectGraphicsInfo_Kyogre2,
- &gMapObjectGraphicsInfo_Groudon2,
- &gMapObjectGraphicsInfo_Rayquaza,
- &gMapObjectGraphicsInfo_Zigzagoon,
- &gMapObjectGraphicsInfo_Pikachu,
- &gMapObjectGraphicsInfo_Azumarill,
- &gMapObjectGraphicsInfo_Wingull,
- &gMapObjectGraphicsInfo_Kecleon2,
- &gMapObjectGraphicsInfo_TuberMSwimming,
- &gMapObjectGraphicsInfo_Azurill,
- &gMapObjectGraphicsInfo_Mom,
- &gMapObjectGraphicsInfo_LinkBrendan,
- &gMapObjectGraphicsInfo_LinkMay
-};
-
-#endif //POKERUBY_MAP_OBJECT_GRAPHICS_INFO_POINTERS_H
diff --git a/src/data/field_map_obj/map_object_pic_tables.h b/src/data/field_map_obj/map_object_pic_tables.h
deleted file mode 100644
index ecb5c8836..000000000
--- a/src/data/field_map_obj/map_object_pic_tables.h
+++ /dev/null
@@ -1,1879 +0,0 @@
-//
-
-//
-
-#ifndef POKERUBY_MAP_OBJECT_PIC_TABLES_H
-#define POKERUBY_MAP_OBJECT_PIC_TABLES_H
-
-const struct SpriteFrameImage gMapObjectPicTable_BrendanNormal[] = {
- obj_frame_tiles(gMapObjectPic_BrendanNormal_0),
- obj_frame_tiles(gMapObjectPic_BrendanNormal_1),
- obj_frame_tiles(gMapObjectPic_BrendanNormal_2),
- obj_frame_tiles(gMapObjectPic_BrendanNormal_3),
- obj_frame_tiles(gMapObjectPic_BrendanNormal_4),
- obj_frame_tiles(gMapObjectPic_BrendanNormal_5),
- obj_frame_tiles(gMapObjectPic_BrendanNormal_6),
- obj_frame_tiles(gMapObjectPic_BrendanNormal_7),
- obj_frame_tiles(gMapObjectPic_BrendanNormal_8),
- obj_frame_tiles(gMapObjectPic_BrendanNormal_9),
- obj_frame_tiles(gMapObjectPic_BrendanNormal_10),
- obj_frame_tiles(gMapObjectPic_BrendanNormal_11),
- obj_frame_tiles(gMapObjectPic_BrendanNormal_12),
- obj_frame_tiles(gMapObjectPic_BrendanNormal_13),
- obj_frame_tiles(gMapObjectPic_BrendanNormal_14),
- obj_frame_tiles(gMapObjectPic_BrendanNormal_15),
- obj_frame_tiles(gMapObjectPic_BrendanNormal_16),
- obj_frame_tiles(gMapObjectPic_BrendanNormal_17)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_BrendanMachBike[] = {
- obj_frame_tiles(gMapObjectPic_BrendanMachBike_0),
- obj_frame_tiles(gMapObjectPic_BrendanMachBike_1),
- obj_frame_tiles(gMapObjectPic_BrendanMachBike_2),
- obj_frame_tiles(gMapObjectPic_BrendanMachBike_3),
- obj_frame_tiles(gMapObjectPic_BrendanMachBike_4),
- obj_frame_tiles(gMapObjectPic_BrendanMachBike_5),
- obj_frame_tiles(gMapObjectPic_BrendanMachBike_6),
- obj_frame_tiles(gMapObjectPic_BrendanMachBike_7),
- obj_frame_tiles(gMapObjectPic_BrendanMachBike_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_BrendanAcroBike[] = {
- obj_frame_tiles(gMapObjectPic_BrendanAcroBike_0),
- obj_frame_tiles(gMapObjectPic_BrendanAcroBike_1),
- obj_frame_tiles(gMapObjectPic_BrendanAcroBike_2),
- obj_frame_tiles(gMapObjectPic_BrendanAcroBike_3),
- obj_frame_tiles(gMapObjectPic_BrendanAcroBike_4),
- obj_frame_tiles(gMapObjectPic_BrendanAcroBike_5),
- obj_frame_tiles(gMapObjectPic_BrendanAcroBike_6),
- obj_frame_tiles(gMapObjectPic_BrendanAcroBike_7),
- obj_frame_tiles(gMapObjectPic_BrendanAcroBike_8),
- obj_frame_tiles(gMapObjectPic_BrendanAcroBike_9),
- obj_frame_tiles(gMapObjectPic_BrendanAcroBike_10),
- obj_frame_tiles(gMapObjectPic_BrendanAcroBike_11),
- obj_frame_tiles(gMapObjectPic_BrendanAcroBike_12),
- obj_frame_tiles(gMapObjectPic_BrendanAcroBike_13),
- obj_frame_tiles(gMapObjectPic_BrendanAcroBike_14),
- obj_frame_tiles(gMapObjectPic_BrendanAcroBike_15),
- obj_frame_tiles(gMapObjectPic_BrendanAcroBike_16),
- obj_frame_tiles(gMapObjectPic_BrendanAcroBike_17),
- obj_frame_tiles(gMapObjectPic_BrendanAcroBike_18),
- obj_frame_tiles(gMapObjectPic_BrendanAcroBike_19),
- obj_frame_tiles(gMapObjectPic_BrendanAcroBike_20),
- obj_frame_tiles(gMapObjectPic_BrendanAcroBike_21),
- obj_frame_tiles(gMapObjectPic_BrendanAcroBike_22),
- obj_frame_tiles(gMapObjectPic_BrendanAcroBike_23),
- obj_frame_tiles(gMapObjectPic_BrendanAcroBike_24),
- obj_frame_tiles(gMapObjectPic_BrendanAcroBike_25),
- obj_frame_tiles(gMapObjectPic_BrendanAcroBike_26)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_BrendanSurfing[] = {
- obj_frame_tiles(gMapObjectPic_BrendanSurfing_0),
- obj_frame_tiles(gMapObjectPic_BrendanSurfing_1),
- obj_frame_tiles(gMapObjectPic_BrendanSurfing_2),
- obj_frame_tiles(gMapObjectPic_BrendanSurfing_0),
- obj_frame_tiles(gMapObjectPic_BrendanSurfing_0),
- obj_frame_tiles(gMapObjectPic_BrendanSurfing_1),
- obj_frame_tiles(gMapObjectPic_BrendanSurfing_1),
- obj_frame_tiles(gMapObjectPic_BrendanSurfing_2),
- obj_frame_tiles(gMapObjectPic_BrendanSurfing_2),
- obj_frame_tiles(gMapObjectPic_BrendanSurfing_3),
- obj_frame_tiles(gMapObjectPic_BrendanSurfing_4),
- obj_frame_tiles(gMapObjectPic_BrendanSurfing_5)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_BrendanUnderwater[] = {
- obj_frame_tiles(gMapObjectPic_BrendanUnderwater_0),
- obj_frame_tiles(gMapObjectPic_BrendanUnderwater_1),
- obj_frame_tiles(gMapObjectPic_BrendanUnderwater_2),
- obj_frame_tiles(gMapObjectPic_BrendanUnderwater_0),
- obj_frame_tiles(gMapObjectPic_BrendanUnderwater_0),
- obj_frame_tiles(gMapObjectPic_BrendanUnderwater_1),
- obj_frame_tiles(gMapObjectPic_BrendanUnderwater_1),
- obj_frame_tiles(gMapObjectPic_BrendanUnderwater_2),
- obj_frame_tiles(gMapObjectPic_BrendanUnderwater_2)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_BrendanFieldMove[] = {
- obj_frame_tiles(gMapObjectPic_BrendanFieldMove_0),
- obj_frame_tiles(gMapObjectPic_BrendanFieldMove_1),
- obj_frame_tiles(gMapObjectPic_BrendanFieldMove_2),
- obj_frame_tiles(gMapObjectPic_BrendanFieldMove_3),
- obj_frame_tiles(gMapObjectPic_BrendanFieldMove_4)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_QuintyPlump[] = {
- obj_frame_tiles(gMapObjectPic_QuintyPlump_0),
- obj_frame_tiles(gMapObjectPic_QuintyPlump_1),
- obj_frame_tiles(gMapObjectPic_QuintyPlump_2),
- obj_frame_tiles(gMapObjectPic_QuintyPlump_3),
- obj_frame_tiles(gMapObjectPic_QuintyPlump_4),
- obj_frame_tiles(gMapObjectPic_QuintyPlump_5),
- obj_frame_tiles(gMapObjectPic_QuintyPlump_6)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_LittleBoy1[] = {
- obj_frame_tiles(gMapObjectPic_LittleBoy1_0),
- obj_frame_tiles(gMapObjectPic_LittleBoy1_1),
- obj_frame_tiles(gMapObjectPic_LittleBoy1_2),
- obj_frame_tiles(gMapObjectPic_LittleBoy1_3),
- obj_frame_tiles(gMapObjectPic_LittleBoy1_4),
- obj_frame_tiles(gMapObjectPic_LittleBoy1_5),
- obj_frame_tiles(gMapObjectPic_LittleBoy1_6),
- obj_frame_tiles(gMapObjectPic_LittleBoy1_7),
- obj_frame_tiles(gMapObjectPic_LittleBoy1_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_LittleGirl1[] = {
- obj_frame_tiles(gMapObjectPic_LittleGirl1_0),
- obj_frame_tiles(gMapObjectPic_LittleGirl1_1),
- obj_frame_tiles(gMapObjectPic_LittleGirl1_2),
- obj_frame_tiles(gMapObjectPic_LittleGirl1_3),
- obj_frame_tiles(gMapObjectPic_LittleGirl1_4),
- obj_frame_tiles(gMapObjectPic_LittleGirl1_5),
- obj_frame_tiles(gMapObjectPic_LittleGirl1_6),
- obj_frame_tiles(gMapObjectPic_LittleGirl1_7),
- obj_frame_tiles(gMapObjectPic_LittleGirl1_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Boy1[] = {
- obj_frame_tiles(gMapObjectPic_Boy1_0),
- obj_frame_tiles(gMapObjectPic_Boy1_1),
- obj_frame_tiles(gMapObjectPic_Boy1_2),
- obj_frame_tiles(gMapObjectPic_Boy1_3),
- obj_frame_tiles(gMapObjectPic_Boy1_4),
- obj_frame_tiles(gMapObjectPic_Boy1_5),
- obj_frame_tiles(gMapObjectPic_Boy1_6),
- obj_frame_tiles(gMapObjectPic_Boy1_7),
- obj_frame_tiles(gMapObjectPic_Boy1_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Girl1[] = {
- obj_frame_tiles(gMapObjectPic_Girl1_0),
- obj_frame_tiles(gMapObjectPic_Girl1_1),
- obj_frame_tiles(gMapObjectPic_Girl1_2),
- obj_frame_tiles(gMapObjectPic_Girl1_3),
- obj_frame_tiles(gMapObjectPic_Girl1_4),
- obj_frame_tiles(gMapObjectPic_Girl1_5),
- obj_frame_tiles(gMapObjectPic_Girl1_6),
- obj_frame_tiles(gMapObjectPic_Girl1_7),
- obj_frame_tiles(gMapObjectPic_Girl1_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Boy2[] = {
- obj_frame_tiles(gMapObjectPic_Boy2_0),
- obj_frame_tiles(gMapObjectPic_Boy2_1),
- obj_frame_tiles(gMapObjectPic_Boy2_2),
- obj_frame_tiles(gMapObjectPic_Boy2_3),
- obj_frame_tiles(gMapObjectPic_Boy2_4),
- obj_frame_tiles(gMapObjectPic_Boy2_5),
- obj_frame_tiles(gMapObjectPic_Boy2_6),
- obj_frame_tiles(gMapObjectPic_Boy2_7),
- obj_frame_tiles(gMapObjectPic_Boy2_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Girl2[] = {
- obj_frame_tiles(gMapObjectPic_Girl2_0),
- obj_frame_tiles(gMapObjectPic_Girl2_1),
- obj_frame_tiles(gMapObjectPic_Girl2_2),
- obj_frame_tiles(gMapObjectPic_Girl2_3),
- obj_frame_tiles(gMapObjectPic_Girl2_4),
- obj_frame_tiles(gMapObjectPic_Girl2_5),
- obj_frame_tiles(gMapObjectPic_Girl2_6),
- obj_frame_tiles(gMapObjectPic_Girl2_7),
- obj_frame_tiles(gMapObjectPic_Girl2_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_LittleBoy2[] = {
- obj_frame_tiles(gMapObjectPic_LittleBoy2_0),
- obj_frame_tiles(gMapObjectPic_LittleBoy2_1),
- obj_frame_tiles(gMapObjectPic_LittleBoy2_2),
- obj_frame_tiles(gMapObjectPic_LittleBoy2_3),
- obj_frame_tiles(gMapObjectPic_LittleBoy2_4),
- obj_frame_tiles(gMapObjectPic_LittleBoy2_5),
- obj_frame_tiles(gMapObjectPic_LittleBoy2_6),
- obj_frame_tiles(gMapObjectPic_LittleBoy2_7),
- obj_frame_tiles(gMapObjectPic_LittleBoy2_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_LittleGirl2[] = {
- obj_frame_tiles(gMapObjectPic_LittleGirl2_0),
- obj_frame_tiles(gMapObjectPic_LittleGirl2_1),
- obj_frame_tiles(gMapObjectPic_LittleGirl2_2),
- obj_frame_tiles(gMapObjectPic_LittleGirl2_3),
- obj_frame_tiles(gMapObjectPic_LittleGirl2_4),
- obj_frame_tiles(gMapObjectPic_LittleGirl2_5),
- obj_frame_tiles(gMapObjectPic_LittleGirl2_6),
- obj_frame_tiles(gMapObjectPic_LittleGirl2_7),
- obj_frame_tiles(gMapObjectPic_LittleGirl2_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Boy3[] = {
- obj_frame_tiles(gMapObjectPic_Boy3_0),
- obj_frame_tiles(gMapObjectPic_Boy3_1),
- obj_frame_tiles(gMapObjectPic_Boy3_2),
- obj_frame_tiles(gMapObjectPic_Boy3_3),
- obj_frame_tiles(gMapObjectPic_Boy3_4),
- obj_frame_tiles(gMapObjectPic_Boy3_5),
- obj_frame_tiles(gMapObjectPic_Boy3_6),
- obj_frame_tiles(gMapObjectPic_Boy3_7),
- obj_frame_tiles(gMapObjectPic_Boy3_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Girl3[] = {
- obj_frame_tiles(gMapObjectPic_Girl3_0),
- obj_frame_tiles(gMapObjectPic_Girl3_1),
- obj_frame_tiles(gMapObjectPic_Girl3_2),
- obj_frame_tiles(gMapObjectPic_Girl3_3),
- obj_frame_tiles(gMapObjectPic_Girl3_4),
- obj_frame_tiles(gMapObjectPic_Girl3_5),
- obj_frame_tiles(gMapObjectPic_Girl3_6),
- obj_frame_tiles(gMapObjectPic_Girl3_7),
- obj_frame_tiles(gMapObjectPic_Girl3_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Boy4[] = {
- obj_frame_tiles(gMapObjectPic_Boy4_0),
- obj_frame_tiles(gMapObjectPic_Boy4_1),
- obj_frame_tiles(gMapObjectPic_Boy4_2),
- obj_frame_tiles(gMapObjectPic_Boy4_3),
- obj_frame_tiles(gMapObjectPic_Boy4_4),
- obj_frame_tiles(gMapObjectPic_Boy4_5),
- obj_frame_tiles(gMapObjectPic_Boy4_6),
- obj_frame_tiles(gMapObjectPic_Boy4_7),
- obj_frame_tiles(gMapObjectPic_Boy4_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Woman1[] = {
- obj_frame_tiles(gMapObjectPic_Woman1_0),
- obj_frame_tiles(gMapObjectPic_Woman1_1),
- obj_frame_tiles(gMapObjectPic_Woman1_2),
- obj_frame_tiles(gMapObjectPic_Woman1_3),
- obj_frame_tiles(gMapObjectPic_Woman1_4),
- obj_frame_tiles(gMapObjectPic_Woman1_5),
- obj_frame_tiles(gMapObjectPic_Woman1_6),
- obj_frame_tiles(gMapObjectPic_Woman1_7),
- obj_frame_tiles(gMapObjectPic_Woman1_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_FatMan[] = {
- obj_frame_tiles(gMapObjectPic_FatMan_0),
- obj_frame_tiles(gMapObjectPic_FatMan_1),
- obj_frame_tiles(gMapObjectPic_FatMan_2),
- obj_frame_tiles(gMapObjectPic_FatMan_3),
- obj_frame_tiles(gMapObjectPic_FatMan_4),
- obj_frame_tiles(gMapObjectPic_FatMan_5),
- obj_frame_tiles(gMapObjectPic_FatMan_6),
- obj_frame_tiles(gMapObjectPic_FatMan_7),
- obj_frame_tiles(gMapObjectPic_FatMan_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Woman2[] = {
- obj_frame_tiles(gMapObjectPic_Woman2_0),
- obj_frame_tiles(gMapObjectPic_Woman2_1),
- obj_frame_tiles(gMapObjectPic_Woman2_2),
- obj_frame_tiles(gMapObjectPic_Woman2_3),
- obj_frame_tiles(gMapObjectPic_Woman2_4),
- obj_frame_tiles(gMapObjectPic_Woman2_5),
- obj_frame_tiles(gMapObjectPic_Woman2_6),
- obj_frame_tiles(gMapObjectPic_Woman2_7),
- obj_frame_tiles(gMapObjectPic_Woman2_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Man1[] = {
- obj_frame_tiles(gMapObjectPic_Man1_0),
- obj_frame_tiles(gMapObjectPic_Man1_1),
- obj_frame_tiles(gMapObjectPic_Man1_2),
- obj_frame_tiles(gMapObjectPic_Man1_3),
- obj_frame_tiles(gMapObjectPic_Man1_4),
- obj_frame_tiles(gMapObjectPic_Man1_5),
- obj_frame_tiles(gMapObjectPic_Man1_6),
- obj_frame_tiles(gMapObjectPic_Man1_7),
- obj_frame_tiles(gMapObjectPic_Man1_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Woman3[] = {
- obj_frame_tiles(gMapObjectPic_Woman3_0),
- obj_frame_tiles(gMapObjectPic_Woman3_1),
- obj_frame_tiles(gMapObjectPic_Woman3_2),
- obj_frame_tiles(gMapObjectPic_Woman3_3),
- obj_frame_tiles(gMapObjectPic_Woman3_4),
- obj_frame_tiles(gMapObjectPic_Woman3_5),
- obj_frame_tiles(gMapObjectPic_Woman3_6),
- obj_frame_tiles(gMapObjectPic_Woman3_7),
- obj_frame_tiles(gMapObjectPic_Woman3_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_OldMan1[] = {
- obj_frame_tiles(gMapObjectPic_OldMan1_0),
- obj_frame_tiles(gMapObjectPic_OldMan1_1),
- obj_frame_tiles(gMapObjectPic_OldMan1_2),
- obj_frame_tiles(gMapObjectPic_OldMan1_3),
- obj_frame_tiles(gMapObjectPic_OldMan1_4),
- obj_frame_tiles(gMapObjectPic_OldMan1_5),
- obj_frame_tiles(gMapObjectPic_OldMan1_6),
- obj_frame_tiles(gMapObjectPic_OldMan1_7),
- obj_frame_tiles(gMapObjectPic_OldMan1_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_OldWoman1[] = {
- obj_frame_tiles(gMapObjectPic_OldWoman1_0),
- obj_frame_tiles(gMapObjectPic_OldWoman1_1),
- obj_frame_tiles(gMapObjectPic_OldWoman1_2),
- obj_frame_tiles(gMapObjectPic_OldWoman1_3),
- obj_frame_tiles(gMapObjectPic_OldWoman1_4),
- obj_frame_tiles(gMapObjectPic_OldWoman1_5),
- obj_frame_tiles(gMapObjectPic_OldWoman1_6),
- obj_frame_tiles(gMapObjectPic_OldWoman1_7),
- obj_frame_tiles(gMapObjectPic_OldWoman1_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Man2[] = {
- obj_frame_tiles(gMapObjectPic_Man2_0),
- obj_frame_tiles(gMapObjectPic_Man2_1),
- obj_frame_tiles(gMapObjectPic_Man2_2),
- obj_frame_tiles(gMapObjectPic_Man2_3),
- obj_frame_tiles(gMapObjectPic_Man2_4),
- obj_frame_tiles(gMapObjectPic_Man2_5),
- obj_frame_tiles(gMapObjectPic_Man2_6),
- obj_frame_tiles(gMapObjectPic_Man2_7),
- obj_frame_tiles(gMapObjectPic_Man2_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Woman4[] = {
- obj_frame_tiles(gMapObjectPic_Woman4_0),
- obj_frame_tiles(gMapObjectPic_Woman4_1),
- obj_frame_tiles(gMapObjectPic_Woman4_2),
- obj_frame_tiles(gMapObjectPic_Woman4_3),
- obj_frame_tiles(gMapObjectPic_Woman4_4),
- obj_frame_tiles(gMapObjectPic_Woman4_5),
- obj_frame_tiles(gMapObjectPic_Woman4_6),
- obj_frame_tiles(gMapObjectPic_Woman4_7),
- obj_frame_tiles(gMapObjectPic_Woman4_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Man3[] = {
- obj_frame_tiles(gMapObjectPic_Man3_0),
- obj_frame_tiles(gMapObjectPic_Man3_1),
- obj_frame_tiles(gMapObjectPic_Man3_2),
- obj_frame_tiles(gMapObjectPic_Man3_3),
- obj_frame_tiles(gMapObjectPic_Man3_4),
- obj_frame_tiles(gMapObjectPic_Man3_5),
- obj_frame_tiles(gMapObjectPic_Man3_6),
- obj_frame_tiles(gMapObjectPic_Man3_7),
- obj_frame_tiles(gMapObjectPic_Man3_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Woman5[] = {
- obj_frame_tiles(gMapObjectPic_Woman5_0),
- obj_frame_tiles(gMapObjectPic_Woman5_1),
- obj_frame_tiles(gMapObjectPic_Woman5_2),
- obj_frame_tiles(gMapObjectPic_Woman5_3),
- obj_frame_tiles(gMapObjectPic_Woman5_4),
- obj_frame_tiles(gMapObjectPic_Woman5_5),
- obj_frame_tiles(gMapObjectPic_Woman5_6),
- obj_frame_tiles(gMapObjectPic_Woman5_7),
- obj_frame_tiles(gMapObjectPic_Woman5_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Cook[] = {
- obj_frame_tiles(gMapObjectPic_Cook_0),
- obj_frame_tiles(gMapObjectPic_Cook_1),
- obj_frame_tiles(gMapObjectPic_Cook_2),
- obj_frame_tiles(gMapObjectPic_Cook_0),
- obj_frame_tiles(gMapObjectPic_Cook_0),
- obj_frame_tiles(gMapObjectPic_Cook_1),
- obj_frame_tiles(gMapObjectPic_Cook_1),
- obj_frame_tiles(gMapObjectPic_Cook_2),
- obj_frame_tiles(gMapObjectPic_Cook_2)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Woman6[] = {
- obj_frame_tiles(gMapObjectPic_Woman6_0),
- obj_frame_tiles(gMapObjectPic_Woman6_1),
- obj_frame_tiles(gMapObjectPic_Woman6_2),
- obj_frame_tiles(gMapObjectPic_Woman6_3),
- obj_frame_tiles(gMapObjectPic_Woman6_4),
- obj_frame_tiles(gMapObjectPic_Woman6_5),
- obj_frame_tiles(gMapObjectPic_Woman6_6),
- obj_frame_tiles(gMapObjectPic_Woman6_7),
- obj_frame_tiles(gMapObjectPic_Woman6_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_OldMan2[] = {
- obj_frame_tiles(gMapObjectPic_OldMan2_0),
- obj_frame_tiles(gMapObjectPic_OldMan2_1),
- obj_frame_tiles(gMapObjectPic_OldMan2_2),
- obj_frame_tiles(gMapObjectPic_OldMan2_0),
- obj_frame_tiles(gMapObjectPic_OldMan2_0),
- obj_frame_tiles(gMapObjectPic_OldMan2_1),
- obj_frame_tiles(gMapObjectPic_OldMan2_1),
- obj_frame_tiles(gMapObjectPic_OldMan2_2),
- obj_frame_tiles(gMapObjectPic_OldMan2_2)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_OldWoman2[] = {
- obj_frame_tiles(gMapObjectPic_OldWoman2_0),
- obj_frame_tiles(gMapObjectPic_OldWoman2_1),
- obj_frame_tiles(gMapObjectPic_OldWoman2_2),
- obj_frame_tiles(gMapObjectPic_OldWoman2_0),
- obj_frame_tiles(gMapObjectPic_OldWoman2_0),
- obj_frame_tiles(gMapObjectPic_OldWoman2_1),
- obj_frame_tiles(gMapObjectPic_OldWoman2_1),
- obj_frame_tiles(gMapObjectPic_OldWoman2_2),
- obj_frame_tiles(gMapObjectPic_OldWoman2_2)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Camper[] = {
- obj_frame_tiles(gMapObjectPic_Camper_0),
- obj_frame_tiles(gMapObjectPic_Camper_1),
- obj_frame_tiles(gMapObjectPic_Camper_2),
- obj_frame_tiles(gMapObjectPic_Camper_3),
- obj_frame_tiles(gMapObjectPic_Camper_4),
- obj_frame_tiles(gMapObjectPic_Camper_5),
- obj_frame_tiles(gMapObjectPic_Camper_6),
- obj_frame_tiles(gMapObjectPic_Camper_7),
- obj_frame_tiles(gMapObjectPic_Camper_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Picnicker[] = {
- obj_frame_tiles(gMapObjectPic_Picnicker_0),
- obj_frame_tiles(gMapObjectPic_Picnicker_1),
- obj_frame_tiles(gMapObjectPic_Picnicker_2),
- obj_frame_tiles(gMapObjectPic_Picnicker_3),
- obj_frame_tiles(gMapObjectPic_Picnicker_4),
- obj_frame_tiles(gMapObjectPic_Picnicker_5),
- obj_frame_tiles(gMapObjectPic_Picnicker_6),
- obj_frame_tiles(gMapObjectPic_Picnicker_7),
- obj_frame_tiles(gMapObjectPic_Picnicker_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Man4[] = {
- obj_frame_tiles(gMapObjectPic_Man4_0),
- obj_frame_tiles(gMapObjectPic_Man4_1),
- obj_frame_tiles(gMapObjectPic_Man4_2),
- obj_frame_tiles(gMapObjectPic_Man4_3),
- obj_frame_tiles(gMapObjectPic_Man4_4),
- obj_frame_tiles(gMapObjectPic_Man4_5),
- obj_frame_tiles(gMapObjectPic_Man4_6),
- obj_frame_tiles(gMapObjectPic_Man4_7),
- obj_frame_tiles(gMapObjectPic_Man4_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Woman7[] = {
- obj_frame_tiles(gMapObjectPic_Woman7_0),
- obj_frame_tiles(gMapObjectPic_Woman7_1),
- obj_frame_tiles(gMapObjectPic_Woman7_2),
- obj_frame_tiles(gMapObjectPic_Woman7_3),
- obj_frame_tiles(gMapObjectPic_Woman7_4),
- obj_frame_tiles(gMapObjectPic_Woman7_5),
- obj_frame_tiles(gMapObjectPic_Woman7_6),
- obj_frame_tiles(gMapObjectPic_Woman7_7),
- obj_frame_tiles(gMapObjectPic_Woman7_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Youngster[] = {
- obj_frame_tiles(gMapObjectPic_Youngster_0),
- obj_frame_tiles(gMapObjectPic_Youngster_1),
- obj_frame_tiles(gMapObjectPic_Youngster_2),
- obj_frame_tiles(gMapObjectPic_Youngster_3),
- obj_frame_tiles(gMapObjectPic_Youngster_4),
- obj_frame_tiles(gMapObjectPic_Youngster_5),
- obj_frame_tiles(gMapObjectPic_Youngster_6),
- obj_frame_tiles(gMapObjectPic_Youngster_7),
- obj_frame_tiles(gMapObjectPic_Youngster_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_BugCatcher[] = {
- obj_frame_tiles(gMapObjectPic_BugCatcher_0),
- obj_frame_tiles(gMapObjectPic_BugCatcher_1),
- obj_frame_tiles(gMapObjectPic_BugCatcher_2),
- obj_frame_tiles(gMapObjectPic_BugCatcher_3),
- obj_frame_tiles(gMapObjectPic_BugCatcher_4),
- obj_frame_tiles(gMapObjectPic_BugCatcher_5),
- obj_frame_tiles(gMapObjectPic_BugCatcher_6),
- obj_frame_tiles(gMapObjectPic_BugCatcher_7),
- obj_frame_tiles(gMapObjectPic_BugCatcher_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_PsychicM[] = {
- obj_frame_tiles(gMapObjectPic_PsychicM_0),
- obj_frame_tiles(gMapObjectPic_PsychicM_1),
- obj_frame_tiles(gMapObjectPic_PsychicM_2),
- obj_frame_tiles(gMapObjectPic_PsychicM_3),
- obj_frame_tiles(gMapObjectPic_PsychicM_4),
- obj_frame_tiles(gMapObjectPic_PsychicM_5),
- obj_frame_tiles(gMapObjectPic_PsychicM_6),
- obj_frame_tiles(gMapObjectPic_PsychicM_7),
- obj_frame_tiles(gMapObjectPic_PsychicM_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_SchoolKidM[] = {
- obj_frame_tiles(gMapObjectPic_SchoolKidM_0),
- obj_frame_tiles(gMapObjectPic_SchoolKidM_1),
- obj_frame_tiles(gMapObjectPic_SchoolKidM_2),
- obj_frame_tiles(gMapObjectPic_SchoolKidM_3),
- obj_frame_tiles(gMapObjectPic_SchoolKidM_4),
- obj_frame_tiles(gMapObjectPic_SchoolKidM_5),
- obj_frame_tiles(gMapObjectPic_SchoolKidM_6),
- obj_frame_tiles(gMapObjectPic_SchoolKidM_7),
- obj_frame_tiles(gMapObjectPic_SchoolKidM_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Maniac[] = {
- obj_frame_tiles(gMapObjectPic_Maniac_0),
- obj_frame_tiles(gMapObjectPic_Maniac_1),
- obj_frame_tiles(gMapObjectPic_Maniac_2),
- obj_frame_tiles(gMapObjectPic_Maniac_3),
- obj_frame_tiles(gMapObjectPic_Maniac_4),
- obj_frame_tiles(gMapObjectPic_Maniac_5),
- obj_frame_tiles(gMapObjectPic_Maniac_6),
- obj_frame_tiles(gMapObjectPic_Maniac_7),
- obj_frame_tiles(gMapObjectPic_Maniac_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_HexManiac[] = {
- obj_frame_tiles(gMapObjectPic_HexManiac_0),
- obj_frame_tiles(gMapObjectPic_HexManiac_1),
- obj_frame_tiles(gMapObjectPic_HexManiac_2),
- obj_frame_tiles(gMapObjectPic_HexManiac_3),
- obj_frame_tiles(gMapObjectPic_HexManiac_4),
- obj_frame_tiles(gMapObjectPic_HexManiac_5),
- obj_frame_tiles(gMapObjectPic_HexManiac_6),
- obj_frame_tiles(gMapObjectPic_HexManiac_7),
- obj_frame_tiles(gMapObjectPic_HexManiac_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Woman8[] = {
- obj_frame_tiles(gMapObjectPic_Woman8_0),
- obj_frame_tiles(gMapObjectPic_Woman8_1),
- obj_frame_tiles(gMapObjectPic_Woman8_2),
- obj_frame_tiles(gMapObjectPic_Woman8_3),
- obj_frame_tiles(gMapObjectPic_Woman8_4),
- obj_frame_tiles(gMapObjectPic_Woman8_5),
- obj_frame_tiles(gMapObjectPic_Woman8_6),
- obj_frame_tiles(gMapObjectPic_Woman8_7),
- obj_frame_tiles(gMapObjectPic_Woman8_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_SwimmerM[] = {
- obj_frame_tiles(gMapObjectPic_SwimmerM_0),
- obj_frame_tiles(gMapObjectPic_SwimmerM_1),
- obj_frame_tiles(gMapObjectPic_SwimmerM_2),
- obj_frame_tiles(gMapObjectPic_SwimmerM_3),
- obj_frame_tiles(gMapObjectPic_SwimmerM_4),
- obj_frame_tiles(gMapObjectPic_SwimmerM_5),
- obj_frame_tiles(gMapObjectPic_SwimmerM_6),
- obj_frame_tiles(gMapObjectPic_SwimmerM_7),
- obj_frame_tiles(gMapObjectPic_SwimmerM_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_SwimmerF[] = {
- obj_frame_tiles(gMapObjectPic_SwimmerF_0),
- obj_frame_tiles(gMapObjectPic_SwimmerF_1),
- obj_frame_tiles(gMapObjectPic_SwimmerF_2),
- obj_frame_tiles(gMapObjectPic_SwimmerF_3),
- obj_frame_tiles(gMapObjectPic_SwimmerF_4),
- obj_frame_tiles(gMapObjectPic_SwimmerF_5),
- obj_frame_tiles(gMapObjectPic_SwimmerF_6),
- obj_frame_tiles(gMapObjectPic_SwimmerF_7),
- obj_frame_tiles(gMapObjectPic_SwimmerF_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_BlackBelt[] = {
- obj_frame_tiles(gMapObjectPic_BlackBelt_0),
- obj_frame_tiles(gMapObjectPic_BlackBelt_1),
- obj_frame_tiles(gMapObjectPic_BlackBelt_2),
- obj_frame_tiles(gMapObjectPic_BlackBelt_3),
- obj_frame_tiles(gMapObjectPic_BlackBelt_4),
- obj_frame_tiles(gMapObjectPic_BlackBelt_5),
- obj_frame_tiles(gMapObjectPic_BlackBelt_6),
- obj_frame_tiles(gMapObjectPic_BlackBelt_7),
- obj_frame_tiles(gMapObjectPic_BlackBelt_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Beauty[] = {
- obj_frame_tiles(gMapObjectPic_Beauty_0),
- obj_frame_tiles(gMapObjectPic_Beauty_1),
- obj_frame_tiles(gMapObjectPic_Beauty_2),
- obj_frame_tiles(gMapObjectPic_Beauty_3),
- obj_frame_tiles(gMapObjectPic_Beauty_4),
- obj_frame_tiles(gMapObjectPic_Beauty_5),
- obj_frame_tiles(gMapObjectPic_Beauty_6),
- obj_frame_tiles(gMapObjectPic_Beauty_7),
- obj_frame_tiles(gMapObjectPic_Beauty_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Scientist1[] = {
- obj_frame_tiles(gMapObjectPic_Scientist1_0),
- obj_frame_tiles(gMapObjectPic_Scientist1_1),
- obj_frame_tiles(gMapObjectPic_Scientist1_2),
- obj_frame_tiles(gMapObjectPic_Scientist1_3),
- obj_frame_tiles(gMapObjectPic_Scientist1_4),
- obj_frame_tiles(gMapObjectPic_Scientist1_5),
- obj_frame_tiles(gMapObjectPic_Scientist1_6),
- obj_frame_tiles(gMapObjectPic_Scientist1_7),
- obj_frame_tiles(gMapObjectPic_Scientist1_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Lass[] = {
- obj_frame_tiles(gMapObjectPic_Lass_0),
- obj_frame_tiles(gMapObjectPic_Lass_1),
- obj_frame_tiles(gMapObjectPic_Lass_2),
- obj_frame_tiles(gMapObjectPic_Lass_3),
- obj_frame_tiles(gMapObjectPic_Lass_4),
- obj_frame_tiles(gMapObjectPic_Lass_5),
- obj_frame_tiles(gMapObjectPic_Lass_6),
- obj_frame_tiles(gMapObjectPic_Lass_7),
- obj_frame_tiles(gMapObjectPic_Lass_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Gentleman[] = {
- obj_frame_tiles(gMapObjectPic_Gentleman_0),
- obj_frame_tiles(gMapObjectPic_Gentleman_1),
- obj_frame_tiles(gMapObjectPic_Gentleman_2),
- obj_frame_tiles(gMapObjectPic_Gentleman_3),
- obj_frame_tiles(gMapObjectPic_Gentleman_4),
- obj_frame_tiles(gMapObjectPic_Gentleman_5),
- obj_frame_tiles(gMapObjectPic_Gentleman_6),
- obj_frame_tiles(gMapObjectPic_Gentleman_7),
- obj_frame_tiles(gMapObjectPic_Gentleman_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Sailor[] = {
- obj_frame_tiles(gMapObjectPic_Sailor_0),
- obj_frame_tiles(gMapObjectPic_Sailor_1),
- obj_frame_tiles(gMapObjectPic_Sailor_2),
- obj_frame_tiles(gMapObjectPic_Sailor_3),
- obj_frame_tiles(gMapObjectPic_Sailor_4),
- obj_frame_tiles(gMapObjectPic_Sailor_5),
- obj_frame_tiles(gMapObjectPic_Sailor_6),
- obj_frame_tiles(gMapObjectPic_Sailor_7),
- obj_frame_tiles(gMapObjectPic_Sailor_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Fisherman[] = {
- obj_frame_tiles(gMapObjectPic_Fisherman_0),
- obj_frame_tiles(gMapObjectPic_Fisherman_1),
- obj_frame_tiles(gMapObjectPic_Fisherman_2),
- obj_frame_tiles(gMapObjectPic_Fisherman_3),
- obj_frame_tiles(gMapObjectPic_Fisherman_4),
- obj_frame_tiles(gMapObjectPic_Fisherman_5),
- obj_frame_tiles(gMapObjectPic_Fisherman_6),
- obj_frame_tiles(gMapObjectPic_Fisherman_7),
- obj_frame_tiles(gMapObjectPic_Fisherman_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_RunningTriathleteM[] = {
- obj_frame_tiles(gMapObjectPic_RunningTriathleteM_0),
- obj_frame_tiles(gMapObjectPic_RunningTriathleteM_1),
- obj_frame_tiles(gMapObjectPic_RunningTriathleteM_2),
- obj_frame_tiles(gMapObjectPic_RunningTriathleteM_3),
- obj_frame_tiles(gMapObjectPic_RunningTriathleteM_4),
- obj_frame_tiles(gMapObjectPic_RunningTriathleteM_5),
- obj_frame_tiles(gMapObjectPic_RunningTriathleteM_6),
- obj_frame_tiles(gMapObjectPic_RunningTriathleteM_7),
- obj_frame_tiles(gMapObjectPic_RunningTriathleteM_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_RunningTriathleteF[] = {
- obj_frame_tiles(gMapObjectPic_RunningTriathleteF_0),
- obj_frame_tiles(gMapObjectPic_RunningTriathleteF_1),
- obj_frame_tiles(gMapObjectPic_RunningTriathleteF_2),
- obj_frame_tiles(gMapObjectPic_RunningTriathleteF_3),
- obj_frame_tiles(gMapObjectPic_RunningTriathleteF_4),
- obj_frame_tiles(gMapObjectPic_RunningTriathleteF_5),
- obj_frame_tiles(gMapObjectPic_RunningTriathleteF_6),
- obj_frame_tiles(gMapObjectPic_RunningTriathleteF_7),
- obj_frame_tiles(gMapObjectPic_RunningTriathleteF_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_TuberF[] = {
- obj_frame_tiles(gMapObjectPic_TuberF_0),
- obj_frame_tiles(gMapObjectPic_TuberF_1),
- obj_frame_tiles(gMapObjectPic_TuberF_2),
- obj_frame_tiles(gMapObjectPic_TuberF_3),
- obj_frame_tiles(gMapObjectPic_TuberF_4),
- obj_frame_tiles(gMapObjectPic_TuberF_5),
- obj_frame_tiles(gMapObjectPic_TuberF_6),
- obj_frame_tiles(gMapObjectPic_TuberF_7),
- obj_frame_tiles(gMapObjectPic_TuberF_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_TuberM[] = {
- obj_frame_tiles(gMapObjectPic_TuberM_0),
- obj_frame_tiles(gMapObjectPic_TuberM_1),
- obj_frame_tiles(gMapObjectPic_TuberM_2),
- obj_frame_tiles(gMapObjectPic_TuberM_3),
- obj_frame_tiles(gMapObjectPic_TuberM_4),
- obj_frame_tiles(gMapObjectPic_TuberM_5),
- obj_frame_tiles(gMapObjectPic_TuberM_6),
- obj_frame_tiles(gMapObjectPic_TuberM_7),
- obj_frame_tiles(gMapObjectPic_TuberM_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Hiker[] = {
- obj_frame_tiles(gMapObjectPic_Hiker_0),
- obj_frame_tiles(gMapObjectPic_Hiker_1),
- obj_frame_tiles(gMapObjectPic_Hiker_2),
- obj_frame_tiles(gMapObjectPic_Hiker_3),
- obj_frame_tiles(gMapObjectPic_Hiker_4),
- obj_frame_tiles(gMapObjectPic_Hiker_5),
- obj_frame_tiles(gMapObjectPic_Hiker_6),
- obj_frame_tiles(gMapObjectPic_Hiker_7),
- obj_frame_tiles(gMapObjectPic_Hiker_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_CyclingTriathleteM[] = {
- obj_frame_tiles(gMapObjectPic_CyclingTriathleteM_0),
- obj_frame_tiles(gMapObjectPic_CyclingTriathleteM_1),
- obj_frame_tiles(gMapObjectPic_CyclingTriathleteM_2),
- obj_frame_tiles(gMapObjectPic_CyclingTriathleteM_3),
- obj_frame_tiles(gMapObjectPic_CyclingTriathleteM_4),
- obj_frame_tiles(gMapObjectPic_CyclingTriathleteM_5),
- obj_frame_tiles(gMapObjectPic_CyclingTriathleteM_6),
- obj_frame_tiles(gMapObjectPic_CyclingTriathleteM_7),
- obj_frame_tiles(gMapObjectPic_CyclingTriathleteM_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_CyclingTriathleteF[] = {
- obj_frame_tiles(gMapObjectPic_CyclingTriathleteF_0),
- obj_frame_tiles(gMapObjectPic_CyclingTriathleteF_1),
- obj_frame_tiles(gMapObjectPic_CyclingTriathleteF_2),
- obj_frame_tiles(gMapObjectPic_CyclingTriathleteF_3),
- obj_frame_tiles(gMapObjectPic_CyclingTriathleteF_4),
- obj_frame_tiles(gMapObjectPic_CyclingTriathleteF_5),
- obj_frame_tiles(gMapObjectPic_CyclingTriathleteF_6),
- obj_frame_tiles(gMapObjectPic_CyclingTriathleteF_7),
- obj_frame_tiles(gMapObjectPic_CyclingTriathleteF_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Nurse[] = {
- obj_frame_tiles(gMapObjectPic_Nurse_0),
- obj_frame_tiles(gMapObjectPic_Nurse_1),
- obj_frame_tiles(gMapObjectPic_Nurse_2),
- obj_frame_tiles(gMapObjectPic_Nurse_3),
- obj_frame_tiles(gMapObjectPic_Nurse_4),
- obj_frame_tiles(gMapObjectPic_Nurse_5),
- obj_frame_tiles(gMapObjectPic_Nurse_6),
- obj_frame_tiles(gMapObjectPic_Nurse_7),
- obj_frame_tiles(gMapObjectPic_Nurse_8),
- obj_frame_tiles(gMapObjectPic_Nurse_9)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_ItemBall[] = {
- obj_frame_tiles(gMapObjectPic_ItemBall)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_ProfBirch[] = {
- obj_frame_tiles(gMapObjectPic_ProfBirch_0),
- obj_frame_tiles(gMapObjectPic_ProfBirch_1),
- obj_frame_tiles(gMapObjectPic_ProfBirch_2),
- obj_frame_tiles(gMapObjectPic_ProfBirch_3),
- obj_frame_tiles(gMapObjectPic_ProfBirch_4),
- obj_frame_tiles(gMapObjectPic_ProfBirch_5),
- obj_frame_tiles(gMapObjectPic_ProfBirch_6),
- obj_frame_tiles(gMapObjectPic_ProfBirch_7),
- obj_frame_tiles(gMapObjectPic_ProfBirch_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Man5[] = {
- obj_frame_tiles(gMapObjectPic_Man5_0),
- obj_frame_tiles(gMapObjectPic_Man5_1),
- obj_frame_tiles(gMapObjectPic_Man5_2),
- obj_frame_tiles(gMapObjectPic_Man5_3),
- obj_frame_tiles(gMapObjectPic_Man5_4),
- obj_frame_tiles(gMapObjectPic_Man5_5),
- obj_frame_tiles(gMapObjectPic_Man5_6),
- obj_frame_tiles(gMapObjectPic_Man5_7),
- obj_frame_tiles(gMapObjectPic_Man5_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Man6[] = {
- obj_frame_tiles(gMapObjectPic_Man6_0),
- obj_frame_tiles(gMapObjectPic_Man6_1),
- obj_frame_tiles(gMapObjectPic_Man6_2),
- obj_frame_tiles(gMapObjectPic_Man6_3),
- obj_frame_tiles(gMapObjectPic_Man6_4),
- obj_frame_tiles(gMapObjectPic_Man6_5),
- obj_frame_tiles(gMapObjectPic_Man6_6),
- obj_frame_tiles(gMapObjectPic_Man6_7),
- obj_frame_tiles(gMapObjectPic_Man6_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_ReporterM[] = {
- obj_frame_tiles(gMapObjectPic_ReporterM_0),
- obj_frame_tiles(gMapObjectPic_ReporterM_1),
- obj_frame_tiles(gMapObjectPic_ReporterM_2),
- obj_frame_tiles(gMapObjectPic_ReporterM_3),
- obj_frame_tiles(gMapObjectPic_ReporterM_4),
- obj_frame_tiles(gMapObjectPic_ReporterM_5),
- obj_frame_tiles(gMapObjectPic_ReporterM_6),
- obj_frame_tiles(gMapObjectPic_ReporterM_7),
- obj_frame_tiles(gMapObjectPic_ReporterM_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_ReporterF[] = {
- obj_frame_tiles(gMapObjectPic_ReporterF_0),
- obj_frame_tiles(gMapObjectPic_ReporterF_1),
- obj_frame_tiles(gMapObjectPic_ReporterF_2),
- obj_frame_tiles(gMapObjectPic_ReporterF_3),
- obj_frame_tiles(gMapObjectPic_ReporterF_4),
- obj_frame_tiles(gMapObjectPic_ReporterF_5),
- obj_frame_tiles(gMapObjectPic_ReporterF_6),
- obj_frame_tiles(gMapObjectPic_ReporterF_7),
- obj_frame_tiles(gMapObjectPic_ReporterF_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_MauvilleOldMan1[] = {
- obj_frame_tiles(gMapObjectPic_MauvilleOldMan1_0),
- obj_frame_tiles(gMapObjectPic_MauvilleOldMan1_1),
- obj_frame_tiles(gMapObjectPic_MauvilleOldMan1_2),
- obj_frame_tiles(gMapObjectPic_MauvilleOldMan1_3),
- obj_frame_tiles(gMapObjectPic_MauvilleOldMan1_4),
- obj_frame_tiles(gMapObjectPic_MauvilleOldMan1_5),
- obj_frame_tiles(gMapObjectPic_MauvilleOldMan1_6),
- obj_frame_tiles(gMapObjectPic_MauvilleOldMan1_7),
- obj_frame_tiles(gMapObjectPic_MauvilleOldMan1_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_MauvilleOldMan2[] = {
- obj_frame_tiles(gMapObjectPic_MauvilleOldMan2_0),
- obj_frame_tiles(gMapObjectPic_MauvilleOldMan2_1),
- obj_frame_tiles(gMapObjectPic_MauvilleOldMan2_2),
- obj_frame_tiles(gMapObjectPic_MauvilleOldMan2_3),
- obj_frame_tiles(gMapObjectPic_MauvilleOldMan2_4),
- obj_frame_tiles(gMapObjectPic_MauvilleOldMan2_5),
- obj_frame_tiles(gMapObjectPic_MauvilleOldMan2_6),
- obj_frame_tiles(gMapObjectPic_MauvilleOldMan2_7),
- obj_frame_tiles(gMapObjectPic_MauvilleOldMan2_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_UnusedNatuDoll[] = {
- obj_frame_tiles(gMapObjectPic_UnusedNatuDoll)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_UnusedMagnemiteDoll[] = {
- obj_frame_tiles(gMapObjectPic_UnusedMagnemiteDoll)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_UnusedSquirtleDoll[] = {
- obj_frame_tiles(gMapObjectPic_UnusedSquirtleDoll)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_UnusedWooperDoll[] = {
- obj_frame_tiles(gMapObjectPic_UnusedWooperDoll)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_UnusedPikachuDoll[] = {
- obj_frame_tiles(gMapObjectPic_UnusedPikachuDoll)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_UnusedPorygon2Doll[] = {
- obj_frame_tiles(gMapObjectPic_UnusedPorygon2Doll)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_CuttableTree[] = {
- obj_frame_tiles(gMapObjectPic_CuttableTree_0),
- obj_frame_tiles(gMapObjectPic_CuttableTree_1),
- obj_frame_tiles(gMapObjectPic_CuttableTree_2),
- obj_frame_tiles(gMapObjectPic_CuttableTree_3)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_MartEmployee[] = {
- obj_frame_tiles(gMapObjectPic_MartEmployee_0),
- obj_frame_tiles(gMapObjectPic_MartEmployee_1),
- obj_frame_tiles(gMapObjectPic_MartEmployee_2),
- obj_frame_tiles(gMapObjectPic_MartEmployee_3),
- obj_frame_tiles(gMapObjectPic_MartEmployee_4),
- obj_frame_tiles(gMapObjectPic_MartEmployee_5),
- obj_frame_tiles(gMapObjectPic_MartEmployee_6),
- obj_frame_tiles(gMapObjectPic_MartEmployee_7),
- obj_frame_tiles(gMapObjectPic_MartEmployee_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_RooftopSaleWoman[] = {
- obj_frame_tiles(gMapObjectPic_RooftopSaleWoman_0),
- obj_frame_tiles(gMapObjectPic_RooftopSaleWoman_1),
- obj_frame_tiles(gMapObjectPic_RooftopSaleWoman_2),
- obj_frame_tiles(gMapObjectPic_RooftopSaleWoman_3),
- obj_frame_tiles(gMapObjectPic_RooftopSaleWoman_4),
- obj_frame_tiles(gMapObjectPic_RooftopSaleWoman_5),
- obj_frame_tiles(gMapObjectPic_RooftopSaleWoman_6),
- obj_frame_tiles(gMapObjectPic_RooftopSaleWoman_7),
- obj_frame_tiles(gMapObjectPic_RooftopSaleWoman_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Teala[] = {
- obj_frame_tiles(gMapObjectPic_Teala_0),
- obj_frame_tiles(gMapObjectPic_Teala_1),
- obj_frame_tiles(gMapObjectPic_Teala_2),
- obj_frame_tiles(gMapObjectPic_Teala_3),
- obj_frame_tiles(gMapObjectPic_Teala_4),
- obj_frame_tiles(gMapObjectPic_Teala_5),
- obj_frame_tiles(gMapObjectPic_Teala_6),
- obj_frame_tiles(gMapObjectPic_Teala_7),
- obj_frame_tiles(gMapObjectPic_Teala_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_BreakableRock[] = {
- obj_frame_tiles(gMapObjectPic_BreakableRock_0),
- obj_frame_tiles(gMapObjectPic_BreakableRock_1),
- obj_frame_tiles(gMapObjectPic_BreakableRock_2),
- obj_frame_tiles(gMapObjectPic_BreakableRock_3)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_PushableBoulder[] = {
- obj_frame_tiles(gMapObjectPic_PushableBoulder)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_MrBrineysBoat[] = {
- obj_frame_tiles(gMapObjectPic_MrBrineysBoat_0),
- obj_frame_tiles(gMapObjectPic_MrBrineysBoat_1),
- obj_frame_tiles(gMapObjectPic_MrBrineysBoat_2),
- obj_frame_tiles(gMapObjectPic_MrBrineysBoat_0),
- obj_frame_tiles(gMapObjectPic_MrBrineysBoat_0),
- obj_frame_tiles(gMapObjectPic_MrBrineysBoat_1),
- obj_frame_tiles(gMapObjectPic_MrBrineysBoat_1),
- obj_frame_tiles(gMapObjectPic_MrBrineysBoat_2),
- obj_frame_tiles(gMapObjectPic_MrBrineysBoat_2)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Truck[] = {
- obj_frame_tiles(gMapObjectPic_Truck)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_MachokeCarryingBox[] = {
- obj_frame_tiles(gMapObjectPic_MachokeCarryingBox_0),
- obj_frame_tiles(gMapObjectPic_MachokeCarryingBox_0),
- obj_frame_tiles(gMapObjectPic_MachokeCarryingBox_0),
- obj_frame_tiles(gMapObjectPic_MachokeCarryingBox_1),
- obj_frame_tiles(gMapObjectPic_MachokeCarryingBox_2),
- obj_frame_tiles(gMapObjectPic_MachokeCarryingBox_1),
- obj_frame_tiles(gMapObjectPic_MachokeCarryingBox_2),
- obj_frame_tiles(gMapObjectPic_MachokeCarryingBox_1),
- obj_frame_tiles(gMapObjectPic_MachokeCarryingBox_2)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_MachokeFacingAway[] = {
- obj_frame_tiles(gMapObjectPic_MachokeFacingAway_0),
- obj_frame_tiles(gMapObjectPic_MachokeFacingAway_0),
- obj_frame_tiles(gMapObjectPic_MachokeFacingAway_0),
- obj_frame_tiles(gMapObjectPic_MachokeFacingAway_1),
- obj_frame_tiles(gMapObjectPic_MachokeFacingAway_1),
- obj_frame_tiles(gMapObjectPic_MachokeFacingAway_1),
- obj_frame_tiles(gMapObjectPic_MachokeFacingAway_1),
- obj_frame_tiles(gMapObjectPic_MachokeFacingAway_1),
- obj_frame_tiles(gMapObjectPic_MachokeFacingAway_1)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_BirchsBag[] = {
- obj_frame_tiles(gMapObjectPic_BirchsBag)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Poochyena[] = {
- obj_frame_tiles(gMapObjectPic_Poochyena_0),
- obj_frame_tiles(gMapObjectPic_Poochyena_1),
- obj_frame_tiles(gMapObjectPic_Poochyena_2),
- obj_frame_tiles(gMapObjectPic_Poochyena_3),
- obj_frame_tiles(gMapObjectPic_Poochyena_4),
- obj_frame_tiles(gMapObjectPic_Poochyena_5),
- obj_frame_tiles(gMapObjectPic_Poochyena_6),
- obj_frame_tiles(gMapObjectPic_Poochyena_7),
- obj_frame_tiles(gMapObjectPic_Poochyena_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Artist[] = {
- obj_frame_tiles(gMapObjectPic_Artist_0),
- obj_frame_tiles(gMapObjectPic_Artist_1),
- obj_frame_tiles(gMapObjectPic_Artist_2),
- obj_frame_tiles(gMapObjectPic_Artist_3),
- obj_frame_tiles(gMapObjectPic_Artist_4),
- obj_frame_tiles(gMapObjectPic_Artist_5),
- obj_frame_tiles(gMapObjectPic_Artist_6),
- obj_frame_tiles(gMapObjectPic_Artist_7),
- obj_frame_tiles(gMapObjectPic_Artist_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_MayNormal[] = {
- obj_frame_tiles(gMapObjectPic_MayNormal_0),
- obj_frame_tiles(gMapObjectPic_MayNormal_1),
- obj_frame_tiles(gMapObjectPic_MayNormal_2),
- obj_frame_tiles(gMapObjectPic_MayNormal_3),
- obj_frame_tiles(gMapObjectPic_MayNormal_4),
- obj_frame_tiles(gMapObjectPic_MayNormal_5),
- obj_frame_tiles(gMapObjectPic_MayNormal_6),
- obj_frame_tiles(gMapObjectPic_MayNormal_7),
- obj_frame_tiles(gMapObjectPic_MayNormal_8),
- obj_frame_tiles(gMapObjectPic_MayNormal_9),
- obj_frame_tiles(gMapObjectPic_MayNormal_10),
- obj_frame_tiles(gMapObjectPic_MayNormal_11),
- obj_frame_tiles(gMapObjectPic_MayNormal_12),
- obj_frame_tiles(gMapObjectPic_MayNormal_13),
- obj_frame_tiles(gMapObjectPic_MayNormal_14),
- obj_frame_tiles(gMapObjectPic_MayNormal_15),
- obj_frame_tiles(gMapObjectPic_MayNormal_16),
- obj_frame_tiles(gMapObjectPic_MayNormal_17)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_MayMachBike[] = {
- obj_frame_tiles(gMapObjectPic_MayMachBike_0),
- obj_frame_tiles(gMapObjectPic_MayMachBike_1),
- obj_frame_tiles(gMapObjectPic_MayMachBike_2),
- obj_frame_tiles(gMapObjectPic_MayMachBike_3),
- obj_frame_tiles(gMapObjectPic_MayMachBike_4),
- obj_frame_tiles(gMapObjectPic_MayMachBike_5),
- obj_frame_tiles(gMapObjectPic_MayMachBike_6),
- obj_frame_tiles(gMapObjectPic_MayMachBike_7),
- obj_frame_tiles(gMapObjectPic_MayMachBike_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_MayAcroBike[] = {
- obj_frame_tiles(gMapObjectPic_MayAcroBike_0),
- obj_frame_tiles(gMapObjectPic_MayAcroBike_1),
- obj_frame_tiles(gMapObjectPic_MayAcroBike_2),
- obj_frame_tiles(gMapObjectPic_MayAcroBike_3),
- obj_frame_tiles(gMapObjectPic_MayAcroBike_4),
- obj_frame_tiles(gMapObjectPic_MayAcroBike_5),
- obj_frame_tiles(gMapObjectPic_MayAcroBike_6),
- obj_frame_tiles(gMapObjectPic_MayAcroBike_7),
- obj_frame_tiles(gMapObjectPic_MayAcroBike_8),
- obj_frame_tiles(gMapObjectPic_MayAcroBike_9),
- obj_frame_tiles(gMapObjectPic_MayAcroBike_10),
- obj_frame_tiles(gMapObjectPic_MayAcroBike_11),
- obj_frame_tiles(gMapObjectPic_MayAcroBike_12),
- obj_frame_tiles(gMapObjectPic_MayAcroBike_13),
- obj_frame_tiles(gMapObjectPic_MayAcroBike_14),
- obj_frame_tiles(gMapObjectPic_MayAcroBike_15),
- obj_frame_tiles(gMapObjectPic_MayAcroBike_16),
- obj_frame_tiles(gMapObjectPic_MayAcroBike_17),
- obj_frame_tiles(gMapObjectPic_MayAcroBike_18),
- obj_frame_tiles(gMapObjectPic_MayAcroBike_19),
- obj_frame_tiles(gMapObjectPic_MayAcroBike_20),
- obj_frame_tiles(gMapObjectPic_MayAcroBike_21),
- obj_frame_tiles(gMapObjectPic_MayAcroBike_22),
- obj_frame_tiles(gMapObjectPic_MayAcroBike_23),
- obj_frame_tiles(gMapObjectPic_MayAcroBike_24),
- obj_frame_tiles(gMapObjectPic_MayAcroBike_25),
- obj_frame_tiles(gMapObjectPic_MayAcroBike_26)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_MaySurfing[] = {
- obj_frame_tiles(gMapObjectPic_MaySurfing_0),
- obj_frame_tiles(gMapObjectPic_MaySurfing_1),
- obj_frame_tiles(gMapObjectPic_MaySurfing_2),
- obj_frame_tiles(gMapObjectPic_MaySurfing_0),
- obj_frame_tiles(gMapObjectPic_MaySurfing_0),
- obj_frame_tiles(gMapObjectPic_MaySurfing_1),
- obj_frame_tiles(gMapObjectPic_MaySurfing_1),
- obj_frame_tiles(gMapObjectPic_MaySurfing_2),
- obj_frame_tiles(gMapObjectPic_MaySurfing_2),
- obj_frame_tiles(gMapObjectPic_MaySurfing_3),
- obj_frame_tiles(gMapObjectPic_MaySurfing_4),
- obj_frame_tiles(gMapObjectPic_MaySurfing_5)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_MayUnderwater[] = {
- obj_frame_tiles(gMapObjectPic_MayUnderwater_0),
- obj_frame_tiles(gMapObjectPic_MayUnderwater_1),
- obj_frame_tiles(gMapObjectPic_MayUnderwater_2),
- obj_frame_tiles(gMapObjectPic_MayUnderwater_0),
- obj_frame_tiles(gMapObjectPic_MayUnderwater_0),
- obj_frame_tiles(gMapObjectPic_MayUnderwater_1),
- obj_frame_tiles(gMapObjectPic_MayUnderwater_1),
- obj_frame_tiles(gMapObjectPic_MayUnderwater_2),
- obj_frame_tiles(gMapObjectPic_MayUnderwater_2)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_MayFieldMove[] = {
- obj_frame_tiles(gMapObjectPic_MayFieldMove_0),
- obj_frame_tiles(gMapObjectPic_MayFieldMove_1),
- obj_frame_tiles(gMapObjectPic_MayFieldMove_2),
- obj_frame_tiles(gMapObjectPic_MayFieldMove_3),
- obj_frame_tiles(gMapObjectPic_MayFieldMove_4)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Cameraman[] = {
- obj_frame_tiles(gMapObjectPic_Cameraman_0),
- obj_frame_tiles(gMapObjectPic_Cameraman_1),
- obj_frame_tiles(gMapObjectPic_Cameraman_2),
- obj_frame_tiles(gMapObjectPic_Cameraman_3),
- obj_frame_tiles(gMapObjectPic_Cameraman_4),
- obj_frame_tiles(gMapObjectPic_Cameraman_5),
- obj_frame_tiles(gMapObjectPic_Cameraman_6),
- obj_frame_tiles(gMapObjectPic_Cameraman_7),
- obj_frame_tiles(gMapObjectPic_Cameraman_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_MovingBox[] = {
- obj_frame_tiles(gMapObjectPic_MovingBox)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_CableCar[] = {
- obj_frame_tiles(gMapObjectPic_CableCar)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Scientist2[] = {
- obj_frame_tiles(gMapObjectPic_Scientist2_0),
- obj_frame_tiles(gMapObjectPic_Scientist2_1),
- obj_frame_tiles(gMapObjectPic_Scientist2_2),
- obj_frame_tiles(gMapObjectPic_Scientist2_3),
- obj_frame_tiles(gMapObjectPic_Scientist2_4),
- obj_frame_tiles(gMapObjectPic_Scientist2_5),
- obj_frame_tiles(gMapObjectPic_Scientist2_6),
- obj_frame_tiles(gMapObjectPic_Scientist2_7),
- obj_frame_tiles(gMapObjectPic_Scientist2_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Man7[] = {
- obj_frame_tiles(gMapObjectPic_Man7_0),
- obj_frame_tiles(gMapObjectPic_Man7_1),
- obj_frame_tiles(gMapObjectPic_Man7_2),
- obj_frame_tiles(gMapObjectPic_Man7_3),
- obj_frame_tiles(gMapObjectPic_Man7_4),
- obj_frame_tiles(gMapObjectPic_Man7_5),
- obj_frame_tiles(gMapObjectPic_Man7_6),
- obj_frame_tiles(gMapObjectPic_Man7_7),
- obj_frame_tiles(gMapObjectPic_Man7_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_AquaMemberM[] = {
- obj_frame_tiles(gMapObjectPic_AquaMemberM_0),
- obj_frame_tiles(gMapObjectPic_AquaMemberM_1),
- obj_frame_tiles(gMapObjectPic_AquaMemberM_2),
- obj_frame_tiles(gMapObjectPic_AquaMemberM_3),
- obj_frame_tiles(gMapObjectPic_AquaMemberM_4),
- obj_frame_tiles(gMapObjectPic_AquaMemberM_5),
- obj_frame_tiles(gMapObjectPic_AquaMemberM_6),
- obj_frame_tiles(gMapObjectPic_AquaMemberM_7),
- obj_frame_tiles(gMapObjectPic_AquaMemberM_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_AquaMemberF[] = {
- obj_frame_tiles(gMapObjectPic_AquaMemberF_0),
- obj_frame_tiles(gMapObjectPic_AquaMemberF_1),
- obj_frame_tiles(gMapObjectPic_AquaMemberF_2),
- obj_frame_tiles(gMapObjectPic_AquaMemberF_3),
- obj_frame_tiles(gMapObjectPic_AquaMemberF_4),
- obj_frame_tiles(gMapObjectPic_AquaMemberF_5),
- obj_frame_tiles(gMapObjectPic_AquaMemberF_6),
- obj_frame_tiles(gMapObjectPic_AquaMemberF_7),
- obj_frame_tiles(gMapObjectPic_AquaMemberF_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_MagmaMemberM[] = {
- obj_frame_tiles(gMapObjectPic_MagmaMemberM_0),
- obj_frame_tiles(gMapObjectPic_MagmaMemberM_1),
- obj_frame_tiles(gMapObjectPic_MagmaMemberM_2),
- obj_frame_tiles(gMapObjectPic_MagmaMemberM_3),
- obj_frame_tiles(gMapObjectPic_MagmaMemberM_4),
- obj_frame_tiles(gMapObjectPic_MagmaMemberM_5),
- obj_frame_tiles(gMapObjectPic_MagmaMemberM_6),
- obj_frame_tiles(gMapObjectPic_MagmaMemberM_7),
- obj_frame_tiles(gMapObjectPic_MagmaMemberM_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_MagmaMemberF[] = {
- obj_frame_tiles(gMapObjectPic_MagmaMemberF_0),
- obj_frame_tiles(gMapObjectPic_MagmaMemberF_1),
- obj_frame_tiles(gMapObjectPic_MagmaMemberF_2),
- obj_frame_tiles(gMapObjectPic_MagmaMemberF_3),
- obj_frame_tiles(gMapObjectPic_MagmaMemberF_4),
- obj_frame_tiles(gMapObjectPic_MagmaMemberF_5),
- obj_frame_tiles(gMapObjectPic_MagmaMemberF_6),
- obj_frame_tiles(gMapObjectPic_MagmaMemberF_7),
- obj_frame_tiles(gMapObjectPic_MagmaMemberF_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Sidney[] = {
- obj_frame_tiles(gMapObjectPic_Sidney_0),
- obj_frame_tiles(gMapObjectPic_Sidney_1),
- obj_frame_tiles(gMapObjectPic_Sidney_2),
- obj_frame_tiles(gMapObjectPic_Sidney_0),
- obj_frame_tiles(gMapObjectPic_Sidney_0),
- obj_frame_tiles(gMapObjectPic_Sidney_1),
- obj_frame_tiles(gMapObjectPic_Sidney_1),
- obj_frame_tiles(gMapObjectPic_Sidney_2),
- obj_frame_tiles(gMapObjectPic_Sidney_2)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Phoebe[] = {
- obj_frame_tiles(gMapObjectPic_Phoebe_0),
- obj_frame_tiles(gMapObjectPic_Phoebe_1),
- obj_frame_tiles(gMapObjectPic_Phoebe_2),
- obj_frame_tiles(gMapObjectPic_Phoebe_0),
- obj_frame_tiles(gMapObjectPic_Phoebe_0),
- obj_frame_tiles(gMapObjectPic_Phoebe_1),
- obj_frame_tiles(gMapObjectPic_Phoebe_1),
- obj_frame_tiles(gMapObjectPic_Phoebe_2),
- obj_frame_tiles(gMapObjectPic_Phoebe_2)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Glacia[] = {
- obj_frame_tiles(gMapObjectPic_Glacia_0),
- obj_frame_tiles(gMapObjectPic_Glacia_1),
- obj_frame_tiles(gMapObjectPic_Glacia_2),
- obj_frame_tiles(gMapObjectPic_Glacia_0),
- obj_frame_tiles(gMapObjectPic_Glacia_0),
- obj_frame_tiles(gMapObjectPic_Glacia_1),
- obj_frame_tiles(gMapObjectPic_Glacia_1),
- obj_frame_tiles(gMapObjectPic_Glacia_2),
- obj_frame_tiles(gMapObjectPic_Glacia_2)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Drake[] = {
- obj_frame_tiles(gMapObjectPic_Drake_0),
- obj_frame_tiles(gMapObjectPic_Drake_1),
- obj_frame_tiles(gMapObjectPic_Drake_2),
- obj_frame_tiles(gMapObjectPic_Drake_0),
- obj_frame_tiles(gMapObjectPic_Drake_0),
- obj_frame_tiles(gMapObjectPic_Drake_1),
- obj_frame_tiles(gMapObjectPic_Drake_1),
- obj_frame_tiles(gMapObjectPic_Drake_2),
- obj_frame_tiles(gMapObjectPic_Drake_2)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Roxanne[] = {
- obj_frame_tiles(gMapObjectPic_Roxanne_0),
- obj_frame_tiles(gMapObjectPic_Roxanne_1),
- obj_frame_tiles(gMapObjectPic_Roxanne_2),
- obj_frame_tiles(gMapObjectPic_Roxanne_0),
- obj_frame_tiles(gMapObjectPic_Roxanne_0),
- obj_frame_tiles(gMapObjectPic_Roxanne_1),
- obj_frame_tiles(gMapObjectPic_Roxanne_1),
- obj_frame_tiles(gMapObjectPic_Roxanne_2),
- obj_frame_tiles(gMapObjectPic_Roxanne_2)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Brawly[] = {
- obj_frame_tiles(gMapObjectPic_Brawly_0),
- obj_frame_tiles(gMapObjectPic_Brawly_1),
- obj_frame_tiles(gMapObjectPic_Brawly_2),
- obj_frame_tiles(gMapObjectPic_Brawly_0),
- obj_frame_tiles(gMapObjectPic_Brawly_0),
- obj_frame_tiles(gMapObjectPic_Brawly_1),
- obj_frame_tiles(gMapObjectPic_Brawly_1),
- obj_frame_tiles(gMapObjectPic_Brawly_2),
- obj_frame_tiles(gMapObjectPic_Brawly_2)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Wattson[] = {
- obj_frame_tiles(gMapObjectPic_Wattson_0),
- obj_frame_tiles(gMapObjectPic_Wattson_1),
- obj_frame_tiles(gMapObjectPic_Wattson_2),
- obj_frame_tiles(gMapObjectPic_Wattson_0),
- obj_frame_tiles(gMapObjectPic_Wattson_0),
- obj_frame_tiles(gMapObjectPic_Wattson_1),
- obj_frame_tiles(gMapObjectPic_Wattson_1),
- obj_frame_tiles(gMapObjectPic_Wattson_2),
- obj_frame_tiles(gMapObjectPic_Wattson_2)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Flannery[] = {
- obj_frame_tiles(gMapObjectPic_Flannery_0),
- obj_frame_tiles(gMapObjectPic_Flannery_1),
- obj_frame_tiles(gMapObjectPic_Flannery_2),
- obj_frame_tiles(gMapObjectPic_Flannery_0),
- obj_frame_tiles(gMapObjectPic_Flannery_0),
- obj_frame_tiles(gMapObjectPic_Flannery_1),
- obj_frame_tiles(gMapObjectPic_Flannery_1),
- obj_frame_tiles(gMapObjectPic_Flannery_2),
- obj_frame_tiles(gMapObjectPic_Flannery_2)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Norman[] = {
- obj_frame_tiles(gMapObjectPic_Norman_0),
- obj_frame_tiles(gMapObjectPic_Norman_1),
- obj_frame_tiles(gMapObjectPic_Norman_2),
- obj_frame_tiles(gMapObjectPic_Norman_3),
- obj_frame_tiles(gMapObjectPic_Norman_4),
- obj_frame_tiles(gMapObjectPic_Norman_5),
- obj_frame_tiles(gMapObjectPic_Norman_6),
- obj_frame_tiles(gMapObjectPic_Norman_7),
- obj_frame_tiles(gMapObjectPic_Norman_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Winona[] = {
- obj_frame_tiles(gMapObjectPic_Winona_0),
- obj_frame_tiles(gMapObjectPic_Winona_1),
- obj_frame_tiles(gMapObjectPic_Winona_2),
- obj_frame_tiles(gMapObjectPic_Winona_0),
- obj_frame_tiles(gMapObjectPic_Winona_0),
- obj_frame_tiles(gMapObjectPic_Winona_1),
- obj_frame_tiles(gMapObjectPic_Winona_1),
- obj_frame_tiles(gMapObjectPic_Winona_2),
- obj_frame_tiles(gMapObjectPic_Winona_2)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Liza[] = {
- obj_frame_tiles(gMapObjectPic_Liza_0),
- obj_frame_tiles(gMapObjectPic_Liza_1),
- obj_frame_tiles(gMapObjectPic_Liza_2),
- obj_frame_tiles(gMapObjectPic_Liza_0),
- obj_frame_tiles(gMapObjectPic_Liza_0),
- obj_frame_tiles(gMapObjectPic_Liza_1),
- obj_frame_tiles(gMapObjectPic_Liza_1),
- obj_frame_tiles(gMapObjectPic_Liza_2),
- obj_frame_tiles(gMapObjectPic_Liza_2)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Tate[] = {
- obj_frame_tiles(gMapObjectPic_Tate_0),
- obj_frame_tiles(gMapObjectPic_Tate_1),
- obj_frame_tiles(gMapObjectPic_Tate_2),
- obj_frame_tiles(gMapObjectPic_Tate_0),
- obj_frame_tiles(gMapObjectPic_Tate_0),
- obj_frame_tiles(gMapObjectPic_Tate_1),
- obj_frame_tiles(gMapObjectPic_Tate_1),
- obj_frame_tiles(gMapObjectPic_Tate_2),
- obj_frame_tiles(gMapObjectPic_Tate_2)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Wallace[] = {
- obj_frame_tiles(gMapObjectPic_Wallace_0),
- obj_frame_tiles(gMapObjectPic_Wallace_1),
- obj_frame_tiles(gMapObjectPic_Wallace_2),
- obj_frame_tiles(gMapObjectPic_Wallace_3),
- obj_frame_tiles(gMapObjectPic_Wallace_4),
- obj_frame_tiles(gMapObjectPic_Wallace_5),
- obj_frame_tiles(gMapObjectPic_Wallace_6),
- obj_frame_tiles(gMapObjectPic_Wallace_7),
- obj_frame_tiles(gMapObjectPic_Wallace_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Steven[] = {
- obj_frame_tiles(gMapObjectPic_Steven_0),
- obj_frame_tiles(gMapObjectPic_Steven_1),
- obj_frame_tiles(gMapObjectPic_Steven_2),
- obj_frame_tiles(gMapObjectPic_Steven_3),
- obj_frame_tiles(gMapObjectPic_Steven_4),
- obj_frame_tiles(gMapObjectPic_Steven_5),
- obj_frame_tiles(gMapObjectPic_Steven_6),
- obj_frame_tiles(gMapObjectPic_Steven_7),
- obj_frame_tiles(gMapObjectPic_Steven_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Wally[] = {
- obj_frame_tiles(gMapObjectPic_Wally_0),
- obj_frame_tiles(gMapObjectPic_Wally_1),
- obj_frame_tiles(gMapObjectPic_Wally_2),
- obj_frame_tiles(gMapObjectPic_Wally_3),
- obj_frame_tiles(gMapObjectPic_Wally_4),
- obj_frame_tiles(gMapObjectPic_Wally_5),
- obj_frame_tiles(gMapObjectPic_Wally_6),
- obj_frame_tiles(gMapObjectPic_Wally_7),
- obj_frame_tiles(gMapObjectPic_Wally_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_LittleBoy3[] = {
- obj_frame_tiles(gMapObjectPic_LittleBoy3_0),
- obj_frame_tiles(gMapObjectPic_LittleBoy3_1),
- obj_frame_tiles(gMapObjectPic_LittleBoy3_2),
- obj_frame_tiles(gMapObjectPic_LittleBoy3_3),
- obj_frame_tiles(gMapObjectPic_LittleBoy3_4),
- obj_frame_tiles(gMapObjectPic_LittleBoy3_5),
- obj_frame_tiles(gMapObjectPic_LittleBoy3_6),
- obj_frame_tiles(gMapObjectPic_LittleBoy3_7),
- obj_frame_tiles(gMapObjectPic_LittleBoy3_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_BrendanFishing[] = {
- obj_frame_tiles(gMapObjectPic_BrendanFishing_0),
- obj_frame_tiles(gMapObjectPic_BrendanFishing_1),
- obj_frame_tiles(gMapObjectPic_BrendanFishing_2),
- obj_frame_tiles(gMapObjectPic_BrendanFishing_3),
- obj_frame_tiles(gMapObjectPic_BrendanFishing_4),
- obj_frame_tiles(gMapObjectPic_BrendanFishing_5),
- obj_frame_tiles(gMapObjectPic_BrendanFishing_6),
- obj_frame_tiles(gMapObjectPic_BrendanFishing_7),
- obj_frame_tiles(gMapObjectPic_BrendanFishing_8),
- obj_frame_tiles(gMapObjectPic_BrendanFishing_9),
- obj_frame_tiles(gMapObjectPic_BrendanFishing_10),
- obj_frame_tiles(gMapObjectPic_BrendanFishing_11)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_MayFishing[] = {
- obj_frame_tiles(gMapObjectPic_MayFishing_0),
- obj_frame_tiles(gMapObjectPic_MayFishing_1),
- obj_frame_tiles(gMapObjectPic_MayFishing_2),
- obj_frame_tiles(gMapObjectPic_MayFishing_3),
- obj_frame_tiles(gMapObjectPic_MayFishing_4),
- obj_frame_tiles(gMapObjectPic_MayFishing_5),
- obj_frame_tiles(gMapObjectPic_MayFishing_6),
- obj_frame_tiles(gMapObjectPic_MayFishing_7),
- obj_frame_tiles(gMapObjectPic_MayFishing_8),
- obj_frame_tiles(gMapObjectPic_MayFishing_9),
- obj_frame_tiles(gMapObjectPic_MayFishing_10),
- obj_frame_tiles(gMapObjectPic_MayFishing_11)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_HotSpringsOldWoman[] = {
- obj_frame_tiles(gMapObjectPic_HotSpringsOldWoman_0),
- obj_frame_tiles(gMapObjectPic_HotSpringsOldWoman_1),
- obj_frame_tiles(gMapObjectPic_HotSpringsOldWoman_2),
- obj_frame_tiles(gMapObjectPic_HotSpringsOldWoman_3),
- obj_frame_tiles(gMapObjectPic_HotSpringsOldWoman_4),
- obj_frame_tiles(gMapObjectPic_HotSpringsOldWoman_5),
- obj_frame_tiles(gMapObjectPic_HotSpringsOldWoman_6),
- obj_frame_tiles(gMapObjectPic_HotSpringsOldWoman_7),
- obj_frame_tiles(gMapObjectPic_HotSpringsOldWoman_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_SSTidal[] = {
- obj_frame_tiles(gMapObjectPic_SSTidal),
- obj_frame_tiles(gMapObjectPic_SSTidal),
- obj_frame_tiles(gMapObjectPic_SSTidal),
- obj_frame_tiles(gMapObjectPic_SSTidal),
- obj_frame_tiles(gMapObjectPic_SSTidal),
- obj_frame_tiles(gMapObjectPic_SSTidal),
- obj_frame_tiles(gMapObjectPic_SSTidal),
- obj_frame_tiles(gMapObjectPic_SSTidal),
- obj_frame_tiles(gMapObjectPic_SSTidal)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_SubmarineShadow[] = {
- obj_frame_tiles(gMapObjectPic_SubmarineShadow),
- obj_frame_tiles(gMapObjectPic_SubmarineShadow),
- obj_frame_tiles(gMapObjectPic_SubmarineShadow),
- obj_frame_tiles(gMapObjectPic_SubmarineShadow),
- obj_frame_tiles(gMapObjectPic_SubmarineShadow),
- obj_frame_tiles(gMapObjectPic_SubmarineShadow),
- obj_frame_tiles(gMapObjectPic_SubmarineShadow),
- obj_frame_tiles(gMapObjectPic_SubmarineShadow),
- obj_frame_tiles(gMapObjectPic_SubmarineShadow)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_PichuDoll[] = {
- obj_frame_tiles(gMapObjectPic_PichuDoll)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_PikachuDoll[] = {
- obj_frame_tiles(gMapObjectPic_PikachuDoll)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_MarillDoll[] = {
- obj_frame_tiles(gMapObjectPic_MarillDoll)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_TogepiDoll[] = {
- obj_frame_tiles(gMapObjectPic_TogepiDoll)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_CyndaquilDoll[] = {
- obj_frame_tiles(gMapObjectPic_CyndaquilDoll)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_ChikoritaDoll[] = {
- obj_frame_tiles(gMapObjectPic_ChikoritaDoll)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_TotodileDoll[] = {
- obj_frame_tiles(gMapObjectPic_TotodileDoll)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_JigglypuffDoll[] = {
- obj_frame_tiles(gMapObjectPic_JigglypuffDoll)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_MeowthDoll[] = {
- obj_frame_tiles(gMapObjectPic_MeowthDoll)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_ClefairyDoll[] = {
- obj_frame_tiles(gMapObjectPic_ClefairyDoll)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_DittoDoll[] = {
- obj_frame_tiles(gMapObjectPic_DittoDoll)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_SmoochumDoll[] = {
- obj_frame_tiles(gMapObjectPic_SmoochumDoll)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_TreeckoDoll[] = {
- obj_frame_tiles(gMapObjectPic_TreeckoDoll)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_TorchicDoll[] = {
- obj_frame_tiles(gMapObjectPic_TorchicDoll)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_MudkipDoll[] = {
- obj_frame_tiles(gMapObjectPic_MudkipDoll)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_DuskullDoll[] = {
- obj_frame_tiles(gMapObjectPic_DuskullDoll)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_WynautDoll[] = {
- obj_frame_tiles(gMapObjectPic_WynautDoll)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_BaltoyDoll[] = {
- obj_frame_tiles(gMapObjectPic_BaltoyDoll)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_KecleonDoll[] = {
- obj_frame_tiles(gMapObjectPic_KecleonDoll)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_AzurillDoll[] = {
- obj_frame_tiles(gMapObjectPic_AzurillDoll)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_SkittyDoll[] = {
- obj_frame_tiles(gMapObjectPic_SkittyDoll)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_SwabluDoll[] = {
- obj_frame_tiles(gMapObjectPic_SwabluDoll)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_GulpinDoll[] = {
- obj_frame_tiles(gMapObjectPic_GulpinDoll)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_LotadDoll[] = {
- obj_frame_tiles(gMapObjectPic_LotadDoll)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_SeedotDoll[] = {
- obj_frame_tiles(gMapObjectPic_SeedotDoll)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_PikaCushion[] = {
- obj_frame_tiles(gMapObjectPic_PikaCushion)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_RoundCushion[] = {
- obj_frame_tiles(gMapObjectPic_RoundCushion)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_KissCushion[] = {
- obj_frame_tiles(gMapObjectPic_KissCushion)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_ZigzagCushion[] = {
- obj_frame_tiles(gMapObjectPic_ZigzagCushion)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_SpinCushion[] = {
- obj_frame_tiles(gMapObjectPic_SpinCushion)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_DiamondCushion[] = {
- obj_frame_tiles(gMapObjectPic_DiamondCushion)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_BallCushion[] = {
- obj_frame_tiles(gMapObjectPic_BallCushion)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_GrassCushion[] = {
- obj_frame_tiles(gMapObjectPic_GrassCushion)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_FireCushion[] = {
- obj_frame_tiles(gMapObjectPic_FireCushion)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_WaterCushion[] = {
- obj_frame_tiles(gMapObjectPic_WaterCushion)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_BigSnorlaxDoll[] = {
- obj_frame_tiles(gMapObjectPic_BigSnorlaxDoll)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_BigRhydonDoll[] = {
- obj_frame_tiles(gMapObjectPic_BigRhydonDoll)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_BigLaprasDoll[] = {
- obj_frame_tiles(gMapObjectPic_BigLaprasDoll)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_BigVenusaurDoll[] = {
- obj_frame_tiles(gMapObjectPic_BigVenusaurDoll)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_BigCharizardDoll[] = {
- obj_frame_tiles(gMapObjectPic_BigCharizardDoll)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_BigBlastoiseDoll[] = {
- obj_frame_tiles(gMapObjectPic_BigBlastoiseDoll)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_BigWailmerDoll[] = {
- obj_frame_tiles(gMapObjectPic_BigWailmerDoll)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_BigRegirockDoll[] = {
- obj_frame_tiles(gMapObjectPic_BigRegirockDoll)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_BigRegiceDoll[] = {
- obj_frame_tiles(gMapObjectPic_BigRegiceDoll)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_BigRegisteelDoll[] = {
- obj_frame_tiles(gMapObjectPic_BigRegisteelDoll)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_LatiasLatios[] = {
- obj_frame_tiles(gMapObjectPic_LatiasLatios_0),
- obj_frame_tiles(gMapObjectPic_LatiasLatios_0),
- obj_frame_tiles(gMapObjectPic_LatiasLatios_0),
- obj_frame_tiles(gMapObjectPic_LatiasLatios_1),
- obj_frame_tiles(gMapObjectPic_LatiasLatios_2),
- obj_frame_tiles(gMapObjectPic_LatiasLatios_1),
- obj_frame_tiles(gMapObjectPic_LatiasLatios_2),
- obj_frame_tiles(gMapObjectPic_LatiasLatios_1),
- obj_frame_tiles(gMapObjectPic_LatiasLatios_2)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Boy5[] = {
- obj_frame_tiles(gMapObjectPic_Boy5_0),
- obj_frame_tiles(gMapObjectPic_Boy5_1),
- obj_frame_tiles(gMapObjectPic_Boy5_2),
- obj_frame_tiles(gMapObjectPic_Boy5_0),
- obj_frame_tiles(gMapObjectPic_Boy5_0),
- obj_frame_tiles(gMapObjectPic_Boy5_1),
- obj_frame_tiles(gMapObjectPic_Boy5_1),
- obj_frame_tiles(gMapObjectPic_Boy5_2),
- obj_frame_tiles(gMapObjectPic_Boy5_2)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_ContestJudge[] = {
- obj_frame_tiles(gMapObjectPic_ContestJudge_0),
- obj_frame_tiles(gMapObjectPic_ContestJudge_1),
- obj_frame_tiles(gMapObjectPic_ContestJudge_2),
- obj_frame_tiles(gMapObjectPic_ContestJudge_3),
- obj_frame_tiles(gMapObjectPic_ContestJudge_4),
- obj_frame_tiles(gMapObjectPic_ContestJudge_5),
- obj_frame_tiles(gMapObjectPic_ContestJudge_6),
- obj_frame_tiles(gMapObjectPic_ContestJudge_7),
- obj_frame_tiles(gMapObjectPic_ContestJudge_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_BrendanWatering[] = {
- obj_frame_tiles(gMapObjectPic_BrendanWatering_0),
- obj_frame_tiles(gMapObjectPic_BrendanWatering_1),
- obj_frame_tiles(gMapObjectPic_BrendanWatering_2),
- obj_frame_tiles(gMapObjectPic_BrendanWatering_3),
- obj_frame_tiles(gMapObjectPic_BrendanWatering_3),
- obj_frame_tiles(gMapObjectPic_BrendanWatering_4),
- obj_frame_tiles(gMapObjectPic_BrendanWatering_4),
- obj_frame_tiles(gMapObjectPic_BrendanWatering_5),
- obj_frame_tiles(gMapObjectPic_BrendanWatering_5)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_MayWatering[] = {
- obj_frame_tiles(gMapObjectPic_MayWatering_0),
- obj_frame_tiles(gMapObjectPic_MayWatering_1),
- obj_frame_tiles(gMapObjectPic_MayWatering_2),
- obj_frame_tiles(gMapObjectPic_MayWatering_3),
- obj_frame_tiles(gMapObjectPic_MayWatering_3),
- obj_frame_tiles(gMapObjectPic_MayWatering_4),
- obj_frame_tiles(gMapObjectPic_MayWatering_4),
- obj_frame_tiles(gMapObjectPic_MayWatering_5),
- obj_frame_tiles(gMapObjectPic_MayWatering_5)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_BrendanDecorating[] = {
- obj_frame_tiles(gMapObjectPic_BrendanDecorating)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_MayDecorating[] = {
- obj_frame_tiles(gMapObjectPic_MayDecorating)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Archie[] = {
- obj_frame_tiles(gMapObjectPic_Archie_0),
- obj_frame_tiles(gMapObjectPic_Archie_1),
- obj_frame_tiles(gMapObjectPic_Archie_2),
- obj_frame_tiles(gMapObjectPic_Archie_3),
- obj_frame_tiles(gMapObjectPic_Archie_4),
- obj_frame_tiles(gMapObjectPic_Archie_5),
- obj_frame_tiles(gMapObjectPic_Archie_6),
- obj_frame_tiles(gMapObjectPic_Archie_7),
- obj_frame_tiles(gMapObjectPic_Archie_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Maxie[] = {
- obj_frame_tiles(gMapObjectPic_Maxie_0),
- obj_frame_tiles(gMapObjectPic_Maxie_1),
- obj_frame_tiles(gMapObjectPic_Maxie_2),
- obj_frame_tiles(gMapObjectPic_Maxie_3),
- obj_frame_tiles(gMapObjectPic_Maxie_4),
- obj_frame_tiles(gMapObjectPic_Maxie_5),
- obj_frame_tiles(gMapObjectPic_Maxie_6),
- obj_frame_tiles(gMapObjectPic_Maxie_7),
- obj_frame_tiles(gMapObjectPic_Maxie_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Kyogre[] = {
- obj_frame_tiles(gMapObjectPic_Kyogre_0),
- obj_frame_tiles(gMapObjectPic_Kyogre_0),
- obj_frame_tiles(gMapObjectPic_Kyogre_0),
- obj_frame_tiles(gMapObjectPic_Kyogre_1),
- obj_frame_tiles(gMapObjectPic_Kyogre_1),
- obj_frame_tiles(gMapObjectPic_Kyogre_1),
- obj_frame_tiles(gMapObjectPic_Kyogre_1),
- obj_frame_tiles(gMapObjectPic_Kyogre_1),
- obj_frame_tiles(gMapObjectPic_Kyogre_1)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Groudon[] = {
- obj_frame_tiles(gMapObjectPic_Groudon_0),
- obj_frame_tiles(gMapObjectPic_Groudon_0),
- obj_frame_tiles(gMapObjectPic_Groudon_0),
- obj_frame_tiles(gMapObjectPic_Groudon_1),
- obj_frame_tiles(gMapObjectPic_Groudon_1),
- obj_frame_tiles(gMapObjectPic_Groudon_1),
- obj_frame_tiles(gMapObjectPic_Groudon_1),
- obj_frame_tiles(gMapObjectPic_Groudon_1),
- obj_frame_tiles(gMapObjectPic_Groudon_1)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Fossil[] = {
- obj_frame_tiles(gMapObjectPic_Fossil)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Regi[] = {
- obj_frame_tiles(gMapObjectPic_Regi),
- obj_frame_tiles(gMapObjectPic_Regi),
- obj_frame_tiles(gMapObjectPic_Regi),
- obj_frame_tiles(gMapObjectPic_Regi),
- obj_frame_tiles(gMapObjectPic_Regi),
- obj_frame_tiles(gMapObjectPic_Regi),
- obj_frame_tiles(gMapObjectPic_Regi),
- obj_frame_tiles(gMapObjectPic_Regi),
- obj_frame_tiles(gMapObjectPic_Regi)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Skitty[] = {
- obj_frame_tiles(gMapObjectPic_Skitty_0),
- obj_frame_tiles(gMapObjectPic_Skitty_1),
- obj_frame_tiles(gMapObjectPic_Skitty_2),
- obj_frame_tiles(gMapObjectPic_Skitty_0),
- obj_frame_tiles(gMapObjectPic_Skitty_0),
- obj_frame_tiles(gMapObjectPic_Skitty_1),
- obj_frame_tiles(gMapObjectPic_Skitty_1),
- obj_frame_tiles(gMapObjectPic_Skitty_2),
- obj_frame_tiles(gMapObjectPic_Skitty_2)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Kecleon[] = {
- obj_frame_tiles(gMapObjectPic_Kecleon_0),
- obj_frame_tiles(gMapObjectPic_Kecleon_1),
- obj_frame_tiles(gMapObjectPic_Kecleon_2),
- obj_frame_tiles(gMapObjectPic_Kecleon_0),
- obj_frame_tiles(gMapObjectPic_Kecleon_0),
- obj_frame_tiles(gMapObjectPic_Kecleon_1),
- obj_frame_tiles(gMapObjectPic_Kecleon_1),
- obj_frame_tiles(gMapObjectPic_Kecleon_2),
- obj_frame_tiles(gMapObjectPic_Kecleon_2)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Rayquaza[] = {
- obj_frame_tiles(gMapObjectPic_Rayquaza_0),
- obj_frame_tiles(gMapObjectPic_Rayquaza_0),
- obj_frame_tiles(gMapObjectPic_Rayquaza_0),
- obj_frame_tiles(gMapObjectPic_Rayquaza_1),
- obj_frame_tiles(gMapObjectPic_Rayquaza_1),
- obj_frame_tiles(gMapObjectPic_Rayquaza_1),
- obj_frame_tiles(gMapObjectPic_Rayquaza_1),
- obj_frame_tiles(gMapObjectPic_Rayquaza_1),
- obj_frame_tiles(gMapObjectPic_Rayquaza_1)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Zigzagoon[] = {
- obj_frame_tiles(gMapObjectPic_Zigzagoon_0),
- obj_frame_tiles(gMapObjectPic_Zigzagoon_1),
- obj_frame_tiles(gMapObjectPic_Zigzagoon_2),
- obj_frame_tiles(gMapObjectPic_Zigzagoon_0),
- obj_frame_tiles(gMapObjectPic_Zigzagoon_0),
- obj_frame_tiles(gMapObjectPic_Zigzagoon_1),
- obj_frame_tiles(gMapObjectPic_Zigzagoon_1),
- obj_frame_tiles(gMapObjectPic_Zigzagoon_2),
- obj_frame_tiles(gMapObjectPic_Zigzagoon_2)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Pikachu[] = {
- obj_frame_tiles(gMapObjectPic_Pikachu_0),
- obj_frame_tiles(gMapObjectPic_Pikachu_1),
- obj_frame_tiles(gMapObjectPic_Pikachu_2),
- obj_frame_tiles(gMapObjectPic_Pikachu_0),
- obj_frame_tiles(gMapObjectPic_Pikachu_0),
- obj_frame_tiles(gMapObjectPic_Pikachu_1),
- obj_frame_tiles(gMapObjectPic_Pikachu_1),
- obj_frame_tiles(gMapObjectPic_Pikachu_2),
- obj_frame_tiles(gMapObjectPic_Pikachu_2)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Azumarill[] = {
- obj_frame_tiles(gMapObjectPic_Azumarill_0),
- obj_frame_tiles(gMapObjectPic_Azumarill_1),
- obj_frame_tiles(gMapObjectPic_Azumarill_2),
- obj_frame_tiles(gMapObjectPic_Azumarill_0),
- obj_frame_tiles(gMapObjectPic_Azumarill_0),
- obj_frame_tiles(gMapObjectPic_Azumarill_1),
- obj_frame_tiles(gMapObjectPic_Azumarill_1),
- obj_frame_tiles(gMapObjectPic_Azumarill_2),
- obj_frame_tiles(gMapObjectPic_Azumarill_2)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Wingull[] = {
- obj_frame_tiles(gMapObjectPic_Wingull_0),
- obj_frame_tiles(gMapObjectPic_Wingull_1),
- obj_frame_tiles(gMapObjectPic_Wingull_2),
- obj_frame_tiles(gMapObjectPic_Wingull_3),
- obj_frame_tiles(gMapObjectPic_Wingull_3),
- obj_frame_tiles(gMapObjectPic_Wingull_4),
- obj_frame_tiles(gMapObjectPic_Wingull_4),
- obj_frame_tiles(gMapObjectPic_Wingull_5),
- obj_frame_tiles(gMapObjectPic_Wingull_5)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_TuberMSwimming[] = {
- obj_frame_tiles(gMapObjectPic_TuberMSwimming_0),
- obj_frame_tiles(gMapObjectPic_TuberMSwimming_1),
- obj_frame_tiles(gMapObjectPic_TuberMSwimming_2),
- obj_frame_tiles(gMapObjectPic_TuberMSwimming_3),
- obj_frame_tiles(gMapObjectPic_TuberMSwimming_4),
- obj_frame_tiles(gMapObjectPic_TuberMSwimming_5),
- obj_frame_tiles(gMapObjectPic_TuberMSwimming_6),
- obj_frame_tiles(gMapObjectPic_TuberMSwimming_7),
- obj_frame_tiles(gMapObjectPic_TuberMSwimming_8)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Azurill[] = {
- obj_frame_tiles(gMapObjectPic_Azurill_0),
- obj_frame_tiles(gMapObjectPic_Azurill_1),
- obj_frame_tiles(gMapObjectPic_Azurill_2),
- obj_frame_tiles(gMapObjectPic_Azurill_0),
- obj_frame_tiles(gMapObjectPic_Azurill_0),
- obj_frame_tiles(gMapObjectPic_Azurill_1),
- obj_frame_tiles(gMapObjectPic_Azurill_1),
- obj_frame_tiles(gMapObjectPic_Azurill_2),
- obj_frame_tiles(gMapObjectPic_Azurill_2)
-};
-
-const struct SpriteFrameImage gMapObjectPicTable_Mom[] = {
- obj_frame_tiles(gMapObjectPic_Mom_0),
- obj_frame_tiles(gMapObjectPic_Mom_1),
- obj_frame_tiles(gMapObjectPic_Mom_2),
- obj_frame_tiles(gMapObjectPic_Mom_3),
- obj_frame_tiles(gMapObjectPic_Mom_4),
- obj_frame_tiles(gMapObjectPic_Mom_5),
- obj_frame_tiles(gMapObjectPic_Mom_6),
- obj_frame_tiles(gMapObjectPic_Mom_7),
- obj_frame_tiles(gMapObjectPic_Mom_8),
-};
-
-#endif //POKERUBY_MAP_OBJECT_PIC_TABLES_H
diff --git a/src/data/items_de.h b/src/data/items_de.h
index 92304e8b0..47227f2a1 100644
--- a/src/data/items_de.h
+++ b/src/data/items_de.h
@@ -8,7 +8,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -24,7 +24,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_MasterBall,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_POKE_BALLS,
.type = 0,
.fieldUseFunc = NULL,
@@ -40,7 +40,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_UltraBall,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_POKE_BALLS,
.type = 1,
.fieldUseFunc = NULL,
@@ -56,7 +56,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_GreatBall,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_POKE_BALLS,
.type = 2,
.fieldUseFunc = NULL,
@@ -72,7 +72,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_PokeBall,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_POKE_BALLS,
.type = 3,
.fieldUseFunc = NULL,
@@ -88,7 +88,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_SafariBall,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_POKE_BALLS,
.type = 4,
.fieldUseFunc = NULL,
@@ -104,7 +104,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_NetBall,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_POKE_BALLS,
.type = 5,
.fieldUseFunc = NULL,
@@ -120,7 +120,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_DiveBall,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_POKE_BALLS,
.type = 6,
.fieldUseFunc = NULL,
@@ -136,7 +136,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_NestBall,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_POKE_BALLS,
.type = 7,
.fieldUseFunc = NULL,
@@ -152,7 +152,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_RepeatBall,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_POKE_BALLS,
.type = 8,
.fieldUseFunc = NULL,
@@ -168,7 +168,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TimerBall,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_POKE_BALLS,
.type = 9,
.fieldUseFunc = NULL,
@@ -184,7 +184,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_LuxuryBall,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_POKE_BALLS,
.type = 10,
.fieldUseFunc = NULL,
@@ -200,7 +200,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_PremierBall,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_POKE_BALLS,
.type = 11,
.fieldUseFunc = NULL,
@@ -216,7 +216,7 @@ const struct Item gItems[] =
.holdEffectParam = 20,
.description = gItemDescription_Potion,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -232,7 +232,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Antidote,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -248,7 +248,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_BurnHeal,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -264,7 +264,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_IceHeal,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -280,7 +280,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Awakening,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -296,7 +296,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_ParalyzeHeal,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -312,7 +312,7 @@ const struct Item gItems[] =
.holdEffectParam = 255,
.description = gItemDescription_FullRestore,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -328,7 +328,7 @@ const struct Item gItems[] =
.holdEffectParam = 255,
.description = gItemDescription_MaxPotion,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -344,7 +344,7 @@ const struct Item gItems[] =
.holdEffectParam = 200,
.description = gItemDescription_HyperPotion,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -360,7 +360,7 @@ const struct Item gItems[] =
.holdEffectParam = 50,
.description = gItemDescription_SuperPotion,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -376,7 +376,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_FullHeal,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -392,7 +392,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Revive,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -408,7 +408,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_MaxRevive,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -424,7 +424,7 @@ const struct Item gItems[] =
.holdEffectParam = 50,
.description = gItemDescription_FreshWater,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -440,7 +440,7 @@ const struct Item gItems[] =
.holdEffectParam = 60,
.description = gItemDescription_SodaPop,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -456,7 +456,7 @@ const struct Item gItems[] =
.holdEffectParam = 80,
.description = gItemDescription_Lemonade,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -472,7 +472,7 @@ const struct Item gItems[] =
.holdEffectParam = 100,
.description = gItemDescription_MoomooMilk,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -488,7 +488,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_EnergyPowder,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -504,7 +504,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_EnergyRoot,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -520,7 +520,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_HealPowder,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -536,7 +536,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_RevivalHerb,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -552,7 +552,7 @@ const struct Item gItems[] =
.holdEffectParam = 10,
.description = gItemDescription_Ether,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_PPRecovery,
@@ -568,7 +568,7 @@ const struct Item gItems[] =
.holdEffectParam = 255,
.description = gItemDescription_MaxEther,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_PPRecovery,
@@ -584,7 +584,7 @@ const struct Item gItems[] =
.holdEffectParam = 10,
.description = gItemDescription_Elixir,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_PPRecovery,
@@ -600,7 +600,7 @@ const struct Item gItems[] =
.holdEffectParam = 255,
.description = gItemDescription_MaxElixir,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_PPRecovery,
@@ -616,7 +616,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_LavaCookie,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -632,7 +632,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_BlueFlute,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -648,7 +648,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_YellowFlute,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -664,7 +664,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_RedFlute,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -680,7 +680,7 @@ const struct Item gItems[] =
.holdEffectParam = 50,
.description = gItemDescription_BlackFlute,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_BlackWhiteFlute,
@@ -696,7 +696,7 @@ const struct Item gItems[] =
.holdEffectParam = 150,
.description = gItemDescription_WhiteFlute,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_BlackWhiteFlute,
@@ -712,7 +712,7 @@ const struct Item gItems[] =
.holdEffectParam = 20,
.description = gItemDescription_BerryJuice,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -728,7 +728,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_SacredAsh,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_SacredAsh,
@@ -744,7 +744,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_ShoalSalt,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -760,7 +760,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_ShoalShell,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -776,7 +776,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_RedShard,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -792,7 +792,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_BlueShard,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -808,7 +808,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_YellowShard,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -824,7 +824,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_GreenShard,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -840,7 +840,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -856,7 +856,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -872,7 +872,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -888,7 +888,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -904,7 +904,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -920,7 +920,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -936,7 +936,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -952,7 +952,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -968,7 +968,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -984,7 +984,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1000,7 +1000,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1016,7 +1016,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_HPUp,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -1032,7 +1032,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Protein,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -1048,7 +1048,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Iron,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -1064,7 +1064,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Carbos,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -1080,7 +1080,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Calcium,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -1096,7 +1096,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_RareCandy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_RareCandy,
@@ -1112,7 +1112,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_PPUp,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_PPUp,
@@ -1128,7 +1128,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Zinc,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -1144,7 +1144,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_PPMax,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_PPUp,
@@ -1160,7 +1160,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1176,7 +1176,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_GuardSpec,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1192,7 +1192,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_DireHit,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1208,7 +1208,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_XAttack,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1224,7 +1224,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_XDefend,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1240,7 +1240,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_XSpeed,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1256,7 +1256,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_XAccuracy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1272,7 +1272,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_XSpecial,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1288,7 +1288,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_PokeDoll,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1304,7 +1304,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_FluffyTail,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1320,7 +1320,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1336,7 +1336,7 @@ const struct Item gItems[] =
.holdEffectParam = 200,
.description = gItemDescription_SuperRepel,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_Repel,
@@ -1352,7 +1352,7 @@ const struct Item gItems[] =
.holdEffectParam = 250,
.description = gItemDescription_MaxRepel,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_Repel,
@@ -1368,7 +1368,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_EscapeRope,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 2,
.fieldUseFunc = ItemUseOutOfBattle_EscapeRope,
@@ -1384,7 +1384,7 @@ const struct Item gItems[] =
.holdEffectParam = 100,
.description = gItemDescription_Repel,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_Repel,
@@ -1400,7 +1400,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1416,7 +1416,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1432,7 +1432,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1448,7 +1448,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1464,7 +1464,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1480,7 +1480,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1496,7 +1496,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_SunStone,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_EvolutionStone,
@@ -1512,7 +1512,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_MoonStone,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_EvolutionStone,
@@ -1528,7 +1528,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_FireStone,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_EvolutionStone,
@@ -1544,7 +1544,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_ThunderStone,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_EvolutionStone,
@@ -1560,7 +1560,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_WaterStone,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_EvolutionStone,
@@ -1576,7 +1576,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_LeafStone,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_EvolutionStone,
@@ -1592,7 +1592,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1608,7 +1608,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1624,7 +1624,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1640,7 +1640,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1656,7 +1656,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TinyMushroom,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1672,7 +1672,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_BigMushroom,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1688,7 +1688,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1704,7 +1704,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Pearl,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1720,7 +1720,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_BigPearl,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1736,7 +1736,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Stardust,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1752,7 +1752,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_StarPiece,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1768,7 +1768,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Nugget,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1784,7 +1784,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_HeartScale,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1800,7 +1800,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1816,7 +1816,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1832,7 +1832,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1848,7 +1848,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1864,7 +1864,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1880,7 +1880,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1896,7 +1896,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1912,7 +1912,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1928,7 +1928,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1944,7 +1944,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_OrangeMail,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 0,
.fieldUseFunc = ItemUseOutOfBattle_Mail,
@@ -1960,7 +1960,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_HarborMail,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 0,
.fieldUseFunc = ItemUseOutOfBattle_Mail,
@@ -1976,7 +1976,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_GlitterMail,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 0,
.fieldUseFunc = ItemUseOutOfBattle_Mail,
@@ -1992,7 +1992,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_MechMail,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 0,
.fieldUseFunc = ItemUseOutOfBattle_Mail,
@@ -2008,7 +2008,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_WoodMail,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 0,
.fieldUseFunc = ItemUseOutOfBattle_Mail,
@@ -2024,7 +2024,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_WaveMail,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 0,
.fieldUseFunc = ItemUseOutOfBattle_Mail,
@@ -2040,7 +2040,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_BeadMail,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 0,
.fieldUseFunc = ItemUseOutOfBattle_Mail,
@@ -2056,7 +2056,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_ShadowMail,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 0,
.fieldUseFunc = ItemUseOutOfBattle_Mail,
@@ -2072,7 +2072,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TropicMail,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 0,
.fieldUseFunc = ItemUseOutOfBattle_Mail,
@@ -2088,7 +2088,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_DreamMail,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 0,
.fieldUseFunc = ItemUseOutOfBattle_Mail,
@@ -2104,7 +2104,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_FabMail,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 0,
.fieldUseFunc = ItemUseOutOfBattle_Mail,
@@ -2120,7 +2120,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_RetroMail,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 0,
.fieldUseFunc = ItemUseOutOfBattle_Mail,
@@ -2136,7 +2136,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_CheriBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -2152,7 +2152,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_ChestoBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -2168,7 +2168,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_PechaBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -2184,7 +2184,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_RawstBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -2200,7 +2200,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_AspearBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -2216,7 +2216,7 @@ const struct Item gItems[] =
.holdEffectParam = 10,
.description = gItemDescription_LeppaBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_PPRecovery,
@@ -2232,7 +2232,7 @@ const struct Item gItems[] =
.holdEffectParam = 10,
.description = gItemDescription_OranBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -2248,7 +2248,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_PersimBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2264,7 +2264,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_LumBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -2280,7 +2280,7 @@ const struct Item gItems[] =
.holdEffectParam = 30,
.description = gItemDescription_SitrusBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -2296,7 +2296,7 @@ const struct Item gItems[] =
.holdEffectParam = 8,
.description = gItemDescription_FigyBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2312,7 +2312,7 @@ const struct Item gItems[] =
.holdEffectParam = 8,
.description = gItemDescription_WikiBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2328,7 +2328,7 @@ const struct Item gItems[] =
.holdEffectParam = 8,
.description = gItemDescription_MagoBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2344,7 +2344,7 @@ const struct Item gItems[] =
.holdEffectParam = 8,
.description = gItemDescription_AguavBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2360,7 +2360,7 @@ const struct Item gItems[] =
.holdEffectParam = 8,
.description = gItemDescription_IapapaBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2376,7 +2376,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_RazzBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2392,7 +2392,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_BlukBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2408,7 +2408,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_NanabBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2424,7 +2424,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_WepearBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2440,7 +2440,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_PinapBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2456,7 +2456,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_PomegBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2472,7 +2472,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_KelpsyBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2488,7 +2488,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_QualotBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2504,7 +2504,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_HondewBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2520,7 +2520,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_GrepaBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2536,7 +2536,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TamatoBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2552,7 +2552,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_CornnBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2568,7 +2568,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_MagostBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2584,7 +2584,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_RabutaBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2600,7 +2600,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_NomelBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2616,7 +2616,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_SpelonBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2632,7 +2632,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_PamtreBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2648,7 +2648,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_WatmelBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2664,7 +2664,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_DurinBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2680,7 +2680,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_BelueBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2696,7 +2696,7 @@ const struct Item gItems[] =
.holdEffectParam = 4,
.description = gItemDescription_LiechiBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2712,7 +2712,7 @@ const struct Item gItems[] =
.holdEffectParam = 4,
.description = gItemDescription_GanlonBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2728,7 +2728,7 @@ const struct Item gItems[] =
.holdEffectParam = 4,
.description = gItemDescription_SalacBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2744,7 +2744,7 @@ const struct Item gItems[] =
.holdEffectParam = 4,
.description = gItemDescription_PetayaBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2760,7 +2760,7 @@ const struct Item gItems[] =
.holdEffectParam = 4,
.description = gItemDescription_ApicotBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2776,7 +2776,7 @@ const struct Item gItems[] =
.holdEffectParam = 4,
.description = gItemDescription_LansatBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2792,7 +2792,7 @@ const struct Item gItems[] =
.holdEffectParam = 4,
.description = gItemDescription_StarfBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2808,7 +2808,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_EnigmaBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_EnigmaBerry,
@@ -2824,7 +2824,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2840,7 +2840,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2856,7 +2856,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2872,7 +2872,7 @@ const struct Item gItems[] =
.holdEffectParam = 10,
.description = gItemDescription_BrightPowder,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2888,7 +2888,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_WhiteHerb,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2904,7 +2904,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_MachoBrace,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2920,7 +2920,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_ExpShare,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2936,7 +2936,7 @@ const struct Item gItems[] =
.holdEffectParam = 20,
.description = gItemDescription_QuickClaw,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2952,7 +2952,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_SootheBell,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2968,7 +2968,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_MentalHerb,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2984,7 +2984,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_ChoiceBand,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3000,7 +3000,7 @@ const struct Item gItems[] =
.holdEffectParam = 10,
.description = gItemDescription_KingsRock,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3016,7 +3016,7 @@ const struct Item gItems[] =
.holdEffectParam = 10,
.description = gItemDescription_SilverPowder,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3032,7 +3032,7 @@ const struct Item gItems[] =
.holdEffectParam = 10,
.description = gItemDescription_AmuletCoin,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3048,7 +3048,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_CleanseTag,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3064,7 +3064,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_SoulDew,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3080,7 +3080,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_DeepSeaTooth,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3096,7 +3096,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_DeepSeaScale,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3112,7 +3112,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_SmokeBall,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3128,7 +3128,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Everstone,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3144,7 +3144,7 @@ const struct Item gItems[] =
.holdEffectParam = 10,
.description = gItemDescription_FocusBand,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3160,7 +3160,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_LuckyEgg,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3176,7 +3176,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_ScopeLens,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3192,7 +3192,7 @@ const struct Item gItems[] =
.holdEffectParam = 10,
.description = gItemDescription_MetalCoat,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3208,7 +3208,7 @@ const struct Item gItems[] =
.holdEffectParam = 10,
.description = gItemDescription_Leftovers,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3224,7 +3224,7 @@ const struct Item gItems[] =
.holdEffectParam = 10,
.description = gItemDescription_DragonScale,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3240,7 +3240,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_LightBall,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3256,7 +3256,7 @@ const struct Item gItems[] =
.holdEffectParam = 10,
.description = gItemDescription_SoftSand,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3272,7 +3272,7 @@ const struct Item gItems[] =
.holdEffectParam = 10,
.description = gItemDescription_HardStone,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3288,7 +3288,7 @@ const struct Item gItems[] =
.holdEffectParam = 10,
.description = gItemDescription_MiracleSeed,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3304,7 +3304,7 @@ const struct Item gItems[] =
.holdEffectParam = 10,
.description = gItemDescription_BlackGlasses,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3320,7 +3320,7 @@ const struct Item gItems[] =
.holdEffectParam = 10,
.description = gItemDescription_BlackBelt,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3336,7 +3336,7 @@ const struct Item gItems[] =
.holdEffectParam = 10,
.description = gItemDescription_Magnet,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3352,7 +3352,7 @@ const struct Item gItems[] =
.holdEffectParam = 10,
.description = gItemDescription_MysticWater,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3368,7 +3368,7 @@ const struct Item gItems[] =
.holdEffectParam = 10,
.description = gItemDescription_SharpBeak,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3384,7 +3384,7 @@ const struct Item gItems[] =
.holdEffectParam = 10,
.description = gItemDescription_PoisonBarb,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3400,7 +3400,7 @@ const struct Item gItems[] =
.holdEffectParam = 10,
.description = gItemDescription_NeverMeltIce,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3416,7 +3416,7 @@ const struct Item gItems[] =
.holdEffectParam = 10,
.description = gItemDescription_SpellTag,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3432,7 +3432,7 @@ const struct Item gItems[] =
.holdEffectParam = 10,
.description = gItemDescription_TwistedSpoon,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3448,7 +3448,7 @@ const struct Item gItems[] =
.holdEffectParam = 10,
.description = gItemDescription_Charcoal,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3464,7 +3464,7 @@ const struct Item gItems[] =
.holdEffectParam = 10,
.description = gItemDescription_DragonFang,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3480,7 +3480,7 @@ const struct Item gItems[] =
.holdEffectParam = 10,
.description = gItemDescription_SilkScarf,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3496,7 +3496,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_UpGrade,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3512,7 +3512,7 @@ const struct Item gItems[] =
.holdEffectParam = 8,
.description = gItemDescription_ShellBell,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3528,7 +3528,7 @@ const struct Item gItems[] =
.holdEffectParam = 5,
.description = gItemDescription_SeaIncense,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3544,7 +3544,7 @@ const struct Item gItems[] =
.holdEffectParam = 5,
.description = gItemDescription_LaxIncense,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3560,7 +3560,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_LuckyPunch,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3576,7 +3576,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_MetalPowder,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3592,7 +3592,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_ThickClub,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3608,7 +3608,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Stick,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3624,7 +3624,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3640,7 +3640,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3656,7 +3656,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3672,7 +3672,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3688,7 +3688,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3704,7 +3704,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3720,7 +3720,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3736,7 +3736,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3752,7 +3752,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3768,7 +3768,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3784,7 +3784,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3800,7 +3800,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3816,7 +3816,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3832,7 +3832,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3848,7 +3848,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3864,7 +3864,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3880,7 +3880,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3896,7 +3896,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3912,7 +3912,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3928,7 +3928,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3944,7 +3944,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3960,7 +3960,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3976,7 +3976,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3992,7 +3992,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -4008,7 +4008,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -4024,7 +4024,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -4040,7 +4040,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -4056,7 +4056,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -4072,7 +4072,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_RedScarf,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -4088,7 +4088,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_BlueScarf,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -4104,7 +4104,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_PinkScarf,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -4120,7 +4120,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_GreenScarf,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -4136,7 +4136,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_YellowScarf,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -4152,7 +4152,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_MachBike,
.importance = 1,
- .unk19 = 1,
+ .exitsBagOnUse = 1,
.pocket = POCKET_KEY_ITEMS,
.type = 2,
.fieldUseFunc = ItemUseOutOfBattle_Bike,
@@ -4168,7 +4168,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_CoinCase,
.importance = 1,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CoinCase,
@@ -4184,7 +4184,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Itemfinder,
.importance = 1,
- .unk19 = 1,
+ .exitsBagOnUse = 1,
.pocket = POCKET_KEY_ITEMS,
.type = 2,
.fieldUseFunc = ItemUseOutOfBattle_Itemfinder,
@@ -4200,7 +4200,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_OldRod,
.importance = 1,
- .unk19 = 1,
+ .exitsBagOnUse = 1,
.pocket = POCKET_KEY_ITEMS,
.type = 2,
.fieldUseFunc = ItemUseOutOfBattle_Rod,
@@ -4216,7 +4216,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_GoodRod,
.importance = 1,
- .unk19 = 1,
+ .exitsBagOnUse = 1,
.pocket = POCKET_KEY_ITEMS,
.type = 2,
.fieldUseFunc = ItemUseOutOfBattle_Rod,
@@ -4232,7 +4232,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_SuperRod,
.importance = 1,
- .unk19 = 1,
+ .exitsBagOnUse = 1,
.pocket = POCKET_KEY_ITEMS,
.type = 2,
.fieldUseFunc = ItemUseOutOfBattle_Rod,
@@ -4248,7 +4248,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_SSTicket,
.importance = 1,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -4264,7 +4264,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_ContestPass,
.importance = 1,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -4280,7 +4280,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -4296,7 +4296,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_WailmerPail,
.importance = 1,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 2,
.fieldUseFunc = ItemUseOutOfBattle_WailmerPail,
@@ -4312,7 +4312,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_DevonGoods,
.importance = 2,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -4328,7 +4328,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_SootSack,
.importance = 1,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -4344,7 +4344,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_BasementKey,
.importance = 1,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -4360,7 +4360,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_AcroBike,
.importance = 1,
- .unk19 = 1,
+ .exitsBagOnUse = 1,
.pocket = POCKET_KEY_ITEMS,
.type = 2,
.fieldUseFunc = ItemUseOutOfBattle_Bike,
@@ -4376,7 +4376,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_PokeblockCase,
.importance = 1,
- .unk19 = 1,
+ .exitsBagOnUse = 1,
.pocket = POCKET_KEY_ITEMS,
.type = 3,
.fieldUseFunc = ItemUseOutOfBattle_PokeblockCase,
@@ -4392,7 +4392,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Letter,
.importance = 2,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -4408,7 +4408,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_EonTicket,
.importance = 1,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -4424,7 +4424,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_RedOrb,
.importance = 2,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -4440,7 +4440,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_BlueOrb,
.importance = 2,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -4456,7 +4456,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Scanner,
.importance = 1,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -4472,7 +4472,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_GoGoggles,
.importance = 1,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -4488,7 +4488,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Meteorite,
.importance = 1,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -4504,7 +4504,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Room1Key,
.importance = 1,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -4520,7 +4520,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Room2Key,
.importance = 1,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -4536,7 +4536,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Room4Key,
.importance = 1,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -4552,7 +4552,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Room6Key,
.importance = 1,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -4568,7 +4568,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_StorageKey,
.importance = 1,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -4584,7 +4584,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_RootFossil,
.importance = 1,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -4600,7 +4600,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_ClawFossil,
.importance = 1,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -4616,7 +4616,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_DevonScope,
.importance = 1,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -4632,7 +4632,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM01,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -4648,7 +4648,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM02,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -4664,7 +4664,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM03,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -4680,7 +4680,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM04,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -4696,7 +4696,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM05,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -4712,7 +4712,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM06,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -4728,7 +4728,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM07,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -4744,7 +4744,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM08,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -4760,7 +4760,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM09,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -4776,7 +4776,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM10,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -4792,7 +4792,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM11,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -4808,7 +4808,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM12,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -4824,7 +4824,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM13,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -4840,7 +4840,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM14,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -4856,7 +4856,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM15,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -4872,7 +4872,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM16,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -4888,7 +4888,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM17,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -4904,7 +4904,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM18,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -4920,7 +4920,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM19,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -4936,7 +4936,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM20,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -4952,7 +4952,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM21,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -4968,7 +4968,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM22,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -4984,7 +4984,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM23,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5000,7 +5000,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM24,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5016,7 +5016,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM25,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5032,7 +5032,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM26,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5048,7 +5048,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM27,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5064,7 +5064,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM28,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5080,7 +5080,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM29,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5096,7 +5096,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM30,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5112,7 +5112,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM31,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5128,7 +5128,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM32,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5144,7 +5144,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM33,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5160,7 +5160,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM34,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5176,7 +5176,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM35,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5192,7 +5192,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM36,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5208,7 +5208,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM37,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5224,7 +5224,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM38,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5240,7 +5240,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM39,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5256,7 +5256,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM40,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5272,7 +5272,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM41,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5288,7 +5288,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM42,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5304,7 +5304,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM43,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5320,7 +5320,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM44,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5336,7 +5336,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM45,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5352,7 +5352,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM46,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5368,7 +5368,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM47,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5384,7 +5384,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM48,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5400,7 +5400,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM49,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5416,7 +5416,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM50,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5432,7 +5432,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_HM01,
.importance = 1,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5448,7 +5448,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_HM02,
.importance = 1,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5464,7 +5464,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_HM03,
.importance = 1,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5480,7 +5480,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_HM04,
.importance = 1,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5496,7 +5496,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_HM05,
.importance = 1,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5512,7 +5512,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_HM06,
.importance = 1,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5528,7 +5528,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_HM07,
.importance = 1,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5544,7 +5544,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_HM08,
.importance = 1,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5560,7 +5560,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -5576,7 +5576,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
diff --git a/src/data/items_en.h b/src/data/items_en.h
index 3660f4590..60f62752d 100644
--- a/src/data/items_en.h
+++ b/src/data/items_en.h
@@ -8,7 +8,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -24,7 +24,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_MasterBall,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_POKE_BALLS,
.type = 0,
.fieldUseFunc = NULL,
@@ -40,7 +40,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_UltraBall,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_POKE_BALLS,
.type = 1,
.fieldUseFunc = NULL,
@@ -56,7 +56,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_GreatBall,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_POKE_BALLS,
.type = 2,
.fieldUseFunc = NULL,
@@ -72,7 +72,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_PokeBall,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_POKE_BALLS,
.type = 3,
.fieldUseFunc = NULL,
@@ -88,7 +88,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_SafariBall,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_POKE_BALLS,
.type = 4,
.fieldUseFunc = NULL,
@@ -104,7 +104,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_NetBall,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_POKE_BALLS,
.type = 5,
.fieldUseFunc = NULL,
@@ -120,7 +120,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_DiveBall,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_POKE_BALLS,
.type = 6,
.fieldUseFunc = NULL,
@@ -136,7 +136,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_NestBall,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_POKE_BALLS,
.type = 7,
.fieldUseFunc = NULL,
@@ -152,7 +152,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_RepeatBall,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_POKE_BALLS,
.type = 8,
.fieldUseFunc = NULL,
@@ -168,7 +168,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TimerBall,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_POKE_BALLS,
.type = 9,
.fieldUseFunc = NULL,
@@ -184,7 +184,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_LuxuryBall,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_POKE_BALLS,
.type = 10,
.fieldUseFunc = NULL,
@@ -200,7 +200,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_PremierBall,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_POKE_BALLS,
.type = 11,
.fieldUseFunc = NULL,
@@ -216,7 +216,7 @@ const struct Item gItems[] =
.holdEffectParam = 20,
.description = gItemDescription_Potion,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -232,7 +232,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Antidote,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -248,7 +248,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_BurnHeal,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -264,7 +264,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_IceHeal,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -280,7 +280,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Awakening,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -296,7 +296,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_ParalyzeHeal,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -312,7 +312,7 @@ const struct Item gItems[] =
.holdEffectParam = 255,
.description = gItemDescription_FullRestore,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -328,7 +328,7 @@ const struct Item gItems[] =
.holdEffectParam = 255,
.description = gItemDescription_MaxPotion,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -344,7 +344,7 @@ const struct Item gItems[] =
.holdEffectParam = 200,
.description = gItemDescription_HyperPotion,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -360,7 +360,7 @@ const struct Item gItems[] =
.holdEffectParam = 50,
.description = gItemDescription_SuperPotion,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -376,7 +376,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_FullHeal,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -392,7 +392,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Revive,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -408,7 +408,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_MaxRevive,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -424,7 +424,7 @@ const struct Item gItems[] =
.holdEffectParam = 50,
.description = gItemDescription_FreshWater,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -440,7 +440,7 @@ const struct Item gItems[] =
.holdEffectParam = 60,
.description = gItemDescription_SodaPop,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -456,7 +456,7 @@ const struct Item gItems[] =
.holdEffectParam = 80,
.description = gItemDescription_Lemonade,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -472,7 +472,7 @@ const struct Item gItems[] =
.holdEffectParam = 100,
.description = gItemDescription_MoomooMilk,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -488,7 +488,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_EnergyPowder,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -504,7 +504,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_EnergyRoot,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -520,7 +520,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_HealPowder,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -536,7 +536,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_RevivalHerb,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -552,7 +552,7 @@ const struct Item gItems[] =
.holdEffectParam = 10,
.description = gItemDescription_Ether,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_PPRecovery,
@@ -568,7 +568,7 @@ const struct Item gItems[] =
.holdEffectParam = 255,
.description = gItemDescription_MaxEther,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_PPRecovery,
@@ -584,7 +584,7 @@ const struct Item gItems[] =
.holdEffectParam = 10,
.description = gItemDescription_Elixir,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_PPRecovery,
@@ -600,7 +600,7 @@ const struct Item gItems[] =
.holdEffectParam = 255,
.description = gItemDescription_MaxElixir,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_PPRecovery,
@@ -616,7 +616,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_LavaCookie,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -632,7 +632,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_BlueFlute,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -648,7 +648,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_YellowFlute,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -664,7 +664,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_RedFlute,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -680,7 +680,7 @@ const struct Item gItems[] =
.holdEffectParam = 50,
.description = gItemDescription_BlackFlute,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_BlackWhiteFlute,
@@ -696,7 +696,7 @@ const struct Item gItems[] =
.holdEffectParam = 150,
.description = gItemDescription_WhiteFlute,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_BlackWhiteFlute,
@@ -712,7 +712,7 @@ const struct Item gItems[] =
.holdEffectParam = 20,
.description = gItemDescription_BerryJuice,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -728,7 +728,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_SacredAsh,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_SacredAsh,
@@ -744,7 +744,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_ShoalSalt,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -760,7 +760,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_ShoalShell,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -776,7 +776,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_RedShard,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -792,7 +792,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_BlueShard,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -808,7 +808,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_YellowShard,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -824,7 +824,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_GreenShard,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -840,7 +840,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -856,7 +856,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -872,7 +872,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -888,7 +888,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -904,7 +904,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -920,7 +920,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -936,7 +936,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -952,7 +952,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -968,7 +968,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -984,7 +984,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1000,7 +1000,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1016,7 +1016,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_HPUp,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -1032,7 +1032,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Protein,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -1048,7 +1048,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Iron,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -1064,7 +1064,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Carbos,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -1080,7 +1080,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Calcium,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -1096,7 +1096,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_RareCandy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_RareCandy,
@@ -1112,7 +1112,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_PPUp,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_PPUp,
@@ -1128,7 +1128,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Zinc,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -1144,7 +1144,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_PPMax,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_PPUp,
@@ -1160,7 +1160,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1176,7 +1176,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_GuardSpec,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1192,7 +1192,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_DireHit,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1208,7 +1208,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_XAttack,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1224,7 +1224,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_XDefend,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1240,7 +1240,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_XSpeed,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1256,7 +1256,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_XAccuracy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1272,7 +1272,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_XSpecial,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1288,7 +1288,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_PokeDoll,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1304,7 +1304,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_FluffyTail,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1320,7 +1320,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1336,7 +1336,7 @@ const struct Item gItems[] =
.holdEffectParam = 200,
.description = gItemDescription_SuperRepel,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_Repel,
@@ -1352,7 +1352,7 @@ const struct Item gItems[] =
.holdEffectParam = 250,
.description = gItemDescription_MaxRepel,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_Repel,
@@ -1368,7 +1368,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_EscapeRope,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 2,
.fieldUseFunc = ItemUseOutOfBattle_EscapeRope,
@@ -1384,7 +1384,7 @@ const struct Item gItems[] =
.holdEffectParam = 100,
.description = gItemDescription_Repel,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_Repel,
@@ -1400,7 +1400,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1416,7 +1416,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1432,7 +1432,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1448,7 +1448,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1464,7 +1464,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1480,7 +1480,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1496,7 +1496,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_SunStone,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_EvolutionStone,
@@ -1512,7 +1512,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_MoonStone,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_EvolutionStone,
@@ -1528,7 +1528,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_FireStone,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_EvolutionStone,
@@ -1544,7 +1544,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_ThunderStone,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_EvolutionStone,
@@ -1560,7 +1560,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_WaterStone,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_EvolutionStone,
@@ -1576,7 +1576,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_LeafStone,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_EvolutionStone,
@@ -1592,7 +1592,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1608,7 +1608,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1624,7 +1624,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1640,7 +1640,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1656,7 +1656,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TinyMushroom,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1672,7 +1672,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_BigMushroom,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1688,7 +1688,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1704,7 +1704,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Pearl,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1720,7 +1720,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_BigPearl,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1736,7 +1736,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Stardust,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1752,7 +1752,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_StarPiece,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1768,7 +1768,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Nugget,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1784,7 +1784,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_HeartScale,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1800,7 +1800,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1816,7 +1816,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1832,7 +1832,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1848,7 +1848,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1864,7 +1864,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1880,7 +1880,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1896,7 +1896,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1912,7 +1912,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1928,7 +1928,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1944,7 +1944,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_OrangeMail,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 0,
.fieldUseFunc = ItemUseOutOfBattle_Mail,
@@ -1960,7 +1960,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_HarborMail,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 0,
.fieldUseFunc = ItemUseOutOfBattle_Mail,
@@ -1976,7 +1976,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_GlitterMail,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 0,
.fieldUseFunc = ItemUseOutOfBattle_Mail,
@@ -1992,7 +1992,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_MechMail,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 0,
.fieldUseFunc = ItemUseOutOfBattle_Mail,
@@ -2008,7 +2008,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_WoodMail,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 0,
.fieldUseFunc = ItemUseOutOfBattle_Mail,
@@ -2024,7 +2024,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_WaveMail,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 0,
.fieldUseFunc = ItemUseOutOfBattle_Mail,
@@ -2040,7 +2040,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_BeadMail,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 0,
.fieldUseFunc = ItemUseOutOfBattle_Mail,
@@ -2056,7 +2056,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_ShadowMail,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 0,
.fieldUseFunc = ItemUseOutOfBattle_Mail,
@@ -2072,7 +2072,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TropicMail,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 0,
.fieldUseFunc = ItemUseOutOfBattle_Mail,
@@ -2088,7 +2088,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_DreamMail,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 0,
.fieldUseFunc = ItemUseOutOfBattle_Mail,
@@ -2104,7 +2104,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_FabMail,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 0,
.fieldUseFunc = ItemUseOutOfBattle_Mail,
@@ -2120,7 +2120,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_RetroMail,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 0,
.fieldUseFunc = ItemUseOutOfBattle_Mail,
@@ -2136,7 +2136,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_CheriBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -2152,7 +2152,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_ChestoBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -2168,7 +2168,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_PechaBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -2184,7 +2184,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_RawstBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -2200,7 +2200,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_AspearBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -2216,7 +2216,7 @@ const struct Item gItems[] =
.holdEffectParam = 10,
.description = gItemDescription_LeppaBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_PPRecovery,
@@ -2232,7 +2232,7 @@ const struct Item gItems[] =
.holdEffectParam = 10,
.description = gItemDescription_OranBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -2248,7 +2248,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_PersimBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2264,7 +2264,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_LumBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -2280,7 +2280,7 @@ const struct Item gItems[] =
.holdEffectParam = 30,
.description = gItemDescription_SitrusBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -2296,7 +2296,7 @@ const struct Item gItems[] =
.holdEffectParam = 8,
.description = gItemDescription_FigyBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2312,7 +2312,7 @@ const struct Item gItems[] =
.holdEffectParam = 8,
.description = gItemDescription_WikiBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2328,7 +2328,7 @@ const struct Item gItems[] =
.holdEffectParam = 8,
.description = gItemDescription_MagoBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2344,7 +2344,7 @@ const struct Item gItems[] =
.holdEffectParam = 8,
.description = gItemDescription_AguavBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2360,7 +2360,7 @@ const struct Item gItems[] =
.holdEffectParam = 8,
.description = gItemDescription_IapapaBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2376,7 +2376,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_RazzBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2392,7 +2392,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_BlukBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2408,7 +2408,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_NanabBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2424,7 +2424,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_WepearBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2440,7 +2440,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_PinapBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2456,7 +2456,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_PomegBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2472,7 +2472,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_KelpsyBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2488,7 +2488,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_QualotBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2504,7 +2504,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_HondewBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2520,7 +2520,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_GrepaBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2536,7 +2536,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TamatoBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2552,7 +2552,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_CornnBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2568,7 +2568,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_MagostBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2584,7 +2584,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_RabutaBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2600,7 +2600,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_NomelBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2616,7 +2616,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_SpelonBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2632,7 +2632,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_PamtreBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2648,7 +2648,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_WatmelBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2664,7 +2664,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_DurinBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2680,7 +2680,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_BelueBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2696,7 +2696,7 @@ const struct Item gItems[] =
.holdEffectParam = 4,
.description = gItemDescription_LiechiBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2712,7 +2712,7 @@ const struct Item gItems[] =
.holdEffectParam = 4,
.description = gItemDescription_GanlonBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2728,7 +2728,7 @@ const struct Item gItems[] =
.holdEffectParam = 4,
.description = gItemDescription_SalacBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2744,7 +2744,7 @@ const struct Item gItems[] =
.holdEffectParam = 4,
.description = gItemDescription_PetayaBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2760,7 +2760,7 @@ const struct Item gItems[] =
.holdEffectParam = 4,
.description = gItemDescription_ApicotBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2776,7 +2776,7 @@ const struct Item gItems[] =
.holdEffectParam = 4,
.description = gItemDescription_LansatBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2792,7 +2792,7 @@ const struct Item gItems[] =
.holdEffectParam = 4,
.description = gItemDescription_StarfBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2808,7 +2808,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_EnigmaBerry,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_EnigmaBerry,
@@ -2824,7 +2824,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2840,7 +2840,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2856,7 +2856,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2872,7 +2872,7 @@ const struct Item gItems[] =
.holdEffectParam = 10,
.description = gItemDescription_BrightPowder,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2888,7 +2888,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_WhiteHerb,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2904,7 +2904,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_MachoBrace,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2920,7 +2920,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_ExpShare,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2936,7 +2936,7 @@ const struct Item gItems[] =
.holdEffectParam = 20,
.description = gItemDescription_QuickClaw,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2952,7 +2952,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_SootheBell,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2968,7 +2968,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_MentalHerb,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2984,7 +2984,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_ChoiceBand,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3000,7 +3000,7 @@ const struct Item gItems[] =
.holdEffectParam = 10,
.description = gItemDescription_KingsRock,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3016,7 +3016,7 @@ const struct Item gItems[] =
.holdEffectParam = 10,
.description = gItemDescription_SilverPowder,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3032,7 +3032,7 @@ const struct Item gItems[] =
.holdEffectParam = 10,
.description = gItemDescription_AmuletCoin,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3048,7 +3048,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_CleanseTag,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3064,7 +3064,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_SoulDew,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3080,7 +3080,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_DeepSeaTooth,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3096,7 +3096,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_DeepSeaScale,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3112,7 +3112,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_SmokeBall,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3128,7 +3128,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Everstone,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3144,7 +3144,7 @@ const struct Item gItems[] =
.holdEffectParam = 10,
.description = gItemDescription_FocusBand,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3160,7 +3160,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_LuckyEgg,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3176,7 +3176,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_ScopeLens,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3192,7 +3192,7 @@ const struct Item gItems[] =
.holdEffectParam = 10,
.description = gItemDescription_MetalCoat,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3208,7 +3208,7 @@ const struct Item gItems[] =
.holdEffectParam = 10,
.description = gItemDescription_Leftovers,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3224,7 +3224,7 @@ const struct Item gItems[] =
.holdEffectParam = 10,
.description = gItemDescription_DragonScale,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3240,7 +3240,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_LightBall,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3256,7 +3256,7 @@ const struct Item gItems[] =
.holdEffectParam = 10,
.description = gItemDescription_SoftSand,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3272,7 +3272,7 @@ const struct Item gItems[] =
.holdEffectParam = 10,
.description = gItemDescription_HardStone,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3288,7 +3288,7 @@ const struct Item gItems[] =
.holdEffectParam = 10,
.description = gItemDescription_MiracleSeed,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3304,7 +3304,7 @@ const struct Item gItems[] =
.holdEffectParam = 10,
.description = gItemDescription_BlackGlasses,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3320,7 +3320,7 @@ const struct Item gItems[] =
.holdEffectParam = 10,
.description = gItemDescription_BlackBelt,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3336,7 +3336,7 @@ const struct Item gItems[] =
.holdEffectParam = 10,
.description = gItemDescription_Magnet,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3352,7 +3352,7 @@ const struct Item gItems[] =
.holdEffectParam = 10,
.description = gItemDescription_MysticWater,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3368,7 +3368,7 @@ const struct Item gItems[] =
.holdEffectParam = 10,
.description = gItemDescription_SharpBeak,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3384,7 +3384,7 @@ const struct Item gItems[] =
.holdEffectParam = 10,
.description = gItemDescription_PoisonBarb,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3400,7 +3400,7 @@ const struct Item gItems[] =
.holdEffectParam = 10,
.description = gItemDescription_NeverMeltIce,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3416,7 +3416,7 @@ const struct Item gItems[] =
.holdEffectParam = 10,
.description = gItemDescription_SpellTag,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3432,7 +3432,7 @@ const struct Item gItems[] =
.holdEffectParam = 10,
.description = gItemDescription_TwistedSpoon,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3448,7 +3448,7 @@ const struct Item gItems[] =
.holdEffectParam = 10,
.description = gItemDescription_Charcoal,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3464,7 +3464,7 @@ const struct Item gItems[] =
.holdEffectParam = 10,
.description = gItemDescription_DragonFang,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3480,7 +3480,7 @@ const struct Item gItems[] =
.holdEffectParam = 10,
.description = gItemDescription_SilkScarf,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3496,7 +3496,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_UpGrade,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3512,7 +3512,7 @@ const struct Item gItems[] =
.holdEffectParam = 8,
.description = gItemDescription_ShellBell,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3528,7 +3528,7 @@ const struct Item gItems[] =
.holdEffectParam = 5,
.description = gItemDescription_SeaIncense,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3544,7 +3544,7 @@ const struct Item gItems[] =
.holdEffectParam = 5,
.description = gItemDescription_LaxIncense,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3560,7 +3560,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_LuckyPunch,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3576,7 +3576,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_MetalPowder,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3592,7 +3592,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_ThickClub,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3608,7 +3608,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Stick,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3624,7 +3624,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3640,7 +3640,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3656,7 +3656,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3672,7 +3672,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3688,7 +3688,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3704,7 +3704,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3720,7 +3720,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3736,7 +3736,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3752,7 +3752,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3768,7 +3768,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3784,7 +3784,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3800,7 +3800,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3816,7 +3816,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3832,7 +3832,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3848,7 +3848,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3864,7 +3864,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3880,7 +3880,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3896,7 +3896,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3912,7 +3912,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3928,7 +3928,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3944,7 +3944,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3960,7 +3960,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3976,7 +3976,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -3992,7 +3992,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -4008,7 +4008,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -4024,7 +4024,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -4040,7 +4040,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -4056,7 +4056,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -4072,7 +4072,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_RedScarf,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -4088,7 +4088,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_BlueScarf,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -4104,7 +4104,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_PinkScarf,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -4120,7 +4120,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_GreenScarf,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -4136,7 +4136,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_YellowScarf,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -4152,7 +4152,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_MachBike,
.importance = 1,
- .unk19 = 1,
+ .exitsBagOnUse = 1,
.pocket = POCKET_KEY_ITEMS,
.type = 2,
.fieldUseFunc = ItemUseOutOfBattle_Bike,
@@ -4168,7 +4168,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_CoinCase,
.importance = 1,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CoinCase,
@@ -4184,7 +4184,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Itemfinder,
.importance = 1,
- .unk19 = 1,
+ .exitsBagOnUse = 1,
.pocket = POCKET_KEY_ITEMS,
.type = 2,
.fieldUseFunc = ItemUseOutOfBattle_Itemfinder,
@@ -4200,7 +4200,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_OldRod,
.importance = 1,
- .unk19 = 1,
+ .exitsBagOnUse = 1,
.pocket = POCKET_KEY_ITEMS,
.type = 2,
.fieldUseFunc = ItemUseOutOfBattle_Rod,
@@ -4216,7 +4216,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_GoodRod,
.importance = 1,
- .unk19 = 1,
+ .exitsBagOnUse = 1,
.pocket = POCKET_KEY_ITEMS,
.type = 2,
.fieldUseFunc = ItemUseOutOfBattle_Rod,
@@ -4232,7 +4232,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_SuperRod,
.importance = 1,
- .unk19 = 1,
+ .exitsBagOnUse = 1,
.pocket = POCKET_KEY_ITEMS,
.type = 2,
.fieldUseFunc = ItemUseOutOfBattle_Rod,
@@ -4248,7 +4248,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_SSTicket,
.importance = 1,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -4264,7 +4264,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_ContestPass,
.importance = 1,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -4280,7 +4280,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -4296,7 +4296,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_WailmerPail,
.importance = 1,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 2,
.fieldUseFunc = ItemUseOutOfBattle_WailmerPail,
@@ -4312,7 +4312,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_DevonGoods,
.importance = 2,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -4328,7 +4328,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_SootSack,
.importance = 1,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -4344,7 +4344,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_BasementKey,
.importance = 1,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -4360,7 +4360,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_AcroBike,
.importance = 1,
- .unk19 = 1,
+ .exitsBagOnUse = 1,
.pocket = POCKET_KEY_ITEMS,
.type = 2,
.fieldUseFunc = ItemUseOutOfBattle_Bike,
@@ -4376,7 +4376,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_PokeblockCase,
.importance = 1,
- .unk19 = 1,
+ .exitsBagOnUse = 1,
.pocket = POCKET_KEY_ITEMS,
.type = 3,
.fieldUseFunc = ItemUseOutOfBattle_PokeblockCase,
@@ -4392,7 +4392,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Letter,
.importance = 2,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -4408,7 +4408,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_EonTicket,
.importance = 1,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -4424,7 +4424,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_RedOrb,
.importance = 2,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -4440,7 +4440,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_BlueOrb,
.importance = 2,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -4456,7 +4456,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Scanner,
.importance = 1,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -4472,7 +4472,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_GoGoggles,
.importance = 1,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -4488,7 +4488,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Meteorite,
.importance = 1,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -4504,7 +4504,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Room1Key,
.importance = 1,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -4520,7 +4520,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Room2Key,
.importance = 1,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -4536,7 +4536,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Room4Key,
.importance = 1,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -4552,7 +4552,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Room6Key,
.importance = 1,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -4568,7 +4568,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_StorageKey,
.importance = 1,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -4584,7 +4584,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_RootFossil,
.importance = 1,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -4600,7 +4600,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_ClawFossil,
.importance = 1,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -4616,7 +4616,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_DevonScope,
.importance = 1,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -4632,7 +4632,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM01,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -4648,7 +4648,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM02,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -4664,7 +4664,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM03,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -4680,7 +4680,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM04,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -4696,7 +4696,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM05,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -4712,7 +4712,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM06,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -4728,7 +4728,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM07,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -4744,7 +4744,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM08,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -4760,7 +4760,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM09,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -4776,7 +4776,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM10,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -4792,7 +4792,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM11,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -4808,7 +4808,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM12,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -4824,7 +4824,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM13,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -4840,7 +4840,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM14,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -4856,7 +4856,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM15,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -4872,7 +4872,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM16,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -4888,7 +4888,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM17,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -4904,7 +4904,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM18,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -4920,7 +4920,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM19,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -4936,7 +4936,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM20,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -4952,7 +4952,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM21,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -4968,7 +4968,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM22,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -4984,7 +4984,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM23,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5000,7 +5000,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM24,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5016,7 +5016,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM25,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5032,7 +5032,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM26,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5048,7 +5048,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM27,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5064,7 +5064,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM28,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5080,7 +5080,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM29,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5096,7 +5096,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM30,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5112,7 +5112,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM31,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5128,7 +5128,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM32,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5144,7 +5144,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM33,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5160,7 +5160,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM34,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5176,7 +5176,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM35,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5192,7 +5192,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM36,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5208,7 +5208,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM37,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5224,7 +5224,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM38,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5240,7 +5240,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM39,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5256,7 +5256,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM40,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5272,7 +5272,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM41,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5288,7 +5288,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM42,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5304,7 +5304,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM43,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5320,7 +5320,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM44,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5336,7 +5336,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM45,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5352,7 +5352,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM46,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5368,7 +5368,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM47,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5384,7 +5384,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM48,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5400,7 +5400,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM49,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5416,7 +5416,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_TM50,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5432,7 +5432,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_HM01,
.importance = 1,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5448,7 +5448,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_HM02,
.importance = 1,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5464,7 +5464,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_HM03,
.importance = 1,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5480,7 +5480,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_HM04,
.importance = 1,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5496,7 +5496,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_HM05,
.importance = 1,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5512,7 +5512,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_HM06,
.importance = 1,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5528,7 +5528,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_HM07,
.importance = 1,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5544,7 +5544,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_HM08,
.importance = 1,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@@ -5560,7 +5560,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -5576,7 +5576,7 @@ const struct Item gItems[] =
.holdEffectParam = 0,
.description = gItemDescription_Dummy,
.importance = 0,
- .unk19 = 0,
+ .exitsBagOnUse = 0,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
diff --git a/src/data/region_map_layout.h b/src/data/region_map_layout.h
index ca33ef37a..1bc93cbb3 100644
--- a/src/data/region_map_layout.h
+++ b/src/data/region_map_layout.h
@@ -20,7 +20,7 @@
#define SAFARI MAPSEC_SAFARI_ZONE
#define BTLTWR MAPSEC_BATTLE_TOWER
#define S_ISLD MAPSEC_SOUTHERN_ISLAND
-#define ______ MAPSEC_NONE
+#define ______ MAPSEC_NOTHING
static const u8 sRegionMapLayout[] =
{
diff --git a/src/data/text/easy_chat/group_name_table.h b/src/data/text/easy_chat/group_name_table.h
new file mode 100644
index 000000000..7c2e6b374
--- /dev/null
+++ b/src/data/text/easy_chat/group_name_table.h
@@ -0,0 +1,29 @@
+#ifndef DATA_TEXT_EASY_CHAT_GROUP_NAME_TABLE
+#define DATA_TEXT_EASY_CHAT_GROUP_NAME_TABLE
+
+const u8 * gEasyChatGroupNames[] = {
+ gEasyChatGroupName_Pokemon,
+ gEasyChatGroupName_Trainer,
+ gEasyChatGroupName_Status,
+ gEasyChatGroupName_Battle,
+ gEasyChatGroupName_Greetings,
+ gEasyChatGroupName_People,
+ gEasyChatGroupName_Voices,
+ gEasyChatGroupName_Speech,
+ gEasyChatGroupName_Endings,
+ gEasyChatGroupName_Feelings,
+ gEasyChatGroupName_Conditions,
+ gEasyChatGroupName_Actions,
+ gEasyChatGroupName_Lifestyle,
+ gEasyChatGroupName_Hobbies,
+ gEasyChatGroupName_Time,
+ gEasyChatGroupName_Misc,
+ gEasyChatGroupName_Adjectives,
+ gEasyChatGroupName_Events,
+ gEasyChatGroupName_Move1,
+ gEasyChatGroupName_Move2,
+ gEasyChatGroupName_TrendySaying,
+ gEasyChatGroupName_Pokemon2,
+};
+
+#endif // DATA_TEXT_EASY_CHAT_GROUP_NAME_TABLE
diff --git a/src/data/text/easy_chat/group_orders.h b/src/data/text/easy_chat/group_orders.h
new file mode 100644
index 000000000..cb92b8d4c
--- /dev/null
+++ b/src/data/text/easy_chat/group_orders.h
@@ -0,0 +1,51 @@
+#ifndef DATA_TEXT_EASY_CHAT_GROUP_ORDERS
+#define DATA_TEXT_EASY_CHAT_GROUP_ORDERS
+
+#include "groups/pokemon/order.h"
+#include "groups/trainer/order.h"
+#include "groups/status/order.h"
+#include "groups/battle/order.h"
+#include "groups/greetings/order.h"
+#include "groups/people/order.h"
+#include "groups/voices/order.h"
+#include "groups/speech/order.h"
+#include "groups/endings/order.h"
+#include "groups/feelings/order.h"
+#include "groups/conditions/order.h"
+#include "groups/actions/order.h"
+#include "groups/lifestyle/order.h"
+#include "groups/hobbies/order.h"
+#include "groups/time/order.h"
+#include "groups/misc/order.h"
+#include "groups/adjectives/order.h"
+#include "groups/events/order.h"
+#include "groups/move_1/order.h"
+#include "groups/move_2/order.h"
+#include "groups/trendy_saying/order.h"
+#include "groups/pokemon_2/order.h"
+
+const u16 * gEasyChatGroupOrders[] = {
+ gEasyChatGroupOrder_Pokemon,
+ gEasyChatGroupOrder_Trainer,
+ gEasyChatGroupOrder_Status,
+ gEasyChatGroupOrder_Battle,
+ gEasyChatGroupOrder_Greetings,
+ gEasyChatGroupOrder_People,
+ gEasyChatGroupOrder_Voices,
+ gEasyChatGroupOrder_Speech,
+ gEasyChatGroupOrder_Endings,
+ gEasyChatGroupOrder_Feelings,
+ gEasyChatGroupOrder_Conditions,
+ gEasyChatGroupOrder_Actions,
+ gEasyChatGroupOrder_Lifestyle,
+ gEasyChatGroupOrder_Hobbies,
+ gEasyChatGroupOrder_Time,
+ gEasyChatGroupOrder_Misc,
+ gEasyChatGroupOrder_Adjectives,
+ gEasyChatGroupOrder_Events,
+ gEasyChatGroupOrder_Move1,
+ gEasyChatGroupOrder_Move2,
+ gEasyChatGroupOrder_TrendySaying,
+ gEasyChatGroupOrder_Pokemon2
+};
+#endif // DATA_TEXT_EASY_CHAT_GROUP_ORDERS
diff --git a/src/data/text/easy_chat/group_sizes.h b/src/data/text/easy_chat/group_sizes.h
new file mode 100644
index 000000000..2b3d72607
--- /dev/null
+++ b/src/data/text/easy_chat/group_sizes.h
@@ -0,0 +1,29 @@
+#ifndef DATA_TEXT_EASY_CHAT_GROUP_SIZES
+#define DATA_TEXT_EASY_CHAT_GROUP_SIZES
+
+u8 gEasyChatGroupSizes[] = {
+ 202, // POKEMON
+ 19, // TRAINER
+ 109, // STATUS
+ 63, // BATTLE
+ 42, // GREETINGS
+ 75, // PEOPLE
+ 63, // VOICES
+ 60, // SPEECH
+ 69, // ENDINGS
+ 69, // FEELINGS
+ 69, // CONDITIONS
+ 78, // ACTIONS
+ 45, // LIFESTYLE
+ 54, // HOBBIES
+ 45, // TIME
+ 42, // MISC
+ 36, // ADJECTIVES
+ 22, // EVENTS
+ 153, // MOVE_1
+ 194, // MOVE_2
+ 33, // TRENDY_SAYING
+ 251, // POKEMON_2
+};
+
+#endif // DATA_TEXT_EASY_CHAT_GROUP_SIZES
diff --git a/src/data/text/easy_chat/group_words.h b/src/data/text/easy_chat/group_words.h
new file mode 100644
index 000000000..1c4461e59
--- /dev/null
+++ b/src/data/text/easy_chat/group_words.h
@@ -0,0 +1,51 @@
+#ifndef DATA_TEXT_EASY_CHAT_GROUP_WORDS
+#define DATA_TEXT_EASY_CHAT_GROUP_WORDS
+
+#include "groups/pokemon/words.h"
+#include "groups/trainer/words.h"
+#include "groups/status/words.h"
+#include "groups/battle/words.h"
+#include "groups/greetings/words.h"
+#include "groups/people/words.h"
+#include "groups/voices/words.h"
+#include "groups/speech/words.h"
+#include "groups/endings/words.h"
+#include "groups/feelings/words.h"
+#include "groups/conditions/words.h"
+#include "groups/actions/words.h"
+#include "groups/lifestyle/words.h"
+#include "groups/hobbies/words.h"
+#include "groups/time/words.h"
+#include "groups/misc/words.h"
+#include "groups/adjectives/words.h"
+#include "groups/events/words.h"
+#include "groups/move_1/words.h"
+#include "groups/move_2/words.h"
+#include "groups/trendy_saying/words.h"
+#include "groups/pokemon_2/words.h"
+
+const u8 * gEasyChatGroupWords[] = {
+ (const u8 *)gEasyChatGroupWords_Pokemon,
+ gEasyChatGroupWords_Trainer,
+ gEasyChatGroupWords_Status,
+ gEasyChatGroupWords_Battle,
+ gEasyChatGroupWords_Greetings,
+ gEasyChatGroupWords_People,
+ gEasyChatGroupWords_Voices,
+ gEasyChatGroupWords_Speech,
+ gEasyChatGroupWords_Endings,
+ gEasyChatGroupWords_Feelings,
+ gEasyChatGroupWords_Conditions,
+ gEasyChatGroupWords_Actions,
+ gEasyChatGroupWords_Lifestyle,
+ gEasyChatGroupWords_Hobbies,
+ gEasyChatGroupWords_Time,
+ gEasyChatGroupWords_Misc,
+ gEasyChatGroupWords_Adjectives,
+ gEasyChatGroupWords_Events,
+ (const u8 *)gEasyChatGroupWords_Move1,
+ (const u8 *)gEasyChatGroupWords_Move2,
+ gEasyChatGroupWords_TrendySaying,
+ (const u8 *)gEasyChatGroupWords_Pokemon2
+};
+#endif // DATA_TEXT_EASY_CHAT_GROUP_WORDS
diff --git a/src/data/text/easy_chat/groups/actions/order.h b/src/data/text/easy_chat/groups/actions/order.h
new file mode 100644
index 000000000..f2d67bae1
--- /dev/null
+++ b/src/data/text/easy_chat/groups/actions/order.h
@@ -0,0 +1,168 @@
+#ifndef DATA_TEXT_EASY_CHAT_GROUPS_ACTIONS_ORDER
+#define DATA_TEXT_EASY_CHAT_GROUPS_ACTIONS_ORDER
+
+#if ENGLISH
+u16 gEasyChatGroupOrder_Actions[] = {
+ 72,
+ 14,
+ 48,
+ 75,
+ 39,
+ 36,
+ 28,
+ 46,
+ 31,
+ 19,
+ 26,
+ 6,
+ 27,
+ 1,
+ 45,
+ 47,
+ 54,
+ 41,
+ 76,
+ 77,
+ 73,
+ 74,
+ 2,
+ 3,
+ 24,
+ 37,
+ 32,
+ 33,
+ 22,
+ 18,
+ 23,
+ 67,
+ 30,
+ 0,
+ 65,
+ 70,
+ 4,
+ 5,
+ 17,
+ 64,
+ 63,
+ 34,
+ 53,
+ 56,
+ 55,
+ 11,
+ 9,
+ 29,
+ 69,
+ 68,
+ 66,
+ 61,
+ 52,
+ 51,
+ 40,
+ 62,
+ 35,
+ 20,
+ 71,
+ 60,
+ 59,
+ 15,
+ 16,
+ 38,
+ 49,
+ 25,
+ 21,
+ 42,
+ 43,
+ 44,
+ 12,
+ 13,
+ 7,
+ 8,
+ 10,
+ 58,
+ 57,
+ 50,
+};
+#elif GERMAN
+u16 gEasyChatGroupOrder_Actions[] = {
+ 36,
+ 58,
+ 14,
+ 12,
+ 76,
+ 70,
+ 17,
+ 38,
+ 72,
+ 48,
+ 75,
+ 71,
+ 46,
+ 53,
+ 2,
+ 42,
+ 43,
+ 24,
+ 3,
+ 10,
+ 39,
+ 40,
+ 22,
+ 31,
+ 23,
+ 37,
+ 41,
+ 28,
+ 77,
+ 27,
+ 45,
+ 35,
+ 15,
+ 16,
+ 18,
+ 64,
+ 30,
+ 59,
+ 60,
+ 56,
+ 55,
+ 1,
+ 9,
+ 11,
+ 6,
+ 67,
+ 52,
+ 62,
+ 51,
+ 57,
+ 68,
+ 50,
+ 5,
+ 4,
+ 20,
+ 69,
+ 29,
+ 25,
+ 0,
+ 54,
+ 65,
+ 73,
+ 74,
+ 47,
+ 61,
+ 21,
+ 44,
+ 63,
+ 13,
+ 26,
+ 7,
+ 8,
+ 19,
+ 34,
+ 33,
+ 49,
+ 32,
+ 66,
+};
+#endif // GAME_LANGUAGE
+
+#endif // DATA_TEXT_EASY_CHAT_GROUPS_ACTIONS_ORDER
diff --git a/src/data/text/easy_chat/groups/actions/words.h b/src/data/text/easy_chat/groups/actions/words.h
new file mode 100644
index 000000000..231333963
--- /dev/null
+++ b/src/data/text/easy_chat/groups/actions/words.h
@@ -0,0 +1,166 @@
+#ifndef DATA_TEXT_EASY_CHAT_GROUPS_ACTIONS_WORDS
+#define DATA_TEXT_EASY_CHAT_GROUPS_ACTIONS_WORDS
+#if ENGLISH
+u8 gEasyChatGroupWords_Actions[] = _(
+ "MEETS$"
+ "CONCEDE$"
+ "GIVE$"
+ "GIVES$"
+ "PLAYED$"
+ "PLAYS$"
+ "COLLECT$"
+ "WALKING$"
+ "WALKS$"
+ "SAYS$"
+ "WENT$"
+ "SAID$"
+ "WAKE UP$"
+ "WAKES UP$"
+ "ANGERS$"
+ "TEACH$"
+ "TEACHES$"
+ "PLEASE$"
+ "LEARN$"
+ "CHANGE$"
+ "STORY$"
+ "TRUST$"
+ "LAVISH$"
+ "LISTENS$"
+ "HEARING$"
+ "TRAINS$"
+ "CHOOSE$"
+ "COME$"
+ "CAME$"
+ "SEARCH$"
+ "MAKE$"
+ "CAUSE$"
+ "KNOW$"
+ "KNOWS$"
+ "REFUSE$"
+ "STORES$"
+ "BRAG$"
+ "IGNORANT$"
+ "THINKS$"
+ "BELIEVE$"
+ "SLIDE$"
+ "EATS$"
+ "USE$"
+ "USES$"
+ "USING$"
+ "COULDN’T$"
+ "CAPABLE$"
+ "DISAPPEAR$"
+ "APPEAR$"
+ "THROW$"
+ "WORRY$"
+ "SLEPT$"
+ "SLEEP$"
+ "RELEASE$"
+ "DRINKS$"
+ "RUNS$"
+ "RUN$"
+ "WORKS$"
+ "WORKING$"
+ "TALKING$"
+ "TALK$"
+ "SINK$"
+ "SMACK$"
+ "PRETEND$"
+ "PRAISE$"
+ "OVERDO$"
+ "SHOW$"
+ "LOOKS$"
+ "SEES$"
+ "SEEK$"
+ "OWN$"
+ "TAKE$"
+ "ALLOW$"
+ "FORGET$"
+ "FORGETS$"
+ "APPEARS$"
+ "FAINT$"
+ "FAINTED$"
+ );
+#elif GERMAN
+u8 gEasyChatGroupWords_Actions[] = _(
+ "TRIFFT$"
+ "RESIGNIEREN$"
+ "GEBEN$"
+ "GIBT$"
+ "SPIELTE$"
+ "SPIELT$"
+ "SAMMELN$"
+ "WANDERN$"
+ "WANDERT$"
+ "SAGT$"
+ "GING$"
+ "SAGTE$"
+ "AUFWACHEN$"
+ "WACHT AUF$"
+ "ÄRGERT$"
+ "LEHREN$"
+ "LEHRT$"
+ "BITTE$"
+ "LERNE$"
+ "WECHSELN$"
+ "STORY$"
+ "VERTRAUEN$"
+ "GROSSZÜGIG$"
+ "HÖRT$"
+ "GEHÖRT$"
+ "TRAINIERT$"
+ "WÄHLEN$"
+ "KOMMEN$"
+ "KAM$"
+ "SUCHE$"
+ "MACHEN$"
+ "GRUND$"
+ "WISSEN$"
+ "WEISS$"
+ "WEIGERN$"
+ "LAGERT$"
+ "ANGEBEN$"
+ "IGNORANT$"
+ "DENKT$"
+ "GLAUBE$"
+ "GLEITEN$"
+ "ISST$"
+ "GEBRAUCHEN$"
+ "GEBRAUCHT$"
+ "VERWENDEN$"
+ "KÖNNEN NICHT$"
+ "FÄHIG$"
+ "VERSCHWINDE$"
+ "ERSCHEINEN$"
+ "WERFEN$"
+ "SORGE$"
+ "SCHLIEF$"
+ "SCHLAF$"
+ "FREILASSEN$"
+ "TRINKT$"
+ "RENNT$"
+ "RENNEN$"
+ "SEHEN$"
+ "ARBEITEN$"
+ "REDEN$"
+ "REDET$"
+ "VERSENKEN$"
+ "SCHLAG$"
+ "VORTÄUSCHEN$"
+ "LOBEN$"
+ "ÜBERTREIBEN$"
+ "ZEIGEN$"
+ "SCHAUT$"
+ "SIEHT$"
+ "STREBEN NACH$"
+ "BESITZEN$"
+ "ERTRAGEN$"
+ "ERLAUBEN$"
+ "VERGESSEN$"
+ "VERGISST$"
+ "ERSCHEINT$"
+ "BESIEGEN$"
+ "KAMPFUNFÄHIG$"
+ );
+#endif // GAME_LANGUAGE
+#endif // DATA_TEXT_EASY_CHAT_GROUPS_ACTIONS_WORDS
diff --git a/src/data/text/easy_chat/groups/adjectives/order.h b/src/data/text/easy_chat/groups/adjectives/order.h
new file mode 100644
index 000000000..63440ced7
--- /dev/null
+++ b/src/data/text/easy_chat/groups/adjectives/order.h
@@ -0,0 +1,84 @@
+#ifndef DATA_TEXT_EASY_CHAT_GROUPS_ADJECTIVES_ORDER
+#define DATA_TEXT_EASY_CHAT_GROUPS_ADJECTIVES_ORDER
+
+#if ENGLISH
+u16 gEasyChatGroupOrder_Adjectives[] = {
+ 35,
+ 23,
+ 20,
+ 31,
+ 14,
+ 15,
+ 32,
+ 34,
+ 12,
+ 3,
+ 29,
+ 9,
+ 33,
+ 1,
+ 27,
+ 2,
+ 11,
+ 22,
+ 26,
+ 28,
+ 10,
+ 18,
+ 17,
+ 7,
+ 16,
+ 19,
+ 8,
+ 5,
+ 4,
+ 6,
+ 13,
+ 21,
+ 0,
+ 24,
+ 25,
+ 30,
+};
+#elif GERMAN
+u16 gEasyChatGroupOrder_Adjectives[] = {
+ 24,
+ 28,
+ 17,
+ 18,
+ 35,
+ 23,
+ 15,
+ 5,
+ 19,
+ 4,
+ 0,
+ 8,
+ 9,
+ 3,
+ 21,
+ 34,
+ 13,
+ 30,
+ 12,
+ 27,
+ 31,
+ 14,
+ 20,
+ 6,
+ 22,
+ 33,
+ 11,
+ 26,
+ 16,
+ 2,
+ 1,
+ 7,
+ 29,
+ 10,
+ 32,
+ 25,
+};
+#endif // GAME_LANGUAGE
+
+#endif // DATA_TEXT_EASY_CHAT_GROUPS_ADJECTIVES_ORDER
diff --git a/src/data/text/easy_chat/groups/adjectives/words.h b/src/data/text/easy_chat/groups/adjectives/words.h
new file mode 100644
index 000000000..ef5b77b88
--- /dev/null
+++ b/src/data/text/easy_chat/groups/adjectives/words.h
@@ -0,0 +1,82 @@
+#ifndef DATA_TEXT_EASY_CHAT_GROUPS_ADJECTIVES_WORDS
+#define DATA_TEXT_EASY_CHAT_GROUPS_ADJECTIVES_WORDS
+#if ENGLISH
+u8 gEasyChatGroupWords_Adjectives[] = _(
+ "WANDERING$"
+ "RICKETY$"
+ "ROCK-SOLID$"
+ "HUNGRY$"
+ "TIGHT$"
+ "TICKLISH$"
+ "TWIRLING$"
+ "SPIRALING$"
+ "THIRSTY$"
+ "LOLLING$"
+ "SILKY$"
+ "SADLY$"
+ "HOPELESS$"
+ "USELESS$"
+ "DROOLING$"
+ "EXCITING$"
+ "THICK$"
+ "SMOOTH$"
+ "SLIMY$"
+ "THIN$"
+ "BREAK$"
+ "VORACIOUS$"
+ "SCATTER$"
+ "AWESOME$"
+ "WIMPY$"
+ "WOBBLY$"
+ "SHAKY$"
+ "RIPPED$"
+ "SHREDDED$"
+ "INCREASING$"
+ "YET$"
+ "DESTROYED$"
+ "FIERY$"
+ "LOVEY-DOVEY$"
+ "HAPPILY$"
+ "ANTICIPATION$"
+ );
+#elif GERMAN
+u8 gEasyChatGroupWords_Adjectives[] = _(
+ "LATSCH$"
+ "WACKEL$"
+ "STEINHART$"
+ "MAGENKNURR$"
+ "KNURSCHP$"
+ "KILLE KILLE$"
+ "SCHLEUDER$"
+ "WIRBEL$"
+ "LECHZ$"
+ "LÜMMEL RÄKEL$"
+ "WUSCHEL$"
+ "SCHNÜFF$"
+ "OOCH$"
+ "MÜLL$"
+ "SABBER$"
+ "JIPP! JIPP!$"
+ "SCHWABBEL$"
+ "GLATT$"
+ "GLIBBER$"
+ "KLAPPER$"
+ "SCHEPPER$"
+ "MAMPF FRESS$"
+ "SCHMEISS$"
+ "IRRE$"
+ "ANGST BIBBER$"
+ "ZITTER$"
+ "SCHÜTTEL$"
+ "RATSCH$"
+ "FETZ$"
+ "WURGS$"
+ "NÖÖÖ$"
+ "RUMMS BERST$"
+ "ZISCH FACKEL$"
+ "SCHNUCKELIG$"
+ "MEGAGRINS$"
+ "GRINS HOFF$"
+ );
+#endif // GAME_LANGUAGE
+#endif // DATA_TEXT_EASY_CHAT_GROUPS_ADJECTIVES_WORDS
diff --git a/src/data/text/easy_chat/groups/battle/order.h b/src/data/text/easy_chat/groups/battle/order.h
new file mode 100644
index 000000000..8bae339b9
--- /dev/null
+++ b/src/data/text/easy_chat/groups/battle/order.h
@@ -0,0 +1,138 @@
+#ifndef DATA_TEXT_EASY_CHAT_GROUPS_BATTLE_ORDER
+#define DATA_TEXT_EASY_CHAT_GROUPS_BATTLE_ORDER
+
+#if ENGLISH
+u16 gEasyChatGroupOrder_Battle[] = {
+ 53,
+ 39,
+ 18,
+ 40,
+ 11,
+ 10,
+ 31,
+ 17,
+ 3,
+ 14,
+ 56,
+ 38,
+ 41,
+ 29,
+ 35,
+ 36,
+ 45,
+ 1,
+ 34,
+ 50,
+ 20,
+ 47,
+ 8,
+ 54,
+ 60,
+ 37,
+ 4,
+ 49,
+ 46,
+ 48,
+ 24,
+ 0,
+ 62,
+ 12,
+ 2,
+ 26,
+ 51,
+ 43,
+ 30,
+ 59,
+ 55,
+ 52,
+ 42,
+ 61,
+ 27,
+ 44,
+ 23,
+ 13,
+ 22,
+ 32,
+ 19,
+ 16,
+ 21,
+ 33,
+ 58,
+ 15,
+ 28,
+ 25,
+ 57,
+ 9,
+ 6,
+ 5,
+ 7,
+};
+#elif GERMAN
+u16 gEasyChatGroupOrder_Battle[] = {
+ 52,
+ 53,
+ 18,
+ 62,
+ 45,
+ 42,
+ 3,
+ 14,
+ 19,
+ 55,
+ 44,
+ 38,
+ 28,
+ 35,
+ 36,
+ 6,
+ 8,
+ 5,
+ 7,
+ 0,
+ 31,
+ 4,
+ 40,
+ 41,
+ 11,
+ 17,
+ 30,
+ 59,
+ 37,
+ 56,
+ 60,
+ 1,
+ 20,
+ 16,
+ 2,
+ 26,
+ 24,
+ 51,
+ 43,
+ 61,
+ 23,
+ 34,
+ 57,
+ 13,
+ 25,
+ 10,
+ 9,
+ 27,
+ 32,
+ 22,
+ 29,
+ 21,
+ 15,
+ 54,
+ 12,
+ 47,
+ 49,
+ 48,
+ 46,
+ 50,
+ 39,
+ 58,
+ 33,
+};
+#endif // GAME_LANGUAGE
+
+#endif // DATA_TEXT_EASY_CHAT_GROUPS_BATTLE_ORDER
diff --git a/src/data/text/easy_chat/groups/battle/words.h b/src/data/text/easy_chat/groups/battle/words.h
new file mode 100644
index 000000000..115848cf6
--- /dev/null
+++ b/src/data/text/easy_chat/groups/battle/words.h
@@ -0,0 +1,136 @@
+#ifndef DATA_TEXT_EASY_CHAT_GROUPS_BATTLE_WORDS
+#define DATA_TEXT_EASY_CHAT_GROUPS_BATTLE_WORDS
+#if ENGLISH
+u8 gEasyChatGroupWords_Battle[] = _(
+ "MATCH UP$"
+ "GO$"
+ "NO. 1$"
+ "DECIDE$"
+ "LET ME WIN$"
+ "WINS$"
+ "WIN$"
+ "WON$"
+ "IF I WIN$"
+ "WHEN I WIN$"
+ "CAN’T WIN$"
+ "CAN WIN$"
+ "NO MATCH$"
+ "SPIRIT$"
+ "DECIDED$"
+ "TRUMP CARD$"
+ "TAKE THAT$"
+ "COME ON$"
+ "ATTACK$"
+ "SURRENDER$"
+ "GUTSY$"
+ "TALENT$"
+ "STRATEGY$"
+ "SMITE$"
+ "MATCH$"
+ "VICTORY$"
+ "OFFENSIVE$"
+ "SENSE$"
+ "VERSUS$"
+ "FIGHTS$"
+ "POWER$"
+ "CHALLENGE$"
+ "STRONG$"
+ "TOO STRONG$"
+ "GO EASY$"
+ "FOE$"
+ "GENIUS$"
+ "LEGEND$"
+ "ESCAPE$"
+ "AIM$"
+ "BATTLE$"
+ "FIGHT$"
+ "RESUSCITATE$"
+ "POINTS$"
+ "SERIOUS$"
+ "GIVE UP$"
+ "LOSS$"
+ "IF I LOSE$"
+ "LOST$"
+ "LOSE$"
+ "GUARD$"
+ "PARTNER$"
+ "REJECT$"
+ "ACCEPT$"
+ "INVINCIBLE$"
+ "RECEIVED$"
+ "EASY$"
+ "WEAK$"
+ "TOO WEAK$"
+ "PUSHOVER$"
+ "LEADER$"
+ "RULE$"
+ "MOVE$"
+ );
+#elif GERMAN
+u8 gEasyChatGroupWords_Battle[] = _(
+ "HARMONIEREN$"
+ "LOS$"
+ "NR. 1$"
+ "ENTSCHEIDEN$"
+ "ICH SIEGE!$"
+ "GEWINNEN$"
+ "GEWINNE$"
+ "GEWONNEN$"
+ "GEWINNE ICH$"
+ "SIEGE ICH$"
+ "SIEG UNMÖGL.$"
+ "KANN SIEGEN$"
+ "UNTERLEGEN$"
+ "SEELE$"
+ "ENTSCHIEDEN$"
+ "TRUMPFKARTE$"
+ "NIMM DAS$"
+ "KOMM SCHON$"
+ "ANGRIFF$"
+ "ERGEBEN$"
+ "MUTIG$"
+ "TALENTIERT$"
+ "STRATEGIE$"
+ "SCHLAGEN$"
+ "PARTIE$"
+ "SIEG$"
+ "OFFENSIV$"
+ "SINN$"
+ "GEGEN$"
+ "STREITEN$"
+ "KRAFT$"
+ "HERAUSFORDRG$"
+ "STARKEN$"
+ "ZU STARK$"
+ "SCHONEN$"
+ "GEGNER$"
+ "GENIE$"
+ "LEGENDE$"
+ "FLUCHT$"
+ "ZIEL$"
+ "KÄMPFE$"
+ "KÄMPFEN$"
+ "BELEBEN$"
+ "PUNKTE$"
+ "ERNSTHAFT$"
+ "AUFGEBEN$"
+ "VERLUST$"
+ "VERLIERE ICH$"
+ "VERLOREN$"
+ "VERLIEREN$"
+ "WACHE$"
+ "PARTNER$"
+ "ABLEHNEN$"
+ "AKZEPTIEREN$"
+ "UNSCHLAGBAR$"
+ "ERHALTEN$"
+ "LEICHT$"
+ "SCHWACH$"
+ "ZU SCHWACH$"
+ "LAPPALIE$"
+ "LEITER$"
+ "REGEL$"
+ "ATTACKE$"
+ );
+#endif // GAME_LANGUAGE
+#endif // DATA_TEXT_EASY_CHAT_GROUPS_BATTLE_WORDS
diff --git a/src/data/text/easy_chat/groups/conditions/order.h b/src/data/text/easy_chat/groups/conditions/order.h
new file mode 100644
index 000000000..8c756813a
--- /dev/null
+++ b/src/data/text/easy_chat/groups/conditions/order.h
@@ -0,0 +1,150 @@
+#ifndef DATA_TEXT_EASY_CHAT_GROUPS_CONDITIONS_ORDER
+#define DATA_TEXT_EASY_CHAT_GROUPS_CONDITIONS_ORDER
+
+#if ENGLISH
+u16 gEasyChatGroupOrder_Conditions[] = {
+ 13,
+ 55,
+ 23,
+ 3,
+ 54,
+ 68,
+ 50,
+ 14,
+ 60,
+ 19,
+ 56,
+ 10,
+ 21,
+ 30,
+ 38,
+ 41,
+ 22,
+ 36,
+ 24,
+ 28,
+ 2,
+ 1,
+ 37,
+ 35,
+ 52,
+ 12,
+ 8,
+ 5,
+ 4,
+ 27,
+ 0,
+ 39,
+ 63,
+ 59,
+ 20,
+ 6,
+ 61,
+ 53,
+ 51,
+ 62,
+ 7,
+ 33,
+ 58,
+ 49,
+ 15,
+ 18,
+ 45,
+ 47,
+ 48,
+ 34,
+ 25,
+ 46,
+ 26,
+ 31,
+ 57,
+ 67,
+ 66,
+ 43,
+ 17,
+ 40,
+ 16,
+ 42,
+ 11,
+ 44,
+ 32,
+ 29,
+ 65,
+ 9,
+ 64,
+};
+#elif GERMAN
+u16 gEasyChatGroupOrder_Conditions[] = {
+ 46,
+ 13,
+ 55,
+ 23,
+ 36,
+ 10,
+ 60,
+ 15,
+ 66,
+ 31,
+ 1,
+ 28,
+ 35,
+ 62,
+ 59,
+ 5,
+ 58,
+ 57,
+ 8,
+ 56,
+ 3,
+ 43,
+ 17,
+ 65,
+ 27,
+ 19,
+ 4,
+ 0,
+ 63,
+ 26,
+ 30,
+ 47,
+ 40,
+ 61,
+ 18,
+ 51,
+ 16,
+ 68,
+ 34,
+ 42,
+ 21,
+ 49,
+ 48,
+ 53,
+ 45,
+ 25,
+ 38,
+ 22,
+ 67,
+ 64,
+ 54,
+ 52,
+ 7,
+ 14,
+ 20,
+ 37,
+ 44,
+ 2,
+ 29,
+ 39,
+ 24,
+ 32,
+ 9,
+ 41,
+ 33,
+ 12,
+ 6,
+ 50,
+ 11,
+};
+#endif // GAME_LANGUAGE
+
+#endif // DATA_TEXT_EASY_CHAT_GROUPS_CONDITIONS_ORDER
diff --git a/src/data/text/easy_chat/groups/conditions/words.h b/src/data/text/easy_chat/groups/conditions/words.h
new file mode 100644
index 000000000..5d6de810a
--- /dev/null
+++ b/src/data/text/easy_chat/groups/conditions/words.h
@@ -0,0 +1,148 @@
+#ifndef DATA_TEXT_EASY_CHAT_GROUPS_CONDITIONS_WORDS
+#define DATA_TEXT_EASY_CHAT_GROUPS_CONDITIONS_WORDS
+#if ENGLISH
+u8 gEasyChatGroupWords_Conditions[] = _(
+ "HOT$"
+ "EXISTS$"
+ "EXCESS$"
+ "APPROVED$"
+ "HAS$"
+ "GOOD$"
+ "LESS$"
+ "MOMENTUM$"
+ "GOING$"
+ "WEIRD$"
+ "BUSY$"
+ "TOGETHER$"
+ "FULL$"
+ "ABSENT$"
+ "BEING$"
+ "NEED$"
+ "TASTY$"
+ "SKILLED$"
+ "NOISY$"
+ "BIG$"
+ "LATE$"
+ "CLOSE$"
+ "DOCILE$"
+ "AMUSING$"
+ "ENTERTAINING$"
+ "PERFECTION$"
+ "PRETTY$"
+ "HEALTHY$"
+ "EXCELLENT$"
+ "UPSIDE DOWN$"
+ "COLD$"
+ "REFRESHING$"
+ "UNAVOIDABLE$"
+ "MUCH$"
+ "OVERWHELMING$"
+ "FABULOUS$"
+ "ELSE$"
+ "EXPENSIVE$"
+ "CORRECT$"
+ "IMPOSSIBLE$"
+ "SMALL$"
+ "DIFFERENT$"
+ "TIRED$"
+ "SKILL$"
+ "TOP$"
+ "NON-STOP$"
+ "PREPOSTEROUS$"
+ "NONE$"
+ "NOTHING$"
+ "NATURAL$"
+ "BECOMES$"
+ "LUKEWARM$"
+ "FAST$"
+ "LOW$"
+ "AWFUL$"
+ "ALONE$"
+ "BORED$"
+ "SECRET$"
+ "MYSTERY$"
+ "LACKS$"
+ "BEST$"
+ "LOUSY$"
+ "MISTAKE$"
+ "KIND$"
+ "WELL$"
+ "WEAKENED$"
+ "SIMPLE$"
+ "SEEMS$"
+ "BADLY$"
+ );
+#elif GERMAN
+u8 gEasyChatGroupWords_Conditions[] = _(
+ "HEISS$"
+ "EXISTIERT$"
+ "ÜBERMÄSSIG$"
+ "GENEHMIGT$"
+ "HAT$"
+ "FEIN$"
+ "WENIGER$"
+ "SCHWUNG$"
+ "GEHEN$"
+ "VERRÜCKT$"
+ "BESCHÄFTIGT$"
+ "ZUSAMMEN$"
+ "VOLL$"
+ "ABWESEND$"
+ "SEINE$"
+ "BRAUCHE$"
+ "LECKER$"
+ "GESCHICKT$"
+ "LAUT$"
+ "GROSS$"
+ "SPÄT$"
+ "NAHE BEI$"
+ "SANFTMÜTIG$"
+ "AMÜSANT$"
+ "UNTERHALTSAM$"
+ "PERFEKTION$"
+ "HÜBSCH$"
+ "GESUND$"
+ "EXZELLENT$"
+ "UMGEDREHT$"
+ "KALT$"
+ "ERFRISCHEND$"
+ "UNVERMEIDBAR$"
+ "VIELE$"
+ "MITREISSEND$"
+ "FABELHAFT$"
+ "ANDERES$"
+ "TEUER$"
+ "RICHTIG$"
+ "UNMÖGLICH$"
+ "KLEIN$"
+ "VERSCHIEDENE$"
+ "MÜDE$"
+ "GESCHICK$"
+ "TOP$"
+ "NONSTOP$"
+ "ABSURD$"
+ "KEIN$"
+ "NICHTS$"
+ "NATÜRLICH$"
+ "WIRD$"
+ "LAUWARM$"
+ "SCHNELL$"
+ "NIEDRIG$"
+ "SCHLIMM$"
+ "ALLEINE$"
+ "GELANGWEILT$"
+ "GEHEIMNIS$"
+ "GEHEIM$"
+ "FEHLT$"
+ "BESTES$"
+ "LAUSIG$"
+ "FEHLER$"
+ "HÖFLICH$"
+ "SCHLECHT$"
+ "GESCHWÄCHT$"
+ "EINFACH$"
+ "SCHEINBAR$"
+ "MIES$"
+ );
+#endif // GAME_LANGUAGE
+#endif // DATA_TEXT_EASY_CHAT_GROUPS_CONDITIONS_WORDS
diff --git a/src/data/text/easy_chat/groups/endings/order.h b/src/data/text/easy_chat/groups/endings/order.h
new file mode 100644
index 000000000..9cfb465d5
--- /dev/null
+++ b/src/data/text/easy_chat/groups/endings/order.h
@@ -0,0 +1,150 @@
+#ifndef DATA_TEXT_EASY_CHAT_GROUPS_ENDINGS_ORDER
+#define DATA_TEXT_EASY_CHAT_GROUPS_ENDINGS_ORDER
+
+#if ENGLISH
+u16 gEasyChatGroupOrder_Endings[] = {
+ 32,
+ 39,
+ 63,
+ 42,
+ 33,
+ 68,
+ 15,
+ 46,
+ 54,
+ 6,
+ 64,
+ 53,
+ 49,
+ 22,
+ 21,
+ 8,
+ 59,
+ 60,
+ 24,
+ 25,
+ 61,
+ 23,
+ 50,
+ 43,
+ 7,
+ 30,
+ 31,
+ 55,
+ 11,
+ 5,
+ 19,
+ 12,
+ 41,
+ 13,
+ 58,
+ 9,
+ 38,
+ 34,
+ 52,
+ 45,
+ 36,
+ 44,
+ 67,
+ 2,
+ 14,
+ 56,
+ 40,
+ 51,
+ 37,
+ 66,
+ 35,
+ 18,
+ 3,
+ 47,
+ 57,
+ 16,
+ 28,
+ 17,
+ 29,
+ 27,
+ 65,
+ 26,
+ 0,
+ 1,
+ 48,
+ 62,
+ 20,
+ 4,
+ 10,
+};
+#elif GERMAN
+u16 gEasyChatGroupOrder_Endings[] = {
+ 58,
+ 42,
+ 66,
+ 44,
+ 14,
+ 57,
+ 56,
+ 45,
+ 54,
+ 49,
+ 15,
+ 35,
+ 32,
+ 33,
+ 52,
+ 67,
+ 41,
+ 5,
+ 43,
+ 53,
+ 46,
+ 59,
+ 7,
+ 30,
+ 31,
+ 55,
+ 68,
+ 11,
+ 19,
+ 50,
+ 21,
+ 22,
+ 8,
+ 13,
+ 24,
+ 61,
+ 48,
+ 63,
+ 23,
+ 60,
+ 34,
+ 12,
+ 36,
+ 2,
+ 62,
+ 6,
+ 51,
+ 18,
+ 37,
+ 29,
+ 25,
+ 40,
+ 39,
+ 9,
+ 38,
+ 64,
+ 65,
+ 16,
+ 28,
+ 27,
+ 26,
+ 20,
+ 0,
+ 1,
+ 4,
+ 10,
+ 17,
+ 3,
+ 47,
+};
+#endif // GAME_LANGUAGE
+
+#endif // DATA_TEXT_EASY_CHAT_GROUPS_ENDINGS_ORDER
diff --git a/src/data/text/easy_chat/groups/endings/words.h b/src/data/text/easy_chat/groups/endings/words.h
new file mode 100644
index 000000000..60a40c5ba
--- /dev/null
+++ b/src/data/text/easy_chat/groups/endings/words.h
@@ -0,0 +1,148 @@
+#ifndef DATA_TEXT_EASY_CHAT_GROUPS_ENDINGS_WORDS
+#define DATA_TEXT_EASY_CHAT_GROUPS_ENDINGS_WORDS
+#if ENGLISH
+u8 gEasyChatGroupWords_Endings[] = _(
+ "WILL$"
+ "WILL BE HERE$"
+ "OR$"
+ "TIMES$"
+ "WONDER$"
+ "IS IT?$"
+ "BE$"
+ "GIMME$"
+ "COULD$"
+ "LIKELY TO$"
+ "WOULD$"
+ "IS$"
+ "ISN’T IT?$"
+ "LET’S$"
+ "OTHER$"
+ "ARE$"
+ "WAS$"
+ "WERE$"
+ "THOSE$"
+ "ISN’T$"
+ "WON’T$"
+ "CAN’T$"
+ "CAN$"
+ "DON’T$"
+ "DO$"
+ "DOES$"
+ "WHOM$"
+ "WHICH$"
+ "WASN’T$"
+ "WEREN’T$"
+ "HAVE$"
+ "HAVEN’T$"
+ "A$"
+ "AN$"
+ "NOT$"
+ "THERE$"
+ "OK?$"
+ "SO$"
+ "MAYBE$"
+ "ABOUT$"
+ "OVER$"
+ "IT$"
+ "ALL$"
+ "FOR$"
+ "ON$"
+ "OFF$"
+ "AS$"
+ "TO$"
+ "WITH$"
+ "BETTER$"
+ "EVER$"
+ "SINCE$"
+ "OF$"
+ "BELONGS TO$"
+ "AT$"
+ "IN$"
+ "OUT$"
+ "TOO$"
+ "LIKE$"
+ "DID$"
+ "DIDN’T$"
+ "DOESN’T$"
+ "WITHOUT$"
+ "AFTER$"
+ "BEFORE$"
+ "WHILE$"
+ "THAN$"
+ "ONCE$"
+ "ANYWHERE$"
+ );
+#elif GERMAN
+u8 gEasyChatGroupWords_Endings[] = _(
+ "WERDEN$"
+ "WIRD DA SEIN$"
+ "ODER$"
+ "ZEITEN$"
+ "WUNDER$"
+ "ES IST$"
+ "SEI$"
+ "GIB MIR$"
+ "KÖNNTE$"
+ "VERMUTLICH$"
+ "WÜRDE$"
+ "IST$"
+ "NICHT WAHR?$"
+ "LASS UNS$"
+ "ANDERE$"
+ "BIST$"
+ "WAR$"
+ "WURDEN$"
+ "SIND$"
+ "IST KEIN$"
+ "WERDE NICHT$"
+ "KANNST$"
+ "KÖNNEN$"
+ "NICHT$"
+ "MACHE$"
+ "TUT$"
+ "WEM$"
+ "WELCHE$"
+ "WAR NICHT$"
+ "SOLLTEN$"
+ "HABE$"
+ "HABEN NICHT$"
+ "EIN$"
+ "EINE$"
+ "NICHT NUR$"
+ "DA$"
+ "O.K.?$"
+ "SO$"
+ "VIELLEICHT$"
+ "UMHER$"
+ "ÜBER$"
+ "ES$"
+ "ALLE$"
+ "FÜR$"
+ "AN$"
+ "AUS$"
+ "GENAUSO$"
+ "ZU$"
+ "MIT$"
+ "BESSER$"
+ "JEMALS$"
+ "SEIT$"
+ "EINEN$"
+ "GEHÖRT ZU$"
+ "BEI$"
+ "IN$"
+ "AUF$"
+ "AUCH$"
+ "ÄHNLICH$"
+ "GETAN$"
+ "NICHT GETAN$"
+ "MACHT$"
+ "OHNE$"
+ "NACH$"
+ "VORHER$"
+ "WÄHREND$"
+ "ALS$"
+ "EINMAL$"
+ "IRGENDWO$"
+ );
+#endif // GAME_LANGUAGE
+#endif // DATA_TEXT_EASY_CHAT_GROUPS_ENDINGS_WORDS
diff --git a/src/data/text/easy_chat/groups/events/order.h b/src/data/text/easy_chat/groups/events/order.h
new file mode 100644
index 000000000..1eba253cc
--- /dev/null
+++ b/src/data/text/easy_chat/groups/events/order.h
@@ -0,0 +1,56 @@
+#ifndef DATA_TEXT_EASY_CHAT_GROUPS_EVENTS_ORDER
+#define DATA_TEXT_EASY_CHAT_GROUPS_EVENTS_ORDER
+
+#if ENGLISH
+u16 gEasyChatGroupOrder_Events[] = {
+ 0,
+ 14,
+ 12,
+ 3,
+ 17,
+ 4,
+ 1,
+ 10,
+ 9,
+ 15,
+ 11,
+ 6,
+ 13,
+ 19,
+ 5,
+ 18,
+ 20,
+ 21,
+ 16,
+ 8,
+ 2,
+ 7,
+};
+#elif GERMAN
+u16 gEasyChatGroupOrder_Events[] = {
+ 0,
+ 2,
+ 21,
+ 3,
+ 8,
+ 12,
+ 10,
+ 1,
+ 16,
+ 11,
+ 6,
+ 14,
+ 20,
+ 13,
+ 5,
+ 19,
+ 17,
+ 18,
+ 9,
+ 7,
+ 15,
+ 4,
+};
+#endif // GAME_LANGUAGE
+
+#endif // DATA_TEXT_EASY_CHAT_GROUPS_EVENTS_ORDER
diff --git a/src/data/text/easy_chat/groups/events/words.h b/src/data/text/easy_chat/groups/events/words.h
new file mode 100644
index 000000000..4cba976e9
--- /dev/null
+++ b/src/data/text/easy_chat/groups/events/words.h
@@ -0,0 +1,54 @@
+#ifndef DATA_TEXT_EASY_CHAT_GROUPS_EVENTS_WORDS
+#define DATA_TEXT_EASY_CHAT_GROUPS_EVENTS_WORDS
+#if ENGLISH
+u8 gEasyChatGroupWords_Events[] = _(
+ "APPEAL$"
+ "EVENTS$"
+ "STAY-AT-HOME$"
+ "BERRY$"
+ "CONTEST$"
+ "MC$"
+ "JUDGE$"
+ "SUPER$"
+ "STAGE$"
+ "HALL OF FAME$"
+ "EVOLUTION$"
+ "HYPER$"
+ "BATTLE TOWER$"
+ "LEADERS$"
+ "BATTLE ROOM$"
+ "HIDDEN$"
+ "SECRET BASE$"
+ "BLEND$"
+ "{POKEBLOCK}$"
+ "MASTER$"
+ "RANK$"
+ "RIBBON$"
+ );
+#elif GERMAN
+u8 gEasyChatGroupWords_Events[] = _(
+ "AUSDRUCK$"
+ "EVENTS$"
+ "BABYSITTEN$"
+ "BEERE$"
+ "WETTBEWERB$"
+ "MC$"
+ "JUROR$"
+ "SUPER$"
+ "BÜHNE$"
+ "RUHMESHALLE$"
+ "ENTWICKLUNG$"
+ "HYPER$"
+ "DUELLTURM$"
+ "LEITER$"
+ "KAMPFRAUM$"
+ "VERSTECKTE$"
+ "GEHEIMBASIS$"
+ "MIXEN$"
+ "{POKEBLOCK}$"
+ "MEISTER$"
+ "KLASSE$"
+ "BAND$"
+ );
+#endif // GAME_LANGUAGE
+#endif // DATA_TEXT_EASY_CHAT_GROUPS_EVENTS_WORDS
diff --git a/src/data/text/easy_chat/groups/feelings/order.h b/src/data/text/easy_chat/groups/feelings/order.h
new file mode 100644
index 000000000..bcf6290a7
--- /dev/null
+++ b/src/data/text/easy_chat/groups/feelings/order.h
@@ -0,0 +1,150 @@
+#ifndef DATA_TEXT_EASY_CHAT_GROUPS_FEELINGS_ORDER
+#define DATA_TEXT_EASY_CHAT_GROUPS_FEELINGS_ORDER
+
+#if ENGLISH
+u16 gEasyChatGroupOrder_Feelings[] = {
+ 40,
+ 39,
+ 24,
+ 23,
+ 46,
+ 63,
+ 36,
+ 37,
+ 38,
+ 61,
+ 31,
+ 62,
+ 27,
+ 12,
+ 13,
+ 41,
+ 22,
+ 35,
+ 60,
+ 32,
+ 51,
+ 44,
+ 42,
+ 43,
+ 7,
+ 53,
+ 9,
+ 29,
+ 4,
+ 11,
+ 3,
+ 10,
+ 64,
+ 6,
+ 5,
+ 47,
+ 19,
+ 17,
+ 2,
+ 8,
+ 33,
+ 28,
+ 45,
+ 34,
+ 26,
+ 0,
+ 21,
+ 59,
+ 30,
+ 50,
+ 1,
+ 66,
+ 58,
+ 65,
+ 14,
+ 56,
+ 25,
+ 57,
+ 49,
+ 52,
+ 48,
+ 18,
+ 16,
+ 15,
+ 67,
+ 68,
+ 55,
+ 54,
+ 20,
+};
+#elif GERMAN
+u16 gEasyChatGroupOrder_Feelings[] = {
+ 35,
+ 7,
+ 29,
+ 62,
+ 41,
+ 2,
+ 26,
+ 32,
+ 13,
+ 12,
+ 44,
+ 60,
+ 66,
+ 28,
+ 18,
+ 27,
+ 53,
+ 61,
+ 3,
+ 42,
+ 43,
+ 6,
+ 5,
+ 64,
+ 39,
+ 17,
+ 10,
+ 11,
+ 19,
+ 57,
+ 55,
+ 36,
+ 9,
+ 49,
+ 54,
+ 59,
+ 50,
+ 22,
+ 30,
+ 65,
+ 33,
+ 46,
+ 63,
+ 48,
+ 47,
+ 4,
+ 58,
+ 37,
+ 38,
+ 1,
+ 14,
+ 51,
+ 52,
+ 25,
+ 15,
+ 45,
+ 31,
+ 40,
+ 21,
+ 67,
+ 68,
+ 16,
+ 34,
+ 0,
+ 8,
+ 20,
+ 24,
+ 23,
+ 56,
+};
+#endif // GAME_LANGUAGE
+
+#endif // DATA_TEXT_EASY_CHAT_GROUPS_FEELINGS_ORDER
diff --git a/src/data/text/easy_chat/groups/feelings/words.h b/src/data/text/easy_chat/groups/feelings/words.h
new file mode 100644
index 000000000..e051141a7
--- /dev/null
+++ b/src/data/text/easy_chat/groups/feelings/words.h
@@ -0,0 +1,148 @@
+#ifndef DATA_TEXT_EASY_CHAT_GROUPS_FEELINGS_WORDS
+#define DATA_TEXT_EASY_CHAT_GROUPS_FEELINGS_WORDS
+#if ENGLISH
+u8 gEasyChatGroupWords_Feelings[] = _(
+ "MEET$"
+ "PLAY$"
+ "HURRIED$"
+ "GOES$"
+ "GIDDY$"
+ "HAPPY$"
+ "HAPPINESS$"
+ "EXCITE$"
+ "IMPORTANT$"
+ "FUNNY$"
+ "GOT$"
+ "GO HOME$"
+ "DISAPPOINTED$"
+ "DISAPPOINTS$"
+ "SAD$"
+ "TRY$"
+ "TRIES$"
+ "HEARS$"
+ "THINK$"
+ "HEAR$"
+ "WANTS$"
+ "MISHEARD$"
+ "DISLIKE$"
+ "ANGRY$"
+ "ANGER$"
+ "SCARY$"
+ "LONESOME$"
+ "DISAPPOINT$"
+ "JOY$"
+ "GETS$"
+ "NEVER$"
+ "DARN$"
+ "DOWNCAST$"
+ "INCREDIBLE$"
+ "LIKES$"
+ "DISLIKES$"
+ "BORING$"
+ "CARE$"
+ "CARES$"
+ "ALL RIGHT$"
+ "ADORE$"
+ "DISASTER$"
+ "ENJOY$"
+ "ENJOYS$"
+ "EAT$"
+ "LACKING$"
+ "BAD$"
+ "HARD$"
+ "TERRIBLE$"
+ "SHOULD$"
+ "NICE$"
+ "DRINK$"
+ "SURPRISE$"
+ "FEAR$"
+ "WANT$"
+ "WAIT$"
+ "SATISFIED$"
+ "SEE$"
+ "RARE$"
+ "NEGATIVE$"
+ "DONE$"
+ "DANGER$"
+ "DEFEATED$"
+ "BEAT$"
+ "GREAT$"
+ "ROMANTIC$"
+ "QUESTION$"
+ "UNDERSTAND$"
+ "UNDERSTANDS$"
+ );
+#elif GERMAN
+u8 gEasyChatGroupWords_Feelings[] = _(
+ "WEINEN$"
+ "SPIELEN$"
+ "EILIG$"
+ "GEHT$"
+ "SCHWINDELIG$"
+ "GLÜCKLICH$"
+ "GLÜCK$"
+ "BEGEISTERN$"
+ "WICHTIG$"
+ "LUSTIG$"
+ "HABEN$"
+ "HEIMGEHEN$"
+ "ENTTÄUSCHT$"
+ "ENTTÄUSCHEN$"
+ "TRAURIG$"
+ "UNZUFRIEDEN$"
+ "VERSUCHT$"
+ "GUTE LAUNE$"
+ "FRÖHLICH$"
+ "HÖREN$"
+ "WILL$"
+ "VERHÖRT$"
+ "NICHT MÖGEN$"
+ "WÜTEND$"
+ "WUT$"
+ "UNHEIMLICH$"
+ "EINSAM$"
+ "FRUSTRIERT$"
+ "FREUDE$"
+ "BEKOMMT$"
+ "NIE$"
+ "VERDAMMT$"
+ "ENTMUTIGT$"
+ "SAGENHAFT$"
+ "VORLIEBEN$"
+ "ABNEIGUNG$"
+ "LANGWEILIG$"
+ "SORGEN$"
+ "SORGT$"
+ "GUT$"
+ "VERGÖTTERN$"
+ "DESASTER$"
+ "GENIESSEN$"
+ "GENIESST$"
+ "ESSEN$"
+ "UNZUREICHEND$"
+ "SCHLECHTE$"
+ "SCHWER$"
+ "SCHRECKLICH$"
+ "MIESE LAUNE$"
+ "NETT$"
+ "TRINKEN$"
+ "ÜBERRASCHUNG$"
+ "FURCHT$"
+ "MÖCHTE$"
+ "LANGEWEILE$"
+ "ZUFRIEDEN$"
+ "LACHEN$"
+ "SELTEN$"
+ "NEGATIV$"
+ "FERTIG$"
+ "GEFAHR$"
+ "BESIEGT$"
+ "SCHLUG$"
+ "GROSSARTIG$"
+ "ROMANTISCH$"
+ "FRAGE$"
+ "VERSTEHEN$"
+ "VERSTEHT$"
+ );
+#endif // GAME_LANGUAGE
+#endif // DATA_TEXT_EASY_CHAT_GROUPS_FEELINGS_WORDS
diff --git a/src/data/text/easy_chat/groups/greetings/order.h b/src/data/text/easy_chat/groups/greetings/order.h
new file mode 100644
index 000000000..5939fd7e5
--- /dev/null
+++ b/src/data/text/easy_chat/groups/greetings/order.h
@@ -0,0 +1,96 @@
+#ifndef DATA_TEXT_EASY_CHAT_GROUPS_GREETINGS_ORDER
+#define DATA_TEXT_EASY_CHAT_GROUPS_GREETINGS_ORDER
+
+#if ENGLISH
+u16 gEasyChatGroupOrder_Greetings[] = {
+ 12,
+ 25,
+ 32,
+ 40,
+ 9,
+ 41,
+ 20,
+ 22,
+ 13,
+ 10,
+ 24,
+ 16,
+ 15,
+ 2,
+ 3,
+ 4,
+ 34,
+ 14,
+ 26,
+ 30,
+ 37,
+ 8,
+ 28,
+ 18,
+ 36,
+ 33,
+ 29,
+ 7,
+ 19,
+ 21,
+ 35,
+ 11,
+ 17,
+ 0,
+ 6,
+ 23,
+ 27,
+ 38,
+ 5,
+ 31,
+ 1,
+ 39,
+};
+#elif GERMAN
+u16 gEasyChatGroupOrder_Greetings[] = {
+ 40,
+ 7,
+ 33,
+ 21,
+ 0,
+ 17,
+ 22,
+ 35,
+ 10,
+ 9,
+ 15,
+ 34,
+ 14,
+ 26,
+ 3,
+ 4,
+ 2,
+ 36,
+ 37,
+ 18,
+ 1,
+ 39,
+ 38,
+ 29,
+ 23,
+ 19,
+ 25,
+ 13,
+ 11,
+ 30,
+ 20,
+ 32,
+ 16,
+ 12,
+ 27,
+ 24,
+ 8,
+ 28,
+ 6,
+ 5,
+ 31,
+ 41,
+};
+#endif // GAME_LANGUAGE
+
+#endif // DATA_TEXT_EASY_CHAT_GROUPS_GREETINGS_ORDER
diff --git a/src/data/text/easy_chat/groups/greetings/words.h b/src/data/text/easy_chat/groups/greetings/words.h
new file mode 100644
index 000000000..89bb986b5
--- /dev/null
+++ b/src/data/text/easy_chat/groups/greetings/words.h
@@ -0,0 +1,94 @@
+#ifndef DATA_TEXT_EASY_CHAT_GROUPS_GREETINGS_WORDS
+#define DATA_TEXT_EASY_CHAT_GROUPS_GREETINGS_WORDS
+#if ENGLISH
+u8 gEasyChatGroupWords_Greetings[] = _(
+ "THANKS$"
+ "YES$"
+ "HERE GOES$"
+ "HERE I COME$"
+ "HERE IT IS$"
+ "YEAH$"
+ "WELCOME$"
+ "OI$"
+ "HOW DO$"
+ "CONGRATS$"
+ "GIVE ME$"
+ "SORRY$"
+ "APOLOGIZE$"
+ "FORGIVE$"
+ "HEY, THERE$"
+ "HELLO$"
+ "GOOD-BYE$"
+ "THANK YOU$"
+ "I’VE ARRIVED$"
+ "PARDON$"
+ "EXCUSE$"
+ "SEE YA$"
+ "EXCUSE ME$"
+ "WELL, THEN$"
+ "GO AHEAD$"
+ "APPRECIATE$"
+ "HEY?$"
+ "WHAT’S UP?$"
+ "HUH?$"
+ "NO$"
+ "HI$"
+ "YEAH, YEAH$"
+ "BYE-BYE$"
+ "MEET YOU$"
+ "HEY$"
+ "SMELL$"
+ "LISTENING$"
+ "HOO-HAH$"
+ "YAHOO$"
+ "YO$"
+ "COME OVER$"
+ "COUNT ON$"
+ );
+#elif GERMAN
+u8 gEasyChatGroupWords_Greetings[] = _(
+ "DANK$"
+ "JA$"
+ "HIER KOMMT$"
+ "HIER BIN ICH$"
+ "HIER IST ES$"
+ "YEAH$"
+ "WILLKOMMEN$"
+ "AU$"
+ "WIE$"
+ "GLÜCKWUNSCH$"
+ "GIB$"
+ "SORRY$"
+ "VERZEIHUNG$"
+ "SCHON GUT$"
+ "HEY DA$"
+ "HALLO$"
+ "TSCHÜSS$"
+ "DANKE SCHÖN$"
+ "ICH BIN DA$"
+ "PARDON$"
+ "TAGCHEN$"
+ "BIS DANN$"
+ "ENTSCHULDIGE$"
+ "NUN, DANN$"
+ "WEITER SO$"
+ "SCHÄTZEN$"
+ "HEY?$"
+ "WAS IST LOS?$"
+ "WIE?$"
+ "NEIN$"
+ "TAG AUCH$"
+ "YEAH, YEAH$"
+ "TSCHAU$"
+ "BIS BALD$"
+ "HEY$"
+ "GERUCH$"
+ "HÖR ZU$"
+ "HUH HAH$"
+ "JUCHUU$"
+ "JEPP$"
+ "ACH, KOMM$"
+ "ZÄHLEN AUF$"
+ );
+#endif // GAME_LANGUAGE
+#endif // DATA_TEXT_EASY_CHAT_GROUPS_GREETINGS_WORDS
diff --git a/src/data/text/easy_chat/groups/hobbies/order.h b/src/data/text/easy_chat/groups/hobbies/order.h
new file mode 100644
index 000000000..2188751c1
--- /dev/null
+++ b/src/data/text/easy_chat/groups/hobbies/order.h
@@ -0,0 +1,120 @@
+#ifndef DATA_TEXT_EASY_CHAT_GROUPS_HOBBIES_ORDER
+#define DATA_TEXT_EASY_CHAT_GROUPS_HOBBIES_ORDER
+
+#if ENGLISH
+u16 gEasyChatGroupOrder_Hobbies[] = {
+ 43,
+ 1,
+ 45,
+ 21,
+ 44,
+ 46,
+ 11,
+ 9,
+ 30,
+ 5,
+ 6,
+ 17,
+ 48,
+ 18,
+ 29,
+ 33,
+ 34,
+ 26,
+ 42,
+ 47,
+ 32,
+ 38,
+ 15,
+ 14,
+ 39,
+ 41,
+ 22,
+ 49,
+ 0,
+ 35,
+ 53,
+ 19,
+ 31,
+ 3,
+ 8,
+ 40,
+ 37,
+ 50,
+ 36,
+ 16,
+ 10,
+ 24,
+ 2,
+ 25,
+ 13,
+ 23,
+ 4,
+ 7,
+ 28,
+ 27,
+ 51,
+ 52,
+ 12,
+ 20,
+};
+#elif GERMAN
+u16 gEasyChatGroupOrder_Hobbies[] = {
+ 43,
+ 32,
+ 1,
+ 53,
+ 45,
+ 12,
+ 38,
+ 44,
+ 46,
+ 48,
+ 34,
+ 10,
+ 50,
+ 21,
+ 49,
+ 47,
+ 3,
+ 11,
+ 14,
+ 39,
+ 41,
+ 31,
+ 22,
+ 0,
+ 9,
+ 6,
+ 18,
+ 27,
+ 35,
+ 19,
+ 42,
+ 8,
+ 26,
+ 4,
+ 40,
+ 37,
+ 5,
+ 36,
+ 28,
+ 16,
+ 17,
+ 51,
+ 24,
+ 2,
+ 25,
+ 20,
+ 15,
+ 7,
+ 23,
+ 29,
+ 52,
+ 33,
+ 30,
+ 13,
+};
+#endif // GAME_LANGUAGE
+
+#endif // DATA_TEXT_EASY_CHAT_GROUPS_HOBBIES_ORDER
diff --git a/src/data/text/easy_chat/groups/hobbies/words.h b/src/data/text/easy_chat/groups/hobbies/words.h
new file mode 100644
index 000000000..729d5bc3b
--- /dev/null
+++ b/src/data/text/easy_chat/groups/hobbies/words.h
@@ -0,0 +1,118 @@
+#ifndef DATA_TEXT_EASY_CHAT_GROUPS_HOBBIES_WORDS
+#define DATA_TEXT_EASY_CHAT_GROUPS_HOBBIES_WORDS
+#if ENGLISH
+u8 gEasyChatGroupWords_Hobbies[] = _(
+ "IDOL$"
+ "ANIME$"
+ "SONG$"
+ "MOVIE$"
+ "SWEETS$"
+ "CHAT$"
+ "CHILD’S PLAY$"
+ "TOYS$"
+ "MUSIC$"
+ "CARDS$"
+ "SHOPPING$"
+ "CAMERA$"
+ "VIEWING$"
+ "SPECTATOR$"
+ "GOURMET$"
+ "GAME$"
+ "RPG$"
+ "COLLECTION$"
+ "COMPLETE$"
+ "MAGAZINE$"
+ "WALK$"
+ "BIKE$"
+ "HOBBY$"
+ "SPORTS$"
+ "SOFTWARE$"
+ "SONGS$"
+ "DIET$"
+ "TREASURE$"
+ "TRAVEL$"
+ "DANCE$"
+ "CHANNEL$"
+ "MAKING$"
+ "FISHING$"
+ "DATE$"
+ "DESIGN$"
+ "LOCOMOTIVE$"
+ "PLUSH DOLL$"
+ "PC$"
+ "FLOWERS$"
+ "HERO$"
+ "NAP$"
+ "HEROINE$"
+ "FASHION$"
+ "ADVENTURE$"
+ "BOARD$"
+ "BALL$"
+ "BOOK$"
+ "FESTIVAL$"
+ "COMICS$"
+ "HOLIDAY$"
+ "PLANS$"
+ "TRENDY$"
+ "VACATION$"
+ "LOOK$"
+ );
+#elif GERMAN
+u8 gEasyChatGroupWords_Hobbies[] = _(
+ "IDOL$"
+ "ANIME$"
+ "SONG$"
+ "FILM$"
+ "NASCHEN$"
+ "PLAUDERN$"
+ "KINDERSPIEL$"
+ "SPIELZEUG$"
+ "MUSIK$"
+ "KARTENSPIELE$"
+ "EINKAUFEN$"
+ "FOTOS$"
+ "BESICHTIGUNG$"
+ "ZUSCHAUER$"
+ "GOURMET$"
+ "SPIEL$"
+ "RPG$"
+ "SAMMLUNG$"
+ "KOMPLETT$"
+ "MAGAZIN$"
+ "SPAZIEREN$"
+ "FAHRRAD$"
+ "HOBBY$"
+ "SPORT$"
+ "SOFTWARE$"
+ "SONGS$"
+ "NAHRUNG$"
+ "KOSTBARKEIT$"
+ "REISEN$"
+ "TANZEN$"
+ "WASSERSPORT$"
+ "HERSTELLUNG$"
+ "ANGELN$"
+ "VERABREDUNG$"
+ "DESIGN$"
+ "LOKOMOTIVEN$"
+ "PLÜSCHPUPPEN$"
+ "PC$"
+ "BLUMEN$"
+ "HELD$"
+ "NICKERCHEN$"
+ "HELDIN$"
+ "MODE$"
+ "ABENTEUER$"
+ "BRETTSPIELE$"
+ "BALL$"
+ "BÜCHER$"
+ "FESTIVALS$"
+ "COMICS$"
+ "FERIEN$"
+ "ETWAS PLANEN$"
+ "SCHICKIMICKI$"
+ "URLAUB$"
+ "AUSSEHEN$"
+ );
+#endif // GAME_LANGUAGE
+#endif // DATA_TEXT_EASY_CHAT_GROUPS_HOBBIES_WORDS
diff --git a/src/data/text/easy_chat/groups/lifestyle/order.h b/src/data/text/easy_chat/groups/lifestyle/order.h
new file mode 100644
index 000000000..60de60971
--- /dev/null
+++ b/src/data/text/easy_chat/groups/lifestyle/order.h
@@ -0,0 +1,102 @@
+#ifndef DATA_TEXT_EASY_CHAT_GROUPS_LIFESTYLE_ORDER
+#define DATA_TEXT_EASY_CHAT_GROUPS_LIFESTYLE_ORDER
+
+#if ENGLISH
+u16 gEasyChatGroupOrder_Lifestyle[] = {
+ 3,
+ 4,
+ 0,
+ 16,
+ 7,
+ 5,
+ 26,
+ 24,
+ 39,
+ 23,
+ 9,
+ 8,
+ 1,
+ 18,
+ 29,
+ 40,
+ 17,
+ 22,
+ 41,
+ 19,
+ 35,
+ 36,
+ 37,
+ 2,
+ 30,
+ 31,
+ 33,
+ 28,
+ 32,
+ 38,
+ 42,
+ 43,
+ 6,
+ 12,
+ 11,
+ 34,
+ 14,
+ 20,
+ 27,
+ 25,
+ 21,
+ 15,
+ 10,
+ 13,
+ 44,
+};
+#elif GERMAN
+u16 gEasyChatGroupOrder_Lifestyle[] = {
+ 13,
+ 4,
+ 22,
+ 24,
+ 27,
+ 7,
+ 2,
+ 23,
+ 5,
+ 8,
+ 9,
+ 1,
+ 18,
+ 29,
+ 26,
+ 40,
+ 11,
+ 41,
+ 19,
+ 20,
+ 16,
+ 34,
+ 35,
+ 43,
+ 37,
+ 30,
+ 31,
+ 33,
+ 0,
+ 32,
+ 36,
+ 42,
+ 6,
+ 12,
+ 14,
+ 3,
+ 28,
+ 25,
+ 15,
+ 39,
+ 21,
+ 17,
+ 38,
+ 44,
+ 10,
+};
+#endif // GAME_LANGUAGE
+
+#endif // DATA_TEXT_EASY_CHAT_GROUPS_LIFESTYLE_ORDER
diff --git a/src/data/text/easy_chat/groups/lifestyle/words.h b/src/data/text/easy_chat/groups/lifestyle/words.h
new file mode 100644
index 000000000..125000c33
--- /dev/null
+++ b/src/data/text/easy_chat/groups/lifestyle/words.h
@@ -0,0 +1,100 @@
+#ifndef DATA_TEXT_EASY_CHAT_GROUPS_LIFESTYLE_WORDS
+#define DATA_TEXT_EASY_CHAT_GROUPS_LIFESTYLE_WORDS
+#if ENGLISH
+u8 gEasyChatGroupWords_Lifestyle[] = _(
+ "CHORES$"
+ "HOME$"
+ "MONEY$"
+ "ALLOWANCE$"
+ "BATH$"
+ "CONVERSATION$"
+ "SCHOOL$"
+ "COMMEMORATE$"
+ "HABIT$"
+ "GROUP$"
+ "WORD$"
+ "STORE$"
+ "SERVICE$"
+ "WORK$"
+ "SYSTEM$"
+ "TRAIN$"
+ "CLASS$"
+ "LESSONS$"
+ "INFORMATION$"
+ "LIVING$"
+ "TEACHER$"
+ "TOURNAMENT$"
+ "LETTER$"
+ "EVENT$"
+ "DIGITAL$"
+ "TEST$"
+ "DEPT. STORE$"
+ "TELEVISION$"
+ "PHONE$"
+ "ITEM$"
+ "NAME$"
+ "NEWS$"
+ "POPULAR$"
+ "PARTY$"
+ "STUDY$"
+ "MACHINE$"
+ "MAIL$"
+ "MESSAGE$"
+ "PROMISE$"
+ "DREAM$"
+ "KINDERGARTEN$"
+ "LIFE$"
+ "RADIO$"
+ "RENTAL$"
+ "WORLD$"
+ );
+#elif GERMAN
+u8 gEasyChatGroupWords_Lifestyle[] = _(
+ "PFLICHTEN$"
+ "HEIM$"
+ "GELD$"
+ "TASCHENGELD$"
+ "BAD$"
+ "GESPRÄCH$"
+ "SCHULE$"
+ "GEDENKEN$"
+ "GEWOHNHEIT$"
+ "GRUPPE$"
+ "WORT$"
+ "LAGER$"
+ "SERVICE$"
+ "ARBEIT$"
+ "SYSTEM$"
+ "TRAINIEREN$"
+ "LEKTION$"
+ "UNTERRICHT$"
+ "INFORMATION$"
+ "LEBENDIG$"
+ "LEHRER$"
+ "TURNIER$"
+ "BRIEF$"
+ "GESCHEHEN$"
+ "DIGITALES$"
+ "TEST$"
+ "KAUFHAUS$"
+ "FERNSEHER$"
+ "TELEFON$"
+ "ITEM$"
+ "NAME$"
+ "NEUIGKEITEN$"
+ "POPULÄR$"
+ "PARTY$"
+ "LERNEN$"
+ "MASCHINE$"
+ "POST$"
+ "MITTEILUNG$"
+ "VERSPRECHEN$"
+ "TRAUM$"
+ "KINDERGARTEN$"
+ "LEBEN$"
+ "RADIO$"
+ "MIETE$"
+ "WELT$"
+ );
+#endif // GAME_LANGUAGE
+#endif // DATA_TEXT_EASY_CHAT_GROUPS_LIFESTYLE_WORDS
diff --git a/src/data/text/easy_chat/groups/misc/order.h b/src/data/text/easy_chat/groups/misc/order.h
new file mode 100644
index 000000000..6005263eb
--- /dev/null
+++ b/src/data/text/easy_chat/groups/misc/order.h
@@ -0,0 +1,96 @@
+#ifndef DATA_TEXT_EASY_CHAT_GROUPS_MISC_ORDER
+#define DATA_TEXT_EASY_CHAT_GROUPS_MISC_ORDER
+
+#if ENGLISH
+u16 gEasyChatGroupOrder_Misc[] = {
+ 7,
+ 24,
+ 30,
+ 8,
+ 6,
+ 13,
+ 28,
+ 38,
+ 35,
+ 19,
+ 16,
+ 29,
+ 26,
+ 10,
+ 9,
+ 0,
+ 11,
+ 40,
+ 1,
+ 31,
+ 39,
+ 12,
+ 3,
+ 41,
+ 36,
+ 20,
+ 25,
+ 23,
+ 17,
+ 18,
+ 5,
+ 4,
+ 15,
+ 14,
+ 21,
+ 22,
+ 2,
+ 27,
+ 34,
+ 33,
+ 32,
+ 37,
+};
+#elif GERMAN
+u16 gEasyChatGroupOrder_Misc[] = {
+ 2,
+ 16,
+ 12,
+ 20,
+ 14,
+ 23,
+ 24,
+ 25,
+ 15,
+ 17,
+ 18,
+ 5,
+ 30,
+ 39,
+ 22,
+ 33,
+ 10,
+ 3,
+ 19,
+ 9,
+ 0,
+ 11,
+ 40,
+ 31,
+ 13,
+ 27,
+ 7,
+ 41,
+ 4,
+ 21,
+ 36,
+ 35,
+ 1,
+ 6,
+ 38,
+ 26,
+ 28,
+ 37,
+ 34,
+ 29,
+ 32,
+ 8,
+};
+#endif // GAME_LANGUAGE
+
+#endif // DATA_TEXT_EASY_CHAT_GROUPS_MISC_ORDER
diff --git a/src/data/text/easy_chat/groups/misc/words.h b/src/data/text/easy_chat/groups/misc/words.h
new file mode 100644
index 000000000..05dda82ca
--- /dev/null
+++ b/src/data/text/easy_chat/groups/misc/words.h
@@ -0,0 +1,94 @@
+#ifndef DATA_TEXT_EASY_CHAT_GROUPS_MISC_WORDS
+#define DATA_TEXT_EASY_CHAT_GROUPS_MISC_WORDS
+#if ENGLISH
+u8 gEasyChatGroupWords_Misc[] = _(
+ "HIGHS$"
+ "LOWS$"
+ "UM$"
+ "REAR$"
+ "THINGS$"
+ "THING$"
+ "BELOW$"
+ "ABOVE$"
+ "BACK$"
+ "HIGH$"
+ "HERE$"
+ "INSIDE$"
+ "OUTSIDE$"
+ "BESIDE$"
+ "THIS IS IT!$"
+ "THIS$"
+ "EVERY$"
+ "THESE$"
+ "THESE WERE$"
+ "DOWN$"
+ "THAT$"
+ "THOSE ARE$"
+ "THOSE WERE$"
+ "THAT’S IT!$"
+ "AM$"
+ "THAT WAS$"
+ "FRONT$"
+ "UP$"
+ "CHOICE$"
+ "FAR$"
+ "AWAY$"
+ "NEAR$"
+ "WHERE$"
+ "WHEN$"
+ "WHAT$"
+ "DEEP$"
+ "SHALLOW$"
+ "WHY$"
+ "CONFUSED$"
+ "OPPOSITE$"
+ "LEFT$"
+ "RIGHT$"
+ );
+#elif GERMAN
+u8 gEasyChatGroupWords_Misc[] = _(
+ "HÖHEN$"
+ "TIEFEN$"
+ "ÄH$"
+ "HINTEN$"
+ "SACHEN$"
+ "DING$"
+ "UNTERHALB$"
+ "OBERHALB$"
+ "ZURÜCK$"
+ "HOCH$"
+ "HIER$"
+ "INNEN$"
+ "AUSSEN$"
+ "NEBEN$"
+ "DAS IST ES!$"
+ "DIES$"
+ "ALLES$"
+ "DIESE$"
+ "DIESE WAREN$"
+ "HINUNTER$"
+ "DAS$"
+ "SCHON$"
+ "GENUG$"
+ "DAS IST’S!$"
+ "DAS SIND$"
+ "DAS WAR$"
+ "VORNE$"
+ "OBEN$"
+ "WAHL$"
+ "WEIT$"
+ "FORT$"
+ "NAHE$"
+ "WO$"
+ "GLEICH$"
+ "WAS$"
+ "TIEF$"
+ "SEICHT$"
+ "WARUM$"
+ "VERWIRRT$"
+ "GEGENÜBER$"
+ "LINKS$"
+ "RECHTS$"
+ );
+#endif // GAME_LANGUAGE
+#endif // DATA_TEXT_EASY_CHAT_GROUPS_MISC_WORDS
diff --git a/src/data/text/easy_chat/groups/move_1/order.h b/src/data/text/easy_chat/groups/move_1/order.h
new file mode 100644
index 000000000..76fd60415
--- /dev/null
+++ b/src/data/text/easy_chat/groups/move_1/order.h
@@ -0,0 +1,318 @@
+#ifndef DATA_TEXT_EASY_CHAT_GROUPS_MOVE_1_ORDER
+#define DATA_TEXT_EASY_CHAT_GROUPS_MOVE_1_ORDER
+
+#if ENGLISH
+u16 gEasyChatGroupOrder_Move1[] = {
+ 71,
+ 177,
+ 97,
+ 314,
+ 246,
+ 312,
+ 310,
+ 62,
+ 117,
+ 20,
+ 44,
+ 280,
+ 145,
+ 268,
+ 204,
+ 128,
+ 109,
+ 132,
+ 322,
+ 68,
+ 152,
+ 238,
+ 242,
+ 15,
+ 91,
+ 50,
+ 104,
+ 38,
+ 3,
+ 89,
+ 227,
+ 283,
+ 203,
+ 326,
+ 245,
+ 263,
+ 313,
+ 90,
+ 175,
+ 172,
+ 53,
+ 260,
+ 19,
+ 116,
+ 264,
+ 266,
+ 202,
+ 320,
+ 74,
+ 288,
+ 16,
+ 258,
+ 106,
+ 114,
+ 29,
+ 215,
+ 95,
+ 301,
+ 196,
+ 231,
+ 2,
+ 134,
+ 141,
+ 122,
+ 142,
+ 67,
+ 212,
+ 262,
+ 319,
+ 309,
+ 170,
+ 119,
+ 54,
+ 234,
+ 267,
+ 171,
+ 190,
+ 316,
+ 200,
+ 315,
+ 220,
+ 181,
+ 60,
+ 244,
+ 94,
+ 149,
+ 228,
+ 99,
+ 240,
+ 229,
+ 13,
+ 105,
+ 216,
+ 179,
+ 157,
+ 249,
+ 88,
+ 317,
+ 205,
+ 221,
+ 219,
+ 328,
+ 28,
+ 201,
+ 184,
+ 103,
+ 120,
+ 247,
+ 325,
+ 159,
+ 329,
+ 324,
+ 318,
+ 47,
+ 166,
+ 285,
+ 143,
+ 327,
+ 163,
+ 265,
+ 123,
+ 108,
+ 173,
+ 76,
+ 49,
+ 209,
+ 169,
+ 180,
+ 147,
+ 70,
+ 81,
+ 78,
+ 66,
+ 162,
+ 207,
+ 230,
+ 129,
+ 235,
+ 39,
+ 37,
+ 87,
+ 85,
+ 9,
+ 321,
+ 259,
+ 253,
+ 233,
+ 323,
+ 311,
+ 250,
+ 261,
+ 110,
+ 281,
+};
+#elif GERMAN
+u16 gEasyChatGroupOrder_Move1[] = {
+ 71,
+ 97,
+ 324,
+ 207,
+ 246,
+ 312,
+ 253,
+ 62,
+ 203,
+ 50,
+ 44,
+ 145,
+ 141,
+ 219,
+ 204,
+ 87,
+ 85,
+ 9,
+ 104,
+ 175,
+ 114,
+ 3,
+ 280,
+ 231,
+ 329,
+ 196,
+ 116,
+ 89,
+ 310,
+ 81,
+ 263,
+ 317,
+ 120,
+ 325,
+ 172,
+ 53,
+ 19,
+ 259,
+ 323,
+ 301,
+ 37,
+ 209,
+ 67,
+ 281,
+ 117,
+ 179,
+ 105,
+ 90,
+ 47,
+ 202,
+ 320,
+ 184,
+ 180,
+ 258,
+ 106,
+ 327,
+ 143,
+ 315,
+ 212,
+ 95,
+ 261,
+ 2,
+ 20,
+ 13,
+ 242,
+ 109,
+ 68,
+ 29,
+ 322,
+ 152,
+ 103,
+ 238,
+ 268,
+ 221,
+ 220,
+ 230,
+ 177,
+ 262,
+ 319,
+ 311,
+ 234,
+ 166,
+ 288,
+ 171,
+ 267,
+ 283,
+ 190,
+ 110,
+ 147,
+ 264,
+ 244,
+ 94,
+ 134,
+ 60,
+ 149,
+ 181,
+ 99,
+ 108,
+ 240,
+ 265,
+ 38,
+ 216,
+ 39,
+ 328,
+ 201,
+ 28,
+ 159,
+ 91,
+ 122,
+ 163,
+ 260,
+ 128,
+ 173,
+ 316,
+ 318,
+ 123,
+ 76,
+ 326,
+ 321,
+ 119,
+ 169,
+ 266,
+ 247,
+ 78,
+ 70,
+ 157,
+ 88,
+ 309,
+ 129,
+ 162,
+ 235,
+ 142,
+ 313,
+ 229,
+ 245,
+ 66,
+ 233,
+ 49,
+ 132,
+ 228,
+ 215,
+ 74,
+ 205,
+ 54,
+ 285,
+ 250,
+ 170,
+ 314,
+ 16,
+ 200,
+ 15,
+ 249,
+ 227,
+};
+#endif // GAME_LANGUAGE
+
+#endif // DATA_TEXT_EASY_CHAT_GROUPS_MOVE_1_ORDER
diff --git a/src/data/text/easy_chat/groups/move_1/words.h b/src/data/text/easy_chat/groups/move_1/words.h
new file mode 100644
index 000000000..3cd122d4b
--- /dev/null
+++ b/src/data/text/easy_chat/groups/move_1/words.h
@@ -0,0 +1,162 @@
+#ifndef DATA_TEXT_EASY_CHAT_GROUPS_MOVE_1_WORDS
+#define DATA_TEXT_EASY_CHAT_GROUPS_MOVE_1_WORDS
+
+#include "constants/moves.h"
+
+u16 gEasyChatGroupWords_Move1[] = {
+ MOVE_THUNDERBOLT,
+ MOVE_IRON_TAIL,
+ MOVE_ICE_BALL,
+ MOVE_YAWN,
+ MOVE_LOVELY_KISS,
+ MOVE_NIGHTMARE,
+ MOVE_MORNING_SUN,
+ MOVE_VITAL_THROW,
+ MOVE_DIG,
+ MOVE_THRASH,
+ MOVE_SWEET_SCENT,
+ MOVE_CHARM,
+ MOVE_RAIN_DANCE,
+ MOVE_CONFUSE_RAY,
+ MOVE_HAIL,
+ MOVE_AROMATHERAPY,
+ MOVE_BUBBLE,
+ MOVE_ENCORE,
+ MOVE_CUT,
+ MOVE_RAGE,
+ MOVE_SUPER_FANG,
+ MOVE_PAIN_SPLIT,
+ MOVE_TORMENT,
+ MOVE_STRING_SHOT,
+ MOVE_SWAGGER,
+ MOVE_SNORE,
+ MOVE_HEAL_BELL,
+ MOVE_SCREECH,
+ MOVE_ROCK_THROW,
+ MOVE_ROCK_SMASH,
+ MOVE_ROCK_SLIDE,
+ MOVE_WEATHER_BALL,
+ MOVE_WHIRLPOOL,
+ MOVE_FAKE_TEARS,
+ MOVE_SING,
+ MOVE_SPITE,
+ MOVE_AIR_CUTTER,
+ MOVE_AEROBLAST,
+ MOVE_SMOKESCREEN,
+ MOVE_PURSUIT,
+ MOVE_DOUBLE_SLAP,
+ MOVE_MIRROR_MOVE,
+ MOVE_OVERHEAT,
+ MOVE_AURORA_BEAM,
+ MOVE_MEMENTO,
+ MOVE_OCTAZOOKA,
+ MOVE_FLATTER,
+ MOVE_ASTONISH,
+ MOVE_WILL_O_WISP,
+ MOVE_RETURN,
+ MOVE_GRUDGE,
+ MOVE_STRENGTH,
+ MOVE_COUNTER,
+ MOVE_FLAME_WHEEL,
+ MOVE_FLAMETHROWER,
+ MOVE_ODOR_SLEUTH,
+ MOVE_SHARPEN,
+ MOVE_DOUBLE_TEAM,
+ MOVE_GUST,
+ MOVE_HARDEN,
+ MOVE_DISABLE,
+ MOVE_RAZOR_WIND,
+ MOVE_BIDE,
+ MOVE_CRUNCH,
+ MOVE_BITE,
+ MOVE_THUNDER,
+ MOVE_THUNDER_PUNCH,
+ MOVE_ENDEAVOR,
+ MOVE_FACADE,
+ MOVE_KARATE_CHOP,
+ MOVE_CLAMP,
+ MOVE_WITHDRAW,
+ MOVE_CONSTRICT,
+ MOVE_BRICK_BREAK,
+ MOVE_ROCK_TOMB,
+ MOVE_FOCUS_ENERGY,
+ MOVE_FOCUS_PUNCH,
+ MOVE_GIGA_DRAIN,
+ MOVE_REVERSAL,
+ MOVE_SMELLING_SALT,
+ MOVE_SPORE,
+ MOVE_LEECH_LIFE,
+ MOVE_SLASH,
+ MOVE_SILVER_WIND,
+ MOVE_METAL_SOUND,
+ MOVE_GRASS_WHISTLE,
+ MOVE_TICKLE,
+ MOVE_SPIDER_WEB,
+ MOVE_CRABHAMMER,
+ MOVE_HAZE,
+ MOVE_MEAN_LOOK,
+ MOVE_CROSS_CHOP,
+ MOVE_OUTRAGE,
+ MOVE_LOW_KICK,
+ MOVE_ANCIENT_POWER,
+ MOVE_SYNTHESIS,
+ MOVE_AGILITY,
+ MOVE_RAPID_SPIN,
+ MOVE_ICY_WIND,
+ MOVE_MIND_READER,
+ MOVE_COSMIC_POWER,
+ MOVE_SKY_ATTACK,
+ MOVE_POWDER_SNOW,
+ MOVE_FOLLOW_ME,
+ MOVE_METEOR_MASH,
+ MOVE_ENDURE,
+ MOVE_ROLLOUT,
+ MOVE_SCARY_FACE,
+ MOVE_PSYBEAM,
+ MOVE_PSYWAVE,
+ MOVE_PSYCHIC,
+ MOVE_HYPNOSIS,
+ MOVE_UPROAR,
+ MOVE_WATER_SPOUT,
+ MOVE_SIGNAL_BEAM,
+ MOVE_PSYCH_UP,
+ MOVE_SUBMISSION,
+ MOVE_RECOVER,
+ MOVE_EARTHQUAKE,
+ MOVE_NATURE_POWER,
+ MOVE_LICK,
+ MOVE_FLAIL,
+ MOVE_TAIL_WHIP,
+ MOVE_SELF_DESTRUCT,
+ MOVE_STUN_SPORE,
+ MOVE_BIND,
+ MOVE_SHADOW_PUNCH,
+ MOVE_SHADOW_BALL,
+ MOVE_CHARGE,
+ MOVE_MIST,
+ MOVE_FISSURE,
+ MOVE_EXTREME_SPEED,
+ MOVE_EXTRASENSORY,
+ MOVE_SAFEGUARD,
+ MOVE_ABSORB,
+ MOVE_SKY_UPPERCUT,
+ MOVE_SKILL_SWAP,
+ MOVE_SKETCH,
+ MOVE_HEADBUTT,
+ MOVE_DOUBLE_EDGE,
+ MOVE_SANDSTORM,
+ MOVE_SAND_ATTACK,
+ MOVE_SAND_TOMB,
+ MOVE_SPARK,
+ MOVE_SWIFT,
+ MOVE_KINESIS,
+ MOVE_SMOG,
+ MOVE_GROWTH,
+ MOVE_SACRED_FIRE,
+ MOVE_SHEER_COLD,
+ MOVE_SOLAR_BEAM,
+ MOVE_SONIC_BOOM,
+ MOVE_FLY,
+};
+
+#endif // DATA_TEXT_EASY_CHAT_GROUPS_MOVE_1_WORDS
diff --git a/src/data/text/easy_chat/groups/move_2/order.h b/src/data/text/easy_chat/groups/move_2/order.h
new file mode 100644
index 000000000..a11cb4303
--- /dev/null
+++ b/src/data/text/easy_chat/groups/move_2/order.h
@@ -0,0 +1,400 @@
+#ifndef DATA_TEXT_EASY_CHAT_GROUPS_MOVE_2_ORDER
+#define DATA_TEXT_EASY_CHAT_GROUPS_MOVE_2_ORDER
+
+#if ENGLISH
+u16 gEasyChatGroupOrder_Move2[] = {
+ 51,
+ 151,
+ 332,
+ 133,
+ 292,
+ 274,
+ 213,
+ 140,
+ 112,
+ 226,
+ 251,
+ 187,
+ 299,
+ 59,
+ 335,
+ 34,
+ 125,
+ 198,
+ 155,
+ 340,
+ 61,
+ 339,
+ 331,
+ 347,
+ 293,
+ 4,
+ 93,
+ 160,
+ 176,
+ 178,
+ 343,
+ 306,
+ 174,
+ 111,
+ 194,
+ 197,
+ 291,
+ 146,
+ 24,
+ 337,
+ 349,
+ 82,
+ 225,
+ 138,
+ 65,
+ 223,
+ 121,
+ 52,
+ 284,
+ 153,
+ 185,
+ 252,
+ 206,
+ 297,
+ 126,
+ 7,
+ 83,
+ 148,
+ 193,
+ 218,
+ 31,
+ 210,
+ 154,
+ 248,
+ 137,
+ 45,
+ 12,
+ 257,
+ 270,
+ 136,
+ 237,
+ 30,
+ 32,
+ 336,
+ 56,
+ 63,
+ 158,
+ 304,
+ 58,
+ 8,
+ 286,
+ 275,
+ 334,
+ 26,
+ 282,
+ 348,
+ 73,
+ 43,
+ 113,
+ 199,
+ 295,
+ 183,
+ 277,
+ 345,
+ 222,
+ 96,
+ 72,
+ 25,
+ 5,
+ 224,
+ 232,
+ 118,
+ 208,
+ 102,
+ 107,
+ 243,
+ 296,
+ 236,
+ 341,
+ 300,
+ 189,
+ 330,
+ 302,
+ 101,
+ 6,
+ 64,
+ 195,
+ 80,
+ 42,
+ 305,
+ 139,
+ 40,
+ 342,
+ 77,
+ 1,
+ 217,
+ 182,
+ 98,
+ 75,
+ 278,
+ 115,
+ 287,
+ 156,
+ 279,
+ 46,
+ 350,
+ 272,
+ 27,
+ 10,
+ 290,
+ 69,
+ 351,
+ 130,
+ 303,
+ 21,
+ 79,
+ 214,
+ 124,
+ 188,
+ 289,
+ 135,
+ 131,
+ 191,
+ 255,
+ 150,
+ 211,
+ 254,
+ 23,
+ 165,
+ 164,
+ 241,
+ 276,
+ 48,
+ 57,
+ 256,
+ 186,
+ 14,
+ 33,
+ 294,
+ 36,
+ 269,
+ 298,
+ 100,
+ 168,
+ 86,
+ 84,
+ 92,
+ 144,
+ 161,
+ 271,
+ 167,
+ 41,
+ 239,
+ 11,
+ 22,
+ 55,
+ 352,
+ 346,
+ 127,
+ 18,
+ 17,
+ 273,
+ 35,
+ 192,
+};
+#elif GERMAN
+u16 gEasyChatGroupOrder_Move2[] = {
+ 194,
+ 195,
+ 282,
+ 332,
+ 133,
+ 213,
+ 55,
+ 352,
+ 292,
+ 278,
+ 112,
+ 187,
+ 178,
+ 286,
+ 343,
+ 186,
+ 80,
+ 148,
+ 192,
+ 59,
+ 61,
+ 36,
+ 34,
+ 65,
+ 46,
+ 297,
+ 164,
+ 84,
+ 86,
+ 24,
+ 131,
+ 337,
+ 349,
+ 82,
+ 167,
+ 41,
+ 73,
+ 121,
+ 111,
+ 334,
+ 8,
+ 58,
+ 255,
+ 156,
+ 284,
+ 153,
+ 27,
+ 350,
+ 299,
+ 225,
+ 7,
+ 126,
+ 83,
+ 185,
+ 174,
+ 17,
+ 218,
+ 31,
+ 347,
+ 290,
+ 69,
+ 217,
+ 193,
+ 137,
+ 77,
+ 342,
+ 40,
+ 139,
+ 305,
+ 52,
+ 12,
+ 287,
+ 45,
+ 257,
+ 30,
+ 32,
+ 254,
+ 56,
+ 63,
+ 158,
+ 222,
+ 146,
+ 336,
+ 127,
+ 11,
+ 198,
+ 125,
+ 155,
+ 4,
+ 107,
+ 93,
+ 276,
+ 237,
+ 10,
+ 154,
+ 331,
+ 348,
+ 330,
+ 189,
+ 341,
+ 300,
+ 113,
+ 277,
+ 188,
+ 96,
+ 5,
+ 25,
+ 72,
+ 232,
+ 118,
+ 208,
+ 102,
+ 252,
+ 236,
+ 101,
+ 42,
+ 346,
+ 296,
+ 302,
+ 1,
+ 150,
+ 339,
+ 251,
+ 22,
+ 75,
+ 168,
+ 270,
+ 115,
+ 272,
+ 335,
+ 98,
+ 51,
+ 151,
+ 197,
+ 130,
+ 304,
+ 295,
+ 79,
+ 214,
+ 124,
+ 64,
+ 351,
+ 182,
+ 294,
+ 14,
+ 248,
+ 43,
+ 21,
+ 241,
+ 243,
+ 340,
+ 26,
+ 191,
+ 226,
+ 211,
+ 140,
+ 23,
+ 48,
+ 57,
+ 33,
+ 303,
+ 293,
+ 291,
+ 298,
+ 100,
+ 183,
+ 92,
+ 138,
+ 271,
+ 161,
+ 206,
+ 136,
+ 289,
+ 160,
+ 176,
+ 279,
+ 269,
+ 275,
+ 256,
+ 165,
+ 224,
+ 144,
+ 135,
+ 35,
+ 239,
+ 18,
+ 223,
+ 273,
+ 6,
+ 345,
+ 306,
+ 199,
+ 210,
+ 274,
+};
+#endif // GAME_LANGUAGE
+
+#endif // DATA_TEXT_EASY_CHAT_GROUPS_MOVE_2_ORDER
diff --git a/src/data/text/easy_chat/groups/move_2/words.h b/src/data/text/easy_chat/groups/move_2/words.h
new file mode 100644
index 000000000..123fe0eb5
--- /dev/null
+++ b/src/data/text/easy_chat/groups/move_2/words.h
@@ -0,0 +1,203 @@
+#ifndef DATA_TEXT_EASY_CHAT_GROUPS_MOVE_2_WORDS
+#define DATA_TEXT_EASY_CHAT_GROUPS_MOVE_2_WORDS
+
+#include "constants/moves.h"
+
+u16 gEasyChatGroupWords_Move2[] = {
+ MOVE_TACKLE,
+ MOVE_EXPLOSION,
+ MOVE_DIVE,
+ MOVE_FIRE_BLAST,
+ MOVE_WATERFALL,
+ MOVE_MUDDY_WATER,
+ MOVE_STOCKPILE,
+ MOVE_SLAM,
+ MOVE_TWISTER,
+ MOVE_BULLET_SEED,
+ MOVE_TWINEEDLE,
+ MOVE_SOFT_BOILED,
+ MOVE_EGG_BOMB,
+ MOVE_FAINT_ATTACK,
+ MOVE_BARRAGE,
+ MOVE_MINIMIZE,
+ MOVE_SEISMIC_TOSS,
+ MOVE_SUPERSONIC,
+ MOVE_TAUNT,
+ MOVE_MOONLIGHT,
+ MOVE_PECK,
+ MOVE_ARM_THRUST,
+ MOVE_HORN_ATTACK,
+ MOVE_HORN_DRILL,
+ MOVE_WING_ATTACK,
+ MOVE_AERIAL_ACE,
+ MOVE_SWORDS_DANCE,
+ MOVE_VINE_WHIP,
+ MOVE_CONVERSION,
+ MOVE_CONVERSION_2,
+ MOVE_HELPING_HAND,
+ MOVE_IRON_DEFENSE,
+ MOVE_TELEPORT,
+ MOVE_THUNDER_SHOCK,
+ MOVE_SHOCK_WAVE,
+ MOVE_QUICK_ATTACK,
+ MOVE_SWEET_KISS,
+ MOVE_THUNDER_WAVE,
+ MOVE_ZAP_CANNON,
+ MOVE_BLOCK,
+ MOVE_HOWL,
+ MOVE_POISON_GAS,
+ MOVE_TOXIC,
+ MOVE_POISON_FANG,
+ MOVE_POISON_POWDER,
+ MOVE_POISON_STING,
+ MOVE_SPIKE_CANNON,
+ MOVE_ACID_ARMOR,
+ MOVE_TAKE_DOWN,
+ MOVE_JUMP_KICK,
+ MOVE_BOUNCE,
+ MOVE_HI_JUMP_KICK,
+ MOVE_TRI_ATTACK,
+ MOVE_DRAGON_CLAW,
+ MOVE_TRICK,
+ MOVE_TRIPLE_KICK,
+ MOVE_DRILL_PECK,
+ MOVE_MUD_SPORT,
+ MOVE_MUD_SLAP,
+ MOVE_THIEF,
+ MOVE_AMNESIA,
+ MOVE_NIGHT_SHADE,
+ MOVE_GROWL,
+ MOVE_SLACK_OFF,
+ MOVE_SURF,
+ MOVE_ROLE_PLAY,
+ MOVE_NEEDLE_ARM,
+ MOVE_DOUBLE_KICK,
+ MOVE_SUNNY_DAY,
+ MOVE_LEER,
+ MOVE_WISH,
+ MOVE_FAKE_OUT,
+ MOVE_SLEEP_TALK,
+ MOVE_PAY_DAY,
+ MOVE_ASSIST,
+ MOVE_HEAT_WAVE,
+ MOVE_SLEEP_POWDER,
+ MOVE_REST,
+ MOVE_INGRAIN,
+ MOVE_CONFUSION,
+ MOVE_BODY_SLAM,
+ MOVE_SWALLOW,
+ MOVE_CURSE,
+ MOVE_HYDRO_PUMP,
+ MOVE_HYPER_VOICE,
+ MOVE_HYPER_BEAM,
+ MOVE_SUPERPOWER,
+ MOVE_STEEL_WING,
+ MOVE_SPIT_UP,
+ MOVE_DYNAMIC_PUNCH,
+ MOVE_GUILLOTINE,
+ MOVE_VICE_GRIP,
+ MOVE_KNOCK_OFF,
+ MOVE_POUND,
+ MOVE_RAZOR_LEAF,
+ MOVE_BATON_PASS,
+ MOVE_PETAL_DANCE,
+ MOVE_SPLASH,
+ MOVE_BUBBLE_BEAM,
+ MOVE_BELLY_DRUM,
+ MOVE_BARRIER,
+ MOVE_LIGHT_SCREEN,
+ MOVE_SCRATCH,
+ MOVE_HYPER_FANG,
+ MOVE_EMBER,
+ MOVE_SECRET_POWER,
+ MOVE_DIZZY_PUNCH,
+ MOVE_BULK_UP,
+ MOVE_IMPRISON,
+ MOVE_FEATHER_DANCE,
+ MOVE_WHIRLWIND,
+ MOVE_BEAT_UP,
+ MOVE_BLIZZARD,
+ MOVE_STOMP,
+ MOVE_FLASH,
+ MOVE_TEETER_DANCE,
+ MOVE_CRUSH_CLAW,
+ MOVE_BLAZE_KICK,
+ MOVE_PRESENT,
+ MOVE_ERUPTION,
+ MOVE_SLUDGE,
+ MOVE_SLUDGE_BOMB,
+ MOVE_GLARE,
+ MOVE_TRANSFORM,
+ MOVE_POISON_TAIL,
+ MOVE_ROAR,
+ MOVE_BONE_RUSH,
+ MOVE_CAMOUFLAGE,
+ MOVE_COVET,
+ MOVE_TAIL_GLOW,
+ MOVE_BONE_CLUB,
+ MOVE_BONEMERANG,
+ MOVE_FIRE_SPIN,
+ MOVE_FIRE_PUNCH,
+ MOVE_PERISH_SONG,
+ MOVE_WRAP,
+ MOVE_SPIKES,
+ MOVE_MAGNITUDE,
+ MOVE_MAGICAL_LEAF,
+ MOVE_MAGIC_COAT,
+ MOVE_MUD_SHOT,
+ MOVE_MACH_PUNCH,
+ MOVE_PROTECT,
+ MOVE_DEFENSE_CURL,
+ MOVE_ROLLING_KICK,
+ MOVE_SUBSTITUTE,
+ MOVE_DETECT,
+ MOVE_PIN_MISSILE,
+ MOVE_WATER_SPORT,
+ MOVE_WATER_GUN,
+ MOVE_MIST_BALL,
+ MOVE_WATER_PULSE,
+ MOVE_FURY_ATTACK,
+ MOVE_FURY_SWIPES,
+ MOVE_DESTINY_BOND,
+ MOVE_FALSE_SWIPE,
+ MOVE_FORESIGHT,
+ MOVE_MIRROR_COAT,
+ MOVE_FUTURE_SIGHT,
+ MOVE_MILK_DRINK,
+ MOVE_CALM_MIND,
+ MOVE_MEGA_DRAIN,
+ MOVE_MEGA_KICK,
+ MOVE_MEGA_PUNCH,
+ MOVE_MEGAHORN,
+ MOVE_HIDDEN_POWER,
+ MOVE_METAL_CLAW,
+ MOVE_ATTRACT,
+ MOVE_MIMIC,
+ MOVE_FRUSTRATION,
+ MOVE_LEECH_SEED,
+ MOVE_METRONOME,
+ MOVE_DREAM_EATER,
+ MOVE_ACID,
+ MOVE_MEDITATE,
+ MOVE_SNATCH,
+ MOVE_LUSTER_PURGE,
+ MOVE_LEAF_BLADE,
+ MOVE_RECYCLE,
+ MOVE_REFLECT,
+ MOVE_REFRESH,
+ MOVE_REVENGE,
+ MOVE_DRAGON_RAGE,
+ MOVE_DRAGON_BREATH,
+ MOVE_DRAGON_DANCE,
+ MOVE_ICE_PUNCH,
+ MOVE_ICE_BEAM,
+ MOVE_FURY_CUTTER,
+ MOVE_COMET_PUNCH,
+ MOVE_SKULL_BASH,
+ MOVE_LOCK_ON,
+ MOVE_ROCK_BLAST,
+ MOVE_COTTON_SPORE,
+ MOVE_STRUGGLE,
+};
+
+#endif // DATA_TEXT_EASY_CHAT_GROUPS_MOVE_2_WORDS
diff --git a/src/data/text/easy_chat/groups/people/order.h b/src/data/text/easy_chat/groups/people/order.h
new file mode 100644
index 000000000..0eabccfbb
--- /dev/null
+++ b/src/data/text/easy_chat/groups/people/order.h
@@ -0,0 +1,162 @@
+#ifndef DATA_TEXT_EASY_CHAT_GROUPS_PEOPLE_ORDER
+#define DATA_TEXT_EASY_CHAT_GROUPS_PEOPLE_ORDER
+
+#if ENGLISH
+u16 gEasyChatGroupOrder_People[] = {
+ 13,
+ 52,
+ 31,
+ 17,
+ 22,
+ 62,
+ 12,
+ 14,
+ 34,
+ 28,
+ 54,
+ 23,
+ 11,
+ 51,
+ 21,
+ 9,
+ 16,
+ 26,
+ 30,
+ 24,
+ 72,
+ 25,
+ 29,
+ 1,
+ 41,
+ 38,
+ 42,
+ 49,
+ 33,
+ 50,
+ 19,
+ 20,
+ 8,
+ 35,
+ 36,
+ 40,
+ 37,
+ 0,
+ 64,
+ 18,
+ 53,
+ 27,
+ 66,
+ 69,
+ 73,
+ 70,
+ 32,
+ 15,
+ 74,
+ 44,
+ 4,
+ 58,
+ 55,
+ 56,
+ 59,
+ 60,
+ 71,
+ 39,
+ 57,
+ 63,
+ 46,
+ 10,
+ 61,
+ 65,
+ 67,
+ 43,
+ 48,
+ 45,
+ 47,
+ 68,
+ 2,
+ 6,
+ 7,
+ 5,
+ 3,
+};
+#elif GERMAN
+u16 gEasyChatGroupOrder_People[] = {
+ 14,
+ 50,
+ 49,
+ 4,
+ 3,
+ 5,
+ 22,
+ 2,
+ 6,
+ 7,
+ 18,
+ 26,
+ 30,
+ 13,
+ 58,
+ 72,
+ 23,
+ 0,
+ 36,
+ 51,
+ 71,
+ 57,
+ 63,
+ 46,
+ 32,
+ 16,
+ 9,
+ 35,
+ 1,
+ 41,
+ 42,
+ 38,
+ 25,
+ 55,
+ 24,
+ 44,
+ 12,
+ 33,
+ 34,
+ 21,
+ 19,
+ 40,
+ 45,
+ 20,
+ 37,
+ 8,
+ 10,
+ 27,
+ 53,
+ 66,
+ 15,
+ 29,
+ 69,
+ 60,
+ 74,
+ 73,
+ 68,
+ 59,
+ 70,
+ 56,
+ 31,
+ 17,
+ 28,
+ 54,
+ 64,
+ 11,
+ 52,
+ 62,
+ 43,
+ 48,
+ 47,
+ 61,
+ 67,
+ 65,
+ 39,
+};
+#endif // GAME_LANGUAGE
+
+#endif // DATA_TEXT_EASY_CHAT_GROUPS_PEOPLE_ORDER
diff --git a/src/data/text/easy_chat/groups/people/words.h b/src/data/text/easy_chat/groups/people/words.h
new file mode 100644
index 000000000..301ce1ed5
--- /dev/null
+++ b/src/data/text/easy_chat/groups/people/words.h
@@ -0,0 +1,160 @@
+#ifndef DATA_TEXT_EASY_CHAT_GROUPS_PEOPLE_WORDS
+#define DATA_TEXT_EASY_CHAT_GROUPS_PEOPLE_WORDS
+#if ENGLISH
+u8 gEasyChatGroupWords_People[] = _(
+ "OPPONENT$"
+ "I$"
+ "YOU$"
+ "YOURS$"
+ "SON$"
+ "YOUR$"
+ "YOU’RE$"
+ "YOU’VE$"
+ "MOTHER$"
+ "GRANDFATHER$"
+ "UNCLE$"
+ "FATHER$"
+ "BOY$"
+ "ADULT$"
+ "BROTHER$"
+ "SISTER$"
+ "GRANDMOTHER$"
+ "AUNT$"
+ "PARENT$"
+ "MAN$"
+ "ME$"
+ "GIRL$"
+ "BABE$"
+ "FAMILY$"
+ "HER$"
+ "HIM$"
+ "HE$"
+ "PLACE$"
+ "DAUGHTER$"
+ "HIS$"
+ "HE’S$"
+ "AREN’T$"
+ "SIBLINGS$"
+ "KID$"
+ "CHILDREN$"
+ "MR.$"
+ "MRS.$"
+ "MYSELF$"
+ "I WAS$"
+ "TO ME$"
+ "MY$"
+ "I AM$"
+ "I’VE$"
+ "WHO$"
+ "SOMEONE$"
+ "WHO WAS$"
+ "TO WHOM$"
+ "WHOSE$"
+ "WHO IS$"
+ "IT’S$"
+ "LADY$"
+ "FRIEND$"
+ "ALLY$"
+ "PERSON$"
+ "DUDE$"
+ "THEY$"
+ "THEY WERE$"
+ "TO THEM$"
+ "THEIR$"
+ "THEY’RE$"
+ "THEY’VE$"
+ "WE$"
+ "BEEN$"
+ "TO US$"
+ "OUR$"
+ "WE’RE$"
+ "RIVAL$"
+ "WE’VE$"
+ "WOMAN$"
+ "SHE$"
+ "SHE WAS$"
+ "TO HER$"
+ "HER’S$"
+ "SHE IS$"
+ "SOME$"
+ );
+#elif GERMAN
+u8 gEasyChatGroupWords_People[] = _(
+ "FEIND$"
+ "ICH$"
+ "DU$"
+ "DEINE$"
+ "DEIN$"
+ "DEINER$"
+ "DU BIST$"
+ "DU HAST$"
+ "MUTTER$"
+ "GROSSVATER$"
+ "ONKEL$"
+ "VATER$"
+ "JUNGE$"
+ "ERWACHSENER$"
+ "BRUDER$"
+ "SCHWESTER$"
+ "GROSSMUTTER$"
+ "TANTE$"
+ "ELTERN$"
+ "MAN$"
+ "MICH$"
+ "MÄDCHEN$"
+ "DICH$"
+ "FAMILIE$"
+ "IHR$"
+ "IHM$"
+ "ER$"
+ "ORT$"
+ "TOCHTER$"
+ "SEIN$"
+ "ER IST$"
+ "SIND NICHT$"
+ "GESCHWISTER$"
+ "KINDCHEN$"
+ "KINDER$"
+ "HERR$"
+ "FRAU$"
+ "MIR$"
+ "ICH WAR$"
+ "ZU MIR$"
+ "MEIN$"
+ "ICH BIN$"
+ "ICH HABE$"
+ "WER$"
+ "JEMAND$"
+ "MEINE$"
+ "FÜR WEN$"
+ "WESSEN$"
+ "WER IST$"
+ "DAS IST$"
+ "DAME$"
+ "FREUND$"
+ "VERBÜNDETER$"
+ "PERSON$"
+ "TYPE$"
+ "IHNEN$"
+ "SIE WAREN$"
+ "FÜR SIE$"
+ "EUCH$"
+ "SIE SIND$"
+ "SIE HABEN$"
+ "WIR$"
+ "WAREN$"
+ "FÜR UNS$"
+ "UNSER$"
+ "WIR SIND$"
+ "RIVALE$"
+ "WIR HABEN$"
+ "SIE KONNTEN$"
+ "SIE$"
+ "SIE WAR$"
+ "FÜR ALLE$"
+ "EURE$"
+ "SIE IST$"
+ "SIE HATTE$"
+ );
+#endif // GAME_LANGUAGE
+#endif // DATA_TEXT_EASY_CHAT_GROUPS_PEOPLE_WORDS
diff --git a/src/data/text/easy_chat/groups/pokemon/order.h b/src/data/text/easy_chat/groups/pokemon/order.h
new file mode 100644
index 000000000..bef4bc99a
--- /dev/null
+++ b/src/data/text/easy_chat/groups/pokemon/order.h
@@ -0,0 +1,416 @@
+#ifndef DATA_TEXT_EASY_CHAT_GROUPS_POKEMON_ORDER
+#define DATA_TEXT_EASY_CHAT_GROUPS_POKEMON_ORDER
+
+#if ENGLISH
+u16 gEasyChatGroupOrder_Pokemon[] = {
+ 63,
+ 376,
+ 384,
+ 65,
+ 359,
+ 390,
+ 391,
+ 382,
+ 184,
+ 350,
+ 395,
+ 318,
+ 378,
+ 323,
+ 292,
+ 398,
+ 182,
+ 282,
+ 307,
+ 344,
+ 345,
+ 340,
+ 330,
+ 293,
+ 385,
+ 411,
+ 170,
+ 373,
+ 319,
+ 281,
+ 326,
+ 222,
+ 389,
+ 327,
+ 169,
+ 316,
+ 410,
+ 85,
+ 84,
+ 232,
+ 362,
+ 361,
+ 294,
+ 337,
+ 101,
+ 372,
+ 328,
+ 334,
+ 394,
+ 74,
+ 203,
+ 347,
+ 44,
+ 42,
+ 118,
+ 55,
+ 76,
+ 375,
+ 75,
+ 88,
+ 405,
+ 278,
+ 352,
+ 367,
+ 130,
+ 336,
+ 214,
+ 116,
+ 374,
+ 174,
+ 387,
+ 39,
+ 409,
+ 64,
+ 317,
+ 230,
+ 393,
+ 109,
+ 404,
+ 383,
+ 171,
+ 407,
+ 408,
+ 388,
+ 289,
+ 296,
+ 295,
+ 371,
+ 297,
+ 348,
+ 325,
+ 68,
+ 67,
+ 66,
+ 219,
+ 129,
+ 81,
+ 82,
+ 335,
+ 338,
+ 183,
+ 284,
+ 312,
+ 355,
+ 357,
+ 356,
+ 400,
+ 399,
+ 287,
+ 329,
+ 354,
+ 283,
+ 89,
+ 177,
+ 301,
+ 38,
+ 302,
+ 320,
+ 339,
+ 299,
+ 43,
+ 310,
+ 231,
+ 172,
+ 25,
+ 127,
+ 353,
+ 286,
+ 54,
+ 26,
+ 392,
+ 406,
+ 402,
+ 401,
+ 403,
+ 381,
+ 112,
+ 111,
+ 363,
+ 322,
+ 397,
+ 27,
+ 28,
+ 279,
+ 117,
+ 119,
+ 342,
+ 298,
+ 379,
+ 331,
+ 303,
+ 396,
+ 300,
+ 306,
+ 377,
+ 291,
+ 227,
+ 315,
+ 366,
+ 364,
+ 218,
+ 346,
+ 349,
+ 341,
+ 308,
+ 351,
+ 121,
+ 120,
+ 311,
+ 358,
+ 368,
+ 285,
+ 305,
+ 304,
+ 72,
+ 73,
+ 280,
+ 321,
+ 332,
+ 277,
+ 369,
+ 333,
+ 365,
+ 45,
+ 386,
+ 100,
+ 37,
+ 313,
+ 314,
+ 343,
+ 110,
+ 324,
+ 370,
+ 40,
+ 309,
+ 202,
+ 290,
+ 360,
+ 178,
+ 380,
+ 288,
+ 41,
+};
+#elif GERMAN
+u16 gEasyChatGroupOrder_Pokemon[] = {
+ 374,
+ 63,
+ 376,
+ 359,
+ 390,
+ 391,
+ 184,
+ 350,
+ 378,
+ 328,
+ 299,
+ 182,
+ 397,
+ 364,
+ 339,
+ 340,
+ 222,
+ 410,
+ 85,
+ 84,
+ 232,
+ 396,
+ 44,
+ 315,
+ 316,
+ 54,
+ 55,
+ 286,
+ 347,
+ 280,
+ 174,
+ 355,
+ 370,
+ 385,
+ 337,
+ 130,
+ 277,
+ 311,
+ 75,
+ 76,
+ 289,
+ 279,
+ 45,
+ 203,
+ 42,
+ 118,
+ 119,
+ 352,
+ 405,
+ 394,
+ 336,
+ 283,
+ 169,
+ 387,
+ 360,
+ 409,
+ 281,
+ 64,
+ 330,
+ 307,
+ 297,
+ 129,
+ 317,
+ 395,
+ 393,
+ 74,
+ 332,
+ 306,
+ 40,
+ 371,
+ 372,
+ 326,
+ 327,
+ 404,
+ 170,
+ 171,
+ 407,
+ 408,
+ 101,
+ 319,
+ 366,
+ 334,
+ 325,
+ 388,
+ 282,
+ 296,
+ 295,
+ 348,
+ 66,
+ 68,
+ 219,
+ 287,
+ 81,
+ 82,
+ 335,
+ 183,
+ 67,
+ 312,
+ 357,
+ 356,
+ 400,
+ 399,
+ 329,
+ 354,
+ 284,
+ 365,
+ 43,
+ 320,
+ 177,
+ 301,
+ 302,
+ 303,
+ 345,
+ 411,
+ 308,
+ 293,
+ 227,
+ 292,
+ 310,
+ 373,
+ 231,
+ 172,
+ 25,
+ 127,
+ 353,
+ 294,
+ 39,
+ 318,
+ 321,
+ 26,
+ 406,
+ 402,
+ 401,
+ 403,
+ 381,
+ 278,
+ 111,
+ 112,
+ 363,
+ 375,
+ 298,
+ 28,
+ 27,
+ 291,
+ 368,
+ 367,
+ 323,
+ 218,
+ 346,
+ 304,
+ 305,
+ 230,
+ 342,
+ 117,
+ 341,
+ 116,
+ 380,
+ 377,
+ 65,
+ 214,
+ 88,
+ 89,
+ 110,
+ 109,
+ 349,
+ 351,
+ 121,
+ 120,
+ 384,
+ 383,
+ 382,
+ 285,
+ 398,
+ 300,
+ 72,
+ 73,
+ 331,
+ 392,
+ 369,
+ 344,
+ 333,
+ 379,
+ 386,
+ 338,
+ 100,
+ 38,
+ 37,
+ 358,
+ 313,
+ 314,
+ 343,
+ 290,
+ 324,
+ 389,
+ 309,
+ 202,
+ 178,
+ 288,
+ 322,
+ 41,
+ 362,
+ 361,
+};
+#endif // GAME_LANGUAGE
+
+#endif // DATA_TEXT_EASY_CHAT_GROUPS_POKEMON_ORDER
diff --git a/src/data/text/easy_chat/groups/pokemon/words.h b/src/data/text/easy_chat/groups/pokemon/words.h
new file mode 100644
index 000000000..49292c8a9
--- /dev/null
+++ b/src/data/text/easy_chat/groups/pokemon/words.h
@@ -0,0 +1,211 @@
+#ifndef DATA_TEXT_EASY_CHAT_GROUPS_POKEMON_WORDS
+#define DATA_TEXT_EASY_CHAT_GROUPS_POKEMON_WORDS
+
+#include "constants/species.h"
+
+u16 gEasyChatGroupWords_Pokemon[] = {
+ SPECIES_ARMALDO,
+ SPECIES_BEAUTIFLY,
+ SPECIES_MEDITITE,
+ SPECIES_SEAKING,
+ SPECIES_TORCHIC,
+ SPECIES_ANORITH,
+ SPECIES_ABSOL,
+ SPECIES_SURSKIT,
+ SPECIES_MASQUERAIN,
+ SPECIES_GEODUDE,
+ SPECIES_ILLUMISE,
+ SPECIES_SKARMORY,
+ SPECIES_SKITTY,
+ SPECIES_DELCATTY,
+ SPECIES_SWELLOW,
+ SPECIES_GLALIE,
+ SPECIES_KYOGRE,
+ SPECIES_MACHAMP,
+ SPECIES_PINSIR,
+ SPECIES_KECLEON,
+ SPECIES_SHUPPET,
+ SPECIES_SILCOON,
+ SPECIES_BRELOOM,
+ SPECIES_SHROOMISH,
+ SPECIES_CARVANHA,
+ SPECIES_TREECKO,
+ SPECIES_WINGULL,
+ SPECIES_GYARADOS,
+ SPECIES_NINETALES,
+ SPECIES_GIRAFARIG,
+ SPECIES_KIRLIA,
+ SPECIES_BELLOSSOM,
+ SPECIES_KINGDRA,
+ SPECIES_GLOOM,
+ SPECIES_MAWILE,
+ SPECIES_GROUDON,
+ SPECIES_MIGHTYENA,
+ SPECIES_CROBAT,
+ SPECIES_ABRA,
+ SPECIES_SLAKING,
+ SPECIES_WURMPLE,
+ SPECIES_MAGIKARP,
+ SPECIES_MAGNEMITE,
+ SPECIES_TORKOAL,
+ SPECIES_MACHOKE,
+ SPECIES_GULPIN,
+ SPECIES_ARON,
+ SPECIES_PSYDUCK,
+ SPECIES_LAIRON,
+ SPECIES_WHISMUR,
+ SPECIES_NUZLEAF,
+ SPECIES_PHANPY,
+ SPECIES_SHELGON,
+ SPECIES_GOLDUCK,
+ SPECIES_GOLBAT,
+ SPECIES_GOLEM,
+ SPECIES_GRAVELER,
+ SPECIES_GARDEVOIR,
+ SPECIES_RHYDON,
+ SPECIES_RHYHORN,
+ SPECIES_GOREBYSS,
+ SPECIES_CORSOLA,
+ SPECIES_CACNEA,
+ SPECIES_DUSCLOPS,
+ SPECIES_SHARPEDO,
+ SPECIES_ZANGOOSE,
+ SPECIES_SANDSHREW,
+ SPECIES_SANDSLASH,
+ SPECIES_SEADRA,
+ SPECIES_RELICANTH,
+ SPECIES_ZIGZAGOON,
+ SPECIES_CRAWDAUNT,
+ SPECIES_SCEPTILE,
+ SPECIES_GROVYLE,
+ SPECIES_BANETTE,
+ SPECIES_JIRACHI,
+ SPECIES_STARMIE,
+ SPECIES_ZUBAT,
+ SPECIES_TAILLOW,
+ SPECIES_WYNAUT,
+ SPECIES_WOBBUFFET,
+ SPECIES_SOLROCK,
+ SPECIES_SHIFTRY,
+ SPECIES_HORSEA,
+ SPECIES_BAGON,
+ SPECIES_SEEDOT,
+ SPECIES_SPHEAL,
+ SPECIES_BELDUM,
+ SPECIES_MEDICHAM,
+ SPECIES_CHINCHOU,
+ SPECIES_CHIMECHO,
+ SPECIES_ALTARIA,
+ SPECIES_SWABLU,
+ SPECIES_NINCADA,
+ SPECIES_DEOXYS,
+ SPECIES_NINJASK,
+ SPECIES_DODUO,
+ SPECIES_DODRIO,
+ SPECIES_KOFFING,
+ SPECIES_TENTACRUEL,
+ SPECIES_DUSTOX,
+ SPECIES_LOUDRED,
+ SPECIES_GOLDEEN,
+ SPECIES_BARBOACH,
+ SPECIES_SEALEO,
+ SPECIES_WALREIN,
+ SPECIES_TROPIUS,
+ SPECIES_DONPHAN,
+ SPECIES_NUMEL,
+ SPECIES_ODDISH,
+ SPECIES_TRAPINCH,
+ SPECIES_SLAKOTH,
+ SPECIES_WHISCASH,
+ SPECIES_SHEDINJA,
+ SPECIES_MARSHTOMP,
+ SPECIES_NATU,
+ SPECIES_XATU,
+ SPECIES_CLAYDOL,
+ SPECIES_CACTURNE,
+ SPECIES_NOSEPASS,
+ SPECIES_CLAMPERL,
+ SPECIES_CAMERUPT,
+ SPECIES_EXPLOUD,
+ SPECIES_BLAZIKEN,
+ SPECIES_LOMBRE,
+ SPECIES_LOTAD,
+ SPECIES_SPINDA,
+ SPECIES_SPOINK,
+ SPECIES_SEVIPER,
+ SPECIES_HARIYAMA,
+ SPECIES_VOLBEAT,
+ SPECIES_HUNTAIL,
+ SPECIES_PIKACHU,
+ SPECIES_PICHU,
+ SPECIES_STARYU,
+ SPECIES_VIBRAVA,
+ SPECIES_VOLTORB,
+ SPECIES_FEEBAS,
+ SPECIES_ALAKAZAM,
+ SPECIES_GRUMPIG,
+ SPECIES_WIGGLYTUFF,
+ SPECIES_IGGLYBUFF,
+ SPECIES_FLYGON,
+ SPECIES_PLUSLE,
+ SPECIES_JIGGLYPUFF,
+ SPECIES_CORPHISH,
+ SPECIES_GRIMER,
+ SPECIES_MUK,
+ SPECIES_HERACROSS,
+ SPECIES_PELIPPER,
+ SPECIES_WAILORD,
+ SPECIES_WAILMER,
+ SPECIES_SALAMENCE,
+ SPECIES_AGGRON,
+ SPECIES_POOCHYENA,
+ SPECIES_CASTFORM,
+ SPECIES_MINUN,
+ SPECIES_MAGCARGO,
+ SPECIES_MAKUHITA,
+ SPECIES_SLUGMA,
+ SPECIES_WEEZING,
+ SPECIES_LINOONE,
+ SPECIES_CASCOON,
+ SPECIES_MARILL,
+ SPECIES_AZUMARILL,
+ SPECIES_SWALOT,
+ SPECIES_ELECTRODE,
+ SPECIES_MUDKIP,
+ SPECIES_MILOTIC,
+ SPECIES_METAGROSS,
+ SPECIES_METANG,
+ SPECIES_TENTACOOL,
+ SPECIES_BALTOY,
+ SPECIES_SABLEYE,
+ SPECIES_VIGOROTH,
+ SPECIES_SNORUNT,
+ SPECIES_CRADILY,
+ SPECIES_KADABRA,
+ SPECIES_DUSKULL,
+ SPECIES_RAICHU,
+ SPECIES_MANECTRIC,
+ SPECIES_SWAMPERT,
+ SPECIES_ELECTRIKE,
+ SPECIES_LATIAS,
+ SPECIES_LATIOS,
+ SPECIES_LUVDISC,
+ SPECIES_VILEPLUME,
+ SPECIES_RALTS,
+ SPECIES_LANTURN,
+ SPECIES_LILEEP,
+ SPECIES_LUNATONE,
+ SPECIES_AZURILL,
+ SPECIES_LUDICOLO,
+ SPECIES_MAGNETON,
+ SPECIES_REGICE,
+ SPECIES_REGISTEEL,
+ SPECIES_REGIROCK,
+ SPECIES_RAYQUAZA,
+ SPECIES_VULPIX,
+ SPECIES_ROSELIA,
+ SPECIES_COMBUSKEN,
+ SPECIES_MACHOP,
+};
+
+#endif // DATA_TEXT_EASY_CHAT_GROUPS_POKEMON_WORDS
diff --git a/src/data/text/easy_chat/groups/pokemon_2/order.h b/src/data/text/easy_chat/groups/pokemon_2/order.h
new file mode 100644
index 000000000..e960edf13
--- /dev/null
+++ b/src/data/text/easy_chat/groups/pokemon_2/order.h
@@ -0,0 +1,514 @@
+#ifndef DATA_TEXT_EASY_CHAT_GROUPS_POKEMON_2_ORDER
+#define DATA_TEXT_EASY_CHAT_GROUPS_POKEMON_2_ORDER
+
+#if ENGLISH
+u16 gEasyChatGroupOrder_Pokemon2[] = {
+ 63,
+ 142,
+ 190,
+ 65,
+ 181,
+ 24,
+ 59,
+ 168,
+ 144,
+ 184,
+ 153,
+ 15,
+ 182,
+ 69,
+ 9,
+ 242,
+ 1,
+ 12,
+ 10,
+ 251,
+ 113,
+ 6,
+ 4,
+ 5,
+ 152,
+ 170,
+ 36,
+ 35,
+ 173,
+ 91,
+ 222,
+ 169,
+ 159,
+ 104,
+ 155,
+ 225,
+ 87,
+ 50,
+ 132,
+ 85,
+ 84,
+ 232,
+ 148,
+ 149,
+ 147,
+ 96,
+ 51,
+ 206,
+ 133,
+ 23,
+ 125,
+ 101,
+ 239,
+ 244,
+ 196,
+ 102,
+ 103,
+ 83,
+ 22,
+ 160,
+ 180,
+ 136,
+ 205,
+ 162,
+ 92,
+ 94,
+ 74,
+ 203,
+ 207,
+ 44,
+ 42,
+ 118,
+ 55,
+ 76,
+ 210,
+ 75,
+ 88,
+ 58,
+ 130,
+ 93,
+ 214,
+ 107,
+ 106,
+ 237,
+ 250,
+ 163,
+ 187,
+ 116,
+ 229,
+ 228,
+ 97,
+ 174,
+ 2,
+ 39,
+ 135,
+ 189,
+ 124,
+ 140,
+ 141,
+ 64,
+ 14,
+ 115,
+ 230,
+ 99,
+ 109,
+ 98,
+ 171,
+ 131,
+ 246,
+ 166,
+ 165,
+ 108,
+ 249,
+ 68,
+ 67,
+ 66,
+ 240,
+ 219,
+ 129,
+ 126,
+ 81,
+ 82,
+ 56,
+ 226,
+ 179,
+ 183,
+ 105,
+ 154,
+ 52,
+ 11,
+ 151,
+ 150,
+ 241,
+ 200,
+ 146,
+ 122,
+ 89,
+ 198,
+ 177,
+ 34,
+ 31,
+ 29,
+ 32,
+ 30,
+ 33,
+ 38,
+ 164,
+ 224,
+ 43,
+ 138,
+ 139,
+ 95,
+ 46,
+ 47,
+ 53,
+ 231,
+ 172,
+ 18,
+ 17,
+ 16,
+ 25,
+ 221,
+ 204,
+ 127,
+ 186,
+ 60,
+ 61,
+ 62,
+ 77,
+ 137,
+ 233,
+ 57,
+ 54,
+ 247,
+ 195,
+ 156,
+ 211,
+ 26,
+ 243,
+ 78,
+ 20,
+ 19,
+ 223,
+ 112,
+ 111,
+ 27,
+ 28,
+ 212,
+ 123,
+ 117,
+ 119,
+ 86,
+ 161,
+ 90,
+ 213,
+ 227,
+ 188,
+ 80,
+ 199,
+ 79,
+ 218,
+ 235,
+ 238,
+ 215,
+ 143,
+ 209,
+ 21,
+ 167,
+ 7,
+ 234,
+ 121,
+ 120,
+ 208,
+ 185,
+ 245,
+ 192,
+ 191,
+ 220,
+ 114,
+ 128,
+ 216,
+ 72,
+ 73,
+ 175,
+ 176,
+ 158,
+ 157,
+ 248,
+ 236,
+ 197,
+ 201,
+ 217,
+ 134,
+ 49,
+ 48,
+ 3,
+ 71,
+ 45,
+ 100,
+ 37,
+ 8,
+ 13,
+ 70,
+ 110,
+ 40,
+ 202,
+ 194,
+ 178,
+ 193,
+ 145,
+ 41,
+};
+#elif GERMAN
+u16 gEasyChatGroupOrder_Pokemon2[] = {
+ 63,
+ 142,
+ 93,
+ 138,
+ 139,
+ 181,
+ 134,
+ 24,
+ 168,
+ 59,
+ 144,
+ 91,
+ 184,
+ 211,
+ 15,
+ 3,
+ 2,
+ 1,
+ 135,
+ 182,
+ 48,
+ 225,
+ 251,
+ 113,
+ 222,
+ 234,
+ 248,
+ 50,
+ 51,
+ 132,
+ 85,
+ 84,
+ 232,
+ 148,
+ 149,
+ 147,
+ 44,
+ 206,
+ 239,
+ 125,
+ 152,
+ 244,
+ 54,
+ 55,
+ 133,
+ 235,
+ 194,
+ 155,
+ 136,
+ 79,
+ 174,
+ 205,
+ 58,
+ 78,
+ 130,
+ 94,
+ 75,
+ 76,
+ 45,
+ 203,
+ 4,
+ 6,
+ 5,
+ 42,
+ 118,
+ 119,
+ 210,
+ 190,
+ 21,
+ 242,
+ 250,
+ 163,
+ 187,
+ 13,
+ 188,
+ 229,
+ 228,
+ 97,
+ 22,
+ 201,
+ 156,
+ 169,
+ 160,
+ 87,
+ 86,
+ 140,
+ 141,
+ 64,
+ 115,
+ 237,
+ 158,
+ 129,
+ 221,
+ 106,
+ 99,
+ 74,
+ 69,
+ 105,
+ 40,
+ 103,
+ 14,
+ 98,
+ 198,
+ 238,
+ 80,
+ 170,
+ 171,
+ 131,
+ 246,
+ 199,
+ 146,
+ 166,
+ 165,
+ 101,
+ 153,
+ 249,
+ 66,
+ 68,
+ 240,
+ 219,
+ 126,
+ 81,
+ 82,
+ 226,
+ 183,
+ 67,
+ 52,
+ 154,
+ 56,
+ 151,
+ 150,
+ 241,
+ 185,
+ 195,
+ 90,
+ 43,
+ 197,
+ 177,
+ 92,
+ 34,
+ 31,
+ 29,
+ 32,
+ 30,
+ 33,
+ 107,
+ 164,
+ 224,
+ 49,
+ 95,
+ 102,
+ 122,
+ 227,
+ 189,
+ 46,
+ 47,
+ 231,
+ 172,
+ 35,
+ 173,
+ 25,
+ 127,
+ 36,
+ 77,
+ 83,
+ 137,
+ 233,
+ 213,
+ 196,
+ 39,
+ 247,
+ 62,
+ 60,
+ 61,
+ 186,
+ 220,
+ 236,
+ 26,
+ 243,
+ 57,
+ 19,
+ 20,
+ 10,
+ 143,
+ 223,
+ 23,
+ 111,
+ 112,
+ 124,
+ 11,
+ 28,
+ 27,
+ 71,
+ 212,
+ 7,
+ 8,
+ 108,
+ 218,
+ 230,
+ 117,
+ 116,
+ 123,
+ 65,
+ 214,
+ 207,
+ 88,
+ 89,
+ 12,
+ 110,
+ 109,
+ 215,
+ 53,
+ 209,
+ 192,
+ 191,
+ 208,
+ 121,
+ 120,
+ 245,
+ 114,
+ 204,
+ 17,
+ 18,
+ 16,
+ 128,
+ 216,
+ 72,
+ 73,
+ 175,
+ 176,
+ 157,
+ 104,
+ 96,
+ 200,
+ 9,
+ 159,
+ 70,
+ 217,
+ 179,
+ 100,
+ 38,
+ 37,
+ 180,
+ 167,
+ 162,
+ 161,
+ 202,
+ 178,
+ 193,
+ 145,
+ 41,
+};
+#endif // GAME_LANGUAGE
+
+#endif // DATA_TEXT_EASY_CHAT_GROUPS_POKEMON_2_ORDER
diff --git a/src/data/text/easy_chat/groups/pokemon_2/words.h b/src/data/text/easy_chat/groups/pokemon_2/words.h
new file mode 100644
index 000000000..d6cb445d4
--- /dev/null
+++ b/src/data/text/easy_chat/groups/pokemon_2/words.h
@@ -0,0 +1,260 @@
+#ifndef DATA_TEXT_EASY_CHAT_GROUPS_POKEMON_2_WORDS
+#define DATA_TEXT_EASY_CHAT_GROUPS_POKEMON_2_WORDS
+
+#include "constants/species.h"
+
+u16 gEasyChatGroupWords_Pokemon2[] = {
+ SPECIES_EKANS,
+ SPECIES_ARBOK,
+ SPECIES_SEAKING,
+ SPECIES_ARIADOS,
+ SPECIES_CROCONAW,
+ SPECIES_UNOWN,
+ SPECIES_EEVEE,
+ SPECIES_GEODUDE,
+ SPECIES_SPINARAK,
+ SPECIES_PILOSWINE,
+ SPECIES_ONIX,
+ SPECIES_ARCANINE,
+ SPECIES_SUDOWOODO,
+ SPECIES_WEEPINBELL,
+ SPECIES_VICTREEBEL,
+ SPECIES_WOOPER,
+ SPECIES_SWINUB,
+ SPECIES_SKARMORY,
+ SPECIES_AIPOM,
+ SPECIES_ESPEON,
+ SPECIES_HITMONCHAN,
+ SPECIES_ELEKID,
+ SPECIES_ELECTABUZZ,
+ SPECIES_ENTEI,
+ SPECIES_FERALIGATR,
+ SPECIES_FURRET,
+ SPECIES_OCTILLERY,
+ SPECIES_PRIMEAPE,
+ SPECIES_SENTRET,
+ SPECIES_STANTLER,
+ SPECIES_SPEAROW,
+ SPECIES_FEAROW,
+ SPECIES_OMASTAR,
+ SPECIES_OMANYTE,
+ SPECIES_GROWLITHE,
+ SPECIES_MACHAMP,
+ SPECIES_DRAGONITE,
+ SPECIES_PINSIR,
+ SPECIES_SNORLAX,
+ SPECIES_KABUTO,
+ SPECIES_KABUTOPS,
+ SPECIES_HITMONTOP,
+ SPECIES_WARTORTLE,
+ SPECIES_BLASTOISE,
+ SPECIES_FARFETCHD,
+ SPECIES_CUBONE,
+ SPECIES_MAROWAK,
+ SPECIES_KANGASKHAN,
+ SPECIES_SUNFLORA,
+ SPECIES_CATERPIE,
+ SPECIES_GYARADOS,
+ SPECIES_RAPIDASH,
+ SPECIES_NINETALES,
+ SPECIES_GIRAFARIG,
+ SPECIES_BELLOSSOM,
+ SPECIES_KINGDRA,
+ SPECIES_KINGLER,
+ SPECIES_GLOOM,
+ SPECIES_PINECO,
+ SPECIES_GLIGAR,
+ SPECIES_KRABBY,
+ SPECIES_GRANBULL,
+ SPECIES_CROBAT,
+ SPECIES_ABRA,
+ SPECIES_GENGAR,
+ SPECIES_TAUROS,
+ SPECIES_MAGIKARP,
+ SPECIES_MAGNEMITE,
+ SPECIES_GASTLY,
+ SPECIES_HAUNTER,
+ SPECIES_MACHOKE,
+ SPECIES_KAKUNA,
+ SPECIES_PSYDUCK,
+ SPECIES_PHANPY,
+ SPECIES_RATTATA,
+ SPECIES_GOLDUCK,
+ SPECIES_GOLBAT,
+ SPECIES_GOLEM,
+ SPECIES_GRAVELER,
+ SPECIES_VENONAT,
+ SPECIES_RHYDON,
+ SPECIES_RHYHORN,
+ SPECIES_PUPITAR,
+ SPECIES_CORSOLA,
+ SPECIES_HITMONLEE,
+ SPECIES_ZAPDOS,
+ SPECIES_JOLTEON,
+ SPECIES_SANDSHREW,
+ SPECIES_SANDSLASH,
+ SPECIES_SEADRA,
+ SPECIES_SHELLDER,
+ SPECIES_VAPOREON,
+ SPECIES_DEWGONG,
+ SPECIES_SUICUNE,
+ SPECIES_STARMIE,
+ SPECIES_SCYTHER,
+ SPECIES_ZUBAT,
+ SPECIES_BEEDRILL,
+ SPECIES_HYPNO,
+ SPECIES_DROWZEE,
+ SPECIES_SQUIRTLE,
+ SPECIES_CELEBI,
+ SPECIES_WOBBUFFET,
+ SPECIES_DUGTRIO,
+ SPECIES_HORSEA,
+ SPECIES_EXEGGCUTE,
+ SPECIES_CHIKORITA,
+ SPECIES_CHINCHOU,
+ SPECIES_SHUCKLE,
+ SPECIES_DIGLETT,
+ SPECIES_REMORAID,
+ SPECIES_DELIBIRD,
+ SPECIES_HOUNDOUR,
+ SPECIES_AMPHAROS,
+ SPECIES_DODUO,
+ SPECIES_DODRIO,
+ SPECIES_SMEARGLE,
+ SPECIES_KOFFING,
+ SPECIES_TENTACRUEL,
+ SPECIES_TOGETIC,
+ SPECIES_TOGEPI,
+ SPECIES_GOLDEEN,
+ SPECIES_METAPOD,
+ SPECIES_DONPHAN,
+ SPECIES_ODDISH,
+ SPECIES_EXEGGUTOR,
+ SPECIES_NIDOKING,
+ SPECIES_NIDOQUEEN,
+ SPECIES_NIDORAN_F,
+ SPECIES_NIDORAN_M,
+ SPECIES_NIDORINA,
+ SPECIES_NIDORINO,
+ SPECIES_MEOWTH,
+ SPECIES_SNEASEL,
+ SPECIES_POLIWHIRL,
+ SPECIES_POLITOED,
+ SPECIES_POLIWRATH,
+ SPECIES_POLIWAG,
+ SPECIES_QUAGSIRE,
+ SPECIES_NATU,
+ SPECIES_XATU,
+ SPECIES_DUNSPARCE,
+ SPECIES_SEEL,
+ SPECIES_STEELIX,
+ SPECIES_TYPHLOSION,
+ SPECIES_DRAGONAIR,
+ SPECIES_BUTTERFREE,
+ SPECIES_SCIZOR,
+ SPECIES_HOPPIP,
+ SPECIES_BLISSEY,
+ SPECIES_PARAS,
+ SPECIES_PARASECT,
+ SPECIES_QWILFISH,
+ SPECIES_MR_MIME,
+ SPECIES_TYROGUE,
+ SPECIES_CLOYSTER,
+ SPECIES_TYRANITAR,
+ SPECIES_CLEFFA,
+ SPECIES_WEEDLE,
+ SPECIES_PIKACHU,
+ SPECIES_CLEFABLE,
+ SPECIES_PIDGEOT,
+ SPECIES_PIDGEOTTO,
+ SPECIES_PICHU,
+ SPECIES_CLEFAIRY,
+ SPECIES_CHARMANDER,
+ SPECIES_STARYU,
+ SPECIES_CYNDAQUIL,
+ SPECIES_SUNKERN,
+ SPECIES_TEDDIURSA,
+ SPECIES_VOLTORB,
+ SPECIES_MOLTRES,
+ SPECIES_FLAREON,
+ SPECIES_ALAKAZAM,
+ SPECIES_MAGMAR,
+ SPECIES_FORRETRESS,
+ SPECIES_WIGGLYTUFF,
+ SPECIES_IVYSAUR,
+ SPECIES_BULBASAUR,
+ SPECIES_VENUSAUR,
+ SPECIES_AERODACTYL,
+ SPECIES_MAGBY,
+ SPECIES_IGGLYBUFF,
+ SPECIES_UMBREON,
+ SPECIES_ARTICUNO,
+ SPECIES_JIGGLYPUFF,
+ SPECIES_SNUBBULL,
+ SPECIES_BAYLEEF,
+ SPECIES_GRIMER,
+ SPECIES_MUK,
+ SPECIES_HERACROSS,
+ SPECIES_HOUNDOOM,
+ SPECIES_PERSIAN,
+ SPECIES_LICKITUNG,
+ SPECIES_HO_OH,
+ SPECIES_HOOTHOOT,
+ SPECIES_PIDGEY,
+ SPECIES_PONYTA,
+ SPECIES_SKIPLOOM,
+ SPECIES_PORYGON,
+ SPECIES_PORYGON2,
+ SPECIES_MAGCARGO,
+ SPECIES_SLUGMA,
+ SPECIES_QUILAVA,
+ SPECIES_BELLSPROUT,
+ SPECIES_WEEZING,
+ SPECIES_MARILL,
+ SPECIES_AZUMARILL,
+ SPECIES_ELECTRODE,
+ SPECIES_MANKEY,
+ SPECIES_MANTINE,
+ SPECIES_DRATINI,
+ SPECIES_MEW,
+ SPECIES_MEWTWO,
+ SPECIES_MILTANK,
+ SPECIES_MISDREAVUS,
+ SPECIES_SMOOCHUM,
+ SPECIES_MEGANIUM,
+ SPECIES_DITTO,
+ SPECIES_TENTACOOL,
+ SPECIES_MAREEP,
+ SPECIES_FLAAFFY,
+ SPECIES_VENOMOTH,
+ SPECIES_TANGELA,
+ SPECIES_SLOWKING,
+ SPECIES_SLOWBRO,
+ SPECIES_SLOWPOKE,
+ SPECIES_MURKROW,
+ SPECIES_YANMA,
+ SPECIES_KADABRA,
+ SPECIES_LARVITAR,
+ SPECIES_NOCTOWL,
+ SPECIES_RAIKOU,
+ SPECIES_RAICHU,
+ SPECIES_CHANSEY,
+ SPECIES_RATICATE,
+ SPECIES_LAPRAS,
+ SPECIES_VILEPLUME,
+ SPECIES_LANTURN,
+ SPECIES_CHARMELEON,
+ SPECIES_CHARIZARD,
+ SPECIES_URSARING,
+ SPECIES_JYNX,
+ SPECIES_LUGIA,
+ SPECIES_MAGNETON,
+ SPECIES_LEDIAN,
+ SPECIES_LEDYBA,
+ SPECIES_VULPIX,
+ SPECIES_JUMPLUFF,
+ SPECIES_TOTODILE,
+ SPECIES_MACHOP,
+};
+
+#endif // DATA_TEXT_EASY_CHAT_GROUPS_POKEMON_2_WORDS
diff --git a/src/data/text/easy_chat/groups/speech/order.h b/src/data/text/easy_chat/groups/speech/order.h
new file mode 100644
index 000000000..109a21d6a
--- /dev/null
+++ b/src/data/text/easy_chat/groups/speech/order.h
@@ -0,0 +1,132 @@
+#ifndef DATA_TEXT_EASY_CHAT_GROUPS_SPEECH_ORDER
+#define DATA_TEXT_EASY_CHAT_GROUPS_SPEECH_ORDER
+
+#if ENGLISH
+u16 gEasyChatGroupOrder_Speech[] = {
+ 19,
+ 18,
+ 27,
+ 20,
+ 41,
+ 40,
+ 21,
+ 57,
+ 23,
+ 49,
+ 43,
+ 52,
+ 10,
+ 12,
+ 17,
+ 31,
+ 59,
+ 9,
+ 56,
+ 34,
+ 8,
+ 16,
+ 15,
+ 11,
+ 25,
+ 58,
+ 36,
+ 30,
+ 4,
+ 3,
+ 0,
+ 2,
+ 14,
+ 53,
+ 50,
+ 54,
+ 32,
+ 33,
+ 6,
+ 1,
+ 22,
+ 42,
+ 24,
+ 7,
+ 51,
+ 37,
+ 44,
+ 5,
+ 46,
+ 39,
+ 38,
+ 29,
+ 13,
+ 55,
+ 47,
+ 45,
+ 35,
+ 48,
+ 26,
+ 28,
+};
+#elif GERMAN
+u16 gEasyChatGroupOrder_Speech[] = {
+ 10,
+ 49,
+ 41,
+ 37,
+ 48,
+ 6,
+ 30,
+ 14,
+ 53,
+ 13,
+ 20,
+ 51,
+ 44,
+ 19,
+ 5,
+ 56,
+ 46,
+ 23,
+ 38,
+ 24,
+ 12,
+ 59,
+ 9,
+ 34,
+ 52,
+ 4,
+ 2,
+ 15,
+ 57,
+ 39,
+ 11,
+ 50,
+ 3,
+ 54,
+ 32,
+ 1,
+ 47,
+ 29,
+ 22,
+ 40,
+ 42,
+ 17,
+ 36,
+ 26,
+ 43,
+ 58,
+ 16,
+ 31,
+ 21,
+ 35,
+ 33,
+ 18,
+ 8,
+ 45,
+ 27,
+ 25,
+ 28,
+ 7,
+ 55,
+ 0,
+};
+#endif // GAME_LANGUAGE
+
+#endif // DATA_TEXT_EASY_CHAT_GROUPS_SPEECH_ORDER
diff --git a/src/data/text/easy_chat/groups/speech/words.h b/src/data/text/easy_chat/groups/speech/words.h
new file mode 100644
index 000000000..27cc7bf4d
--- /dev/null
+++ b/src/data/text/easy_chat/groups/speech/words.h
@@ -0,0 +1,130 @@
+#ifndef DATA_TEXT_EASY_CHAT_GROUPS_SPEECH_WORDS
+#define DATA_TEXT_EASY_CHAT_GROUPS_SPEECH_WORDS
+#if ENGLISH
+u8 gEasyChatGroupWords_Speech[] = _(
+ "LISTEN$"
+ "NOT VERY$"
+ "MEAN$"
+ "LIE$"
+ "LAY$"
+ "RECOMMEND$"
+ "NITWIT$"
+ "QUITE$"
+ "FROM$"
+ "FEELING$"
+ "BUT$"
+ "HOWEVER$"
+ "CASE$"
+ "THE$"
+ "MISS$"
+ "HOW$"
+ "HIT$"
+ "ENOUGH$"
+ "A LOT$"
+ "A LITTLE$"
+ "ABSOLUTELY$"
+ "AND$"
+ "ONLY$"
+ "AROUND$"
+ "PROBABLY$"
+ "IF$"
+ "VERY$"
+ "A TINY BIT$"
+ "WILD$"
+ "THAT’S$"
+ "JUST$"
+ "EVEN SO,$"
+ "MUST BE$"
+ "NATURALLY$"
+ "FOR NOW,$"
+ "UNDERSTOOD$"
+ "JOKING$"
+ "READY$"
+ "SOMETHING$"
+ "SOMEHOW$"
+ "ALTHOUGH$"
+ "ALSO$"
+ "PERFECT$"
+ "AS MUCH AS$"
+ "REALLY$"
+ "TRULY$"
+ "SERIOUSLY$"
+ "TOTALLY$"
+ "UNTIL$"
+ "AS IF$"
+ "MOOD$"
+ "RATHER$"
+ "AWFULLY$"
+ "MODE$"
+ "MORE$"
+ "TOO LATE$"
+ "FINALLY$"
+ "ANY$"
+ "INSTEAD$"
+ "FANTASTIC$"
+ );
+#elif GERMAN
+u8 gEasyChatGroupWords_Speech[] = _(
+ "ZUHÖREN$"
+ "NICHT SEHR$"
+ "GEMEIN$"
+ "LÜGEN$"
+ "GELOGEN$"
+ "EMPFOHLEN$"
+ "BLÖDKOPF$"
+ "WIRKLICH$"
+ "VON$"
+ "FÜHLEN$"
+ "ABER$"
+ "JEDOCH$"
+ "FALL$"
+ "DER$"
+ "DANEBEN$"
+ "GENAU WIE$"
+ "TREFFER$"
+ "REICHT AUS$"
+ "VIEL$"
+ "EIN BISSCHEN$"
+ "DIE$"
+ "UND$"
+ "NUR$"
+ "ETWA$"
+ "EVENTUELL$"
+ "WENN$"
+ "SEHR$"
+ "WENIG$"
+ "WILD$"
+ "NOCH MAL$"
+ "BLOSS$"
+ "TROTZDEM$"
+ "MUSS$"
+ "VERSTÄNDLICH$"
+ "FÜR NUN$"
+ "VERSTANDEN$"
+ "SCHERZEN$"
+ "BEREIT$"
+ "ETWAS$"
+ "IRGENDWIE$"
+ "OBWOHL$"
+ "ALSO$"
+ "PERFEKT$"
+ "SO VIEL WIE$"
+ "EHRLICH$"
+ "WAHRHAFTIG$"
+ "ERNST$"
+ "NOCH$"
+ "BIS$"
+ "ALS OB$"
+ "LAUNE$"
+ "EHER$"
+ "FURCHTBAR$"
+ "DENKE$"
+ "MEHR$"
+ "ZU SPÄT$"
+ "ENDLICH$"
+ "IRGENDEIN$"
+ "STATT$"
+ "FANTASTISCH$"
+ );
+#endif // GAME_LANGUAGE
+#endif // DATA_TEXT_EASY_CHAT_GROUPS_SPEECH_WORDS
diff --git a/src/data/text/easy_chat/groups/status/order.h b/src/data/text/easy_chat/groups/status/order.h
new file mode 100644
index 000000000..7bb290af6
--- /dev/null
+++ b/src/data/text/easy_chat/groups/status/order.h
@@ -0,0 +1,230 @@
+#ifndef DATA_TEXT_EASY_CHAT_GROUPS_STATUS_ORDER
+#define DATA_TEXT_EASY_CHAT_GROUPS_STATUS_ORDER
+
+#if ENGLISH
+u16 gEasyChatGroupOrder_Status[] = {
+ 13,
+ 9,
+ 5,
+ 23,
+ 11,
+ 12,
+ 101,
+ 97,
+ 106,
+ 29,
+ 68,
+ 8,
+ 86,
+ 78,
+ 21,
+ 22,
+ 24,
+ 99,
+ 25,
+ 37,
+ 0,
+ 62,
+ 4,
+ 76,
+ 72,
+ 88,
+ 57,
+ 16,
+ 90,
+ 91,
+ 104,
+ 75,
+ 58,
+ 31,
+ 28,
+ 38,
+ 33,
+ 54,
+ 73,
+ 15,
+ 32,
+ 71,
+ 100,
+ 48,
+ 81,
+ 6,
+ 47,
+ 82,
+ 77,
+ 39,
+ 85,
+ 94,
+ 40,
+ 79,
+ 92,
+ 36,
+ 69,
+ 64,
+ 43,
+ 93,
+ 103,
+ 102,
+ 89,
+ 83,
+ 60,
+ 61,
+ 84,
+ 14,
+ 107,
+ 3,
+ 10,
+ 7,
+ 34,
+ 66,
+ 45,
+ 46,
+ 59,
+ 17,
+ 53,
+ 35,
+ 108,
+ 74,
+ 18,
+ 19,
+ 87,
+ 20,
+ 49,
+ 70,
+ 1,
+ 67,
+ 26,
+ 27,
+ 98,
+ 44,
+ 42,
+ 2,
+ 30,
+ 51,
+ 52,
+ 63,
+ 65,
+ 50,
+ 105,
+ 55,
+ 95,
+ 56,
+ 96,
+ 41,
+ 80,
+};
+#elif GERMAN
+u16 gEasyChatGroupOrder_Status[] = {
+ 47,
+ 33,
+ 9,
+ 66,
+ 25,
+ 24,
+ 96,
+ 5,
+ 6,
+ 77,
+ 38,
+ 99,
+ 106,
+ 21,
+ 22,
+ 64,
+ 62,
+ 1,
+ 76,
+ 59,
+ 32,
+ 57,
+ 71,
+ 84,
+ 53,
+ 78,
+ 63,
+ 8,
+ 86,
+ 37,
+ 90,
+ 104,
+ 91,
+ 39,
+ 75,
+ 72,
+ 31,
+ 10,
+ 60,
+ 61,
+ 101,
+ 56,
+ 98,
+ 100,
+ 36,
+ 81,
+ 97,
+ 16,
+ 23,
+ 13,
+ 85,
+ 18,
+ 19,
+ 48,
+ 54,
+ 87,
+ 94,
+ 40,
+ 107,
+ 92,
+ 102,
+ 105,
+ 103,
+ 29,
+ 4,
+ 69,
+ 43,
+ 79,
+ 35,
+ 28,
+ 83,
+ 89,
+ 58,
+ 14,
+ 108,
+ 41,
+ 34,
+ 3,
+ 26,
+ 46,
+ 45,
+ 27,
+ 74,
+ 15,
+ 65,
+ 11,
+ 12,
+ 82,
+ 2,
+ 88,
+ 70,
+ 51,
+ 52,
+ 49,
+ 7,
+ 30,
+ 42,
+ 93,
+ 20,
+ 50,
+ 73,
+ 0,
+ 55,
+ 95,
+ 44,
+ 17,
+ 67,
+ 68,
+ 80,
+};
+#endif // GAME_LANGUAGE
+
+#endif // DATA_TEXT_EASY_CHAT_GROUPS_STATUS_ORDER
diff --git a/src/data/text/easy_chat/groups/status/words.h b/src/data/text/easy_chat/groups/status/words.h
new file mode 100644
index 000000000..26b0b6a32
--- /dev/null
+++ b/src/data/text/easy_chat/groups/status/words.h
@@ -0,0 +1,228 @@
+#ifndef DATA_TEXT_EASY_CHAT_GROUPS_STATUS_WORDS
+#define DATA_TEXT_EASY_CHAT_GROUPS_STATUS_WORDS
+#if ENGLISH
+u8 gEasyChatGroupWords_Status[] = _(
+ "DARK$"
+ "STENCH$"
+ "THICK FAT$"
+ "RAIN DISH$"
+ "DRIZZLE$"
+ "ARENA TRAP$"
+ "INTIMIDATE$"
+ "ROCK HEAD$"
+ "COLOR$"
+ "ALT. COLOR$"
+ "ROCK$"
+ "BEAUTIFUL$"
+ "BEAUTY$"
+ "AIR LOCK$"
+ "PSYCHIC$"
+ "HYPER CUTTER$"
+ "FIGHTING$"
+ "SHADOW TAG$"
+ "SMART$"
+ "SMARTNESS$"
+ "SPEED BOOST$"
+ "COOL$"
+ "COOLNESS$"
+ "BATTLE ARMOR$"
+ "CUTE$"
+ "CUTENESS$"
+ "STURDY$"
+ "SUCTION CUPS$"
+ "GRASS$"
+ "CLEAR BODY$"
+ "TORRENT$"
+ "GHOST$"
+ "ICE$"
+ "GUTS$"
+ "ROUGH SKIN$"
+ "SHELL ARMOR$"
+ "NATURAL CURE$"
+ "DAMP$"
+ "GROUND$"
+ "LIMBER$"
+ "MAGNET PULL$"
+ "WHITE SMOKE$"
+ "SYNCHRONIZE$"
+ "OVERGROW$"
+ "SWIFT SWIM$"
+ "SAND STREAM$"
+ "SAND VEIL$"
+ "KEEN EYE$"
+ "INNERFOCUS$"
+ "STATIC$"
+ "TYPE$"
+ "TOUGH$"
+ "TOUGHNESS$"
+ "SHED SKIN$"
+ "HUGE POWER$"
+ "VOLT ABSORB$"
+ "WATER ABSORB$"
+ "ELECTRIC$"
+ "FORECAST$"
+ "SERENE GRACE$"
+ "POISON$"
+ "POISON POINT$"
+ "DRAGON$"
+ "TRACE$"
+ "OBLIVIOUS$"
+ "TRUANT$"
+ "RUN AWAY$"
+ "STICKY HOLD$"
+ "CLOUD NINE$"
+ "NORMAL$"
+ "STEEL$"
+ "ILLUMINATE$"
+ "EARLY BIRD$"
+ "HUSTLE$"
+ "SHINE$"
+ "FLYING$"
+ "DROUGHT$"
+ "LIGHTNINGROD$"
+ "COMPOUNDEYES$"
+ "MARVEL SCALE$"
+ "WONDER GUARD$"
+ "INSOMNIA$"
+ "LEVITATE$"
+ "PLUS$"
+ "PRESSURE$"
+ "LIQUID OOZE$"
+ "COLOR CHANGE$"
+ "SOUNDPROOF$"
+ "EFFECT SPORE$"
+ "{PK}RS$"
+ "FIRE$"
+ "FLAME BODY$"
+ "MINUS$"
+ "OWN TEMPO$"
+ "MAGMA ARMOR$"
+ "WATER$"
+ "WATER VEIL$"
+ "BUG$"
+ "SWARM$"
+ "CUTE CHARM$"
+ "IMMUNITY$"
+ "BLAZE$"
+ "PICKUP$"
+ "PATTERN$"
+ "FLASH FIRE$"
+ "VITAL SPIRIT$"
+ "CHLOROPHYLL$"
+ "PURE POWER$"
+ "SHIELD DUST$"
+ );
+#elif GERMAN
+u8 gEasyChatGroupWords_Status[] = _(
+ "UNLICHT$"
+ "DUFTNOTE$"
+ "SPECKSCHICHT$"
+ "REGENGENUSS$"
+ "NIESEL$"
+ "AUSWEGLOS$"
+ "BEDROHER$"
+ "STEINHAUPT$"
+ "FARBE$"
+ "ALT. FARBE$"
+ "GESTEIN$"
+ "SCHÖN$"
+ "SCHÖNHEIT$"
+ "KLIMASCHUTZ$"
+ "PSYCHO$"
+ "SCHERENMACHT$"
+ "KAMPF$"
+ "WEGSPERRE$"
+ "KLUG$"
+ "KLUGHEIT$"
+ "TEMPOSCHUB$"
+ "COOL$"
+ "COOLNESS$"
+ "KAMPFPANZER$"
+ "ANMUTIG$"
+ "ANMUT$"
+ "ROBUSTHEIT$"
+ "SAUGNAPF$"
+ "PFLANZE$"
+ "NEUTRALTORSO$"
+ "STURZBACH$"
+ "GEIST$"
+ "EIS$"
+ "ADRENALIN$"
+ "RAUHAUT$"
+ "PANZERHAUT$"
+ "INNERE KRAFT$"
+ "FEUCHTIGKEIT$"
+ "BODEN$"
+ "FLEXIBILITÄT$"
+ "MAGNETFALLE$"
+ "PULVERRAUCH$"
+ "SYNCHRO$"
+ "NOTDÜNGER$"
+ "WASSERTEMPO$"
+ "SANDSTURM$"
+ "SANDSCHLEIER$"
+ "ADLERAUGE$"
+ "KONZENTRATOR$"
+ "STATIK$"
+ "TYP$"
+ "STARK$"
+ "STÄRKE$"
+ "EXPIDERMIS$"
+ "KRAFTKOLOSS$"
+ "VOLTABSORBER$"
+ "H2O-ABSORBER$"
+ "ELEKTRO$"
+ "PROGNOSE$"
+ "EDELMUT$"
+ "GIFT$"
+ "GIFTDORN$"
+ "DRACHEN$"
+ "FÄHRTE$"
+ "DÖSIGKEIT$"
+ "SCHNARCHNASE$"
+ "ANGSTHASE$"
+ "WERTEHALTER$"
+ "WOLKE SIEBEN$"
+ "NORMAL$"
+ "STAHL$"
+ "ERLEUCHTUNG$"
+ "FRÜHWECKER$"
+ "ÜBEREIFER$"
+ "SCHEINEN$"
+ "FLIEGEN$"
+ "DÜRRE$"
+ "BLITZFÄNGER$"
+ "FACETTENAUGE$"
+ "NOTSCHUTZ$"
+ "WUNDERWACHE$"
+ "INSOMNIA$"
+ "SCHWEBE$"
+ "PLUS$"
+ "ERZWINGER$"
+ "KLOAKENSOSSE$"
+ "FARBWECHSEL$"
+ "LÄRMSCHUTZ$"
+ "SPORENWIRT$"
+ "POKéRUS$"
+ "FEUER$"
+ "FLAMMKÖRPER$"
+ "MINUS$"
+ "TEMPOMACHER$"
+ "MAGMAPANZER$"
+ "WASSER$"
+ "AQUAHÜLLE$"
+ "KÄFER$"
+ "HEXAPLAGA$"
+ "CHARMEBOLZEN$"
+ "IMMUNITÄT$"
+ "GROSSBRAND$"
+ "MITNAHME$"
+ "MUSTER$"
+ "FEUERFÄNGER$"
+ "MUNTERKEIT$"
+ "CHLOROPHYLL$"
+ "MENTALKRAFT$"
+ "PUDERABWEHR$"
+ );
+#endif // GAME_LANGUAGE
+#endif // DATA_TEXT_EASY_CHAT_GROUPS_STATUS_WORDS
diff --git a/src/data/text/easy_chat/groups/time/order.h b/src/data/text/easy_chat/groups/time/order.h
new file mode 100644
index 000000000..411619b94
--- /dev/null
+++ b/src/data/text/easy_chat/groups/time/order.h
@@ -0,0 +1,102 @@
+#ifndef DATA_TEXT_EASY_CHAT_GROUPS_TIME_ORDER
+#define DATA_TEXT_EASY_CHAT_GROUPS_TIME_ORDER
+
+#if ENGLISH
+u16 gEasyChatGroupOrder_Time[] = {
+ 29,
+ 39,
+ 6,
+ 18,
+ 33,
+ 7,
+ 37,
+ 4,
+ 9,
+ 35,
+ 17,
+ 10,
+ 0,
+ 27,
+ 20,
+ 8,
+ 14,
+ 3,
+ 16,
+ 15,
+ 24,
+ 1,
+ 40,
+ 28,
+ 43,
+ 42,
+ 26,
+ 38,
+ 30,
+ 5,
+ 22,
+ 34,
+ 23,
+ 25,
+ 31,
+ 32,
+ 41,
+ 19,
+ 13,
+ 2,
+ 11,
+ 21,
+ 44,
+ 36,
+ 12,
+};
+#elif GERMAN
+u16 gEasyChatGroupOrder_Time[] = {
+ 29,
+ 18,
+ 33,
+ 22,
+ 40,
+ 42,
+ 38,
+ 11,
+ 41,
+ 10,
+ 8,
+ 39,
+ 14,
+ 17,
+ 34,
+ 12,
+ 0,
+ 13,
+ 6,
+ 5,
+ 26,
+ 3,
+ 27,
+ 21,
+ 7,
+ 24,
+ 15,
+ 1,
+ 28,
+ 43,
+ 30,
+ 20,
+ 31,
+ 32,
+ 16,
+ 23,
+ 25,
+ 4,
+ 9,
+ 35,
+ 37,
+ 2,
+ 36,
+ 44,
+ 19,
+};
+#endif // GAME_LANGUAGE
+
+#endif // DATA_TEXT_EASY_CHAT_GROUPS_TIME_ORDER
diff --git a/src/data/text/easy_chat/groups/time/words.h b/src/data/text/easy_chat/groups/time/words.h
new file mode 100644
index 000000000..c163396f1
--- /dev/null
+++ b/src/data/text/easy_chat/groups/time/words.h
@@ -0,0 +1,100 @@
+#ifndef DATA_TEXT_EASY_CHAT_GROUPS_TIME_WORDS
+#define DATA_TEXT_EASY_CHAT_GROUPS_TIME_WORDS
+#if ENGLISH
+u8 gEasyChatGroupWords_Time[] = _(
+ "FALL$"
+ "MORNING$"
+ "TOMORROW$"
+ "LAST$"
+ "DAY$"
+ "SOMETIME$"
+ "ALWAYS$"
+ "CURRENT$"
+ "FOREVER$"
+ "DAYS$"
+ "END$"
+ "TUESDAY$"
+ "YESTERDAY$"
+ "TODAY$"
+ "FRIDAY$"
+ "MONDAY$"
+ "LATER$"
+ "EARLIER$"
+ "ANOTHER$"
+ "TIME$"
+ "FINISH$"
+ "WEDNESDAY$"
+ "SOON$"
+ "START$"
+ "MONTH$"
+ "STOP$"
+ "NOW$"
+ "FINAL$"
+ "NEXT$"
+ "AGE$"
+ "SATURDAY$"
+ "SUMMER$"
+ "SUNDAY$"
+ "BEGINNING$"
+ "SPRING$"
+ "DAYTIME$"
+ "WINTER$"
+ "DAILY$"
+ "OLDEN$"
+ "ALMOST$"
+ "NEARLY$"
+ "THURSDAY$"
+ "NIGHTTIME$"
+ "NIGHT$"
+ "WEEK$"
+ );
+#elif GERMAN
+u8 gEasyChatGroupWords_Time[] = _(
+ "HERBST$"
+ "MORGEN$"
+ "ÜBERMORGEN$"
+ "LETZTE(N)$"
+ "TAG$"
+ "IRGENDWANN$"
+ "IMMER$"
+ "MOMENTAN$"
+ "EWIG$"
+ "TAGE$"
+ "ENDE$"
+ "DIENSTAG$"
+ "GESTERN$"
+ "HEUTE$"
+ "FREITAG$"
+ "MONTAG$"
+ "SPÄTER$"
+ "FRÜHER$"
+ "AM ANDEREN$"
+ "ZEIT$"
+ "SCHLUSS$"
+ "MITTWOCH$"
+ "BALD$"
+ "START$"
+ "MONAT$"
+ "STOPP$"
+ "JETZT$"
+ "LETZTER$"
+ "NÄCHSTES$"
+ "ALTER$"
+ "SAMSTAG$"
+ "SOMMER$"
+ "SONNTAG$"
+ "ANFANG$"
+ "FRÜHLING$"
+ "TAGESZEIT$"
+ "WINTER$"
+ "TÄGLICH$"
+ "DAMALS$"
+ "FAST$"
+ "BEINAHE$"
+ "DONNERSTAG$"
+ "BETTZEIT$"
+ "NACHT$"
+ "WOCHE$"
+ );
+#endif // GAME_LANGUAGE
+#endif // DATA_TEXT_EASY_CHAT_GROUPS_TIME_WORDS
diff --git a/src/data/text/easy_chat/groups/trainer/order.h b/src/data/text/easy_chat/groups/trainer/order.h
new file mode 100644
index 000000000..299575192
--- /dev/null
+++ b/src/data/text/easy_chat/groups/trainer/order.h
@@ -0,0 +1,50 @@
+#ifndef DATA_TEXT_EASY_CHAT_GROUPS_TRAINER_ORDER
+#define DATA_TEXT_EASY_CHAT_GROUPS_TRAINER_ORDER
+
+#if ENGLISH
+u16 gEasyChatGroupOrder_Trainer[] = {
+ 7,
+ 8,
+ 5,
+ 4,
+ 15,
+ 1,
+ 0,
+ 18,
+ 9,
+ 6,
+ 16,
+ 14,
+ 13,
+ 17,
+ 3,
+ 10,
+ 2,
+ 11,
+ 12,
+};
+#elif GERMAN
+u16 gEasyChatGroupOrder_Trainer[] = {
+ 15,
+ 7,
+ 0,
+ 8,
+ 4,
+ 5,
+ 10,
+ 1,
+ 18,
+ 9,
+ 16,
+ 14,
+ 13,
+ 17,
+ 3,
+ 2,
+ 11,
+ 12,
+ 6,
+};
+#endif // GAME_LANGUAGE
+
+#endif // DATA_TEXT_EASY_CHAT_GROUPS_TRAINER_ORDER
diff --git a/src/data/text/easy_chat/groups/trainer/words.h b/src/data/text/easy_chat/groups/trainer/words.h
new file mode 100644
index 000000000..1be84f204
--- /dev/null
+++ b/src/data/text/easy_chat/groups/trainer/words.h
@@ -0,0 +1,48 @@
+#ifndef DATA_TEXT_EASY_CHAT_GROUPS_TRAINER_WORDS
+#define DATA_TEXT_EASY_CHAT_GROUPS_TRAINER_WORDS
+#if ENGLISH
+u8 gEasyChatGroupWords_Trainer[] = _(
+ "I CHOOSE YOU$"
+ "GOTCHA$"
+ "TRADE$"
+ "SAPPHIRE$"
+ "EVOLVE$"
+ "ENCYCLOPEDIA$"
+ "NATURE$"
+ "CENTER$"
+ "EGG$"
+ "LINK$"
+ "SP. ABILITY$"
+ "TRAINER$"
+ "VERSION$"
+ "POKéNAV$"
+ "POKéMON$"
+ "GET$"
+ "POKéDEX$"
+ "RUBY$"
+ "LEVEL$"
+ );
+#elif GERMAN
+u8 gEasyChatGroupWords_Trainer[] = _(
+ "DU BIST DRAN$"
+ "HAB DICH$"
+ "TAUSCH$"
+ "SAPHIR$"
+ "ENTWICKELN$"
+ "ENZYKLOPÄDIE$"
+ "WESEN$"
+ "CENTER$"
+ "EI$"
+ "LINK$"
+ "FÄHIGKEIT$"
+ "TRAINER$"
+ "VERSION$"
+ "POKéNAV$"
+ "POKéMON$"
+ "BEKOMMEN$"
+ "POKéDEX$"
+ "RUBIN$"
+ "LEVEL$"
+ );
+#endif // GAME_LANGUAGE
+#endif // DATA_TEXT_EASY_CHAT_GROUPS_TRAINER_WORDS
diff --git a/src/data/text/easy_chat/groups/trendy_saying/order.h b/src/data/text/easy_chat/groups/trendy_saying/order.h
new file mode 100644
index 000000000..8a1911f1d
--- /dev/null
+++ b/src/data/text/easy_chat/groups/trendy_saying/order.h
@@ -0,0 +1,78 @@
+#ifndef DATA_TEXT_EASY_CHAT_GROUPS_TRENDY_SAYING_ORDER
+#define DATA_TEXT_EASY_CHAT_GROUPS_TRENDY_SAYING_ORDER
+
+#if ENGLISH
+u16 gEasyChatGroupOrder_TrendySaying[] = {
+ 7,
+ 2,
+ 28,
+ 22,
+ 9,
+ 3,
+ 8,
+ 26,
+ 11,
+ 15,
+ 24,
+ 29,
+ 16,
+ 12,
+ 23,
+ 0,
+ 13,
+ 14,
+ 6,
+ 20,
+ 4,
+ 10,
+ 30,
+ 18,
+ 17,
+ 21,
+ 32,
+ 19,
+ 27,
+ 25,
+ 5,
+ 1,
+ 31,
+};
+#elif GERMAN
+u16 gEasyChatGroupOrder_TrendySaying[] = {
+ 32,
+ 24,
+ 2,
+ 1,
+ 28,
+ 17,
+ 19,
+ 11,
+ 27,
+ 15,
+ 7,
+ 16,
+ 29,
+ 4,
+ 5,
+ 31,
+ 8,
+ 26,
+ 25,
+ 23,
+ 13,
+ 6,
+ 20,
+ 9,
+ 30,
+ 10,
+ 18,
+ 21,
+ 12,
+ 22,
+ 0,
+ 3,
+ 14,
+};
+#endif // GAME_LANGUAGE
+
+#endif // DATA_TEXT_EASY_CHAT_GROUPS_TRENDY_SAYING_ORDER
diff --git a/src/data/text/easy_chat/groups/trendy_saying/words.h b/src/data/text/easy_chat/groups/trendy_saying/words.h
new file mode 100644
index 000000000..f114c6626
--- /dev/null
+++ b/src/data/text/easy_chat/groups/trendy_saying/words.h
@@ -0,0 +1,76 @@
+#ifndef DATA_TEXT_EASY_CHAT_GROUPS_TRENDY_SAYING_WORDS
+#define DATA_TEXT_EASY_CHAT_GROUPS_TRENDY_SAYING_WORDS
+#if ENGLISH
+u8 gEasyChatGroupWords_TrendySaying[] = _(
+ "KTHX, BYE.$"
+ "YES, SIR!$"
+ "AVANT GARDE$"
+ "COUPLE$"
+ "MUCH OBLIGED$"
+ "YEEHAW!$"
+ "MEGA$"
+ "1-HIT KO!$"
+ "DESTINY$"
+ "CANCEL$"
+ "NEW$"
+ "FLATTEN$"
+ "KIDDING$"
+ "LOSER$"
+ "LOSING$"
+ "HAPPENING$"
+ "HIP AND$"
+ "SHAKE$"
+ "SHADY$"
+ "UPBEAT$"
+ "MODERN$"
+ "SMELL YA$"
+ "BANG$"
+ "KNOCKOUT$"
+ "HASSLE$"
+ "WINNER$"
+ "FEVER$"
+ "WANNABE$"
+ "BABY$"
+ "HEART$"
+ "OLD$"
+ "YOUNG$"
+ "UGLY$"
+ );
+#elif GERMAN
+u8 gEasyChatGroupWords_TrendySaying[] = _(
+ "VOKUHILA$"
+ "AYE, AYE!$"
+ "AVANTGARDE$"
+ "YUPPIES$"
+ "IHR DIENER!$"
+ "JIIHAAH$"
+ "MEGA$"
+ "GUMMIPUNKT$"
+ "KARMA$"
+ "NDW$"
+ "POPPER$"
+ "ERDBEERTEE$"
+ "SCHOFEL$"
+ "LOSER$"
+ "ZOFF$"
+ "GIMMICK$"
+ "HIP UND$"
+ "BANANENSHAKE$"
+ "ROCK’N’ROLL$"
+ "DUFTE$"
+ "MODERN$"
+ "RÜBENNASE$"
+ "STULPEN$"
+ "LICHT AUS...$"
+ "AUFSTAND$"
+ "LEUCHTKEKS$"
+ "KÖRPERHITZE$"
+ "GERNEGROSS$"
+ "BABY$"
+ "HOLDE$"
+ "OLL$"
+ "JUNG$"
+ "ÄTZEND$"
+ );
+#endif // GAME_LANGUAGE
+#endif // DATA_TEXT_EASY_CHAT_GROUPS_TRENDY_SAYING_WORDS
diff --git a/src/data/text/easy_chat/groups/voices/order.h b/src/data/text/easy_chat/groups/voices/order.h
new file mode 100644
index 000000000..bf361ccca
--- /dev/null
+++ b/src/data/text/easy_chat/groups/voices/order.h
@@ -0,0 +1,138 @@
+#ifndef DATA_TEXT_EASY_CHAT_GROUPS_VOICES_ORDER
+#define DATA_TEXT_EASY_CHAT_GROUPS_VOICES_ORDER
+
+#if ENGLISH
+u16 gEasyChatGroupOrder_Voices[] = {
+ 0,
+ 1,
+ 7,
+ 8,
+ 4,
+ 5,
+ 6,
+ 3,
+ 2,
+ 23,
+ 11,
+ 41,
+ 52,
+ 59,
+ 22,
+ 25,
+ 32,
+ 24,
+ 26,
+ 43,
+ 19,
+ 33,
+ 61,
+ 34,
+ 38,
+ 40,
+ 48,
+ 37,
+ 47,
+ 42,
+ 15,
+ 49,
+ 46,
+ 57,
+ 44,
+ 54,
+ 53,
+ 13,
+ 29,
+ 51,
+ 28,
+ 55,
+ 12,
+ 27,
+ 56,
+ 30,
+ 31,
+ 20,
+ 45,
+ 36,
+ 50,
+ 9,
+ 21,
+ 14,
+ 10,
+ 62,
+ 35,
+ 16,
+ 18,
+ 60,
+ 17,
+ 58,
+ 39,
+};
+#elif GERMAN
+u16 gEasyChatGroupOrder_Voices[] = {
+ 0,
+ 1,
+ 7,
+ 8,
+ 4,
+ 5,
+ 6,
+ 3,
+ 2,
+ 52,
+ 11,
+ 41,
+ 14,
+ 35,
+ 44,
+ 56,
+ 43,
+ 31,
+ 33,
+ 61,
+ 34,
+ 38,
+ 24,
+ 37,
+ 40,
+ 26,
+ 48,
+ 47,
+ 53,
+ 42,
+ 15,
+ 46,
+ 49,
+ 30,
+ 32,
+ 58,
+ 39,
+ 60,
+ 19,
+ 57,
+ 51,
+ 54,
+ 13,
+ 29,
+ 9,
+ 28,
+ 12,
+ 27,
+ 55,
+ 16,
+ 45,
+ 23,
+ 25,
+ 22,
+ 20,
+ 36,
+ 59,
+ 50,
+ 21,
+ 10,
+ 62,
+ 17,
+ 18,
+};
+#endif // GAME_LANGUAGE
+
+#endif // DATA_TEXT_EASY_CHAT_GROUPS_VOICES_ORDER
diff --git a/src/data/text/easy_chat/groups/voices/words.h b/src/data/text/easy_chat/groups/voices/words.h
new file mode 100644
index 000000000..12c0036a3
--- /dev/null
+++ b/src/data/text/easy_chat/groups/voices/words.h
@@ -0,0 +1,136 @@
+#ifndef DATA_TEXT_EASY_CHAT_GROUPS_VOICES_WORDS
+#define DATA_TEXT_EASY_CHAT_GROUPS_VOICES_WORDS
+#if ENGLISH
+u8 gEasyChatGroupWords_Voices[] = _(
+ "!$"
+ "!!$"
+ "?!$"
+ "?$"
+ "…$"
+ "…!$"
+ "………$"
+ "-$"
+ "- - -$"
+ "UH-OH$"
+ "WAAAH$"
+ "AHAHA$"
+ "OH?$"
+ "NOPE$"
+ "URGH$"
+ "HMM$"
+ "WHOAH$"
+ "WROOOAAR!$"
+ "WOW$"
+ "GIGGLE$"
+ "SIGH$"
+ "UNBELIEVABLE$"
+ "CRIES$"
+ "AGREE$"
+ "EH?$"
+ "CRY$"
+ "EHEHE$"
+ "OI, OI, OI$"
+ "OH, YEAH$"
+ "OH$"
+ "OOPS$"
+ "SHOCKED$"
+ "EEK$"
+ "GRAAAH$"
+ "GWAHAHAHA$"
+ "WAY$"
+ "TCH$"
+ "HEHE$"
+ "HAH$"
+ "YUP$"
+ "HAHAHA$"
+ "AIYEEH$"
+ "HIYAH$"
+ "FUFUFU$"
+ "LOL$"
+ "SNORT$"
+ "HUMPH$"
+ "HEHEHE$"
+ "HEH$"
+ "HOHOHO$"
+ "UH-HUH$"
+ "OH, DEAR$"
+ "ARRGH$"
+ "MUFUFU$"
+ "MMM$"
+ "OH-KAY$"
+ "OKAY$"
+ "LALALA$"
+ "YAY$"
+ "AWW$"
+ "WOWEE$"
+ "GWAH$"
+ "WAHAHAHA$"
+ );
+#elif GERMAN
+u8 gEasyChatGroupWords_Voices[] = _(
+ "!$"
+ "!!!$"
+ "?!$"
+ "?$"
+ "…$"
+ "…!$"
+ "………$"
+ "-$"
+ "- - -$"
+ "OH OH$"
+ "WAAAH$"
+ "AHAHAHA$"
+ "OH?$"
+ "NÖ$"
+ "ARGH$"
+ "HMM$"
+ "OOOH$"
+ "WOOOAR$"
+ "WOW$"
+ "KICHER$"
+ "SEUFZ$"
+ "UNGLAUBLICH$"
+ "SCHREIT$"
+ "RICHTIG!$"
+ "HÄH?$"
+ "SCHREI$"
+ "HÄHÄHÄ$"
+ "OJE OJE$"
+ "OH, YEAH$"
+ "OH$"
+ "HUPS$"
+ "GESCHOCKT$"
+ "IGITT$"
+ "GRAAAH$"
+ "GWAHAHAHA$"
+ "ART$"
+ "TSE$"
+ "HÄHÄ$"
+ "HAH$"
+ "JAJAJA$"
+ "HAHAHA$"
+ "AIYEEH$"
+ "HIYAH$"
+ "FÖFÖFÖ$"
+ "BRÜLL LACH$"
+ "PRUST$"
+ "HMPF$"
+ "HEHEHE$"
+ "HEH$"
+ "HOHOHO$"
+ "UI UI$"
+ "MEINE GÜTE$"
+ "AARRGH$"
+ "HIHIHI$"
+ "MMMH$"
+ "OKAY$"
+ "DURCHSCHNITT$"
+ "LALALA$"
+ "JAHA$"
+ "UFF$"
+ "JUCHEE$"
+ "GRRR$"
+ "WAHAHAHA$"
+ );
+#endif // GAME_LANGUAGE
+#endif // DATA_TEXT_EASY_CHAT_GROUPS_VOICES_WORDS
diff --git a/src/data/text/easy_chat/words_by_letter.h b/src/data/text/easy_chat/words_by_letter.h
new file mode 100644
index 000000000..dd783f228
--- /dev/null
+++ b/src/data/text/easy_chat/words_by_letter.h
@@ -0,0 +1,8 @@
+#ifndef DATA_TEXT_EASY_CHAT_WORDS_BY_LETTER
+#define DATA_TEXT_EASY_CHAT_WORDS_BY_LETTER
+#if ENGLISH
+#include "words_by_letter_en.h"
+#elif GERMAN
+#include "words_by_letter_de.h"
+#endif
+#endif // DATA_TEXT_EASY_CHAT_WORDS_BY_LETTER
diff --git a/src/data/text/easy_chat/words_by_letter_de.h b/src/data/text/easy_chat/words_by_letter_de.h
new file mode 100644
index 000000000..42d36cfd8
--- /dev/null
+++ b/src/data/text/easy_chat/words_by_letter_de.h
@@ -0,0 +1,2046 @@
+#ifndef DATA_TEXT_EASY_CHAT_WORDS_BY_LETTER_DE
+#define DATA_TEXT_EASY_CHAT_WORDS_BY_LETTER_DE
+
+#define EC_DUPLICATES(count) (0xFF00 + (count))
+#include "constants/species.h"
+
+u16 gEasyChatWordsAlphabetized[] = {
+};
+
+#define EC_WBL_OFFSET_Others 0
+
+u16 gEasyChatWordsByLetter_Others[] = {
+ EC_WORD_EXCL,
+ EC_WORD_EXCL_EXCL,
+ EC_WORD_DASH,
+ EC_WORD_DASH_DASH_DASH,
+ EC_WORD_ELLIPSIS,
+ EC_WORD_ELLIPSIS_EXCL,
+ EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS,
+ EC_WORD_QUES,
+ EC_WORD_QUES_EXCL,
+};
+
+#define EC_WBL_OFFSET_A ARRAY_COUNT(gEasyChatWordsByLetter_Others) + EC_WBL_OFFSET_Others
+
+u16 gEasyChatWordsByLetter_A[] = {
+ EC_POKEMON(HUNTAIL),
+ EC_WORD_ARRGH,
+ EC_WORD_ADVENTURE,
+ EC_WORD_BUT,
+ EC_MOVE2(DESTINY_BOND),
+ EC_MOVE2(PERISH_SONG),
+ EC_WORD_REJECT,
+ EC_WORD_DISLIKES,
+ EC_DUPLICATES(2),
+ EC_POKEMON(ABRA),
+ EC_POKEMON2(ABRA),
+ EC_MOVE2(KNOCK_OFF),
+ EC_POKEMON(ABSOL),
+ EC_MOVE(ABSORB),
+ EC_WORD_PREPOSTEROUS,
+ EC_WORD_ABSENT,
+ EC_WORD_COME_OVER,
+ EC_WORD_KEEN_EYE,
+ EC_WORD_GUTS,
+ EC_MOVE2(AERIAL_ACE),
+ EC_POKEMON2(AERODACTYL),
+ EC_MOVE(AGILITY),
+ EC_WORD_UM,
+ EC_WORD_AHAHA,
+ EC_WORD_LIKE,
+ EC_WORD_AIYEEH,
+ EC_WORD_ACCEPT,
+ EC_WORD_ALL,
+ EC_WORD_ALONE,
+ EC_WORD_EVERY,
+ EC_POKEMON2(HAUNTER),
+ EC_WORD_THAN,
+ EC_WORD_AS_IF,
+ EC_WORD_ALSO,
+ EC_WORD_ALT_COLOR,
+ EC_POKEMON(ALTARIA),
+ EC_WORD_AGE,
+ EC_WORD_ANOTHER,
+ EC_MOVE2(AMNESIA),
+ EC_POKEMON2(OMANYTE),
+ EC_POKEMON2(OMASTAR),
+ EC_MOVE(SIGNAL_BEAM),
+ EC_POKEMON2(AMPHAROS),
+ EC_WORD_AMUSING,
+ EC_WORD_ON,
+ EC_WORD_OTHER,
+ EC_WORD_ELSE,
+ EC_WORD_BEGINNING,
+ EC_WORD_BRAG,
+ EC_MOVE(SWAGGER),
+ EC_WORD_FISHING,
+ EC_WORD_ATTACK,
+ EC_WORD_WIMPY,
+ EC_WORD_RUN_AWAY,
+ EC_WORD_ANIME,
+ EC_WORD_CUTENESS,
+ EC_WORD_CUTE,
+ EC_POKEMON(ANORITH),
+ EC_MOVE(ANCIENT_POWER),
+ EC_MOVE2(ATTRACT),
+ EC_WORD_WATER_VEIL,
+ EC_MOVE2(WATER_GUN),
+ EC_POKEMON2(VAPOREON),
+ EC_MOVE2(WATER_PULSE),
+ EC_WORD_WORK,
+ EC_WORD_WORKING,
+ EC_POKEMON2(ARBOK),
+ EC_WORD_ANGERS,
+ EC_WORD_URGH,
+ EC_POKEMON2(ARIADOS),
+ EC_POKEMON2(ARCANINE),
+ EC_POKEMON2(ARTICUNO),
+ EC_POKEMON(ARMALDO),
+ EC_MOVE2(ARM_THRUST),
+ EC_MOVE(AROMATHERAPY),
+ EC_WORD_WAY,
+ EC_WORD_MOVE,
+ EC_WORD_UGLY,
+ EC_WORD_OI,
+ EC_WORD_TOO,
+ EC_WORD_OUT,
+ EC_MOVE2(RECYCLE),
+ EC_WORD_GIVE_UP,
+ EC_MOVE(UPROAR),
+ EC_WORD_HASSLE,
+ EC_WORD_WAKE_UP,
+ EC_MOVE(AURORA_BEAM),
+ EC_WORD_OFF,
+ EC_MOVE(ENDURE),
+ EC_WORD_APPEAL,
+ EC_WORD_LOOK,
+ EC_WORD_OUTSIDE,
+ EC_MOVE(DISABLE),
+ EC_POKEMON2(CLOYSTER),
+ EC_WORD_ARENA_TRAP,
+ EC_WORD_AVANT_GARDE,
+ EC_WORD_YES_SIR_EXCL,
+ EC_DUPLICATES(2),
+ EC_POKEMON(AZUMARILL),
+ EC_POKEMON2(AZUMARILL),
+ EC_POKEMON(AZURILL),
+};
+
+#define EC_WBL_OFFSET_B ARRAY_COUNT(gEasyChatWordsByLetter_A) + EC_WBL_OFFSET_A
+
+u16 gEasyChatWordsByLetter_B[] = {
+ EC_WORD_BABY,
+ EC_WORD_STAY_AT_HOME,
+ EC_WORD_BATH,
+ EC_WORD_SOON,
+ EC_POKEMON2(QWILFISH),
+ EC_WORD_BALL,
+ EC_WORD_SHAKE,
+ EC_WORD_RIBBON,
+ EC_POKEMON(BANETTE),
+ EC_MOVE2(BARRIER),
+ EC_POKEMON(FEEBAS),
+ EC_MOVE2(BELLY_DRUM),
+ EC_MOVE2(COTTON_SPORE),
+ EC_WORD_INTIMIDATE,
+ EC_WORD_BERRY,
+ EC_WORD_EXCITE,
+ EC_MOVE2(IMPRISON),
+ EC_WORD_AT,
+ EC_WORD_NEARLY,
+ EC_WORD_GET,
+ EC_WORD_GETS,
+ EC_WORD_RESUSCITATE,
+ EC_WORD_READY,
+ EC_WORD_BUSY,
+ EC_WORD_VIEWING,
+ EC_WORD_FAINT,
+ EC_WORD_DEFEATED,
+ EC_WORD_OWN,
+ EC_WORD_BETTER,
+ EC_WORD_BEST,
+ EC_WORD_NIGHTTIME,
+ EC_MOVE2(COVET),
+ EC_POKEMON2(BEEDRILL),
+ EC_WORD_UNTIL,
+ EC_WORD_MEET_YOU,
+ EC_WORD_SEE_YA,
+ EC_POKEMON2(VENUSAUR),
+ EC_POKEMON2(IVYSAUR),
+ EC_POKEMON2(BULBASAUR),
+ EC_MOVE(BITE),
+ EC_WORD_ARE,
+ EC_WORD_PLEASE,
+ EC_MOVE2(SWEET_KISS),
+ EC_POKEMON(NUZLEAF),
+ EC_MOVE2(PETAL_DANCE),
+ EC_MOVE2(FLASH),
+ EC_POKEMON2(JOLTEON),
+ EC_WORD_LIGHTNINGROD,
+ EC_MOVE2(ZAP_CANNON),
+ EC_MOVE2(BLIZZARD),
+ EC_WORD_NITWIT,
+ EC_WORD_JUST,
+ EC_MOVE(BUBBLE),
+ EC_MOVE2(BUBBLE_BEAM),
+ EC_DUPLICATES(2),
+ EC_POKEMON(BELLOSSOM),
+ EC_POKEMON2(BELLOSSOM),
+ EC_WORD_FLOWERS,
+ EC_MOVE(LEECH_LIFE),
+ EC_POKEMON2(VENONAT),
+ EC_WORD_GROUND,
+ EC_MOVE2(TAKE_DOWN),
+ EC_MOVE(SAFEGUARD),
+ EC_MOVE2(BODY_SLAM),
+ EC_MOVE2(DRILL_PECK),
+ EC_POKEMON2(DELIBIRD),
+ EC_WORD_NEED,
+ EC_WORD_BOARD,
+ EC_WORD_LETTER,
+ EC_WORD_BROTHER,
+ EC_WORD_LOL,
+ EC_MOVE2(ROAR),
+ EC_POKEMON(SALAMENCE),
+ EC_WORD_BOOK,
+ EC_WORD_STAGE,
+ EC_POKEMON(SLAKOTH),
+};
+
+#define EC_WBL_OFFSET_C ARRAY_COUNT(gEasyChatWordsByLetter_B) + EC_WBL_OFFSET_B
+
+u16 gEasyChatWordsByLetter_C[] = {
+ EC_POKEMON(NUMEL),
+ EC_POKEMON(CAMERUPT),
+ EC_POKEMON2(CELEBI),
+ EC_WORD_CENTER,
+ EC_POKEMON2(CHANSEY),
+ EC_MOVE(CHARM),
+ EC_WORD_CUTE_CHARM,
+ EC_WORD_CHLOROPHYLL,
+ EC_WORD_COMICS,
+ EC_WORD_COOL,
+ EC_WORD_COOLNESS,
+ EC_DUPLICATES(2),
+ EC_POKEMON(CORSOLA),
+ EC_POKEMON2(CORSOLA),
+};
+
+#define EC_WBL_OFFSET_D ARRAY_COUNT(gEasyChatWordsByLetter_C) + EC_WBL_OFFSET_C
+
+u16 gEasyChatWordsByLetter_D[] = {
+ EC_WORD_THERE,
+ EC_WORD_OLDEN,
+ EC_WORD_LADY,
+ EC_POKEMON2(STANTLER),
+ EC_WORD_MISS,
+ EC_WORD_THANKS,
+ EC_WORD_THANK_YOU,
+ EC_WORD_THAT,
+ EC_WORD_IT_S,
+ EC_WORD_THIS_IS_IT_EXCL,
+ EC_WORD_THAT_S_IT_EXCL,
+ EC_WORD_AM,
+ EC_WORD_THAT_WAS,
+ EC_MOVE2(FEATHER_DANCE),
+ EC_WORD_SON,
+ EC_WORD_YOURS,
+ EC_WORD_YOUR,
+ EC_MOVE2(SUBSTITUTE),
+ EC_WORD_MODE,
+ EC_WORD_THINKS,
+ EC_POKEMON(DEOXYS),
+ EC_WORD_THE,
+ EC_WORD_DISASTER,
+ EC_WORD_DESIGN,
+ EC_POKEMON2(TYRANITAR),
+ EC_WORD_BABE,
+ EC_WORD_ABSOLUTELY,
+ EC_WORD_TUESDAY,
+ EC_WORD_THIS,
+ EC_WORD_THESE,
+ EC_WORD_THESE_WERE,
+ EC_POKEMON2(DIGLETT),
+ EC_POKEMON2(DUGTRIO),
+ EC_WORD_DIGITAL,
+ EC_WORD_THING,
+ EC_POKEMON2(DITTO),
+ EC_DUPLICATES(2),
+ EC_POKEMON(DODRIO),
+ EC_POKEMON2(DODRIO),
+ EC_DUPLICATES(2),
+ EC_POKEMON(DODUO),
+ EC_POKEMON2(DODUO),
+ EC_MOVE(THUNDER),
+ EC_MOVE(THUNDERBOLT),
+ EC_MOVE(THUNDER_PUNCH),
+ EC_MOVE2(THUNDER_SHOCK),
+ EC_WORD_THURSDAY,
+ EC_MOVE2(THUNDER_WAVE),
+ EC_DUPLICATES(2),
+ EC_POKEMON(DONPHAN),
+ EC_POKEMON2(DONPHAN),
+ EC_MOVE2(DOUBLE_KICK),
+ EC_MOVE(DOUBLE_TEAM),
+ EC_MOVE2(SPIKE_CANNON),
+ EC_WORD_OBLIVIOUS,
+ EC_WORD_DRAGON,
+ EC_MOVE2(DRAGON_CLAW),
+ EC_MOVE2(DRAGON_DANCE),
+ EC_MOVE2(DRAGON_RAGE),
+ EC_POKEMON2(DRAGONAIR),
+ EC_POKEMON2(DRAGONITE),
+ EC_POKEMON(SHELGON),
+ EC_POKEMON2(DRATINI),
+ EC_MOVE2(TRIPLE_KICK),
+ EC_MOVE(FLAIL),
+ EC_WORD_YOU,
+ EC_WORD_YOU_RE,
+ EC_WORD_I_CHOOSE_YOU,
+ EC_WORD_YOU_VE,
+ EC_WORD_BATTLE_TOWER,
+ EC_DUPLICATES(2),
+ EC_POKEMON(GLOOM),
+ EC_POKEMON2(GLOOM),
+ EC_WORD_UPBEAT,
+ EC_WORD_STENCH,
+ EC_POKEMON2(DUNSPARCE),
+ EC_MOVE(HAZE),
+ EC_MOVE2(TWINEEDLE),
+ EC_MOVE(DOUBLE_SLAP),
+ EC_MOVE(BRICK_BREAK),
+ EC_WORD_OKAY,
+ EC_WORD_DROUGHT,
+};
+
+#define EC_WBL_OFFSET_E ARRAY_COUNT(gEasyChatWordsByLetter_D) + EC_WBL_OFFSET_D
+
+u16 gEasyChatWordsByLetter_E[] = {
+ EC_WORD_SERENE_GRACE,
+ EC_MOVE2(LEECH_SEED),
+ EC_WORD_RATHER,
+ EC_WORD_REALLY,
+ EC_WORD_EGG,
+ EC_MOVE2(EGG_BOMB),
+ EC_WORD_HURRIED,
+ EC_WORD_A,
+ EC_WORD_A_LITTLE,
+ EC_WORD_AN,
+ EC_WORD_OF,
+ EC_WORD_SIMPLE,
+ EC_MOVE2(DEFENSE_CURL),
+ EC_WORD_SHOPPING,
+ EC_WORD_ONCE,
+ EC_WORD_LONESOME,
+ EC_WORD_ICE,
+ EC_MOVE2(IRON_DEFENSE),
+ EC_MOVE(IRON_TAIL),
+ EC_MOVE(SHEER_COLD),
+ EC_MOVE2(ICE_PUNCH),
+ EC_MOVE2(ICE_BEAM),
+ EC_MOVE(ICY_WIND),
+ EC_POKEMON2(ELEKID),
+ EC_POKEMON2(ELECTABUZZ),
+ EC_WORD_ELECTRIC,
+ EC_WORD_PARENT,
+ EC_WORD_RECOMMEND,
+ EC_WORD_END,
+ EC_POKEMON2(CHIKORITA),
+ EC_WORD_FINALLY,
+ EC_POKEMON(SKITTY),
+ EC_POKEMON(DELCATTY),
+ EC_MOVE(FOCUS_ENERGY),
+ EC_POKEMON2(ENTEI),
+ EC_MOVE2(SPIT_UP),
+ EC_WORD_DOWNCAST,
+ EC_DUPLICATES(2),
+ EC_POKEMON(PSYDUCK),
+ EC_POKEMON2(PSYDUCK),
+ EC_DUPLICATES(2),
+ EC_POKEMON(GOLDUCK),
+ EC_POKEMON2(GOLDUCK),
+ EC_WORD_DECIDE,
+ EC_WORD_DECIDED,
+ EC_WORD_EXCUSE_ME,
+ EC_WORD_DISAPPOINTS,
+ EC_WORD_DISAPPOINTED,
+ EC_WORD_EVOLVE,
+ EC_WORD_EVOLUTION,
+ EC_WORD_ENCYCLOPEDIA,
+ EC_WORD_HE,
+ EC_WORD_HE_S,
+ EC_MOVE(EARTHQUAKE),
+ EC_WORD_FLATTEN,
+ EC_WORD_REFRESHING,
+ EC_WORD_SURRENDER,
+ EC_WORD_RECEIVED,
+ EC_MOVE2(REST),
+ EC_WORD_ALLOW,
+ EC_WORD_ILLUMINATE,
+ EC_WORD_SERIOUSLY,
+ EC_WORD_SERIOUS,
+ EC_WORD_APPEAR,
+ EC_WORD_APPEARS,
+ EC_MOVE(ASTONISH),
+ EC_WORD_TAKE,
+ EC_MOVE2(ERUPTION),
+ EC_WORD_ADULT,
+ EC_WORD_PRESSURE,
+ EC_WORD_IT,
+ EC_WORD_IS_IT_QUES,
+ EC_WORD_EAT,
+ EC_WORD_AROUND,
+ EC_WORD_SOMETHING,
+ EC_WORD_PLANS,
+ EC_WORD_THEIR,
+ EC_WORD_HERS,
+ EC_WORD_EVENTS,
+ EC_WORD_PROBABLY,
+ EC_POKEMON2(EEVEE),
+ EC_WORD_FOREVER,
+ EC_WORD_EXISTS,
+ EC_WORD_SHED_SKIN,
+ EC_MOVE2(EXPLOSION),
+ EC_WORD_EXCELLENT,
+};
+
+#define EC_WBL_OFFSET_F ARRAY_COUNT(gEasyChatWordsByLetter_E) + EC_WBL_OFFSET_E
+
+u16 gEasyChatWordsByLetter_F[] = {
+ EC_WORD_FABULOUS,
+ EC_WORD_COMPOUNDEYES,
+ EC_MOVE(STRING_SHOT),
+ EC_WORD_CAPABLE,
+ EC_WORD_SP_ABILITY,
+ EC_WORD_BIKE,
+ EC_WORD_TRACE,
+ EC_WORD_CASE,
+ EC_WORD_FAMILY,
+ EC_WORD_FANTASTIC,
+ EC_WORD_COLOR,
+ EC_POKEMON2(SMEARGLE),
+ EC_WORD_COLOR_CHANGE,
+ EC_MOVE(FACADE),
+ EC_WORD_ALMOST,
+ EC_MOVE2(ROLLING_KICK),
+ EC_WORD_MISTAKE,
+ EC_WORD_LACKS,
+ EC_WORD_GOOD,
+ EC_WORD_OPPONENT,
+ EC_POKEMON2(WOOPER),
+ EC_MOVE(ROCK_TOMB),
+ EC_MOVE2(ROCK_BLAST),
+ EC_WORD_HOLIDAY,
+ EC_WORD_TELEVISION,
+ EC_WORD_DONE,
+ EC_WORD_FESTIVAL,
+ EC_WORD_SHREDDED,
+ EC_WORD_DAMP,
+ EC_WORD_FIRE,
+ EC_WORD_FLASH_FIRE,
+ EC_MOVE2(BLAZE_KICK),
+ EC_MOVE2(DRAGON_BREATH),
+ EC_MOVE2(FIRE_PUNCH),
+ EC_MOVE2(FIRE_BLAST),
+ EC_MOVE2(FIRE_SPIN),
+ EC_POKEMON2(CYNDAQUIL),
+ EC_POKEMON(POOCHYENA),
+ EC_WORD_MOVIE,
+ EC_MOVE(SELF_DESTRUCT),
+ EC_MOVE(SHADOW_PUNCH),
+ EC_MOVE2(FAINT_ATTACK),
+ EC_POKEMON(GLALIE),
+ EC_POKEMON2(FLAREON),
+ EC_MOVE(FLAME_WHEEL),
+ EC_MOVE(FLAMETHROWER),
+ EC_WORD_FLAME_BODY,
+ EC_POKEMON2(SLOWPOKE),
+ EC_POKEMON(TORCHIC),
+ EC_WORD_LIMBER,
+ EC_DUPLICATES(2),
+ EC_WORD_FLYING,
+ EC_MOVE(FLY),
+ EC_MOVE2(CURSE),
+ EC_WORD_ESCAPE,
+ EC_DUPLICATES(2),
+ EC_POKEMON(IGGLYBUFF),
+ EC_POKEMON2(IGGLYBUFF),
+ EC_MOVE2(WING_ATTACK),
+ EC_POKEMON(MAWILE),
+ EC_POKEMON(WHISMUR),
+ EC_WORD_FUFUFU,
+ EC_MOVE(TORMENT),
+ EC_MOVE(WATER_SPOUT),
+ EC_POKEMON(CASTFORM),
+ EC_POKEMON2(FORRETRESS),
+ EC_WORD_AWAY,
+ EC_WORD_CAMERA,
+ EC_WORD_QUESTION,
+ EC_WORD_MRS,
+ EC_WORD_RELEASE,
+ EC_WORD_FRIDAY,
+ EC_WORD_JOY,
+ EC_WORD_FRIEND,
+ EC_POKEMON(ELECTRIKE),
+ EC_WORD_THINK,
+ EC_MOVE(ICE_BALL),
+ EC_WORD_EARLIER,
+ EC_WORD_SPRING,
+ EC_WORD_EARLY_BIRD,
+ EC_MOVE2(FRUSTRATION),
+ EC_WORD_DISAPPOINT,
+ EC_MOVE(THRASH),
+ EC_WORD_FEELING,
+ EC_POKEMON2(GROWLITHE),
+ EC_MOVE(SPARK),
+ EC_WORD_FOR,
+ EC_WORD_TO_HER,
+ EC_WORD_FOR_NOW,
+ EC_WORD_TO_THEM,
+ EC_WORD_TO_US,
+ EC_WORD_TO_WHOM,
+ EC_WORD_FEAR,
+ EC_WORD_AWFULLY,
+ EC_MOVE2(FURY_ATTACK),
+ EC_MOVE(LOW_KICK),
+};
+
+#define EC_WBL_OFFSET_G ARRAY_COUNT(gEasyChatWordsByLetter_F) + EC_WBL_OFFSET_F
+
+u16 gEasyChatWordsByLetter_G[] = {
+ EC_MOVE(YAWN),
+ EC_POKEMON2(RAPIDASH),
+ EC_DUPLICATES(2),
+ EC_POKEMON(GYARADOS),
+ EC_POKEMON2(GYARADOS),
+ EC_WORD_GIVE,
+ EC_WORD_USE,
+ EC_WORD_USES,
+ EC_POKEMON(TREECKO),
+ EC_MOVE2(CALM_MIND),
+ EC_WORD_COMMEMORATE,
+ EC_MOVE(BIDE),
+ EC_WORD_DANGER,
+ EC_WORD_VERSUS,
+ EC_MOVE(REVERSAL),
+ EC_WORD_OPPOSITE,
+ EC_WORD_FOE,
+ EC_WORD_MYSTERY,
+ EC_WORD_SECRET_BASE,
+ EC_WORD_SECRET,
+ EC_MOVE2(SECRET_POWER),
+ EC_WORD_GOING,
+ EC_WORD_HEARING,
+ EC_WORD_BELONGS_TO,
+ EC_WORD_GOES,
+ EC_POKEMON(SURSKIT),
+ EC_WORD_GHOST,
+ EC_WORD_BORED,
+ EC_WORD_MONEY,
+ EC_WORD_LAY,
+ EC_WORD_MEAN,
+ EC_WORD_HOW,
+ EC_WORD_AS,
+ EC_WORD_APPROVED,
+ EC_MOVE(RECOVER),
+ EC_POKEMON2(GENGAR),
+ EC_WORD_GENIUS,
+ EC_WORD_ENJOY,
+ EC_WORD_ENJOYS,
+ EC_WORD_THOSE_WERE,
+ EC_MOVE(FISSURE),
+ EC_DUPLICATES(2),
+ EC_POKEMON(GRAVELER),
+ EC_POKEMON2(GRAVELER),
+ EC_DUPLICATES(2),
+ EC_POKEMON(GOLEM),
+ EC_POKEMON2(GOLEM),
+ EC_MOVE2(SEISMIC_TOSS),
+ EC_POKEMON(LINOONE),
+ EC_WORD_WANNABE,
+ EC_WORD_SMELL,
+ EC_MOVE(SING),
+ EC_WORD_EVENT,
+ EC_MOVE2(PRESENT),
+ EC_WORD_SKILL,
+ EC_WORD_SKILLED,
+ EC_WORD_SHOCKED,
+ EC_WORD_WEAKENED,
+ EC_WORD_SIBLINGS,
+ EC_MOVE2(FORESIGHT),
+ EC_WORD_CONVERSATION,
+ EC_WORD_ROCK,
+ EC_WORD_YESTERDAY,
+ EC_WORD_HEALTHY,
+ EC_WORD_DID,
+ EC_POKEMON(SCEPTILE),
+ EC_WORD_WIN,
+ EC_WORD_IF_I_WIN,
+ EC_WORD_WINS,
+ EC_WORD_HABIT,
+ EC_WORD_WON,
+ EC_WORD_GIVE_ME,
+ EC_WORD_GIMME,
+ EC_WORD_GIVES,
+ EC_DUPLICATES(2),
+ EC_POKEMON(VILEPLUME),
+ EC_POKEMON2(VILEPLUME),
+ EC_WORD_POISON,
+ EC_MOVE2(GLARE),
+ EC_WORD_POISON_POINT,
+ EC_MOVE2(POISON_POWDER),
+ EC_MOVE2(POISON_TAIL),
+ EC_MOVE2(POISON_STING),
+ EC_MOVE2(POISON_GAS),
+ EC_MOVE2(POISON_FANG),
+ EC_MOVE(GIGA_DRAIN),
+ EC_WORD_HAPPENING,
+ EC_WORD_WENT,
+ EC_DUPLICATES(2),
+ EC_POKEMON(GIRAFARIG),
+ EC_POKEMON2(GIRAFARIG),
+ EC_WORD_SMOOTH,
+ EC_WORD_BELIEVE,
+ EC_WORD_WHEN,
+ EC_WORD_SLIDE,
+ EC_WORD_SLIMY,
+ EC_WORD_HAPPINESS,
+ EC_WORD_HAPPY,
+ EC_WORD_CONGRATS,
+ EC_POKEMON2(CHARMANDER),
+ EC_POKEMON2(CHARIZARD),
+ EC_MOVE2(EMBER),
+ EC_POKEMON2(CHARMELEON),
+ EC_DUPLICATES(2),
+ EC_POKEMON(GOLBAT),
+ EC_POKEMON2(GOLBAT),
+ EC_DUPLICATES(2),
+ EC_POKEMON(GOLDEEN),
+ EC_POKEMON2(GOLDEEN),
+ EC_DUPLICATES(2),
+ EC_POKEMON(SEAKING),
+ EC_POKEMON2(SEAKING),
+ EC_WORD_GOURMET,
+ EC_WORD_GRAAAH,
+ EC_POKEMON2(GRANBULL),
+ EC_MOVE(GRASS_WHISTLE),
+ EC_POKEMON2(AIPOM),
+ EC_MOVE(SCARY_FACE),
+ EC_WORD_ANTICIPATION,
+ EC_POKEMON(GRUMPIG),
+ EC_MOVE(SPITE),
+ EC_WORD_BIG,
+ EC_WORD_GREAT,
+ EC_WORD_BLAZE,
+ EC_WORD_GRANDMOTHER,
+ EC_WORD_GRANDFATHER,
+ EC_WORD_LAVISH,
+ EC_POKEMON(GROUDON),
+ EC_WORD_GWAH,
+ EC_WORD_CAUSE,
+ EC_WORD_GROUP,
+ EC_POKEMON(GARDEVOIR),
+ EC_MOVE2(GUILLOTINE),
+ EC_WORD_1_HIT_KO_EXCL,
+ EC_WORD_ALL_RIGHT,
+ EC_WORD_HEARS,
+ EC_WORD_GWAHAHAHA,
+};
+
+#define EC_WBL_OFFSET_H ARRAY_COUNT(gEasyChatWordsByLetter_G) + EC_WBL_OFFSET_G
+
+u16 gEasyChatWordsByLetter_H[] = {
+ EC_WORD_WATER_ABSORB,
+ EC_WORD_GOTCHA,
+ EC_WORD_HAVE,
+ EC_WORD_GOT,
+ EC_WORD_HAVEN_T,
+ EC_POKEMON2(SPEAROW),
+ EC_MOVE(HAIL),
+ EC_WORD_HAH,
+ EC_WORD_EH_QUES,
+ EC_WORD_HEHE,
+ EC_WORD_HAHAHA,
+ EC_WORD_EHEHE,
+ EC_WORD_HELLO,
+ EC_POKEMON(HARIYAMA),
+ EC_WORD_MATCH_UP,
+ EC_MOVE(HARDEN),
+ EC_WORD_HAS,
+ EC_WORD_HEH,
+ EC_WORD_HEHEHE,
+ EC_MOVE2(REFRESH),
+ EC_WORD_HOME,
+ EC_WORD_GO_HOME,
+ EC_WORD_HOT,
+ EC_POKEMON2(BLISSEY),
+ EC_WORD_HERO,
+ EC_WORD_HEROINE,
+ EC_WORD_CHALLENGE,
+ EC_WORD_FALL,
+ EC_WORD_MR,
+ EC_WORD_MAKING,
+ EC_MOVE2(GROWL),
+ EC_WORD_TODAY,
+ EC_WORD_SWARM,
+ EC_WORD_HEY,
+ EC_WORD_HEY_THERE,
+ EC_WORD_HEY_QUES,
+ EC_WORD_HERE,
+ EC_WORD_HERE_I_COME,
+ EC_WORD_HERE_IT_IS,
+ EC_WORD_HERE_GOES,
+ EC_WORD_MUFUFU,
+ EC_MOVE(SKY_UPPERCUT),
+ EC_MOVE(SKY_ATTACK),
+ EC_WORD_REAR,
+ EC_WORD_DOWN,
+ EC_WORD_HIP_AND,
+ EC_MOVE(OVERHEAT),
+ EC_MOVE2(HEAT_WAVE),
+ EC_WORD_HIYAH,
+ EC_WORD_HMM,
+ EC_WORD_HUMPH,
+ EC_POKEMON2(HO_OH),
+ EC_WORD_HOBBY,
+ EC_WORD_HIGH,
+ EC_WORD_KIND,
+ EC_WORD_HIGHS,
+ EC_WORD_HOHOHO,
+ EC_WORD_HEART,
+ EC_POKEMON2(HOOTHOOT),
+ EC_POKEMON2(HOPPIP),
+ EC_WORD_LISTENING,
+ EC_WORD_HEAR,
+ EC_MOVE2(HORN_ATTACK),
+ EC_MOVE2(HORN_DRILL),
+ EC_POKEMON2(WEEDLE),
+ EC_MOVE(MEAN_LOOK),
+ EC_WORD_LISTENS,
+ EC_MOVE2(STOCKPILE),
+ EC_POKEMON2(SKIPLOOM),
+ EC_WORD_PRETTY,
+ EC_WORD_HOO_HAH,
+ EC_POKEMON2(HOUNDOOM),
+ EC_POKEMON2(HOUNDOUR),
+ EC_WORD_OOPS,
+ EC_POKEMON(MUDKIP),
+ EC_MOVE2(HYDRO_PUMP),
+ EC_WORD_HYPER,
+ EC_MOVE2(HYPER_BEAM),
+ EC_MOVE2(HYPER_FANG),
+ EC_POKEMON2(HYPNO),
+ EC_MOVE(HYPNOSIS),
+};
+
+#define EC_WBL_OFFSET_I ARRAY_COUNT(gEasyChatWordsByLetter_H) + EC_WBL_OFFSET_H
+
+u16 gEasyChatWordsByLetter_I[] = {
+ EC_POKEMON2(FEAROW),
+ EC_WORD_I,
+ EC_WORD_I_AM,
+ EC_WORD_I_VE_ARRIVED,
+ EC_WORD_I_VE,
+ EC_WORD_LET_ME_WIN,
+ EC_WORD_I_WAS,
+ EC_POKEMON2(UNOWN),
+ EC_WORD_IDOL,
+ EC_POKEMON2(QUILAVA),
+ EC_WORD_EEK,
+ EC_WORD_IGNORANT,
+ EC_WORD_HIM,
+ EC_WORD_THEY,
+ EC_WORD_HER,
+ EC_WORD_MUCH_OBLIGED,
+ EC_DUPLICATES(2),
+ EC_POKEMON(CROBAT),
+ EC_POKEMON2(CROBAT),
+ EC_POKEMON(ILLUMISE),
+ EC_WORD_ALWAYS,
+ EC_WORD_IMMUNITY,
+ EC_POKEMON2(FERALIGATR),
+ EC_WORD_IN,
+ EC_WORD_INFORMATION,
+ EC_WORD_INSIDE,
+ EC_WORD_NATURAL_CURE,
+ EC_WORD_INSOMNIA,
+ EC_MOVE2(MAGNITUDE),
+ EC_WORD_ANY,
+ EC_WORD_SOMETIME,
+ EC_WORD_SOMEHOW,
+ EC_WORD_ANYWHERE,
+ EC_WORD_AWESOME,
+ EC_MOVE(WILL_O_WISP),
+ EC_MOVE2(DIZZY_PUNCH),
+ EC_POKEMON(WYNAUT),
+ EC_WORD_EATS,
+ EC_WORD_IS,
+ EC_WORD_ISN_T,
+ EC_WORD_ITEM,
+};
+
+#define EC_WBL_OFFSET_J ARRAY_COUNT(gEasyChatWordsByLetter_I) + EC_WBL_OFFSET_I
+
+u16 gEasyChatWordsByLetter_J[] = {
+ EC_WORD_YES,
+ EC_WORD_YAY,
+ EC_WORD_YUP,
+ EC_MOVE2(HOWL),
+ EC_WORD_HOWEVER,
+ EC_WORD_EVER,
+ EC_WORD_SOMEONE,
+ EC_WORD_YO,
+ EC_WORD_NOW,
+ EC_WORD_YEEHAW_EXCL,
+ EC_WORD_EXCITING,
+ EC_POKEMON(JIRACHI),
+ EC_WORD_WOWEE,
+ EC_WORD_YAHOO,
+ EC_POKEMON2(DEWGONG),
+ EC_WORD_YOUNG,
+ EC_WORD_BOY,
+ EC_POKEMON(COMBUSKEN),
+ EC_POKEMON2(SEEL),
+ EC_WORD_JUDGE,
+};
+
+#define EC_WBL_OFFSET_K ARRAY_COUNT(gEasyChatWordsByLetter_J) + EC_WBL_OFFSET_J
+
+u16 gEasyChatWordsByLetter_K[] = {
+ EC_POKEMON2(KABUTO),
+ EC_POKEMON2(KABUTOPS),
+ EC_DUPLICATES(2),
+ EC_POKEMON(KADABRA),
+ EC_POKEMON2(KADABRA),
+ EC_WORD_BUG,
+ EC_WORD_COLD,
+ EC_WORD_CAME,
+ EC_WORD_FIGHTING,
+ EC_WORD_BATTLE,
+ EC_WORD_FIGHT,
+ EC_WORD_BATTLE_ARMOR,
+ EC_WORD_BATTLE_ROOM,
+ EC_WORD_FAINTED,
+ EC_POKEMON2(KANGASKHAN),
+ EC_POKEMON(CARVANHA),
+ EC_WORD_CAN_WIN,
+ EC_WORD_CAN_T,
+ EC_POKEMON(BRELOOM),
+ EC_POKEMON2(HITMONTOP),
+ EC_POKEMON(LUDICOLO),
+ EC_MOVE(KARATE_CHOP),
+ EC_WORD_DESTINY,
+ EC_POKEMON2(TOTODILE),
+ EC_DUPLICATES(2),
+ EC_POKEMON(MAGIKARP),
+ EC_POKEMON2(MAGIKARP),
+ EC_WORD_CARDS,
+ EC_MOVE2(WATERFALL),
+ EC_WORD_DEPT_STORE,
+ EC_POKEMON(KECLEON),
+ EC_POKEMON2(PILOSWINE),
+ EC_WORD_NONE,
+ EC_WORD_GIGGLE,
+ EC_POKEMON2(HITMONLEE),
+ EC_WORD_TICKLISH,
+ EC_WORD_KID,
+ EC_WORD_CHILDREN,
+ EC_WORD_KINDERGARTEN,
+ EC_WORD_CHILD_S_PLAY,
+ EC_POKEMON(BAGON),
+ EC_POKEMON2(KINGLER),
+ EC_POKEMON(KIRLIA),
+ EC_MOVE2(VICE_GRIP),
+ EC_MOVE(BIND),
+ EC_WORD_THIN,
+ EC_WORD_RANK,
+ EC_WORD_SMALL,
+ EC_DUPLICATES(2),
+ EC_POKEMON(GEODUDE),
+ EC_POKEMON2(GEODUDE),
+ EC_WORD_AIR_LOCK,
+ EC_MOVE(RAZOR_WIND),
+ EC_WORD_LIQUID_OOZE,
+ EC_WORD_SMART,
+ EC_WORD_SMARTNESS,
+ EC_POKEMON(TRAPINCH),
+ EC_POKEMON(SHROOMISH),
+ EC_MOVE(CRUNCH),
+ EC_MOVE2(BONE_RUSH),
+ EC_MOVE2(BONE_CLUB),
+ EC_MOVE2(BONEMERANG),
+ EC_POKEMON2(BELLSPROUT),
+ EC_POKEMON2(MAROWAK),
+ EC_DUPLICATES(2),
+ EC_POKEMON(WIGGLYTUFF),
+ EC_POKEMON2(WIGGLYTUFF),
+ EC_WORD_TIGHT,
+ EC_POKEMON2(EXEGGUTOR),
+ EC_POKEMON2(KAKUNA),
+ EC_MOVE2(COMET_PUNCH),
+ EC_WORD_COME_ON,
+ EC_WORD_COME,
+ EC_WORD_COMPLETE,
+ EC_MOVE2(MINIMIZE),
+ EC_MOVE2(CONFUSION),
+ EC_MOVE(CONFUSE_RAY),
+ EC_WORD_CAN,
+ EC_WORD_COULDN_T,
+ EC_WORD_COULD,
+ EC_MOVE(COUNTER),
+ EC_WORD_INNER_FOCUS,
+ EC_MOVE(HEADBUTT),
+ EC_WORD_FEVER,
+ EC_MOVE(COSMIC_POWER),
+ EC_WORD_TREASURE,
+ EC_MOVE(CRABHAMMER),
+ EC_POKEMON2(KRABBY),
+ EC_WORD_POWER,
+ EC_DUPLICATES(2),
+ EC_WORD_HUGE_POWER,
+ EC_MOVE2(SUPERPOWER),
+ EC_MOVE2(HIDDEN_POWER),
+ EC_POKEMON(LOUDRED),
+ EC_POKEMON2(MURKROW),
+ EC_MOVE2(SCRATCH),
+ EC_MOVE2(FURY_SWIPES),
+ EC_POKEMON(EXPLOUD),
+ EC_POKEMON(CORPHISH),
+ EC_POKEMON(CRAWDAUNT),
+ EC_MOVE(SCREECH),
+ EC_MOVE(CROSS_CHOP),
+ EC_MOVE2(BULLET_SEED),
+ EC_POKEMON2(SMOOCHUM),
+ EC_POKEMON(KYOGRE),
+};
+
+#define EC_WBL_OFFSET_L ARRAY_COUNT(gEasyChatWordsByLetter_K) + EC_WBL_OFFSET_K
+
+u16 gEasyChatWordsByLetter_L[] = {
+ EC_WORD_SEE,
+ EC_MOVE(CHARGE),
+ EC_WORD_STORE,
+ EC_WORD_STORES,
+ EC_POKEMON2(SLOWBRO),
+ EC_WORD_LALALA,
+ EC_DUPLICATES(2),
+ EC_POKEMON(CHINCHOU),
+ EC_POKEMON2(CHINCHOU),
+ EC_WORD_WAIT,
+ EC_WORD_BORING,
+ EC_DUPLICATES(2),
+ EC_POKEMON(LANTURN),
+ EC_POKEMON2(LANTURN),
+ EC_WORD_PUSHOVER,
+ EC_POKEMON2(LAPRAS),
+ EC_WORD_SOUNDPROOF,
+ EC_POKEMON2(LARVITAR),
+ EC_POKEMON2(SLOWKING),
+ EC_WORD_LET_S,
+ EC_POKEMON(LATIAS),
+ EC_POKEMON(LATIOS),
+ EC_WORD_WANDERING,
+ EC_MOVE2(LEAF_BLADE),
+ EC_WORD_MOOD,
+ EC_WORD_LOUSY,
+ EC_WORD_NOISY,
+ EC_MOVE(SACRED_FIRE),
+ EC_WORD_LUKEWARM,
+ EC_POKEMON2(MOLTRES),
+ EC_WORD_LIFE,
+ EC_WORD_LIVING,
+ EC_WORD_THIRSTY,
+ EC_WORD_TASTY,
+ EC_POKEMON2(LEDIAN),
+ EC_POKEMON2(LEDYBA),
+ EC_WORD_LEGEND,
+ EC_MOVE2(MUDDY_WATER),
+ EC_MOVE2(MUD_SLAP),
+ EC_MOVE2(MUD_SHOT),
+ EC_MOVE2(MUD_SPORT),
+ EC_WORD_TEACH,
+ EC_WORD_TEACHER,
+ EC_WORD_TEACHES,
+ EC_WORD_EASY,
+ EC_MOVE(PAIN_SPLIT),
+ EC_DUPLICATES(2),
+ EC_WORD_LEADER,
+ EC_WORD_LEADERS,
+ EC_WORD_CLASS,
+ EC_DUPLICATES(2),
+ EC_POKEMON(ELECTRODE),
+ EC_POKEMON2(ELECTRODE),
+ EC_POKEMON(CLAYDOL),
+ EC_WORD_LEARN,
+ EC_WORD_STUDY,
+ EC_POKEMON(SLAKING),
+ EC_WORD_LAST,
+ EC_WORD_FINAL,
+ EC_WORD_WINNER,
+ EC_WORD_LEVEL,
+ EC_POKEMON(FLYGON),
+ EC_WORD_KNOCKOUT,
+ EC_MOVE2(LIGHT_SCREEN),
+ EC_POKEMON(LUVDISC),
+ EC_POKEMON(LILEEP),
+ EC_WORD_LINK,
+ EC_WORD_LEFT,
+ EC_WORD_PRAISE,
+ EC_MOVE(SWEET_SCENT),
+ EC_POKEMON(BLAZIKEN),
+ EC_WORD_LOCOMOTIVE,
+ EC_POKEMON(LOMBRE),
+ EC_POKEMON2(BAYLEEF),
+ EC_WORD_GO,
+ EC_WORD_LOSER,
+ EC_POKEMON(LOTAD),
+ EC_MOVE(AEROBLAST),
+ EC_WORD_LIE,
+ EC_POKEMON2(LUGIA),
+ EC_WORD_LOLLING,
+ EC_POKEMON(LUNATONE),
+ EC_WORD_FUNNY,
+};
+
+#define EC_WBL_OFFSET_M ARRAY_COUNT(gEasyChatWordsByLetter_L) + EC_WBL_OFFSET_L
+
+u16 gEasyChatWordsByLetter_M[] = {
+ EC_WORD_DO,
+ EC_WORD_MAKE,
+ EC_DUPLICATES(2),
+ EC_POKEMON(MACHOP),
+ EC_POKEMON2(MACHOP),
+ EC_DUPLICATES(2),
+ EC_POKEMON(MACHAMP),
+ EC_POKEMON2(MACHAMP),
+ EC_WORD_DOESN_T,
+ EC_WORD_GIRL,
+ EC_WORD_MAGAZINE,
+ EC_POKEMON2(MAGBY),
+ EC_DUPLICATES(2),
+ EC_POKEMON(MAGCARGO),
+ EC_POKEMON2(MAGCARGO),
+ EC_WORD_HUNGRY,
+ EC_MOVE2(MAGIC_COAT),
+ EC_WORD_MAGMA_ARMOR,
+ EC_POKEMON2(MAGMAR),
+ EC_POKEMON(MIGHTYENA),
+ EC_WORD_MAGNET_PULL,
+ EC_DUPLICATES(2),
+ EC_POKEMON(MAGNEMITE),
+ EC_POKEMON2(MAGNEMITE),
+ EC_DUPLICATES(2),
+ EC_POKEMON(MAGNETON),
+ EC_POKEMON2(MAGNETON),
+ EC_POKEMON(MAKUHITA),
+ EC_WORD_VORACIOUS,
+ EC_WORD_MAN,
+ EC_POKEMON2(MANTINE),
+ EC_DUPLICATES(2),
+ EC_POKEMON(MARILL),
+ EC_POKEMON2(MARILL),
+ EC_WORD_MACHINE,
+ EC_DUPLICATES(2),
+ EC_POKEMON(MACHOKE),
+ EC_POKEMON2(MACHOKE),
+ EC_POKEMON(MASQUERAIN),
+ EC_MOVE2(SLUDGE_BOMB),
+ EC_POKEMON2(MEOWTH),
+ EC_WORD_MC,
+ EC_POKEMON(MEDICHAM),
+ EC_MOVE2(MEDITATE),
+ EC_POKEMON(MEDITITE),
+ EC_WORD_MEGA,
+ EC_WORD_HAPPILY,
+ EC_MOVE2(MEGA_PUNCH),
+ EC_MOVE2(MEGA_KICK),
+ EC_POKEMON2(MEGANIUM),
+ EC_MOVE2(MEGA_DRAIN),
+ EC_WORD_MORE,
+ EC_WORD_MY,
+ EC_WORD_WHO_WAS,
+ EC_WORD_OH_DEAR,
+ EC_WORD_MASTER,
+ EC_MOVE(MEMENTO),
+ EC_POKEMON2(MANKEY),
+ EC_WORD_PURE_POWER,
+ EC_POKEMON(METAGROSS),
+ EC_MOVE2(METAL_CLAW),
+ EC_MOVE(METAL_SOUND),
+ EC_POKEMON(METANG),
+ EC_MOVE(WEATHER_BALL),
+ EC_MOVE2(METRONOME),
+ EC_POKEMON2(MEW),
+ EC_POKEMON2(MEWTWO),
+ EC_WORD_ME,
+ EC_WORD_BADLY,
+ EC_WORD_SHOULD,
+ EC_WORD_RENTAL,
+ EC_MOVE2(MILK_DRINK),
+ EC_POKEMON(MILOTIC),
+ EC_POKEMON2(MILTANK),
+ EC_MOVE2(MIMIC),
+ EC_POKEMON(MINUN),
+ EC_WORD_MINUS,
+ EC_WORD_MYSELF,
+ EC_WORD_WITH,
+ EC_WORD_PICKUP,
+ EC_WORD_OVERWHELMING,
+ EC_WORD_MESSAGE,
+ EC_WORD_WEDNESDAY,
+ EC_WORD_BLEND,
+ EC_WORD_MMM,
+ EC_WORD_WANT,
+ EC_WORD_FASHION,
+ EC_WORD_MODERN,
+ EC_POKEMON2(SUDOWOODO),
+ EC_MOVE2(FAKE_OUT),
+ EC_WORD_CURRENT,
+ EC_WORD_MONTH,
+ EC_MOVE2(MOONLIGHT),
+ EC_WORD_MONDAY,
+ EC_POKEMON(MARSHTOMP),
+ EC_WORD_MORNING,
+ EC_MOVE(MORNING_SUN),
+ EC_POKEMON2(QUAGSIRE),
+ EC_WORD_TIRED,
+ EC_WORD_USELESS,
+ EC_WORD_VITAL_SPIRIT,
+ EC_POKEMON(VIGOROTH),
+ EC_POKEMON2(SHELLDER),
+ EC_WORD_MUSIC,
+ EC_WORD_MUST_BE,
+ EC_WORD_PATTERN,
+ EC_WORD_GUTSY,
+ EC_WORD_MOTHER,
+ EC_DUPLICATES(2),
+ EC_POKEMON(ODDISH),
+ EC_POKEMON2(ODDISH),
+};
+
+#define EC_WBL_OFFSET_N ARRAY_COUNT(gEasyChatWordsByLetter_M) + EC_WBL_OFFSET_M
+
+u16 gEasyChatWordsByLetter_N[] = {
+ EC_WORD_AFTER,
+ EC_MOVE(SKETCH),
+ EC_MOVE(GRUDGE),
+ EC_WORD_NEXT,
+ EC_WORD_NIGHT,
+ EC_POKEMON2(UMBREON),
+ EC_MOVE(NIGHTMARE),
+ EC_MOVE2(NIGHT_SHADE),
+ EC_MOVE2(PIN_MISSILE),
+ EC_WORD_NEAR,
+ EC_WORD_CLOSE,
+ EC_WORD_DIET,
+ EC_WORD_NAME,
+ EC_WORD_SWEETS,
+ EC_POKEMON(NOSEPASS),
+ EC_MOVE2(WATER_SPORT),
+ EC_DUPLICATES(2),
+ EC_POKEMON(NATU),
+ EC_POKEMON2(NATU),
+ EC_MOVE(NATURE_POWER),
+ EC_WORD_NATURAL,
+ EC_WORD_CANCEL,
+ EC_MOVE2(MIST_BALL),
+ EC_WORD_BESIDE,
+ EC_POKEMON2(GASTLY),
+ EC_WORD_NEGATIVE,
+ EC_WORD_NO,
+ EC_WORD_NICE,
+ EC_WORD_NEWS,
+ EC_WORD_CLEAR_BODY,
+ EC_WORD_DON_T,
+ EC_WORD_DIDN_T,
+ EC_WORD_DISLIKE,
+ EC_WORD_NOT,
+ EC_WORD_NOT_VERY,
+ EC_WORD_ISN_T_IT_QUES,
+ EC_WORD_NOTHING,
+ EC_WORD_NAP,
+ EC_POKEMON2(NIDOKING),
+ EC_POKEMON2(NIDOQUEEN),
+ EC_POKEMON2(NIDORAN_F),
+ EC_POKEMON2(NIDORAN_M),
+ EC_POKEMON2(NIDORINA),
+ EC_POKEMON2(NIDORINO),
+ EC_WORD_NEVER,
+ EC_WORD_LOW,
+ EC_WORD_DRIZZLE,
+ EC_MOVE2(NEEDLE_ARM),
+ EC_WORD_TAKE_THAT,
+ EC_POKEMON(NINCADA),
+ EC_POKEMON(NINJASK),
+ EC_POKEMON(SHEDINJA),
+ EC_WORD_NOPE,
+ EC_WORD_TOTALLY,
+ EC_WORD_THAT_S,
+ EC_POKEMON2(HITMONCHAN),
+ EC_POKEMON2(NOCTOWL),
+ EC_POKEMON(CACTURNE),
+ EC_WORD_NON_STOP,
+ EC_WORD_YET,
+ EC_WORD_NORMAL,
+ EC_WORD_OVERGROW,
+ EC_WORD_MARVEL_SCALE,
+ EC_MOVE(ENDEAVOR),
+ EC_WORD_NO_1,
+ EC_WORD_WELL_THEN,
+ EC_WORD_ONLY,
+};
+
+#define EC_WBL_OFFSET_O ARRAY_COUNT(gEasyChatWordsByLetter_N) + EC_WBL_OFFSET_N
+
+u16 gEasyChatWordsByLetter_O[] = {
+ EC_WORD_OK_QUES,
+ EC_WORD_UP,
+ EC_WORD_ABOVE,
+ EC_WORD_ALTHOUGH,
+ EC_MOVE(OCTAZOOKA),
+ EC_POKEMON2(OCTILLERY),
+ EC_WORD_OR,
+ EC_WORD_OFFENSIVE,
+ EC_WORD_OH,
+ EC_WORD_UH_OH,
+ EC_WORD_OH_YEAH,
+ EC_WORD_OH_QUES,
+ EC_WORD_WITHOUT,
+ EC_WORD_OI_OI_OI,
+ EC_WORD_OH_KAY,
+ EC_WORD_OLD,
+ EC_POKEMON2(VENOMOTH),
+ EC_POKEMON2(ONIX),
+ EC_WORD_UNCLE,
+ EC_WORD_HOPELESS,
+ EC_WORD_WHOAH,
+ EC_WORD_PLACE,
+ EC_POKEMON2(EXEGGCUTE),
+};
+
+#define EC_WBL_OFFSET_P ARRAY_COUNT(gEasyChatWordsByLetter_O) + EC_WBL_OFFSET_O
+
+u16 gEasyChatWordsByLetter_P[] = {
+ EC_POKEMON(CHIMECHO),
+ EC_POKEMON(SPINDA),
+ EC_POKEMON(CASCOON),
+ EC_POKEMON2(MR_MIME),
+ EC_DUPLICATES(2),
+ EC_POKEMON(SKARMORY),
+ EC_POKEMON2(SKARMORY),
+ EC_WORD_SHELL_ARMOR,
+ EC_MOVE(WITHDRAW),
+ EC_POKEMON(BEAUTIFLY),
+ EC_POKEMON2(JUMPLUFF),
+ EC_POKEMON2(PARAS),
+ EC_POKEMON2(PARASECT),
+ EC_WORD_PARDON,
+ EC_WORD_MATCH,
+ EC_WORD_PARTNER,
+ EC_WORD_PARTY,
+ EC_WORD_PC,
+ EC_POKEMON(PELIPPER),
+ EC_WORD_PERFECT,
+ EC_WORD_PERFECTION,
+ EC_POKEMON(CLAMPERL),
+ EC_WORD_PERSON,
+ EC_WORD_GRASS,
+ EC_WORD_CHORES,
+ EC_MOVE2(POUND),
+ EC_DUPLICATES(2),
+ EC_POKEMON(PHANPY),
+ EC_POKEMON2(PHANPY),
+ EC_DUPLICATES(2),
+ EC_POKEMON(PICHU),
+ EC_POKEMON2(PICHU),
+ EC_POKEMON2(CLEFAIRY),
+ EC_POKEMON2(CLEFFA),
+ EC_DUPLICATES(2),
+ EC_POKEMON(PIKACHU),
+ EC_POKEMON2(PIKACHU),
+ EC_MOVE(SPORE),
+ EC_DUPLICATES(2),
+ EC_POKEMON(PINSIR),
+ EC_POKEMON2(PINSIR),
+ EC_POKEMON2(CLEFABLE),
+ EC_MOVE2(SPLASH),
+ EC_WORD_CHAT,
+ EC_WORD_PLUS,
+ EC_WORD_PLUSH_DOLL,
+ EC_POKEMON(PLUSLE),
+ EC_WORD_POKEDEX,
+ EC_WORD_POKEMON,
+ EC_WORD_POKENAV,
+ EC_WORD_POKEBLOCK,
+ EC_WORD_PKRS,
+ EC_POKEMON2(PONYTA),
+ EC_WORD_NEW,
+ EC_WORD_POPULAR,
+ EC_POKEMON2(FARFETCHD),
+ EC_POKEMON2(PORYGON),
+ EC_POKEMON2(PORYGON2),
+ EC_WORD_MAIL,
+ EC_POKEMON2(SHUCKLE),
+ EC_MOVE(FOCUS_PUNCH),
+ EC_WORD_FORECAST,
+ EC_MOVE2(BULK_UP),
+ EC_MOVE2(BEAT_UP),
+ EC_WORD_SNORT,
+ EC_POKEMON2(ESPEON),
+ EC_WORD_PSYCHIC,
+ EC_MOVE(PSYCH_UP),
+ EC_MOVE(PSYCHIC),
+ EC_MOVE(KINESIS),
+ EC_MOVE(PSYBEAM),
+ EC_MOVE(PSYWAVE),
+ EC_WORD_SHIELD_DUST,
+ EC_POKEMON(DUSTOX),
+ EC_WORD_WHITE_SMOKE,
+ EC_MOVE(POWDER_SNOW),
+ EC_DUPLICATES(2),
+ EC_POKEMON(JIGGLYPUFF),
+ EC_POKEMON2(JIGGLYPUFF),
+ EC_WORD_POINTS,
+ EC_POKEMON2(PUPITAR),
+ EC_POKEMON(BALTOY),
+};
+
+#define EC_WBL_OFFSET_Q ARRAY_COUNT(gEasyChatWordsByLetter_P) + EC_WBL_OFFSET_P
+
+u16 gEasyChatWordsByLetter_Q[] = {
+ EC_POKEMON2(POLIWRATH),
+ EC_POKEMON2(POLIWAG),
+ EC_POKEMON2(POLIWHIRL),
+ EC_POKEMON2(POLITOED),
+ EC_POKEMON2(SWINUB),
+ EC_POKEMON(TORKOAL),
+};
+
+#define EC_WBL_OFFSET_R ARRAY_COUNT(gEasyChatWordsByLetter_Q) + EC_WBL_OFFSET_Q
+
+u16 gEasyChatWordsByLetter_R[] = {
+ EC_POKEMON2(TYROGUE),
+ EC_WORD_RADIO,
+ EC_DUPLICATES(2),
+ EC_POKEMON(RAICHU),
+ EC_POKEMON2(RAICHU),
+ EC_POKEMON2(RAIKOU),
+ EC_MOVE2(VINE_WHIP),
+ EC_POKEMON2(PRIMEAPE),
+ EC_MOVE(RAGE),
+ EC_MOVE2(RAZOR_LEAF),
+ EC_WORD_RIPPED,
+ EC_POKEMON2(RATTATA),
+ EC_POKEMON2(RATICATE),
+ EC_MOVE2(THIEF),
+ EC_MOVE(SMOKESCREEN),
+ EC_WORD_ROUGH_SKIN,
+ EC_POKEMON2(CATERPIE),
+ EC_POKEMON(RAYQUAZA),
+ EC_MOVE2(HELPING_HAND),
+ EC_WORD_RIGHT,
+ EC_WORD_TALKING,
+ EC_WORD_TALK,
+ EC_MOVE2(REFLECT),
+ EC_WORD_RULE,
+ EC_WORD_RAIN_DISH,
+ EC_MOVE(RAIN_DANCE),
+ EC_POKEMON(REGICE),
+ EC_POKEMON(REGIROCK),
+ EC_POKEMON(REGISTEEL),
+ EC_WORD_ENOUGH,
+ EC_WORD_TRAVEL,
+ EC_POKEMON2(SNORLAX),
+ EC_POKEMON(RELICANTH),
+ EC_POKEMON2(REMORAID),
+ EC_WORD_RUN,
+ EC_WORD_RUNS,
+ EC_POKEMON(GROVYLE),
+ EC_WORD_CONCEDE,
+ EC_POKEMON2(EKANS),
+ EC_WORD_CORRECT,
+ EC_WORD_AGREE,
+ EC_MOVE(SMELLING_SALT),
+ EC_DUPLICATES(2),
+ EC_POKEMON(RHYHORN),
+ EC_POKEMON2(RHYHORN),
+ EC_MOVE(DOUBLE_EDGE),
+ EC_WORD_RIVAL,
+ EC_DUPLICATES(2),
+ EC_POKEMON(RHYDON),
+ EC_POKEMON2(RHYDON),
+ EC_WORD_STURDY,
+ EC_WORD_SHADY,
+ EC_MOVE2(ROLE_PLAY),
+ EC_WORD_ROMANTIC,
+ EC_POKEMON(ROSELIA),
+ EC_POKEMON2(JYNX),
+ EC_WORD_RPG,
+ EC_WORD_SMELL_YA,
+ EC_WORD_RUBY,
+ EC_MOVE2(BLOCK),
+ EC_MOVE(RETURN),
+ EC_MOVE2(QUICK_ATTACK),
+ EC_WORD_HALL_OF_FAME,
+ EC_WORD_DESTROYED,
+ EC_MOVE(TAIL_WHIP),
+};
+
+#define EC_WBL_OFFSET_S ARRAY_COUNT(gEasyChatWordsByLetter_R) + EC_WBL_OFFSET_R
+
+u16 gEasyChatWordsByLetter_S[] = {
+ EC_WORD_DROOLING,
+ EC_WORD_THINGS,
+ EC_POKEMON2(METAPOD),
+ EC_POKEMON(GOREBYSS),
+ EC_WORD_INCREDIBLE,
+ EC_WORD_SAYS,
+ EC_WORD_SAID,
+ EC_WORD_COLLECT,
+ EC_WORD_COLLECTION,
+ EC_WORD_SATURDAY,
+ EC_POKEMON(SEEDOT),
+ EC_DUPLICATES(2),
+ EC_POKEMON(SANDSLASH),
+ EC_POKEMON2(SANDSLASH),
+ EC_DUPLICATES(2),
+ EC_POKEMON(SANDSHREW),
+ EC_POKEMON2(SANDSHREW),
+ EC_MOVE(SAND_TOMB),
+ EC_WORD_SAND_VEIL,
+ EC_DUPLICATES(2),
+ EC_WORD_SAND_STREAM,
+ EC_MOVE(SANDSTORM),
+ EC_MOVE(SAND_ATTACK),
+ EC_WORD_DOCILE,
+ EC_WORD_SAPPHIRE,
+ EC_POKEMON2(VICTREEBEL),
+ EC_WORD_SUCTION_CUPS,
+ EC_MOVE2(ACID),
+ EC_MOVE2(ACID_ARMOR),
+ EC_MOVE2(DETECT),
+ EC_MOVE2(SKULL_BASH),
+ EC_MOVE2(HYPER_VOICE),
+ EC_POKEMON(SILCOON),
+ EC_MOVE(SHARPEN),
+ EC_WORD_APPRECIATE,
+ EC_MOVE(DIG),
+ EC_WORD_LOOKS,
+ EC_WORD_SEEMS,
+ EC_WORD_SHINE,
+ EC_MOVE2(LUSTER_PURGE),
+ EC_WORD_BREAK,
+ EC_WORD_HYPER_CUTTER,
+ EC_POKEMON2(SCIZOR),
+ EC_WORD_JOKING,
+ EC_WORD_TRENDY,
+ EC_POKEMON2(SQUIRTLE),
+ EC_POKEMON2(WARTORTLE),
+ EC_WORD_SLEEP,
+ EC_MOVE2(SLEEP_POWDER),
+ EC_MOVE2(SLEEP_TALK),
+ EC_WORD_SMACK,
+ EC_WORD_SMITE,
+ EC_MOVE2(SLUDGE),
+ EC_WORD_WELL,
+ EC_WORD_BAD,
+ EC_MOVE(LICK),
+ EC_WORD_TWIRLING,
+ EC_WORD_SLEPT,
+ EC_WORD_AWFUL,
+ EC_MOVE(SLASH),
+ EC_WORD_BEAT,
+ EC_POKEMON(SWALOT),
+ EC_POKEMON(GULPIN),
+ EC_POKEMON2(LICKITUNG),
+ EC_WORD_FINISH,
+ EC_MOVE(FLATTER),
+ EC_WORD_SCATTER,
+ EC_POKEMON(BARBOACH),
+ EC_MOVE2(PECK),
+ EC_MOVE(CLAMP),
+ EC_MOVE(SNORE),
+ EC_WORD_TRUANT,
+ EC_DUPLICATES(2),
+ EC_POKEMON(SLUGMA),
+ EC_POKEMON2(SLUGMA),
+ EC_WORD_FAST,
+ EC_POKEMON(SNORUNT),
+ EC_WORD_LOVEY_DOVEY,
+ EC_WORD_SADLY,
+ EC_MOVE(ODOR_SLEUTH),
+ EC_MOVE2(SHOCK_WAVE),
+ EC_WORD_KIDDING,
+ EC_WORD_THOSE_ARE,
+ EC_WORD_BEAUTIFUL,
+ EC_WORD_FORGIVE,
+ EC_WORD_GO_EASY,
+ EC_WORD_BEAUTY,
+ EC_WORD_TERRIBLE,
+ EC_WORD_CRY,
+ EC_WORD_CRIES,
+ EC_WORD_SCHOOL,
+ EC_WORD_SHAKY,
+ EC_MOVE2(PROTECT),
+ EC_WORD_THICK,
+ EC_WORD_WEAK,
+ EC_POKEMON(TAILLOW),
+ EC_POKEMON(SWELLOW),
+ EC_WORD_LEVITATE,
+ EC_MOVE2(TAIL_GLOW),
+ EC_WORD_HARD,
+ EC_MOVE2(SWORDS_DANCE),
+ EC_WORD_SISTER,
+ EC_WORD_GIDDY,
+ EC_WORD_MOMENTUM,
+ EC_DUPLICATES(2),
+ EC_POKEMON(KINGDRA),
+ EC_POKEMON2(KINGDRA),
+ EC_POKEMON(SEALEO),
+ EC_WORD_SPIRIT,
+ EC_DUPLICATES(2),
+ EC_POKEMON(SEADRA),
+ EC_POKEMON2(SEADRA),
+ EC_POKEMON(SPHEAL),
+ EC_DUPLICATES(2),
+ EC_POKEMON(HORSEA),
+ EC_POKEMON2(HORSEA),
+ EC_WORD_WORKS,
+ EC_MOVE2(FUTURE_SIGHT),
+ EC_WORD_VERY,
+ EC_WORD_BE,
+ EC_WORD_SHALLOW,
+ EC_WORD_HIS,
+ EC_WORD_BEING,
+ EC_WORD_SINCE,
+ EC_WORD_RARE,
+ EC_POKEMON(ZANGOOSE),
+ EC_WORD_SERVICE,
+ EC_WORD_SIGH,
+ EC_POKEMON(SHUPPET),
+ EC_POKEMON2(SCYTHER),
+ EC_WORD_SHE,
+ EC_WORD_THEY_VE,
+ EC_WORD_SOME,
+ EC_WORD_SHE_IS,
+ EC_WORD_WOMAN,
+ EC_WORD_THEY_RE,
+ EC_WORD_SHE_WAS,
+ EC_WORD_THEY_WERE,
+ EC_WORD_VICTORY,
+ EC_WORD_CAN_T_WIN,
+ EC_WORD_WHEN_I_WIN,
+ EC_WORD_SEES,
+ EC_MOVE2(LEER),
+ EC_MOVE(SILVER_WIND),
+ EC_DUPLICATES(2),
+ EC_POKEMON(ALAKAZAM),
+ EC_POKEMON2(ALAKAZAM),
+ EC_WORD_THOSE,
+ EC_WORD_AREN_T,
+ EC_WORD_SENSE,
+ EC_DUPLICATES(2),
+ EC_POKEMON(HERACROSS),
+ EC_POKEMON2(HERACROSS),
+ EC_POKEMON2(GLIGAR),
+ EC_MOVE2(SLAM),
+ EC_DUPLICATES(2),
+ EC_POKEMON(GRIMER),
+ EC_POKEMON2(GRIMER),
+ EC_DUPLICATES(2),
+ EC_POKEMON(MUK),
+ EC_POKEMON2(MUK),
+ EC_POKEMON2(BUTTERFREE),
+ EC_MOVE(SMOG),
+ EC_DUPLICATES(2),
+ EC_POKEMON(WEEZING),
+ EC_POKEMON2(WEEZING),
+ EC_DUPLICATES(2),
+ EC_POKEMON(KOFFING),
+ EC_POKEMON2(KOFFING),
+ EC_POKEMON2(SNEASEL),
+ EC_POKEMON2(PERSIAN),
+ EC_POKEMON2(SNUBBULL),
+ EC_WORD_SO,
+ EC_WORD_AS_MUCH_AS,
+ EC_WORD_SOFTWARE,
+ EC_MOVE(SOLAR_BEAM),
+ EC_WORD_WEREN_T,
+ EC_WORD_SUMMER,
+ EC_MOVE(EXTRASENSORY),
+ EC_WORD_SONG,
+ EC_WORD_SONGS,
+ EC_MOVE2(SUNNY_DAY),
+ EC_POKEMON(SOLROCK),
+ EC_POKEMON2(SUNFLORA),
+ EC_POKEMON2(SUNKERN),
+ EC_WORD_SUNDAY,
+ EC_WORD_WORRY,
+ EC_WORD_CARE,
+ EC_WORD_CARES,
+ EC_WORD_SORRY,
+ EC_MOVE(TICKLE),
+ EC_WORD_LATE,
+ EC_WORD_LATER,
+ EC_WORD_WALK,
+ EC_WORD_THICK_FAT,
+ EC_MOVE2(MIRROR_COAT),
+ EC_MOVE(MIRROR_MOVE),
+ EC_WORD_GAME,
+ EC_WORD_PLAY,
+ EC_WORD_PLAYS,
+ EC_WORD_PLAYED,
+ EC_WORD_TOYS,
+ EC_MOVE(SPIDER_WEB),
+ EC_POKEMON(SPOINK),
+ EC_WORD_EFFECT_SPORE,
+ EC_WORD_SPORTS,
+ EC_MOVE(FOLLOW_ME),
+ EC_MOVE2(BOUNCE),
+ EC_MOVE2(JUMP_KICK),
+ EC_MOVE(SHADOW_BALL),
+ EC_MOVE(STUN_SPORE),
+ EC_MOVE2(SPIKES),
+ EC_MOVE2(BATON_PASS),
+ EC_WORD_STEEL,
+ EC_MOVE2(STEEL_WING),
+ EC_POKEMON2(STEELIX),
+ EC_MOVE2(BARRAGE),
+ EC_MOVE2(STOMP),
+ EC_WORD_TOUGH,
+ EC_DUPLICATES(2),
+ EC_WORD_TOUGHNESS,
+ EC_MOVE(STRENGTH),
+ EC_WORD_STRONG,
+ EC_DUPLICATES(2),
+ EC_POKEMON(STARMIE),
+ EC_POKEMON2(STARMIE),
+ EC_WORD_START,
+ EC_WORD_STATIC,
+ EC_WORD_INSTEAD,
+ EC_MOVE(ROCK_SLIDE),
+ EC_WORD_ROCK_SOLID,
+ EC_WORD_ROCK_HEAD,
+ EC_MOVE(ROCK_THROW),
+ EC_DUPLICATES(2),
+ EC_POKEMON(STARYU),
+ EC_POKEMON2(STARYU),
+ EC_MOVE(METEOR_MASH),
+ EC_MOVE(SWIFT),
+ EC_POKEMON(AGGRON),
+ EC_POKEMON(LAIRON),
+ EC_POKEMON(ARON),
+ EC_WORD_STOP,
+ EC_WORD_STORY,
+ EC_WORD_STRATEGY,
+ EC_WORD_SEEK,
+ EC_WORD_FIGHTS,
+ EC_WORD_BANG,
+ EC_WORD_TORRENT,
+ EC_WORD_SEARCH,
+ EC_POKEMON2(SUICUNE),
+ EC_POKEMON(SWAMPERT),
+ EC_WORD_SUPER,
+ EC_MOVE2(SUPERSONIC),
+ EC_MOVE(SUPER_FANG),
+ EC_MOVE2(SURF),
+ EC_WORD_SYNCHRONIZE,
+ EC_MOVE(SYNTHESIS),
+ EC_WORD_SYSTEM,
+};
+
+#define EC_WBL_OFFSET_T ARRAY_COUNT(gEasyChatWordsByLetter_S) + EC_WBL_OFFSET_S
+
+u16 gEasyChatWordsByLetter_T[] = {
+ EC_MOVE2(TACKLE),
+ EC_WORD_DAY,
+ EC_WORD_HI,
+ EC_WORD_EXCUSE,
+ EC_WORD_DAYS,
+ EC_MOVE2(SLACK_OFF),
+ EC_WORD_DAYTIME,
+ EC_WORD_DAILY,
+ EC_WORD_TALENT,
+ EC_POKEMON2(TANGELA),
+ EC_POKEMON(BELDUM),
+ EC_POKEMON2(PINECO),
+ EC_WORD_AUNT,
+ EC_WORD_DANCE,
+ EC_MOVE2(CAMOUFLAGE),
+ EC_WORD_ALLOWANCE,
+ EC_POKEMON2(PIDGEOTTO),
+ EC_POKEMON2(PIDGEOT),
+ EC_POKEMON2(PIDGEY),
+ EC_MOVE2(DIVE),
+ EC_MOVE2(TEETER_DANCE),
+ EC_POKEMON2(TAUROS),
+ EC_WORD_TRADE,
+ EC_POKEMON2(TEDDIURSA),
+ EC_WORD_PHONE,
+ EC_MOVE2(TELEPORT),
+ EC_MOVE2(MACH_PUNCH),
+ EC_WORD_OWN_TEMPO,
+ EC_WORD_SPEED_BOOST,
+ EC_POKEMON(SHIFTRY),
+ EC_DUPLICATES(2),
+ EC_POKEMON(TENTACOOL),
+ EC_POKEMON2(TENTACOOL),
+ EC_DUPLICATES(2),
+ EC_POKEMON(TENTACRUEL),
+ EC_POKEMON2(TENTACRUEL),
+ EC_WORD_TEST,
+ EC_WORD_EXPENSIVE,
+ EC_WORD_DEEP,
+ EC_WORD_LOWS,
+ EC_WORD_DAUGHTER,
+ EC_MOVE(LOVELY_KISS),
+ EC_POKEMON2(TOGEPI),
+ EC_POKEMON2(TOGETIC),
+ EC_POKEMON(SHARPEDO),
+ EC_WORD_TOP,
+ EC_POKEMON2(TYPHLOSION),
+ EC_MOVE2(TOXIC),
+ EC_POKEMON2(CUBONE),
+ EC_WORD_TRAINER,
+ EC_WORD_TRAIN,
+ EC_WORD_TRAINS,
+ EC_POKEMON(RALTS),
+ EC_WORD_DREAM,
+ EC_POKEMON2(DROWZEE),
+ EC_MOVE2(DREAM_EATER),
+ EC_POKEMON2(MISDREAVUS),
+ EC_WORD_SAD,
+ EC_WORD_HIT,
+ EC_MOVE2(TRICK),
+ EC_WORD_MEETS,
+ EC_WORD_DRINK,
+ EC_WORD_DRINKS,
+ EC_MOVE2(TRI_ATTACK),
+ EC_POKEMON(TROPIUS),
+ EC_WORD_EVEN_SO,
+ EC_MOVE2(FALSE_SWIPE),
+ EC_MOVE(FAKE_TEARS),
+ EC_WORD_TRUMP_CARD,
+ EC_WORD_BYE_BYE,
+ EC_WORD_GOOD_BYE,
+ EC_WORD_TCH,
+ EC_MOVE(RAPID_SPIN),
+ EC_MOVE(EXTREME_SPEED),
+ EC_MOVE2(HI_JUMP_KICK),
+ EC_WORD_TOURNAMENT,
+ EC_POKEMON2(BLASTOISE),
+ EC_POKEMON(CACNEA),
+ EC_WORD_DOES,
+ EC_WORD_TYPE,
+ EC_WORD_DUDE,
+ EC_POKEMON2(CROCONAW),
+};
+
+#define EC_WBL_OFFSET_U ARRAY_COUNT(gEasyChatWordsByLetter_T) + EC_WBL_OFFSET_T
+
+u16 gEasyChatWordsByLetter_U[] = {
+ EC_WORD_OVER,
+ EC_WORD_HUSTLE,
+ EC_WORD_EXCESS,
+ EC_WORD_TOMORROW,
+ EC_MOVE2(SNATCH),
+ EC_WORD_SURPRISE,
+ EC_MOVE(SUBMISSION),
+ EC_WORD_OVERDO,
+ EC_MOVE(VITAL_THROW),
+ EC_WORD_AWW,
+ EC_WORD_UH_HUH,
+ EC_MOVE(SONIC_BOOM),
+ EC_POKEMON2(WEEPINBELL),
+ EC_WORD_UPSIDE_DOWN,
+ EC_WORD_ABOUT,
+ EC_MOVE(CONSTRICT),
+ EC_MOVE2(CONVERSION),
+ EC_MOVE2(CONVERSION_2),
+ EC_WORD_AND,
+ EC_WORD_UNBELIEVABLE,
+ EC_WORD_SCARY,
+ EC_WORD_DARK,
+ EC_WORD_IMPOSSIBLE,
+ EC_WORD_INVINCIBLE,
+ EC_WORD_OUR,
+ EC_WORD_BELOW,
+ EC_WORD_ENTERTAINING,
+ EC_WORD_NO_MATCH,
+ EC_WORD_LESSONS,
+ EC_WORD_UNAVOIDABLE,
+ EC_WORD_TRY,
+ EC_WORD_LACKING,
+ EC_WORD_VACATION,
+ EC_POKEMON2(URSARING),
+};
+
+#define EC_WBL_OFFSET_V ARRAY_COUNT(gEasyChatWordsByLetter_U) + EC_WBL_OFFSET_U
+
+u16 gEasyChatWordsByLetter_V[] = {
+ EC_WORD_FATHER,
+ EC_WORD_DATE,
+ EC_WORD_ALLY,
+ EC_WORD_DARN,
+ EC_MOVE(PURSUIT),
+ EC_MOVE2(REVENGE),
+ EC_WORD_FORGET,
+ EC_WORD_FORGETS,
+ EC_WORD_ADORE,
+ EC_MOVE2(TAUNT),
+ EC_WORD_MISHEARD,
+ EC_WORD_IF_I_LOSE,
+ EC_WORD_LOSE,
+ EC_WORD_LOST,
+ EC_WORD_LOSS,
+ EC_WORD_LIKELY_TO,
+ EC_WORD_WEIRD,
+ EC_WORD_DIFFERENT,
+ EC_WORD_DISAPPEAR,
+ EC_WORD_SINK,
+ EC_WORD_VERSION,
+ EC_WORD_PROMISE,
+ EC_WORD_UNDERSTOOD,
+ EC_WORD_NATURALLY,
+ EC_WORD_HIDDEN,
+ EC_WORD_UNDERSTAND,
+ EC_WORD_UNDERSTANDS,
+ EC_WORD_TRIES,
+ EC_WORD_TRUST,
+ EC_WORD_USING,
+ EC_WORD_CONFUSED,
+ EC_MOVE2(INGRAIN),
+ EC_MOVE2(SWALLOW),
+ EC_WORD_APOLOGIZE,
+ EC_MOVE2(STRUGGLE),
+ EC_POKEMON(VIBRAVA),
+ EC_WORD_A_LOT,
+ EC_WORD_MUCH,
+ EC_MOVE2(MEGAHORN),
+ EC_WORD_MAYBE,
+ EC_POKEMON(SEVIPER),
+ EC_MOVE(HEAL_BELL),
+ EC_WORD_KTHX_BYE,
+ EC_POKEMON(VOLBEAT),
+ EC_WORD_FULL,
+ EC_WORD_VOLT_ABSORB,
+ EC_POKEMON(MANECTRIC),
+ EC_POKEMON2(MAREEP),
+ EC_DUPLICATES(2),
+ EC_POKEMON(VOLTORB),
+ EC_POKEMON2(VOLTORB),
+ EC_WORD_FROM,
+ EC_WORD_BEFORE,
+ EC_WORD_LIKES,
+ EC_WORD_FRONT,
+ EC_WORD_PRETEND,
+ EC_DUPLICATES(2),
+ EC_POKEMON(NINETALES),
+ EC_POKEMON2(NINETALES),
+ EC_DUPLICATES(2),
+ EC_POKEMON(VULPIX),
+ EC_POKEMON2(VULPIX),
+};
+
+#define EC_WBL_OFFSET_W ARRAY_COUNT(gEasyChatWordsByLetter_V) + EC_WBL_OFFSET_V
+
+u16 gEasyChatWordsByLetter_W[] = {
+ EC_WORD_WAAAH,
+ EC_POKEMON2(FLAAFFY),
+ EC_POKEMON(SWABLU),
+ EC_WORD_GUARD,
+ EC_MOVE(GROWTH),
+ EC_WORD_WAKES_UP,
+ EC_WORD_RICKETY,
+ EC_WORD_WAHAHAHA,
+ EC_WORD_CHOICE,
+ EC_WORD_CHOOSE,
+ EC_WORD_WHILE,
+ EC_WORD_TRULY,
+ EC_POKEMON(WAILMER),
+ EC_POKEMON(WAILORD),
+ EC_POKEMON(WALREIN),
+ EC_MOVE(ROLLOUT),
+ EC_WORD_WALKING,
+ EC_WORD_WALKS,
+ EC_MOVE2(TRANSFORM),
+ EC_WORD_WAS,
+ EC_WORD_WASN_T,
+ EC_WORD_BEEN,
+ EC_WORD_WHY,
+ EC_WORD_WHAT,
+ EC_WORD_WHAT_S_UP_QUES,
+ EC_WORD_WATER,
+ EC_WORD_CHANNEL,
+ EC_WORD_SWIFT_SWIM,
+ EC_POKEMON(WURMPLE),
+ EC_POKEMON2(SPINARAK),
+ EC_WORD_CHANGE,
+ EC_WORD_SHADOW_TAG,
+ EC_MOVE2(SOFT_BOILED),
+ EC_WORD_REFUSE,
+ EC_WORD_MEET,
+ EC_WORD_KNOWS,
+ EC_MOVE(MIST),
+ EC_WORD_FAR,
+ EC_WORD_GO_AHEAD,
+ EC_WORD_WHICH,
+ EC_POKEMON(WHISCASH),
+ EC_WORD_WORLD,
+ EC_WORD_WHOM,
+ EC_WORD_A_TINY_BIT,
+ EC_WORD_LESS,
+ EC_WORD_IF,
+ EC_WORD_WHO,
+ EC_WORD_WHO_IS,
+ EC_WORD_WON_T,
+ EC_WORD_WILL,
+ EC_WORD_THROW,
+ EC_WORD_STICKY_HOLD,
+ EC_MOVE(SKILL_SWAP),
+ EC_WORD_NATURE,
+ EC_WORD_WHOSE,
+ EC_WORD_CONTEST,
+ EC_MOVE(WHIRLPOOL),
+ EC_WORD_IMPORTANT,
+ EC_MOVE2(WRAP),
+ EC_WORD_HOW_DO,
+ EC_WORD_HUH_QUES,
+ EC_POKEMON(CRADILY),
+ EC_POKEMON2(FURRET),
+ EC_POKEMON2(SENTRET),
+ EC_WORD_WILD,
+ EC_WORD_WANTS,
+ EC_MOVE(MIND_READER),
+ EC_WORD_WELCOME,
+ EC_MOVE2(TWISTER),
+ EC_MOVE(AIR_CUTTER),
+ EC_MOVE(GUST),
+ EC_POKEMON(WINGULL),
+ EC_WORD_WINTER,
+ EC_WORD_WE,
+ EC_WORD_WE_VE,
+ EC_WORD_WE_RE,
+ EC_WORD_SPIRALING,
+ EC_MOVE2(WHIRLWIND),
+ EC_WORD_BECOMES,
+ EC_WORD_WILL_BE_HERE,
+ EC_WORD_QUITE,
+ EC_WORD_KNOW,
+ EC_WORD_WHERE,
+ EC_WORD_WEEK,
+ EC_DUPLICATES(2),
+ EC_POKEMON(WOBBUFFET),
+ EC_POKEMON2(WOBBUFFET),
+ EC_WORD_CLOUD_NINE,
+ EC_WORD_WROOOAAR_EXCL,
+ EC_WORD_WORD,
+ EC_WORD_WOW,
+ EC_MOVE2(DYNAMIC_PUNCH),
+ EC_WORD_WONDER,
+ EC_WORD_WONDER_GUARD,
+ EC_MOVE2(WISH),
+ EC_WORD_WOULD,
+ EC_WORD_WERE,
+ EC_WORD_INCREASING,
+ EC_WORD_SILKY,
+ EC_WORD_ANGER,
+ EC_MOVE(OUTRAGE),
+ EC_WORD_ANGRY,
+};
+
+#define EC_WBL_OFFSET_X ARRAY_COUNT(gEasyChatWordsByLetter_W) + EC_WBL_OFFSET_W
+
+u16 gEasyChatWordsByLetter_X[] = {
+ EC_DUPLICATES(2),
+ EC_POKEMON(XATU),
+ EC_POKEMON2(XATU),
+};
+
+#define EC_WBL_OFFSET_Y ARRAY_COUNT(gEasyChatWordsByLetter_X) + EC_WBL_OFFSET_X
+
+u16 gEasyChatWordsByLetter_Y[] = {
+ EC_POKEMON2(YANMA),
+ EC_WORD_YEAH,
+ EC_WORD_YEAH_YEAH,
+ EC_WORD_COUPLE,
+};
+
+#define EC_WBL_OFFSET_Z ARRAY_COUNT(gEasyChatWordsByLetter_Y) + EC_WBL_OFFSET_Y
+
+u16 gEasyChatWordsByLetter_Z[] = {
+ EC_WORD_COUNT_ON,
+ EC_MOVE2(PAY_DAY),
+ EC_POKEMON2(ZAPDOS),
+ EC_MOVE2(MAGICAL_LEAF),
+ EC_WORD_SHOW,
+ EC_WORD_TIME,
+ EC_WORD_TIMES,
+ EC_MOVE2(CRUSH_CLAW),
+ EC_MOVE(CUT),
+ EC_MOVE(ROCK_SMASH),
+ EC_WORD_AIM,
+ EC_MOVE2(LOCK_ON),
+ EC_POKEMON(ZIGZAGOON),
+ EC_WORD_FIERY,
+ EC_WORD_WOBBLY,
+ EC_POKEMON(SABLEYE),
+ EC_WORD_LOSING,
+ EC_MOVE2(FURY_CUTTER),
+ EC_WORD_TO,
+ EC_WORD_TO_ME,
+ EC_WORD_TOO_WEAK,
+ EC_WORD_TOO_LATE,
+ EC_WORD_TOO_STRONG,
+ EC_DUPLICATES(2),
+ EC_POKEMON(ZUBAT),
+ EC_POKEMON2(ZUBAT),
+ EC_WORD_SATISFIED,
+ EC_MOVE(ENCORE),
+ EC_WORD_LISTEN,
+ EC_WORD_BACK,
+ EC_WORD_TOGETHER,
+ EC_WORD_SPECTATOR,
+ EC_MOVE2(ASSIST),
+ EC_POKEMON(DUSCLOPS),
+ EC_POKEMON(DUSKULL),
+};
+
+#define EC_WBL_OFFSET_End ARRAY_COUNT(gEasyChatWordsByLetter_Z) + EC_WBL_OFFSET_Z
+
+u16 gEasyChatWordsByLetter_End[] = {
+};
+
+u16 gEasyChatWordsByLetter[] = {
+ EC_WBL_OFFSET_Others,
+ EC_WBL_OFFSET_A,
+ EC_WBL_OFFSET_B,
+ EC_WBL_OFFSET_C,
+ EC_WBL_OFFSET_D,
+ EC_WBL_OFFSET_E,
+ EC_WBL_OFFSET_F,
+ EC_WBL_OFFSET_G,
+ EC_WBL_OFFSET_H,
+ EC_WBL_OFFSET_I,
+ EC_WBL_OFFSET_J,
+ EC_WBL_OFFSET_K,
+ EC_WBL_OFFSET_L,
+ EC_WBL_OFFSET_M,
+ EC_WBL_OFFSET_N,
+ EC_WBL_OFFSET_O,
+ EC_WBL_OFFSET_P,
+ EC_WBL_OFFSET_Q,
+ EC_WBL_OFFSET_R,
+ EC_WBL_OFFSET_S,
+ EC_WBL_OFFSET_T,
+ EC_WBL_OFFSET_U,
+ EC_WBL_OFFSET_V,
+ EC_WBL_OFFSET_W,
+ EC_WBL_OFFSET_X,
+ EC_WBL_OFFSET_Y,
+ EC_WBL_OFFSET_Z,
+ EC_WBL_OFFSET_End,
+};
+
+#endif // DATA_TEXT_EASY_CHAT_WORDS_BY_LETTER_DE
diff --git a/src/data/text/easy_chat/words_by_letter_en.h b/src/data/text/easy_chat/words_by_letter_en.h
new file mode 100644
index 000000000..0f0612220
--- /dev/null
+++ b/src/data/text/easy_chat/words_by_letter_en.h
@@ -0,0 +1,2042 @@
+#ifndef DATA_TEXT_EASY_CHAT_WORDS_BY_LETTER_EN
+#define DATA_TEXT_EASY_CHAT_WORDS_BY_LETTER_EN
+
+#define EC_DUPLICATES(count) (0xFF00 + (count))
+#include "constants/species.h"
+
+u16 gEasyChatWordsAlphabetized[] = {
+};
+
+#define EC_WBL_OFFSET_Others 0
+
+u16 gEasyChatWordsByLetter_Others[] = {
+ EC_WORD_EXCL,
+ EC_WORD_EXCL_EXCL,
+ EC_WORD_DASH,
+ EC_WORD_DASH_DASH_DASH,
+ EC_WORD_ELLIPSIS,
+ EC_WORD_ELLIPSIS_EXCL,
+ EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS,
+ EC_WORD_1_HIT_KO_EXCL,
+ EC_WORD_QUES,
+ EC_WORD_QUES_EXCL,
+};
+
+#define EC_WBL_OFFSET_A ARRAY_COUNT(gEasyChatWordsByLetter_Others) + EC_WBL_OFFSET_Others
+
+u16 gEasyChatWordsByLetter_A[] = {
+ EC_WORD_A,
+ EC_WORD_A_LITTLE,
+ EC_WORD_A_LOT,
+ EC_WORD_A_TINY_BIT,
+ EC_WORD_ABOUT,
+ EC_WORD_ABOVE,
+ EC_DUPLICATES(2),
+ EC_POKEMON(ABRA),
+ EC_POKEMON2(ABRA),
+ EC_WORD_ABSENT,
+ EC_POKEMON(ABSOL),
+ EC_WORD_ABSOLUTELY,
+ EC_MOVE(ABSORB),
+ EC_WORD_ACCEPT,
+ EC_MOVE2(ACID),
+ EC_MOVE2(ACID_ARMOR),
+ EC_WORD_ADORE,
+ EC_WORD_ADULT,
+ EC_WORD_ADVENTURE,
+ EC_MOVE2(AERIAL_ACE),
+ EC_MOVE(AEROBLAST),
+ EC_POKEMON2(AERODACTYL),
+ EC_WORD_AFTER,
+ EC_WORD_AGE,
+ EC_POKEMON(AGGRON),
+ EC_MOVE(AGILITY),
+ EC_WORD_AGREE,
+ EC_WORD_AHAHA,
+ EC_WORD_AIM,
+ EC_POKEMON2(AIPOM),
+ EC_MOVE(AIR_CUTTER),
+ EC_WORD_AIR_LOCK,
+ EC_WORD_AIYEEH,
+ EC_DUPLICATES(2),
+ EC_POKEMON(ALAKAZAM),
+ EC_POKEMON2(ALAKAZAM),
+ EC_WORD_ALL,
+ EC_WORD_ALL_RIGHT,
+ EC_WORD_ALLOW,
+ EC_WORD_ALLOWANCE,
+ EC_WORD_ALLY,
+ EC_WORD_ALMOST,
+ EC_WORD_ALONE,
+ EC_WORD_ALSO,
+ EC_WORD_ALT_COLOR,
+ EC_POKEMON(ALTARIA),
+ EC_WORD_ALTHOUGH,
+ EC_WORD_ALWAYS,
+ EC_WORD_AM,
+ EC_MOVE2(AMNESIA),
+ EC_POKEMON2(AMPHAROS),
+ EC_WORD_AMUSING,
+ EC_WORD_AN,
+ EC_MOVE(ANCIENT_POWER),
+ EC_WORD_AND,
+ EC_WORD_ANGER,
+ EC_WORD_ANGERS,
+ EC_WORD_ANGRY,
+ EC_WORD_ANIME,
+ EC_POKEMON(ANORITH),
+ EC_WORD_ANOTHER,
+ EC_WORD_ANTICIPATION,
+ EC_WORD_ANY,
+ EC_WORD_ANYWHERE,
+ EC_WORD_APOLOGIZE,
+ EC_WORD_APPEAL,
+ EC_WORD_APPEAR,
+ EC_WORD_APPEARS,
+ EC_WORD_APPRECIATE,
+ EC_WORD_APPROVED,
+ EC_POKEMON2(ARBOK),
+ EC_POKEMON2(ARCANINE),
+ EC_WORD_ARE,
+ EC_WORD_AREN_T,
+ EC_WORD_ARENA_TRAP,
+ EC_POKEMON2(ARIADOS),
+ EC_MOVE2(ARM_THRUST),
+ EC_POKEMON(ARMALDO),
+ EC_MOVE(AROMATHERAPY),
+ EC_POKEMON(ARON),
+ EC_WORD_AROUND,
+ EC_WORD_ARRGH,
+ EC_POKEMON2(ARTICUNO),
+ EC_WORD_AS,
+ EC_WORD_AS_IF,
+ EC_WORD_AS_MUCH_AS,
+ EC_MOVE2(ASSIST),
+ EC_MOVE(ASTONISH),
+ EC_WORD_AT,
+ EC_WORD_ATTACK,
+ EC_MOVE2(ATTRACT),
+ EC_WORD_AUNT,
+ EC_MOVE(AURORA_BEAM),
+ EC_WORD_AVANT_GARDE,
+ EC_WORD_AWAY,
+ EC_WORD_AWESOME,
+ EC_WORD_AWFUL,
+ EC_WORD_AWFULLY,
+ EC_WORD_AWW,
+ EC_DUPLICATES(2),
+ EC_POKEMON(AZUMARILL),
+ EC_POKEMON2(AZUMARILL),
+ EC_POKEMON(AZURILL),
+};
+
+#define EC_WBL_OFFSET_B ARRAY_COUNT(gEasyChatWordsByLetter_A) + EC_WBL_OFFSET_A
+
+u16 gEasyChatWordsByLetter_B[] = {
+ EC_WORD_BABE,
+ EC_WORD_BABY,
+ EC_WORD_BACK,
+ EC_WORD_BAD,
+ EC_WORD_BADLY,
+ EC_POKEMON(BAGON),
+ EC_WORD_BALL,
+ EC_POKEMON(BALTOY),
+ EC_POKEMON(BANETTE),
+ EC_WORD_BANG,
+ EC_POKEMON(BARBOACH),
+ EC_MOVE2(BARRAGE),
+ EC_MOVE2(BARRIER),
+ EC_WORD_BATH,
+ EC_MOVE2(BATON_PASS),
+ EC_WORD_BATTLE,
+ EC_WORD_BATTLE_ARMOR,
+ EC_WORD_BATTLE_ROOM,
+ EC_WORD_BATTLE_TOWER,
+ EC_POKEMON2(BAYLEEF),
+ EC_WORD_BE,
+ EC_WORD_BEAT,
+ EC_MOVE2(BEAT_UP),
+ EC_POKEMON(BEAUTIFLY),
+ EC_WORD_BEAUTIFUL,
+ EC_WORD_BEAUTY,
+ EC_WORD_BECOMES,
+ EC_POKEMON2(BEEDRILL),
+ EC_WORD_BEEN,
+ EC_WORD_BEFORE,
+ EC_WORD_BEGINNING,
+ EC_WORD_BEING,
+ EC_POKEMON(BELDUM),
+ EC_WORD_BELIEVE,
+ EC_DUPLICATES(2),
+ EC_POKEMON(BELLOSSOM),
+ EC_POKEMON2(BELLOSSOM),
+ EC_POKEMON2(BELLSPROUT),
+ EC_MOVE2(BELLY_DRUM),
+ EC_WORD_BELONGS_TO,
+ EC_WORD_BELOW,
+ EC_WORD_BERRY,
+ EC_WORD_BESIDE,
+ EC_WORD_BEST,
+ EC_WORD_BETTER,
+ EC_MOVE(BIDE),
+ EC_WORD_BIG,
+ EC_WORD_BIKE,
+ EC_MOVE(BIND),
+ EC_MOVE(BITE),
+ EC_POKEMON2(BLASTOISE),
+ EC_WORD_BLAZE,
+ EC_MOVE2(BLAZE_KICK),
+ EC_POKEMON(BLAZIKEN),
+ EC_WORD_BLEND,
+ EC_POKEMON2(BLISSEY),
+ EC_MOVE2(BLIZZARD),
+ EC_MOVE2(BLOCK),
+ EC_WORD_BOARD,
+ EC_MOVE2(BODY_SLAM),
+ EC_MOVE2(BONE_CLUB),
+ EC_MOVE2(BONE_RUSH),
+ EC_MOVE2(BONEMERANG),
+ EC_WORD_BOOK,
+ EC_WORD_BORED,
+ EC_WORD_BORING,
+ EC_MOVE2(BOUNCE),
+ EC_WORD_BOY,
+ EC_WORD_BRAG,
+ EC_WORD_BREAK,
+ EC_POKEMON(BRELOOM),
+ EC_MOVE(BRICK_BREAK),
+ EC_WORD_BROTHER,
+ EC_MOVE(BUBBLE),
+ EC_MOVE2(BUBBLE_BEAM),
+ EC_WORD_BUG,
+ EC_POKEMON2(BULBASAUR),
+ EC_MOVE2(BULK_UP),
+ EC_MOVE2(BULLET_SEED),
+ EC_WORD_BUSY,
+ EC_WORD_BUT,
+ EC_POKEMON2(BUTTERFREE),
+ EC_WORD_BYE_BYE,
+};
+
+#define EC_WBL_OFFSET_C ARRAY_COUNT(gEasyChatWordsByLetter_B) + EC_WBL_OFFSET_B
+
+u16 gEasyChatWordsByLetter_C[] = {
+ EC_POKEMON(CACNEA),
+ EC_POKEMON(CACTURNE),
+ EC_MOVE2(CALM_MIND),
+ EC_WORD_CAME,
+ EC_WORD_CAMERA,
+ EC_POKEMON(CAMERUPT),
+ EC_MOVE2(CAMOUFLAGE),
+ EC_WORD_CAN,
+ EC_WORD_CAN_WIN,
+ EC_WORD_CAN_T,
+ EC_WORD_CAN_T_WIN,
+ EC_WORD_CANCEL,
+ EC_WORD_CAPABLE,
+ EC_WORD_CARDS,
+ EC_WORD_CARE,
+ EC_WORD_CARES,
+ EC_POKEMON(CARVANHA),
+ EC_POKEMON(CASCOON),
+ EC_WORD_CASE,
+ EC_POKEMON(CASTFORM),
+ EC_POKEMON2(CATERPIE),
+ EC_WORD_CAUSE,
+ EC_POKEMON2(CELEBI),
+ EC_WORD_CENTER,
+ EC_WORD_CHALLENGE,
+ EC_WORD_CHANGE,
+ EC_WORD_CHANNEL,
+ EC_POKEMON2(CHANSEY),
+ EC_MOVE(CHARGE),
+ EC_POKEMON2(CHARIZARD),
+ EC_MOVE(CHARM),
+ EC_POKEMON2(CHARMANDER),
+ EC_POKEMON2(CHARMELEON),
+ EC_WORD_CHAT,
+ EC_POKEMON2(CHIKORITA),
+ EC_WORD_CHILD_S_PLAY,
+ EC_WORD_CHILDREN,
+ EC_POKEMON(CHIMECHO),
+ EC_DUPLICATES(2),
+ EC_POKEMON(CHINCHOU),
+ EC_POKEMON2(CHINCHOU),
+ EC_WORD_CHLOROPHYLL,
+ EC_WORD_CHOICE,
+ EC_WORD_CHOOSE,
+ EC_WORD_CHORES,
+ EC_MOVE(CLAMP),
+ EC_POKEMON(CLAMPERL),
+ EC_WORD_CLASS,
+ EC_POKEMON(CLAYDOL),
+ EC_WORD_CLEAR_BODY,
+ EC_POKEMON2(CLEFABLE),
+ EC_POKEMON2(CLEFAIRY),
+ EC_POKEMON2(CLEFFA),
+ EC_WORD_CLOSE,
+ EC_WORD_CLOUD_NINE,
+ EC_POKEMON2(CLOYSTER),
+ EC_WORD_COLD,
+ EC_WORD_COLLECT,
+ EC_WORD_COLLECTION,
+ EC_WORD_COLOR,
+ EC_WORD_COLOR_CHANGE,
+ EC_POKEMON(COMBUSKEN),
+ EC_WORD_COME,
+ EC_WORD_COME_ON,
+ EC_WORD_COME_OVER,
+ EC_MOVE2(COMET_PUNCH),
+ EC_WORD_COMICS,
+ EC_WORD_COMMEMORATE,
+ EC_WORD_COMPLETE,
+ EC_WORD_COMPOUNDEYES,
+ EC_WORD_CONCEDE,
+ EC_MOVE(CONFUSE_RAY),
+ EC_WORD_CONFUSED,
+ EC_MOVE2(CONFUSION),
+ EC_WORD_CONGRATS,
+ EC_MOVE(CONSTRICT),
+ EC_WORD_CONTEST,
+ EC_WORD_CONVERSATION,
+ EC_MOVE2(CONVERSION),
+ EC_MOVE2(CONVERSION_2),
+ EC_WORD_COOL,
+ EC_WORD_COOLNESS,
+ EC_POKEMON(CORPHISH),
+ EC_WORD_CORRECT,
+ EC_DUPLICATES(2),
+ EC_POKEMON(CORSOLA),
+ EC_POKEMON2(CORSOLA),
+ EC_MOVE(COSMIC_POWER),
+ EC_MOVE2(COTTON_SPORE),
+ EC_WORD_COULD,
+ EC_WORD_COULDN_T,
+ EC_WORD_COUNT_ON,
+ EC_MOVE(COUNTER),
+ EC_WORD_COUPLE,
+ EC_MOVE2(COVET),
+ EC_MOVE(CRABHAMMER),
+ EC_POKEMON(CRADILY),
+ EC_POKEMON(CRAWDAUNT),
+ EC_WORD_CRIES,
+ EC_DUPLICATES(2),
+ EC_POKEMON(CROBAT),
+ EC_POKEMON2(CROBAT),
+ EC_POKEMON2(CROCONAW),
+ EC_MOVE(CROSS_CHOP),
+ EC_MOVE(CRUNCH),
+ EC_MOVE2(CRUSH_CLAW),
+ EC_WORD_CRY,
+ EC_POKEMON2(CUBONE),
+ EC_WORD_CURRENT,
+ EC_MOVE2(CURSE),
+ EC_MOVE(CUT),
+ EC_WORD_CUTE,
+ EC_WORD_CUTE_CHARM,
+ EC_WORD_CUTENESS,
+ EC_POKEMON2(CYNDAQUIL),
+};
+
+#define EC_WBL_OFFSET_D ARRAY_COUNT(gEasyChatWordsByLetter_C) + EC_WBL_OFFSET_C
+
+u16 gEasyChatWordsByLetter_D[] = {
+ EC_WORD_DAILY,
+ EC_WORD_DAMP,
+ EC_WORD_DANCE,
+ EC_WORD_DANGER,
+ EC_WORD_DARK,
+ EC_WORD_DARN,
+ EC_WORD_DATE,
+ EC_WORD_DAUGHTER,
+ EC_WORD_DAY,
+ EC_WORD_DAYS,
+ EC_WORD_DAYTIME,
+ EC_WORD_DECIDE,
+ EC_WORD_DECIDED,
+ EC_WORD_DEEP,
+ EC_WORD_DEFEATED,
+ EC_MOVE2(DEFENSE_CURL),
+ EC_POKEMON(DELCATTY),
+ EC_POKEMON2(DELIBIRD),
+ EC_POKEMON(DEOXYS),
+ EC_WORD_DEPT_STORE,
+ EC_WORD_DESIGN,
+ EC_WORD_DESTINY,
+ EC_MOVE2(DESTINY_BOND),
+ EC_WORD_DESTROYED,
+ EC_MOVE2(DETECT),
+ EC_POKEMON2(DEWGONG),
+ EC_WORD_DID,
+ EC_WORD_DIDN_T,
+ EC_WORD_DIET,
+ EC_WORD_DIFFERENT,
+ EC_MOVE(DIG),
+ EC_WORD_DIGITAL,
+ EC_POKEMON2(DIGLETT),
+ EC_MOVE(DISABLE),
+ EC_WORD_DISAPPEAR,
+ EC_WORD_DISAPPOINT,
+ EC_WORD_DISAPPOINTED,
+ EC_WORD_DISAPPOINTS,
+ EC_WORD_DISASTER,
+ EC_WORD_DISLIKE,
+ EC_WORD_DISLIKES,
+ EC_POKEMON2(DITTO),
+ EC_MOVE2(DIVE),
+ EC_MOVE2(DIZZY_PUNCH),
+ EC_WORD_DO,
+ EC_WORD_DOCILE,
+ EC_DUPLICATES(2),
+ EC_POKEMON(DODRIO),
+ EC_POKEMON2(DODRIO),
+ EC_DUPLICATES(2),
+ EC_POKEMON(DODUO),
+ EC_POKEMON2(DODUO),
+ EC_WORD_DOES,
+ EC_WORD_DOESN_T,
+ EC_WORD_DON_T,
+ EC_WORD_DONE,
+ EC_DUPLICATES(2),
+ EC_POKEMON(DONPHAN),
+ EC_POKEMON2(DONPHAN),
+ EC_MOVE2(DOUBLE_KICK),
+ EC_MOVE(DOUBLE_TEAM),
+ EC_MOVE(DOUBLE_EDGE),
+ EC_MOVE(DOUBLE_SLAP),
+ EC_WORD_DOWN,
+ EC_WORD_DOWNCAST,
+ EC_WORD_DRAGON,
+ EC_MOVE2(DRAGON_CLAW),
+ EC_MOVE2(DRAGON_DANCE),
+ EC_MOVE2(DRAGON_RAGE),
+ EC_POKEMON2(DRAGONAIR),
+ EC_MOVE2(DRAGON_BREATH),
+ EC_POKEMON2(DRAGONITE),
+ EC_POKEMON2(DRATINI),
+ EC_WORD_DREAM,
+ EC_MOVE2(DREAM_EATER),
+ EC_MOVE2(DRILL_PECK),
+ EC_WORD_DRINK,
+ EC_WORD_DRINKS,
+ EC_WORD_DRIZZLE,
+ EC_WORD_DROOLING,
+ EC_WORD_DROUGHT,
+ EC_POKEMON2(DROWZEE),
+ EC_WORD_DUDE,
+ EC_POKEMON2(DUGTRIO),
+ EC_POKEMON2(DUNSPARCE),
+ EC_POKEMON(DUSCLOPS),
+ EC_POKEMON(DUSKULL),
+ EC_POKEMON(DUSTOX),
+ EC_MOVE2(DYNAMIC_PUNCH),
+};
+
+#define EC_WBL_OFFSET_E ARRAY_COUNT(gEasyChatWordsByLetter_D) + EC_WBL_OFFSET_D
+
+u16 gEasyChatWordsByLetter_E[] = {
+ EC_WORD_EARLIER,
+ EC_WORD_EARLY_BIRD,
+ EC_MOVE(EARTHQUAKE),
+ EC_WORD_EASY,
+ EC_WORD_EAT,
+ EC_WORD_EATS,
+ EC_WORD_EEK,
+ EC_POKEMON2(EEVEE),
+ EC_WORD_EFFECT_SPORE,
+ EC_WORD_EGG,
+ EC_MOVE2(EGG_BOMB),
+ EC_WORD_EH_QUES,
+ EC_WORD_EHEHE,
+ EC_POKEMON2(EKANS),
+ EC_POKEMON2(ELECTABUZZ),
+ EC_WORD_ELECTRIC,
+ EC_POKEMON(ELECTRIKE),
+ EC_DUPLICATES(2),
+ EC_POKEMON(ELECTRODE),
+ EC_POKEMON2(ELECTRODE),
+ EC_POKEMON2(ELEKID),
+ EC_WORD_ELSE,
+ EC_MOVE2(EMBER),
+ EC_MOVE(ENCORE),
+ EC_WORD_ENCYCLOPEDIA,
+ EC_WORD_END,
+ EC_MOVE(ENDEAVOR),
+ EC_MOVE(ENDURE),
+ EC_WORD_ENJOY,
+ EC_WORD_ENJOYS,
+ EC_WORD_ENOUGH,
+ EC_POKEMON2(ENTEI),
+ EC_WORD_ENTERTAINING,
+ EC_MOVE2(ERUPTION),
+ EC_WORD_ESCAPE,
+ EC_POKEMON2(ESPEON),
+ EC_WORD_EVEN_SO,
+ EC_WORD_EVENT,
+ EC_WORD_EVENTS,
+ EC_WORD_EVER,
+ EC_WORD_EVERY,
+ EC_WORD_EVOLUTION,
+ EC_WORD_EVOLVE,
+ EC_WORD_EXCELLENT,
+ EC_WORD_EXCESS,
+ EC_WORD_EXCITE,
+ EC_WORD_EXCITING,
+ EC_WORD_EXCUSE,
+ EC_WORD_EXCUSE_ME,
+ EC_POKEMON2(EXEGGCUTE),
+ EC_POKEMON2(EXEGGUTOR),
+ EC_WORD_EXISTS,
+ EC_WORD_EXPENSIVE,
+ EC_MOVE2(EXPLOSION),
+ EC_POKEMON(EXPLOUD),
+ EC_MOVE(EXTRASENSORY),
+ EC_MOVE(EXTREME_SPEED),
+};
+
+#define EC_WBL_OFFSET_F ARRAY_COUNT(gEasyChatWordsByLetter_E) + EC_WBL_OFFSET_E
+
+u16 gEasyChatWordsByLetter_F[] = {
+ EC_WORD_FABULOUS,
+ EC_MOVE(FACADE),
+ EC_WORD_FAINT,
+ EC_MOVE2(FAINT_ATTACK),
+ EC_WORD_FAINTED,
+ EC_MOVE2(FAKE_OUT),
+ EC_MOVE(FAKE_TEARS),
+ EC_WORD_FALL,
+ EC_MOVE2(FALSE_SWIPE),
+ EC_WORD_FAMILY,
+ EC_WORD_FANTASTIC,
+ EC_WORD_FAR,
+ EC_POKEMON2(FARFETCHD),
+ EC_WORD_FASHION,
+ EC_WORD_FAST,
+ EC_WORD_FATHER,
+ EC_WORD_FEAR,
+ EC_POKEMON2(FEAROW),
+ EC_MOVE2(FEATHER_DANCE),
+ EC_POKEMON(FEEBAS),
+ EC_WORD_FEELING,
+ EC_POKEMON2(FERALIGATR),
+ EC_WORD_FESTIVAL,
+ EC_WORD_FEVER,
+ EC_WORD_FIERY,
+ EC_WORD_FIGHT,
+ EC_WORD_FIGHTING,
+ EC_WORD_FIGHTS,
+ EC_WORD_FINAL,
+ EC_WORD_FINALLY,
+ EC_WORD_FINISH,
+ EC_WORD_FIRE,
+ EC_MOVE2(FIRE_BLAST),
+ EC_MOVE2(FIRE_PUNCH),
+ EC_MOVE2(FIRE_SPIN),
+ EC_WORD_FISHING,
+ EC_MOVE(FISSURE),
+ EC_POKEMON2(FLAAFFY),
+ EC_MOVE(FLAIL),
+ EC_WORD_FLAME_BODY,
+ EC_MOVE(FLAME_WHEEL),
+ EC_MOVE(FLAMETHROWER),
+ EC_POKEMON2(FLAREON),
+ EC_MOVE2(FLASH),
+ EC_WORD_FLASH_FIRE,
+ EC_WORD_FLATTEN,
+ EC_MOVE(FLATTER),
+ EC_WORD_FLOWERS,
+ EC_MOVE(FLY),
+ EC_POKEMON(FLYGON),
+ EC_WORD_FLYING,
+ EC_MOVE(FOCUS_ENERGY),
+ EC_MOVE(FOCUS_PUNCH),
+ EC_WORD_FOE,
+ EC_MOVE(FOLLOW_ME),
+ EC_WORD_FOR,
+ EC_WORD_FOR_NOW,
+ EC_WORD_FORECAST,
+ EC_MOVE2(FORESIGHT),
+ EC_WORD_FOREVER,
+ EC_WORD_FORGET,
+ EC_WORD_FORGETS,
+ EC_WORD_FORGIVE,
+ EC_POKEMON2(FORRETRESS),
+ EC_WORD_FRIDAY,
+ EC_WORD_FRIEND,
+ EC_WORD_FROM,
+ EC_WORD_FRONT,
+ EC_MOVE2(FRUSTRATION),
+ EC_WORD_FUFUFU,
+ EC_WORD_FULL,
+ EC_WORD_FUNNY,
+ EC_POKEMON2(FURRET),
+ EC_MOVE2(FURY_ATTACK),
+ EC_MOVE2(FURY_CUTTER),
+ EC_MOVE2(FURY_SWIPES),
+ EC_MOVE2(FUTURE_SIGHT),
+};
+
+#define EC_WBL_OFFSET_G ARRAY_COUNT(gEasyChatWordsByLetter_F) + EC_WBL_OFFSET_F
+
+u16 gEasyChatWordsByLetter_G[] = {
+ EC_WORD_GAME,
+ EC_POKEMON(GARDEVOIR),
+ EC_POKEMON2(GASTLY),
+ EC_POKEMON2(GENGAR),
+ EC_WORD_GENIUS,
+ EC_DUPLICATES(2),
+ EC_POKEMON(GEODUDE),
+ EC_POKEMON2(GEODUDE),
+ EC_WORD_GET,
+ EC_WORD_GETS,
+ EC_WORD_GHOST,
+ EC_WORD_GIDDY,
+ EC_MOVE(GIGA_DRAIN),
+ EC_WORD_GIGGLE,
+ EC_WORD_GIMME,
+ EC_DUPLICATES(2),
+ EC_POKEMON(GIRAFARIG),
+ EC_POKEMON2(GIRAFARIG),
+ EC_WORD_GIRL,
+ EC_WORD_GIVE,
+ EC_WORD_GIVE_ME,
+ EC_WORD_GIVE_UP,
+ EC_WORD_GIVES,
+ EC_POKEMON(GLALIE),
+ EC_MOVE2(GLARE),
+ EC_POKEMON2(GLIGAR),
+ EC_DUPLICATES(2),
+ EC_POKEMON(GLOOM),
+ EC_POKEMON2(GLOOM),
+ EC_WORD_GO,
+ EC_WORD_GO_AHEAD,
+ EC_WORD_GO_EASY,
+ EC_WORD_GO_HOME,
+ EC_WORD_GOES,
+ EC_WORD_GOING,
+ EC_DUPLICATES(2),
+ EC_POKEMON(GOLBAT),
+ EC_POKEMON2(GOLBAT),
+ EC_DUPLICATES(2),
+ EC_POKEMON(GOLDEEN),
+ EC_POKEMON2(GOLDEEN),
+ EC_DUPLICATES(2),
+ EC_POKEMON(GOLDUCK),
+ EC_POKEMON2(GOLDUCK),
+ EC_DUPLICATES(2),
+ EC_POKEMON(GOLEM),
+ EC_POKEMON2(GOLEM),
+ EC_WORD_GOOD,
+ EC_WORD_GOOD_BYE,
+ EC_POKEMON(GOREBYSS),
+ EC_WORD_GOT,
+ EC_WORD_GOTCHA,
+ EC_WORD_GOURMET,
+ EC_WORD_GRAAAH,
+ EC_POKEMON2(GRANBULL),
+ EC_WORD_GRANDFATHER,
+ EC_WORD_GRANDMOTHER,
+ EC_WORD_GRASS,
+ EC_MOVE(GRASS_WHISTLE),
+ EC_DUPLICATES(2),
+ EC_POKEMON(GRAVELER),
+ EC_POKEMON2(GRAVELER),
+ EC_WORD_GREAT,
+ EC_DUPLICATES(2),
+ EC_POKEMON(GRIMER),
+ EC_POKEMON2(GRIMER),
+ EC_POKEMON(GROUDON),
+ EC_WORD_GROUND,
+ EC_WORD_GROUP,
+ EC_POKEMON(GROVYLE),
+ EC_MOVE2(GROWL),
+ EC_POKEMON2(GROWLITHE),
+ EC_MOVE(GROWTH),
+ EC_MOVE(GRUDGE),
+ EC_POKEMON(GRUMPIG),
+ EC_WORD_GUARD,
+ EC_MOVE2(GUILLOTINE),
+ EC_POKEMON(GULPIN),
+ EC_MOVE(GUST),
+ EC_WORD_GUTS,
+ EC_WORD_GUTSY,
+ EC_WORD_GWAH,
+ EC_WORD_GWAHAHAHA,
+ EC_DUPLICATES(2),
+ EC_POKEMON(GYARADOS),
+ EC_POKEMON2(GYARADOS),
+};
+
+#define EC_WBL_OFFSET_H ARRAY_COUNT(gEasyChatWordsByLetter_G) + EC_WBL_OFFSET_G
+
+u16 gEasyChatWordsByLetter_H[] = {
+ EC_WORD_HABIT,
+ EC_WORD_HAH,
+ EC_WORD_HAHAHA,
+ EC_MOVE(HAIL),
+ EC_WORD_HALL_OF_FAME,
+ EC_WORD_HAPPENING,
+ EC_WORD_HAPPILY,
+ EC_WORD_HAPPINESS,
+ EC_WORD_HAPPY,
+ EC_WORD_HARD,
+ EC_MOVE(HARDEN),
+ EC_POKEMON(HARIYAMA),
+ EC_WORD_HAS,
+ EC_WORD_HASSLE,
+ EC_POKEMON2(HAUNTER),
+ EC_WORD_HAVE,
+ EC_WORD_HAVEN_T,
+ EC_MOVE(HAZE),
+ EC_WORD_HE,
+ EC_WORD_HE_S,
+ EC_MOVE(HEADBUTT),
+ EC_MOVE(HEAL_BELL),
+ EC_WORD_HEALTHY,
+ EC_WORD_HEAR,
+ EC_WORD_HEARING,
+ EC_WORD_HEARS,
+ EC_WORD_HEART,
+ EC_MOVE2(HEAT_WAVE),
+ EC_WORD_HEH,
+ EC_WORD_HEHE,
+ EC_WORD_HEHEHE,
+ EC_WORD_HELLO,
+ EC_MOVE2(HELPING_HAND),
+ EC_WORD_HER,
+ EC_WORD_HERS,
+ EC_DUPLICATES(2),
+ EC_POKEMON(HERACROSS),
+ EC_POKEMON2(HERACROSS),
+ EC_WORD_HERE,
+ EC_WORD_HERE_GOES,
+ EC_WORD_HERE_I_COME,
+ EC_WORD_HERE_IT_IS,
+ EC_WORD_HERO,
+ EC_WORD_HEROINE,
+ EC_WORD_HEY,
+ EC_WORD_HEY_THERE,
+ EC_WORD_HEY_QUES,
+ EC_WORD_HI,
+ EC_MOVE2(HI_JUMP_KICK),
+ EC_WORD_HIDDEN,
+ EC_MOVE2(HIDDEN_POWER),
+ EC_WORD_HIGH,
+ EC_WORD_HIGHS,
+ EC_WORD_HIM,
+ EC_WORD_HIP_AND,
+ EC_WORD_HIS,
+ EC_WORD_HIT,
+ EC_POKEMON2(HITMONCHAN),
+ EC_POKEMON2(HITMONLEE),
+ EC_POKEMON2(HITMONTOP),
+ EC_WORD_HIYAH,
+ EC_WORD_HMM,
+ EC_POKEMON2(HO_OH),
+ EC_WORD_HOBBY,
+ EC_WORD_HOHOHO,
+ EC_WORD_HOLIDAY,
+ EC_WORD_HOME,
+ EC_WORD_HOO_HAH,
+ EC_POKEMON2(HOOTHOOT),
+ EC_WORD_HOPELESS,
+ EC_POKEMON2(HOPPIP),
+ EC_MOVE2(HORN_ATTACK),
+ EC_MOVE2(HORN_DRILL),
+ EC_DUPLICATES(2),
+ EC_POKEMON(HORSEA),
+ EC_POKEMON2(HORSEA),
+ EC_WORD_HOT,
+ EC_POKEMON2(HOUNDOOM),
+ EC_POKEMON2(HOUNDOUR),
+ EC_WORD_HOW,
+ EC_WORD_HOW_DO,
+ EC_WORD_HOWEVER,
+ EC_MOVE2(HOWL),
+ EC_WORD_HUGE_POWER,
+ EC_WORD_HUH_QUES,
+ EC_WORD_HUMPH,
+ EC_WORD_HUNGRY,
+ EC_POKEMON(HUNTAIL),
+ EC_WORD_HURRIED,
+ EC_WORD_HUSTLE,
+ EC_MOVE2(HYDRO_PUMP),
+ EC_WORD_HYPER,
+ EC_MOVE2(HYPER_BEAM),
+ EC_WORD_HYPER_CUTTER,
+ EC_MOVE2(HYPER_FANG),
+ EC_MOVE2(HYPER_VOICE),
+ EC_POKEMON2(HYPNO),
+ EC_MOVE(HYPNOSIS),
+};
+
+#define EC_WBL_OFFSET_I ARRAY_COUNT(gEasyChatWordsByLetter_H) + EC_WBL_OFFSET_H
+
+u16 gEasyChatWordsByLetter_I[] = {
+ EC_WORD_I,
+ EC_WORD_I_AM,
+ EC_WORD_I_CHOOSE_YOU,
+ EC_WORD_I_WAS,
+ EC_WORD_I_VE,
+ EC_WORD_I_VE_ARRIVED,
+ EC_WORD_ICE,
+ EC_MOVE(ICE_BALL),
+ EC_MOVE2(ICE_BEAM),
+ EC_MOVE2(ICE_PUNCH),
+ EC_MOVE(ICY_WIND),
+ EC_WORD_IDOL,
+ EC_WORD_IF,
+ EC_WORD_IF_I_LOSE,
+ EC_WORD_IF_I_WIN,
+ EC_DUPLICATES(2),
+ EC_POKEMON(IGGLYBUFF),
+ EC_POKEMON2(IGGLYBUFF),
+ EC_WORD_IGNORANT,
+ EC_WORD_ILLUMINATE,
+ EC_POKEMON(ILLUMISE),
+ EC_WORD_IMMUNITY,
+ EC_WORD_IMPORTANT,
+ EC_WORD_IMPOSSIBLE,
+ EC_MOVE2(IMPRISON),
+ EC_WORD_IN,
+ EC_WORD_INCREASING,
+ EC_WORD_INCREDIBLE,
+ EC_WORD_INFORMATION,
+ EC_MOVE2(INGRAIN),
+ EC_WORD_INNER_FOCUS,
+ EC_WORD_INSIDE,
+ EC_WORD_INSOMNIA,
+ EC_WORD_INSTEAD,
+ EC_WORD_INTIMIDATE,
+ EC_WORD_INVINCIBLE,
+ EC_MOVE2(IRON_DEFENSE),
+ EC_MOVE(IRON_TAIL),
+ EC_WORD_IS,
+ EC_WORD_IS_IT_QUES,
+ EC_WORD_ISN_T,
+ EC_WORD_ISN_T_IT_QUES,
+ EC_WORD_IT,
+ EC_WORD_IT_S,
+ EC_WORD_ITEM,
+ EC_POKEMON2(IVYSAUR),
+};
+
+#define EC_WBL_OFFSET_J ARRAY_COUNT(gEasyChatWordsByLetter_I) + EC_WBL_OFFSET_I
+
+u16 gEasyChatWordsByLetter_J[] = {
+ EC_DUPLICATES(2),
+ EC_POKEMON(JIGGLYPUFF),
+ EC_POKEMON2(JIGGLYPUFF),
+ EC_POKEMON(JIRACHI),
+ EC_WORD_JOKING,
+ EC_POKEMON2(JOLTEON),
+ EC_WORD_JOY,
+ EC_WORD_JUDGE,
+ EC_MOVE2(JUMP_KICK),
+ EC_POKEMON2(JUMPLUFF),
+ EC_WORD_JUST,
+ EC_POKEMON2(JYNX),
+};
+
+#define EC_WBL_OFFSET_K ARRAY_COUNT(gEasyChatWordsByLetter_J) + EC_WBL_OFFSET_J
+
+u16 gEasyChatWordsByLetter_K[] = {
+ EC_POKEMON2(KABUTO),
+ EC_POKEMON2(KABUTOPS),
+ EC_DUPLICATES(2),
+ EC_POKEMON(KADABRA),
+ EC_POKEMON2(KADABRA),
+ EC_POKEMON2(KAKUNA),
+ EC_POKEMON2(KANGASKHAN),
+ EC_MOVE(KARATE_CHOP),
+ EC_POKEMON(KECLEON),
+ EC_WORD_KEEN_EYE,
+ EC_WORD_KID,
+ EC_WORD_KIDDING,
+ EC_WORD_KIND,
+ EC_WORD_KINDERGARTEN,
+ EC_MOVE(KINESIS),
+ EC_DUPLICATES(2),
+ EC_POKEMON(KINGDRA),
+ EC_POKEMON2(KINGDRA),
+ EC_POKEMON2(KINGLER),
+ EC_POKEMON(KIRLIA),
+ EC_MOVE2(KNOCK_OFF),
+ EC_WORD_KNOCKOUT,
+ EC_WORD_KNOW,
+ EC_WORD_KNOWS,
+ EC_DUPLICATES(2),
+ EC_POKEMON(KOFFING),
+ EC_POKEMON2(KOFFING),
+ EC_POKEMON2(KRABBY),
+ EC_WORD_KTHX_BYE,
+ EC_POKEMON(KYOGRE),
+};
+
+#define EC_WBL_OFFSET_L ARRAY_COUNT(gEasyChatWordsByLetter_K) + EC_WBL_OFFSET_K
+
+u16 gEasyChatWordsByLetter_L[] = {
+ EC_WORD_LACKING,
+ EC_WORD_LACKS,
+ EC_WORD_LADY,
+ EC_POKEMON(LAIRON),
+ EC_WORD_LALALA,
+ EC_DUPLICATES(2),
+ EC_POKEMON(LANTURN),
+ EC_POKEMON2(LANTURN),
+ EC_POKEMON2(LAPRAS),
+ EC_POKEMON2(LARVITAR),
+ EC_WORD_LAST,
+ EC_WORD_LATE,
+ EC_WORD_LATER,
+ EC_POKEMON(LATIAS),
+ EC_POKEMON(LATIOS),
+ EC_WORD_LAVISH,
+ EC_WORD_LAY,
+ EC_WORD_LEADER,
+ EC_WORD_LEADERS,
+ EC_MOVE2(LEAF_BLADE),
+ EC_WORD_LEARN,
+ EC_POKEMON2(LEDIAN),
+ EC_POKEMON2(LEDYBA),
+ EC_MOVE(LEECH_LIFE),
+ EC_MOVE2(LEECH_SEED),
+ EC_MOVE2(LEER),
+ EC_WORD_LEFT,
+ EC_WORD_LEGEND,
+ EC_WORD_LESS,
+ EC_WORD_LESSONS,
+ EC_WORD_LET_ME_WIN,
+ EC_WORD_LET_S,
+ EC_WORD_LETTER,
+ EC_WORD_LEVEL,
+ EC_WORD_LEVITATE,
+ EC_MOVE(LICK),
+ EC_POKEMON2(LICKITUNG),
+ EC_WORD_LIE,
+ EC_WORD_LIFE,
+ EC_MOVE2(LIGHT_SCREEN),
+ EC_WORD_LIGHTNINGROD,
+ EC_WORD_LIKE,
+ EC_WORD_LIKELY_TO,
+ EC_WORD_LIKES,
+ EC_POKEMON(LILEEP),
+ EC_WORD_LIMBER,
+ EC_WORD_LINK,
+ EC_POKEMON(LINOONE),
+ EC_WORD_LIQUID_OOZE,
+ EC_WORD_LISTEN,
+ EC_WORD_LISTENING,
+ EC_WORD_LISTENS,
+ EC_WORD_LIVING,
+ EC_MOVE2(LOCK_ON),
+ EC_WORD_LOCOMOTIVE,
+ EC_WORD_LOL,
+ EC_WORD_LOLLING,
+ EC_POKEMON(LOMBRE),
+ EC_WORD_LONESOME,
+ EC_WORD_LOOK,
+ EC_WORD_LOOKS,
+ EC_WORD_LOSE,
+ EC_WORD_LOSER,
+ EC_WORD_LOSING,
+ EC_WORD_LOSS,
+ EC_WORD_LOST,
+ EC_POKEMON(LOTAD),
+ EC_POKEMON(LOUDRED),
+ EC_WORD_LOUSY,
+ EC_MOVE(LOVELY_KISS),
+ EC_WORD_LOVEY_DOVEY,
+ EC_WORD_LOW,
+ EC_MOVE(LOW_KICK),
+ EC_WORD_LOWS,
+ EC_POKEMON(LUDICOLO),
+ EC_POKEMON2(LUGIA),
+ EC_WORD_LUKEWARM,
+ EC_POKEMON(LUNATONE),
+ EC_MOVE2(LUSTER_PURGE),
+ EC_POKEMON(LUVDISC),
+};
+
+#define EC_WBL_OFFSET_M ARRAY_COUNT(gEasyChatWordsByLetter_L) + EC_WBL_OFFSET_L
+
+u16 gEasyChatWordsByLetter_M[] = {
+ EC_MOVE2(MACH_PUNCH),
+ EC_DUPLICATES(2),
+ EC_POKEMON(MACHAMP),
+ EC_POKEMON2(MACHAMP),
+ EC_WORD_MACHINE,
+ EC_DUPLICATES(2),
+ EC_POKEMON(MACHOKE),
+ EC_POKEMON2(MACHOKE),
+ EC_DUPLICATES(2),
+ EC_POKEMON(MACHOP),
+ EC_POKEMON2(MACHOP),
+ EC_WORD_MAGAZINE,
+ EC_POKEMON2(MAGBY),
+ EC_DUPLICATES(2),
+ EC_POKEMON(MAGCARGO),
+ EC_POKEMON2(MAGCARGO),
+ EC_MOVE2(MAGIC_COAT),
+ EC_MOVE2(MAGICAL_LEAF),
+ EC_DUPLICATES(2),
+ EC_POKEMON(MAGIKARP),
+ EC_POKEMON2(MAGIKARP),
+ EC_WORD_MAGMA_ARMOR,
+ EC_POKEMON2(MAGMAR),
+ EC_DUPLICATES(2),
+ EC_POKEMON(MAGNEMITE),
+ EC_POKEMON2(MAGNEMITE),
+ EC_WORD_MAGNET_PULL,
+ EC_DUPLICATES(2),
+ EC_POKEMON(MAGNETON),
+ EC_POKEMON2(MAGNETON),
+ EC_MOVE2(MAGNITUDE),
+ EC_WORD_MAIL,
+ EC_WORD_MAKE,
+ EC_WORD_MAKING,
+ EC_POKEMON(MAKUHITA),
+ EC_WORD_MAN,
+ EC_POKEMON(MANECTRIC),
+ EC_POKEMON2(MANKEY),
+ EC_POKEMON2(MANTINE),
+ EC_POKEMON2(MAREEP),
+ EC_DUPLICATES(2),
+ EC_POKEMON(MARILL),
+ EC_POKEMON2(MARILL),
+ EC_POKEMON2(MAROWAK),
+ EC_POKEMON(MARSHTOMP),
+ EC_WORD_MARVEL_SCALE,
+ EC_POKEMON(MASQUERAIN),
+ EC_WORD_MASTER,
+ EC_WORD_MATCH,
+ EC_WORD_MATCH_UP,
+ EC_POKEMON(MAWILE),
+ EC_WORD_MAYBE,
+ EC_WORD_MC,
+ EC_WORD_ME,
+ EC_WORD_MEAN,
+ EC_MOVE(MEAN_LOOK),
+ EC_POKEMON(MEDICHAM),
+ EC_MOVE2(MEDITATE),
+ EC_POKEMON(MEDITITE),
+ EC_WORD_MEET,
+ EC_WORD_MEET_YOU,
+ EC_WORD_MEETS,
+ EC_WORD_MEGA,
+ EC_MOVE2(MEGA_DRAIN),
+ EC_MOVE2(MEGA_KICK),
+ EC_MOVE2(MEGA_PUNCH),
+ EC_MOVE2(MEGAHORN),
+ EC_POKEMON2(MEGANIUM),
+ EC_MOVE(MEMENTO),
+ EC_POKEMON2(MEOWTH),
+ EC_WORD_MESSAGE,
+ EC_POKEMON(METAGROSS),
+ EC_MOVE2(METAL_CLAW),
+ EC_MOVE(METAL_SOUND),
+ EC_POKEMON(METANG),
+ EC_POKEMON2(METAPOD),
+ EC_MOVE(METEOR_MASH),
+ EC_MOVE2(METRONOME),
+ EC_POKEMON2(MEW),
+ EC_POKEMON2(MEWTWO),
+ EC_POKEMON(MIGHTYENA),
+ EC_MOVE2(MILK_DRINK),
+ EC_POKEMON(MILOTIC),
+ EC_POKEMON2(MILTANK),
+ EC_MOVE2(MIMIC),
+ EC_MOVE(MIND_READER),
+ EC_MOVE2(MINIMIZE),
+ EC_POKEMON(MINUN),
+ EC_WORD_MINUS,
+ EC_MOVE2(MIRROR_COAT),
+ EC_MOVE(MIRROR_MOVE),
+ EC_POKEMON2(MISDREAVUS),
+ EC_WORD_MISHEARD,
+ EC_WORD_MISS,
+ EC_MOVE(MIST),
+ EC_MOVE2(MIST_BALL),
+ EC_WORD_MISTAKE,
+ EC_WORD_MMM,
+ EC_WORD_MODE,
+ EC_WORD_MODERN,
+ EC_POKEMON2(MOLTRES),
+ EC_WORD_MOMENTUM,
+ EC_WORD_MONDAY,
+ EC_WORD_MONEY,
+ EC_WORD_MONTH,
+ EC_WORD_MOOD,
+ EC_MOVE2(MOONLIGHT),
+ EC_WORD_MORE,
+ EC_WORD_MORNING,
+ EC_MOVE(MORNING_SUN),
+ EC_WORD_MOTHER,
+ EC_WORD_MOVE,
+ EC_WORD_MOVIE,
+ EC_WORD_MR,
+ EC_POKEMON2(MR_MIME),
+ EC_WORD_MRS,
+ EC_WORD_MUCH,
+ EC_WORD_MUCH_OBLIGED,
+ EC_MOVE2(MUD_SHOT),
+ EC_MOVE2(MUD_SPORT),
+ EC_MOVE2(MUD_SLAP),
+ EC_MOVE2(MUDDY_WATER),
+ EC_POKEMON(MUDKIP),
+ EC_WORD_MUFUFU,
+ EC_DUPLICATES(2),
+ EC_POKEMON(MUK),
+ EC_POKEMON2(MUK),
+ EC_POKEMON2(MURKROW),
+ EC_WORD_MUSIC,
+ EC_WORD_MUST_BE,
+ EC_WORD_MY,
+ EC_WORD_MYSELF,
+ EC_WORD_MYSTERY,
+};
+
+#define EC_WBL_OFFSET_N ARRAY_COUNT(gEasyChatWordsByLetter_M) + EC_WBL_OFFSET_M
+
+u16 gEasyChatWordsByLetter_N[] = {
+ EC_WORD_NAME,
+ EC_WORD_NAP,
+ EC_DUPLICATES(2),
+ EC_POKEMON(NATU),
+ EC_POKEMON2(NATU),
+ EC_WORD_NATURAL,
+ EC_WORD_NATURAL_CURE,
+ EC_WORD_NATURALLY,
+ EC_WORD_NATURE,
+ EC_MOVE(NATURE_POWER),
+ EC_WORD_NEAR,
+ EC_WORD_NEARLY,
+ EC_WORD_NEED,
+ EC_MOVE2(NEEDLE_ARM),
+ EC_WORD_NEGATIVE,
+ EC_WORD_NEVER,
+ EC_WORD_NEW,
+ EC_WORD_NEWS,
+ EC_WORD_NEXT,
+ EC_WORD_NICE,
+ EC_POKEMON2(NIDOKING),
+ EC_POKEMON2(NIDOQUEEN),
+ EC_POKEMON2(NIDORAN_F),
+ EC_POKEMON2(NIDORAN_M),
+ EC_POKEMON2(NIDORINA),
+ EC_POKEMON2(NIDORINO),
+ EC_WORD_NIGHT,
+ EC_MOVE2(NIGHT_SHADE),
+ EC_MOVE(NIGHTMARE),
+ EC_WORD_NIGHTTIME,
+ EC_POKEMON(NINCADA),
+ EC_DUPLICATES(2),
+ EC_POKEMON(NINETALES),
+ EC_POKEMON2(NINETALES),
+ EC_POKEMON(NINJASK),
+ EC_WORD_NITWIT,
+ EC_WORD_NO,
+ EC_WORD_NO_MATCH,
+ EC_WORD_NO_1,
+ EC_POKEMON2(NOCTOWL),
+ EC_WORD_NOISY,
+ EC_WORD_NON_STOP,
+ EC_WORD_NONE,
+ EC_WORD_NOPE,
+ EC_WORD_NORMAL,
+ EC_POKEMON(NOSEPASS),
+ EC_WORD_NOT,
+ EC_WORD_NOT_VERY,
+ EC_WORD_NOTHING,
+ EC_WORD_NOW,
+ EC_POKEMON(NUMEL),
+ EC_POKEMON(NUZLEAF),
+};
+
+#define EC_WBL_OFFSET_O ARRAY_COUNT(gEasyChatWordsByLetter_N) + EC_WBL_OFFSET_N
+
+u16 gEasyChatWordsByLetter_O[] = {
+ EC_WORD_OBLIVIOUS,
+ EC_MOVE(OCTAZOOKA),
+ EC_POKEMON2(OCTILLERY),
+ EC_DUPLICATES(2),
+ EC_POKEMON(ODDISH),
+ EC_POKEMON2(ODDISH),
+ EC_MOVE(ODOR_SLEUTH),
+ EC_WORD_OF,
+ EC_WORD_OFF,
+ EC_WORD_OFFENSIVE,
+ EC_WORD_OH,
+ EC_WORD_OH_DEAR,
+ EC_WORD_OH_YEAH,
+ EC_WORD_OH_KAY,
+ EC_WORD_OH_QUES,
+ EC_WORD_OI,
+ EC_WORD_OI_OI_OI,
+ EC_WORD_OK_QUES,
+ EC_WORD_OKAY,
+ EC_WORD_OLD,
+ EC_WORD_OLDEN,
+ EC_POKEMON2(OMANYTE),
+ EC_POKEMON2(OMASTAR),
+ EC_WORD_ON,
+ EC_WORD_ONCE,
+ EC_POKEMON2(ONIX),
+ EC_WORD_ONLY,
+ EC_WORD_OOPS,
+ EC_WORD_OPPONENT,
+ EC_WORD_OPPOSITE,
+ EC_WORD_OR,
+ EC_WORD_OTHER,
+ EC_WORD_OUR,
+ EC_WORD_OUT,
+ EC_MOVE(OUTRAGE),
+ EC_WORD_OUTSIDE,
+ EC_WORD_OVER,
+ EC_WORD_OVERDO,
+ EC_WORD_OVERGROW,
+ EC_MOVE(OVERHEAT),
+ EC_WORD_OVERWHELMING,
+ EC_WORD_OWN,
+ EC_WORD_OWN_TEMPO,
+};
+
+#define EC_WBL_OFFSET_P ARRAY_COUNT(gEasyChatWordsByLetter_O) + EC_WBL_OFFSET_O
+
+u16 gEasyChatWordsByLetter_P[] = {
+ EC_MOVE(PAIN_SPLIT),
+ EC_POKEMON2(PARAS),
+ EC_POKEMON2(PARASECT),
+ EC_WORD_PARDON,
+ EC_WORD_PARENT,
+ EC_WORD_PARTNER,
+ EC_WORD_PARTY,
+ EC_WORD_PATTERN,
+ EC_MOVE2(PAY_DAY),
+ EC_WORD_PC,
+ EC_MOVE2(PECK),
+ EC_POKEMON(PELIPPER),
+ EC_WORD_PERFECT,
+ EC_WORD_PERFECTION,
+ EC_MOVE2(PERISH_SONG),
+ EC_POKEMON2(PERSIAN),
+ EC_WORD_PERSON,
+ EC_MOVE2(PETAL_DANCE),
+ EC_DUPLICATES(2),
+ EC_POKEMON(PHANPY),
+ EC_POKEMON2(PHANPY),
+ EC_WORD_PHONE,
+ EC_DUPLICATES(2),
+ EC_POKEMON(PICHU),
+ EC_POKEMON2(PICHU),
+ EC_WORD_PICKUP,
+ EC_POKEMON2(PIDGEOT),
+ EC_POKEMON2(PIDGEOTTO),
+ EC_POKEMON2(PIDGEY),
+ EC_DUPLICATES(2),
+ EC_POKEMON(PIKACHU),
+ EC_POKEMON2(PIKACHU),
+ EC_POKEMON2(PILOSWINE),
+ EC_MOVE2(PIN_MISSILE),
+ EC_POKEMON2(PINECO),
+ EC_DUPLICATES(2),
+ EC_POKEMON(PINSIR),
+ EC_POKEMON2(PINSIR),
+ EC_WORD_PKRS,
+ EC_WORD_PLACE,
+ EC_WORD_PLANS,
+ EC_WORD_PLAY,
+ EC_WORD_PLAYED,
+ EC_WORD_PLAYS,
+ EC_WORD_PLEASE,
+ EC_WORD_PLUS,
+ EC_WORD_PLUSH_DOLL,
+ EC_POKEMON(PLUSLE),
+ EC_WORD_POINTS,
+ EC_WORD_POISON,
+ EC_MOVE2(POISON_FANG),
+ EC_MOVE2(POISON_GAS),
+ EC_WORD_POISON_POINT,
+ EC_MOVE2(POISON_STING),
+ EC_MOVE2(POISON_TAIL),
+ EC_MOVE2(POISON_POWDER),
+ EC_WORD_POKEBLOCK,
+ EC_WORD_POKEDEX,
+ EC_WORD_POKEMON,
+ EC_WORD_POKENAV,
+ EC_POKEMON2(POLITOED),
+ EC_POKEMON2(POLIWAG),
+ EC_POKEMON2(POLIWHIRL),
+ EC_POKEMON2(POLIWRATH),
+ EC_POKEMON2(PONYTA),
+ EC_POKEMON(POOCHYENA),
+ EC_WORD_POPULAR,
+ EC_POKEMON2(PORYGON),
+ EC_POKEMON2(PORYGON2),
+ EC_MOVE2(POUND),
+ EC_MOVE(POWDER_SNOW),
+ EC_WORD_POWER,
+ EC_WORD_PRAISE,
+ EC_WORD_PREPOSTEROUS,
+ EC_MOVE2(PRESENT),
+ EC_WORD_PRESSURE,
+ EC_WORD_PRETEND,
+ EC_WORD_PRETTY,
+ EC_POKEMON2(PRIMEAPE),
+ EC_WORD_PROBABLY,
+ EC_WORD_PROMISE,
+ EC_MOVE2(PROTECT),
+ EC_MOVE(PSYBEAM),
+ EC_MOVE(PSYCH_UP),
+ EC_DUPLICATES(2),
+ EC_WORD_PSYCHIC,
+ EC_MOVE(PSYCHIC),
+ EC_DUPLICATES(2),
+ EC_POKEMON(PSYDUCK),
+ EC_POKEMON2(PSYDUCK),
+ EC_MOVE(PSYWAVE),
+ EC_POKEMON2(PUPITAR),
+ EC_WORD_PURE_POWER,
+ EC_MOVE(PURSUIT),
+ EC_WORD_PUSHOVER,
+};
+
+#define EC_WBL_OFFSET_Q ARRAY_COUNT(gEasyChatWordsByLetter_P) + EC_WBL_OFFSET_P
+
+u16 gEasyChatWordsByLetter_Q[] = {
+ EC_POKEMON2(QUAGSIRE),
+ EC_WORD_QUESTION,
+ EC_MOVE2(QUICK_ATTACK),
+ EC_POKEMON2(QUILAVA),
+ EC_WORD_QUITE,
+ EC_POKEMON2(QWILFISH),
+};
+
+#define EC_WBL_OFFSET_R ARRAY_COUNT(gEasyChatWordsByLetter_Q) + EC_WBL_OFFSET_Q
+
+u16 gEasyChatWordsByLetter_R[] = {
+ EC_WORD_RADIO,
+ EC_MOVE(RAGE),
+ EC_DUPLICATES(2),
+ EC_POKEMON(RAICHU),
+ EC_POKEMON2(RAICHU),
+ EC_POKEMON2(RAIKOU),
+ EC_MOVE(RAIN_DANCE),
+ EC_WORD_RAIN_DISH,
+ EC_POKEMON(RALTS),
+ EC_WORD_RANK,
+ EC_MOVE(RAPID_SPIN),
+ EC_POKEMON2(RAPIDASH),
+ EC_WORD_RARE,
+ EC_WORD_RATHER,
+ EC_POKEMON2(RATICATE),
+ EC_POKEMON2(RATTATA),
+ EC_POKEMON(RAYQUAZA),
+ EC_MOVE2(RAZOR_LEAF),
+ EC_MOVE(RAZOR_WIND),
+ EC_WORD_READY,
+ EC_WORD_REALLY,
+ EC_WORD_REAR,
+ EC_WORD_RECEIVED,
+ EC_WORD_RECOMMEND,
+ EC_MOVE(RECOVER),
+ EC_MOVE2(RECYCLE),
+ EC_MOVE2(REFLECT),
+ EC_MOVE2(REFRESH),
+ EC_WORD_REFRESHING,
+ EC_WORD_REFUSE,
+ EC_POKEMON(REGICE),
+ EC_POKEMON(REGIROCK),
+ EC_POKEMON(REGISTEEL),
+ EC_WORD_REJECT,
+ EC_WORD_RELEASE,
+ EC_POKEMON(RELICANTH),
+ EC_POKEMON2(REMORAID),
+ EC_WORD_RENTAL,
+ EC_MOVE2(REST),
+ EC_WORD_RESUSCITATE,
+ EC_MOVE(RETURN),
+ EC_MOVE2(REVENGE),
+ EC_MOVE(REVERSAL),
+ EC_DUPLICATES(2),
+ EC_POKEMON(RHYDON),
+ EC_POKEMON2(RHYDON),
+ EC_DUPLICATES(2),
+ EC_POKEMON(RHYHORN),
+ EC_POKEMON2(RHYHORN),
+ EC_WORD_RIBBON,
+ EC_WORD_RICKETY,
+ EC_WORD_RIGHT,
+ EC_WORD_RIPPED,
+ EC_WORD_RIVAL,
+ EC_MOVE2(ROAR),
+ EC_WORD_ROCK,
+ EC_MOVE2(ROCK_BLAST),
+ EC_WORD_ROCK_HEAD,
+ EC_MOVE(ROCK_SLIDE),
+ EC_MOVE(ROCK_SMASH),
+ EC_MOVE(ROCK_THROW),
+ EC_MOVE(ROCK_TOMB),
+ EC_WORD_ROCK_SOLID,
+ EC_MOVE2(ROLE_PLAY),
+ EC_MOVE2(ROLLING_KICK),
+ EC_MOVE(ROLLOUT),
+ EC_WORD_ROMANTIC,
+ EC_POKEMON(ROSELIA),
+ EC_WORD_ROUGH_SKIN,
+ EC_WORD_RPG,
+ EC_WORD_RUBY,
+ EC_WORD_RULE,
+ EC_WORD_RUN,
+ EC_WORD_RUN_AWAY,
+ EC_WORD_RUNS,
+};
+
+#define EC_WBL_OFFSET_S ARRAY_COUNT(gEasyChatWordsByLetter_R) + EC_WBL_OFFSET_R
+
+u16 gEasyChatWordsByLetter_S[] = {
+ EC_POKEMON(SABLEYE),
+ EC_MOVE(SACRED_FIRE),
+ EC_WORD_SAD,
+ EC_WORD_SADLY,
+ EC_MOVE(SAFEGUARD),
+ EC_WORD_SAID,
+ EC_POKEMON(SALAMENCE),
+ EC_WORD_SAND_STREAM,
+ EC_MOVE(SAND_TOMB),
+ EC_WORD_SAND_VEIL,
+ EC_MOVE(SAND_ATTACK),
+ EC_DUPLICATES(2),
+ EC_POKEMON(SANDSHREW),
+ EC_POKEMON2(SANDSHREW),
+ EC_DUPLICATES(2),
+ EC_POKEMON(SANDSLASH),
+ EC_POKEMON2(SANDSLASH),
+ EC_MOVE(SANDSTORM),
+ EC_WORD_SAPPHIRE,
+ EC_WORD_SATISFIED,
+ EC_WORD_SATURDAY,
+ EC_WORD_SAYS,
+ EC_WORD_SCARY,
+ EC_MOVE(SCARY_FACE),
+ EC_WORD_SCATTER,
+ EC_POKEMON(SCEPTILE),
+ EC_WORD_SCHOOL,
+ EC_POKEMON2(SCIZOR),
+ EC_MOVE2(SCRATCH),
+ EC_MOVE(SCREECH),
+ EC_POKEMON2(SCYTHER),
+ EC_DUPLICATES(2),
+ EC_POKEMON(SEADRA),
+ EC_POKEMON2(SEADRA),
+ EC_DUPLICATES(2),
+ EC_POKEMON(SEAKING),
+ EC_POKEMON2(SEAKING),
+ EC_POKEMON(SEALEO),
+ EC_WORD_SEARCH,
+ EC_WORD_SECRET,
+ EC_WORD_SECRET_BASE,
+ EC_MOVE2(SECRET_POWER),
+ EC_WORD_SEE,
+ EC_WORD_SEE_YA,
+ EC_POKEMON(SEEDOT),
+ EC_WORD_SEEK,
+ EC_POKEMON2(SEEL),
+ EC_WORD_SEEMS,
+ EC_WORD_SEES,
+ EC_MOVE2(SEISMIC_TOSS),
+ EC_MOVE(SELF_DESTRUCT),
+ EC_WORD_SENSE,
+ EC_POKEMON2(SENTRET),
+ EC_WORD_SERENE_GRACE,
+ EC_WORD_SERIOUS,
+ EC_WORD_SERIOUSLY,
+ EC_WORD_SERVICE,
+ EC_POKEMON(SEVIPER),
+ EC_MOVE(SHADOW_BALL),
+ EC_MOVE(SHADOW_PUNCH),
+ EC_WORD_SHADOW_TAG,
+ EC_WORD_SHADY,
+ EC_WORD_SHAKE,
+ EC_WORD_SHAKY,
+ EC_WORD_SHALLOW,
+ EC_POKEMON(SHARPEDO),
+ EC_MOVE(SHARPEN),
+ EC_WORD_SHE,
+ EC_WORD_SHE_IS,
+ EC_WORD_SHE_WAS,
+ EC_WORD_SHED_SKIN,
+ EC_POKEMON(SHEDINJA),
+ EC_MOVE(SHEER_COLD),
+ EC_POKEMON(SHELGON),
+ EC_WORD_SHELL_ARMOR,
+ EC_POKEMON2(SHELLDER),
+ EC_WORD_SHIELD_DUST,
+ EC_POKEMON(SHIFTRY),
+ EC_WORD_SHINE,
+ EC_MOVE2(SHOCK_WAVE),
+ EC_WORD_SHOCKED,
+ EC_WORD_SHOPPING,
+ EC_WORD_SHOULD,
+ EC_WORD_SHOW,
+ EC_WORD_SHREDDED,
+ EC_POKEMON(SHROOMISH),
+ EC_POKEMON2(SHUCKLE),
+ EC_POKEMON(SHUPPET),
+ EC_WORD_SIBLINGS,
+ EC_WORD_SIGH,
+ EC_MOVE(SIGNAL_BEAM),
+ EC_POKEMON(SILCOON),
+ EC_WORD_SILKY,
+ EC_MOVE(SILVER_WIND),
+ EC_WORD_SIMPLE,
+ EC_WORD_SINCE,
+ EC_MOVE(SING),
+ EC_WORD_SINK,
+ EC_WORD_SISTER,
+ EC_DUPLICATES(2),
+ EC_POKEMON(SKARMORY),
+ EC_POKEMON2(SKARMORY),
+ EC_MOVE(SKETCH),
+ EC_WORD_SKILL,
+ EC_MOVE(SKILL_SWAP),
+ EC_WORD_SKILLED,
+ EC_POKEMON2(SKIPLOOM),
+ EC_POKEMON(SKITTY),
+ EC_MOVE2(SKULL_BASH),
+ EC_MOVE(SKY_ATTACK),
+ EC_MOVE(SKY_UPPERCUT),
+ EC_MOVE2(SLACK_OFF),
+ EC_POKEMON(SLAKING),
+ EC_POKEMON(SLAKOTH),
+ EC_MOVE2(SLAM),
+ EC_MOVE(SLASH),
+ EC_WORD_SLEEP,
+ EC_MOVE2(SLEEP_POWDER),
+ EC_MOVE2(SLEEP_TALK),
+ EC_WORD_SLEPT,
+ EC_WORD_SLIDE,
+ EC_WORD_SLIMY,
+ EC_POKEMON2(SLOWBRO),
+ EC_POKEMON2(SLOWKING),
+ EC_POKEMON2(SLOWPOKE),
+ EC_MOVE2(SLUDGE),
+ EC_MOVE2(SLUDGE_BOMB),
+ EC_DUPLICATES(2),
+ EC_POKEMON(SLUGMA),
+ EC_POKEMON2(SLUGMA),
+ EC_WORD_SMACK,
+ EC_WORD_SMALL,
+ EC_WORD_SMART,
+ EC_WORD_SMARTNESS,
+ EC_POKEMON2(SMEARGLE),
+ EC_WORD_SMELL,
+ EC_WORD_SMELL_YA,
+ EC_MOVE(SMELLING_SALT),
+ EC_WORD_SMITE,
+ EC_MOVE(SMOG),
+ EC_MOVE(SMOKESCREEN),
+ EC_POKEMON2(SMOOCHUM),
+ EC_WORD_SMOOTH,
+ EC_MOVE2(SNATCH),
+ EC_POKEMON2(SNEASEL),
+ EC_MOVE(SNORE),
+ EC_POKEMON2(SNORLAX),
+ EC_WORD_SNORT,
+ EC_POKEMON(SNORUNT),
+ EC_POKEMON2(SNUBBULL),
+ EC_WORD_SO,
+ EC_MOVE2(SOFT_BOILED),
+ EC_WORD_SOFTWARE,
+ EC_MOVE(SOLAR_BEAM),
+ EC_POKEMON(SOLROCK),
+ EC_WORD_SOME,
+ EC_WORD_SOMEHOW,
+ EC_WORD_SOMEONE,
+ EC_WORD_SOMETHING,
+ EC_WORD_SOMETIME,
+ EC_WORD_SON,
+ EC_WORD_SONG,
+ EC_WORD_SONGS,
+ EC_MOVE(SONIC_BOOM),
+ EC_WORD_SOON,
+ EC_WORD_SORRY,
+ EC_WORD_SOUNDPROOF,
+ EC_WORD_SP_ABILITY,
+ EC_MOVE(SPARK),
+ EC_POKEMON2(SPEAROW),
+ EC_WORD_SPECTATOR,
+ EC_WORD_SPEED_BOOST,
+ EC_POKEMON(SPHEAL),
+ EC_MOVE(SPIDER_WEB),
+ EC_MOVE2(SPIKE_CANNON),
+ EC_MOVE2(SPIKES),
+ EC_POKEMON2(SPINARAK),
+ EC_POKEMON(SPINDA),
+ EC_WORD_SPIRALING,
+ EC_WORD_SPIRIT,
+ EC_MOVE2(SPIT_UP),
+ EC_MOVE(SPITE),
+ EC_MOVE2(SPLASH),
+ EC_POKEMON(SPOINK),
+ EC_MOVE(SPORE),
+ EC_WORD_SPORTS,
+ EC_WORD_SPRING,
+ EC_POKEMON2(SQUIRTLE),
+ EC_WORD_STAGE,
+ EC_POKEMON2(STANTLER),
+ EC_DUPLICATES(2),
+ EC_POKEMON(STARMIE),
+ EC_POKEMON2(STARMIE),
+ EC_WORD_START,
+ EC_DUPLICATES(2),
+ EC_POKEMON(STARYU),
+ EC_POKEMON2(STARYU),
+ EC_WORD_STATIC,
+ EC_WORD_STAY_AT_HOME,
+ EC_WORD_STEEL,
+ EC_MOVE2(STEEL_WING),
+ EC_POKEMON2(STEELIX),
+ EC_WORD_STENCH,
+ EC_WORD_STICKY_HOLD,
+ EC_MOVE2(STOCKPILE),
+ EC_MOVE2(STOMP),
+ EC_WORD_STOP,
+ EC_WORD_STORE,
+ EC_WORD_STORES,
+ EC_WORD_STORY,
+ EC_WORD_STRATEGY,
+ EC_MOVE(STRENGTH),
+ EC_MOVE(STRING_SHOT),
+ EC_WORD_STRONG,
+ EC_MOVE2(STRUGGLE),
+ EC_WORD_STUDY,
+ EC_MOVE(STUN_SPORE),
+ EC_WORD_STURDY,
+ EC_MOVE(SUBMISSION),
+ EC_MOVE2(SUBSTITUTE),
+ EC_WORD_SUCTION_CUPS,
+ EC_POKEMON2(SUDOWOODO),
+ EC_POKEMON2(SUICUNE),
+ EC_WORD_SUMMER,
+ EC_WORD_SUNDAY,
+ EC_POKEMON2(SUNFLORA),
+ EC_POKEMON2(SUNKERN),
+ EC_MOVE2(SUNNY_DAY),
+ EC_WORD_SUPER,
+ EC_MOVE(SUPER_FANG),
+ EC_MOVE2(SUPERPOWER),
+ EC_MOVE2(SUPERSONIC),
+ EC_MOVE2(SURF),
+ EC_WORD_SURPRISE,
+ EC_WORD_SURRENDER,
+ EC_POKEMON(SURSKIT),
+ EC_POKEMON(SWABLU),
+ EC_MOVE(SWAGGER),
+ EC_MOVE2(SWALLOW),
+ EC_POKEMON(SWALOT),
+ EC_POKEMON(SWAMPERT),
+ EC_WORD_SWARM,
+ EC_MOVE2(SWEET_KISS),
+ EC_MOVE(SWEET_SCENT),
+ EC_WORD_SWEETS,
+ EC_POKEMON(SWELLOW),
+ EC_MOVE(SWIFT),
+ EC_WORD_SWIFT_SWIM,
+ EC_POKEMON2(SWINUB),
+ EC_MOVE2(SWORDS_DANCE),
+ EC_WORD_SYNCHRONIZE,
+ EC_MOVE(SYNTHESIS),
+ EC_WORD_SYSTEM,
+};
+
+#define EC_WBL_OFFSET_T ARRAY_COUNT(gEasyChatWordsByLetter_S) + EC_WBL_OFFSET_S
+
+u16 gEasyChatWordsByLetter_T[] = {
+ EC_MOVE2(TACKLE),
+ EC_MOVE2(TAIL_GLOW),
+ EC_MOVE(TAIL_WHIP),
+ EC_POKEMON(TAILLOW),
+ EC_WORD_TAKE,
+ EC_MOVE2(TAKE_DOWN),
+ EC_WORD_TAKE_THAT,
+ EC_WORD_TALENT,
+ EC_WORD_TALK,
+ EC_WORD_TALKING,
+ EC_POKEMON2(TANGELA),
+ EC_WORD_TASTY,
+ EC_MOVE2(TAUNT),
+ EC_POKEMON2(TAUROS),
+ EC_WORD_TCH,
+ EC_WORD_TEACH,
+ EC_WORD_TEACHER,
+ EC_WORD_TEACHES,
+ EC_POKEMON2(TEDDIURSA),
+ EC_MOVE2(TEETER_DANCE),
+ EC_MOVE2(TELEPORT),
+ EC_WORD_TELEVISION,
+ EC_DUPLICATES(2),
+ EC_POKEMON(TENTACOOL),
+ EC_POKEMON2(TENTACOOL),
+ EC_DUPLICATES(2),
+ EC_POKEMON(TENTACRUEL),
+ EC_POKEMON2(TENTACRUEL),
+ EC_WORD_TERRIBLE,
+ EC_WORD_TEST,
+ EC_WORD_THAN,
+ EC_WORD_THANK_YOU,
+ EC_WORD_THANKS,
+ EC_WORD_THAT,
+ EC_WORD_THAT_WAS,
+ EC_WORD_THAT_S,
+ EC_WORD_THAT_S_IT_EXCL,
+ EC_WORD_THE,
+ EC_WORD_THEIR,
+ EC_WORD_THERE,
+ EC_WORD_THESE,
+ EC_WORD_THESE_WERE,
+ EC_WORD_THEY,
+ EC_WORD_THEY_WERE,
+ EC_WORD_THEY_RE,
+ EC_WORD_THEY_VE,
+ EC_WORD_THICK,
+ EC_WORD_THICK_FAT,
+ EC_MOVE2(THIEF),
+ EC_WORD_THIN,
+ EC_WORD_THING,
+ EC_WORD_THINGS,
+ EC_WORD_THINK,
+ EC_WORD_THINKS,
+ EC_WORD_THIRSTY,
+ EC_WORD_THIS,
+ EC_WORD_THIS_IS_IT_EXCL,
+ EC_WORD_THOSE,
+ EC_WORD_THOSE_ARE,
+ EC_WORD_THOSE_WERE,
+ EC_MOVE(THRASH),
+ EC_WORD_THROW,
+ EC_MOVE(THUNDER),
+ EC_MOVE2(THUNDER_WAVE),
+ EC_MOVE(THUNDERBOLT),
+ EC_MOVE(THUNDER_PUNCH),
+ EC_MOVE2(THUNDER_SHOCK),
+ EC_WORD_THURSDAY,
+ EC_MOVE(TICKLE),
+ EC_WORD_TICKLISH,
+ EC_WORD_TIGHT,
+ EC_WORD_TIME,
+ EC_WORD_TIMES,
+ EC_WORD_TIRED,
+ EC_WORD_TO,
+ EC_WORD_TO_HER,
+ EC_WORD_TO_ME,
+ EC_WORD_TO_THEM,
+ EC_WORD_TO_US,
+ EC_WORD_TO_WHOM,
+ EC_WORD_TODAY,
+ EC_POKEMON2(TOGEPI),
+ EC_WORD_TOGETHER,
+ EC_POKEMON2(TOGETIC),
+ EC_WORD_TOMORROW,
+ EC_WORD_TOO,
+ EC_WORD_TOO_LATE,
+ EC_WORD_TOO_STRONG,
+ EC_WORD_TOO_WEAK,
+ EC_WORD_TOP,
+ EC_POKEMON(TORCHIC),
+ EC_POKEMON(TORKOAL),
+ EC_MOVE(TORMENT),
+ EC_WORD_TORRENT,
+ EC_WORD_TOTALLY,
+ EC_POKEMON2(TOTODILE),
+ EC_WORD_TOUGH,
+ EC_WORD_TOUGHNESS,
+ EC_WORD_TOURNAMENT,
+ EC_MOVE2(TOXIC),
+ EC_WORD_TOYS,
+ EC_WORD_TRACE,
+ EC_WORD_TRADE,
+ EC_WORD_TRAIN,
+ EC_WORD_TRAINER,
+ EC_WORD_TRAINS,
+ EC_MOVE2(TRANSFORM),
+ EC_POKEMON(TRAPINCH),
+ EC_WORD_TRAVEL,
+ EC_WORD_TREASURE,
+ EC_POKEMON(TREECKO),
+ EC_WORD_TRENDY,
+ EC_MOVE2(TRI_ATTACK),
+ EC_MOVE2(TRICK),
+ EC_WORD_TRIES,
+ EC_MOVE2(TRIPLE_KICK),
+ EC_POKEMON(TROPIUS),
+ EC_WORD_TRUANT,
+ EC_WORD_TRULY,
+ EC_WORD_TRUMP_CARD,
+ EC_WORD_TRUST,
+ EC_WORD_TRY,
+ EC_WORD_TUESDAY,
+ EC_MOVE2(TWINEEDLE),
+ EC_WORD_TWIRLING,
+ EC_MOVE2(TWISTER),
+ EC_WORD_TYPE,
+ EC_POKEMON2(TYPHLOSION),
+ EC_POKEMON2(TYRANITAR),
+ EC_POKEMON2(TYROGUE),
+};
+
+#define EC_WBL_OFFSET_U ARRAY_COUNT(gEasyChatWordsByLetter_T) + EC_WBL_OFFSET_T
+
+u16 gEasyChatWordsByLetter_U[] = {
+ EC_WORD_UGLY,
+ EC_WORD_UH_HUH,
+ EC_WORD_UH_OH,
+ EC_WORD_UM,
+ EC_POKEMON2(UMBREON),
+ EC_WORD_UNAVOIDABLE,
+ EC_WORD_UNBELIEVABLE,
+ EC_WORD_UNCLE,
+ EC_WORD_UNDERSTAND,
+ EC_WORD_UNDERSTANDS,
+ EC_WORD_UNDERSTOOD,
+ EC_POKEMON2(UNOWN),
+ EC_WORD_UNTIL,
+ EC_WORD_UP,
+ EC_WORD_UPBEAT,
+ EC_MOVE(UPROAR),
+ EC_WORD_UPSIDE_DOWN,
+ EC_WORD_URGH,
+ EC_POKEMON2(URSARING),
+ EC_WORD_USE,
+ EC_WORD_USELESS,
+ EC_WORD_USES,
+ EC_WORD_USING,
+};
+
+#define EC_WBL_OFFSET_V ARRAY_COUNT(gEasyChatWordsByLetter_U) + EC_WBL_OFFSET_U
+
+u16 gEasyChatWordsByLetter_V[] = {
+ EC_WORD_VACATION,
+ EC_POKEMON2(VAPOREON),
+ EC_POKEMON2(VENOMOTH),
+ EC_POKEMON2(VENONAT),
+ EC_POKEMON2(VENUSAUR),
+ EC_WORD_VERSION,
+ EC_WORD_VERSUS,
+ EC_WORD_VERY,
+ EC_POKEMON(VIBRAVA),
+ EC_MOVE2(VICE_GRIP),
+ EC_WORD_VICTORY,
+ EC_POKEMON2(VICTREEBEL),
+ EC_WORD_VIEWING,
+ EC_POKEMON(VIGOROTH),
+ EC_DUPLICATES(2),
+ EC_POKEMON(VILEPLUME),
+ EC_POKEMON2(VILEPLUME),
+ EC_MOVE2(VINE_WHIP),
+ EC_WORD_VITAL_SPIRIT,
+ EC_MOVE(VITAL_THROW),
+ EC_POKEMON(VOLBEAT),
+ EC_WORD_VOLT_ABSORB,
+ EC_DUPLICATES(2),
+ EC_POKEMON(VOLTORB),
+ EC_POKEMON2(VOLTORB),
+ EC_WORD_VORACIOUS,
+ EC_DUPLICATES(2),
+ EC_POKEMON(VULPIX),
+ EC_POKEMON2(VULPIX),
+};
+
+#define EC_WBL_OFFSET_W ARRAY_COUNT(gEasyChatWordsByLetter_V) + EC_WBL_OFFSET_V
+
+u16 gEasyChatWordsByLetter_W[] = {
+ EC_WORD_WAAAH,
+ EC_WORD_WAHAHAHA,
+ EC_POKEMON(WAILMER),
+ EC_POKEMON(WAILORD),
+ EC_WORD_WAIT,
+ EC_WORD_WAKE_UP,
+ EC_WORD_WAKES_UP,
+ EC_WORD_WALK,
+ EC_WORD_WALKING,
+ EC_WORD_WALKS,
+ EC_POKEMON(WALREIN),
+ EC_WORD_WANDERING,
+ EC_WORD_WANNABE,
+ EC_WORD_WANT,
+ EC_WORD_WANTS,
+ EC_POKEMON2(WARTORTLE),
+ EC_WORD_WAS,
+ EC_WORD_WASN_T,
+ EC_WORD_WATER,
+ EC_WORD_WATER_ABSORB,
+ EC_MOVE2(WATER_GUN),
+ EC_MOVE2(WATER_PULSE),
+ EC_MOVE2(WATER_SPORT),
+ EC_MOVE(WATER_SPOUT),
+ EC_WORD_WATER_VEIL,
+ EC_MOVE2(WATERFALL),
+ EC_WORD_WAY,
+ EC_WORD_WE,
+ EC_WORD_WE_RE,
+ EC_WORD_WE_VE,
+ EC_WORD_WEAK,
+ EC_WORD_WEAKENED,
+ EC_MOVE(WEATHER_BALL),
+ EC_WORD_WEDNESDAY,
+ EC_POKEMON2(WEEDLE),
+ EC_WORD_WEEK,
+ EC_POKEMON2(WEEPINBELL),
+ EC_DUPLICATES(2),
+ EC_POKEMON(WEEZING),
+ EC_POKEMON2(WEEZING),
+ EC_WORD_WEIRD,
+ EC_WORD_WELCOME,
+ EC_WORD_WELL,
+ EC_WORD_WELL_THEN,
+ EC_WORD_WENT,
+ EC_WORD_WERE,
+ EC_WORD_WEREN_T,
+ EC_WORD_WHAT,
+ EC_WORD_WHAT_S_UP_QUES,
+ EC_WORD_WHEN,
+ EC_WORD_WHEN_I_WIN,
+ EC_WORD_WHERE,
+ EC_WORD_WHICH,
+ EC_WORD_WHILE,
+ EC_MOVE(WHIRLPOOL),
+ EC_MOVE2(WHIRLWIND),
+ EC_POKEMON(WHISCASH),
+ EC_POKEMON(WHISMUR),
+ EC_WORD_WHITE_SMOKE,
+ EC_WORD_WHO,
+ EC_WORD_WHO_IS,
+ EC_WORD_WHO_WAS,
+ EC_WORD_WHOAH,
+ EC_WORD_WHOM,
+ EC_WORD_WHOSE,
+ EC_WORD_WHY,
+ EC_DUPLICATES(2),
+ EC_POKEMON(WIGGLYTUFF),
+ EC_POKEMON2(WIGGLYTUFF),
+ EC_WORD_WILD,
+ EC_WORD_WILL,
+ EC_WORD_WILL_BE_HERE,
+ EC_MOVE(WILL_O_WISP),
+ EC_WORD_WIMPY,
+ EC_WORD_WIN,
+ EC_MOVE2(WING_ATTACK),
+ EC_POKEMON(WINGULL),
+ EC_WORD_WINNER,
+ EC_WORD_WINS,
+ EC_WORD_WINTER,
+ EC_MOVE2(WISH),
+ EC_WORD_WITH,
+ EC_MOVE(WITHDRAW),
+ EC_WORD_WITHOUT,
+ EC_WORD_WOBBLY,
+ EC_DUPLICATES(2),
+ EC_POKEMON(WOBBUFFET),
+ EC_POKEMON2(WOBBUFFET),
+ EC_WORD_WOMAN,
+ EC_WORD_WON,
+ EC_WORD_WON_T,
+ EC_WORD_WONDER,
+ EC_WORD_WONDER_GUARD,
+ EC_POKEMON2(WOOPER),
+ EC_WORD_WORD,
+ EC_WORD_WORK,
+ EC_WORD_WORKING,
+ EC_WORD_WORKS,
+ EC_WORD_WORLD,
+ EC_WORD_WORRY,
+ EC_WORD_WOULD,
+ EC_WORD_WOW,
+ EC_WORD_WOWEE,
+ EC_MOVE2(WRAP),
+ EC_WORD_WROOOAAR_EXCL,
+ EC_POKEMON(WURMPLE),
+ EC_POKEMON(WYNAUT),
+};
+
+#define EC_WBL_OFFSET_X ARRAY_COUNT(gEasyChatWordsByLetter_W) + EC_WBL_OFFSET_W
+
+u16 gEasyChatWordsByLetter_X[] = {
+ EC_DUPLICATES(2),
+ EC_POKEMON(XATU),
+ EC_POKEMON2(XATU),
+};
+
+#define EC_WBL_OFFSET_Y ARRAY_COUNT(gEasyChatWordsByLetter_X) + EC_WBL_OFFSET_X
+
+u16 gEasyChatWordsByLetter_Y[] = {
+ EC_WORD_YAHOO,
+ EC_POKEMON2(YANMA),
+ EC_MOVE(YAWN),
+ EC_WORD_YAY,
+ EC_WORD_YEAH,
+ EC_WORD_YEAH_YEAH,
+ EC_WORD_YEEHAW_EXCL,
+ EC_WORD_YES,
+ EC_WORD_YES_SIR_EXCL,
+ EC_WORD_YESTERDAY,
+ EC_WORD_YET,
+ EC_WORD_YO,
+ EC_WORD_YOU,
+ EC_WORD_YOU_RE,
+ EC_WORD_YOU_VE,
+ EC_WORD_YOUNG,
+ EC_WORD_YOUR,
+ EC_WORD_YOURS,
+ EC_WORD_YUP,
+};
+
+#define EC_WBL_OFFSET_Z ARRAY_COUNT(gEasyChatWordsByLetter_Y) + EC_WBL_OFFSET_Y
+
+u16 gEasyChatWordsByLetter_Z[] = {
+ EC_POKEMON(ZANGOOSE),
+ EC_MOVE2(ZAP_CANNON),
+ EC_POKEMON2(ZAPDOS),
+ EC_POKEMON(ZIGZAGOON),
+ EC_DUPLICATES(2),
+ EC_POKEMON(ZUBAT),
+ EC_POKEMON2(ZUBAT),
+};
+
+#define EC_WBL_OFFSET_End ARRAY_COUNT(gEasyChatWordsByLetter_Z) + EC_WBL_OFFSET_Z
+
+u16 gEasyChatWordsByLetter_End[] = {
+};
+
+u16 gEasyChatWordsByLetter[] = {
+ EC_WBL_OFFSET_Others,
+ EC_WBL_OFFSET_A,
+ EC_WBL_OFFSET_B,
+ EC_WBL_OFFSET_C,
+ EC_WBL_OFFSET_D,
+ EC_WBL_OFFSET_E,
+ EC_WBL_OFFSET_F,
+ EC_WBL_OFFSET_G,
+ EC_WBL_OFFSET_H,
+ EC_WBL_OFFSET_I,
+ EC_WBL_OFFSET_J,
+ EC_WBL_OFFSET_K,
+ EC_WBL_OFFSET_L,
+ EC_WBL_OFFSET_M,
+ EC_WBL_OFFSET_N,
+ EC_WBL_OFFSET_O,
+ EC_WBL_OFFSET_P,
+ EC_WBL_OFFSET_Q,
+ EC_WBL_OFFSET_R,
+ EC_WBL_OFFSET_S,
+ EC_WBL_OFFSET_T,
+ EC_WBL_OFFSET_U,
+ EC_WBL_OFFSET_V,
+ EC_WBL_OFFSET_W,
+ EC_WBL_OFFSET_X,
+ EC_WBL_OFFSET_Y,
+ EC_WBL_OFFSET_Z,
+ EC_WBL_OFFSET_End,
+};
+
+#endif // DATA_TEXT_EASY_CHAT_WORDS_BY_LETTER_EN
diff --git a/src/data/text/move_names_de.h b/src/data/text/move_names_de.h
new file mode 100644
index 000000000..44d898433
--- /dev/null
+++ b/src/data/text/move_names_de.h
@@ -0,0 +1,357 @@
+const u8 gMoveNames[][13] = {
+ [MOVE_NONE] = _("-$$$$$$"),
+ [MOVE_POUND] = _("PFUND"),
+ [MOVE_KARATE_CHOP] = _("KARATESCHLAG"),
+ [MOVE_DOUBLE_SLAP] = _("DUPLEXHIEB"),
+ [MOVE_COMET_PUNCH] = _("KOMETENHIEB"),
+ [MOVE_MEGA_PUNCH] = _("MEGAHIEB"),
+ [MOVE_PAY_DAY] = _("ZAHLTAG"),
+ [MOVE_FIRE_PUNCH] = _("FEUERSCHLAG"),
+ [MOVE_ICE_PUNCH] = _("EISHIEB"),
+ [MOVE_THUNDER_PUNCH] = _("DONNERSCHLAG"),
+ [MOVE_SCRATCH] = _("KRATZER"),
+ [MOVE_VICE_GRIP] = _("KLAMMER"),
+ [MOVE_GUILLOTINE] = _("GUILLOTINE"),
+ [MOVE_RAZOR_WIND] = _("KLINGENSTURM"),
+ [MOVE_SWORDS_DANCE] = _("SCHWERTTANZ"),
+ [MOVE_CUT] = _("ZERSCHNEIDER"),
+ [MOVE_GUST] = _("WINDSTOSS"),
+ [MOVE_WING_ATTACK] = _("FLÜGELSCHLAG"),
+ [MOVE_WHIRLWIND] = _("WIRBELWIND"),
+ [MOVE_FLY] = _("FLIEGEN"),
+ [MOVE_BIND] = _("KLAMMERGRIFF"),
+ [MOVE_SLAM] = _("SLAM"),
+ [MOVE_VINE_WHIP] = _("RANKENHIEB"),
+ [MOVE_STOMP] = _("STAMPFER"),
+ [MOVE_DOUBLE_KICK] = _("DOPPELKICK"),
+ [MOVE_MEGA_KICK] = _("MEGAKICK"),
+ [MOVE_JUMP_KICK] = _("SPRUNGKICK"),
+ [MOVE_ROLLING_KICK] = _("FEGEKICK"),
+ [MOVE_SAND_ATTACK] = _("SANDWIRBEL"),
+ [MOVE_HEADBUTT] = _("KOPFNUSS"),
+ [MOVE_HORN_ATTACK] = _("HORNATTACKE"),
+ [MOVE_FURY_ATTACK] = _("FURIENSCHLAG"),
+ [MOVE_HORN_DRILL] = _("HORNBOHRER"),
+ [MOVE_TACKLE] = _("TACKLE"),
+ [MOVE_BODY_SLAM] = _("BODYSLAM"),
+ [MOVE_WRAP] = _("WICKEL"),
+ [MOVE_TAKE_DOWN] = _("BODYCHECK"),
+ [MOVE_THRASH] = _("FUCHTLER"),
+ [MOVE_DOUBLE_EDGE] = _("RISIKOTACKLE"),
+ [MOVE_TAIL_WHIP] = _("RUTENSCHLAG"),
+ [MOVE_POISON_STING] = _("GIFTSTACHEL"),
+ [MOVE_TWINEEDLE] = _("DUONADEL"),
+ [MOVE_PIN_MISSILE] = _("NADELRAKETE"),
+ [MOVE_LEER] = _("SILBERBLICK"),
+ [MOVE_BITE] = _("BISS"),
+ [MOVE_GROWL] = _("HEULER"),
+ [MOVE_ROAR] = _("BRÜLLER"),
+ [MOVE_SING] = _("GESANG"),
+ [MOVE_SUPERSONIC] = _("SUPERSCHALL"),
+ [MOVE_SONIC_BOOM] = _("ULTRASCHALL"),
+ [MOVE_DISABLE] = _("AUSSETZER"),
+ [MOVE_ACID] = _("SÄURE"),
+ [MOVE_EMBER] = _("GLUT"),
+ [MOVE_FLAMETHROWER] = _("FLAMMENWURF"),
+ [MOVE_MIST] = _("WEISSNEBEL"),
+ [MOVE_WATER_GUN] = _("AQUAKNARRE"),
+ [MOVE_HYDRO_PUMP] = _("HYDROPUMPE"),
+ [MOVE_SURF] = _("SURFER"),
+ [MOVE_ICE_BEAM] = _("EISSTRAHL"),
+ [MOVE_BLIZZARD] = _("BLIZZARD"),
+ [MOVE_PSYBEAM] = _("PSYSTRAHL"),
+ [MOVE_BUBBLE_BEAM] = _("BLUBBSTRAHL"),
+ [MOVE_AURORA_BEAM] = _("AURORASTRAHL"),
+ [MOVE_HYPER_BEAM] = _("HYPERSTRAHL"),
+ [MOVE_PECK] = _("SCHNABEL"),
+ [MOVE_DRILL_PECK] = _("BOHRSCHNABEL"),
+ [MOVE_SUBMISSION] = _("ÜBERROLLER"),
+ [MOVE_LOW_KICK] = _("FUSSKICK"),
+ [MOVE_COUNTER] = _("KONTER"),
+ [MOVE_SEISMIC_TOSS] = _("GEOWURF"),
+ [MOVE_STRENGTH] = _("STÄRKE"),
+ [MOVE_ABSORB] = _("ABSORBER"),
+ [MOVE_MEGA_DRAIN] = _("MEGASAUGER"),
+ [MOVE_LEECH_SEED] = _("EGELSAMEN"),
+ [MOVE_GROWTH] = _("WACHSTUM"),
+ [MOVE_RAZOR_LEAF] = _("RASIERBLATT"),
+ [MOVE_SOLAR_BEAM] = _("SOLARSTRAHL"),
+ [MOVE_POISON_POWDER] = _("GIFTPUDER"),
+ [MOVE_STUN_SPORE] = _("STACHELSPORE"),
+ [MOVE_SLEEP_POWDER] = _("SCHLAFPUDER"),
+ [MOVE_PETAL_DANCE] = _("BLÄTTERTANZ"),
+ [MOVE_STRING_SHOT] = _("FADENSCHUSS"),
+ [MOVE_DRAGON_RAGE] = _("DRACHENWUT"),
+ [MOVE_FIRE_SPIN] = _("FEUERWIRBEL"),
+ [MOVE_THUNDER_SHOCK] = _("DONNERSCHOCK"),
+ [MOVE_THUNDERBOLT] = _("DONNERBLITZ"),
+ [MOVE_THUNDER_WAVE] = _("DONNERWELLE"),
+ [MOVE_THUNDER] = _("DONNER"),
+ [MOVE_ROCK_THROW] = _("STEINWURF"),
+ [MOVE_EARTHQUAKE] = _("ERDBEBEN"),
+ [MOVE_FISSURE] = _("GEOFISSUR"),
+ [MOVE_DIG] = _("SCHAUFLER"),
+ [MOVE_TOXIC] = _("TOXIN"),
+ [MOVE_CONFUSION] = _("KONFUSION"),
+ [MOVE_PSYCHIC] = _("PSYCHOKINESE"),
+ [MOVE_HYPNOSIS] = _("HYPNOSE"),
+ [MOVE_MEDITATE] = _("MEDITATION"),
+ [MOVE_AGILITY] = _("AGILITÄT"),
+ [MOVE_QUICK_ATTACK] = _("RUCKZUCKHIEB"),
+ [MOVE_RAGE] = _("RASEREI"),
+ [MOVE_TELEPORT] = _("TELEPORT"),
+ [MOVE_NIGHT_SHADE] = _("NACHTNEBEL"),
+ [MOVE_MIMIC] = _("MIMIKRY"),
+ [MOVE_SCREECH] = _("KREIDESCHREI"),
+ [MOVE_DOUBLE_TEAM] = _("DOPPELTEAM"),
+ [MOVE_RECOVER] = _("GENESUNG"),
+ [MOVE_HARDEN] = _("HÄRTNER"),
+ [MOVE_MINIMIZE] = _("KOMPRIMATOR"),
+ [MOVE_SMOKESCREEN] = _("RAUCHWOLKE"),
+ [MOVE_CONFUSE_RAY] = _("KONFUSTRAHL"),
+ [MOVE_WITHDRAW] = _("PANZERSCHUTZ"),
+ [MOVE_DEFENSE_CURL] = _("EINIGLER"),
+ [MOVE_BARRIER] = _("BARRIERE"),
+ [MOVE_LIGHT_SCREEN] = _("LICHTSCHILD"),
+ [MOVE_HAZE] = _("DUNKELNEBEL"),
+ [MOVE_REFLECT] = _("REFLEKTOR"),
+ [MOVE_FOCUS_ENERGY] = _("ENERGIEFOKUS"),
+ [MOVE_BIDE] = _("GEDULD"),
+ [MOVE_METRONOME] = _("METRONOM"),
+ [MOVE_MIRROR_MOVE] = _("SPIEGELTRICK"),
+ [MOVE_SELF_DESTRUCT] = _("FINALE"),
+ [MOVE_EGG_BOMB] = _("EIERBOMBE"),
+ [MOVE_LICK] = _("SCHLECKER"),
+ [MOVE_SMOG] = _("SMOG"),
+ [MOVE_SLUDGE] = _("SCHLAMMBAD"),
+ [MOVE_BONE_CLUB] = _("KNOCHENKEULE"),
+ [MOVE_FIRE_BLAST] = _("FEUERSTURM"),
+ [MOVE_WATERFALL] = _("KASKADE"),
+ [MOVE_CLAMP] = _("SCHNAPPER"),
+ [MOVE_SWIFT] = _("STERNSCHAUER"),
+ [MOVE_SKULL_BASH] = _("SCHÄDELWUMME"),
+ [MOVE_SPIKE_CANNON] = _("DORNKANONE"),
+ [MOVE_CONSTRICT] = _("UMKLAMMERUNG"),
+ [MOVE_AMNESIA] = _("AMNESIE"),
+ [MOVE_KINESIS] = _("PSYKRAFT"),
+ [MOVE_SOFT_BOILED] = _("WEICHEI"),
+ [MOVE_HI_JUMP_KICK] = _("TURMKICK"),
+ [MOVE_GLARE] = _("GIFTBLICK"),
+ [MOVE_DREAM_EATER] = _("TRAUMFRESSER"),
+ [MOVE_POISON_GAS] = _("GIFTWOLKE"),
+ [MOVE_BARRAGE] = _("STAKKATO"),
+ [MOVE_LEECH_LIFE] = _("BLUTSAUGER"),
+ [MOVE_LOVELY_KISS] = _("TODESKUSS"),
+ [MOVE_SKY_ATTACK] = _("HIMMELSFEGER"),
+ [MOVE_TRANSFORM] = _("WANDLER"),
+ [MOVE_BUBBLE] = _("BLUBBER"),
+ [MOVE_DIZZY_PUNCH] = _("IRRSCHLAG"),
+ [MOVE_SPORE] = _("PILZSPORE"),
+ [MOVE_FLASH] = _("BLITZ"),
+ [MOVE_PSYWAVE] = _("PSYWELLE"),
+ [MOVE_SPLASH] = _("PLATSCHER"),
+ [MOVE_ACID_ARMOR] = _("SÄUREPANZER"),
+ [MOVE_CRABHAMMER] = _("KRABBHAMMER"),
+ [MOVE_EXPLOSION] = _("EXPLOSION"),
+ [MOVE_FURY_SWIPES] = _("KRATZFURIE"),
+ [MOVE_BONEMERANG] = _("KNOCHMERANG"),
+ [MOVE_REST] = _("ERHOLUNG"),
+ [MOVE_ROCK_SLIDE] = _("STEINHAGEL"),
+ [MOVE_HYPER_FANG] = _("HYPERZAHN"),
+ [MOVE_SHARPEN] = _("SCHÄRFER"),
+ [MOVE_CONVERSION] = _("UMWANDLUNG"),
+ [MOVE_TRI_ATTACK] = _("TRIPLETTE"),
+ [MOVE_SUPER_FANG] = _("SUPERZAHN"),
+ [MOVE_SLASH] = _("SCHLITZER"),
+ [MOVE_SUBSTITUTE] = _("DELEGATOR"),
+ [MOVE_STRUGGLE] = _("VERZWEIFLER"),
+ [MOVE_SKETCH] = _("NACHAHMER"),
+ [MOVE_TRIPLE_KICK] = _("DREIFACHKICK"),
+ [MOVE_THIEF] = _("RAUB"),
+ [MOVE_SPIDER_WEB] = _("SPINNENNETZ"),
+ [MOVE_MIND_READER] = _("WILLENSLESER"),
+ [MOVE_NIGHTMARE] = _("NACHTMAHR"),
+ [MOVE_FLAME_WHEEL] = _("FLAMMENRAD"),
+ [MOVE_SNORE] = _("SCHNARCHER"),
+ [MOVE_CURSE] = _("FLUCH"),
+ [MOVE_FLAIL] = _("DRESCHFLEGEL"),
+ [MOVE_CONVERSION_2] = _("UMWANDLUNG2"),
+ [MOVE_AEROBLAST] = _("LUFTSTOSS"),
+ [MOVE_COTTON_SPORE] = _("BAUMWOLLSAAT"),
+ [MOVE_REVERSAL] = _("GEGENSCHLAG"),
+ [MOVE_SPITE] = _("GROLL"),
+ [MOVE_POWDER_SNOW] = _("PULVERSCHNEE"),
+ [MOVE_PROTECT] = _("SCHUTZSCHILD"),
+ [MOVE_MACH_PUNCH] = _("TEMPOHIEB"),
+ [MOVE_SCARY_FACE] = _("GRIMASSE"),
+ [MOVE_FAINT_ATTACK] = _("FINTE"),
+ [MOVE_SWEET_KISS] = _("BITTERKUSS"),
+ [MOVE_BELLY_DRUM] = _("BAUCHTROMMEL"),
+ [MOVE_SLUDGE_BOMB] = _("MATSCHBOMBE"),
+ [MOVE_MUD_SLAP] = _("LEHMSCHELLE"),
+ [MOVE_OCTAZOOKA] = _("OCTAZOOKA"),
+ [MOVE_SPIKES] = _("STACHLER"),
+ [MOVE_ZAP_CANNON] = _("BLITZKANONE"),
+ [MOVE_FORESIGHT] = _("GESICHTE"),
+ [MOVE_DESTINY_BOND] = _("ABGANGSBUND"),
+ [MOVE_PERISH_SONG] = _("ABGESANG"),
+ [MOVE_ICY_WIND] = _("EISSTURM"),
+ [MOVE_DETECT] = _("SCANNER"),
+ [MOVE_BONE_RUSH] = _("KNOCHENHATZ"),
+ [MOVE_LOCK_ON] = _("ZIELSCHUSS"),
+ [MOVE_OUTRAGE] = _("WUTANFALL"),
+ [MOVE_SANDSTORM] = _("SANDSTURM"),
+ [MOVE_GIGA_DRAIN] = _("GIGASAUGER"),
+ [MOVE_ENDURE] = _("AUSDAUER"),
+ [MOVE_CHARM] = _("CHARME"),
+ [MOVE_ROLLOUT] = _("WALZER"),
+ [MOVE_FALSE_SWIPE] = _("TRUGSCHLAG"),
+ [MOVE_SWAGGER] = _("ANGEBEREI"),
+ [MOVE_MILK_DRINK] = _("MILCHGETRÄNK"),
+ [MOVE_SPARK] = _("FUNKENSPRUNG"),
+ [MOVE_FURY_CUTTER] = _("ZORNKLINGE"),
+ [MOVE_STEEL_WING] = _("STAHLFLÜGEL"),
+ [MOVE_MEAN_LOOK] = _("HORRORBLICK"),
+ [MOVE_ATTRACT] = _("ANZIEHUNG"),
+ [MOVE_SLEEP_TALK] = _("SCHLAFREDE"),
+ [MOVE_HEAL_BELL] = _("VITALGLOCKE"),
+ [MOVE_RETURN] = _("RÜCKKEHR"),
+ [MOVE_PRESENT] = _("GESCHENK"),
+ [MOVE_FRUSTRATION] = _("FRUSTRATION"),
+ [MOVE_SAFEGUARD] = _("BODYGUARD"),
+ [MOVE_PAIN_SPLIT] = _("LEIDTEILER"),
+ [MOVE_SACRED_FIRE] = _("LÄUTERFEUER"),
+ [MOVE_MAGNITUDE] = _("INTENSITÄT"),
+ [MOVE_DYNAMIC_PUNCH] = _("WUCHTSCHLAG"),
+ [MOVE_MEGAHORN] = _("VIELENDER"),
+ [MOVE_DRAGON_BREATH] = _("FEUERODEM"),
+ [MOVE_BATON_PASS] = _("STAFFETTE"),
+ [MOVE_ENCORE] = _("ZUGABE"),
+ [MOVE_PURSUIT] = _("VERFOLGUNG"),
+ [MOVE_RAPID_SPIN] = _("TURBODREHER"),
+ [MOVE_SWEET_SCENT] = _("LOCKDUFT"),
+ [MOVE_IRON_TAIL] = _("EISENSCHWEIF"),
+ [MOVE_METAL_CLAW] = _("METALLKLAUE"),
+ [MOVE_VITAL_THROW] = _("ÜBERWURF"),
+ [MOVE_MORNING_SUN] = _("MORGENGRAUEN"),
+ [MOVE_SYNTHESIS] = _("SYNTHESE"),
+ [MOVE_MOONLIGHT] = _("MONDSCHEIN"),
+ [MOVE_HIDDEN_POWER] = _("KRAFTRESERVE"),
+ [MOVE_CROSS_CHOP] = _("KREUZHIEB"),
+ [MOVE_TWISTER] = _("WINDHOSE"),
+ [MOVE_RAIN_DANCE] = _("REGENTANZ"),
+ [MOVE_SUNNY_DAY] = _("SONNENTAG"),
+ [MOVE_CRUNCH] = _("KNIRSCHER"),
+ [MOVE_MIRROR_COAT] = _("SPIEGELCAPE"),
+ [MOVE_PSYCH_UP] = _("PSYCHO-PLUS"),
+ [MOVE_EXTREME_SPEED] = _("TURBOTEMPO"),
+ [MOVE_ANCIENT_POWER] = _("ANTIK-KRAFT"),
+ [MOVE_SHADOW_BALL] = _("SPUKBALL"),
+ [MOVE_FUTURE_SIGHT] = _("SEHER"),
+ [MOVE_ROCK_SMASH] = _("ZERTRÜMMERER"),
+ [MOVE_WHIRLPOOL] = _("WHIRLPOOL"),
+ [MOVE_BEAT_UP] = _("PRÜGLER"),
+ [MOVE_FAKE_OUT] = _("MOGELHIEB"),
+ [MOVE_UPROAR] = _("AUFRUHR"),
+ [MOVE_STOCKPILE] = _("HORTER"),
+ [MOVE_SPIT_UP] = _("ENTFESSLER"),
+ [MOVE_SWALLOW] = _("VERZEHRER"),
+ [MOVE_HEAT_WAVE] = _("HITZEWELLE"),
+ [MOVE_HAIL] = _("HAGELSTURM"),
+ [MOVE_TORMENT] = _("FOLTERKNECHT"),
+ [MOVE_FLATTER] = _("SCHMEICHLER"),
+ [MOVE_WILL_O_WISP] = _("IRRLICHT"),
+ [MOVE_MEMENTO] = _("MEMENTO-MORI"),
+ [MOVE_FACADE] = _("FASSADE"),
+ [MOVE_FOCUS_PUNCH] = _("POWER-PUNCH"),
+ [MOVE_SMELLING_SALT] = _("RIECHSALZ"),
+ [MOVE_FOLLOW_ME] = _("SPOTLIGHT"),
+ [MOVE_NATURE_POWER] = _("NATUR-KRAFT"),
+ [MOVE_CHARGE] = _("LADEVORGANG"),
+ [MOVE_TAUNT] = _("VERHÖHNER"),
+ [MOVE_HELPING_HAND] = _("RECHTE HAND"),
+ [MOVE_TRICK] = _("TRICKBETRUG"),
+ [MOVE_ROLE_PLAY] = _("ROLLENTAUSCH"),
+ [MOVE_WISH] = _("WUNSCHTRAUM"),
+ [MOVE_ASSIST] = _("ZUSCHUSS"),
+ [MOVE_INGRAIN] = _("VERWURZLER"),
+ [MOVE_SUPERPOWER] = _("KRAFTKOLOSS"),
+ [MOVE_MAGIC_COAT] = _("MAGIEMANTEL"),
+ [MOVE_RECYCLE] = _("AUFBEREITUNG"),
+ [MOVE_REVENGE] = _("VERGELTUNG"),
+ [MOVE_BRICK_BREAK] = _("DURCHBRUCH"),
+ [MOVE_YAWN] = _("GÄHNER"),
+ [MOVE_KNOCK_OFF] = _("ABSCHLAG"),
+ [MOVE_ENDEAVOR] = _("NOTSITUATION"),
+ [MOVE_ERUPTION] = _("ERUPTION"),
+ [MOVE_SKILL_SWAP] = _("WERTEWECHSEL"),
+ [MOVE_IMPRISON] = _("BEGRENZER"),
+ [MOVE_REFRESH] = _("HEILUNG"),
+ [MOVE_GRUDGE] = _("NACHSPIEL"),
+ [MOVE_SNATCH] = _("ÜBERNAHME"),
+ [MOVE_SECRET_POWER] = _("GEHEIMPOWER"),
+ [MOVE_DIVE] = _("TAUCHER"),
+ [MOVE_ARM_THRUST] = _("ARMSTOSS"),
+ [MOVE_CAMOUFLAGE] = _("TARNUNG"),
+ [MOVE_TAIL_GLOW] = _("SCHWEIFGLANZ"),
+ [MOVE_LUSTER_PURGE] = _("SCHEINWERFER"),
+ [MOVE_MIST_BALL] = _("NEBELBALL"),
+ [MOVE_FEATHER_DANCE] = _("DAUNENREIGEN"),
+ [MOVE_TEETER_DANCE] = _("TAUMELTANZ"),
+ [MOVE_BLAZE_KICK] = _("FEUERFEGER"),
+ [MOVE_MUD_SPORT] = _("LEHMSUHLER"),
+ [MOVE_ICE_BALL] = _("FROSTBEULE"),
+ [MOVE_NEEDLE_ARM] = _("NIETENRANKE"),
+ [MOVE_SLACK_OFF] = _("TAGEDIEB"),
+ [MOVE_HYPER_VOICE] = _("SCHALLWELLE"),
+ [MOVE_POISON_FANG] = _("GIFTZAHN"),
+ [MOVE_CRUSH_CLAW] = _("ZERMALMKLAUE"),
+ [MOVE_BLAST_BURN] = _("LOHEKANONADE"),
+ [MOVE_HYDRO_CANNON] = _("AQUAHAUBITZE"),
+ [MOVE_METEOR_MASH] = _("STERNENHIEB"),
+ [MOVE_ASTONISH] = _("ERSTAUNER"),
+ [MOVE_WEATHER_BALL] = _("METEOROLOGE"),
+ [MOVE_AROMATHERAPY] = _("AROMAKUR"),
+ [MOVE_FAKE_TEARS] = _("TRUGTRÄNE"),
+ [MOVE_AIR_CUTTER] = _("WINDSCHNITT"),
+ [MOVE_OVERHEAT] = _("HITZEKOLLER"),
+ [MOVE_ODOR_SLEUTH] = _("SCHNÜFFLER"),
+ [MOVE_ROCK_TOMB] = _("FELSGRAB"),
+ [MOVE_SILVER_WIND] = _("SILBERHAUCH"),
+ [MOVE_METAL_SOUND] = _("METALLSOUND"),
+ [MOVE_GRASS_WHISTLE] = _("GRASFLÖTE"),
+ [MOVE_TICKLE] = _("SPASSKANONE"),
+ [MOVE_COSMIC_POWER] = _("KOSMIK-KRAFT"),
+ [MOVE_WATER_SPOUT] = _("FONTRÄNEN"),
+ [MOVE_SIGNAL_BEAM] = _("AMPELLEUCHTE"),
+ [MOVE_SHADOW_PUNCH] = _("FINSTERFAUST"),
+ [MOVE_EXTRASENSORY] = _("SONDERSENSOR"),
+ [MOVE_SKY_UPPERCUT] = _("HIMMELHIEB"),
+ [MOVE_SAND_TOMB] = _("SANDGRAB"),
+ [MOVE_SHEER_COLD] = _("EISESKÄLTE"),
+ [MOVE_MUDDY_WATER] = _("LEHMBRÜHE"),
+ [MOVE_BULLET_SEED] = _("KUGELSAAT"),
+ [MOVE_AERIAL_ACE] = _("AERO-ASS"),
+ [MOVE_ICICLE_SPEAR] = _("EISSPEER"),
+ [MOVE_IRON_DEFENSE] = _("EISENABWEHR"),
+ [MOVE_BLOCK] = _("RÜCKENTZUG"),
+ [MOVE_HOWL] = _("JAULER"),
+ [MOVE_DRAGON_CLAW] = _("DRACHENKLAUE"),
+ [MOVE_FRENZY_PLANT] = _("FAUNA-STATUE"),
+ [MOVE_BULK_UP] = _("PROTZER"),
+ [MOVE_BOUNCE] = _("SPRUNGFEDER"),
+ [MOVE_MUD_SHOT] = _("LEHMSCHUSS"),
+ [MOVE_POISON_TAIL] = _("GIFTSCHWEIF"),
+ [MOVE_COVET] = _("BEZIRZER"),
+ [MOVE_VOLT_TACKLE] = _("VOLTTACKLE"),
+ [MOVE_MAGICAL_LEAF] = _("ZAUBERBLATT"),
+ [MOVE_WATER_SPORT] = _("NASSMACHER"),
+ [MOVE_CALM_MIND] = _("GEDANKENGUT"),
+ [MOVE_LEAF_BLADE] = _("LAUBKLINGE"),
+ [MOVE_DRAGON_DANCE] = _("DRACHENTANZ"),
+ [MOVE_ROCK_BLAST] = _("FELSWURF"),
+ [MOVE_SHOCK_WAVE] = _("SCHOCKWELLE"),
+ [MOVE_WATER_PULSE] = _("AQUAWELLE"),
+ [MOVE_DOOM_DESIRE] = _("KISMETWUNSCH"),
+ [MOVE_PSYCHO_BOOST] = _("PSYSCHUB"),
+};
diff --git a/src/data/text/move_names_en.h b/src/data/text/move_names_en.h
new file mode 100644
index 000000000..57b4d0035
--- /dev/null
+++ b/src/data/text/move_names_en.h
@@ -0,0 +1,357 @@
+const u8 gMoveNames[][13] = {
+ [MOVE_NONE] = _("-$$$$$$"),
+ [MOVE_POUND] = _("POUND"),
+ [MOVE_KARATE_CHOP] = _("KARATE CHOP"),
+ [MOVE_DOUBLE_SLAP] = _("DOUBLESLAP"),
+ [MOVE_COMET_PUNCH] = _("COMET PUNCH"),
+ [MOVE_MEGA_PUNCH] = _("MEGA PUNCH"),
+ [MOVE_PAY_DAY] = _("PAY DAY"),
+ [MOVE_FIRE_PUNCH] = _("FIRE PUNCH"),
+ [MOVE_ICE_PUNCH] = _("ICE PUNCH"),
+ [MOVE_THUNDER_PUNCH] = _("THUNDERPUNCH"),
+ [MOVE_SCRATCH] = _("SCRATCH"),
+ [MOVE_VICE_GRIP] = _("VICEGRIP"),
+ [MOVE_GUILLOTINE] = _("GUILLOTINE"),
+ [MOVE_RAZOR_WIND] = _("RAZOR WIND"),
+ [MOVE_SWORDS_DANCE] = _("SWORDS DANCE"),
+ [MOVE_CUT] = _("CUT"),
+ [MOVE_GUST] = _("GUST"),
+ [MOVE_WING_ATTACK] = _("WING ATTACK"),
+ [MOVE_WHIRLWIND] = _("WHIRLWIND"),
+ [MOVE_FLY] = _("FLY"),
+ [MOVE_BIND] = _("BIND"),
+ [MOVE_SLAM] = _("SLAM"),
+ [MOVE_VINE_WHIP] = _("VINE WHIP"),
+ [MOVE_STOMP] = _("STOMP"),
+ [MOVE_DOUBLE_KICK] = _("DOUBLE KICK"),
+ [MOVE_MEGA_KICK] = _("MEGA KICK"),
+ [MOVE_JUMP_KICK] = _("JUMP KICK"),
+ [MOVE_ROLLING_KICK] = _("ROLLING KICK"),
+ [MOVE_SAND_ATTACK] = _("SAND-ATTACK"),
+ [MOVE_HEADBUTT] = _("HEADBUTT"),
+ [MOVE_HORN_ATTACK] = _("HORN ATTACK"),
+ [MOVE_FURY_ATTACK] = _("FURY ATTACK"),
+ [MOVE_HORN_DRILL] = _("HORN DRILL"),
+ [MOVE_TACKLE] = _("TACKLE"),
+ [MOVE_BODY_SLAM] = _("BODY SLAM"),
+ [MOVE_WRAP] = _("WRAP"),
+ [MOVE_TAKE_DOWN] = _("TAKE DOWN"),
+ [MOVE_THRASH] = _("THRASH"),
+ [MOVE_DOUBLE_EDGE] = _("DOUBLE-EDGE"),
+ [MOVE_TAIL_WHIP] = _("TAIL WHIP"),
+ [MOVE_POISON_STING] = _("POISON STING"),
+ [MOVE_TWINEEDLE] = _("TWINEEDLE"),
+ [MOVE_PIN_MISSILE] = _("PIN MISSILE"),
+ [MOVE_LEER] = _("LEER"),
+ [MOVE_BITE] = _("BITE"),
+ [MOVE_GROWL] = _("GROWL"),
+ [MOVE_ROAR] = _("ROAR"),
+ [MOVE_SING] = _("SING"),
+ [MOVE_SUPERSONIC] = _("SUPERSONIC"),
+ [MOVE_SONIC_BOOM] = _("SONICBOOM"),
+ [MOVE_DISABLE] = _("DISABLE"),
+ [MOVE_ACID] = _("ACID"),
+ [MOVE_EMBER] = _("EMBER"),
+ [MOVE_FLAMETHROWER] = _("FLAMETHROWER"),
+ [MOVE_MIST] = _("MIST"),
+ [MOVE_WATER_GUN] = _("WATER GUN"),
+ [MOVE_HYDRO_PUMP] = _("HYDRO PUMP"),
+ [MOVE_SURF] = _("SURF"),
+ [MOVE_ICE_BEAM] = _("ICE BEAM"),
+ [MOVE_BLIZZARD] = _("BLIZZARD"),
+ [MOVE_PSYBEAM] = _("PSYBEAM"),
+ [MOVE_BUBBLE_BEAM] = _("BUBBLEBEAM"),
+ [MOVE_AURORA_BEAM] = _("AURORA BEAM"),
+ [MOVE_HYPER_BEAM] = _("HYPER BEAM"),
+ [MOVE_PECK] = _("PECK"),
+ [MOVE_DRILL_PECK] = _("DRILL PECK"),
+ [MOVE_SUBMISSION] = _("SUBMISSION"),
+ [MOVE_LOW_KICK] = _("LOW KICK"),
+ [MOVE_COUNTER] = _("COUNTER"),
+ [MOVE_SEISMIC_TOSS] = _("SEISMIC TOSS"),
+ [MOVE_STRENGTH] = _("STRENGTH"),
+ [MOVE_ABSORB] = _("ABSORB"),
+ [MOVE_MEGA_DRAIN] = _("MEGA DRAIN"),
+ [MOVE_LEECH_SEED] = _("LEECH SEED"),
+ [MOVE_GROWTH] = _("GROWTH"),
+ [MOVE_RAZOR_LEAF] = _("RAZOR LEAF"),
+ [MOVE_SOLAR_BEAM] = _("SOLARBEAM"),
+ [MOVE_POISON_POWDER] = _("POISONPOWDER"),
+ [MOVE_STUN_SPORE] = _("STUN SPORE"),
+ [MOVE_SLEEP_POWDER] = _("SLEEP POWDER"),
+ [MOVE_PETAL_DANCE] = _("PETAL DANCE"),
+ [MOVE_STRING_SHOT] = _("STRING SHOT"),
+ [MOVE_DRAGON_RAGE] = _("DRAGON RAGE"),
+ [MOVE_FIRE_SPIN] = _("FIRE SPIN"),
+ [MOVE_THUNDER_SHOCK] = _("THUNDERSHOCK"),
+ [MOVE_THUNDERBOLT] = _("THUNDERBOLT"),
+ [MOVE_THUNDER_WAVE] = _("THUNDER WAVE"),
+ [MOVE_THUNDER] = _("THUNDER"),
+ [MOVE_ROCK_THROW] = _("ROCK THROW"),
+ [MOVE_EARTHQUAKE] = _("EARTHQUAKE"),
+ [MOVE_FISSURE] = _("FISSURE"),
+ [MOVE_DIG] = _("DIG"),
+ [MOVE_TOXIC] = _("TOXIC"),
+ [MOVE_CONFUSION] = _("CONFUSION"),
+ [MOVE_PSYCHIC] = _("PSYCHIC"),
+ [MOVE_HYPNOSIS] = _("HYPNOSIS"),
+ [MOVE_MEDITATE] = _("MEDITATE"),
+ [MOVE_AGILITY] = _("AGILITY"),
+ [MOVE_QUICK_ATTACK] = _("QUICK ATTACK"),
+ [MOVE_RAGE] = _("RAGE"),
+ [MOVE_TELEPORT] = _("TELEPORT"),
+ [MOVE_NIGHT_SHADE] = _("NIGHT SHADE"),
+ [MOVE_MIMIC] = _("MIMIC"),
+ [MOVE_SCREECH] = _("SCREECH"),
+ [MOVE_DOUBLE_TEAM] = _("DOUBLE TEAM"),
+ [MOVE_RECOVER] = _("RECOVER"),
+ [MOVE_HARDEN] = _("HARDEN"),
+ [MOVE_MINIMIZE] = _("MINIMIZE"),
+ [MOVE_SMOKESCREEN] = _("SMOKESCREEN"),
+ [MOVE_CONFUSE_RAY] = _("CONFUSE RAY"),
+ [MOVE_WITHDRAW] = _("WITHDRAW"),
+ [MOVE_DEFENSE_CURL] = _("DEFENSE CURL"),
+ [MOVE_BARRIER] = _("BARRIER"),
+ [MOVE_LIGHT_SCREEN] = _("LIGHT SCREEN"),
+ [MOVE_HAZE] = _("HAZE"),
+ [MOVE_REFLECT] = _("REFLECT"),
+ [MOVE_FOCUS_ENERGY] = _("FOCUS ENERGY"),
+ [MOVE_BIDE] = _("BIDE"),
+ [MOVE_METRONOME] = _("METRONOME"),
+ [MOVE_MIRROR_MOVE] = _("MIRROR MOVE"),
+ [MOVE_SELF_DESTRUCT] = _("SELFDESTRUCT"),
+ [MOVE_EGG_BOMB] = _("EGG BOMB"),
+ [MOVE_LICK] = _("LICK"),
+ [MOVE_SMOG] = _("SMOG"),
+ [MOVE_SLUDGE] = _("SLUDGE"),
+ [MOVE_BONE_CLUB] = _("BONE CLUB"),
+ [MOVE_FIRE_BLAST] = _("FIRE BLAST"),
+ [MOVE_WATERFALL] = _("WATERFALL"),
+ [MOVE_CLAMP] = _("CLAMP"),
+ [MOVE_SWIFT] = _("SWIFT"),
+ [MOVE_SKULL_BASH] = _("SKULL BASH"),
+ [MOVE_SPIKE_CANNON] = _("SPIKE CANNON"),
+ [MOVE_CONSTRICT] = _("CONSTRICT"),
+ [MOVE_AMNESIA] = _("AMNESIA"),
+ [MOVE_KINESIS] = _("KINESIS"),
+ [MOVE_SOFT_BOILED] = _("SOFTBOILED"),
+ [MOVE_HI_JUMP_KICK] = _("HI JUMP KICK"),
+ [MOVE_GLARE] = _("GLARE"),
+ [MOVE_DREAM_EATER] = _("DREAM EATER"),
+ [MOVE_POISON_GAS] = _("POISON GAS"),
+ [MOVE_BARRAGE] = _("BARRAGE"),
+ [MOVE_LEECH_LIFE] = _("LEECH LIFE"),
+ [MOVE_LOVELY_KISS] = _("LOVELY KISS"),
+ [MOVE_SKY_ATTACK] = _("SKY ATTACK"),
+ [MOVE_TRANSFORM] = _("TRANSFORM"),
+ [MOVE_BUBBLE] = _("BUBBLE"),
+ [MOVE_DIZZY_PUNCH] = _("DIZZY PUNCH"),
+ [MOVE_SPORE] = _("SPORE"),
+ [MOVE_FLASH] = _("FLASH"),
+ [MOVE_PSYWAVE] = _("PSYWAVE"),
+ [MOVE_SPLASH] = _("SPLASH"),
+ [MOVE_ACID_ARMOR] = _("ACID ARMOR"),
+ [MOVE_CRABHAMMER] = _("CRABHAMMER"),
+ [MOVE_EXPLOSION] = _("EXPLOSION"),
+ [MOVE_FURY_SWIPES] = _("FURY SWIPES"),
+ [MOVE_BONEMERANG] = _("BONEMERANG"),
+ [MOVE_REST] = _("REST"),
+ [MOVE_ROCK_SLIDE] = _("ROCK SLIDE"),
+ [MOVE_HYPER_FANG] = _("HYPER FANG"),
+ [MOVE_SHARPEN] = _("SHARPEN"),
+ [MOVE_CONVERSION] = _("CONVERSION"),
+ [MOVE_TRI_ATTACK] = _("TRI ATTACK"),
+ [MOVE_SUPER_FANG] = _("SUPER FANG"),
+ [MOVE_SLASH] = _("SLASH"),
+ [MOVE_SUBSTITUTE] = _("SUBSTITUTE"),
+ [MOVE_STRUGGLE] = _("STRUGGLE"),
+ [MOVE_SKETCH] = _("SKETCH"),
+ [MOVE_TRIPLE_KICK] = _("TRIPLE KICK"),
+ [MOVE_THIEF] = _("THIEF"),
+ [MOVE_SPIDER_WEB] = _("SPIDER WEB"),
+ [MOVE_MIND_READER] = _("MIND READER"),
+ [MOVE_NIGHTMARE] = _("NIGHTMARE"),
+ [MOVE_FLAME_WHEEL] = _("FLAME WHEEL"),
+ [MOVE_SNORE] = _("SNORE"),
+ [MOVE_CURSE] = _("CURSE"),
+ [MOVE_FLAIL] = _("FLAIL"),
+ [MOVE_CONVERSION_2] = _("CONVERSION 2"),
+ [MOVE_AEROBLAST] = _("AEROBLAST"),
+ [MOVE_COTTON_SPORE] = _("COTTON SPORE"),
+ [MOVE_REVERSAL] = _("REVERSAL"),
+ [MOVE_SPITE] = _("SPITE"),
+ [MOVE_POWDER_SNOW] = _("POWDER SNOW"),
+ [MOVE_PROTECT] = _("PROTECT"),
+ [MOVE_MACH_PUNCH] = _("MACH PUNCH"),
+ [MOVE_SCARY_FACE] = _("SCARY FACE"),
+ [MOVE_FAINT_ATTACK] = _("FAINT ATTACK"),
+ [MOVE_SWEET_KISS] = _("SWEET KISS"),
+ [MOVE_BELLY_DRUM] = _("BELLY DRUM"),
+ [MOVE_SLUDGE_BOMB] = _("SLUDGE BOMB"),
+ [MOVE_MUD_SLAP] = _("MUD-SLAP"),
+ [MOVE_OCTAZOOKA] = _("OCTAZOOKA"),
+ [MOVE_SPIKES] = _("SPIKES"),
+ [MOVE_ZAP_CANNON] = _("ZAP CANNON"),
+ [MOVE_FORESIGHT] = _("FORESIGHT"),
+ [MOVE_DESTINY_BOND] = _("DESTINY BOND"),
+ [MOVE_PERISH_SONG] = _("PERISH SONG"),
+ [MOVE_ICY_WIND] = _("ICY WIND"),
+ [MOVE_DETECT] = _("DETECT"),
+ [MOVE_BONE_RUSH] = _("BONE RUSH"),
+ [MOVE_LOCK_ON] = _("LOCK-ON"),
+ [MOVE_OUTRAGE] = _("OUTRAGE"),
+ [MOVE_SANDSTORM] = _("SANDSTORM"),
+ [MOVE_GIGA_DRAIN] = _("GIGA DRAIN"),
+ [MOVE_ENDURE] = _("ENDURE"),
+ [MOVE_CHARM] = _("CHARM"),
+ [MOVE_ROLLOUT] = _("ROLLOUT"),
+ [MOVE_FALSE_SWIPE] = _("FALSE SWIPE"),
+ [MOVE_SWAGGER] = _("SWAGGER"),
+ [MOVE_MILK_DRINK] = _("MILK DRINK"),
+ [MOVE_SPARK] = _("SPARK"),
+ [MOVE_FURY_CUTTER] = _("FURY CUTTER"),
+ [MOVE_STEEL_WING] = _("STEEL WING"),
+ [MOVE_MEAN_LOOK] = _("MEAN LOOK"),
+ [MOVE_ATTRACT] = _("ATTRACT"),
+ [MOVE_SLEEP_TALK] = _("SLEEP TALK"),
+ [MOVE_HEAL_BELL] = _("HEAL BELL"),
+ [MOVE_RETURN] = _("RETURN"),
+ [MOVE_PRESENT] = _("PRESENT"),
+ [MOVE_FRUSTRATION] = _("FRUSTRATION"),
+ [MOVE_SAFEGUARD] = _("SAFEGUARD"),
+ [MOVE_PAIN_SPLIT] = _("PAIN SPLIT"),
+ [MOVE_SACRED_FIRE] = _("SACRED FIRE"),
+ [MOVE_MAGNITUDE] = _("MAGNITUDE"),
+ [MOVE_DYNAMIC_PUNCH] = _("DYNAMICPUNCH"),
+ [MOVE_MEGAHORN] = _("MEGAHORN"),
+ [MOVE_DRAGON_BREATH] = _("DRAGONBREATH"),
+ [MOVE_BATON_PASS] = _("BATON PASS"),
+ [MOVE_ENCORE] = _("ENCORE"),
+ [MOVE_PURSUIT] = _("PURSUIT"),
+ [MOVE_RAPID_SPIN] = _("RAPID SPIN"),
+ [MOVE_SWEET_SCENT] = _("SWEET SCENT"),
+ [MOVE_IRON_TAIL] = _("IRON TAIL"),
+ [MOVE_METAL_CLAW] = _("METAL CLAW"),
+ [MOVE_VITAL_THROW] = _("VITAL THROW"),
+ [MOVE_MORNING_SUN] = _("MORNING SUN"),
+ [MOVE_SYNTHESIS] = _("SYNTHESIS"),
+ [MOVE_MOONLIGHT] = _("MOONLIGHT"),
+ [MOVE_HIDDEN_POWER] = _("HIDDEN POWER"),
+ [MOVE_CROSS_CHOP] = _("CROSS CHOP"),
+ [MOVE_TWISTER] = _("TWISTER"),
+ [MOVE_RAIN_DANCE] = _("RAIN DANCE"),
+ [MOVE_SUNNY_DAY] = _("SUNNY DAY"),
+ [MOVE_CRUNCH] = _("CRUNCH"),
+ [MOVE_MIRROR_COAT] = _("MIRROR COAT"),
+ [MOVE_PSYCH_UP] = _("PSYCH UP"),
+ [MOVE_EXTREME_SPEED] = _("EXTREMESPEED"),
+ [MOVE_ANCIENT_POWER] = _("ANCIENTPOWER"),
+ [MOVE_SHADOW_BALL] = _("SHADOW BALL"),
+ [MOVE_FUTURE_SIGHT] = _("FUTURE SIGHT"),
+ [MOVE_ROCK_SMASH] = _("ROCK SMASH"),
+ [MOVE_WHIRLPOOL] = _("WHIRLPOOL"),
+ [MOVE_BEAT_UP] = _("BEAT UP"),
+ [MOVE_FAKE_OUT] = _("FAKE OUT"),
+ [MOVE_UPROAR] = _("UPROAR"),
+ [MOVE_STOCKPILE] = _("STOCKPILE"),
+ [MOVE_SPIT_UP] = _("SPIT UP"),
+ [MOVE_SWALLOW] = _("SWALLOW"),
+ [MOVE_HEAT_WAVE] = _("HEAT WAVE"),
+ [MOVE_HAIL] = _("HAIL"),
+ [MOVE_TORMENT] = _("TORMENT"),
+ [MOVE_FLATTER] = _("FLATTER"),
+ [MOVE_WILL_O_WISP] = _("WILL-O-WISP"),
+ [MOVE_MEMENTO] = _("MEMENTO"),
+ [MOVE_FACADE] = _("FACADE"),
+ [MOVE_FOCUS_PUNCH] = _("FOCUS PUNCH"),
+ [MOVE_SMELLING_SALT] = _("SMELLINGSALT"),
+ [MOVE_FOLLOW_ME] = _("FOLLOW ME"),
+ [MOVE_NATURE_POWER] = _("NATURE POWER"),
+ [MOVE_CHARGE] = _("CHARGE"),
+ [MOVE_TAUNT] = _("TAUNT"),
+ [MOVE_HELPING_HAND] = _("HELPING HAND"),
+ [MOVE_TRICK] = _("TRICK"),
+ [MOVE_ROLE_PLAY] = _("ROLE PLAY"),
+ [MOVE_WISH] = _("WISH"),
+ [MOVE_ASSIST] = _("ASSIST"),
+ [MOVE_INGRAIN] = _("INGRAIN"),
+ [MOVE_SUPERPOWER] = _("SUPERPOWER"),
+ [MOVE_MAGIC_COAT] = _("MAGIC COAT"),
+ [MOVE_RECYCLE] = _("RECYCLE"),
+ [MOVE_REVENGE] = _("REVENGE"),
+ [MOVE_BRICK_BREAK] = _("BRICK BREAK"),
+ [MOVE_YAWN] = _("YAWN"),
+ [MOVE_KNOCK_OFF] = _("KNOCK OFF"),
+ [MOVE_ENDEAVOR] = _("ENDEAVOR"),
+ [MOVE_ERUPTION] = _("ERUPTION"),
+ [MOVE_SKILL_SWAP] = _("SKILL SWAP"),
+ [MOVE_IMPRISON] = _("IMPRISON"),
+ [MOVE_REFRESH] = _("REFRESH"),
+ [MOVE_GRUDGE] = _("GRUDGE"),
+ [MOVE_SNATCH] = _("SNATCH"),
+ [MOVE_SECRET_POWER] = _("SECRET POWER"),
+ [MOVE_DIVE] = _("DIVE"),
+ [MOVE_ARM_THRUST] = _("ARM THRUST"),
+ [MOVE_CAMOUFLAGE] = _("CAMOUFLAGE"),
+ [MOVE_TAIL_GLOW] = _("TAIL GLOW"),
+ [MOVE_LUSTER_PURGE] = _("LUSTER PURGE"),
+ [MOVE_MIST_BALL] = _("MIST BALL"),
+ [MOVE_FEATHER_DANCE] = _("FEATHERDANCE"),
+ [MOVE_TEETER_DANCE] = _("TEETER DANCE"),
+ [MOVE_BLAZE_KICK] = _("BLAZE KICK"),
+ [MOVE_MUD_SPORT] = _("MUD SPORT"),
+ [MOVE_ICE_BALL] = _("ICE BALL"),
+ [MOVE_NEEDLE_ARM] = _("NEEDLE ARM"),
+ [MOVE_SLACK_OFF] = _("SLACK OFF"),
+ [MOVE_HYPER_VOICE] = _("HYPER VOICE"),
+ [MOVE_POISON_FANG] = _("POISON FANG"),
+ [MOVE_CRUSH_CLAW] = _("CRUSH CLAW"),
+ [MOVE_BLAST_BURN] = _("BLAST BURN"),
+ [MOVE_HYDRO_CANNON] = _("HYDRO CANNON"),
+ [MOVE_METEOR_MASH] = _("METEOR MASH"),
+ [MOVE_ASTONISH] = _("ASTONISH"),
+ [MOVE_WEATHER_BALL] = _("WEATHER BALL"),
+ [MOVE_AROMATHERAPY] = _("AROMATHERAPY"),
+ [MOVE_FAKE_TEARS] = _("FAKE TEARS"),
+ [MOVE_AIR_CUTTER] = _("AIR CUTTER"),
+ [MOVE_OVERHEAT] = _("OVERHEAT"),
+ [MOVE_ODOR_SLEUTH] = _("ODOR SLEUTH"),
+ [MOVE_ROCK_TOMB] = _("ROCK TOMB"),
+ [MOVE_SILVER_WIND] = _("SILVER WIND"),
+ [MOVE_METAL_SOUND] = _("METAL SOUND"),
+ [MOVE_GRASS_WHISTLE] = _("GRASSWHISTLE"),
+ [MOVE_TICKLE] = _("TICKLE"),
+ [MOVE_COSMIC_POWER] = _("COSMIC POWER"),
+ [MOVE_WATER_SPOUT] = _("WATER SPOUT"),
+ [MOVE_SIGNAL_BEAM] = _("SIGNAL BEAM"),
+ [MOVE_SHADOW_PUNCH] = _("SHADOW PUNCH"),
+ [MOVE_EXTRASENSORY] = _("EXTRASENSORY"),
+ [MOVE_SKY_UPPERCUT] = _("SKY UPPERCUT"),
+ [MOVE_SAND_TOMB] = _("SAND TOMB"),
+ [MOVE_SHEER_COLD] = _("SHEER COLD"),
+ [MOVE_MUDDY_WATER] = _("MUDDY WATER"),
+ [MOVE_BULLET_SEED] = _("BULLET SEED"),
+ [MOVE_AERIAL_ACE] = _("AERIAL ACE"),
+ [MOVE_ICICLE_SPEAR] = _("ICICLE SPEAR"),
+ [MOVE_IRON_DEFENSE] = _("IRON DEFENSE"),
+ [MOVE_BLOCK] = _("BLOCK"),
+ [MOVE_HOWL] = _("HOWL"),
+ [MOVE_DRAGON_CLAW] = _("DRAGON CLAW"),
+ [MOVE_FRENZY_PLANT] = _("FRENZY PLANT"),
+ [MOVE_BULK_UP] = _("BULK UP"),
+ [MOVE_BOUNCE] = _("BOUNCE"),
+ [MOVE_MUD_SHOT] = _("MUD SHOT"),
+ [MOVE_POISON_TAIL] = _("POISON TAIL"),
+ [MOVE_COVET] = _("COVET"),
+ [MOVE_VOLT_TACKLE] = _("VOLT TACKLE"),
+ [MOVE_MAGICAL_LEAF] = _("MAGICAL LEAF"),
+ [MOVE_WATER_SPORT] = _("WATER SPORT"),
+ [MOVE_CALM_MIND] = _("CALM MIND"),
+ [MOVE_LEAF_BLADE] = _("LEAF BLADE"),
+ [MOVE_DRAGON_DANCE] = _("DRAGON DANCE"),
+ [MOVE_ROCK_BLAST] = _("ROCK BLAST"),
+ [MOVE_SHOCK_WAVE] = _("SHOCK WAVE"),
+ [MOVE_WATER_PULSE] = _("WATER PULSE"),
+ [MOVE_DOOM_DESIRE] = _("DOOM DESIRE"),
+ [MOVE_PSYCHO_BOOST] = _("PSYCHO BOOST"),
+};
diff --git a/src/data/text/species_names_de.h b/src/data/text/species_names_de.h
new file mode 100644
index 000000000..cad800c3e
--- /dev/null
+++ b/src/data/text/species_names_de.h
@@ -0,0 +1,414 @@
+const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1] = {
+ [SPECIES_NONE] = _("??????????"),
+ [SPECIES_BULBASAUR] = _("BISASAM"),
+ [SPECIES_IVYSAUR] = _("BISAKNOSP"),
+ [SPECIES_VENUSAUR] = _("BISAFLOR"),
+ [SPECIES_CHARMANDER] = _("GLUMANDA"),
+ [SPECIES_CHARMELEON] = _("GLUTEXO"),
+ [SPECIES_CHARIZARD] = _("GLURAK"),
+ [SPECIES_SQUIRTLE] = _("SCHIGGY"),
+ [SPECIES_WARTORTLE] = _("SCHILLOK"),
+ [SPECIES_BLASTOISE] = _("TURTOK"),
+ [SPECIES_CATERPIE] = _("RAUPY"),
+ [SPECIES_METAPOD] = _("SAFCON"),
+ [SPECIES_BUTTERFREE] = _("SMETTBO"),
+ [SPECIES_WEEDLE] = _("HORNLIU"),
+ [SPECIES_KAKUNA] = _("KOKUNA"),
+ [SPECIES_BEEDRILL] = _("BIBOR"),
+ [SPECIES_PIDGEY] = _("TAUBSI"),
+ [SPECIES_PIDGEOTTO] = _("TAUBOGA"),
+ [SPECIES_PIDGEOT] = _("TAUBOSS"),
+ [SPECIES_RATTATA] = _("RATTFRATZ"),
+ [SPECIES_RATICATE] = _("RATTIKARL"),
+ [SPECIES_SPEAROW] = _("HABITAK"),
+ [SPECIES_FEAROW] = _("IBITAK"),
+ [SPECIES_EKANS] = _("RETTAN"),
+ [SPECIES_ARBOK] = _("ARBOK"),
+ [SPECIES_PIKACHU] = _("PIKACHU"),
+ [SPECIES_RAICHU] = _("RAICHU"),
+ [SPECIES_SANDSHREW] = _("SANDAN"),
+ [SPECIES_SANDSLASH] = _("SANDAMER"),
+ [SPECIES_NIDORAN_F] = _("NIDORAN♀"),
+ [SPECIES_NIDORINA] = _("NIDORINA"),
+ [SPECIES_NIDOQUEEN] = _("NIDOQUEEN"),
+ [SPECIES_NIDORAN_M] = _("NIDORAN♂"),
+ [SPECIES_NIDORINO] = _("NIDORINO"),
+ [SPECIES_NIDOKING] = _("NIDOKING"),
+ [SPECIES_CLEFAIRY] = _("PIEPI"),
+ [SPECIES_CLEFABLE] = _("PIXI"),
+ [SPECIES_VULPIX] = _("VULPIX"),
+ [SPECIES_NINETALES] = _("VULNONA"),
+ [SPECIES_JIGGLYPUFF] = _("PUMMELUFF"),
+ [SPECIES_WIGGLYTUFF] = _("KNUDDELUFF"),
+ [SPECIES_ZUBAT] = _("ZUBAT"),
+ [SPECIES_GOLBAT] = _("GOLBAT"),
+ [SPECIES_ODDISH] = _("MYRAPLA"),
+ [SPECIES_GLOOM] = _("DUFLOR"),
+ [SPECIES_VILEPLUME] = _("GIFLOR"),
+ [SPECIES_PARAS] = _("PARAS"),
+ [SPECIES_PARASECT] = _("PARASEK"),
+ [SPECIES_VENONAT] = _("BLUZUK"),
+ [SPECIES_VENOMOTH] = _("OMOT"),
+ [SPECIES_DIGLETT] = _("DIGDA"),
+ [SPECIES_DUGTRIO] = _("DIGDRI"),
+ [SPECIES_MEOWTH] = _("MAUZI"),
+ [SPECIES_PERSIAN] = _("SNOBILIKAT"),
+ [SPECIES_PSYDUCK] = _("ENTON"),
+ [SPECIES_GOLDUCK] = _("ENTORON"),
+ [SPECIES_MANKEY] = _("MENKI"),
+ [SPECIES_PRIMEAPE] = _("RASAFF"),
+ [SPECIES_GROWLITHE] = _("FUKANO"),
+ [SPECIES_ARCANINE] = _("ARKANI"),
+ [SPECIES_POLIWAG] = _("QUAPSEL"),
+ [SPECIES_POLIWHIRL] = _("QUAPUTZI"),
+ [SPECIES_POLIWRATH] = _("QUAPPO"),
+ [SPECIES_ABRA] = _("ABRA"),
+ [SPECIES_KADABRA] = _("KADABRA"),
+ [SPECIES_ALAKAZAM] = _("SIMSALA"),
+ [SPECIES_MACHOP] = _("MACHOLLO"),
+ [SPECIES_MACHOKE] = _("MASCHOCK"),
+ [SPECIES_MACHAMP] = _("MACHOMEI"),
+ [SPECIES_BELLSPROUT] = _("KNOFENSA"),
+ [SPECIES_WEEPINBELL] = _("ULTRIGARIA"),
+ [SPECIES_VICTREEBEL] = _("SARZENIA"),
+ [SPECIES_TENTACOOL] = _("TENTACHA"),
+ [SPECIES_TENTACRUEL] = _("TENTOXA"),
+ [SPECIES_GEODUDE] = _("KLEINSTEIN"),
+ [SPECIES_GRAVELER] = _("GEOROK"),
+ [SPECIES_GOLEM] = _("GEOWAZ"),
+ [SPECIES_PONYTA] = _("PONITA"),
+ [SPECIES_RAPIDASH] = _("GALLOPA"),
+ [SPECIES_SLOWPOKE] = _("FLEGMON"),
+ [SPECIES_SLOWBRO] = _("LAHMUS"),
+ [SPECIES_MAGNEMITE] = _("MAGNETILO"),
+ [SPECIES_MAGNETON] = _("MAGNETON"),
+ [SPECIES_FARFETCHD] = _("PORENTA"),
+ [SPECIES_DODUO] = _("DODU"),
+ [SPECIES_DODRIO] = _("DODRI"),
+ [SPECIES_SEEL] = _("JUROB"),
+ [SPECIES_DEWGONG] = _("JUGONG"),
+ [SPECIES_GRIMER] = _("SLEIMA"),
+ [SPECIES_MUK] = _("SLEIMOK"),
+ [SPECIES_SHELLDER] = _("MUSCHAS"),
+ [SPECIES_CLOYSTER] = _("AUSTOS"),
+ [SPECIES_GASTLY] = _("NEBULAK"),
+ [SPECIES_HAUNTER] = _("ALPOLLO"),
+ [SPECIES_GENGAR] = _("GENGAR"),
+ [SPECIES_ONIX] = _("ONIX"),
+ [SPECIES_DROWZEE] = _("TRAUMATO"),
+ [SPECIES_HYPNO] = _("HYPNO"),
+ [SPECIES_KRABBY] = _("KRABBY"),
+ [SPECIES_KINGLER] = _("KINGLER"),
+ [SPECIES_VOLTORB] = _("VOLTOBAL"),
+ [SPECIES_ELECTRODE] = _("LEKTROBAL"),
+ [SPECIES_EXEGGCUTE] = _("OWEI"),
+ [SPECIES_EXEGGUTOR] = _("KOKOWEI"),
+ [SPECIES_CUBONE] = _("TRAGOSSO"),
+ [SPECIES_MAROWAK] = _("KNOGGA"),
+ [SPECIES_HITMONLEE] = _("KICKLEE"),
+ [SPECIES_HITMONCHAN] = _("NOCKCHAN"),
+ [SPECIES_LICKITUNG] = _("SCHLURP"),
+ [SPECIES_KOFFING] = _("SMOGON"),
+ [SPECIES_WEEZING] = _("SMOGMOG"),
+ [SPECIES_RHYHORN] = _("RIHORN"),
+ [SPECIES_RHYDON] = _("RIZEROS"),
+ [SPECIES_CHANSEY] = _("CHANEIRA"),
+ [SPECIES_TANGELA] = _("TANGELA"),
+ [SPECIES_KANGASKHAN] = _("KANGAMA"),
+ [SPECIES_HORSEA] = _("SEEPER"),
+ [SPECIES_SEADRA] = _("SEEMON"),
+ [SPECIES_GOLDEEN] = _("GOLDINI"),
+ [SPECIES_SEAKING] = _("GOLKING"),
+ [SPECIES_STARYU] = _("STERNDU"),
+ [SPECIES_STARMIE] = _("STARMIE"),
+ [SPECIES_MR_MIME] = _("PANTIMOS"),
+ [SPECIES_SCYTHER] = _("SICHLOR"),
+ [SPECIES_JYNX] = _("ROSSANA"),
+ [SPECIES_ELECTABUZZ] = _("ELEKTEK"),
+ [SPECIES_MAGMAR] = _("MAGMAR"),
+ [SPECIES_PINSIR] = _("PINSIR"),
+ [SPECIES_TAUROS] = _("TAUROS"),
+ [SPECIES_MAGIKARP] = _("KARPADOR"),
+ [SPECIES_GYARADOS] = _("GARADOS"),
+ [SPECIES_LAPRAS] = _("LAPRAS"),
+ [SPECIES_DITTO] = _("DITTO"),
+ [SPECIES_EEVEE] = _("EVOLI"),
+ [SPECIES_VAPOREON] = _("AQUANA"),
+ [SPECIES_JOLTEON] = _("BLITZA"),
+ [SPECIES_FLAREON] = _("FLAMARA"),
+ [SPECIES_PORYGON] = _("PORYGON"),
+ [SPECIES_OMANYTE] = _("AMONITAS"),
+ [SPECIES_OMASTAR] = _("AMOROSO"),
+ [SPECIES_KABUTO] = _("KABUTO"),
+ [SPECIES_KABUTOPS] = _("KABUTOPS"),
+ [SPECIES_AERODACTYL] = _("AERODACTYL"),
+ [SPECIES_SNORLAX] = _("RELAXO"),
+ [SPECIES_ARTICUNO] = _("ARKTOS"),
+ [SPECIES_ZAPDOS] = _("ZAPDOS"),
+ [SPECIES_MOLTRES] = _("LAVADOS"),
+ [SPECIES_DRATINI] = _("DRATINI"),
+ [SPECIES_DRAGONAIR] = _("DRAGONIR"),
+ [SPECIES_DRAGONITE] = _("DRAGORAN"),
+ [SPECIES_MEWTWO] = _("MEWTU"),
+ [SPECIES_MEW] = _("MEW"),
+ [SPECIES_CHIKORITA] = _("ENDIVIE"),
+ [SPECIES_BAYLEEF] = _("LORBLATT"),
+ [SPECIES_MEGANIUM] = _("MEGANIE"),
+ [SPECIES_CYNDAQUIL] = _("FEURIGEL"),
+ [SPECIES_QUILAVA] = _("IGELAVAR"),
+ [SPECIES_TYPHLOSION] = _("TORNUPTO"),
+ [SPECIES_TOTODILE] = _("KARNIMANI"),
+ [SPECIES_CROCONAW] = _("TYRACROC"),
+ [SPECIES_FERALIGATR] = _("IMPERGATOR"),
+ [SPECIES_SENTRET] = _("WIESOR"),
+ [SPECIES_FURRET] = _("WIESENIOR"),
+ [SPECIES_HOOTHOOT] = _("HOOTHOOT"),
+ [SPECIES_NOCTOWL] = _("NOCTUH"),
+ [SPECIES_LEDYBA] = _("LEDYBA"),
+ [SPECIES_LEDIAN] = _("LEDIAN"),
+ [SPECIES_SPINARAK] = _("WEBARAK"),
+ [SPECIES_ARIADOS] = _("ARIADOS"),
+ [SPECIES_CROBAT] = _("IKSBAT"),
+ [SPECIES_CHINCHOU] = _("LAMPI"),
+ [SPECIES_LANTURN] = _("LANTURN"),
+ [SPECIES_PICHU] = _("PICHU"),
+ [SPECIES_CLEFFA] = _("PII"),
+ [SPECIES_IGGLYBUFF] = _("FLUFFELUFF"),
+ [SPECIES_TOGEPI] = _("TOGEPI"),
+ [SPECIES_TOGETIC] = _("TOGETIC"),
+ [SPECIES_NATU] = _("NATU"),
+ [SPECIES_XATU] = _("XATU"),
+ [SPECIES_MAREEP] = _("VOLTILAMM"),
+ [SPECIES_FLAAFFY] = _("WAATY"),
+ [SPECIES_AMPHAROS] = _("AMPHAROS"),
+ [SPECIES_BELLOSSOM] = _("BLUBELLA"),
+ [SPECIES_MARILL] = _("MARILL"),
+ [SPECIES_AZUMARILL] = _("AZUMARILL"),
+ [SPECIES_SUDOWOODO] = _("MOGELBAUM"),
+ [SPECIES_POLITOED] = _("QUAXO"),
+ [SPECIES_HOPPIP] = _("HOPPSPROSS"),
+ [SPECIES_SKIPLOOM] = _("HUBELUPF"),
+ [SPECIES_JUMPLUFF] = _("PAPUNGHA"),
+ [SPECIES_AIPOM] = _("GRIFFEL"),
+ [SPECIES_SUNKERN] = _("SONNKERN"),
+ [SPECIES_SUNFLORA] = _("SONNFLORA"),
+ [SPECIES_YANMA] = _("YANMA"),
+ [SPECIES_WOOPER] = _("FELINO"),
+ [SPECIES_QUAGSIRE] = _("MORLORD"),
+ [SPECIES_ESPEON] = _("PSIANA"),
+ [SPECIES_UMBREON] = _("NACHTARA"),
+ [SPECIES_MURKROW] = _("KRAMURX"),
+ [SPECIES_SLOWKING] = _("LASCHOKING"),
+ [SPECIES_MISDREAVUS] = _("TRAUNFUGIL"),
+ [SPECIES_UNOWN] = _("ICOGNITO"),
+ [SPECIES_WOBBUFFET] = _("WOINGENAU"),
+ [SPECIES_GIRAFARIG] = _("GIRAFARIG"),
+ [SPECIES_PINECO] = _("TANNZA"),
+ [SPECIES_FORRETRESS] = _("FORSTELLKA"),
+ [SPECIES_DUNSPARCE] = _("DUMMISEL"),
+ [SPECIES_GLIGAR] = _("SKORGLA"),
+ [SPECIES_STEELIX] = _("STAHLOS"),
+ [SPECIES_SNUBBULL] = _("SNUBBULL"),
+ [SPECIES_GRANBULL] = _("GRANBULL"),
+ [SPECIES_QWILFISH] = _("BALDORFISH"),
+ [SPECIES_SCIZOR] = _("SCHEROX"),
+ [SPECIES_SHUCKLE] = _("POTTROTT"),
+ [SPECIES_HERACROSS] = _("SKARABORN"),
+ [SPECIES_SNEASEL] = _("SNIEBEL"),
+ [SPECIES_TEDDIURSA] = _("TEDDIURSA"),
+ [SPECIES_URSARING] = _("URSARING"),
+ [SPECIES_SLUGMA] = _("SCHNECKMAG"),
+ [SPECIES_MAGCARGO] = _("MAGCARGO"),
+ [SPECIES_SWINUB] = _("QUIEKEL"),
+ [SPECIES_PILOSWINE] = _("KEIFEL"),
+ [SPECIES_CORSOLA] = _("CORASONN"),
+ [SPECIES_REMORAID] = _("REMORAID"),
+ [SPECIES_OCTILLERY] = _("OCTILLERY"),
+ [SPECIES_DELIBIRD] = _("BOTOGEL"),
+ [SPECIES_MANTINE] = _("MANTAX"),
+ [SPECIES_SKARMORY] = _("PANZAERON"),
+ [SPECIES_HOUNDOUR] = _("HUNDUSTER"),
+ [SPECIES_HOUNDOOM] = _("HUNDEMON"),
+ [SPECIES_KINGDRA] = _("SEEDRAKING"),
+ [SPECIES_PHANPY] = _("PHANPY"),
+ [SPECIES_DONPHAN] = _("DONPHAN"),
+ [SPECIES_PORYGON2] = _("PORYGON2"),
+ [SPECIES_STANTLER] = _("DAMHIRPLEX"),
+ [SPECIES_SMEARGLE] = _("FARBEAGLE"),
+ [SPECIES_TYROGUE] = _("RABAUZ"),
+ [SPECIES_HITMONTOP] = _("KAPOERA"),
+ [SPECIES_SMOOCHUM] = _("KUSSILLA"),
+ [SPECIES_ELEKID] = _("ELEKID"),
+ [SPECIES_MAGBY] = _("MAGBY"),
+ [SPECIES_MILTANK] = _("MILTANK"),
+ [SPECIES_BLISSEY] = _("HEITEIRA"),
+ [SPECIES_RAIKOU] = _("RAIKOU"),
+ [SPECIES_ENTEI] = _("ENTEI"),
+ [SPECIES_SUICUNE] = _("SUICUNE"),
+ [SPECIES_LARVITAR] = _("LARVITAR"),
+ [SPECIES_PUPITAR] = _("PUPITAR"),
+ [SPECIES_TYRANITAR] = _("DESPOTAR"),
+ [SPECIES_LUGIA] = _("LUGIA"),
+ [SPECIES_HO_OH] = _("HO-OH"),
+ [SPECIES_CELEBI] = _("CELEBI"),
+ [SPECIES_OLD_UNOWN_B] = _("?"),
+ [SPECIES_OLD_UNOWN_C] = _("?"),
+ [SPECIES_OLD_UNOWN_D] = _("?"),
+ [SPECIES_OLD_UNOWN_E] = _("?"),
+ [SPECIES_OLD_UNOWN_F] = _("?"),
+ [SPECIES_OLD_UNOWN_G] = _("?"),
+ [SPECIES_OLD_UNOWN_H] = _("?"),
+ [SPECIES_OLD_UNOWN_I] = _("?"),
+ [SPECIES_OLD_UNOWN_J] = _("?"),
+ [SPECIES_OLD_UNOWN_K] = _("?"),
+ [SPECIES_OLD_UNOWN_L] = _("?"),
+ [SPECIES_OLD_UNOWN_M] = _("?"),
+ [SPECIES_OLD_UNOWN_N] = _("?"),
+ [SPECIES_OLD_UNOWN_O] = _("?"),
+ [SPECIES_OLD_UNOWN_P] = _("?"),
+ [SPECIES_OLD_UNOWN_Q] = _("?"),
+ [SPECIES_OLD_UNOWN_R] = _("?"),
+ [SPECIES_OLD_UNOWN_S] = _("?"),
+ [SPECIES_OLD_UNOWN_T] = _("?"),
+ [SPECIES_OLD_UNOWN_U] = _("?"),
+ [SPECIES_OLD_UNOWN_V] = _("?"),
+ [SPECIES_OLD_UNOWN_W] = _("?"),
+ [SPECIES_OLD_UNOWN_X] = _("?"),
+ [SPECIES_OLD_UNOWN_Y] = _("?"),
+ [SPECIES_OLD_UNOWN_Z] = _("?"),
+ [SPECIES_TREECKO] = _("GECKARBOR"),
+ [SPECIES_GROVYLE] = _("REPTAIN"),
+ [SPECIES_SCEPTILE] = _("GEWALDRO"),
+ [SPECIES_TORCHIC] = _("FLEMMLI"),
+ [SPECIES_COMBUSKEN] = _("JUNGGLUT"),
+ [SPECIES_BLAZIKEN] = _("LOHGOCK"),
+ [SPECIES_MUDKIP] = _("HYDROPI"),
+ [SPECIES_MARSHTOMP] = _("MOORABBEL"),
+ [SPECIES_SWAMPERT] = _("SUMPEX"),
+ [SPECIES_POOCHYENA] = _("FIFFYEN"),
+ [SPECIES_MIGHTYENA] = _("MAGNAYEN"),
+ [SPECIES_ZIGZAGOON] = _("ZIGZACHS"),
+ [SPECIES_LINOONE] = _("GERADAKS"),
+ [SPECIES_WURMPLE] = _("WAUMPEL"),
+ [SPECIES_SILCOON] = _("SCHALOKO"),
+ [SPECIES_BEAUTIFLY] = _("PAPINELLA"),
+ [SPECIES_CASCOON] = _("PANEKON"),
+ [SPECIES_DUSTOX] = _("PUDOX"),
+ [SPECIES_LOTAD] = _("LOTURZEL"),
+ [SPECIES_LOMBRE] = _("LOMBRERO"),
+ [SPECIES_LUDICOLO] = _("KAPPALORES"),
+ [SPECIES_SEEDOT] = _("SAMURZEL"),
+ [SPECIES_NUZLEAF] = _("BLANAS"),
+ [SPECIES_SHIFTRY] = _("TENGULIST"),
+ [SPECIES_NINCADA] = _("NINCADA"),
+ [SPECIES_NINJASK] = _("NINJASK"),
+ [SPECIES_SHEDINJA] = _("NINJATOM"),
+ [SPECIES_TAILLOW] = _("SCHWALBINI"),
+ [SPECIES_SWELLOW] = _("SCHWALBOSS"),
+ [SPECIES_SHROOMISH] = _("KNILZ"),
+ [SPECIES_BRELOOM] = _("KAPILZ"),
+ [SPECIES_SPINDA] = _("PANDIR"),
+ [SPECIES_WINGULL] = _("WINGULL"),
+ [SPECIES_PELIPPER] = _("PELIPPER"),
+ [SPECIES_SURSKIT] = _("GEHWEIHER"),
+ [SPECIES_MASQUERAIN] = _("MASKEREGEN"),
+ [SPECIES_WAILMER] = _("WAILMER"),
+ [SPECIES_WAILORD] = _("WAILORD"),
+ [SPECIES_SKITTY] = _("ENECO"),
+ [SPECIES_DELCATTY] = _("ENEKORO"),
+ [SPECIES_KECLEON] = _("KECLEON"),
+ [SPECIES_BALTOY] = _("PUPPANCE"),
+ [SPECIES_CLAYDOL] = _("LEPUMENTAS"),
+ [SPECIES_NOSEPASS] = _("NASGNET"),
+ [SPECIES_TORKOAL] = _("QURTEL"),
+ [SPECIES_SABLEYE] = _("ZOBIRIS"),
+ [SPECIES_BARBOACH] = _("SCHMERBE"),
+ [SPECIES_WHISCASH] = _("WELSAR"),
+ [SPECIES_LUVDISC] = _("LIEBISKUS"),
+ [SPECIES_CORPHISH] = _("KREBSCORPS"),
+ [SPECIES_CRAWDAUNT] = _("KREBUTACK"),
+ [SPECIES_FEEBAS] = _("BARSCHWA"),
+ [SPECIES_MILOTIC] = _("MILOTIC"),
+ [SPECIES_CARVANHA] = _("KANIVANHA"),
+ [SPECIES_SHARPEDO] = _("TOHAIDO"),
+ [SPECIES_TRAPINCH] = _("KNACKLION"),
+ [SPECIES_VIBRAVA] = _("VIBRAVA"),
+ [SPECIES_FLYGON] = _("LIBELLDRA"),
+ [SPECIES_MAKUHITA] = _("MAKUHITA"),
+ [SPECIES_HARIYAMA] = _("HARIYAMA"),
+ [SPECIES_ELECTRIKE] = _("FRIZELBLIZ"),
+ [SPECIES_MANECTRIC] = _("VOLTENSO"),
+ [SPECIES_NUMEL] = _("CAMAUB"),
+ [SPECIES_CAMERUPT] = _("CAMERUPT"),
+ [SPECIES_SPHEAL] = _("SEEMOPS"),
+ [SPECIES_SEALEO] = _("SEEJONG"),
+ [SPECIES_WALREIN] = _("WALRAISA"),
+ [SPECIES_CACNEA] = _("TUSKA"),
+ [SPECIES_CACTURNE] = _("NOKTUSKA"),
+ [SPECIES_SNORUNT] = _("SCHNEPPKE"),
+ [SPECIES_GLALIE] = _("FIRNONTOR"),
+ [SPECIES_LUNATONE] = _("LUNASTEIN"),
+ [SPECIES_SOLROCK] = _("SONNFEL"),
+ [SPECIES_AZURILL] = _("AZURILL"),
+ [SPECIES_SPOINK] = _("SPOINK"),
+ [SPECIES_GRUMPIG] = _("GROINK"),
+ [SPECIES_PLUSLE] = _("PLUSLE"),
+ [SPECIES_MINUN] = _("MINUN"),
+ [SPECIES_MAWILE] = _("FLUNKIFER"),
+ [SPECIES_MEDITITE] = _("MEDITIE"),
+ [SPECIES_MEDICHAM] = _("MEDITALIS"),
+ [SPECIES_SWABLU] = _("WABLU"),
+ [SPECIES_ALTARIA] = _("ALTARIA"),
+ [SPECIES_WYNAUT] = _("ISSO"),
+ [SPECIES_DUSKULL] = _("ZWIRRLICHT"),
+ [SPECIES_DUSCLOPS] = _("ZWIRRKLOP"),
+ [SPECIES_ROSELIA] = _("ROSELIA"),
+ [SPECIES_SLAKOTH] = _("BUMMELZ"),
+ [SPECIES_VIGOROTH] = _("MUNTIER"),
+ [SPECIES_SLAKING] = _("LETARKING"),
+ [SPECIES_GULPIN] = _("SCHLUPPUCK"),
+ [SPECIES_SWALOT] = _("SCHLUKWECH"),
+ [SPECIES_TROPIUS] = _("TROPIUS"),
+ [SPECIES_WHISMUR] = _("FLURMEL"),
+ [SPECIES_LOUDRED] = _("KRAKEELO"),
+ [SPECIES_EXPLOUD] = _("KRAWUMMS"),
+ [SPECIES_CLAMPERL] = _("PERLU"),
+ [SPECIES_HUNTAIL] = _("AALABYSS"),
+ [SPECIES_GOREBYSS] = _("SAGANABYSS"),
+ [SPECIES_ABSOL] = _("ABSOL"),
+ [SPECIES_SHUPPET] = _("SHUPPET"),
+ [SPECIES_BANETTE] = _("BANETTE"),
+ [SPECIES_SEVIPER] = _("VIPITIS"),
+ [SPECIES_ZANGOOSE] = _("SENGO"),
+ [SPECIES_RELICANTH] = _("RELICANTH"),
+ [SPECIES_ARON] = _("STOLLUNIOR"),
+ [SPECIES_LAIRON] = _("STOLLRAK"),
+ [SPECIES_AGGRON] = _("STOLLOSS"),
+ [SPECIES_CASTFORM] = _("FORMEO"),
+ [SPECIES_VOLBEAT] = _("VOLBEAT"),
+ [SPECIES_ILLUMISE] = _("ILLUMISE"),
+ [SPECIES_LILEEP] = _("LILIEP"),
+ [SPECIES_CRADILY] = _("WIELIE"),
+ [SPECIES_ANORITH] = _("ANORITH"),
+ [SPECIES_ARMALDO] = _("ARMALDO"),
+ [SPECIES_RALTS] = _("TRASLA"),
+ [SPECIES_KIRLIA] = _("KIRLIA"),
+ [SPECIES_GARDEVOIR] = _("GUARDEVOIR"),
+ [SPECIES_BAGON] = _("KINDWURM"),
+ [SPECIES_SHELGON] = _("DRASCHEL"),
+ [SPECIES_SALAMENCE] = _("BRUTALANDA"),
+ [SPECIES_BELDUM] = _("TANHEL"),
+ [SPECIES_METANG] = _("METANG"),
+ [SPECIES_METAGROSS] = _("METAGROSS"),
+ [SPECIES_REGIROCK] = _("REGIROCK"),
+ [SPECIES_REGICE] = _("REGICE"),
+ [SPECIES_REGISTEEL] = _("REGISTEEL"),
+ [SPECIES_KYOGRE] = _("KYOGRE"),
+ [SPECIES_GROUDON] = _("GROUDON"),
+ [SPECIES_RAYQUAZA] = _("RAYQUAZA"),
+ [SPECIES_LATIAS] = _("LATIAS"),
+ [SPECIES_LATIOS] = _("LATIOS"),
+ [SPECIES_JIRACHI] = _("JIRACHI"),
+ [SPECIES_DEOXYS] = _("DEOXYS"),
+ [SPECIES_CHIMECHO] = _("PALIMPALIM"),
+};
diff --git a/src/data/text/species_names_en.h b/src/data/text/species_names_en.h
new file mode 100644
index 000000000..840beb22b
--- /dev/null
+++ b/src/data/text/species_names_en.h
@@ -0,0 +1,414 @@
+const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1] = {
+ [SPECIES_NONE] = _("??????????"),
+ [SPECIES_BULBASAUR] = _("BULBASAUR"),
+ [SPECIES_IVYSAUR] = _("IVYSAUR"),
+ [SPECIES_VENUSAUR] = _("VENUSAUR"),
+ [SPECIES_CHARMANDER] = _("CHARMANDER"),
+ [SPECIES_CHARMELEON] = _("CHARMELEON"),
+ [SPECIES_CHARIZARD] = _("CHARIZARD"),
+ [SPECIES_SQUIRTLE] = _("SQUIRTLE"),
+ [SPECIES_WARTORTLE] = _("WARTORTLE"),
+ [SPECIES_BLASTOISE] = _("BLASTOISE"),
+ [SPECIES_CATERPIE] = _("CATERPIE"),
+ [SPECIES_METAPOD] = _("METAPOD"),
+ [SPECIES_BUTTERFREE] = _("BUTTERFREE"),
+ [SPECIES_WEEDLE] = _("WEEDLE"),
+ [SPECIES_KAKUNA] = _("KAKUNA"),
+ [SPECIES_BEEDRILL] = _("BEEDRILL"),
+ [SPECIES_PIDGEY] = _("PIDGEY"),
+ [SPECIES_PIDGEOTTO] = _("PIDGEOTTO"),
+ [SPECIES_PIDGEOT] = _("PIDGEOT"),
+ [SPECIES_RATTATA] = _("RATTATA"),
+ [SPECIES_RATICATE] = _("RATICATE"),
+ [SPECIES_SPEAROW] = _("SPEAROW"),
+ [SPECIES_FEAROW] = _("FEAROW"),
+ [SPECIES_EKANS] = _("EKANS"),
+ [SPECIES_ARBOK] = _("ARBOK"),
+ [SPECIES_PIKACHU] = _("PIKACHU"),
+ [SPECIES_RAICHU] = _("RAICHU"),
+ [SPECIES_SANDSHREW] = _("SANDSHREW"),
+ [SPECIES_SANDSLASH] = _("SANDSLASH"),
+ [SPECIES_NIDORAN_F] = _("NIDORAN♀"),
+ [SPECIES_NIDORINA] = _("NIDORINA"),
+ [SPECIES_NIDOQUEEN] = _("NIDOQUEEN"),
+ [SPECIES_NIDORAN_M] = _("NIDORAN♂"),
+ [SPECIES_NIDORINO] = _("NIDORINO"),
+ [SPECIES_NIDOKING] = _("NIDOKING"),
+ [SPECIES_CLEFAIRY] = _("CLEFAIRY"),
+ [SPECIES_CLEFABLE] = _("CLEFABLE"),
+ [SPECIES_VULPIX] = _("VULPIX"),
+ [SPECIES_NINETALES] = _("NINETALES"),
+ [SPECIES_JIGGLYPUFF] = _("JIGGLYPUFF"),
+ [SPECIES_WIGGLYTUFF] = _("WIGGLYTUFF"),
+ [SPECIES_ZUBAT] = _("ZUBAT"),
+ [SPECIES_GOLBAT] = _("GOLBAT"),
+ [SPECIES_ODDISH] = _("ODDISH"),
+ [SPECIES_GLOOM] = _("GLOOM"),
+ [SPECIES_VILEPLUME] = _("VILEPLUME"),
+ [SPECIES_PARAS] = _("PARAS"),
+ [SPECIES_PARASECT] = _("PARASECT"),
+ [SPECIES_VENONAT] = _("VENONAT"),
+ [SPECIES_VENOMOTH] = _("VENOMOTH"),
+ [SPECIES_DIGLETT] = _("DIGLETT"),
+ [SPECIES_DUGTRIO] = _("DUGTRIO"),
+ [SPECIES_MEOWTH] = _("MEOWTH"),
+ [SPECIES_PERSIAN] = _("PERSIAN"),
+ [SPECIES_PSYDUCK] = _("PSYDUCK"),
+ [SPECIES_GOLDUCK] = _("GOLDUCK"),
+ [SPECIES_MANKEY] = _("MANKEY"),
+ [SPECIES_PRIMEAPE] = _("PRIMEAPE"),
+ [SPECIES_GROWLITHE] = _("GROWLITHE"),
+ [SPECIES_ARCANINE] = _("ARCANINE"),
+ [SPECIES_POLIWAG] = _("POLIWAG"),
+ [SPECIES_POLIWHIRL] = _("POLIWHIRL"),
+ [SPECIES_POLIWRATH] = _("POLIWRATH"),
+ [SPECIES_ABRA] = _("ABRA"),
+ [SPECIES_KADABRA] = _("KADABRA"),
+ [SPECIES_ALAKAZAM] = _("ALAKAZAM"),
+ [SPECIES_MACHOP] = _("MACHOP"),
+ [SPECIES_MACHOKE] = _("MACHOKE"),
+ [SPECIES_MACHAMP] = _("MACHAMP"),
+ [SPECIES_BELLSPROUT] = _("BELLSPROUT"),
+ [SPECIES_WEEPINBELL] = _("WEEPINBELL"),
+ [SPECIES_VICTREEBEL] = _("VICTREEBEL"),
+ [SPECIES_TENTACOOL] = _("TENTACOOL"),
+ [SPECIES_TENTACRUEL] = _("TENTACRUEL"),
+ [SPECIES_GEODUDE] = _("GEODUDE"),
+ [SPECIES_GRAVELER] = _("GRAVELER"),
+ [SPECIES_GOLEM] = _("GOLEM"),
+ [SPECIES_PONYTA] = _("PONYTA"),
+ [SPECIES_RAPIDASH] = _("RAPIDASH"),
+ [SPECIES_SLOWPOKE] = _("SLOWPOKE"),
+ [SPECIES_SLOWBRO] = _("SLOWBRO"),
+ [SPECIES_MAGNEMITE] = _("MAGNEMITE"),
+ [SPECIES_MAGNETON] = _("MAGNETON"),
+ [SPECIES_FARFETCHD] = _("FARFETCH’D"),
+ [SPECIES_DODUO] = _("DODUO"),
+ [SPECIES_DODRIO] = _("DODRIO"),
+ [SPECIES_SEEL] = _("SEEL"),
+ [SPECIES_DEWGONG] = _("DEWGONG"),
+ [SPECIES_GRIMER] = _("GRIMER"),
+ [SPECIES_MUK] = _("MUK"),
+ [SPECIES_SHELLDER] = _("SHELLDER"),
+ [SPECIES_CLOYSTER] = _("CLOYSTER"),
+ [SPECIES_GASTLY] = _("GASTLY"),
+ [SPECIES_HAUNTER] = _("HAUNTER"),
+ [SPECIES_GENGAR] = _("GENGAR"),
+ [SPECIES_ONIX] = _("ONIX"),
+ [SPECIES_DROWZEE] = _("DROWZEE"),
+ [SPECIES_HYPNO] = _("HYPNO"),
+ [SPECIES_KRABBY] = _("KRABBY"),
+ [SPECIES_KINGLER] = _("KINGLER"),
+ [SPECIES_VOLTORB] = _("VOLTORB"),
+ [SPECIES_ELECTRODE] = _("ELECTRODE"),
+ [SPECIES_EXEGGCUTE] = _("EXEGGCUTE"),
+ [SPECIES_EXEGGUTOR] = _("EXEGGUTOR"),
+ [SPECIES_CUBONE] = _("CUBONE"),
+ [SPECIES_MAROWAK] = _("MAROWAK"),
+ [SPECIES_HITMONLEE] = _("HITMONLEE"),
+ [SPECIES_HITMONCHAN] = _("HITMONCHAN"),
+ [SPECIES_LICKITUNG] = _("LICKITUNG"),
+ [SPECIES_KOFFING] = _("KOFFING"),
+ [SPECIES_WEEZING] = _("WEEZING"),
+ [SPECIES_RHYHORN] = _("RHYHORN"),
+ [SPECIES_RHYDON] = _("RHYDON"),
+ [SPECIES_CHANSEY] = _("CHANSEY"),
+ [SPECIES_TANGELA] = _("TANGELA"),
+ [SPECIES_KANGASKHAN] = _("KANGASKHAN"),
+ [SPECIES_HORSEA] = _("HORSEA"),
+ [SPECIES_SEADRA] = _("SEADRA"),
+ [SPECIES_GOLDEEN] = _("GOLDEEN"),
+ [SPECIES_SEAKING] = _("SEAKING"),
+ [SPECIES_STARYU] = _("STARYU"),
+ [SPECIES_STARMIE] = _("STARMIE"),
+ [SPECIES_MR_MIME] = _("MR. MIME"),
+ [SPECIES_SCYTHER] = _("SCYTHER"),
+ [SPECIES_JYNX] = _("JYNX"),
+ [SPECIES_ELECTABUZZ] = _("ELECTABUZZ"),
+ [SPECIES_MAGMAR] = _("MAGMAR"),
+ [SPECIES_PINSIR] = _("PINSIR"),
+ [SPECIES_TAUROS] = _("TAUROS"),
+ [SPECIES_MAGIKARP] = _("MAGIKARP"),
+ [SPECIES_GYARADOS] = _("GYARADOS"),
+ [SPECIES_LAPRAS] = _("LAPRAS"),
+ [SPECIES_DITTO] = _("DITTO"),
+ [SPECIES_EEVEE] = _("EEVEE"),
+ [SPECIES_VAPOREON] = _("VAPOREON"),
+ [SPECIES_JOLTEON] = _("JOLTEON"),
+ [SPECIES_FLAREON] = _("FLAREON"),
+ [SPECIES_PORYGON] = _("PORYGON"),
+ [SPECIES_OMANYTE] = _("OMANYTE"),
+ [SPECIES_OMASTAR] = _("OMASTAR"),
+ [SPECIES_KABUTO] = _("KABUTO"),
+ [SPECIES_KABUTOPS] = _("KABUTOPS"),
+ [SPECIES_AERODACTYL] = _("AERODACTYL"),
+ [SPECIES_SNORLAX] = _("SNORLAX"),
+ [SPECIES_ARTICUNO] = _("ARTICUNO"),
+ [SPECIES_ZAPDOS] = _("ZAPDOS"),
+ [SPECIES_MOLTRES] = _("MOLTRES"),
+ [SPECIES_DRATINI] = _("DRATINI"),
+ [SPECIES_DRAGONAIR] = _("DRAGONAIR"),
+ [SPECIES_DRAGONITE] = _("DRAGONITE"),
+ [SPECIES_MEWTWO] = _("MEWTWO"),
+ [SPECIES_MEW] = _("MEW"),
+ [SPECIES_CHIKORITA] = _("CHIKORITA"),
+ [SPECIES_BAYLEEF] = _("BAYLEEF"),
+ [SPECIES_MEGANIUM] = _("MEGANIUM"),
+ [SPECIES_CYNDAQUIL] = _("CYNDAQUIL"),
+ [SPECIES_QUILAVA] = _("QUILAVA"),
+ [SPECIES_TYPHLOSION] = _("TYPHLOSION"),
+ [SPECIES_TOTODILE] = _("TOTODILE"),
+ [SPECIES_CROCONAW] = _("CROCONAW"),
+ [SPECIES_FERALIGATR] = _("FERALIGATR"),
+ [SPECIES_SENTRET] = _("SENTRET"),
+ [SPECIES_FURRET] = _("FURRET"),
+ [SPECIES_HOOTHOOT] = _("HOOTHOOT"),
+ [SPECIES_NOCTOWL] = _("NOCTOWL"),
+ [SPECIES_LEDYBA] = _("LEDYBA"),
+ [SPECIES_LEDIAN] = _("LEDIAN"),
+ [SPECIES_SPINARAK] = _("SPINARAK"),
+ [SPECIES_ARIADOS] = _("ARIADOS"),
+ [SPECIES_CROBAT] = _("CROBAT"),
+ [SPECIES_CHINCHOU] = _("CHINCHOU"),
+ [SPECIES_LANTURN] = _("LANTURN"),
+ [SPECIES_PICHU] = _("PICHU"),
+ [SPECIES_CLEFFA] = _("CLEFFA"),
+ [SPECIES_IGGLYBUFF] = _("IGGLYBUFF"),
+ [SPECIES_TOGEPI] = _("TOGEPI"),
+ [SPECIES_TOGETIC] = _("TOGETIC"),
+ [SPECIES_NATU] = _("NATU"),
+ [SPECIES_XATU] = _("XATU"),
+ [SPECIES_MAREEP] = _("MAREEP"),
+ [SPECIES_FLAAFFY] = _("FLAAFFY"),
+ [SPECIES_AMPHAROS] = _("AMPHAROS"),
+ [SPECIES_BELLOSSOM] = _("BELLOSSOM"),
+ [SPECIES_MARILL] = _("MARILL"),
+ [SPECIES_AZUMARILL] = _("AZUMARILL"),
+ [SPECIES_SUDOWOODO] = _("SUDOWOODO"),
+ [SPECIES_POLITOED] = _("POLITOED"),
+ [SPECIES_HOPPIP] = _("HOPPIP"),
+ [SPECIES_SKIPLOOM] = _("SKIPLOOM"),
+ [SPECIES_JUMPLUFF] = _("JUMPLUFF"),
+ [SPECIES_AIPOM] = _("AIPOM"),
+ [SPECIES_SUNKERN] = _("SUNKERN"),
+ [SPECIES_SUNFLORA] = _("SUNFLORA"),
+ [SPECIES_YANMA] = _("YANMA"),
+ [SPECIES_WOOPER] = _("WOOPER"),
+ [SPECIES_QUAGSIRE] = _("QUAGSIRE"),
+ [SPECIES_ESPEON] = _("ESPEON"),
+ [SPECIES_UMBREON] = _("UMBREON"),
+ [SPECIES_MURKROW] = _("MURKROW"),
+ [SPECIES_SLOWKING] = _("SLOWKING"),
+ [SPECIES_MISDREAVUS] = _("MISDREAVUS"),
+ [SPECIES_UNOWN] = _("UNOWN"),
+ [SPECIES_WOBBUFFET] = _("WOBBUFFET"),
+ [SPECIES_GIRAFARIG] = _("GIRAFARIG"),
+ [SPECIES_PINECO] = _("PINECO"),
+ [SPECIES_FORRETRESS] = _("FORRETRESS"),
+ [SPECIES_DUNSPARCE] = _("DUNSPARCE"),
+ [SPECIES_GLIGAR] = _("GLIGAR"),
+ [SPECIES_STEELIX] = _("STEELIX"),
+ [SPECIES_SNUBBULL] = _("SNUBBULL"),
+ [SPECIES_GRANBULL] = _("GRANBULL"),
+ [SPECIES_QWILFISH] = _("QWILFISH"),
+ [SPECIES_SCIZOR] = _("SCIZOR"),
+ [SPECIES_SHUCKLE] = _("SHUCKLE"),
+ [SPECIES_HERACROSS] = _("HERACROSS"),
+ [SPECIES_SNEASEL] = _("SNEASEL"),
+ [SPECIES_TEDDIURSA] = _("TEDDIURSA"),
+ [SPECIES_URSARING] = _("URSARING"),
+ [SPECIES_SLUGMA] = _("SLUGMA"),
+ [SPECIES_MAGCARGO] = _("MAGCARGO"),
+ [SPECIES_SWINUB] = _("SWINUB"),
+ [SPECIES_PILOSWINE] = _("PILOSWINE"),
+ [SPECIES_CORSOLA] = _("CORSOLA"),
+ [SPECIES_REMORAID] = _("REMORAID"),
+ [SPECIES_OCTILLERY] = _("OCTILLERY"),
+ [SPECIES_DELIBIRD] = _("DELIBIRD"),
+ [SPECIES_MANTINE] = _("MANTINE"),
+ [SPECIES_SKARMORY] = _("SKARMORY"),
+ [SPECIES_HOUNDOUR] = _("HOUNDOUR"),
+ [SPECIES_HOUNDOOM] = _("HOUNDOOM"),
+ [SPECIES_KINGDRA] = _("KINGDRA"),
+ [SPECIES_PHANPY] = _("PHANPY"),
+ [SPECIES_DONPHAN] = _("DONPHAN"),
+ [SPECIES_PORYGON2] = _("PORYGON2"),
+ [SPECIES_STANTLER] = _("STANTLER"),
+ [SPECIES_SMEARGLE] = _("SMEARGLE"),
+ [SPECIES_TYROGUE] = _("TYROGUE"),
+ [SPECIES_HITMONTOP] = _("HITMONTOP"),
+ [SPECIES_SMOOCHUM] = _("SMOOCHUM"),
+ [SPECIES_ELEKID] = _("ELEKID"),
+ [SPECIES_MAGBY] = _("MAGBY"),
+ [SPECIES_MILTANK] = _("MILTANK"),
+ [SPECIES_BLISSEY] = _("BLISSEY"),
+ [SPECIES_RAIKOU] = _("RAIKOU"),
+ [SPECIES_ENTEI] = _("ENTEI"),
+ [SPECIES_SUICUNE] = _("SUICUNE"),
+ [SPECIES_LARVITAR] = _("LARVITAR"),
+ [SPECIES_PUPITAR] = _("PUPITAR"),
+ [SPECIES_TYRANITAR] = _("TYRANITAR"),
+ [SPECIES_LUGIA] = _("LUGIA"),
+ [SPECIES_HO_OH] = _("HO-OH"),
+ [SPECIES_CELEBI] = _("CELEBI"),
+ [SPECIES_OLD_UNOWN_B] = _("?"),
+ [SPECIES_OLD_UNOWN_C] = _("?"),
+ [SPECIES_OLD_UNOWN_D] = _("?"),
+ [SPECIES_OLD_UNOWN_E] = _("?"),
+ [SPECIES_OLD_UNOWN_F] = _("?"),
+ [SPECIES_OLD_UNOWN_G] = _("?"),
+ [SPECIES_OLD_UNOWN_H] = _("?"),
+ [SPECIES_OLD_UNOWN_I] = _("?"),
+ [SPECIES_OLD_UNOWN_J] = _("?"),
+ [SPECIES_OLD_UNOWN_K] = _("?"),
+ [SPECIES_OLD_UNOWN_L] = _("?"),
+ [SPECIES_OLD_UNOWN_M] = _("?"),
+ [SPECIES_OLD_UNOWN_N] = _("?"),
+ [SPECIES_OLD_UNOWN_O] = _("?"),
+ [SPECIES_OLD_UNOWN_P] = _("?"),
+ [SPECIES_OLD_UNOWN_Q] = _("?"),
+ [SPECIES_OLD_UNOWN_R] = _("?"),
+ [SPECIES_OLD_UNOWN_S] = _("?"),
+ [SPECIES_OLD_UNOWN_T] = _("?"),
+ [SPECIES_OLD_UNOWN_U] = _("?"),
+ [SPECIES_OLD_UNOWN_V] = _("?"),
+ [SPECIES_OLD_UNOWN_W] = _("?"),
+ [SPECIES_OLD_UNOWN_X] = _("?"),
+ [SPECIES_OLD_UNOWN_Y] = _("?"),
+ [SPECIES_OLD_UNOWN_Z] = _("?"),
+ [SPECIES_TREECKO] = _("TREECKO"),
+ [SPECIES_GROVYLE] = _("GROVYLE"),
+ [SPECIES_SCEPTILE] = _("SCEPTILE"),
+ [SPECIES_TORCHIC] = _("TORCHIC"),
+ [SPECIES_COMBUSKEN] = _("COMBUSKEN"),
+ [SPECIES_BLAZIKEN] = _("BLAZIKEN"),
+ [SPECIES_MUDKIP] = _("MUDKIP"),
+ [SPECIES_MARSHTOMP] = _("MARSHTOMP"),
+ [SPECIES_SWAMPERT] = _("SWAMPERT"),
+ [SPECIES_POOCHYENA] = _("POOCHYENA"),
+ [SPECIES_MIGHTYENA] = _("MIGHTYENA"),
+ [SPECIES_ZIGZAGOON] = _("ZIGZAGOON"),
+ [SPECIES_LINOONE] = _("LINOONE"),
+ [SPECIES_WURMPLE] = _("WURMPLE"),
+ [SPECIES_SILCOON] = _("SILCOON"),
+ [SPECIES_BEAUTIFLY] = _("BEAUTIFLY"),
+ [SPECIES_CASCOON] = _("CASCOON"),
+ [SPECIES_DUSTOX] = _("DUSTOX"),
+ [SPECIES_LOTAD] = _("LOTAD"),
+ [SPECIES_LOMBRE] = _("LOMBRE"),
+ [SPECIES_LUDICOLO] = _("LUDICOLO"),
+ [SPECIES_SEEDOT] = _("SEEDOT"),
+ [SPECIES_NUZLEAF] = _("NUZLEAF"),
+ [SPECIES_SHIFTRY] = _("SHIFTRY"),
+ [SPECIES_NINCADA] = _("NINCADA"),
+ [SPECIES_NINJASK] = _("NINJASK"),
+ [SPECIES_SHEDINJA] = _("SHEDINJA"),
+ [SPECIES_TAILLOW] = _("TAILLOW"),
+ [SPECIES_SWELLOW] = _("SWELLOW"),
+ [SPECIES_SHROOMISH] = _("SHROOMISH"),
+ [SPECIES_BRELOOM] = _("BRELOOM"),
+ [SPECIES_SPINDA] = _("SPINDA"),
+ [SPECIES_WINGULL] = _("WINGULL"),
+ [SPECIES_PELIPPER] = _("PELIPPER"),
+ [SPECIES_SURSKIT] = _("SURSKIT"),
+ [SPECIES_MASQUERAIN] = _("MASQUERAIN"),
+ [SPECIES_WAILMER] = _("WAILMER"),
+ [SPECIES_WAILORD] = _("WAILORD"),
+ [SPECIES_SKITTY] = _("SKITTY"),
+ [SPECIES_DELCATTY] = _("DELCATTY"),
+ [SPECIES_KECLEON] = _("KECLEON"),
+ [SPECIES_BALTOY] = _("BALTOY"),
+ [SPECIES_CLAYDOL] = _("CLAYDOL"),
+ [SPECIES_NOSEPASS] = _("NOSEPASS"),
+ [SPECIES_TORKOAL] = _("TORKOAL"),
+ [SPECIES_SABLEYE] = _("SABLEYE"),
+ [SPECIES_BARBOACH] = _("BARBOACH"),
+ [SPECIES_WHISCASH] = _("WHISCASH"),
+ [SPECIES_LUVDISC] = _("LUVDISC"),
+ [SPECIES_CORPHISH] = _("CORPHISH"),
+ [SPECIES_CRAWDAUNT] = _("CRAWDAUNT"),
+ [SPECIES_FEEBAS] = _("FEEBAS"),
+ [SPECIES_MILOTIC] = _("MILOTIC"),
+ [SPECIES_CARVANHA] = _("CARVANHA"),
+ [SPECIES_SHARPEDO] = _("SHARPEDO"),
+ [SPECIES_TRAPINCH] = _("TRAPINCH"),
+ [SPECIES_VIBRAVA] = _("VIBRAVA"),
+ [SPECIES_FLYGON] = _("FLYGON"),
+ [SPECIES_MAKUHITA] = _("MAKUHITA"),
+ [SPECIES_HARIYAMA] = _("HARIYAMA"),
+ [SPECIES_ELECTRIKE] = _("ELECTRIKE"),
+ [SPECIES_MANECTRIC] = _("MANECTRIC"),
+ [SPECIES_NUMEL] = _("NUMEL"),
+ [SPECIES_CAMERUPT] = _("CAMERUPT"),
+ [SPECIES_SPHEAL] = _("SPHEAL"),
+ [SPECIES_SEALEO] = _("SEALEO"),
+ [SPECIES_WALREIN] = _("WALREIN"),
+ [SPECIES_CACNEA] = _("CACNEA"),
+ [SPECIES_CACTURNE] = _("CACTURNE"),
+ [SPECIES_SNORUNT] = _("SNORUNT"),
+ [SPECIES_GLALIE] = _("GLALIE"),
+ [SPECIES_LUNATONE] = _("LUNATONE"),
+ [SPECIES_SOLROCK] = _("SOLROCK"),
+ [SPECIES_AZURILL] = _("AZURILL"),
+ [SPECIES_SPOINK] = _("SPOINK"),
+ [SPECIES_GRUMPIG] = _("GRUMPIG"),
+ [SPECIES_PLUSLE] = _("PLUSLE"),
+ [SPECIES_MINUN] = _("MINUN"),
+ [SPECIES_MAWILE] = _("MAWILE"),
+ [SPECIES_MEDITITE] = _("MEDITITE"),
+ [SPECIES_MEDICHAM] = _("MEDICHAM"),
+ [SPECIES_SWABLU] = _("SWABLU"),
+ [SPECIES_ALTARIA] = _("ALTARIA"),
+ [SPECIES_WYNAUT] = _("WYNAUT"),
+ [SPECIES_DUSKULL] = _("DUSKULL"),
+ [SPECIES_DUSCLOPS] = _("DUSCLOPS"),
+ [SPECIES_ROSELIA] = _("ROSELIA"),
+ [SPECIES_SLAKOTH] = _("SLAKOTH"),
+ [SPECIES_VIGOROTH] = _("VIGOROTH"),
+ [SPECIES_SLAKING] = _("SLAKING"),
+ [SPECIES_GULPIN] = _("GULPIN"),
+ [SPECIES_SWALOT] = _("SWALOT"),
+ [SPECIES_TROPIUS] = _("TROPIUS"),
+ [SPECIES_WHISMUR] = _("WHISMUR"),
+ [SPECIES_LOUDRED] = _("LOUDRED"),
+ [SPECIES_EXPLOUD] = _("EXPLOUD"),
+ [SPECIES_CLAMPERL] = _("CLAMPERL"),
+ [SPECIES_HUNTAIL] = _("HUNTAIL"),
+ [SPECIES_GOREBYSS] = _("GOREBYSS"),
+ [SPECIES_ABSOL] = _("ABSOL"),
+ [SPECIES_SHUPPET] = _("SHUPPET"),
+ [SPECIES_BANETTE] = _("BANETTE"),
+ [SPECIES_SEVIPER] = _("SEVIPER"),
+ [SPECIES_ZANGOOSE] = _("ZANGOOSE"),
+ [SPECIES_RELICANTH] = _("RELICANTH"),
+ [SPECIES_ARON] = _("ARON"),
+ [SPECIES_LAIRON] = _("LAIRON"),
+ [SPECIES_AGGRON] = _("AGGRON"),
+ [SPECIES_CASTFORM] = _("CASTFORM"),
+ [SPECIES_VOLBEAT] = _("VOLBEAT"),
+ [SPECIES_ILLUMISE] = _("ILLUMISE"),
+ [SPECIES_LILEEP] = _("LILEEP"),
+ [SPECIES_CRADILY] = _("CRADILY"),
+ [SPECIES_ANORITH] = _("ANORITH"),
+ [SPECIES_ARMALDO] = _("ARMALDO"),
+ [SPECIES_RALTS] = _("RALTS"),
+ [SPECIES_KIRLIA] = _("KIRLIA"),
+ [SPECIES_GARDEVOIR] = _("GARDEVOIR"),
+ [SPECIES_BAGON] = _("BAGON"),
+ [SPECIES_SHELGON] = _("SHELGON"),
+ [SPECIES_SALAMENCE] = _("SALAMENCE"),
+ [SPECIES_BELDUM] = _("BELDUM"),
+ [SPECIES_METANG] = _("METANG"),
+ [SPECIES_METAGROSS] = _("METAGROSS"),
+ [SPECIES_REGIROCK] = _("REGIROCK"),
+ [SPECIES_REGICE] = _("REGICE"),
+ [SPECIES_REGISTEEL] = _("REGISTEEL"),
+ [SPECIES_KYOGRE] = _("KYOGRE"),
+ [SPECIES_GROUDON] = _("GROUDON"),
+ [SPECIES_RAYQUAZA] = _("RAYQUAZA"),
+ [SPECIES_LATIAS] = _("LATIAS"),
+ [SPECIES_LATIOS] = _("LATIOS"),
+ [SPECIES_JIRACHI] = _("JIRACHI"),
+ [SPECIES_DEOXYS] = _("DEOXYS"),
+ [SPECIES_CHIMECHO] = _("CHIMECHO"),
+};
diff --git a/src/data/text/trainer_class_names_de.h b/src/data/text/trainer_class_names_de.h
new file mode 100644
index 000000000..4b5d6491b
--- /dev/null
+++ b/src/data/text/trainer_class_names_de.h
@@ -0,0 +1,60 @@
+const u8 gTrainerClassNames[][13] = {
+ _("{PKMN}-TRAINER"),
+ _("{PKMN}-TRAINER"),
+ _("AQUA BOSS"),
+ _("TEAM AQUA"),
+ _("AQUA VORS."),
+ _("AROMALADY"),
+ _("RUINENMANIAC"),
+ _("INTERVIEWER"),
+ _("PLANSCHER"), // うきわガール (Inner Tube Girl) in Ja
+ _("PLANSCHER"), // うきわボーイ (Inner Tube Boy) in Ja
+ _("ASS-TRAINER"),
+ _("HEXE"),
+ _("LADY"),
+ _("SCHÖNHEIT"),
+ _("SCHNÖSEL"),
+ _("POKéMANIAC"),
+ _("SCHWIMMER"),
+ _("SCHWARZGURT"),
+ _("GITARRIST"),
+ _("HITZKOPF"),
+ _("CAMPER"),
+ _("KÄFERMANIAC"),
+ _("PSYCHO"),
+ _("GENTLEMAN"),
+ _("TOP VIER"),
+ _("LEITER"),
+ _("SCHULKIND"),
+ _("SEN. & JUN."),
+ _("SIHGERS,"),
+ _("POKéFAN"),
+ _("EXPERTE"),
+ _("TEENAGER"),
+ _("CHAMP"),
+ _("ANGLER"),
+ _("TRIATHLET"),
+ _("DRACHENPROFI"),
+ _("VOGELFÄNGER"),
+ _("NINJAJUNGE"),
+ _("KÄMPFERIN"),
+ _("SCHIRMDAME"),
+ _("SCHWIMMERIN"),
+ _("PICKNICKER"),
+ _("ZWIL."),
+ _("MATROSE"),
+ _("SNOWBOARDER"),
+ _("{PKMN}-SAMMLER"),
+ _("{PKMN}-TRAINER"),
+ _("{PKMN}-ZÜCHTER"),
+ _("{PKMN}-RANGER"),
+ _("MAGMA BOSS"),
+ _("TEAM MAGMA"),
+ _("MAGMA VORS."),
+ _("GÖRE"),
+ _("KÄFERSAMMLER"),
+ _("WANDERER"),
+ _("JUNGES GLÜCK"),
+ _("ALTES PAAR"),
+ _("GESCHWISTER"),
+};
diff --git a/src/data/text/trainer_class_names_en.h b/src/data/text/trainer_class_names_en.h
new file mode 100644
index 000000000..1e2a8f754
--- /dev/null
+++ b/src/data/text/trainer_class_names_en.h
@@ -0,0 +1,65 @@
+#ifndef GUARD_TRAINER_CLASS_NAMES_H
+#define GUARD_TRAINER_CLASS_NAMES_H
+
+const u8 gTrainerClassNames[][13] = {
+ _("{PKMN} TRAINER"),
+ _("{PKMN} TRAINER"),
+ _("AQUA LEADER"),
+ _("TEAM AQUA"),
+ _("AQUA ADMIN"),
+ _("AROMA LADY"),
+ _("RUIN MANIAC"),
+ _("INTERVIEWER"),
+ _("TUBER"), // うきわガール (Inner Tube Girl) in Ja
+ _("TUBER"), // うきわボーイ (Inner Tube Boy) in Ja
+ _("COOLTRAINER"),
+ _("HEX MANIAC"),
+ _("LADY"),
+ _("BEAUTY"),
+ _("RICH BOY"),
+ _("POKéMANIAC"),
+ _("SWIMMER♂"),
+ _("BLACK BELT"),
+ _("GUITARIST"),
+ _("KINDLER"),
+ _("CAMPER"),
+ _("BUG MANIAC"),
+ _("PSYCHIC"),
+ _("GENTLEMAN"),
+ _("ELITE FOUR"),
+ _("LEADER"),
+ _("SCHOOL KID"),
+ _("SR. AND JR."),
+ _("WINSTRATE"),
+ _("POKéFAN"),
+ _("EXPERT"),
+ _("YOUNGSTER"),
+ _("CHAMPION"),
+ _("FISHERMAN"),
+ _("TRIATHLETE"),
+ _("DRAGON TAMER"),
+ _("BIRD KEEPER"),
+ _("NINJA BOY"),
+ _("BATTLE GIRL"),
+ _("PARASOL LADY"),
+ _("SWIMMER♀"),
+ _("PICNICKER"),
+ _("TWINS"),
+ _("SAILOR"),
+ _("BOARDER"),
+ _("COLLECTOR"),
+ _("{PKMN} TRAINER"),
+ _("{PKMN} BREEDER"),
+ _("{PKMN} RANGER"),
+ _("MAGMA LEADER"),
+ _("TEAM MAGMA"),
+ _("MAGMA ADMIN"),
+ _("LASS"),
+ _("BUG CATCHER"),
+ _("HIKER"),
+ _("YOUNG COUPLE"),
+ _("OLD COUPLE"),
+ _("SIS AND BRO")
+};
+
+#endif
diff --git a/src/data/trainer_parties.h b/src/data/trainer_parties.h
new file mode 100644
index 000000000..ad6b052df
--- /dev/null
+++ b/src/data/trainer_parties.h
@@ -0,0 +1,9815 @@
+const struct TrainerPartyMember0 gTrainerParty_Archie1[] = {
+ {
+ .iv = 0,
+ .level = 17,
+ .species = SPECIES_HUNTAIL
+ },
+ {
+ .iv = 0,
+ .level = 17,
+ .species = SPECIES_SHARPEDO
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Grunt1[] = {
+ {
+ .iv = 0,
+ .level = 32,
+ .species = SPECIES_POOCHYENA
+ },
+ {
+ .iv = 0,
+ .level = 32,
+ .species = SPECIES_POOCHYENA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Grunt2[] = {
+ {
+ .iv = 0,
+ .level = 30,
+ .species = SPECIES_ZUBAT
+ },
+ {
+ .iv = 0,
+ .level = 30,
+ .species = SPECIES_POOCHYENA
+ },
+ {
+ .iv = 0,
+ .level = 30,
+ .species = SPECIES_CARVANHA
+ },
+ {
+ .iv = 0,
+ .level = 30,
+ .species = SPECIES_POOCHYENA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Grunt3[] = {
+ {
+ .iv = 0,
+ .level = 32,
+ .species = SPECIES_CARVANHA
+ },
+ {
+ .iv = 0,
+ .level = 32,
+ .species = SPECIES_ZUBAT
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Grunt4[] = {
+ {
+ .iv = 0,
+ .level = 33,
+ .species = SPECIES_CARVANHA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Grunt5[] = {
+ {
+ .iv = 0,
+ .level = 37,
+ .species = SPECIES_POOCHYENA
+ },
+ {
+ .iv = 0,
+ .level = 37,
+ .species = SPECIES_CARVANHA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Grunt6[] = {
+ {
+ .iv = 0,
+ .level = 38,
+ .species = SPECIES_CARVANHA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Grunt7[] = {
+ {
+ .iv = 0,
+ .level = 36,
+ .species = SPECIES_POOCHYENA
+ },
+ {
+ .iv = 0,
+ .level = 36,
+ .species = SPECIES_ZUBAT
+ },
+ {
+ .iv = 0,
+ .level = 36,
+ .species = SPECIES_CARVANHA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Grunt8[] = {
+ {
+ .iv = 0,
+ .level = 17,
+ .species = SPECIES_WAILMER
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Grunt9[] = {
+ {
+ .iv = 0,
+ .level = 9,
+ .species = SPECIES_POOCHYENA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Grunt10[] = {
+ {
+ .iv = 0,
+ .level = 9,
+ .species = SPECIES_POOCHYENA
+ },
+ {
+ .iv = 0,
+ .level = 9,
+ .species = SPECIES_POOCHYENA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Grunt11[] = {
+ {
+ .iv = 0,
+ .level = 16,
+ .species = SPECIES_POOCHYENA
+ },
+ {
+ .iv = 0,
+ .level = 16,
+ .species = SPECIES_POOCHYENA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Grunt12[] = {
+ {
+ .iv = 0,
+ .level = 16,
+ .species = SPECIES_POOCHYENA
+ },
+ {
+ .iv = 0,
+ .level = 16,
+ .species = SPECIES_POOCHYENA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Grunt13[] = {
+ {
+ .iv = 0,
+ .level = 20,
+ .species = SPECIES_ZUBAT
+ },
+ {
+ .iv = 0,
+ .level = 20,
+ .species = SPECIES_POOCHYENA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Grunt14[] = {
+ {
+ .iv = 0,
+ .level = 17,
+ .species = SPECIES_ZUBAT
+ },
+ {
+ .iv = 0,
+ .level = 17,
+ .species = SPECIES_POOCHYENA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Grunt15[] = {
+ {
+ .iv = 0,
+ .level = 11,
+ .species = SPECIES_POOCHYENA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Grunt16[] = {
+ {
+ .iv = 0,
+ .level = 27,
+ .species = SPECIES_ZUBAT
+ },
+ {
+ .iv = 0,
+ .level = 27,
+ .species = SPECIES_POOCHYENA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Grunt17[] = {
+ {
+ .iv = 0,
+ .level = 27,
+ .species = SPECIES_POOCHYENA
+ },
+ {
+ .iv = 0,
+ .level = 27,
+ .species = SPECIES_CARVANHA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Grunt18[] = {
+ {
+ .iv = 0,
+ .level = 26,
+ .species = SPECIES_POOCHYENA
+ },
+ {
+ .iv = 0,
+ .level = 26,
+ .species = SPECIES_ZUBAT
+ },
+ {
+ .iv = 0,
+ .level = 26,
+ .species = SPECIES_CARVANHA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Grunt19[] = {
+ {
+ .iv = 0,
+ .level = 15,
+ .species = SPECIES_CARVANHA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Grunt20[] = {
+ {
+ .iv = 0,
+ .level = 14,
+ .species = SPECIES_ZUBAT
+ },
+ {
+ .iv = 0,
+ .level = 14,
+ .species = SPECIES_CARVANHA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Grunt21[] = {
+ {
+ .iv = 0,
+ .level = 17,
+ .species = SPECIES_WAILMER
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Grunt22[] = {
+ {
+ .iv = 0,
+ .level = 30,
+ .species = SPECIES_ZUBAT
+ },
+ {
+ .iv = 0,
+ .level = 30,
+ .species = SPECIES_ZUBAT
+ },
+ {
+ .iv = 0,
+ .level = 30,
+ .species = SPECIES_ZUBAT
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Grunt23[] = {
+ {
+ .iv = 0,
+ .level = 31,
+ .species = SPECIES_POOCHYENA
+ },
+ {
+ .iv = 0,
+ .level = 31,
+ .species = SPECIES_CARVANHA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Grunt24[] = {
+ {
+ .iv = 0,
+ .level = 31,
+ .species = SPECIES_CARVANHA
+ },
+ {
+ .iv = 0,
+ .level = 31,
+ .species = SPECIES_CARVANHA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Grunt25[] = {
+ {
+ .iv = 0,
+ .level = 28,
+ .species = SPECIES_CARVANHA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Grunt26[] = {
+ {
+ .iv = 0,
+ .level = 31,
+ .species = SPECIES_POOCHYENA
+ },
+ {
+ .iv = 0,
+ .level = 31,
+ .species = SPECIES_CARVANHA
+ },
+ {
+ .iv = 0,
+ .level = 31,
+ .species = SPECIES_CARVANHA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Grunt27[] = {
+ {
+ .iv = 0,
+ .level = 33,
+ .species = SPECIES_ZUBAT
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Anonymous1[] = {
+ {
+ .iv = 50,
+ .level = 30,
+ .species = SPECIES_WAILMER
+ },
+ {
+ .iv = 50,
+ .level = 30,
+ .species = SPECIES_PELIPPER
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Matt1[] = {
+ {
+ .iv = 50,
+ .level = 32,
+ .species = SPECIES_CARVANHA
+ },
+ {
+ .iv = 50,
+ .level = 32,
+ .species = SPECIES_MIGHTYENA
+ },
+ {
+ .iv = 50,
+ .level = 32,
+ .species = SPECIES_SHARPEDO
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Matt2[] = {
+ {
+ .iv = 50,
+ .level = 20,
+ .species = SPECIES_CARVANHA
+ },
+ {
+ .iv = 50,
+ .level = 20,
+ .species = SPECIES_POOCHYENA
+ },
+ {
+ .iv = 50,
+ .level = 20,
+ .species = SPECIES_CARVANHA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Shelly1[] = {
+ {
+ .iv = 50,
+ .level = 28,
+ .species = SPECIES_CARVANHA
+ },
+ {
+ .iv = 50,
+ .level = 28,
+ .species = SPECIES_MIGHTYENA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Shelly2[] = {
+ {
+ .iv = 50,
+ .level = 38,
+ .species = SPECIES_SHARPEDO
+ },
+ {
+ .iv = 50,
+ .level = 38,
+ .species = SPECIES_MIGHTYENA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Archie2[] = {
+ {
+ .iv = 150,
+ .level = 41,
+ .species = SPECIES_MIGHTYENA
+ },
+ {
+ .iv = 150,
+ .level = 41,
+ .species = SPECIES_CROBAT
+ },
+ {
+ .iv = 150,
+ .level = 43,
+ .species = SPECIES_SHARPEDO
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Archie3[] = {
+ {
+ .iv = 150,
+ .level = 24,
+ .species = SPECIES_MIGHTYENA
+ },
+ {
+ .iv = 150,
+ .level = 24,
+ .species = SPECIES_GOLBAT
+ },
+ {
+ .iv = 150,
+ .level = 25,
+ .species = SPECIES_SHARPEDO
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Daisy[] = {
+ {
+ .iv = 0,
+ .level = 16,
+ .species = SPECIES_ROSELIA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Rose1[] = {
+ {
+ .iv = 0,
+ .level = 16,
+ .species = SPECIES_SHROOMISH
+ },
+ {
+ .iv = 0,
+ .level = 16,
+ .species = SPECIES_ROSELIA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Lily[] = {
+ {
+ .iv = 0,
+ .level = 17,
+ .species = SPECIES_SHROOMISH
+ },
+ {
+ .iv = 0,
+ .level = 17,
+ .species = SPECIES_ROSELIA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Violet[] = {
+ {
+ .iv = 0,
+ .level = 25,
+ .species = SPECIES_SHROOMISH
+ },
+ {
+ .iv = 0,
+ .level = 25,
+ .species = SPECIES_GLOOM
+ },
+ {
+ .iv = 0,
+ .level = 25,
+ .species = SPECIES_BRELOOM
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Rose2[] = {
+ {
+ .iv = 10,
+ .level = 26,
+ .species = SPECIES_SHROOMISH
+ },
+ {
+ .iv = 10,
+ .level = 26,
+ .species = SPECIES_ROSELIA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Rose3[] = {
+ {
+ .iv = 20,
+ .level = 28,
+ .species = SPECIES_SHROOMISH
+ },
+ {
+ .iv = 20,
+ .level = 28,
+ .species = SPECIES_GLOOM
+ },
+ {
+ .iv = 20,
+ .level = 28,
+ .species = SPECIES_ROSELIA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Rose4[] = {
+ {
+ .iv = 30,
+ .level = 31,
+ .species = SPECIES_SHROOMISH
+ },
+ {
+ .iv = 30,
+ .level = 31,
+ .species = SPECIES_GLOOM
+ },
+ {
+ .iv = 30,
+ .level = 31,
+ .species = SPECIES_ROSELIA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Rose5[] = {
+ {
+ .iv = 40,
+ .level = 34,
+ .species = SPECIES_BRELOOM
+ },
+ {
+ .iv = 40,
+ .level = 34,
+ .species = SPECIES_GLOOM
+ },
+ {
+ .iv = 40,
+ .level = 34,
+ .species = SPECIES_ROSELIA
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Dusty1[] = {
+ {
+ .iv = 50,
+ .level = 24,
+ .species = SPECIES_SANDSLASH,
+ .moves = MOVE_DIG, MOVE_SLASH, MOVE_SAND_ATTACK, MOVE_POISON_STING
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Chip[] = {
+ {
+ .iv = 50,
+ .level = 28,
+ .species = SPECIES_SANDSHREW,
+ .moves = MOVE_DIG, MOVE_SLASH, MOVE_SAND_ATTACK, MOVE_POISON_STING
+ },
+ {
+ .iv = 50,
+ .level = 28,
+ .species = SPECIES_SANDSHREW,
+ .moves = MOVE_DIG, MOVE_SLASH, MOVE_SAND_ATTACK, MOVE_POISON_STING
+ },
+ {
+ .iv = 50,
+ .level = 28,
+ .species = SPECIES_SANDSLASH,
+ .moves = MOVE_DIG, MOVE_SLASH, MOVE_SAND_ATTACK, MOVE_POISON_STING
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Foster[] = {
+ {
+ .iv = 50,
+ .level = 26,
+ .species = SPECIES_SANDSHREW,
+ .moves = MOVE_DIG, MOVE_SLASH, MOVE_SAND_ATTACK, MOVE_POISON_STING
+ },
+ {
+ .iv = 50,
+ .level = 26,
+ .species = SPECIES_SANDSLASH,
+ .moves = MOVE_DIG, MOVE_SLASH, MOVE_SAND_ATTACK, MOVE_POISON_STING
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Dusty2[] = {
+ {
+ .iv = 60,
+ .level = 27,
+ .species = SPECIES_SANDSLASH,
+ .moves = MOVE_DIG, MOVE_SLASH, MOVE_SAND_ATTACK, MOVE_POISON_STING
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Dusty3[] = {
+ {
+ .iv = 70,
+ .level = 30,
+ .species = SPECIES_SANDSLASH,
+ .moves = MOVE_DIG, MOVE_SLASH, MOVE_SAND_ATTACK, MOVE_POISON_STING
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Dusty4[] = {
+ {
+ .iv = 80,
+ .level = 33,
+ .species = SPECIES_SANDSLASH,
+ .moves = MOVE_DIG, MOVE_SLASH, MOVE_SAND_ATTACK, MOVE_POISON_STING
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Dusty5[] = {
+ {
+ .iv = 90,
+ .level = 36,
+ .species = SPECIES_SANDSLASH,
+ .moves = MOVE_DIG, MOVE_SLASH, MOVE_SAND_ATTACK, MOVE_POISON_STING
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_GabbyAndTy1[] = {
+ {
+ .iv = 50,
+ .level = 19,
+ .species = SPECIES_MAGNEMITE
+ },
+ {
+ .iv = 50,
+ .level = 19,
+ .species = SPECIES_WHISMUR
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_GabbyAndTy2[] = {
+ {
+ .iv = 100,
+ .level = 27,
+ .species = SPECIES_MAGNEMITE
+ },
+ {
+ .iv = 100,
+ .level = 27,
+ .species = SPECIES_LOUDRED
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_GabbyAndTy3[] = {
+ {
+ .iv = 150,
+ .level = 30,
+ .species = SPECIES_MAGNETON
+ },
+ {
+ .iv = 150,
+ .level = 30,
+ .species = SPECIES_LOUDRED
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_GabbyAndTy4[] = {
+ {
+ .iv = 200,
+ .level = 33,
+ .species = SPECIES_MAGNETON
+ },
+ {
+ .iv = 200,
+ .level = 33,
+ .species = SPECIES_LOUDRED
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_GabbyAndTy5[] = {
+ {
+ .iv = 250,
+ .level = 36,
+ .species = SPECIES_MAGNETON
+ },
+ {
+ .iv = 250,
+ .level = 36,
+ .species = SPECIES_LOUDRED
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_GabbyAndTy6[] = {
+ {
+ .iv = 250,
+ .level = 39,
+ .species = SPECIES_MAGNETON,
+ .moves = MOVE_SONIC_BOOM, MOVE_THUNDER_WAVE, MOVE_METAL_SOUND, MOVE_THUNDERBOLT
+ },
+ {
+ .iv = 250,
+ .level = 39,
+ .species = SPECIES_EXPLOUD,
+ .moves = MOVE_ASTONISH, MOVE_STOMP, MOVE_SUPERSONIC, MOVE_HYPER_VOICE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Lola1[] = {
+ {
+ .iv = 0,
+ .level = 13,
+ .species = SPECIES_AZURILL
+ },
+ {
+ .iv = 0,
+ .level = 13,
+ .species = SPECIES_AZURILL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Carmen[] = {
+ {
+ .iv = 0,
+ .level = 27,
+ .species = SPECIES_MARILL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Gwen[] = {
+ {
+ .iv = 0,
+ .level = 27,
+ .species = SPECIES_MARILL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Lola2[] = {
+ {
+ .iv = 10,
+ .level = 26,
+ .species = SPECIES_MARILL
+ },
+ {
+ .iv = 10,
+ .level = 26,
+ .species = SPECIES_MARILL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Lola3[] = {
+ {
+ .iv = 20,
+ .level = 29,
+ .species = SPECIES_MARILL
+ },
+ {
+ .iv = 20,
+ .level = 29,
+ .species = SPECIES_MARILL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Lola4[] = {
+ {
+ .iv = 30,
+ .level = 32,
+ .species = SPECIES_MARILL
+ },
+ {
+ .iv = 30,
+ .level = 32,
+ .species = SPECIES_MARILL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Lola5[] = {
+ {
+ .iv = 40,
+ .level = 35,
+ .species = SPECIES_AZUMARILL
+ },
+ {
+ .iv = 40,
+ .level = 35,
+ .species = SPECIES_AZUMARILL
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Ricky1[] = {
+ {
+ .iv = 0,
+ .level = 14,
+ .species = SPECIES_ZIGZAGOON,
+ .moves = MOVE_SAND_ATTACK, MOVE_HEADBUTT, MOVE_TAIL_WHIP, MOVE_SURF
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Simon[] = {
+ {
+ .iv = 0,
+ .level = 12,
+ .species = SPECIES_AZURILL
+ },
+ {
+ .iv = 0,
+ .level = 12,
+ .species = SPECIES_MARILL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Charlie[] = {
+ {
+ .iv = 0,
+ .level = 27,
+ .species = SPECIES_MARILL
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Ricky2[] = {
+ {
+ .iv = 10,
+ .level = 27,
+ .species = SPECIES_LINOONE,
+ .moves = MOVE_SAND_ATTACK, MOVE_PIN_MISSILE, MOVE_TAIL_WHIP, MOVE_SURF
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Ricky3[] = {
+ {
+ .iv = 20,
+ .level = 30,
+ .species = SPECIES_LINOONE,
+ .moves = MOVE_SAND_ATTACK, MOVE_PIN_MISSILE, MOVE_TAIL_WHIP, MOVE_SURF
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Ricky4[] = {
+ {
+ .iv = 30,
+ .level = 33,
+ .species = SPECIES_LINOONE,
+ .moves = MOVE_SAND_ATTACK, MOVE_PIN_MISSILE, MOVE_TAIL_WHIP, MOVE_SURF
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Ricky5[] = {
+ {
+ .iv = 40,
+ .level = 36,
+ .species = SPECIES_LINOONE,
+ .moves = MOVE_SAND_ATTACK, MOVE_PIN_MISSILE, MOVE_TAIL_WHIP, MOVE_SURF
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Randall[] = {
+ {
+ .iv = 100,
+ .level = 27,
+ .species = SPECIES_DELCATTY
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Parker[] = {
+ {
+ .iv = 100,
+ .level = 27,
+ .species = SPECIES_LINOONE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_George[] = {
+ {
+ .iv = 100,
+ .level = 27,
+ .species = SPECIES_LINOONE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Berke[] = {
+ {
+ .iv = 100,
+ .level = 27,
+ .species = SPECIES_ZANGOOSE
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Clyde[] = {
+ {
+ .iv = 100,
+ .level = 29,
+ .species = SPECIES_SWELLOW,
+ .moves = MOVE_FOCUS_ENERGY, MOVE_QUICK_ATTACK, MOVE_WING_ATTACK, MOVE_ENDEAVOR
+ },
+ {
+ .iv = 100,
+ .level = 29,
+ .species = SPECIES_TRAPINCH,
+ .moves = MOVE_BITE, MOVE_DIG, MOVE_FAINT_ATTACK, MOVE_SAND_TOMB
+ },
+ {
+ .iv = 100,
+ .level = 29,
+ .species = SPECIES_WAILMER,
+ .moves = MOVE_ROLLOUT, MOVE_WHIRLPOOL, MOVE_ASTONISH, MOVE_WATER_PULSE
+ },
+ {
+ .iv = 100,
+ .level = 29,
+ .species = SPECIES_MAGNETON,
+ .moves = MOVE_THUNDERBOLT, MOVE_SUPERSONIC, MOVE_THUNDER_WAVE, MOVE_SONIC_BOOM
+ },
+ {
+ .iv = 100,
+ .level = 29,
+ .species = SPECIES_SHIFTRY,
+ .moves = MOVE_GIGA_DRAIN, MOVE_FAINT_ATTACK, MOVE_DOUBLE_TEAM, MOVE_SWAGGER
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Vincent[] = {
+ {
+ .iv = 100,
+ .level = 44,
+ .species = SPECIES_SABLEYE
+ },
+ {
+ .iv = 100,
+ .level = 44,
+ .species = SPECIES_MEDICHAM
+ },
+ {
+ .iv = 100,
+ .level = 44,
+ .species = SPECIES_SHARPEDO
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Leroy[] = {
+ {
+ .iv = 100,
+ .level = 46,
+ .species = SPECIES_MAWILE
+ },
+ {
+ .iv = 100,
+ .level = 46,
+ .species = SPECIES_STARMIE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Wilton1[] = {
+ {
+ .iv = 100,
+ .level = 18,
+ .species = SPECIES_ELECTRIKE
+ },
+ {
+ .iv = 100,
+ .level = 18,
+ .species = SPECIES_WAILMER
+ },
+ {
+ .iv = 100,
+ .level = 18,
+ .species = SPECIES_MAKUHITA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Edgar[] = {
+ {
+ .iv = 100,
+ .level = 44,
+ .species = SPECIES_CACTURNE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Albert[] = {
+ {
+ .iv = 100,
+ .level = 43,
+ .species = SPECIES_MANECTRIC
+ },
+ {
+ .iv = 100,
+ .level = 43,
+ .species = SPECIES_MUK
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Samuel[] = {
+ {
+ .iv = 100,
+ .level = 42,
+ .species = SPECIES_DODRIO
+ },
+ {
+ .iv = 100,
+ .level = 42,
+ .species = SPECIES_LAIRON
+ },
+ {
+ .iv = 100,
+ .level = 42,
+ .species = SPECIES_KADABRA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Vito[] = {
+ {
+ .iv = 100,
+ .level = 42,
+ .species = SPECIES_SWELLOW
+ },
+ {
+ .iv = 100,
+ .level = 42,
+ .species = SPECIES_KADABRA
+ },
+ {
+ .iv = 100,
+ .level = 42,
+ .species = SPECIES_MANECTRIC
+ },
+ {
+ .iv = 100,
+ .level = 42,
+ .species = SPECIES_SHIFTRY
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Owen[] = {
+ {
+ .iv = 100,
+ .level = 42,
+ .species = SPECIES_KECLEON
+ },
+ {
+ .iv = 100,
+ .level = 42,
+ .species = SPECIES_RHYHORN
+ },
+ {
+ .iv = 100,
+ .level = 42,
+ .species = SPECIES_TENTACRUEL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Wilton2[] = {
+ {
+ .iv = 110,
+ .level = 26,
+ .species = SPECIES_ELECTRIKE
+ },
+ {
+ .iv = 110,
+ .level = 26,
+ .species = SPECIES_WAILMER
+ },
+ {
+ .iv = 110,
+ .level = 26,
+ .species = SPECIES_MAKUHITA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Wilton3[] = {
+ {
+ .iv = 120,
+ .level = 29,
+ .species = SPECIES_MANECTRIC
+ },
+ {
+ .iv = 120,
+ .level = 29,
+ .species = SPECIES_WAILMER
+ },
+ {
+ .iv = 120,
+ .level = 29,
+ .species = SPECIES_MAKUHITA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Wilton4[] = {
+ {
+ .iv = 130,
+ .level = 32,
+ .species = SPECIES_MANECTRIC
+ },
+ {
+ .iv = 130,
+ .level = 32,
+ .species = SPECIES_WAILMER
+ },
+ {
+ .iv = 130,
+ .level = 32,
+ .species = SPECIES_MAKUHITA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Wilton5[] = {
+ {
+ .iv = 140,
+ .level = 35,
+ .species = SPECIES_MANECTRIC
+ },
+ {
+ .iv = 140,
+ .level = 35,
+ .species = SPECIES_WAILMER
+ },
+ {
+ .iv = 140,
+ .level = 35,
+ .species = SPECIES_HARIYAMA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Warren[] = {
+ {
+ .iv = 100,
+ .level = 34,
+ .species = SPECIES_GRAVELER
+ },
+ {
+ .iv = 100,
+ .level = 34,
+ .species = SPECIES_MAGCARGO
+ },
+ {
+ .iv = 100,
+ .level = 34,
+ .species = SPECIES_LUDICOLO
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Mary[] = {
+ {
+ .iv = 100,
+ .level = 27,
+ .species = SPECIES_DELCATTY
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Lori[] = {
+ {
+ .iv = 100,
+ .level = 27,
+ .species = SPECIES_LINOONE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Jody[] = {
+ {
+ .iv = 100,
+ .level = 27,
+ .species = SPECIES_ZANGOOSE
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Wendy[] = {
+ {
+ .iv = 100,
+ .level = 31,
+ .species = SPECIES_MAWILE,
+ .moves = MOVE_BATON_PASS, MOVE_FAINT_ATTACK, MOVE_FAKE_TEARS, MOVE_BITE
+ },
+ {
+ .iv = 100,
+ .level = 31,
+ .species = SPECIES_ROSELIA,
+ .moves = MOVE_MEGA_DRAIN, MOVE_MAGICAL_LEAF, MOVE_GRASS_WHISTLE, MOVE_LEECH_SEED
+ },
+ {
+ .iv = 100,
+ .level = 31,
+ .species = SPECIES_PELIPPER,
+ .moves = MOVE_FLY, MOVE_WATER_GUN, MOVE_MIST, MOVE_PROTECT
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Elaine[] = {
+ {
+ .iv = 100,
+ .level = 45,
+ .species = SPECIES_LAIRON
+ },
+ {
+ .iv = 100,
+ .level = 45,
+ .species = SPECIES_MANECTRIC
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Brooke1[] = {
+ {
+ .iv = 100,
+ .level = 18,
+ .species = SPECIES_WINGULL
+ },
+ {
+ .iv = 100,
+ .level = 18,
+ .species = SPECIES_NUMEL
+ },
+ {
+ .iv = 100,
+ .level = 18,
+ .species = SPECIES_ROSELIA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Jennifer[] = {
+ {
+ .iv = 100,
+ .level = 31,
+ .species = SPECIES_MILOTIC
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Hope[] = {
+ {
+ .iv = 100,
+ .level = 44,
+ .species = SPECIES_ROSELIA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Shannon[] = {
+ {
+ .iv = 100,
+ .level = 44,
+ .species = SPECIES_CLAYDOL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Michelle[] = {
+ {
+ .iv = 100,
+ .level = 42,
+ .species = SPECIES_NOSEPASS
+ },
+ {
+ .iv = 100,
+ .level = 42,
+ .species = SPECIES_MEDICHAM
+ },
+ {
+ .iv = 100,
+ .level = 42,
+ .species = SPECIES_LUDICOLO
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Caroline[] = {
+ {
+ .iv = 100,
+ .level = 43,
+ .species = SPECIES_MAWILE
+ },
+ {
+ .iv = 100,
+ .level = 43,
+ .species = SPECIES_SABLEYE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Julie[] = {
+ {
+ .iv = 100,
+ .level = 43,
+ .species = SPECIES_SANDSLASH
+ },
+ {
+ .iv = 100,
+ .level = 43,
+ .species = SPECIES_NINETALES
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Brooke2[] = {
+ {
+ .iv = 110,
+ .level = 26,
+ .species = SPECIES_WINGULL
+ },
+ {
+ .iv = 110,
+ .level = 26,
+ .species = SPECIES_NUMEL
+ },
+ {
+ .iv = 110,
+ .level = 26,
+ .species = SPECIES_ROSELIA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Brooke3[] = {
+ {
+ .iv = 120,
+ .level = 29,
+ .species = SPECIES_PELIPPER
+ },
+ {
+ .iv = 120,
+ .level = 29,
+ .species = SPECIES_NUMEL
+ },
+ {
+ .iv = 120,
+ .level = 29,
+ .species = SPECIES_ROSELIA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Brooke4[] = {
+ {
+ .iv = 130,
+ .level = 32,
+ .species = SPECIES_PELIPPER
+ },
+ {
+ .iv = 130,
+ .level = 32,
+ .species = SPECIES_NUMEL
+ },
+ {
+ .iv = 130,
+ .level = 32,
+ .species = SPECIES_ROSELIA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Brooke5[] = {
+ {
+ .iv = 140,
+ .level = 34,
+ .species = SPECIES_PELIPPER
+ },
+ {
+ .iv = 140,
+ .level = 34,
+ .species = SPECIES_CAMERUPT
+ },
+ {
+ .iv = 140,
+ .level = 34,
+ .species = SPECIES_ROSELIA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Patricia[] = {
+ {
+ .iv = 0,
+ .level = 42,
+ .species = SPECIES_BANETTE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Kindra[] = {
+ {
+ .iv = 0,
+ .level = 31,
+ .species = SPECIES_DUSKULL
+ },
+ {
+ .iv = 0,
+ .level = 31,
+ .species = SPECIES_SHUPPET
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Tammy[] = {
+ {
+ .iv = 0,
+ .level = 30,
+ .species = SPECIES_RALTS
+ },
+ {
+ .iv = 0,
+ .level = 30,
+ .species = SPECIES_DUSKULL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Valerie1[] = {
+ {
+ .iv = 0,
+ .level = 32,
+ .species = SPECIES_SABLEYE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Tasha[] = {
+ {
+ .iv = 0,
+ .level = 31,
+ .species = SPECIES_SHUPPET
+ },
+ {
+ .iv = 0,
+ .level = 31,
+ .species = SPECIES_KADABRA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Valerie2[] = {
+ {
+ .iv = 10,
+ .level = 35,
+ .species = SPECIES_SABLEYE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Valerie3[] = {
+ {
+ .iv = 20,
+ .level = 37,
+ .species = SPECIES_SPOINK
+ },
+ {
+ .iv = 20,
+ .level = 37,
+ .species = SPECIES_SABLEYE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Valerie4[] = {
+ {
+ .iv = 30,
+ .level = 40,
+ .species = SPECIES_SPOINK
+ },
+ {
+ .iv = 30,
+ .level = 40,
+ .species = SPECIES_SABLEYE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Valerie5[] = {
+ {
+ .iv = 40,
+ .level = 42,
+ .species = SPECIES_DUSKULL
+ },
+ {
+ .iv = 40,
+ .level = 42,
+ .species = SPECIES_SABLEYE
+ },
+ {
+ .iv = 40,
+ .level = 42,
+ .species = SPECIES_GRUMPIG
+ }
+};
+
+const struct TrainerPartyMember2 gTrainerParty_Cindy1[] = {
+ {
+ .iv = 0,
+ .level = 7,
+ .species = SPECIES_ZIGZAGOON,
+ .heldItem = ITEM_NUGGET
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Anonymous2[] = {
+ {
+ .iv = 0,
+ .level = 18,
+ .species = SPECIES_SWABLU
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Brianna1[] = {
+ {
+ .iv = 0,
+ .level = 10,
+ .species = SPECIES_WYNAUT,
+ .moves = MOVE_CHARM, MOVE_ENCORE, MOVE_NONE, MOVE_NONE
+ },
+ {
+ .iv = 0,
+ .level = 10,
+ .species = SPECIES_TAILLOW,
+ .moves = MOVE_QUICK_ATTACK, MOVE_GROWL, MOVE_NONE, MOVE_NONE
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Cindy2[] = {
+ {
+ .iv = 0,
+ .level = 11,
+ .species = SPECIES_ZIGZAGOON,
+ .moves = MOVE_TACKLE, MOVE_TAIL_WHIP, MOVE_NONE, MOVE_NONE
+ }
+};
+
+const struct TrainerPartyMember2 gTrainerParty_Brianna2[] = {
+ {
+ .iv = 100,
+ .level = 41,
+ .species = SPECIES_SEAKING,
+ .heldItem = ITEM_NUGGET
+ }
+};
+
+const struct TrainerPartyMember2 gTrainerParty_Anette[] = {
+ {
+ .iv = 100,
+ .level = 45,
+ .species = SPECIES_ROSELIA,
+ .heldItem = ITEM_NUGGET
+ }
+};
+
+const struct TrainerPartyMember2 gTrainerParty_Cindy3[] = {
+ {
+ .iv = 10,
+ .level = 27,
+ .species = SPECIES_LINOONE,
+ .heldItem = ITEM_NUGGET
+ }
+};
+
+const struct TrainerPartyMember2 gTrainerParty_Cindy4[] = {
+ {
+ .iv = 20,
+ .level = 30,
+ .species = SPECIES_LINOONE,
+ .heldItem = ITEM_NUGGET
+ }
+};
+
+const struct TrainerPartyMember2 gTrainerParty_Cindy5[] = {
+ {
+ .iv = 30,
+ .level = 33,
+ .species = SPECIES_LINOONE,
+ .heldItem = ITEM_NUGGET
+ }
+};
+
+const struct TrainerPartyMember3 gTrainerParty_Cindy6[] = {
+ {
+ .iv = 40,
+ .level = 36,
+ .species = SPECIES_LINOONE,
+ .heldItem = ITEM_NUGGET,
+ .moves = MOVE_FURY_SWIPES, MOVE_MUD_SPORT, MOVE_ODOR_SLEUTH, MOVE_SAND_ATTACK
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Melissa[] = {
+ {
+ .iv = 0,
+ .level = 22,
+ .species = SPECIES_MARILL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Sheila[] = {
+ {
+ .iv = 0,
+ .level = 22,
+ .species = SPECIES_SHROOMISH
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Shirley[] = {
+ {
+ .iv = 0,
+ .level = 22,
+ .species = SPECIES_NUMEL
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Jessica1[] = {
+ {
+ .iv = 0,
+ .level = 30,
+ .species = SPECIES_KECLEON,
+ .moves = MOVE_BIND, MOVE_LICK, MOVE_FURY_SWIPES, MOVE_FAINT_ATTACK
+ },
+ {
+ .iv = 0,
+ .level = 30,
+ .species = SPECIES_SEVIPER,
+ .moves = MOVE_POISON_TAIL, MOVE_SCREECH, MOVE_GLARE, MOVE_CRUNCH
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Connie[] = {
+ {
+ .iv = 100,
+ .level = 40,
+ .species = SPECIES_GOLDEEN
+ },
+ {
+ .iv = 100,
+ .level = 40,
+ .species = SPECIES_WAILMER
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Bridget[] = {
+ {
+ .iv = 100,
+ .level = 41,
+ .species = SPECIES_AZUMARILL
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Olivia[] = {
+ {
+ .iv = 100,
+ .level = 41,
+ .species = SPECIES_LOMBRE,
+ .moves = MOVE_UPROAR, MOVE_FURY_SWIPES, MOVE_FAKE_OUT, MOVE_WATER_GUN
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Tiffany[] = {
+ {
+ .iv = 100,
+ .level = 39,
+ .species = SPECIES_CARVANHA
+ },
+ {
+ .iv = 100,
+ .level = 39,
+ .species = SPECIES_WAILMER
+ },
+ {
+ .iv = 100,
+ .level = 39,
+ .species = SPECIES_SHARPEDO
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Jessica2[] = {
+ {
+ .iv = 10,
+ .level = 33,
+ .species = SPECIES_KECLEON,
+ .moves = MOVE_BIND, MOVE_LICK, MOVE_FURY_SWIPES, MOVE_FAINT_ATTACK
+ },
+ {
+ .iv = 10,
+ .level = 33,
+ .species = SPECIES_SEVIPER,
+ .moves = MOVE_POISON_TAIL, MOVE_SCREECH, MOVE_GLARE, MOVE_CRUNCH
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Jessica3[] = {
+ {
+ .iv = 20,
+ .level = 36,
+ .species = SPECIES_KECLEON,
+ .moves = MOVE_BIND, MOVE_LICK, MOVE_FURY_SWIPES, MOVE_FAINT_ATTACK
+ },
+ {
+ .iv = 20,
+ .level = 36,
+ .species = SPECIES_SEVIPER,
+ .moves = MOVE_POISON_TAIL, MOVE_SCREECH, MOVE_GLARE, MOVE_CRUNCH
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Jessica4[] = {
+ {
+ .iv = 30,
+ .level = 39,
+ .species = SPECIES_KECLEON,
+ .moves = MOVE_BIND, MOVE_LICK, MOVE_FURY_SWIPES, MOVE_FAINT_ATTACK
+ },
+ {
+ .iv = 30,
+ .level = 39,
+ .species = SPECIES_SEVIPER,
+ .moves = MOVE_POISON_TAIL, MOVE_SCREECH, MOVE_GLARE, MOVE_CRUNCH
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Jessica5[] = {
+ {
+ .iv = 40,
+ .level = 42,
+ .species = SPECIES_KECLEON,
+ .moves = MOVE_BIND, MOVE_LICK, MOVE_FURY_SWIPES, MOVE_FAINT_ATTACK
+ },
+ {
+ .iv = 40,
+ .level = 42,
+ .species = SPECIES_SEVIPER,
+ .moves = MOVE_POISON_TAIL, MOVE_SCREECH, MOVE_GLARE, MOVE_CRUNCH
+ }
+};
+
+const struct TrainerPartyMember2 gTrainerParty_Winston1[] = {
+ {
+ .iv = 0,
+ .level = 7,
+ .species = SPECIES_ZIGZAGOON,
+ .heldItem = ITEM_NUGGET
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Anonymous3[] = {
+ {
+ .iv = 0,
+ .level = 18,
+ .species = SPECIES_NUMEL
+ }
+};
+
+const struct TrainerPartyMember2 gTrainerParty_Garret[] = {
+ {
+ .iv = 0,
+ .level = 45,
+ .species = SPECIES_AZUMARILL,
+ .heldItem = ITEM_NUGGET
+ }
+};
+
+const struct TrainerPartyMember2 gTrainerParty_Winston2[] = {
+ {
+ .iv = 0,
+ .level = 27,
+ .species = SPECIES_LINOONE,
+ .heldItem = ITEM_NUGGET
+ }
+};
+
+const struct TrainerPartyMember2 gTrainerParty_Winston3[] = {
+ {
+ .iv = 0,
+ .level = 30,
+ .species = SPECIES_LINOONE,
+ .heldItem = ITEM_NUGGET
+ }
+};
+
+const struct TrainerPartyMember2 gTrainerParty_Winston4[] = {
+ {
+ .iv = 0,
+ .level = 33,
+ .species = SPECIES_LINOONE,
+ .heldItem = ITEM_NUGGET
+ }
+};
+
+const struct TrainerPartyMember3 gTrainerParty_Winston5[] = {
+ {
+ .iv = 0,
+ .level = 36,
+ .species = SPECIES_LINOONE,
+ .heldItem = ITEM_NUGGET,
+ .moves = MOVE_FURY_SWIPES, MOVE_MUD_SPORT, MOVE_ODOR_SLEUTH, MOVE_SAND_ATTACK
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Steve1[] = {
+ {
+ .iv = 0,
+ .level = 20,
+ .species = SPECIES_ARON
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Chris[] = {
+ {
+ .iv = 0,
+ .level = 23,
+ .species = SPECIES_LAIRON
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Mark[] = {
+ {
+ .iv = 0,
+ .level = 32,
+ .species = SPECIES_LAIRON
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Kenn[] = {
+ {
+ .iv = 0,
+ .level = 25,
+ .species = SPECIES_LAIRON
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Steve2[] = {
+ {
+ .iv = 10,
+ .level = 27,
+ .species = SPECIES_LAIRON
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Steve3[] = {
+ {
+ .iv = 20,
+ .level = 29,
+ .species = SPECIES_LAIRON
+ },
+ {
+ .iv = 20,
+ .level = 29,
+ .species = SPECIES_RHYHORN
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Steve4[] = {
+ {
+ .iv = 30,
+ .level = 32,
+ .species = SPECIES_LAIRON
+ },
+ {
+ .iv = 30,
+ .level = 32,
+ .species = SPECIES_RHYHORN
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Steve5[] = {
+ {
+ .iv = 40,
+ .level = 35,
+ .species = SPECIES_AGGRON
+ },
+ {
+ .iv = 40,
+ .level = 35,
+ .species = SPECIES_RHYDON
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Luis[] = {
+ {
+ .iv = 0,
+ .level = 27,
+ .species = SPECIES_CARVANHA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Austin[] = {
+ {
+ .iv = 0,
+ .level = 25,
+ .species = SPECIES_MAGIKARP
+ },
+ {
+ .iv = 0,
+ .level = 25,
+ .species = SPECIES_TENTACOOL
+ },
+ {
+ .iv = 0,
+ .level = 25,
+ .species = SPECIES_WINGULL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Douglas[] = {
+ {
+ .iv = 0,
+ .level = 26,
+ .species = SPECIES_TENTACOOL
+ },
+ {
+ .iv = 0,
+ .level = 26,
+ .species = SPECIES_TENTACOOL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Darrin[] = {
+ {
+ .iv = 0,
+ .level = 27,
+ .species = SPECIES_TENTACOOL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Tony1[] = {
+ {
+ .iv = 0,
+ .level = 27,
+ .species = SPECIES_CARVANHA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Jerome[] = {
+ {
+ .iv = 0,
+ .level = 26,
+ .species = SPECIES_TENTACOOL
+ },
+ {
+ .iv = 0,
+ .level = 26,
+ .species = SPECIES_WINGULL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Matthew[] = {
+ {
+ .iv = 0,
+ .level = 27,
+ .species = SPECIES_CARVANHA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_David[] = {
+ {
+ .iv = 0,
+ .level = 26,
+ .species = SPECIES_WINGULL
+ },
+ {
+ .iv = 0,
+ .level = 26,
+ .species = SPECIES_CARVANHA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Spencer[] = {
+ {
+ .iv = 0,
+ .level = 33,
+ .species = SPECIES_TENTACOOL
+ },
+ {
+ .iv = 0,
+ .level = 33,
+ .species = SPECIES_TENTACOOL
+ },
+ {
+ .iv = 0,
+ .level = 33,
+ .species = SPECIES_TENTACOOL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Roland[] = {
+ {
+ .iv = 0,
+ .level = 35,
+ .species = SPECIES_CARVANHA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Cody[] = {
+ {
+ .iv = 0,
+ .level = 34,
+ .species = SPECIES_STARYU
+ },
+ {
+ .iv = 0,
+ .level = 34,
+ .species = SPECIES_WINGULL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Stan[] = {
+ {
+ .iv = 0,
+ .level = 35,
+ .species = SPECIES_HORSEA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Barry[] = {
+ {
+ .iv = 0,
+ .level = 35,
+ .species = SPECIES_GYARADOS
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Dean[] = {
+ {
+ .iv = 0,
+ .level = 33,
+ .species = SPECIES_CARVANHA
+ },
+ {
+ .iv = 0,
+ .level = 33,
+ .species = SPECIES_WINGULL
+ },
+ {
+ .iv = 0,
+ .level = 33,
+ .species = SPECIES_CARVANHA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Rodney[] = {
+ {
+ .iv = 0,
+ .level = 34,
+ .species = SPECIES_HORSEA
+ },
+ {
+ .iv = 0,
+ .level = 34,
+ .species = SPECIES_GYARADOS
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Richard[] = {
+ {
+ .iv = 0,
+ .level = 35,
+ .species = SPECIES_PELIPPER
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Herman[] = {
+ {
+ .iv = 0,
+ .level = 34,
+ .species = SPECIES_WAILMER
+ },
+ {
+ .iv = 0,
+ .level = 34,
+ .species = SPECIES_TENTACRUEL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Anonymous4[] = {
+ {
+ .iv = 0,
+ .level = 38,
+ .species = SPECIES_SHARPEDO
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Gilbert[] = {
+ {
+ .iv = 0,
+ .level = 35,
+ .species = SPECIES_SHARPEDO
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Franklin[] = {
+ {
+ .iv = 0,
+ .level = 34,
+ .species = SPECIES_TENTACRUEL
+ },
+ {
+ .iv = 0,
+ .level = 34,
+ .species = SPECIES_SEALEO
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Danny[] = {
+ {
+ .iv = 0,
+ .level = 37,
+ .species = SPECIES_TENTACRUEL
+ },
+ {
+ .iv = 0,
+ .level = 37,
+ .species = SPECIES_WAILMER
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Jack[] = {
+ {
+ .iv = 0,
+ .level = 34,
+ .species = SPECIES_STARYU
+ },
+ {
+ .iv = 0,
+ .level = 34,
+ .species = SPECIES_GYARADOS
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Dudley[] = {
+ {
+ .iv = 0,
+ .level = 33,
+ .species = SPECIES_TENTACOOL
+ },
+ {
+ .iv = 0,
+ .level = 33,
+ .species = SPECIES_WINGULL
+ },
+ {
+ .iv = 0,
+ .level = 33,
+ .species = SPECIES_TENTACRUEL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Chad[] = {
+ {
+ .iv = 0,
+ .level = 34,
+ .species = SPECIES_WINGULL
+ },
+ {
+ .iv = 0,
+ .level = 34,
+ .species = SPECIES_WAILMER
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Tony2[] = {
+ {
+ .iv = 10,
+ .level = 30,
+ .species = SPECIES_SHARPEDO
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Tony3[] = {
+ {
+ .iv = 20,
+ .level = 33,
+ .species = SPECIES_SHARPEDO
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Tony4[] = {
+ {
+ .iv = 30,
+ .level = 34,
+ .species = SPECIES_STARYU
+ },
+ {
+ .iv = 30,
+ .level = 36,
+ .species = SPECIES_SHARPEDO
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Tony5[] = {
+ {
+ .iv = 40,
+ .level = 37,
+ .species = SPECIES_STARMIE
+ },
+ {
+ .iv = 40,
+ .level = 39,
+ .species = SPECIES_SHARPEDO
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Hideki[] = {
+ {
+ .iv = 100,
+ .level = 14,
+ .species = SPECIES_MACHOP
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Hitoshi[] = {
+ {
+ .iv = 100,
+ .level = 34,
+ .species = SPECIES_MACHOKE
+ },
+ {
+ .iv = 100,
+ .level = 34,
+ .species = SPECIES_MACHOKE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Kiyo[] = {
+ {
+ .iv = 100,
+ .level = 33,
+ .species = SPECIES_MAKUHITA
+ },
+ {
+ .iv = 100,
+ .level = 33,
+ .species = SPECIES_MAKUHITA
+ },
+ {
+ .iv = 100,
+ .level = 33,
+ .species = SPECIES_MACHOKE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Koichi[] = {
+ {
+ .iv = 100,
+ .level = 26,
+ .species = SPECIES_MACHOP
+ },
+ {
+ .iv = 100,
+ .level = 26,
+ .species = SPECIES_MACHOKE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Nob1[] = {
+ {
+ .iv = 100,
+ .level = 20,
+ .species = SPECIES_MACHOP
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Nob2[] = {
+ {
+ .iv = 110,
+ .level = 27,
+ .species = SPECIES_MACHOKE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Nob3[] = {
+ {
+ .iv = 120,
+ .level = 29,
+ .species = SPECIES_MACHOP
+ },
+ {
+ .iv = 120,
+ .level = 29,
+ .species = SPECIES_MACHOKE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Nob4[] = {
+ {
+ .iv = 130,
+ .level = 31,
+ .species = SPECIES_MACHOP
+ },
+ {
+ .iv = 130,
+ .level = 31,
+ .species = SPECIES_MACHOKE
+ },
+ {
+ .iv = 130,
+ .level = 31,
+ .species = SPECIES_MACHOKE
+ }
+};
+
+const struct TrainerPartyMember2 gTrainerParty_Nob5[] = {
+ {
+ .iv = 140,
+ .level = 33,
+ .species = SPECIES_MACHOP,
+ .heldItem = ITEM_NONE
+ },
+ {
+ .iv = 140,
+ .level = 33,
+ .species = SPECIES_MACHOKE,
+ .heldItem = ITEM_NONE
+ },
+ {
+ .iv = 140,
+ .level = 33,
+ .species = SPECIES_MACHOKE,
+ .heldItem = ITEM_NONE
+ },
+ {
+ .iv = 140,
+ .level = 33,
+ .species = SPECIES_MACHAMP,
+ .heldItem = ITEM_BLACK_BELT
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Yuji[] = {
+ {
+ .iv = 100,
+ .level = 26,
+ .species = SPECIES_MAKUHITA
+ },
+ {
+ .iv = 100,
+ .level = 26,
+ .species = SPECIES_MACHOKE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Daisuke[] = {
+ {
+ .iv = 100,
+ .level = 19,
+ .species = SPECIES_MACHOP
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Atsushi[] = {
+ {
+ .iv = 100,
+ .level = 30,
+ .species = SPECIES_MAKUHITA
+ },
+ {
+ .iv = 100,
+ .level = 30,
+ .species = SPECIES_MACHOKE
+ },
+ {
+ .iv = 100,
+ .level = 30,
+ .species = SPECIES_HARIYAMA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Kirk[] = {
+ {
+ .iv = 100,
+ .level = 18,
+ .species = SPECIES_ELECTRIKE
+ },
+ {
+ .iv = 100,
+ .level = 18,
+ .species = SPECIES_MAGNEMITE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Scott[] = {
+ {
+ .iv = 100,
+ .level = 19,
+ .species = SPECIES_ELECTRIKE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Harvey[] = {
+ {
+ .iv = 100,
+ .level = 18,
+ .species = SPECIES_MAGNEMITE
+ },
+ {
+ .iv = 100,
+ .level = 18,
+ .species = SPECIES_ELECTRIKE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Shawn[] = {
+ {
+ .iv = 100,
+ .level = 17,
+ .species = SPECIES_VOLTORB
+ },
+ {
+ .iv = 100,
+ .level = 17,
+ .species = SPECIES_VOLTORB
+ },
+ {
+ .iv = 100,
+ .level = 17,
+ .species = SPECIES_VOLTORB
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Randy[] = {
+ {
+ .iv = 0,
+ .level = 13,
+ .species = SPECIES_ELECTRIKE
+ },
+ {
+ .iv = 0,
+ .level = 13,
+ .species = SPECIES_ELECTRIKE
+ },
+ {
+ .iv = 0,
+ .level = 13,
+ .species = SPECIES_ELECTRIKE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Dalton1[] = {
+ {
+ .iv = 0,
+ .level = 15,
+ .species = SPECIES_MAGNEMITE
+ },
+ {
+ .iv = 0,
+ .level = 15,
+ .species = SPECIES_WHISMUR
+ },
+ {
+ .iv = 0,
+ .level = 15,
+ .species = SPECIES_MAGNEMITE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Dalton2[] = {
+ {
+ .iv = 10,
+ .level = 25,
+ .species = SPECIES_MAGNEMITE
+ },
+ {
+ .iv = 10,
+ .level = 25,
+ .species = SPECIES_WHISMUR
+ },
+ {
+ .iv = 10,
+ .level = 25,
+ .species = SPECIES_MAGNEMITE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Dalton3[] = {
+ {
+ .iv = 20,
+ .level = 28,
+ .species = SPECIES_MAGNEMITE
+ },
+ {
+ .iv = 20,
+ .level = 28,
+ .species = SPECIES_LOUDRED
+ },
+ {
+ .iv = 20,
+ .level = 28,
+ .species = SPECIES_MAGNEMITE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Dalton4[] = {
+ {
+ .iv = 30,
+ .level = 31,
+ .species = SPECIES_MAGNETON
+ },
+ {
+ .iv = 30,
+ .level = 31,
+ .species = SPECIES_LOUDRED
+ },
+ {
+ .iv = 30,
+ .level = 31,
+ .species = SPECIES_MAGNETON
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Dalton5[] = {
+ {
+ .iv = 40,
+ .level = 34,
+ .species = SPECIES_MAGNETON
+ },
+ {
+ .iv = 40,
+ .level = 34,
+ .species = SPECIES_EXPLOUD
+ },
+ {
+ .iv = 40,
+ .level = 34,
+ .species = SPECIES_MAGNETON
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Cole[] = {
+ {
+ .iv = 100,
+ .level = 22,
+ .species = SPECIES_SLUGMA
+ },
+ {
+ .iv = 100,
+ .level = 22,
+ .species = SPECIES_SLUGMA
+ },
+ {
+ .iv = 100,
+ .level = 22,
+ .species = SPECIES_NUMEL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Flint[] = {
+ {
+ .iv = 100,
+ .level = 24,
+ .species = SPECIES_SLUGMA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Axle[] = {
+ {
+ .iv = 100,
+ .level = 23,
+ .species = SPECIES_NUMEL
+ },
+ {
+ .iv = 100,
+ .level = 23,
+ .species = SPECIES_SLUGMA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Jake[] = {
+ {
+ .iv = 100,
+ .level = 24,
+ .species = SPECIES_NUMEL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Andy[] = {
+ {
+ .iv = 100,
+ .level = 23,
+ .species = SPECIES_SLUGMA
+ },
+ {
+ .iv = 100,
+ .level = 23,
+ .species = SPECIES_NUMEL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Bernie1[] = {
+ {
+ .iv = 0,
+ .level = 19,
+ .species = SPECIES_SLUGMA
+ },
+ {
+ .iv = 0,
+ .level = 19,
+ .species = SPECIES_WINGULL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Bernie2[] = {
+ {
+ .iv = 10,
+ .level = 26,
+ .species = SPECIES_SLUGMA
+ },
+ {
+ .iv = 10,
+ .level = 26,
+ .species = SPECIES_WINGULL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Bernie3[] = {
+ {
+ .iv = 20,
+ .level = 29,
+ .species = SPECIES_SLUGMA
+ },
+ {
+ .iv = 20,
+ .level = 29,
+ .species = SPECIES_PELIPPER
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Bernie4[] = {
+ {
+ .iv = 30,
+ .level = 32,
+ .species = SPECIES_SLUGMA
+ },
+ {
+ .iv = 30,
+ .level = 32,
+ .species = SPECIES_PELIPPER
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Bernie5[] = {
+ {
+ .iv = 40,
+ .level = 35,
+ .species = SPECIES_MAGCARGO
+ },
+ {
+ .iv = 40,
+ .level = 35,
+ .species = SPECIES_PELIPPER
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Drew[] = {
+ {
+ .iv = 0,
+ .level = 24,
+ .species = SPECIES_SANDSHREW,
+ .moves = MOVE_DIG, MOVE_SAND_ATTACK, MOVE_POISON_STING, MOVE_SLASH
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Cliff[] = {
+ {
+ .iv = 0,
+ .level = 22,
+ .species = SPECIES_BALTOY,
+ .moves = MOVE_RAPID_SPIN, MOVE_MUD_SLAP, MOVE_PSYBEAM, MOVE_ROCK_TOMB
+ },
+ {
+ .iv = 0,
+ .level = 22,
+ .species = SPECIES_SANDSHREW,
+ .moves = MOVE_POISON_STING, MOVE_SAND_ATTACK, MOVE_SCRATCH, MOVE_DIG
+ },
+ {
+ .iv = 0,
+ .level = 22,
+ .species = SPECIES_BALTOY,
+ .moves = MOVE_RAPID_SPIN, MOVE_MUD_SLAP, MOVE_PSYBEAM, MOVE_ROCK_TOMB
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Larry[] = {
+ {
+ .iv = 0,
+ .level = 18,
+ .species = SPECIES_ZIGZAGOON
+ },
+ {
+ .iv = 0,
+ .level = 18,
+ .species = SPECIES_NUZLEAF
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Shane[] = {
+ {
+ .iv = 0,
+ .level = 19,
+ .species = SPECIES_SANDSHREW
+ },
+ {
+ .iv = 0,
+ .level = 19,
+ .species = SPECIES_NUZLEAF
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Justin[] = {
+ {
+ .iv = 0,
+ .level = 24,
+ .species = SPECIES_KECLEON
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Ethan1[] = {
+ {
+ .iv = 0,
+ .level = 21,
+ .species = SPECIES_ZIGZAGOON
+ },
+ {
+ .iv = 0,
+ .level = 21,
+ .species = SPECIES_TAILLOW
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Jeff[] = {
+ {
+ .iv = 0,
+ .level = 9,
+ .species = SPECIES_TAILLOW
+ },
+ {
+ .iv = 0,
+ .level = 9,
+ .species = SPECIES_KECLEON
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Travis[] = {
+ {
+ .iv = 0,
+ .level = 19,
+ .species = SPECIES_SANDSHREW
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Ethan2[] = {
+ {
+ .iv = 10,
+ .level = 26,
+ .species = SPECIES_ZIGZAGOON
+ },
+ {
+ .iv = 10,
+ .level = 26,
+ .species = SPECIES_TAILLOW
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Ethan3[] = {
+ {
+ .iv = 20,
+ .level = 29,
+ .species = SPECIES_LINOONE
+ },
+ {
+ .iv = 20,
+ .level = 29,
+ .species = SPECIES_SWELLOW
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Ethan4[] = {
+ {
+ .iv = 30,
+ .level = 31,
+ .species = SPECIES_SANDSHREW
+ },
+ {
+ .iv = 30,
+ .level = 31,
+ .species = SPECIES_SWELLOW
+ },
+ {
+ .iv = 30,
+ .level = 31,
+ .species = SPECIES_LINOONE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Ethan5[] = {
+ {
+ .iv = 40,
+ .level = 34,
+ .species = SPECIES_SWELLOW
+ },
+ {
+ .iv = 40,
+ .level = 34,
+ .species = SPECIES_SANDSLASH
+ },
+ {
+ .iv = 40,
+ .level = 34,
+ .species = SPECIES_LINOONE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Brent[] = {
+ {
+ .iv = 100,
+ .level = 27,
+ .species = SPECIES_SURSKIT
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Donald[] = {
+ {
+ .iv = 100,
+ .level = 25,
+ .species = SPECIES_WURMPLE
+ },
+ {
+ .iv = 100,
+ .level = 25,
+ .species = SPECIES_SILCOON
+ },
+ {
+ .iv = 100,
+ .level = 25,
+ .species = SPECIES_BEAUTIFLY
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Taylor[] = {
+ {
+ .iv = 100,
+ .level = 25,
+ .species = SPECIES_WURMPLE
+ },
+ {
+ .iv = 100,
+ .level = 25,
+ .species = SPECIES_CASCOON
+ },
+ {
+ .iv = 100,
+ .level = 25,
+ .species = SPECIES_DUSTOX
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Brandon1[] = {
+ {
+ .iv = 0,
+ .level = 28,
+ .species = SPECIES_SURSKIT
+ },
+ {
+ .iv = 0,
+ .level = 28,
+ .species = SPECIES_SURSKIT
+ },
+ {
+ .iv = 0,
+ .level = 28,
+ .species = SPECIES_SURSKIT
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Derek[] = {
+ {
+ .iv = 100,
+ .level = 15,
+ .species = SPECIES_NINCADA
+ },
+ {
+ .iv = 150,
+ .level = 15,
+ .species = SPECIES_DUSTOX
+ },
+ {
+ .iv = 150,
+ .level = 15,
+ .species = SPECIES_BEAUTIFLY
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Brandon2[] = {
+ {
+ .iv = 10,
+ .level = 31,
+ .species = SPECIES_SURSKIT
+ },
+ {
+ .iv = 10,
+ .level = 31,
+ .species = SPECIES_SURSKIT
+ },
+ {
+ .iv = 10,
+ .level = 31,
+ .species = SPECIES_SURSKIT
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Brandon3[] = {
+ {
+ .iv = 20,
+ .level = 34,
+ .species = SPECIES_SURSKIT
+ },
+ {
+ .iv = 20,
+ .level = 34,
+ .species = SPECIES_SURSKIT
+ },
+ {
+ .iv = 20,
+ .level = 34,
+ .species = SPECIES_MASQUERAIN
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Brandon4[] = {
+ {
+ .iv = 30,
+ .level = 36,
+ .species = SPECIES_SURSKIT
+ },
+ {
+ .iv = 30,
+ .level = 36,
+ .species = SPECIES_WURMPLE
+ },
+ {
+ .iv = 30,
+ .level = 36,
+ .species = SPECIES_SURSKIT
+ },
+ {
+ .iv = 30,
+ .level = 36,
+ .species = SPECIES_MASQUERAIN
+ }
+};
+
+const struct TrainerPartyMember2 gTrainerParty_Brandon5[] = {
+ {
+ .iv = 40,
+ .level = 38,
+ .species = SPECIES_SURSKIT,
+ .heldItem = ITEM_NONE
+ },
+ {
+ .iv = 40,
+ .level = 38,
+ .species = SPECIES_DUSTOX,
+ .heldItem = ITEM_NONE
+ },
+ {
+ .iv = 40,
+ .level = 38,
+ .species = SPECIES_SURSKIT,
+ .heldItem = ITEM_NONE
+ },
+ {
+ .iv = 40,
+ .level = 38,
+ .species = SPECIES_MASQUERAIN,
+ .heldItem = ITEM_SILVER_POWDER
+ },
+ {
+ .iv = 40,
+ .level = 38,
+ .species = SPECIES_BEAUTIFLY,
+ .heldItem = ITEM_NONE
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Edward[] = {
+ {
+ .iv = 0,
+ .level = 16,
+ .species = SPECIES_ABRA,
+ .moves = MOVE_HIDDEN_POWER, MOVE_NONE, MOVE_NONE, MOVE_NONE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Preston[] = {
+ {
+ .iv = 100,
+ .level = 37,
+ .species = SPECIES_KIRLIA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Virgil[] = {
+ {
+ .iv = 100,
+ .level = 36,
+ .species = SPECIES_RALTS
+ },
+ {
+ .iv = 100,
+ .level = 36,
+ .species = SPECIES_KADABRA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Fritz[] = {
+ {
+ .iv = 100,
+ .level = 35,
+ .species = SPECIES_NATU
+ },
+ {
+ .iv = 100,
+ .level = 35,
+ .species = SPECIES_GIRAFARIG
+ },
+ {
+ .iv = 100,
+ .level = 35,
+ .species = SPECIES_KADABRA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_William[] = {
+ {
+ .iv = 0,
+ .level = 31,
+ .species = SPECIES_RALTS
+ },
+ {
+ .iv = 0,
+ .level = 31,
+ .species = SPECIES_KIRLIA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Joshua[] = {
+ {
+ .iv = 0,
+ .level = 41,
+ .species = SPECIES_KADABRA
+ },
+ {
+ .iv = 0,
+ .level = 41,
+ .species = SPECIES_SOLROCK
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Cameron1[] = {
+ {
+ .iv = 0,
+ .level = 31,
+ .species = SPECIES_KADABRA
+ },
+ {
+ .iv = 0,
+ .level = 31,
+ .species = SPECIES_SOLROCK
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Cameron2[] = {
+ {
+ .iv = 10,
+ .level = 34,
+ .species = SPECIES_KADABRA
+ },
+ {
+ .iv = 10,
+ .level = 34,
+ .species = SPECIES_SOLROCK
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Cameron3[] = {
+ {
+ .iv = 20,
+ .level = 37,
+ .species = SPECIES_KADABRA
+ },
+ {
+ .iv = 20,
+ .level = 37,
+ .species = SPECIES_SOLROCK
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Cameron4[] = {
+ {
+ .iv = 30,
+ .level = 40,
+ .species = SPECIES_KADABRA
+ },
+ {
+ .iv = 30,
+ .level = 40,
+ .species = SPECIES_SOLROCK
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Cameron5[] = {
+ {
+ .iv = 40,
+ .level = 43,
+ .species = SPECIES_SOLROCK
+ },
+ {
+ .iv = 40,
+ .level = 43,
+ .species = SPECIES_ALAKAZAM
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Jaclyn[] = {
+ {
+ .iv = 0,
+ .level = 16,
+ .species = SPECIES_ABRA,
+ .moves = MOVE_HIDDEN_POWER, MOVE_NONE, MOVE_NONE, MOVE_NONE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Hannah[] = {
+ {
+ .iv = 100,
+ .level = 36,
+ .species = SPECIES_RALTS
+ },
+ {
+ .iv = 100,
+ .level = 36,
+ .species = SPECIES_KIRLIA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Samantha[] = {
+ {
+ .iv = 100,
+ .level = 37,
+ .species = SPECIES_XATU
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Maura[] = {
+ {
+ .iv = 100,
+ .level = 36,
+ .species = SPECIES_KADABRA
+ },
+ {
+ .iv = 100,
+ .level = 36,
+ .species = SPECIES_KIRLIA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Kayla[] = {
+ {
+ .iv = 0,
+ .level = 32,
+ .species = SPECIES_KADABRA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Alexis[] = {
+ {
+ .iv = 0,
+ .level = 40,
+ .species = SPECIES_KIRLIA
+ },
+ {
+ .iv = 0,
+ .level = 40,
+ .species = SPECIES_XATU
+ },
+ {
+ .iv = 0,
+ .level = 40,
+ .species = SPECIES_KADABRA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Jacki1[] = {
+ {
+ .iv = 0,
+ .level = 31,
+ .species = SPECIES_KADABRA
+ },
+ {
+ .iv = 0,
+ .level = 31,
+ .species = SPECIES_LUNATONE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Jacki2[] = {
+ {
+ .iv = 10,
+ .level = 34,
+ .species = SPECIES_KADABRA
+ },
+ {
+ .iv = 10,
+ .level = 34,
+ .species = SPECIES_LUNATONE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Jacki3[] = {
+ {
+ .iv = 20,
+ .level = 37,
+ .species = SPECIES_KADABRA
+ },
+ {
+ .iv = 20,
+ .level = 37,
+ .species = SPECIES_LUNATONE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Jacki4[] = {
+ {
+ .iv = 30,
+ .level = 40,
+ .species = SPECIES_KADABRA
+ },
+ {
+ .iv = 30,
+ .level = 40,
+ .species = SPECIES_LUNATONE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Jacki5[] = {
+ {
+ .iv = 40,
+ .level = 43,
+ .species = SPECIES_LUNATONE
+ },
+ {
+ .iv = 40,
+ .level = 43,
+ .species = SPECIES_ALAKAZAM
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Walter1[] = {
+ {
+ .iv = 0,
+ .level = 31,
+ .species = SPECIES_MANECTRIC
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Tucker[] = {
+ {
+ .iv = 0,
+ .level = 44,
+ .species = SPECIES_MANECTRIC
+ },
+ {
+ .iv = 0,
+ .level = 44,
+ .species = SPECIES_MANECTRIC
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Thomas[] = {
+ {
+ .iv = 0,
+ .level = 45,
+ .species = SPECIES_ZANGOOSE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Walter2[] = {
+ {
+ .iv = 10,
+ .level = 34,
+ .species = SPECIES_MANECTRIC
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Walter3[] = {
+ {
+ .iv = 20,
+ .level = 36,
+ .species = SPECIES_LINOONE,
+ .moves = MOVE_HEADBUTT, MOVE_SAND_ATTACK, MOVE_ODOR_SLEUTH, MOVE_FURY_SWIPES
+ },
+ {
+ .iv = 20,
+ .level = 36,
+ .species = SPECIES_MANECTRIC,
+ .moves = MOVE_QUICK_ATTACK, MOVE_SPARK, MOVE_ODOR_SLEUTH, MOVE_ROAR
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Walter4[] = {
+ {
+ .iv = 30,
+ .level = 39,
+ .species = SPECIES_LINOONE,
+ .moves = MOVE_HEADBUTT, MOVE_SAND_ATTACK, MOVE_ODOR_SLEUTH, MOVE_FURY_SWIPES
+ },
+ {
+ .iv = 30,
+ .level = 39,
+ .species = SPECIES_MANECTRIC,
+ .moves = MOVE_QUICK_ATTACK, MOVE_SPARK, MOVE_ODOR_SLEUTH, MOVE_NONE
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Walter5[] = {
+ {
+ .iv = 40,
+ .level = 41,
+ .species = SPECIES_LINOONE,
+ .moves = MOVE_HEADBUTT, MOVE_SAND_ATTACK, MOVE_ODOR_SLEUTH, MOVE_FURY_SWIPES
+ },
+ {
+ .iv = 40,
+ .level = 41,
+ .species = SPECIES_GOLDUCK,
+ .moves = MOVE_FURY_SWIPES, MOVE_DISABLE, MOVE_CONFUSION, MOVE_PSYCH_UP
+ },
+ {
+ .iv = 40,
+ .level = 41,
+ .species = SPECIES_MANECTRIC,
+ .moves = MOVE_QUICK_ATTACK, MOVE_SPARK, MOVE_ODOR_SLEUTH, MOVE_ROAR
+ }
+};
+
+const struct TrainerPartyMember3 gTrainerParty_Sidney[] = {
+ {
+ .iv = 250,
+ .level = 46,
+ .species = SPECIES_MIGHTYENA,
+ .heldItem = ITEM_NONE,
+ .moves = MOVE_ROAR, MOVE_TAKE_DOWN, MOVE_SAND_ATTACK, MOVE_CRUNCH
+ },
+ {
+ .iv = 250,
+ .level = 48,
+ .species = SPECIES_SHIFTRY,
+ .heldItem = ITEM_NONE,
+ .moves = MOVE_FAKE_OUT, MOVE_DOUBLE_TEAM, MOVE_SWAGGER, MOVE_EXTRASENSORY
+ },
+ {
+ .iv = 250,
+ .level = 46,
+ .species = SPECIES_CACTURNE,
+ .heldItem = ITEM_NONE,
+ .moves = MOVE_LEECH_SEED, MOVE_FAINT_ATTACK, MOVE_NEEDLE_ARM, MOVE_COTTON_SPORE
+ },
+ {
+ .iv = 250,
+ .level = 48,
+ .species = SPECIES_SHARPEDO,
+ .heldItem = ITEM_NONE,
+ .moves = MOVE_CRUNCH, MOVE_SWAGGER, MOVE_SURF, MOVE_SLASH
+ },
+ {
+ .iv = 255,
+ .level = 49,
+ .species = SPECIES_ABSOL,
+ .heldItem = ITEM_SITRUS_BERRY,
+ .moves = MOVE_AERIAL_ACE, MOVE_SNATCH, MOVE_SWORDS_DANCE, MOVE_SLASH
+ }
+};
+
+const struct TrainerPartyMember3 gTrainerParty_Phoebe[] = {
+ {
+ .iv = 250,
+ .level = 48,
+ .species = SPECIES_DUSCLOPS,
+ .heldItem = ITEM_NONE,
+ .moves = MOVE_SHADOW_PUNCH, MOVE_CONFUSE_RAY, MOVE_CURSE, MOVE_FUTURE_SIGHT
+ },
+ {
+ .iv = 250,
+ .level = 49,
+ .species = SPECIES_BANETTE,
+ .heldItem = ITEM_NONE,
+ .moves = MOVE_SHADOW_BALL, MOVE_SPITE, MOVE_WILL_O_WISP, MOVE_FAINT_ATTACK
+ },
+ {
+ .iv = 250,
+ .level = 50,
+ .species = SPECIES_SABLEYE,
+ .heldItem = ITEM_NONE,
+ .moves = MOVE_SHADOW_BALL, MOVE_PSYCHIC, MOVE_ATTRACT, MOVE_FAINT_ATTACK
+ },
+ {
+ .iv = 250,
+ .level = 49,
+ .species = SPECIES_BANETTE,
+ .heldItem = ITEM_NONE,
+ .moves = MOVE_SHADOW_BALL, MOVE_PSYCHIC, MOVE_TOXIC, MOVE_SKILL_SWAP
+ },
+ {
+ .iv = 255,
+ .level = 51,
+ .species = SPECIES_DUSCLOPS,
+ .heldItem = ITEM_SITRUS_BERRY,
+ .moves = MOVE_SHADOW_BALL, MOVE_ICE_BEAM, MOVE_CONFUSE_RAY, MOVE_EARTHQUAKE
+ }
+};
+
+const struct TrainerPartyMember3 gTrainerParty_Glacia[] = {
+ {
+ .iv = 250,
+ .level = 50,
+ .species = SPECIES_GLALIE,
+ .heldItem = ITEM_NONE,
+ .moves = MOVE_LIGHT_SCREEN, MOVE_CRUNCH, MOVE_HAIL, MOVE_ICE_BEAM
+ },
+ {
+ .iv = 250,
+ .level = 50,
+ .species = SPECIES_SEALEO,
+ .heldItem = ITEM_NONE,
+ .moves = MOVE_SURF, MOVE_BODY_SLAM, MOVE_HAIL, MOVE_ICE_BALL
+ },
+ {
+ .iv = 250,
+ .level = 52,
+ .species = SPECIES_SEALEO,
+ .heldItem = ITEM_NONE,
+ .moves = MOVE_ATTRACT, MOVE_DIVE, MOVE_HAIL, MOVE_BLIZZARD
+ },
+ {
+ .iv = 250,
+ .level = 52,
+ .species = SPECIES_GLALIE,
+ .heldItem = ITEM_NONE,
+ .moves = MOVE_SHADOW_BALL, MOVE_CRUNCH, MOVE_HAIL, MOVE_ICE_BEAM
+ },
+ {
+ .iv = 255,
+ .level = 53,
+ .species = SPECIES_WALREIN,
+ .heldItem = ITEM_SITRUS_BERRY,
+ .moves = MOVE_SURF, MOVE_BODY_SLAM, MOVE_BLIZZARD, MOVE_SHEER_COLD
+ }
+};
+
+const struct TrainerPartyMember3 gTrainerParty_Drake[] = {
+ {
+ .iv = 250,
+ .level = 52,
+ .species = SPECIES_SHELGON,
+ .heldItem = ITEM_NONE,
+ .moves = MOVE_ROCK_TOMB, MOVE_DRAGON_CLAW, MOVE_PROTECT, MOVE_CRUNCH
+ },
+ {
+ .iv = 250,
+ .level = 54,
+ .species = SPECIES_ALTARIA,
+ .heldItem = ITEM_NONE,
+ .moves = MOVE_TAKE_DOWN, MOVE_DRAGON_BREATH, MOVE_DRAGON_DANCE, MOVE_REFRESH
+ },
+ {
+ .iv = 250,
+ .level = 53,
+ .species = SPECIES_FLYGON,
+ .heldItem = ITEM_NONE,
+ .moves = MOVE_DIG, MOVE_DRAGON_BREATH, MOVE_FLY, MOVE_SANDSTORM
+ },
+ {
+ .iv = 250,
+ .level = 53,
+ .species = SPECIES_FLYGON,
+ .heldItem = ITEM_NONE,
+ .moves = MOVE_FLAMETHROWER, MOVE_CRUNCH, MOVE_DRAGON_BREATH, MOVE_SAND_ATTACK
+ },
+ {
+ .iv = 255,
+ .level = 55,
+ .species = SPECIES_SALAMENCE,
+ .heldItem = ITEM_SITRUS_BERRY,
+ .moves = MOVE_FLAMETHROWER, MOVE_DRAGON_CLAW, MOVE_FLY, MOVE_CRUNCH
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Roxanne[] = {
+ {
+ .iv = 150,
+ .level = 14,
+ .species = SPECIES_GEODUDE,
+ .moves = MOVE_TACKLE, MOVE_DEFENSE_CURL, MOVE_ROCK_THROW, MOVE_ROCK_TOMB
+ },
+ {
+ .iv = 200,
+ .level = 15,
+ .species = SPECIES_NOSEPASS,
+ .moves = MOVE_TACKLE, MOVE_HARDEN, MOVE_ROCK_THROW, MOVE_ROCK_TOMB
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Brawly[] = {
+ {
+ .iv = 150,
+ .level = 17,
+ .species = SPECIES_MACHOP,
+ .moves = MOVE_LEER, MOVE_KARATE_CHOP, MOVE_SEISMIC_TOSS, MOVE_BULK_UP
+ },
+ {
+ .iv = 200,
+ .level = 18,
+ .species = SPECIES_MAKUHITA,
+ .moves = MOVE_ARM_THRUST, MOVE_KNOCK_OFF, MOVE_SAND_ATTACK, MOVE_BULK_UP
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Wattson[] = {
+ {
+ .iv = 200,
+ .level = 22,
+ .species = SPECIES_MAGNEMITE,
+ .moves = MOVE_SUPERSONIC, MOVE_SONIC_BOOM, MOVE_THUNDER_SHOCK, MOVE_THUNDER_WAVE
+ },
+ {
+ .iv = 200,
+ .level = 20,
+ .species = SPECIES_VOLTORB,
+ .moves = MOVE_ROLLOUT, MOVE_SELF_DESTRUCT, MOVE_SPARK, MOVE_SONIC_BOOM
+ },
+ {
+ .iv = 250,
+ .level = 23,
+ .species = SPECIES_MAGNETON,
+ .moves = MOVE_SUPERSONIC, MOVE_SONIC_BOOM, MOVE_SHOCK_WAVE, MOVE_THUNDER_WAVE
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Flannery[] = {
+ {
+ .iv = 200,
+ .level = 26,
+ .species = SPECIES_SLUGMA,
+ .moves = MOVE_OVERHEAT, MOVE_SMOG, MOVE_LIGHT_SCREEN, MOVE_SUNNY_DAY
+ },
+ {
+ .iv = 200,
+ .level = 26,
+ .species = SPECIES_SLUGMA,
+ .moves = MOVE_FLAMETHROWER, MOVE_ROCK_SLIDE, MOVE_LIGHT_SCREEN, MOVE_SUNNY_DAY
+ },
+ {
+ .iv = 250,
+ .level = 28,
+ .species = SPECIES_TORKOAL,
+ .moves = MOVE_OVERHEAT, MOVE_BODY_SLAM, MOVE_FLAIL, MOVE_ATTRACT
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Norman[] = {
+ {
+ .iv = 200,
+ .level = 28,
+ .species = SPECIES_SLAKING,
+ .moves = MOVE_ENCORE, MOVE_FACADE, MOVE_YAWN, MOVE_FAINT_ATTACK
+ },
+ {
+ .iv = 200,
+ .level = 30,
+ .species = SPECIES_VIGOROTH,
+ .moves = MOVE_SLASH, MOVE_FAINT_ATTACK, MOVE_FACADE, MOVE_ENCORE
+ },
+ {
+ .iv = 250,
+ .level = 31,
+ .species = SPECIES_SLAKING,
+ .moves = MOVE_FOCUS_PUNCH, MOVE_SLACK_OFF, MOVE_FACADE, MOVE_FAINT_ATTACK
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Winona[] = {
+ {
+ .iv = 200,
+ .level = 31,
+ .species = SPECIES_SWELLOW,
+ .moves = MOVE_QUICK_ATTACK, MOVE_AERIAL_ACE, MOVE_DOUBLE_TEAM, MOVE_ENDEAVOR
+ },
+ {
+ .iv = 200,
+ .level = 30,
+ .species = SPECIES_PELIPPER,
+ .moves = MOVE_WATER_GUN, MOVE_SUPERSONIC, MOVE_PROTECT, MOVE_AERIAL_ACE
+ },
+ {
+ .iv = 200,
+ .level = 32,
+ .species = SPECIES_SKARMORY,
+ .moves = MOVE_SAND_ATTACK, MOVE_FURY_ATTACK, MOVE_STEEL_WING, MOVE_AERIAL_ACE
+ },
+ {
+ .iv = 250,
+ .level = 33,
+ .species = SPECIES_ALTARIA,
+ .moves = MOVE_EARTHQUAKE, MOVE_DRAGON_BREATH, MOVE_DRAGON_DANCE, MOVE_AERIAL_ACE
+ }
+};
+
+const struct TrainerPartyMember3 gTrainerParty_TateAndLiza[] = {
+ {
+ .iv = 250,
+ .level = 42,
+ .species = SPECIES_LUNATONE,
+ .heldItem = ITEM_NONE,
+ .moves = MOVE_LIGHT_SCREEN, MOVE_PSYCHIC, MOVE_HYPNOSIS, MOVE_CALM_MIND
+ },
+ {
+ .iv = 250,
+ .level = 42,
+ .species = SPECIES_SOLROCK,
+ .heldItem = ITEM_NONE,
+ .moves = MOVE_SUNNY_DAY, MOVE_SOLAR_BEAM, MOVE_PSYCHIC, MOVE_FLAMETHROWER
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Wallace[] = {
+ {
+ .iv = 200,
+ .level = 40,
+ .species = SPECIES_LUVDISC,
+ .moves = MOVE_WATER_PULSE, MOVE_ATTRACT, MOVE_SWEET_KISS, MOVE_FLAIL
+ },
+ {
+ .iv = 200,
+ .level = 42,
+ .species = SPECIES_WHISCASH,
+ .moves = MOVE_RAIN_DANCE, MOVE_WATER_PULSE, MOVE_AMNESIA, MOVE_EARTHQUAKE
+ },
+ {
+ .iv = 200,
+ .level = 40,
+ .species = SPECIES_SEALEO,
+ .moves = MOVE_ENCORE, MOVE_BODY_SLAM, MOVE_AURORA_BEAM, MOVE_WATER_PULSE
+ },
+ {
+ .iv = 200,
+ .level = 42,
+ .species = SPECIES_SEAKING,
+ .moves = MOVE_WATER_PULSE, MOVE_RAIN_DANCE, MOVE_FURY_ATTACK, MOVE_HORN_DRILL
+ },
+ {
+ .iv = 250,
+ .level = 43,
+ .species = SPECIES_MILOTIC,
+ .moves = MOVE_WATER_PULSE, MOVE_TWISTER, MOVE_RECOVER, MOVE_ICE_BEAM
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Jerry1[] = {
+ {
+ .iv = 10,
+ .level = 10,
+ .species = SPECIES_RALTS
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Ted[] = {
+ {
+ .iv = 10,
+ .level = 17,
+ .species = SPECIES_RALTS
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Paul[] = {
+ {
+ .iv = 10,
+ .level = 15,
+ .species = SPECIES_NUMEL
+ },
+ {
+ .iv = 10,
+ .level = 15,
+ .species = SPECIES_ODDISH
+ },
+ {
+ .iv = 10,
+ .level = 15,
+ .species = SPECIES_WINGULL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Jerry2[] = {
+ {
+ .iv = 20,
+ .level = 26,
+ .species = SPECIES_RALTS
+ },
+ {
+ .iv = 20,
+ .level = 26,
+ .species = SPECIES_MEDITITE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Jerry3[] = {
+ {
+ .iv = 30,
+ .level = 29,
+ .species = SPECIES_KIRLIA
+ },
+ {
+ .iv = 30,
+ .level = 29,
+ .species = SPECIES_MEDITITE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Jerry4[] = {
+ {
+ .iv = 40,
+ .level = 32,
+ .species = SPECIES_KIRLIA
+ },
+ {
+ .iv = 40,
+ .level = 32,
+ .species = SPECIES_MEDICHAM
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Jerry5[] = {
+ {
+ .iv = 50,
+ .level = 34,
+ .species = SPECIES_KIRLIA
+ },
+ {
+ .iv = 50,
+ .level = 34,
+ .species = SPECIES_BANETTE
+ },
+ {
+ .iv = 50,
+ .level = 34,
+ .species = SPECIES_MEDICHAM
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Karen1[] = {
+ {
+ .iv = 10,
+ .level = 9,
+ .species = SPECIES_SHROOMISH
+ },
+ {
+ .iv = 10,
+ .level = 9,
+ .species = SPECIES_WHISMUR
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Georgia[] = {
+ {
+ .iv = 10,
+ .level = 16,
+ .species = SPECIES_SHROOMISH
+ },
+ {
+ .iv = 10,
+ .level = 16,
+ .species = SPECIES_BEAUTIFLY
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Karen2[] = {
+ {
+ .iv = 20,
+ .level = 26,
+ .species = SPECIES_SHROOMISH
+ },
+ {
+ .iv = 20,
+ .level = 26,
+ .species = SPECIES_WHISMUR
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Karen3[] = {
+ {
+ .iv = 30,
+ .level = 29,
+ .species = SPECIES_SHROOMISH
+ },
+ {
+ .iv = 30,
+ .level = 29,
+ .species = SPECIES_LOUDRED
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Karen4[] = {
+ {
+ .iv = 40,
+ .level = 32,
+ .species = SPECIES_BRELOOM
+ },
+ {
+ .iv = 40,
+ .level = 32,
+ .species = SPECIES_LOUDRED
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Karen5[] = {
+ {
+ .iv = 50,
+ .level = 35,
+ .species = SPECIES_BRELOOM
+ },
+ {
+ .iv = 50,
+ .level = 35,
+ .species = SPECIES_EXPLOUD
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_KateAndJoy[] = {
+ {
+ .iv = 0,
+ .level = 30,
+ .species = SPECIES_SPINDA,
+ .moves = MOVE_HYPNOSIS, MOVE_PSYBEAM, MOVE_DIZZY_PUNCH, MOVE_TEETER_DANCE
+ },
+ {
+ .iv = 0,
+ .level = 32,
+ .species = SPECIES_SLAKING,
+ .moves = MOVE_FOCUS_PUNCH, MOVE_YAWN, MOVE_SLACK_OFF, MOVE_FAINT_ATTACK
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_AnnaAndMeg1[] = {
+ {
+ .iv = 0,
+ .level = 16,
+ .species = SPECIES_ZIGZAGOON,
+ .moves = MOVE_GROWL, MOVE_TAIL_WHIP, MOVE_HEADBUTT, MOVE_ODOR_SLEUTH
+ },
+ {
+ .iv = 0,
+ .level = 18,
+ .species = SPECIES_MAKUHITA,
+ .moves = MOVE_TACKLE, MOVE_FOCUS_ENERGY, MOVE_ARM_THRUST, MOVE_NONE
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_AnnaAndMeg2[] = {
+ {
+ .iv = 10,
+ .level = 26,
+ .species = SPECIES_ZIGZAGOON,
+ .moves = MOVE_GROWL, MOVE_TAIL_WHIP, MOVE_HEADBUTT, MOVE_ODOR_SLEUTH
+ },
+ {
+ .iv = 10,
+ .level = 28,
+ .species = SPECIES_MAKUHITA,
+ .moves = MOVE_TACKLE, MOVE_FOCUS_ENERGY, MOVE_ARM_THRUST, MOVE_NONE
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_AnnaAndMeg3[] = {
+ {
+ .iv = 20,
+ .level = 29,
+ .species = SPECIES_ZIGZAGOON,
+ .moves = MOVE_GROWL, MOVE_TAIL_WHIP, MOVE_HEADBUTT, MOVE_ODOR_SLEUTH
+ },
+ {
+ .iv = 20,
+ .level = 31,
+ .species = SPECIES_MAKUHITA,
+ .moves = MOVE_TACKLE, MOVE_FOCUS_ENERGY, MOVE_ARM_THRUST, MOVE_NONE
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_AnnaAndMeg4[] = {
+ {
+ .iv = 30,
+ .level = 32,
+ .species = SPECIES_LINOONE,
+ .moves = MOVE_GROWL, MOVE_TAIL_WHIP, MOVE_HEADBUTT, MOVE_ODOR_SLEUTH
+ },
+ {
+ .iv = 30,
+ .level = 34,
+ .species = SPECIES_MAKUHITA,
+ .moves = MOVE_TACKLE, MOVE_FOCUS_ENERGY, MOVE_ARM_THRUST, MOVE_NONE
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_AnnaAndMeg5[] = {
+ {
+ .iv = 40,
+ .level = 35,
+ .species = SPECIES_LINOONE,
+ .moves = MOVE_GROWL, MOVE_TAIL_WHIP, MOVE_HEADBUTT, MOVE_ODOR_SLEUTH
+ },
+ {
+ .iv = 40,
+ .level = 37,
+ .species = SPECIES_HARIYAMA,
+ .moves = MOVE_TACKLE, MOVE_FOCUS_ENERGY, MOVE_ARM_THRUST, MOVE_NONE
+ }
+};
+
+const struct TrainerPartyMember2 gTrainerParty_Victor[] = {
+ {
+ .iv = 25,
+ .level = 16,
+ .species = SPECIES_TAILLOW,
+ .heldItem = ITEM_ORAN_BERRY
+ },
+ {
+ .iv = 25,
+ .level = 16,
+ .species = SPECIES_ZIGZAGOON,
+ .heldItem = ITEM_ORAN_BERRY
+ }
+};
+
+const struct TrainerPartyMember2 gTrainerParty_Miguel1[] = {
+ {
+ .iv = 0,
+ .level = 16,
+ .species = SPECIES_SKITTY,
+ .heldItem = ITEM_ORAN_BERRY
+ }
+};
+
+const struct TrainerPartyMember3 gTrainerParty_Colton[] = {
+ {
+ .iv = 0,
+ .level = 22,
+ .species = SPECIES_SKITTY,
+ .heldItem = ITEM_ORAN_BERRY,
+ .moves = MOVE_ASSIST, MOVE_CHARM, MOVE_FAINT_ATTACK, MOVE_HEAL_BELL
+ },
+ {
+ .iv = 0,
+ .level = 36,
+ .species = SPECIES_SKITTY,
+ .heldItem = ITEM_ORAN_BERRY,
+ .moves = MOVE_ASSIST, MOVE_CHARM, MOVE_FAINT_ATTACK, MOVE_HEAL_BELL
+ },
+ {
+ .iv = 0,
+ .level = 40,
+ .species = SPECIES_SKITTY,
+ .heldItem = ITEM_ORAN_BERRY,
+ .moves = MOVE_ASSIST, MOVE_CHARM, MOVE_FAINT_ATTACK, MOVE_HEAL_BELL
+ },
+ {
+ .iv = 0,
+ .level = 12,
+ .species = SPECIES_SKITTY,
+ .heldItem = ITEM_ORAN_BERRY,
+ .moves = MOVE_ASSIST, MOVE_CHARM, MOVE_FAINT_ATTACK, MOVE_HEAL_BELL
+ },
+ {
+ .iv = 0,
+ .level = 30,
+ .species = SPECIES_SKITTY,
+ .heldItem = ITEM_ORAN_BERRY,
+ .moves = MOVE_ASSIST, MOVE_CHARM, MOVE_FAINT_ATTACK, MOVE_HEAL_BELL
+ },
+ {
+ .iv = 0,
+ .level = 42,
+ .species = SPECIES_DELCATTY,
+ .heldItem = ITEM_ORAN_BERRY,
+ .moves = MOVE_ASSIST, MOVE_CHARM, MOVE_FAINT_ATTACK, MOVE_HEAL_BELL
+ }
+};
+
+const struct TrainerPartyMember2 gTrainerParty_Miguel2[] = {
+ {
+ .iv = 0,
+ .level = 27,
+ .species = SPECIES_SKITTY,
+ .heldItem = ITEM_ORAN_BERRY
+ }
+};
+
+const struct TrainerPartyMember2 gTrainerParty_Miguel3[] = {
+ {
+ .iv = 0,
+ .level = 30,
+ .species = SPECIES_SKITTY,
+ .heldItem = ITEM_ORAN_BERRY
+ }
+};
+
+const struct TrainerPartyMember2 gTrainerParty_Miguel4[] = {
+ {
+ .iv = 0,
+ .level = 33,
+ .species = SPECIES_DELCATTY,
+ .heldItem = ITEM_ORAN_BERRY
+ }
+};
+
+const struct TrainerPartyMember2 gTrainerParty_Miguel5[] = {
+ {
+ .iv = 0,
+ .level = 36,
+ .species = SPECIES_DELCATTY,
+ .heldItem = ITEM_SITRUS_BERRY
+ }
+};
+
+const struct TrainerPartyMember2 gTrainerParty_Victoria[] = {
+ {
+ .iv = 50,
+ .level = 17,
+ .species = SPECIES_ROSELIA,
+ .heldItem = ITEM_ORAN_BERRY
+ }
+};
+
+const struct TrainerPartyMember2 gTrainerParty_Vanessa[] = {
+ {
+ .iv = 0,
+ .level = 31,
+ .species = SPECIES_PIKACHU,
+ .heldItem = ITEM_ORAN_BERRY
+ }
+};
+
+const struct TrainerPartyMember2 gTrainerParty_Marissa[] = {
+ {
+ .iv = 100,
+ .level = 36,
+ .species = SPECIES_AZURILL,
+ .heldItem = ITEM_ORAN_BERRY
+ },
+ {
+ .iv = 100,
+ .level = 38,
+ .species = SPECIES_MARILL,
+ .heldItem = ITEM_ORAN_BERRY
+ },
+ {
+ .iv = 100,
+ .level = 40,
+ .species = SPECIES_AZUMARILL,
+ .heldItem = ITEM_ORAN_BERRY
+ }
+};
+
+const struct TrainerPartyMember2 gTrainerParty_Isabel1[] = {
+ {
+ .iv = 0,
+ .level = 15,
+ .species = SPECIES_PLUSLE,
+ .heldItem = ITEM_ORAN_BERRY
+ },
+ {
+ .iv = 0,
+ .level = 15,
+ .species = SPECIES_MINUN,
+ .heldItem = ITEM_ORAN_BERRY
+ }
+};
+
+const struct TrainerPartyMember2 gTrainerParty_Isabel2[] = {
+ {
+ .iv = 10,
+ .level = 26,
+ .species = SPECIES_PLUSLE,
+ .heldItem = ITEM_ORAN_BERRY
+ },
+ {
+ .iv = 10,
+ .level = 26,
+ .species = SPECIES_MINUN,
+ .heldItem = ITEM_ORAN_BERRY
+ }
+};
+
+const struct TrainerPartyMember2 gTrainerParty_Isabel3[] = {
+ {
+ .iv = 20,
+ .level = 29,
+ .species = SPECIES_PLUSLE,
+ .heldItem = ITEM_ORAN_BERRY
+ },
+ {
+ .iv = 20,
+ .level = 29,
+ .species = SPECIES_MINUN,
+ .heldItem = ITEM_ORAN_BERRY
+ }
+};
+
+const struct TrainerPartyMember2 gTrainerParty_Isabel4[] = {
+ {
+ .iv = 30,
+ .level = 32,
+ .species = SPECIES_PLUSLE,
+ .heldItem = ITEM_ORAN_BERRY
+ },
+ {
+ .iv = 30,
+ .level = 32,
+ .species = SPECIES_MINUN,
+ .heldItem = ITEM_ORAN_BERRY
+ }
+};
+
+const struct TrainerPartyMember2 gTrainerParty_Isabel5[] = {
+ {
+ .iv = 40,
+ .level = 35,
+ .species = SPECIES_PLUSLE,
+ .heldItem = ITEM_SITRUS_BERRY
+ },
+ {
+ .iv = 40,
+ .level = 35,
+ .species = SPECIES_MINUN,
+ .heldItem = ITEM_SITRUS_BERRY
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Timothy1[] = {
+ {
+ .iv = 200,
+ .level = 28,
+ .species = SPECIES_HARIYAMA
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Timothy2[] = {
+ {
+ .iv = 210,
+ .level = 31,
+ .species = SPECIES_HARIYAMA,
+ .moves = MOVE_ARM_THRUST, MOVE_KNOCK_OFF, MOVE_SAND_ATTACK, MOVE_DIG
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Timothy3[] = {
+ {
+ .iv = 220,
+ .level = 34,
+ .species = SPECIES_HARIYAMA,
+ .moves = MOVE_ARM_THRUST, MOVE_KNOCK_OFF, MOVE_SAND_ATTACK, MOVE_DIG
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Timothy4[] = {
+ {
+ .iv = 230,
+ .level = 37,
+ .species = SPECIES_HARIYAMA,
+ .moves = MOVE_ARM_THRUST, MOVE_BELLY_DRUM, MOVE_SAND_ATTACK, MOVE_DIG
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Timothy5[] = {
+ {
+ .iv = 240,
+ .level = 40,
+ .species = SPECIES_HARIYAMA,
+ .moves = MOVE_ARM_THRUST, MOVE_BELLY_DRUM, MOVE_SAND_ATTACK, MOVE_DIG
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Vicky[] = {
+ {
+ .iv = 200,
+ .level = 18,
+ .species = SPECIES_MEDITITE,
+ .moves = MOVE_HI_JUMP_KICK, MOVE_MEDITATE, MOVE_CONFUSION, MOVE_DETECT
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Shelby1[] = {
+ {
+ .iv = 200,
+ .level = 22,
+ .species = SPECIES_MEDITITE
+ },
+ {
+ .iv = 200,
+ .level = 22,
+ .species = SPECIES_MAKUHITA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Shelby2[] = {
+ {
+ .iv = 210,
+ .level = 30,
+ .species = SPECIES_MEDITITE
+ },
+ {
+ .iv = 210,
+ .level = 30,
+ .species = SPECIES_MAKUHITA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Shelby3[] = {
+ {
+ .iv = 220,
+ .level = 33,
+ .species = SPECIES_MEDICHAM
+ },
+ {
+ .iv = 220,
+ .level = 33,
+ .species = SPECIES_HARIYAMA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Shelby4[] = {
+ {
+ .iv = 230,
+ .level = 36,
+ .species = SPECIES_MEDICHAM
+ },
+ {
+ .iv = 230,
+ .level = 36,
+ .species = SPECIES_HARIYAMA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Shelby5[] = {
+ {
+ .iv = 240,
+ .level = 39,
+ .species = SPECIES_MEDICHAM
+ },
+ {
+ .iv = 240,
+ .level = 39,
+ .species = SPECIES_HARIYAMA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Calvin1[] = {
+ {
+ .iv = 0,
+ .level = 5,
+ .species = SPECIES_ZIGZAGOON
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Billy[] = {
+ {
+ .iv = 0,
+ .level = 6,
+ .species = SPECIES_SEEDOT
+ },
+ {
+ .iv = 0,
+ .level = 8,
+ .species = SPECIES_TAILLOW
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Josh[] = {
+ {
+ .iv = 100,
+ .level = 10,
+ .species = SPECIES_GEODUDE,
+ .moves = MOVE_TACKLE, MOVE_NONE, MOVE_NONE, MOVE_NONE
+ },
+ {
+ .iv = 100,
+ .level = 8,
+ .species = SPECIES_GEODUDE,
+ .moves = MOVE_TACKLE, MOVE_NONE, MOVE_NONE, MOVE_NONE
+ },
+ {
+ .iv = 100,
+ .level = 6,
+ .species = SPECIES_GEODUDE,
+ .moves = MOVE_TACKLE, MOVE_NONE, MOVE_NONE, MOVE_NONE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Tommy[] = {
+ {
+ .iv = 100,
+ .level = 11,
+ .species = SPECIES_GEODUDE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Joey[] = {
+ {
+ .iv = 0,
+ .level = 8,
+ .species = SPECIES_ZIGZAGOON
+ },
+ {
+ .iv = 0,
+ .level = 10,
+ .species = SPECIES_MACHOP
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Ben[] = {
+ {
+ .iv = 100,
+ .level = 19,
+ .species = SPECIES_ZIGZAGOON,
+ .moves = MOVE_HEADBUTT, MOVE_SAND_ATTACK, MOVE_GROWL, MOVE_THUNDERBOLT
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Anonymous5[] = {
+ {
+ .iv = 0,
+ .level = 9,
+ .species = SPECIES_NINCADA
+ },
+ {
+ .iv = 0,
+ .level = 9,
+ .species = SPECIES_NINCADA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Kevin[] = {
+ {
+ .iv = 0,
+ .level = 9,
+ .species = SPECIES_NINCADA
+ },
+ {
+ .iv = 0,
+ .level = 9,
+ .species = SPECIES_NINCADA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Neal[] = {
+ {
+ .iv = 0,
+ .level = 18,
+ .species = SPECIES_TRAPINCH
+ },
+ {
+ .iv = 0,
+ .level = 20,
+ .species = SPECIES_LINOONE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Dillon[] = {
+ {
+ .iv = 0,
+ .level = 20,
+ .species = SPECIES_ARON
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Calvin2[] = {
+ {
+ .iv = 10,
+ .level = 27,
+ .species = SPECIES_LINOONE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Calvin3[] = {
+ {
+ .iv = 20,
+ .level = 28,
+ .species = SPECIES_SWELLOW
+ },
+ {
+ .iv = 20,
+ .level = 30,
+ .species = SPECIES_LINOONE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Calvin4[] = {
+ {
+ .iv = 30,
+ .level = 31,
+ .species = SPECIES_SWELLOW
+ },
+ {
+ .iv = 30,
+ .level = 33,
+ .species = SPECIES_LINOONE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Calvin5[] = {
+ {
+ .iv = 40,
+ .level = 34,
+ .species = SPECIES_SWELLOW
+ },
+ {
+ .iv = 40,
+ .level = 32,
+ .species = SPECIES_VIGOROTH
+ },
+ {
+ .iv = 40,
+ .level = 36,
+ .species = SPECIES_LINOONE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Eddie[] = {
+ {
+ .iv = 0,
+ .level = 14,
+ .species = SPECIES_ZIGZAGOON
+ },
+ {
+ .iv = 0,
+ .level = 16,
+ .species = SPECIES_ZIGZAGOON
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Allen[] = {
+ {
+ .iv = 0,
+ .level = 5,
+ .species = SPECIES_POOCHYENA
+ },
+ {
+ .iv = 0,
+ .level = 3,
+ .species = SPECIES_TAILLOW
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Timmy[] = {
+ {
+ .iv = 0,
+ .level = 12,
+ .species = SPECIES_POOCHYENA
+ },
+ {
+ .iv = 0,
+ .level = 16,
+ .species = SPECIES_ARON
+ },
+ {
+ .iv = 0,
+ .level = 14,
+ .species = SPECIES_ELECTRIKE
+ }
+};
+
+const struct TrainerPartyMember3 gTrainerParty_Steven[] = {
+ {
+ .iv = 255,
+ .level = 57,
+ .species = SPECIES_SKARMORY,
+ .heldItem = ITEM_NONE,
+ .moves = MOVE_TOXIC, MOVE_AERIAL_ACE, MOVE_SPIKES, MOVE_STEEL_WING
+ },
+ {
+ .iv = 255,
+ .level = 55,
+ .species = SPECIES_CLAYDOL,
+ .heldItem = ITEM_NONE,
+ .moves = MOVE_REFLECT, MOVE_LIGHT_SCREEN, MOVE_ANCIENT_POWER, MOVE_EARTHQUAKE
+ },
+ {
+ .iv = 255,
+ .level = 56,
+ .species = SPECIES_AGGRON,
+ .heldItem = ITEM_NONE,
+ .moves = MOVE_THUNDER, MOVE_EARTHQUAKE, MOVE_SOLAR_BEAM, MOVE_DRAGON_CLAW
+ },
+ {
+ .iv = 255,
+ .level = 56,
+ .species = SPECIES_CRADILY,
+ .heldItem = ITEM_NONE,
+ .moves = MOVE_GIGA_DRAIN, MOVE_ANCIENT_POWER, MOVE_SLUDGE_BOMB, MOVE_CONFUSE_RAY
+ },
+ {
+ .iv = 255,
+ .level = 56,
+ .species = SPECIES_ARMALDO,
+ .heldItem = ITEM_NONE,
+ .moves = MOVE_WATER_PULSE, MOVE_ANCIENT_POWER, MOVE_AERIAL_ACE, MOVE_SLASH
+ },
+ {
+ .iv = 255,
+ .level = 58,
+ .species = SPECIES_METAGROSS,
+ .heldItem = ITEM_SITRUS_BERRY,
+ .moves = MOVE_EARTHQUAKE, MOVE_PSYCHIC, MOVE_METEOR_MASH, MOVE_HYPER_BEAM
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Andrew[] = {
+ {
+ .iv = 0,
+ .level = 5,
+ .species = SPECIES_MAGIKARP
+ },
+ {
+ .iv = 0,
+ .level = 10,
+ .species = SPECIES_TENTACOOL
+ },
+ {
+ .iv = 0,
+ .level = 15,
+ .species = SPECIES_MAGIKARP
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Ivan[] = {
+ {
+ .iv = 0,
+ .level = 6,
+ .species = SPECIES_MAGIKARP
+ },
+ {
+ .iv = 0,
+ .level = 6,
+ .species = SPECIES_MAGIKARP
+ },
+ {
+ .iv = 0,
+ .level = 6,
+ .species = SPECIES_MAGIKARP
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Claude[] = {
+ {
+ .iv = 0,
+ .level = 16,
+ .species = SPECIES_GOLDEEN
+ },
+ {
+ .iv = 0,
+ .level = 16,
+ .species = SPECIES_GOLDEEN
+ },
+ {
+ .iv = 0,
+ .level = 18,
+ .species = SPECIES_BARBOACH
+ },
+ {
+ .iv = 0,
+ .level = 16,
+ .species = SPECIES_GOLDEEN
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Elliot1[] = {
+ {
+ .iv = 0,
+ .level = 11,
+ .species = SPECIES_MAGIKARP
+ },
+ {
+ .iv = 0,
+ .level = 8,
+ .species = SPECIES_TENTACOOL
+ },
+ {
+ .iv = 0,
+ .level = 11,
+ .species = SPECIES_MAGIKARP
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Ned[] = {
+ {
+ .iv = 0,
+ .level = 12,
+ .species = SPECIES_TENTACOOL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Dale[] = {
+ {
+ .iv = 0,
+ .level = 12,
+ .species = SPECIES_TENTACOOL
+ },
+ {
+ .iv = 0,
+ .level = 15,
+ .species = SPECIES_WAILMER
+ },
+ {
+ .iv = 0,
+ .level = 9,
+ .species = SPECIES_TENTACOOL
+ },
+ {
+ .iv = 0,
+ .level = 12,
+ .species = SPECIES_TENTACOOL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Nolan[] = {
+ {
+ .iv = 0,
+ .level = 20,
+ .species = SPECIES_BARBOACH
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Barny[] = {
+ {
+ .iv = 0,
+ .level = 26,
+ .species = SPECIES_CARVANHA
+ },
+ {
+ .iv = 0,
+ .level = 26,
+ .species = SPECIES_CARVANHA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Wade[] = {
+ {
+ .iv = 0,
+ .level = 17,
+ .species = SPECIES_CARVANHA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Carter[] = {
+ {
+ .iv = 0,
+ .level = 23,
+ .species = SPECIES_TENTACOOL
+ },
+ {
+ .iv = 0,
+ .level = 24,
+ .species = SPECIES_TENTACOOL
+ },
+ {
+ .iv = 0,
+ .level = 24,
+ .species = SPECIES_WAILMER
+ },
+ {
+ .iv = 0,
+ .level = 25,
+ .species = SPECIES_TENTACOOL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Elliot2[] = {
+ {
+ .iv = 10,
+ .level = 24,
+ .species = SPECIES_TENTACOOL
+ },
+ {
+ .iv = 10,
+ .level = 27,
+ .species = SPECIES_GYARADOS
+ },
+ {
+ .iv = 10,
+ .level = 27,
+ .species = SPECIES_GYARADOS
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Elliot3[] = {
+ {
+ .iv = 20,
+ .level = 29,
+ .species = SPECIES_GYARADOS
+ },
+ {
+ .iv = 20,
+ .level = 26,
+ .species = SPECIES_CARVANHA
+ },
+ {
+ .iv = 20,
+ .level = 26,
+ .species = SPECIES_TENTACOOL
+ },
+ {
+ .iv = 20,
+ .level = 29,
+ .species = SPECIES_GYARADOS
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Elliot4[] = {
+ {
+ .iv = 30,
+ .level = 31,
+ .species = SPECIES_GYARADOS
+ },
+ {
+ .iv = 30,
+ .level = 30,
+ .species = SPECIES_CARVANHA
+ },
+ {
+ .iv = 30,
+ .level = 30,
+ .species = SPECIES_TENTACRUEL
+ },
+ {
+ .iv = 31,
+ .level = 31,
+ .species = SPECIES_GYARADOS
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Elliot5[] = {
+ {
+ .iv = 40,
+ .level = 33,
+ .species = SPECIES_GYARADOS
+ },
+ {
+ .iv = 40,
+ .level = 33,
+ .species = SPECIES_SHARPEDO
+ },
+ {
+ .iv = 40,
+ .level = 33,
+ .species = SPECIES_GYARADOS
+ },
+ {
+ .iv = 40,
+ .level = 35,
+ .species = SPECIES_TENTACRUEL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Ronald[] = {
+ {
+ .iv = 0,
+ .level = 34,
+ .species = SPECIES_GYARADOS
+ },
+ {
+ .iv = 0,
+ .level = 29,
+ .species = SPECIES_GYARADOS
+ },
+ {
+ .iv = 0,
+ .level = 25,
+ .species = SPECIES_GYARADOS
+ },
+ {
+ .iv = 0,
+ .level = 22,
+ .species = SPECIES_GYARADOS
+ },
+ {
+ .iv = 0,
+ .level = 20,
+ .species = SPECIES_GYARADOS
+ },
+ {
+ .iv = 0,
+ .level = 19,
+ .species = SPECIES_MAGIKARP
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Jacob[] = {
+ {
+ .iv = 0,
+ .level = 7,
+ .species = SPECIES_VOLTORB
+ },
+ {
+ .iv = 0,
+ .level = 7,
+ .species = SPECIES_VOLTORB
+ },
+ {
+ .iv = 160,
+ .level = 15,
+ .species = SPECIES_MAGNEMITE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Anthony[] = {
+ {
+ .iv = 0,
+ .level = 16,
+ .species = SPECIES_MAGNEMITE
+ },
+ {
+ .iv = 0,
+ .level = 16,
+ .species = SPECIES_MAGNEMITE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Benjamin1[] = {
+ {
+ .iv = 0,
+ .level = 17,
+ .species = SPECIES_MAGNEMITE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Benjamin2[] = {
+ {
+ .iv = 10,
+ .level = 28,
+ .species = SPECIES_MAGNEMITE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Benjamin3[] = {
+ {
+ .iv = 20,
+ .level = 31,
+ .species = SPECIES_MAGNEMITE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Benjamin4[] = {
+ {
+ .iv = 30,
+ .level = 34,
+ .species = SPECIES_MAGNETON
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Benjamin5[] = {
+ {
+ .iv = 40,
+ .level = 37,
+ .species = SPECIES_MAGNETON
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Abigail1[] = {
+ {
+ .iv = 0,
+ .level = 17,
+ .species = SPECIES_MAGNEMITE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Jasmine[] = {
+ {
+ .iv = 80,
+ .level = 15,
+ .species = SPECIES_MAGNEMITE
+ },
+ {
+ .iv = 80,
+ .level = 15,
+ .species = SPECIES_MAGNEMITE
+ },
+ {
+ .iv = 0,
+ .level = 7,
+ .species = SPECIES_VOLTORB
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Abigail2[] = {
+ {
+ .iv = 10,
+ .level = 28,
+ .species = SPECIES_MAGNEMITE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Abigail3[] = {
+ {
+ .iv = 20,
+ .level = 31,
+ .species = SPECIES_MAGNEMITE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Abigail4[] = {
+ {
+ .iv = 30,
+ .level = 34,
+ .species = SPECIES_MAGNETON
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Abigail5[] = {
+ {
+ .iv = 40,
+ .level = 37,
+ .species = SPECIES_MAGNETON
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Dylan1[] = {
+ {
+ .iv = 0,
+ .level = 18,
+ .species = SPECIES_DODUO
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Dylan2[] = {
+ {
+ .iv = 10,
+ .level = 28,
+ .species = SPECIES_DODUO
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Dylan3[] = {
+ {
+ .iv = 20,
+ .level = 31,
+ .species = SPECIES_DODUO
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Dylan4[] = {
+ {
+ .iv = 30,
+ .level = 34,
+ .species = SPECIES_DODRIO
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Dylan5[] = {
+ {
+ .iv = 40,
+ .level = 37,
+ .species = SPECIES_DODRIO
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Maria1[] = {
+ {
+ .iv = 0,
+ .level = 18,
+ .species = SPECIES_DODUO
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Maria2[] = {
+ {
+ .iv = 10,
+ .level = 28,
+ .species = SPECIES_DODUO
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Maria3[] = {
+ {
+ .iv = 20,
+ .level = 31,
+ .species = SPECIES_DODUO
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Maria4[] = {
+ {
+ .iv = 30,
+ .level = 34,
+ .species = SPECIES_DODRIO
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Maria5[] = {
+ {
+ .iv = 40,
+ .level = 37,
+ .species = SPECIES_DODRIO
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Caleb[] = {
+ {
+ .iv = 0,
+ .level = 33,
+ .species = SPECIES_STARYU
+ },
+ {
+ .iv = 0,
+ .level = 33,
+ .species = SPECIES_STARYU
+ },
+ {
+ .iv = 0,
+ .level = 33,
+ .species = SPECIES_STARYU
+ },
+ {
+ .iv = 0,
+ .level = 33,
+ .species = SPECIES_STARYU
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Anonymous6[] = {
+ {
+ .iv = 0,
+ .level = 36,
+ .species = SPECIES_STARYU
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Isaiah1[] = {
+ {
+ .iv = 0,
+ .level = 36,
+ .species = SPECIES_STARYU
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Anonymous7[] = {
+ {
+ .iv = 0,
+ .level = 36,
+ .species = SPECIES_STARYU
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Chase[] = {
+ {
+ .iv = 0,
+ .level = 27,
+ .species = SPECIES_WINGULL
+ },
+ {
+ .iv = 80,
+ .level = 35,
+ .species = SPECIES_STARYU
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Isaiah2[] = {
+ {
+ .iv = 10,
+ .level = 39,
+ .species = SPECIES_STARYU
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Isaiah3[] = {
+ {
+ .iv = 20,
+ .level = 42,
+ .species = SPECIES_STARYU
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Isaiah4[] = {
+ {
+ .iv = 30,
+ .level = 45,
+ .species = SPECIES_STARMIE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Isaiah5[] = {
+ {
+ .iv = 40,
+ .level = 48,
+ .species = SPECIES_STARMIE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Anonymous8[] = {
+ {
+ .iv = 0,
+ .level = 26,
+ .species = SPECIES_WINGULL
+ },
+ {
+ .iv = 160,
+ .level = 34,
+ .species = SPECIES_STARYU
+ },
+ {
+ .iv = 0,
+ .level = 26,
+ .species = SPECIES_WINGULL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Connor[] = {
+ {
+ .iv = 0,
+ .level = 25,
+ .species = SPECIES_WINGULL
+ },
+ {
+ .iv = 160,
+ .level = 33,
+ .species = SPECIES_STARYU
+ },
+ {
+ .iv = 0,
+ .level = 25,
+ .species = SPECIES_WINGULL
+ },
+ {
+ .iv = 160,
+ .level = 33,
+ .species = SPECIES_STARYU
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Anonymous9[] = {
+ {
+ .iv = 0,
+ .level = 36,
+ .species = SPECIES_STARYU
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Katelyn1[] = {
+ {
+ .iv = 0,
+ .level = 36,
+ .species = SPECIES_STARYU
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Allison[] = {
+ {
+ .iv = 0,
+ .level = 25,
+ .species = SPECIES_WINGULL
+ },
+ {
+ .iv = 0,
+ .level = 25,
+ .species = SPECIES_WINGULL
+ },
+ {
+ .iv = 240,
+ .level = 33,
+ .species = SPECIES_STARYU
+ },
+ {
+ .iv = 0,
+ .level = 25,
+ .species = SPECIES_WINGULL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Katelyn2[] = {
+ {
+ .iv = 10,
+ .level = 39,
+ .species = SPECIES_STARYU
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Katelyn3[] = {
+ {
+ .iv = 20,
+ .level = 42,
+ .species = SPECIES_STARYU
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Katelyn4[] = {
+ {
+ .iv = 30,
+ .level = 45,
+ .species = SPECIES_STARMIE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Katelyn5[] = {
+ {
+ .iv = 40,
+ .level = 48,
+ .species = SPECIES_STARMIE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Nicolas1[] = {
+ {
+ .iv = 100,
+ .level = 38,
+ .species = SPECIES_ALTARIA
+ },
+ {
+ .iv = 100,
+ .level = 38,
+ .species = SPECIES_ALTARIA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Nicolas2[] = {
+ {
+ .iv = 110,
+ .level = 41,
+ .species = SPECIES_ALTARIA
+ },
+ {
+ .iv = 110,
+ .level = 41,
+ .species = SPECIES_ALTARIA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Nicolas3[] = {
+ {
+ .iv = 120,
+ .level = 44,
+ .species = SPECIES_ALTARIA
+ },
+ {
+ .iv = 120,
+ .level = 44,
+ .species = SPECIES_ALTARIA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Nicolas4[] = {
+ {
+ .iv = 130,
+ .level = 46,
+ .species = SPECIES_BAGON
+ },
+ {
+ .iv = 130,
+ .level = 46,
+ .species = SPECIES_ALTARIA
+ },
+ {
+ .iv = 130,
+ .level = 46,
+ .species = SPECIES_ALTARIA
+ }
+};
+
+const struct TrainerPartyMember2 gTrainerParty_Nicolas5[] = {
+ {
+ .iv = 140,
+ .level = 49,
+ .species = SPECIES_ALTARIA,
+ .heldItem = ITEM_NONE
+ },
+ {
+ .iv = 140,
+ .level = 49,
+ .species = SPECIES_ALTARIA,
+ .heldItem = ITEM_NONE
+ },
+ {
+ .iv = 140,
+ .level = 49,
+ .species = SPECIES_SHELGON,
+ .heldItem = ITEM_DRAGON_FANG
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Aaron[] = {
+ {
+ .iv = 100,
+ .level = 35,
+ .species = SPECIES_BAGON
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Perry[] = {
+ {
+ .iv = 0,
+ .level = 27,
+ .species = SPECIES_WINGULL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Hugh[] = {
+ {
+ .iv = 0,
+ .level = 27,
+ .species = SPECIES_SWELLOW
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Phil[] = {
+ {
+ .iv = 0,
+ .level = 25,
+ .species = SPECIES_TAILLOW
+ },
+ {
+ .iv = 0,
+ .level = 25,
+ .species = SPECIES_WINGULL
+ },
+ {
+ .iv = 0,
+ .level = 25,
+ .species = SPECIES_SWELLOW
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Jared[] = {
+ {
+ .iv = 100,
+ .level = 30,
+ .species = SPECIES_DODUO
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Anonymous10[] = {
+ {
+ .iv = 100,
+ .level = 29,
+ .species = SPECIES_WINGULL
+ },
+ {
+ .iv = 100,
+ .level = 29,
+ .species = SPECIES_TAILLOW
+ },
+ {
+ .iv = 100,
+ .level = 29,
+ .species = SPECIES_SWABLU
+ },
+ {
+ .iv = 100,
+ .level = 29,
+ .species = SPECIES_TAILLOW
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Tanner[] = {
+ {
+ .iv = 100,
+ .level = 30,
+ .species = SPECIES_SWABLU
+ },
+ {
+ .iv = 100,
+ .level = 30,
+ .species = SPECIES_SWABLU
+ },
+ {
+ .iv = 100,
+ .level = 30,
+ .species = SPECIES_WINGULL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Will[] = {
+ {
+ .iv = 100,
+ .level = 28,
+ .species = SPECIES_WINGULL
+ },
+ {
+ .iv = 100,
+ .level = 28,
+ .species = SPECIES_SWELLOW
+ },
+ {
+ .iv = 100,
+ .level = 28,
+ .species = SPECIES_PELIPPER
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Colin[] = {
+ {
+ .iv = 0,
+ .level = 29,
+ .species = SPECIES_NATU
+ },
+ {
+ .iv = 0,
+ .level = 29,
+ .species = SPECIES_SWELLOW
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Robert1[] = {
+ {
+ .iv = 0,
+ .level = 30,
+ .species = SPECIES_SWABLU
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Benny[] = {
+ {
+ .iv = 0,
+ .level = 36,
+ .species = SPECIES_SWELLOW
+ },
+ {
+ .iv = 0,
+ .level = 36,
+ .species = SPECIES_PELIPPER
+ },
+ {
+ .iv = 0,
+ .level = 36,
+ .species = SPECIES_XATU
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Chester[] = {
+ {
+ .iv = 0,
+ .level = 26,
+ .species = SPECIES_TAILLOW
+ },
+ {
+ .iv = 0,
+ .level = 26,
+ .species = SPECIES_SWELLOW
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Robert2[] = {
+ {
+ .iv = 10,
+ .level = 32,
+ .species = SPECIES_NATU
+ },
+ {
+ .iv = 10,
+ .level = 32,
+ .species = SPECIES_SWABLU
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Robert3[] = {
+ {
+ .iv = 20,
+ .level = 35,
+ .species = SPECIES_NATU
+ },
+ {
+ .iv = 20,
+ .level = 35,
+ .species = SPECIES_ALTARIA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Robert4[] = {
+ {
+ .iv = 30,
+ .level = 38,
+ .species = SPECIES_NATU
+ },
+ {
+ .iv = 30,
+ .level = 38,
+ .species = SPECIES_ALTARIA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Robert5[] = {
+ {
+ .iv = 40,
+ .level = 41,
+ .species = SPECIES_ALTARIA
+ },
+ {
+ .iv = 40,
+ .level = 41,
+ .species = SPECIES_XATU
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Alex[] = {
+ {
+ .iv = 0,
+ .level = 32,
+ .species = SPECIES_NATU
+ },
+ {
+ .iv = 0,
+ .level = 32,
+ .species = SPECIES_WINGULL
+ },
+ {
+ .iv = 0,
+ .level = 32,
+ .species = SPECIES_SWELLOW
+ },
+ {
+ .iv = 0,
+ .level = 32,
+ .species = SPECIES_PELIPPER
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Beck[] = {
+ {
+ .iv = 0,
+ .level = 34,
+ .species = SPECIES_PELIPPER
+ },
+ {
+ .iv = 0,
+ .level = 34,
+ .species = SPECIES_PELIPPER
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Yasu[] = {
+ {
+ .iv = 0,
+ .level = 27,
+ .species = SPECIES_NINJASK
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Takashi[] = {
+ {
+ .iv = 0,
+ .level = 25,
+ .species = SPECIES_NINCADA
+ },
+ {
+ .iv = 0,
+ .level = 25,
+ .species = SPECIES_KOFFING
+ },
+ {
+ .iv = 0,
+ .level = 25,
+ .species = SPECIES_NINJASK
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Makoto[] = {
+ {
+ .iv = 0,
+ .level = 23,
+ .species = SPECIES_NINJASK
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Hideo1[] = {
+ {
+ .iv = 0,
+ .level = 20,
+ .species = SPECIES_NINJASK
+ },
+ {
+ .iv = 0,
+ .level = 20,
+ .species = SPECIES_SHEDINJA
+ },
+ {
+ .iv = 0,
+ .level = 20,
+ .species = SPECIES_TRAPINCH
+ },
+ {
+ .iv = 0,
+ .level = 20,
+ .species = SPECIES_NINJASK
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Lao1[] = {
+ {
+ .iv = 0,
+ .level = 17,
+ .species = SPECIES_KOFFING,
+ .moves = MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SMOG, MOVE_SELF_DESTRUCT
+ },
+ {
+ .iv = 0,
+ .level = 17,
+ .species = SPECIES_KOFFING,
+ .moves = MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SMOG, MOVE_NONE
+ },
+ {
+ .iv = 0,
+ .level = 17,
+ .species = SPECIES_KOFFING,
+ .moves = MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SMOG, MOVE_SELF_DESTRUCT
+ },
+ {
+ .iv = 0,
+ .level = 19,
+ .species = SPECIES_KOFFING,
+ .moves = MOVE_TACKLE, MOVE_SMOG, MOVE_NONE, MOVE_NONE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Lung[] = {
+ {
+ .iv = 0,
+ .level = 19,
+ .species = SPECIES_NINCADA
+ },
+ {
+ .iv = 0,
+ .level = 19,
+ .species = SPECIES_NINJASK
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Lao2[] = {
+ {
+ .iv = 0,
+ .level = 24,
+ .species = SPECIES_KOFFING,
+ .moves = MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_SELF_DESTRUCT
+ },
+ {
+ .iv = 0,
+ .level = 24,
+ .species = SPECIES_KOFFING,
+ .moves = MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_NONE
+ },
+ {
+ .iv = 0,
+ .level = 24,
+ .species = SPECIES_KOFFING,
+ .moves = MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_SELF_DESTRUCT
+ },
+ {
+ .iv = 0,
+ .level = 26,
+ .species = SPECIES_KOFFING,
+ .moves = MOVE_TACKLE, MOVE_SLUDGE, MOVE_NONE, MOVE_NONE
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Lao3[] = {
+ {
+ .iv = 20,
+ .level = 27,
+ .species = SPECIES_KOFFING,
+ .moves = MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_SELF_DESTRUCT
+ },
+ {
+ .iv = 20,
+ .level = 27,
+ .species = SPECIES_KOFFING,
+ .moves = MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_SELF_DESTRUCT
+ },
+ {
+ .iv = 20,
+ .level = 27,
+ .species = SPECIES_KOFFING,
+ .moves = MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_NONE
+ },
+ {
+ .iv = 20,
+ .level = 29,
+ .species = SPECIES_KOFFING,
+ .moves = MOVE_TACKLE, MOVE_SLUDGE, MOVE_NONE, MOVE_NONE
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Lao4[] = {
+ {
+ .iv = 30,
+ .level = 30,
+ .species = SPECIES_KOFFING,
+ .moves = MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_NONE
+ },
+ {
+ .iv = 30,
+ .level = 30,
+ .species = SPECIES_KOFFING,
+ .moves = MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_NONE
+ },
+ {
+ .iv = 30,
+ .level = 30,
+ .species = SPECIES_KOFFING,
+ .moves = MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_NONE
+ },
+ {
+ .iv = 30,
+ .level = 32,
+ .species = SPECIES_KOFFING,
+ .moves = MOVE_TACKLE, MOVE_SLUDGE, MOVE_NONE, MOVE_NONE
+ }
+};
+
+const struct TrainerPartyMember3 gTrainerParty_Lao5[] = {
+ {
+ .iv = 40,
+ .level = 33,
+ .species = SPECIES_KOFFING,
+ .heldItem = ITEM_NONE,
+ .moves = MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_NONE
+ },
+ {
+ .iv = 40,
+ .level = 33,
+ .species = SPECIES_KOFFING,
+ .heldItem = ITEM_NONE,
+ .moves = MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_SELF_DESTRUCT
+ },
+ {
+ .iv = 40,
+ .level = 33,
+ .species = SPECIES_KOFFING,
+ .heldItem = ITEM_NONE,
+ .moves = MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_SELF_DESTRUCT
+ },
+ {
+ .iv = 40,
+ .level = 35,
+ .species = SPECIES_WEEZING,
+ .heldItem = ITEM_SMOKE_BALL,
+ .moves = MOVE_TACKLE, MOVE_SLUDGE, MOVE_NONE, MOVE_NONE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Tessa[] = {
+ {
+ .iv = 100,
+ .level = 12,
+ .species = SPECIES_MEDITITE
+ },
+ {
+ .iv = 100,
+ .level = 12,
+ .species = SPECIES_MACHOP
+ },
+ {
+ .iv = 100,
+ .level = 12,
+ .species = SPECIES_MEDITITE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Laura[] = {
+ {
+ .iv = 100,
+ .level = 14,
+ .species = SPECIES_MEDITITE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Cyndy1[] = {
+ {
+ .iv = 100,
+ .level = 19,
+ .species = SPECIES_MEDITITE
+ },
+ {
+ .iv = 100,
+ .level = 19,
+ .species = SPECIES_MAKUHITA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Cora[] = {
+ {
+ .iv = 100,
+ .level = 27,
+ .species = SPECIES_MEDITITE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Jill[] = {
+ {
+ .iv = 100,
+ .level = 27,
+ .species = SPECIES_BRELOOM
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Cyndy2[] = {
+ {
+ .iv = 110,
+ .level = 26,
+ .species = SPECIES_MEDITITE
+ },
+ {
+ .iv = 110,
+ .level = 26,
+ .species = SPECIES_MAKUHITA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Cyndy3[] = {
+ {
+ .iv = 120,
+ .level = 29,
+ .species = SPECIES_MEDITITE
+ },
+ {
+ .iv = 120,
+ .level = 29,
+ .species = SPECIES_MAKUHITA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Cyndy4[] = {
+ {
+ .iv = 130,
+ .level = 32,
+ .species = SPECIES_MEDICHAM
+ },
+ {
+ .iv = 130,
+ .level = 32,
+ .species = SPECIES_HARIYAMA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Cyndy5[] = {
+ {
+ .iv = 140,
+ .level = 35,
+ .species = SPECIES_MEDICHAM
+ },
+ {
+ .iv = 140,
+ .level = 35,
+ .species = SPECIES_HARIYAMA
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Madeline1[] = {
+ {
+ .iv = 0,
+ .level = 20,
+ .species = SPECIES_NUMEL,
+ .moves = MOVE_EMBER, MOVE_TACKLE, MOVE_MAGNITUDE, MOVE_SUNNY_DAY
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Clarissa[] = {
+ {
+ .iv = 0,
+ .level = 29,
+ .species = SPECIES_GOLDEEN
+ },
+ {
+ .iv = 0,
+ .level = 29,
+ .species = SPECIES_WAILMER
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Angelica[] = {
+ {
+ .iv = 0,
+ .level = 30,
+ .species = SPECIES_CASTFORM
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Madeline2[] = {
+ {
+ .iv = 10,
+ .level = 27,
+ .species = SPECIES_NUMEL,
+ .moves = MOVE_EMBER, MOVE_TACKLE, MOVE_MAGNITUDE, MOVE_SUNNY_DAY
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Madeline3[] = {
+ {
+ .iv = 20,
+ .level = 30,
+ .species = SPECIES_NUMEL,
+ .moves = MOVE_EMBER, MOVE_TAKE_DOWN, MOVE_MAGNITUDE, MOVE_SUNNY_DAY
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Madeline4[] = {
+ {
+ .iv = 30,
+ .level = 32,
+ .species = SPECIES_ROSELIA,
+ .moves = MOVE_LEECH_SEED, MOVE_MEGA_DRAIN, MOVE_GRASS_WHISTLE, MOVE_SUNNY_DAY
+ },
+ {
+ .iv = 30,
+ .level = 32,
+ .species = SPECIES_NUMEL,
+ .moves = MOVE_FLAMETHROWER, MOVE_TAKE_DOWN, MOVE_MAGNITUDE, MOVE_SUNNY_DAY
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Madeline5[] = {
+ {
+ .iv = 40,
+ .level = 35,
+ .species = SPECIES_ROSELIA,
+ .moves = MOVE_LEECH_SEED, MOVE_GIGA_DRAIN, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY
+ },
+ {
+ .iv = 40,
+ .level = 35,
+ .species = SPECIES_CAMERUPT,
+ .moves = MOVE_FLAMETHROWER, MOVE_TAKE_DOWN, MOVE_EARTHQUAKE, MOVE_SUNNY_DAY
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Beverly[] = {
+ {
+ .iv = 0,
+ .level = 26,
+ .species = SPECIES_WAILMER
+ },
+ {
+ .iv = 0,
+ .level = 26,
+ .species = SPECIES_WAILMER
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Dawn[] = {
+ {
+ .iv = 0,
+ .level = 27,
+ .species = SPECIES_MARILL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Nicole[] = {
+ {
+ .iv = 0,
+ .level = 27,
+ .species = SPECIES_WAILMER
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Denise[] = {
+ {
+ .iv = 0,
+ .level = 27,
+ .species = SPECIES_WINGULL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Beth[] = {
+ {
+ .iv = 0,
+ .level = 25,
+ .species = SPECIES_MARILL
+ },
+ {
+ .iv = 0,
+ .level = 25,
+ .species = SPECIES_GOLDEEN
+ },
+ {
+ .iv = 0,
+ .level = 25,
+ .species = SPECIES_WINGULL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Tara[] = {
+ {
+ .iv = 0,
+ .level = 26,
+ .species = SPECIES_HORSEA
+ },
+ {
+ .iv = 0,
+ .level = 26,
+ .species = SPECIES_MARILL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Missy[] = {
+ {
+ .iv = 0,
+ .level = 24,
+ .species = SPECIES_GOLDEEN
+ },
+ {
+ .iv = 0,
+ .level = 24,
+ .species = SPECIES_WINGULL
+ },
+ {
+ .iv = 0,
+ .level = 24,
+ .species = SPECIES_MARILL
+ },
+ {
+ .iv = 0,
+ .level = 24,
+ .species = SPECIES_WAILMER
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Alice[] = {
+ {
+ .iv = 0,
+ .level = 25,
+ .species = SPECIES_GOLDEEN
+ },
+ {
+ .iv = 0,
+ .level = 25,
+ .species = SPECIES_WINGULL
+ },
+ {
+ .iv = 0,
+ .level = 25,
+ .species = SPECIES_GOLDEEN
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Jenny1[] = {
+ {
+ .iv = 0,
+ .level = 35,
+ .species = SPECIES_WAILMER
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Grace[] = {
+ {
+ .iv = 0,
+ .level = 33,
+ .species = SPECIES_MARILL
+ },
+ {
+ .iv = 0,
+ .level = 33,
+ .species = SPECIES_WAILMER
+ },
+ {
+ .iv = 0,
+ .level = 33,
+ .species = SPECIES_WINGULL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Tanya[] = {
+ {
+ .iv = 0,
+ .level = 35,
+ .species = SPECIES_LUVDISC
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Sharon[] = {
+ {
+ .iv = 0,
+ .level = 34,
+ .species = SPECIES_GOLDEEN
+ },
+ {
+ .iv = 0,
+ .level = 34,
+ .species = SPECIES_SEAKING
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Nikki[] = {
+ {
+ .iv = 0,
+ .level = 32,
+ .species = SPECIES_MARILL
+ },
+ {
+ .iv = 0,
+ .level = 32,
+ .species = SPECIES_WAILMER
+ },
+ {
+ .iv = 0,
+ .level = 32,
+ .species = SPECIES_SPHEAL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Brenda[] = {
+ {
+ .iv = 0,
+ .level = 35,
+ .species = SPECIES_GOLDEEN
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Katie[] = {
+ {
+ .iv = 0,
+ .level = 33,
+ .species = SPECIES_GOLDEEN
+ },
+ {
+ .iv = 0,
+ .level = 33,
+ .species = SPECIES_CHINCHOU
+ },
+ {
+ .iv = 0,
+ .level = 33,
+ .species = SPECIES_SPHEAL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Susie[] = {
+ {
+ .iv = 0,
+ .level = 33,
+ .species = SPECIES_HORSEA
+ },
+ {
+ .iv = 0,
+ .level = 33,
+ .species = SPECIES_WAILMER
+ },
+ {
+ .iv = 0,
+ .level = 33,
+ .species = SPECIES_PELIPPER
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Kara[] = {
+ {
+ .iv = 0,
+ .level = 35,
+ .species = SPECIES_SEAKING
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Dana[] = {
+ {
+ .iv = 0,
+ .level = 33,
+ .species = SPECIES_MARILL
+ },
+ {
+ .iv = 0,
+ .level = 33,
+ .species = SPECIES_LUVDISC
+ },
+ {
+ .iv = 0,
+ .level = 33,
+ .species = SPECIES_AZUMARILL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Erin[] = {
+ {
+ .iv = 0,
+ .level = 38,
+ .species = SPECIES_WAILMER
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Debra[] = {
+ {
+ .iv = 0,
+ .level = 34,
+ .species = SPECIES_GOLDEEN
+ },
+ {
+ .iv = 0,
+ .level = 34,
+ .species = SPECIES_SEAKING
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Linda[] = {
+ {
+ .iv = 0,
+ .level = 34,
+ .species = SPECIES_HORSEA
+ },
+ {
+ .iv = 0,
+ .level = 34,
+ .species = SPECIES_SEADRA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Kaylee[] = {
+ {
+ .iv = 0,
+ .level = 34,
+ .species = SPECIES_LANTURN
+ },
+ {
+ .iv = 0,
+ .level = 34,
+ .species = SPECIES_PELIPPER
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Laurel[] = {
+ {
+ .iv = 0,
+ .level = 33,
+ .species = SPECIES_LUVDISC
+ },
+ {
+ .iv = 0,
+ .level = 33,
+ .species = SPECIES_LUVDISC
+ },
+ {
+ .iv = 0,
+ .level = 33,
+ .species = SPECIES_LUVDISC
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Darcy[] = {
+ {
+ .iv = 0,
+ .level = 13,
+ .species = SPECIES_GOLDEEN
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Jenny2[] = {
+ {
+ .iv = 0,
+ .level = 38,
+ .species = SPECIES_WAILMER
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Jenny3[] = {
+ {
+ .iv = 0,
+ .level = 41,
+ .species = SPECIES_WAILMER
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Jenny4[] = {
+ {
+ .iv = 0,
+ .level = 43,
+ .species = SPECIES_STARYU
+ },
+ {
+ .iv = 0,
+ .level = 43,
+ .species = SPECIES_WAILMER
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Jenny5[] = {
+ {
+ .iv = 0,
+ .level = 45,
+ .species = SPECIES_LUVDISC
+ },
+ {
+ .iv = 0,
+ .level = 45,
+ .species = SPECIES_WAILMER
+ },
+ {
+ .iv = 0,
+ .level = 45,
+ .species = SPECIES_STARMIE
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Heidi[] = {
+ {
+ .iv = 0,
+ .level = 23,
+ .species = SPECIES_SANDSHREW,
+ .moves = MOVE_DIG, MOVE_SAND_ATTACK, MOVE_POISON_STING, MOVE_SLASH
+ },
+ {
+ .iv = 0,
+ .level = 23,
+ .species = SPECIES_BALTOY,
+ .moves = MOVE_RAPID_SPIN, MOVE_MUD_SLAP, MOVE_PSYBEAM, MOVE_ROCK_TOMB
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Becky[] = {
+ {
+ .iv = 0,
+ .level = 24,
+ .species = SPECIES_SANDSHREW,
+ .moves = MOVE_SAND_ATTACK, MOVE_POISON_STING, MOVE_SLASH, MOVE_DIG
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Carol[] = {
+ {
+ .iv = 0,
+ .level = 18,
+ .species = SPECIES_TAILLOW
+ },
+ {
+ .iv = 0,
+ .level = 18,
+ .species = SPECIES_LOMBRE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Nancy[] = {
+ {
+ .iv = 0,
+ .level = 19,
+ .species = SPECIES_MARILL
+ },
+ {
+ .iv = 0,
+ .level = 19,
+ .species = SPECIES_LOMBRE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Martha[] = {
+ {
+ .iv = 0,
+ .level = 23,
+ .species = SPECIES_SKITTY
+ },
+ {
+ .iv = 0,
+ .level = 23,
+ .species = SPECIES_SWABLU
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Diana1[] = {
+ {
+ .iv = 0,
+ .level = 20,
+ .species = SPECIES_SHROOMISH
+ },
+ {
+ .iv = 0,
+ .level = 20,
+ .species = SPECIES_ODDISH
+ },
+ {
+ .iv = 0,
+ .level = 20,
+ .species = SPECIES_SWABLU
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Nina[] = {
+ {
+ .iv = 0,
+ .level = 9,
+ .species = SPECIES_SWABLU
+ },
+ {
+ .iv = 0,
+ .level = 9,
+ .species = SPECIES_ZIGZAGOON
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Irene[] = {
+ {
+ .iv = 0,
+ .level = 18,
+ .species = SPECIES_SHROOMISH
+ },
+ {
+ .iv = 0,
+ .level = 18,
+ .species = SPECIES_MARILL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Diana2[] = {
+ {
+ .iv = 10,
+ .level = 25,
+ .species = SPECIES_SHROOMISH
+ },
+ {
+ .iv = 10,
+ .level = 25,
+ .species = SPECIES_GLOOM
+ },
+ {
+ .iv = 10,
+ .level = 25,
+ .species = SPECIES_SWABLU
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Diana3[] = {
+ {
+ .iv = 20,
+ .level = 28,
+ .species = SPECIES_BRELOOM
+ },
+ {
+ .iv = 20,
+ .level = 28,
+ .species = SPECIES_GLOOM
+ },
+ {
+ .iv = 20,
+ .level = 28,
+ .species = SPECIES_SWABLU
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Diana4[] = {
+ {
+ .iv = 30,
+ .level = 31,
+ .species = SPECIES_BRELOOM
+ },
+ {
+ .iv = 30,
+ .level = 31,
+ .species = SPECIES_GLOOM
+ },
+ {
+ .iv = 30,
+ .level = 31,
+ .species = SPECIES_SWABLU
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Diana5[] = {
+ {
+ .iv = 40,
+ .level = 40,
+ .species = SPECIES_BRELOOM
+ },
+ {
+ .iv = 40,
+ .level = 40,
+ .species = SPECIES_VILEPLUME
+ },
+ {
+ .iv = 40,
+ .level = 40,
+ .species = SPECIES_ALTARIA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_AmyAndLiv1[] = {
+ {
+ .iv = 0,
+ .level = 16,
+ .species = SPECIES_PLUSLE
+ },
+ {
+ .iv = 0,
+ .level = 16,
+ .species = SPECIES_MINUN
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_AmyAndLiv2[] = {
+ {
+ .iv = 10,
+ .level = 27,
+ .species = SPECIES_PLUSLE
+ },
+ {
+ .iv = 10,
+ .level = 27,
+ .species = SPECIES_MINUN
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_GinaAndMia1[] = {
+ {
+ .iv = 0,
+ .level = 8,
+ .species = SPECIES_LOTAD
+ },
+ {
+ .iv = 0,
+ .level = 8,
+ .species = SPECIES_SEEDOT
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_MiuAndYuki[] = {
+ {
+ .iv = 0,
+ .level = 27,
+ .species = SPECIES_BEAUTIFLY
+ },
+ {
+ .iv = 0,
+ .level = 27,
+ .species = SPECIES_DUSTOX
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_AmyAndLiv3[] = {
+ {
+ .iv = 0,
+ .level = 9,
+ .species = SPECIES_PLUSLE
+ },
+ {
+ .iv = 0,
+ .level = 9,
+ .species = SPECIES_MINUN
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_GinaAndMia2[] = {
+ {
+ .iv = 0,
+ .level = 10,
+ .species = SPECIES_DUSKULL,
+ .moves = MOVE_NIGHT_SHADE, MOVE_DISABLE, MOVE_NONE, MOVE_NONE
+ },
+ {
+ .iv = 0,
+ .level = 10,
+ .species = SPECIES_SHROOMISH,
+ .moves = MOVE_ABSORB, MOVE_LEECH_SEED, MOVE_NONE, MOVE_NONE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_AmyAndLiv4[] = {
+ {
+ .iv = 20,
+ .level = 30,
+ .species = SPECIES_PLUSLE
+ },
+ {
+ .iv = 20,
+ .level = 30,
+ .species = SPECIES_MINUN
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_AmyAndLiv5[] = {
+ {
+ .iv = 30,
+ .level = 33,
+ .species = SPECIES_PLUSLE,
+ .moves = MOVE_SPARK, MOVE_CHARGE, MOVE_FAKE_TEARS, MOVE_HELPING_HAND
+ },
+ {
+ .iv = 30,
+ .level = 33,
+ .species = SPECIES_MINUN,
+ .moves = MOVE_SPARK, MOVE_CHARGE, MOVE_CHARM, MOVE_HELPING_HAND
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_AmyAndLiv6[] = {
+ {
+ .iv = 40,
+ .level = 36,
+ .species = SPECIES_PLUSLE,
+ .moves = MOVE_THUNDER, MOVE_CHARGE, MOVE_FAKE_TEARS, MOVE_HELPING_HAND
+ },
+ {
+ .iv = 40,
+ .level = 36,
+ .species = SPECIES_MINUN,
+ .moves = MOVE_THUNDER, MOVE_CHARGE, MOVE_CHARM, MOVE_HELPING_HAND
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Huey[] = {
+ {
+ .iv = 0,
+ .level = 14,
+ .species = SPECIES_MACHOP
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Edmond[] = {
+ {
+ .iv = 0,
+ .level = 12,
+ .species = SPECIES_WINGULL
+ },
+ {
+ .iv = 0,
+ .level = 12,
+ .species = SPECIES_MACHOP
+ },
+ {
+ .iv = 0,
+ .level = 12,
+ .species = SPECIES_WINGULL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Ernest1[] = {
+ {
+ .iv = 0,
+ .level = 33,
+ .species = SPECIES_WINGULL
+ },
+ {
+ .iv = 0,
+ .level = 33,
+ .species = SPECIES_TENTACOOL
+ },
+ {
+ .iv = 0,
+ .level = 33,
+ .species = SPECIES_MACHOKE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Dwayne[] = {
+ {
+ .iv = 0,
+ .level = 11,
+ .species = SPECIES_WINGULL
+ },
+ {
+ .iv = 0,
+ .level = 11,
+ .species = SPECIES_MACHOP
+ },
+ {
+ .iv = 0,
+ .level = 11,
+ .species = SPECIES_TENTACOOL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Phillip[] = {
+ {
+ .iv = 0,
+ .level = 44,
+ .species = SPECIES_TENTACRUEL
+ },
+ {
+ .iv = 0,
+ .level = 44,
+ .species = SPECIES_MACHOKE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Leonard[] = {
+ {
+ .iv = 0,
+ .level = 43,
+ .species = SPECIES_MACHOP
+ },
+ {
+ .iv = 0,
+ .level = 43,
+ .species = SPECIES_PELIPPER
+ },
+ {
+ .iv = 0,
+ .level = 43,
+ .species = SPECIES_MACHOKE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Duncan[] = {
+ {
+ .iv = 0,
+ .level = 26,
+ .species = SPECIES_WAILMER
+ },
+ {
+ .iv = 0,
+ .level = 26,
+ .species = SPECIES_MACHOKE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Ernest2[] = {
+ {
+ .iv = 10,
+ .level = 36,
+ .species = SPECIES_WINGULL
+ },
+ {
+ .iv = 10,
+ .level = 36,
+ .species = SPECIES_TENTACOOL
+ },
+ {
+ .iv = 10,
+ .level = 36,
+ .species = SPECIES_MACHOKE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Ernest3[] = {
+ {
+ .iv = 20,
+ .level = 39,
+ .species = SPECIES_PELIPPER
+ },
+ {
+ .iv = 20,
+ .level = 39,
+ .species = SPECIES_TENTACOOL
+ },
+ {
+ .iv = 20,
+ .level = 39,
+ .species = SPECIES_MACHOKE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Ernest4[] = {
+ {
+ .iv = 30,
+ .level = 42,
+ .species = SPECIES_PELIPPER
+ },
+ {
+ .iv = 30,
+ .level = 42,
+ .species = SPECIES_TENTACOOL
+ },
+ {
+ .iv = 30,
+ .level = 42,
+ .species = SPECIES_MACHOKE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Ernest5[] = {
+ {
+ .iv = 40,
+ .level = 45,
+ .species = SPECIES_PELIPPER
+ },
+ {
+ .iv = 40,
+ .level = 45,
+ .species = SPECIES_MACHOKE
+ },
+ {
+ .iv = 40,
+ .level = 45,
+ .species = SPECIES_TENTACRUEL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Anonymous11[] = {
+ {
+ .iv = 0,
+ .level = 22,
+ .species = SPECIES_ROSELIA
+ },
+ {
+ .iv = 0,
+ .level = 22,
+ .species = SPECIES_ROSELIA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Anonymous12[] = {
+ {
+ .iv = 0,
+ .level = 21,
+ .species = SPECIES_ROSELIA
+ },
+ {
+ .iv = 0,
+ .level = 21,
+ .species = SPECIES_ROSELIA
+ },
+ {
+ .iv = 0,
+ .level = 21,
+ .species = SPECIES_ROSELIA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Anonymous13[] = {
+ {
+ .iv = 0,
+ .level = 23,
+ .species = SPECIES_ROSELIA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Sonny[] = {
+ {
+ .iv = 0,
+ .level = 35,
+ .species = SPECIES_SPHEAL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Donovan[] = {
+ {
+ .iv = 0,
+ .level = 34,
+ .species = SPECIES_SPHEAL
+ },
+ {
+ .iv = 0,
+ .level = 34,
+ .species = SPECIES_SPHEAL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Gerald[] = {
+ {
+ .iv = 0,
+ .level = 33,
+ .species = SPECIES_SPHEAL
+ },
+ {
+ .iv = 0,
+ .level = 33,
+ .species = SPECIES_SPHEAL
+ },
+ {
+ .iv = 0,
+ .level = 33,
+ .species = SPECIES_SPHEAL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Kelvin[] = {
+ {
+ .iv = 0,
+ .level = 34,
+ .species = SPECIES_SPHEAL
+ },
+ {
+ .iv = 0,
+ .level = 34,
+ .species = SPECIES_SPHEAL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Kody[] = {
+ {
+ .iv = 0,
+ .level = 33,
+ .species = SPECIES_SPHEAL
+ },
+ {
+ .iv = 0,
+ .level = 33,
+ .species = SPECIES_SPHEAL
+ },
+ {
+ .iv = 0,
+ .level = 33,
+ .species = SPECIES_SPHEAL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Tevin[] = {
+ {
+ .iv = 0,
+ .level = 35,
+ .species = SPECIES_SPHEAL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Damon[] = {
+ {
+ .iv = 0,
+ .level = 34,
+ .species = SPECIES_SPHEAL
+ },
+ {
+ .iv = 0,
+ .level = 34,
+ .species = SPECIES_SPHEAL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Pablo[] = {
+ {
+ .iv = 0,
+ .level = 35,
+ .species = SPECIES_SPHEAL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Edwin1[] = {
+ {
+ .iv = 0,
+ .level = 14,
+ .species = SPECIES_LOMBRE
+ },
+ {
+ .iv = 0,
+ .level = 14,
+ .species = SPECIES_NUZLEAF
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Hector1[] = {
+ {
+ .iv = 0,
+ .level = 20,
+ .species = SPECIES_ZANGOOSE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Hector2[] = {
+ {
+ .iv = 0,
+ .level = 20,
+ .species = SPECIES_SEVIPER
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Edwin2[] = {
+ {
+ .iv = 0,
+ .level = 26,
+ .species = SPECIES_LOMBRE
+ },
+ {
+ .iv = 0,
+ .level = 26,
+ .species = SPECIES_NUZLEAF
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Edwin3[] = {
+ {
+ .iv = 0,
+ .level = 29,
+ .species = SPECIES_LOMBRE
+ },
+ {
+ .iv = 0,
+ .level = 29,
+ .species = SPECIES_NUZLEAF
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Edwin4[] = {
+ {
+ .iv = 0,
+ .level = 32,
+ .species = SPECIES_LOMBRE
+ },
+ {
+ .iv = 0,
+ .level = 32,
+ .species = SPECIES_NUZLEAF
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Edwin5[] = {
+ {
+ .iv = 0,
+ .level = 35,
+ .species = SPECIES_LUDICOLO
+ },
+ {
+ .iv = 0,
+ .level = 35,
+ .species = SPECIES_SHIFTRY
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Wally1[] = {
+ {
+ .iv = 150,
+ .level = 44,
+ .species = SPECIES_ALTARIA,
+ .moves = MOVE_AERIAL_ACE, MOVE_SAFEGUARD, MOVE_DRAGON_BREATH, MOVE_DRAGON_DANCE
+ },
+ {
+ .iv = 150,
+ .level = 43,
+ .species = SPECIES_DELCATTY,
+ .moves = MOVE_SING, MOVE_ASSIST, MOVE_CHARM, MOVE_FAINT_ATTACK
+ },
+ {
+ .iv = 150,
+ .level = 44,
+ .species = SPECIES_ROSELIA,
+ .moves = MOVE_MAGICAL_LEAF, MOVE_LEECH_SEED, MOVE_GIGA_DRAIN, MOVE_TOXIC
+ },
+ {
+ .iv = 150,
+ .level = 41,
+ .species = SPECIES_MAGNETON,
+ .moves = MOVE_SUPERSONIC, MOVE_THUNDERBOLT, MOVE_TRI_ATTACK, MOVE_SCREECH
+ },
+ {
+ .iv = 250,
+ .level = 45,
+ .species = SPECIES_GARDEVOIR,
+ .moves = MOVE_DOUBLE_TEAM, MOVE_CALM_MIND, MOVE_PSYCHIC, MOVE_FUTURE_SIGHT
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Brendan1[] = {
+ {
+ .iv = 0,
+ .level = 5,
+ .species = SPECIES_TREECKO
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Brendan2[] = {
+ {
+ .iv = 50,
+ .level = 18,
+ .species = SPECIES_NUMEL
+ },
+ {
+ .iv = 50,
+ .level = 18,
+ .species = SPECIES_WAILMER
+ },
+ {
+ .iv = 100,
+ .level = 20,
+ .species = SPECIES_GROVYLE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Brendan3[] = {
+ {
+ .iv = 100,
+ .level = 29,
+ .species = SPECIES_NUMEL
+ },
+ {
+ .iv = 100,
+ .level = 29,
+ .species = SPECIES_WAILMER
+ },
+ {
+ .iv = 150,
+ .level = 31,
+ .species = SPECIES_GROVYLE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Brendan4[] = {
+ {
+ .iv = 0,
+ .level = 5,
+ .species = SPECIES_TORCHIC
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Brendan5[] = {
+ {
+ .iv = 50,
+ .level = 18,
+ .species = SPECIES_WAILMER
+ },
+ {
+ .iv = 50,
+ .level = 18,
+ .species = SPECIES_SHROOMISH
+ },
+ {
+ .iv = 100,
+ .level = 20,
+ .species = SPECIES_COMBUSKEN
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Brendan6[] = {
+ {
+ .iv = 100,
+ .level = 29,
+ .species = SPECIES_WAILMER
+ },
+ {
+ .iv = 100,
+ .level = 29,
+ .species = SPECIES_SHROOMISH
+ },
+ {
+ .iv = 150,
+ .level = 31,
+ .species = SPECIES_COMBUSKEN
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Brendan7[] = {
+ {
+ .iv = 0,
+ .level = 5,
+ .species = SPECIES_MUDKIP
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Brendan8[] = {
+ {
+ .iv = 50,
+ .level = 18,
+ .species = SPECIES_SHROOMISH
+ },
+ {
+ .iv = 50,
+ .level = 18,
+ .species = SPECIES_NUMEL
+ },
+ {
+ .iv = 100,
+ .level = 20,
+ .species = SPECIES_MARSHTOMP
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Brendan9[] = {
+ {
+ .iv = 100,
+ .level = 29,
+ .species = SPECIES_SHROOMISH
+ },
+ {
+ .iv = 100,
+ .level = 29,
+ .species = SPECIES_NUMEL
+ },
+ {
+ .iv = 150,
+ .level = 31,
+ .species = SPECIES_MARSHTOMP
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_May1[] = {
+ {
+ .iv = 0,
+ .level = 5,
+ .species = SPECIES_TREECKO
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_May2[] = {
+ {
+ .iv = 50,
+ .level = 18,
+ .species = SPECIES_WAILMER
+ },
+ {
+ .iv = 50,
+ .level = 18,
+ .species = SPECIES_NUMEL
+ },
+ {
+ .iv = 100,
+ .level = 20,
+ .species = SPECIES_GROVYLE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_May3[] = {
+ {
+ .iv = 100,
+ .level = 29,
+ .species = SPECIES_NUMEL
+ },
+ {
+ .iv = 100,
+ .level = 29,
+ .species = SPECIES_WAILMER
+ },
+ {
+ .iv = 150,
+ .level = 31,
+ .species = SPECIES_GROVYLE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_May4[] = {
+ {
+ .iv = 0,
+ .level = 5,
+ .species = SPECIES_TORCHIC
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_May5[] = {
+ {
+ .iv = 50,
+ .level = 18,
+ .species = SPECIES_WAILMER
+ },
+ {
+ .iv = 50,
+ .level = 18,
+ .species = SPECIES_SHROOMISH
+ },
+ {
+ .iv = 100,
+ .level = 20,
+ .species = SPECIES_COMBUSKEN
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_May6[] = {
+ {
+ .iv = 100,
+ .level = 29,
+ .species = SPECIES_WAILMER
+ },
+ {
+ .iv = 100,
+ .level = 29,
+ .species = SPECIES_SHROOMISH
+ },
+ {
+ .iv = 150,
+ .level = 31,
+ .species = SPECIES_COMBUSKEN
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_May7[] = {
+ {
+ .iv = 0,
+ .level = 5,
+ .species = SPECIES_MUDKIP
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_May8[] = {
+ {
+ .iv = 50,
+ .level = 18,
+ .species = SPECIES_SHROOMISH
+ },
+ {
+ .iv = 50,
+ .level = 18,
+ .species = SPECIES_NUMEL
+ },
+ {
+ .iv = 100,
+ .level = 20,
+ .species = SPECIES_MARSHTOMP
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_May9[] = {
+ {
+ .iv = 100,
+ .level = 29,
+ .species = SPECIES_SHROOMISH
+ },
+ {
+ .iv = 100,
+ .level = 29,
+ .species = SPECIES_NUMEL
+ },
+ {
+ .iv = 150,
+ .level = 31,
+ .species = SPECIES_MARSHTOMP
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Isaac1[] = {
+ {
+ .iv = 0,
+ .level = 12,
+ .species = SPECIES_WHISMUR
+ },
+ {
+ .iv = 0,
+ .level = 12,
+ .species = SPECIES_ZIGZAGOON
+ },
+ {
+ .iv = 0,
+ .level = 12,
+ .species = SPECIES_ARON
+ },
+ {
+ .iv = 0,
+ .level = 12,
+ .species = SPECIES_POOCHYENA
+ },
+ {
+ .iv = 0,
+ .level = 12,
+ .species = SPECIES_TAILLOW
+ },
+ {
+ .iv = 0,
+ .level = 12,
+ .species = SPECIES_MAKUHITA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Riley[] = {
+ {
+ .iv = 0,
+ .level = 15,
+ .species = SPECIES_ZIGZAGOON
+ },
+ {
+ .iv = 0,
+ .level = 15,
+ .species = SPECIES_SPINDA
+ },
+ {
+ .iv = 0,
+ .level = 15,
+ .species = SPECIES_POOCHYENA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Aidan[] = {
+ {
+ .iv = 0,
+ .level = 13,
+ .species = SPECIES_SEEDOT
+ },
+ {
+ .iv = 0,
+ .level = 13,
+ .species = SPECIES_NUZLEAF
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Isaac2[] = {
+ {
+ .iv = 10,
+ .level = 22,
+ .species = SPECIES_LOUDRED
+ },
+ {
+ .iv = 10,
+ .level = 22,
+ .species = SPECIES_LINOONE
+ },
+ {
+ .iv = 10,
+ .level = 22,
+ .species = SPECIES_ARON
+ },
+ {
+ .iv = 10,
+ .level = 22,
+ .species = SPECIES_MIGHTYENA
+ },
+ {
+ .iv = 10,
+ .level = 22,
+ .species = SPECIES_SWELLOW
+ },
+ {
+ .iv = 10,
+ .level = 22,
+ .species = SPECIES_MAKUHITA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Isaac3[] = {
+ {
+ .iv = 20,
+ .level = 25,
+ .species = SPECIES_LOUDRED
+ },
+ {
+ .iv = 20,
+ .level = 25,
+ .species = SPECIES_LINOONE
+ },
+ {
+ .iv = 20,
+ .level = 25,
+ .species = SPECIES_ARON
+ },
+ {
+ .iv = 20,
+ .level = 25,
+ .species = SPECIES_MIGHTYENA
+ },
+ {
+ .iv = 20,
+ .level = 25,
+ .species = SPECIES_SWELLOW
+ },
+ {
+ .iv = 20,
+ .level = 25,
+ .species = SPECIES_HARIYAMA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Isaac4[] = {
+ {
+ .iv = 30,
+ .level = 28,
+ .species = SPECIES_LOUDRED
+ },
+ {
+ .iv = 30,
+ .level = 28,
+ .species = SPECIES_LINOONE
+ },
+ {
+ .iv = 30,
+ .level = 28,
+ .species = SPECIES_ARON
+ },
+ {
+ .iv = 30,
+ .level = 28,
+ .species = SPECIES_MIGHTYENA
+ },
+ {
+ .iv = 30,
+ .level = 28,
+ .species = SPECIES_SWELLOW
+ },
+ {
+ .iv = 30,
+ .level = 28,
+ .species = SPECIES_HARIYAMA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Isaac5[] = {
+ {
+ .iv = 40,
+ .level = 31,
+ .species = SPECIES_LOUDRED
+ },
+ {
+ .iv = 40,
+ .level = 31,
+ .species = SPECIES_LINOONE
+ },
+ {
+ .iv = 40,
+ .level = 31,
+ .species = SPECIES_LAIRON
+ },
+ {
+ .iv = 40,
+ .level = 31,
+ .species = SPECIES_MIGHTYENA
+ },
+ {
+ .iv = 40,
+ .level = 31,
+ .species = SPECIES_SWELLOW
+ },
+ {
+ .iv = 40,
+ .level = 31,
+ .species = SPECIES_HARIYAMA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Lydia1[] = {
+ {
+ .iv = 0,
+ .level = 12,
+ .species = SPECIES_WINGULL
+ },
+ {
+ .iv = 0,
+ .level = 12,
+ .species = SPECIES_SHROOMISH
+ },
+ {
+ .iv = 0,
+ .level = 12,
+ .species = SPECIES_MARILL
+ },
+ {
+ .iv = 0,
+ .level = 12,
+ .species = SPECIES_ROSELIA
+ },
+ {
+ .iv = 0,
+ .level = 12,
+ .species = SPECIES_SKITTY
+ },
+ {
+ .iv = 0,
+ .level = 12,
+ .species = SPECIES_GOLDEEN
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Alexia[] = {
+ {
+ .iv = 0,
+ .level = 13,
+ .species = SPECIES_LOTAD
+ },
+ {
+ .iv = 0,
+ .level = 13,
+ .species = SPECIES_LOMBRE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Danielle[] = {
+ {
+ .iv = 0,
+ .level = 24,
+ .species = SPECIES_SKITTY
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Lydia2[] = {
+ {
+ .iv = 10,
+ .level = 22,
+ .species = SPECIES_WINGULL
+ },
+ {
+ .iv = 10,
+ .level = 22,
+ .species = SPECIES_SHROOMISH
+ },
+ {
+ .iv = 10,
+ .level = 22,
+ .species = SPECIES_MARILL
+ },
+ {
+ .iv = 10,
+ .level = 22,
+ .species = SPECIES_ROSELIA
+ },
+ {
+ .iv = 10,
+ .level = 22,
+ .species = SPECIES_SKITTY
+ },
+ {
+ .iv = 10,
+ .level = 22,
+ .species = SPECIES_GOLDEEN
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Lydia3[] = {
+ {
+ .iv = 20,
+ .level = 25,
+ .species = SPECIES_PELIPPER
+ },
+ {
+ .iv = 20,
+ .level = 25,
+ .species = SPECIES_BRELOOM
+ },
+ {
+ .iv = 20,
+ .level = 25,
+ .species = SPECIES_MARILL
+ },
+ {
+ .iv = 20,
+ .level = 25,
+ .species = SPECIES_ROSELIA
+ },
+ {
+ .iv = 20,
+ .level = 25,
+ .species = SPECIES_DELCATTY
+ },
+ {
+ .iv = 20,
+ .level = 25,
+ .species = SPECIES_GOLDEEN
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Lydia4[] = {
+ {
+ .iv = 30,
+ .level = 28,
+ .species = SPECIES_PELIPPER
+ },
+ {
+ .iv = 30,
+ .level = 28,
+ .species = SPECIES_BRELOOM
+ },
+ {
+ .iv = 30,
+ .level = 28,
+ .species = SPECIES_MARILL
+ },
+ {
+ .iv = 30,
+ .level = 28,
+ .species = SPECIES_ROSELIA
+ },
+ {
+ .iv = 30,
+ .level = 28,
+ .species = SPECIES_DELCATTY
+ },
+ {
+ .iv = 30,
+ .level = 28,
+ .species = SPECIES_GOLDEEN
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Lydia5[] = {
+ {
+ .iv = 40,
+ .level = 31,
+ .species = SPECIES_PELIPPER
+ },
+ {
+ .iv = 40,
+ .level = 31,
+ .species = SPECIES_BRELOOM
+ },
+ {
+ .iv = 40,
+ .level = 31,
+ .species = SPECIES_AZUMARILL
+ },
+ {
+ .iv = 40,
+ .level = 31,
+ .species = SPECIES_ROSELIA
+ },
+ {
+ .iv = 40,
+ .level = 31,
+ .species = SPECIES_DELCATTY
+ },
+ {
+ .iv = 40,
+ .level = 31,
+ .species = SPECIES_SEAKING
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Jackson1[] = {
+ {
+ .iv = 50,
+ .level = 28,
+ .species = SPECIES_BRELOOM
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Carlos[] = {
+ {
+ .iv = 50,
+ .level = 29,
+ .species = SPECIES_SEEDOT
+ },
+ {
+ .iv = 50,
+ .level = 29,
+ .species = SPECIES_NUZLEAF
+ },
+ {
+ .iv = 50,
+ .level = 29,
+ .species = SPECIES_LOMBRE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Sebastian[] = {
+ {
+ .iv = 50,
+ .level = 39,
+ .species = SPECIES_CACTURNE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Jackson2[] = {
+ {
+ .iv = 60,
+ .level = 31,
+ .species = SPECIES_BRELOOM
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Jackson3[] = {
+ {
+ .iv = 70,
+ .level = 34,
+ .species = SPECIES_BRELOOM
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Jackson4[] = {
+ {
+ .iv = 80,
+ .level = 37,
+ .species = SPECIES_BRELOOM
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Jackson5[] = {
+ {
+ .iv = 90,
+ .level = 39,
+ .species = SPECIES_KECLEON
+ },
+ {
+ .iv = 90,
+ .level = 39,
+ .species = SPECIES_BRELOOM
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Catherine1[] = {
+ {
+ .iv = 50,
+ .level = 27,
+ .species = SPECIES_GLOOM
+ },
+ {
+ .iv = 50,
+ .level = 27,
+ .species = SPECIES_ROSELIA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Jenna[] = {
+ {
+ .iv = 50,
+ .level = 29,
+ .species = SPECIES_LOTAD
+ },
+ {
+ .iv = 50,
+ .level = 29,
+ .species = SPECIES_LOMBRE
+ },
+ {
+ .iv = 50,
+ .level = 29,
+ .species = SPECIES_NUZLEAF
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Sophia[] = {
+ {
+ .iv = 50,
+ .level = 38,
+ .species = SPECIES_SWABLU
+ },
+ {
+ .iv = 50,
+ .level = 38,
+ .species = SPECIES_ROSELIA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Catherine2[] = {
+ {
+ .iv = 60,
+ .level = 30,
+ .species = SPECIES_GLOOM
+ },
+ {
+ .iv = 60,
+ .level = 30,
+ .species = SPECIES_ROSELIA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Catherine3[] = {
+ {
+ .iv = 70,
+ .level = 33,
+ .species = SPECIES_GLOOM
+ },
+ {
+ .iv = 70,
+ .level = 33,
+ .species = SPECIES_ROSELIA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Catherine4[] = {
+ {
+ .iv = 80,
+ .level = 36,
+ .species = SPECIES_GLOOM
+ },
+ {
+ .iv = 80,
+ .level = 36,
+ .species = SPECIES_ROSELIA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Catherine5[] = {
+ {
+ .iv = 90,
+ .level = 39,
+ .species = SPECIES_BELLOSSOM
+ },
+ {
+ .iv = 90,
+ .level = 39,
+ .species = SPECIES_ROSELIA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Maxie1[] = {
+ {
+ .iv = 0,
+ .level = 17,
+ .species = SPECIES_TORKOAL
+ },
+ {
+ .iv = 0,
+ .level = 17,
+ .species = SPECIES_CAMERUPT
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Grunt28[] = {
+ {
+ .iv = 0,
+ .level = 32,
+ .species = SPECIES_POOCHYENA
+ },
+ {
+ .iv = 0,
+ .level = 32,
+ .species = SPECIES_POOCHYENA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Grunt29[] = {
+ {
+ .iv = 0,
+ .level = 30,
+ .species = SPECIES_ZUBAT
+ },
+ {
+ .iv = 0,
+ .level = 30,
+ .species = SPECIES_POOCHYENA
+ },
+ {
+ .iv = 0,
+ .level = 30,
+ .species = SPECIES_NUMEL
+ },
+ {
+ .iv = 0,
+ .level = 30,
+ .species = SPECIES_POOCHYENA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Grunt30[] = {
+ {
+ .iv = 0,
+ .level = 32,
+ .species = SPECIES_NUMEL
+ },
+ {
+ .iv = 0,
+ .level = 32,
+ .species = SPECIES_ZUBAT
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Grunt31[] = {
+ {
+ .iv = 0,
+ .level = 33,
+ .species = SPECIES_NUMEL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Grunt32[] = {
+ {
+ .iv = 0,
+ .level = 37,
+ .species = SPECIES_POOCHYENA
+ },
+ {
+ .iv = 0,
+ .level = 37,
+ .species = SPECIES_NUMEL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Grunt33[] = {
+ {
+ .iv = 0,
+ .level = 38,
+ .species = SPECIES_NUMEL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Grunt34[] = {
+ {
+ .iv = 0,
+ .level = 36,
+ .species = SPECIES_POOCHYENA
+ },
+ {
+ .iv = 0,
+ .level = 36,
+ .species = SPECIES_ZUBAT
+ },
+ {
+ .iv = 0,
+ .level = 36,
+ .species = SPECIES_NUMEL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Grunt35[] = {
+ {
+ .iv = 0,
+ .level = 17,
+ .species = SPECIES_BALTOY
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Grunt36[] = {
+ {
+ .iv = 0,
+ .level = 9,
+ .species = SPECIES_POOCHYENA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Grunt37[] = {
+ {
+ .iv = 0,
+ .level = 9,
+ .species = SPECIES_POOCHYENA
+ },
+ {
+ .iv = 0,
+ .level = 9,
+ .species = SPECIES_POOCHYENA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Grunt38[] = {
+ {
+ .iv = 0,
+ .level = 16,
+ .species = SPECIES_POOCHYENA
+ },
+ {
+ .iv = 0,
+ .level = 16,
+ .species = SPECIES_POOCHYENA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Grunt39[] = {
+ {
+ .iv = 0,
+ .level = 16,
+ .species = SPECIES_POOCHYENA
+ },
+ {
+ .iv = 0,
+ .level = 16,
+ .species = SPECIES_POOCHYENA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Grunt40[] = {
+ {
+ .iv = 0,
+ .level = 20,
+ .species = SPECIES_ZUBAT
+ },
+ {
+ .iv = 0,
+ .level = 20,
+ .species = SPECIES_POOCHYENA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Grunt41[] = {
+ {
+ .iv = 0,
+ .level = 17,
+ .species = SPECIES_ZUBAT
+ },
+ {
+ .iv = 0,
+ .level = 17,
+ .species = SPECIES_POOCHYENA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Grunt42[] = {
+ {
+ .iv = 0,
+ .level = 11,
+ .species = SPECIES_POOCHYENA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Grunt43[] = {
+ {
+ .iv = 0,
+ .level = 27,
+ .species = SPECIES_ZUBAT
+ },
+ {
+ .iv = 0,
+ .level = 27,
+ .species = SPECIES_POOCHYENA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Grunt44[] = {
+ {
+ .iv = 0,
+ .level = 27,
+ .species = SPECIES_POOCHYENA
+ },
+ {
+ .iv = 0,
+ .level = 27,
+ .species = SPECIES_NUMEL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Grunt45[] = {
+ {
+ .iv = 0,
+ .level = 26,
+ .species = SPECIES_POOCHYENA
+ },
+ {
+ .iv = 0,
+ .level = 26,
+ .species = SPECIES_ZUBAT
+ },
+ {
+ .iv = 0,
+ .level = 26,
+ .species = SPECIES_NUMEL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Grunt46[] = {
+ {
+ .iv = 0,
+ .level = 15,
+ .species = SPECIES_NUMEL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Grunt47[] = {
+ {
+ .iv = 0,
+ .level = 14,
+ .species = SPECIES_ZUBAT
+ },
+ {
+ .iv = 0,
+ .level = 14,
+ .species = SPECIES_NUMEL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Grunt48[] = {
+ {
+ .iv = 0,
+ .level = 17,
+ .species = SPECIES_BALTOY
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Grunt49[] = {
+ {
+ .iv = 0,
+ .level = 30,
+ .species = SPECIES_ZUBAT
+ },
+ {
+ .iv = 0,
+ .level = 30,
+ .species = SPECIES_ZUBAT
+ },
+ {
+ .iv = 0,
+ .level = 30,
+ .species = SPECIES_ZUBAT
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Grunt50[] = {
+ {
+ .iv = 0,
+ .level = 31,
+ .species = SPECIES_POOCHYENA
+ },
+ {
+ .iv = 0,
+ .level = 31,
+ .species = SPECIES_NUMEL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Grunt51[] = {
+ {
+ .iv = 0,
+ .level = 31,
+ .species = SPECIES_NUMEL
+ },
+ {
+ .iv = 0,
+ .level = 31,
+ .species = SPECIES_NUMEL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Grunt52[] = {
+ {
+ .iv = 0,
+ .level = 28,
+ .species = SPECIES_NUMEL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Grunt53[] = {
+ {
+ .iv = 0,
+ .level = 31,
+ .species = SPECIES_POOCHYENA
+ },
+ {
+ .iv = 0,
+ .level = 31,
+ .species = SPECIES_NUMEL
+ },
+ {
+ .iv = 0,
+ .level = 31,
+ .species = SPECIES_NUMEL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Grunt54[] = {
+ {
+ .iv = 0,
+ .level = 33,
+ .species = SPECIES_ZUBAT
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Anonymous14[] = {
+ {
+ .iv = 50,
+ .level = 30,
+ .species = SPECIES_CARVANHA
+ },
+ {
+ .iv = 50,
+ .level = 30,
+ .species = SPECIES_MIGHTYENA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Anonymous15[] = {
+ {
+ .iv = 50,
+ .level = 30,
+ .species = SPECIES_POOCHYENA
+ },
+ {
+ .iv = 50,
+ .level = 30,
+ .species = SPECIES_SWELLOW
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Tabitha1[] = {
+ {
+ .iv = 50,
+ .level = 32,
+ .species = SPECIES_NUMEL
+ },
+ {
+ .iv = 50,
+ .level = 32,
+ .species = SPECIES_MIGHTYENA
+ },
+ {
+ .iv = 50,
+ .level = 32,
+ .species = SPECIES_CAMERUPT
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Tabitha2[] = {
+ {
+ .iv = 50,
+ .level = 20,
+ .species = SPECIES_NUMEL
+ },
+ {
+ .iv = 50,
+ .level = 20,
+ .species = SPECIES_POOCHYENA
+ },
+ {
+ .iv = 50,
+ .level = 20,
+ .species = SPECIES_NUMEL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Anonymous16[] = {
+ {
+ .iv = 50,
+ .level = 21,
+ .species = SPECIES_CARVANHA
+ },
+ {
+ .iv = 50,
+ .level = 21,
+ .species = SPECIES_SHARPEDO
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Courtney1[] = {
+ {
+ .iv = 50,
+ .level = 28,
+ .species = SPECIES_NUMEL
+ },
+ {
+ .iv = 50,
+ .level = 28,
+ .species = SPECIES_MIGHTYENA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Courtney2[] = {
+ {
+ .iv = 50,
+ .level = 38,
+ .species = SPECIES_CAMERUPT
+ },
+ {
+ .iv = 50,
+ .level = 38,
+ .species = SPECIES_MIGHTYENA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Maxie2[] = {
+ {
+ .iv = 150,
+ .level = 41,
+ .species = SPECIES_MIGHTYENA
+ },
+ {
+ .iv = 150,
+ .level = 41,
+ .species = SPECIES_CROBAT
+ },
+ {
+ .iv = 150,
+ .level = 43,
+ .species = SPECIES_CAMERUPT
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Maxie3[] = {
+ {
+ .iv = 150,
+ .level = 24,
+ .species = SPECIES_MIGHTYENA
+ },
+ {
+ .iv = 150,
+ .level = 24,
+ .species = SPECIES_GOLBAT
+ },
+ {
+ .iv = 150,
+ .level = 25,
+ .species = SPECIES_CAMERUPT
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Tiana[] = {
+ {
+ .iv = 0,
+ .level = 4,
+ .species = SPECIES_ZIGZAGOON
+ },
+ {
+ .iv = 0,
+ .level = 4,
+ .species = SPECIES_ZIGZAGOON
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Haley1[] = {
+ {
+ .iv = 0,
+ .level = 7,
+ .species = SPECIES_LOTAD
+ },
+ {
+ .iv = 0,
+ .level = 7,
+ .species = SPECIES_SHROOMISH
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Janice[] = {
+ {
+ .iv = 0,
+ .level = 10,
+ .species = SPECIES_MARILL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Vivi[] = {
+ {
+ .iv = 100,
+ .level = 15,
+ .species = SPECIES_MARILL
+ },
+ {
+ .iv = 100,
+ .level = 15,
+ .species = SPECIES_SHROOMISH
+ },
+ {
+ .iv = 100,
+ .level = 15,
+ .species = SPECIES_NUMEL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Haley2[] = {
+ {
+ .iv = 10,
+ .level = 26,
+ .species = SPECIES_LOMBRE
+ },
+ {
+ .iv = 10,
+ .level = 26,
+ .species = SPECIES_SHROOMISH
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Haley3[] = {
+ {
+ .iv = 20,
+ .level = 29,
+ .species = SPECIES_LOMBRE
+ },
+ {
+ .iv = 20,
+ .level = 29,
+ .species = SPECIES_BRELOOM
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Haley4[] = {
+ {
+ .iv = 30,
+ .level = 32,
+ .species = SPECIES_LOMBRE
+ },
+ {
+ .iv = 30,
+ .level = 32,
+ .species = SPECIES_BRELOOM
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Haley5[] = {
+ {
+ .iv = 40,
+ .level = 34,
+ .species = SPECIES_SWELLOW
+ },
+ {
+ .iv = 40,
+ .level = 34,
+ .species = SPECIES_LOMBRE
+ },
+ {
+ .iv = 40,
+ .level = 34,
+ .species = SPECIES_BRELOOM
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Sally[] = {
+ {
+ .iv = 0,
+ .level = 16,
+ .species = SPECIES_ODDISH
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Robin[] = {
+ {
+ .iv = 0,
+ .level = 14,
+ .species = SPECIES_SKITTY
+ },
+ {
+ .iv = 0,
+ .level = 14,
+ .species = SPECIES_SHROOMISH
+ },
+ {
+ .iv = 0,
+ .level = 14,
+ .species = SPECIES_MARILL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Andrea[] = {
+ {
+ .iv = 100,
+ .level = 41,
+ .species = SPECIES_LUVDISC
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Crissy[] = {
+ {
+ .iv = 100,
+ .level = 40,
+ .species = SPECIES_WAILMER
+ },
+ {
+ .iv = 100,
+ .level = 40,
+ .species = SPECIES_WAILMER
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Rick[] = {
+ {
+ .iv = 0,
+ .level = 4,
+ .species = SPECIES_WURMPLE
+ },
+ {
+ .iv = 0,
+ .level = 4,
+ .species = SPECIES_WURMPLE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Lyle[] = {
+ {
+ .iv = 0,
+ .level = 3,
+ .species = SPECIES_WURMPLE
+ },
+ {
+ .iv = 0,
+ .level = 3,
+ .species = SPECIES_WURMPLE
+ },
+ {
+ .iv = 0,
+ .level = 3,
+ .species = SPECIES_WURMPLE
+ },
+ {
+ .iv = 0,
+ .level = 3,
+ .species = SPECIES_WURMPLE
+ },
+ {
+ .iv = 0,
+ .level = 3,
+ .species = SPECIES_WURMPLE
+ },
+ {
+ .iv = 0,
+ .level = 3,
+ .species = SPECIES_WURMPLE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Jose[] = {
+ {
+ .iv = 50,
+ .level = 8,
+ .species = SPECIES_WURMPLE
+ },
+ {
+ .iv = 50,
+ .level = 8,
+ .species = SPECIES_SILCOON
+ },
+ {
+ .iv = 50,
+ .level = 8,
+ .species = SPECIES_NINCADA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Doug[] = {
+ {
+ .iv = 0,
+ .level = 26,
+ .species = SPECIES_NINCADA
+ },
+ {
+ .iv = 0,
+ .level = 26,
+ .species = SPECIES_NINCADA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Greg[] = {
+ {
+ .iv = 0,
+ .level = 26,
+ .species = SPECIES_VOLBEAT
+ },
+ {
+ .iv = 0,
+ .level = 26,
+ .species = SPECIES_ILLUMISE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Kent[] = {
+ {
+ .iv = 0,
+ .level = 26,
+ .species = SPECIES_NINJASK
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_James1[] = {
+ {
+ .iv = 0,
+ .level = 8,
+ .species = SPECIES_NINCADA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_James2[] = {
+ {
+ .iv = 10,
+ .level = 27,
+ .species = SPECIES_NINJASK
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_James3[] = {
+ {
+ .iv = 20,
+ .level = 29,
+ .species = SPECIES_DUSTOX
+ },
+ {
+ .iv = 20,
+ .level = 29,
+ .species = SPECIES_NINJASK
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_James4[] = {
+ {
+ .iv = 30,
+ .level = 31,
+ .species = SPECIES_SURSKIT
+ },
+ {
+ .iv = 30,
+ .level = 31,
+ .species = SPECIES_DUSTOX
+ },
+ {
+ .iv = 30,
+ .level = 31,
+ .species = SPECIES_NINJASK
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_James5[] = {
+ {
+ .iv = 40,
+ .level = 33,
+ .species = SPECIES_SURSKIT
+ },
+ {
+ .iv = 40,
+ .level = 33,
+ .species = SPECIES_NINJASK
+ },
+ {
+ .iv = 40,
+ .level = 33,
+ .species = SPECIES_DUSTOX
+ },
+ {
+ .iv = 40,
+ .level = 33,
+ .species = SPECIES_NINJASK
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Brice[] = {
+ {
+ .iv = 0,
+ .level = 18,
+ .species = SPECIES_NUMEL
+ },
+ {
+ .iv = 0,
+ .level = 18,
+ .species = SPECIES_MACHOP
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Trent1[] = {
+ {
+ .iv = 0,
+ .level = 16,
+ .species = SPECIES_GEODUDE
+ },
+ {
+ .iv = 0,
+ .level = 16,
+ .species = SPECIES_GEODUDE
+ },
+ {
+ .iv = 0,
+ .level = 16,
+ .species = SPECIES_GEODUDE
+ },
+ {
+ .iv = 0,
+ .level = 16,
+ .species = SPECIES_GEODUDE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Lenny[] = {
+ {
+ .iv = 0,
+ .level = 19,
+ .species = SPECIES_MACHOP
+ },
+ {
+ .iv = 0,
+ .level = 19,
+ .species = SPECIES_MACHOP
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Lucas1[] = {
+ {
+ .iv = 0,
+ .level = 18,
+ .species = SPECIES_GEODUDE
+ },
+ {
+ .iv = 0,
+ .level = 18,
+ .species = SPECIES_GEODUDE
+ },
+ {
+ .iv = 0,
+ .level = 18,
+ .species = SPECIES_GEODUDE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Alan[] = {
+ {
+ .iv = 0,
+ .level = 22,
+ .species = SPECIES_GEODUDE
+ },
+ {
+ .iv = 0,
+ .level = 22,
+ .species = SPECIES_NOSEPASS
+ },
+ {
+ .iv = 0,
+ .level = 22,
+ .species = SPECIES_GRAVELER
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Clark[] = {
+ {
+ .iv = 0,
+ .level = 8,
+ .species = SPECIES_GEODUDE
+ },
+ {
+ .iv = 0,
+ .level = 8,
+ .species = SPECIES_GEODUDE
+ },
+ {
+ .iv = 0,
+ .level = 8,
+ .species = SPECIES_GEODUDE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Eric[] = {
+ {
+ .iv = 0,
+ .level = 21,
+ .species = SPECIES_BALTOY
+ },
+ {
+ .iv = 0,
+ .level = 21,
+ .species = SPECIES_BALTOY
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Lucas2[] = {
+ {
+ .iv = 0,
+ .level = 9,
+ .species = SPECIES_WAILMER,
+ .moves = MOVE_SPLASH, MOVE_WATER_GUN, MOVE_NONE, MOVE_NONE
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Mike1[] = {
+ {
+ .iv = 0,
+ .level = 10,
+ .species = SPECIES_PELIPPER,
+ .moves = MOVE_GUST, MOVE_GROWL, MOVE_NONE, MOVE_NONE
+ },
+ {
+ .iv = 0,
+ .level = 10,
+ .species = SPECIES_POOCHYENA,
+ .moves = MOVE_BITE, MOVE_SCARY_FACE, MOVE_NONE, MOVE_NONE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Mike2[] = {
+ {
+ .iv = 0,
+ .level = 16,
+ .species = SPECIES_GEODUDE
+ },
+ {
+ .iv = 0,
+ .level = 16,
+ .species = SPECIES_GEODUDE
+ },
+ {
+ .iv = 0,
+ .level = 16,
+ .species = SPECIES_MACHOP
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Trent2[] = {
+ {
+ .iv = 10,
+ .level = 24,
+ .species = SPECIES_GEODUDE
+ },
+ {
+ .iv = 10,
+ .level = 24,
+ .species = SPECIES_GEODUDE
+ },
+ {
+ .iv = 10,
+ .level = 24,
+ .species = SPECIES_GEODUDE
+ },
+ {
+ .iv = 10,
+ .level = 24,
+ .species = SPECIES_GRAVELER
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Trent3[] = {
+ {
+ .iv = 20,
+ .level = 27,
+ .species = SPECIES_GEODUDE
+ },
+ {
+ .iv = 20,
+ .level = 27,
+ .species = SPECIES_GEODUDE
+ },
+ {
+ .iv = 20,
+ .level = 27,
+ .species = SPECIES_GRAVELER
+ },
+ {
+ .iv = 20,
+ .level = 27,
+ .species = SPECIES_GRAVELER
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Trent4[] = {
+ {
+ .iv = 30,
+ .level = 30,
+ .species = SPECIES_GEODUDE
+ },
+ {
+ .iv = 30,
+ .level = 30,
+ .species = SPECIES_GRAVELER
+ },
+ {
+ .iv = 30,
+ .level = 30,
+ .species = SPECIES_GRAVELER
+ },
+ {
+ .iv = 30,
+ .level = 30,
+ .species = SPECIES_GRAVELER
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Trent5[] = {
+ {
+ .iv = 40,
+ .level = 33,
+ .species = SPECIES_GRAVELER
+ },
+ {
+ .iv = 40,
+ .level = 33,
+ .species = SPECIES_GRAVELER
+ },
+ {
+ .iv = 40,
+ .level = 33,
+ .species = SPECIES_GRAVELER
+ },
+ {
+ .iv = 40,
+ .level = 33,
+ .species = SPECIES_GOLEM
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_DezAndLuke[] = {
+ {
+ .iv = 0,
+ .level = 32,
+ .species = SPECIES_DELCATTY
+ },
+ {
+ .iv = 0,
+ .level = 32,
+ .species = SPECIES_MANECTRIC
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_LeaAndJed[] = {
+ {
+ .iv = 0,
+ .level = 45,
+ .species = SPECIES_LUVDISC
+ },
+ {
+ .iv = 0,
+ .level = 45,
+ .species = SPECIES_LUVDISC
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_LoisAndHal1[] = {
+ {
+ .iv = 0,
+ .level = 27,
+ .species = SPECIES_VOLBEAT
+ },
+ {
+ .iv = 0,
+ .level = 27,
+ .species = SPECIES_ILLUMISE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_LoisAndHal2[] = {
+ {
+ .iv = 10,
+ .level = 30,
+ .species = SPECIES_VOLBEAT
+ },
+ {
+ .iv = 10,
+ .level = 30,
+ .species = SPECIES_ILLUMISE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_LoisAndHal3[] = {
+ {
+ .iv = 20,
+ .level = 33,
+ .species = SPECIES_VOLBEAT
+ },
+ {
+ .iv = 20,
+ .level = 33,
+ .species = SPECIES_ILLUMISE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_LoisAndHal4[] = {
+ {
+ .iv = 30,
+ .level = 36,
+ .species = SPECIES_VOLBEAT
+ },
+ {
+ .iv = 30,
+ .level = 36,
+ .species = SPECIES_ILLUMISE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_LoisAndHal5[] = {
+ {
+ .iv = 40,
+ .level = 39,
+ .species = SPECIES_VOLBEAT
+ },
+ {
+ .iv = 40,
+ .level = 39,
+ .species = SPECIES_ILLUMISE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Johanna[] = {
+ {
+ .iv = 0,
+ .level = 13,
+ .species = SPECIES_GOLDEEN
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Zane[] = {
+ {
+ .iv = 100,
+ .level = 24,
+ .species = SPECIES_KECLEON,
+ .moves = MOVE_FLAMETHROWER, MOVE_FURY_SWIPES, MOVE_FAINT_ATTACK, MOVE_BIND
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Vivian[] = {
+ {
+ .iv = 100,
+ .level = 19,
+ .species = SPECIES_MEDITITE,
+ .moves = MOVE_BIDE, MOVE_DETECT, MOVE_CONFUSION, MOVE_THUNDER_PUNCH
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Sadie[] = {
+ {
+ .iv = 100,
+ .level = 24,
+ .species = SPECIES_MEDITITE,
+ .moves = MOVE_BIDE, MOVE_DETECT, MOVE_CONFUSION, MOVE_FIRE_PUNCH
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Hideo2[] = {
+ {
+ .iv = 0,
+ .level = 26,
+ .species = SPECIES_KOFFING,
+ .moves = MOVE_TACKLE, MOVE_SELF_DESTRUCT, MOVE_SLUDGE, MOVE_SMOKESCREEN
+ },
+ {
+ .iv = 0,
+ .level = 26,
+ .species = SPECIES_KOFFING,
+ .moves = MOVE_TACKLE, MOVE_POISON_GAS, MOVE_SLUDGE, MOVE_SMOKESCREEN
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Keigo[] = {
+ {
+ .iv = 0,
+ .level = 29,
+ .species = SPECIES_KOFFING,
+ .moves = MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_SMOKESCREEN
+ },
+ {
+ .iv = 0,
+ .level = 29,
+ .species = SPECIES_NINJASK,
+ .moves = MOVE_SAND_ATTACK, MOVE_DOUBLE_TEAM, MOVE_FURY_CUTTER, MOVE_SWORDS_DANCE
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Tsunao[] = {
+ {
+ .iv = 0,
+ .level = 28,
+ .species = SPECIES_NINCADA,
+ .moves = MOVE_LEECH_LIFE, MOVE_FURY_SWIPES, MOVE_MIND_READER, MOVE_DIG
+ },
+ {
+ .iv = 0,
+ .level = 28,
+ .species = SPECIES_KOFFING,
+ .moves = MOVE_TACKLE, MOVE_SELF_DESTRUCT, MOVE_SLUDGE, MOVE_SMOKESCREEN
+ },
+ {
+ .iv = 0,
+ .level = 28,
+ .species = SPECIES_NINJASK,
+ .moves = MOVE_DOUBLE_TEAM, MOVE_FURY_CUTTER, MOVE_SCREECH, MOVE_SWORDS_DANCE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Terrell[] = {
+ {
+ .iv = 100,
+ .level = 29,
+ .species = SPECIES_TAILLOW
+ },
+ {
+ .iv = 100,
+ .level = 29,
+ .species = SPECIES_SWELLOW
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Kylee[] = {
+ {
+ .iv = 100,
+ .level = 30,
+ .species = SPECIES_SWABLU
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Wally2[] = {
+ {
+ .iv = 30,
+ .level = 16,
+ .species = SPECIES_RALTS
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Wally3[] = {
+ {
+ .iv = 150,
+ .level = 47,
+ .species = SPECIES_ALTARIA,
+ .moves = MOVE_AERIAL_ACE, MOVE_SAFEGUARD, MOVE_DRAGON_BREATH, MOVE_DRAGON_DANCE
+ },
+ {
+ .iv = 150,
+ .level = 46,
+ .species = SPECIES_DELCATTY,
+ .moves = MOVE_SING, MOVE_ASSIST, MOVE_CHARM, MOVE_FAINT_ATTACK
+ },
+ {
+ .iv = 150,
+ .level = 47,
+ .species = SPECIES_ROSELIA,
+ .moves = MOVE_MAGICAL_LEAF, MOVE_LEECH_SEED, MOVE_GIGA_DRAIN, MOVE_TOXIC
+ },
+ {
+ .iv = 150,
+ .level = 44,
+ .species = SPECIES_MAGNETON,
+ .moves = MOVE_SUPERSONIC, MOVE_THUNDERBOLT, MOVE_TRI_ATTACK, MOVE_SCREECH
+ },
+ {
+ .iv = 250,
+ .level = 48,
+ .species = SPECIES_GARDEVOIR,
+ .moves = MOVE_DOUBLE_TEAM, MOVE_CALM_MIND, MOVE_PSYCHIC, MOVE_FUTURE_SIGHT
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Wally4[] = {
+ {
+ .iv = 150,
+ .level = 50,
+ .species = SPECIES_ALTARIA,
+ .moves = MOVE_AERIAL_ACE, MOVE_SAFEGUARD, MOVE_DRAGON_BREATH, MOVE_DRAGON_DANCE
+ },
+ {
+ .iv = 150,
+ .level = 49,
+ .species = SPECIES_DELCATTY,
+ .moves = MOVE_SING, MOVE_ASSIST, MOVE_CHARM, MOVE_FAINT_ATTACK
+ },
+ {
+ .iv = 150,
+ .level = 50,
+ .species = SPECIES_ROSELIA,
+ .moves = MOVE_MAGICAL_LEAF, MOVE_LEECH_SEED, MOVE_GIGA_DRAIN, MOVE_TOXIC
+ },
+ {
+ .iv = 150,
+ .level = 47,
+ .species = SPECIES_MAGNETON,
+ .moves = MOVE_SUPERSONIC, MOVE_THUNDERBOLT, MOVE_TRI_ATTACK, MOVE_SCREECH
+ },
+ {
+ .iv = 250,
+ .level = 51,
+ .species = SPECIES_GARDEVOIR,
+ .moves = MOVE_DOUBLE_TEAM, MOVE_CALM_MIND, MOVE_PSYCHIC, MOVE_FUTURE_SIGHT
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Wally5[] = {
+ {
+ .iv = 150,
+ .level = 53,
+ .species = SPECIES_ALTARIA,
+ .moves = MOVE_AERIAL_ACE, MOVE_SAFEGUARD, MOVE_DRAGON_BREATH, MOVE_DRAGON_DANCE
+ },
+ {
+ .iv = 150,
+ .level = 52,
+ .species = SPECIES_DELCATTY,
+ .moves = MOVE_SING, MOVE_ASSIST, MOVE_CHARM, MOVE_FAINT_ATTACK
+ },
+ {
+ .iv = 150,
+ .level = 53,
+ .species = SPECIES_ROSELIA,
+ .moves = MOVE_MAGICAL_LEAF, MOVE_LEECH_SEED, MOVE_GIGA_DRAIN, MOVE_TOXIC
+ },
+ {
+ .iv = 150,
+ .level = 50,
+ .species = SPECIES_MAGNETON,
+ .moves = MOVE_SUPERSONIC, MOVE_THUNDERBOLT, MOVE_TRI_ATTACK, MOVE_SCREECH
+ },
+ {
+ .iv = 250,
+ .level = 54,
+ .species = SPECIES_GARDEVOIR,
+ .moves = MOVE_DOUBLE_TEAM, MOVE_CALM_MIND, MOVE_PSYCHIC, MOVE_FUTURE_SIGHT
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_Wally6[] = {
+ {
+ .iv = 150,
+ .level = 56,
+ .species = SPECIES_ALTARIA,
+ .moves = MOVE_AERIAL_ACE, MOVE_SAFEGUARD, MOVE_DRAGON_BREATH, MOVE_DRAGON_DANCE
+ },
+ {
+ .iv = 150,
+ .level = 55,
+ .species = SPECIES_DELCATTY,
+ .moves = MOVE_SING, MOVE_ASSIST, MOVE_CHARM, MOVE_FAINT_ATTACK
+ },
+ {
+ .iv = 150,
+ .level = 56,
+ .species = SPECIES_ROSELIA,
+ .moves = MOVE_MAGICAL_LEAF, MOVE_LEECH_SEED, MOVE_GIGA_DRAIN, MOVE_TOXIC
+ },
+ {
+ .iv = 150,
+ .level = 53,
+ .species = SPECIES_MAGNETON,
+ .moves = MOVE_SUPERSONIC, MOVE_THUNDERBOLT, MOVE_TRI_ATTACK, MOVE_SCREECH
+ },
+ {
+ .iv = 250,
+ .level = 57,
+ .species = SPECIES_GARDEVOIR,
+ .moves = MOVE_DOUBLE_TEAM, MOVE_CALM_MIND, MOVE_PSYCHIC, MOVE_FUTURE_SIGHT
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Brendan10[] = {
+ {
+ .iv = 150,
+ .level = 31,
+ .species = SPECIES_SWELLOW
+ },
+ {
+ .iv = 150,
+ .level = 32,
+ .species = SPECIES_NUMEL
+ },
+ {
+ .iv = 150,
+ .level = 32,
+ .species = SPECIES_WAILMER
+ },
+ {
+ .iv = 200,
+ .level = 34,
+ .species = SPECIES_GROVYLE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Brendan11[] = {
+ {
+ .iv = 150,
+ .level = 31,
+ .species = SPECIES_SWELLOW
+ },
+ {
+ .iv = 150,
+ .level = 32,
+ .species = SPECIES_WAILMER
+ },
+ {
+ .iv = 150,
+ .level = 32,
+ .species = SPECIES_SHROOMISH
+ },
+ {
+ .iv = 200,
+ .level = 34,
+ .species = SPECIES_COMBUSKEN
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Brendan12[] = {
+ {
+ .iv = 150,
+ .level = 31,
+ .species = SPECIES_SWELLOW
+ },
+ {
+ .iv = 150,
+ .level = 32,
+ .species = SPECIES_SHROOMISH
+ },
+ {
+ .iv = 150,
+ .level = 32,
+ .species = SPECIES_NUMEL
+ },
+ {
+ .iv = 200,
+ .level = 34,
+ .species = SPECIES_MARSHTOMP
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_May10[] = {
+ {
+ .iv = 150,
+ .level = 31,
+ .species = SPECIES_SWELLOW
+ },
+ {
+ .iv = 150,
+ .level = 32,
+ .species = SPECIES_NUMEL
+ },
+ {
+ .iv = 150,
+ .level = 32,
+ .species = SPECIES_WAILMER
+ },
+ {
+ .iv = 200,
+ .level = 34,
+ .species = SPECIES_GROVYLE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_May11[] = {
+ {
+ .iv = 150,
+ .level = 31,
+ .species = SPECIES_SWELLOW
+ },
+ {
+ .iv = 150,
+ .level = 32,
+ .species = SPECIES_WAILMER
+ },
+ {
+ .iv = 150,
+ .level = 32,
+ .species = SPECIES_SHROOMISH
+ },
+ {
+ .iv = 200,
+ .level = 34,
+ .species = SPECIES_COMBUSKEN
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_May12[] = {
+ {
+ .iv = 150,
+ .level = 31,
+ .species = SPECIES_SWELLOW
+ },
+ {
+ .iv = 150,
+ .level = 32,
+ .species = SPECIES_SHROOMISH
+ },
+ {
+ .iv = 150,
+ .level = 32,
+ .species = SPECIES_NUMEL
+ },
+ {
+ .iv = 200,
+ .level = 34,
+ .species = SPECIES_MARSHTOMP
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Jonah[] = {
+ {
+ .iv = 0,
+ .level = 34,
+ .species = SPECIES_WAILMER
+ },
+ {
+ .iv = 0,
+ .level = 32,
+ .species = SPECIES_TENTACOOL
+ },
+ {
+ .iv = 0,
+ .level = 30,
+ .species = SPECIES_WAILMER
+ },
+ {
+ .iv = 0,
+ .level = 32,
+ .species = SPECIES_SHARPEDO
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Henry[] = {
+ {
+ .iv = 0,
+ .level = 31,
+ .species = SPECIES_TENTACOOL
+ },
+ {
+ .iv = 0,
+ .level = 33,
+ .species = SPECIES_CARVANHA
+ },
+ {
+ .iv = 0,
+ .level = 35,
+ .species = SPECIES_TENTACRUEL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Roger[] = {
+ {
+ .iv = 0,
+ .level = 15,
+ .species = SPECIES_MAGIKARP
+ },
+ {
+ .iv = 0,
+ .level = 25,
+ .species = SPECIES_MAGIKARP
+ },
+ {
+ .iv = 0,
+ .level = 35,
+ .species = SPECIES_GYARADOS
+ },
+ {
+ .iv = 0,
+ .level = 45,
+ .species = SPECIES_MAGIKARP
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Alexa[] = {
+ {
+ .iv = 100,
+ .level = 35,
+ .species = SPECIES_GLOOM
+ },
+ {
+ .iv = 100,
+ .level = 35,
+ .species = SPECIES_AZUMARILL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Ruben[] = {
+ {
+ .iv = 100,
+ .level = 34,
+ .species = SPECIES_SHIFTRY
+ },
+ {
+ .iv = 100,
+ .level = 34,
+ .species = SPECIES_GRAVELER
+ },
+ {
+ .iv = 100,
+ .level = 34,
+ .species = SPECIES_LOUDRED
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Koji[] = {
+ {
+ .iv = 100,
+ .level = 34,
+ .species = SPECIES_MACHOKE
+ },
+ {
+ .iv = 100,
+ .level = 34,
+ .species = SPECIES_MACHOKE
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Wayne[] = {
+ {
+ .iv = 0,
+ .level = 30,
+ .species = SPECIES_TENTACOOL
+ },
+ {
+ .iv = 0,
+ .level = 30,
+ .species = SPECIES_TENTACOOL
+ },
+ {
+ .iv = 0,
+ .level = 35,
+ .species = SPECIES_WAILMER
+ },
+ {
+ .iv = 0,
+ .level = 32,
+ .species = SPECIES_TENTACRUEL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Byron[] = {
+ {
+ .iv = 0,
+ .level = 34,
+ .species = SPECIES_SWELLOW
+ },
+ {
+ .iv = 0,
+ .level = 34,
+ .species = SPECIES_PELIPPER
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Reed[] = {
+ {
+ .iv = 0,
+ .level = 32,
+ .species = SPECIES_CARVANHA
+ },
+ {
+ .iv = 0,
+ .level = 32,
+ .species = SPECIES_CARVANHA
+ },
+ {
+ .iv = 0,
+ .level = 32,
+ .species = SPECIES_SPHEAL
+ },
+ {
+ .iv = 0,
+ .level = 32,
+ .species = SPECIES_SHARPEDO
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Tisha[] = {
+ {
+ .iv = 0,
+ .level = 33,
+ .species = SPECIES_CHINCHOU
+ },
+ {
+ .iv = 0,
+ .level = 33,
+ .species = SPECIES_LUVDISC
+ },
+ {
+ .iv = 0,
+ .level = 33,
+ .species = SPECIES_PELIPPER
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_ToriAndTia[] = {
+ {
+ .iv = 0,
+ .level = 20,
+ .species = SPECIES_WHISMUR
+ },
+ {
+ .iv = 0,
+ .level = 20,
+ .species = SPECIES_WHISMUR
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_KimAndIris[] = {
+ {
+ .iv = 0,
+ .level = 34,
+ .species = SPECIES_SWABLU,
+ .moves = MOVE_SING, MOVE_FURY_ATTACK, MOVE_SAFEGUARD, MOVE_AERIAL_ACE
+ },
+ {
+ .iv = 0,
+ .level = 36,
+ .species = SPECIES_NUMEL,
+ .moves = MOVE_FLAMETHROWER, MOVE_TAKE_DOWN, MOVE_REST, MOVE_EARTHQUAKE
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_TyraAndIvy[] = {
+ {
+ .iv = 0,
+ .level = 19,
+ .species = SPECIES_ROSELIA,
+ .moves = MOVE_GROWTH, MOVE_STUN_SPORE, MOVE_MEGA_DRAIN, MOVE_LEECH_SEED
+ },
+ {
+ .iv = 0,
+ .level = 21,
+ .species = SPECIES_GRAVELER,
+ .moves = MOVE_DEFENSE_CURL, MOVE_ROLLOUT, MOVE_MUD_SPORT, MOVE_ROCK_THROW
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_MelAndPaul[] = {
+ {
+ .iv = 0,
+ .level = 27,
+ .species = SPECIES_DUSTOX,
+ .moves = MOVE_GUST, MOVE_PSYBEAM, MOVE_TOXIC, MOVE_PROTECT
+ },
+ {
+ .iv = 0,
+ .level = 27,
+ .species = SPECIES_BEAUTIFLY,
+ .moves = MOVE_GUST, MOVE_MEGA_DRAIN, MOVE_ATTRACT, MOVE_STUN_SPORE
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_JohnAndJay1[] = {
+ {
+ .iv = 200,
+ .level = 40,
+ .species = SPECIES_MEDICHAM,
+ .moves = MOVE_PSYCHIC, MOVE_FIRE_PUNCH, MOVE_PSYCH_UP, MOVE_PROTECT
+ },
+ {
+ .iv = 200,
+ .level = 40,
+ .species = SPECIES_HARIYAMA,
+ .moves = MOVE_FOCUS_PUNCH, MOVE_ROCK_TOMB, MOVE_REST, MOVE_BELLY_DRUM
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_JohnAndJay2[] = {
+ {
+ .iv = 210,
+ .level = 43,
+ .species = SPECIES_MEDICHAM,
+ .moves = MOVE_PSYCHIC, MOVE_FIRE_PUNCH, MOVE_PSYCH_UP, MOVE_PROTECT
+ },
+ {
+ .iv = 210,
+ .level = 43,
+ .species = SPECIES_HARIYAMA,
+ .moves = MOVE_FOCUS_PUNCH, MOVE_ROCK_TOMB, MOVE_REST, MOVE_BELLY_DRUM
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_JohnAndJay3[] = {
+ {
+ .iv = 220,
+ .level = 46,
+ .species = SPECIES_MEDICHAM,
+ .moves = MOVE_PSYCHIC, MOVE_FIRE_PUNCH, MOVE_PSYCH_UP, MOVE_PROTECT
+ },
+ {
+ .iv = 220,
+ .level = 46,
+ .species = SPECIES_HARIYAMA,
+ .moves = MOVE_FOCUS_PUNCH, MOVE_ROCK_TOMB, MOVE_REST, MOVE_BELLY_DRUM
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_JohnAndJay4[] = {
+ {
+ .iv = 230,
+ .level = 49,
+ .species = SPECIES_MEDICHAM,
+ .moves = MOVE_PSYCHIC, MOVE_FIRE_PUNCH, MOVE_PSYCH_UP, MOVE_PROTECT
+ },
+ {
+ .iv = 230,
+ .level = 49,
+ .species = SPECIES_HARIYAMA,
+ .moves = MOVE_FOCUS_PUNCH, MOVE_ROCK_TOMB, MOVE_REST, MOVE_BELLY_DRUM
+ }
+};
+
+const struct TrainerPartyMember1 gTrainerParty_JohnAndJay5[] = {
+ {
+ .iv = 240,
+ .level = 52,
+ .species = SPECIES_MEDICHAM,
+ .moves = MOVE_PSYCHIC, MOVE_FIRE_PUNCH, MOVE_PSYCH_UP, MOVE_PROTECT
+ },
+ {
+ .iv = 240,
+ .level = 52,
+ .species = SPECIES_HARIYAMA,
+ .moves = MOVE_FOCUS_PUNCH, MOVE_ROCK_TOMB, MOVE_REST, MOVE_BELLY_DRUM
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_ReliAndIan[] = {
+ {
+ .iv = 0,
+ .level = 36,
+ .species = SPECIES_AZUMARILL
+ },
+ {
+ .iv = 0,
+ .level = 34,
+ .species = SPECIES_WINGULL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_RitaAndSam1[] = {
+ {
+ .iv = 0,
+ .level = 36,
+ .species = SPECIES_CHINCHOU
+ },
+ {
+ .iv = 0,
+ .level = 34,
+ .species = SPECIES_CARVANHA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_RitaAndSam2[] = {
+ {
+ .iv = 0,
+ .level = 42,
+ .species = SPECIES_CHINCHOU
+ },
+ {
+ .iv = 0,
+ .level = 40,
+ .species = SPECIES_CARVANHA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_RitaAndSam3[] = {
+ {
+ .iv = 0,
+ .level = 45,
+ .species = SPECIES_LANTURN
+ },
+ {
+ .iv = 0,
+ .level = 43,
+ .species = SPECIES_CARVANHA
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_RitaAndSam4[] = {
+ {
+ .iv = 0,
+ .level = 48,
+ .species = SPECIES_LANTURN
+ },
+ {
+ .iv = 0,
+ .level = 46,
+ .species = SPECIES_SHARPEDO
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_RitaAndSam5[] = {
+ {
+ .iv = 0,
+ .level = 51,
+ .species = SPECIES_LANTURN
+ },
+ {
+ .iv = 0,
+ .level = 49,
+ .species = SPECIES_SHARPEDO
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_LisaAndRay[] = {
+ {
+ .iv = 0,
+ .level = 28,
+ .species = SPECIES_GOLDEEN
+ },
+ {
+ .iv = 0,
+ .level = 26,
+ .species = SPECIES_TENTACOOL
+ }
+};
+
+const struct TrainerPartyMember0 gTrainerParty_Eugene[] = {
+ {
+ .iv = 0,
+ .level = 30,
+ .species = SPECIES_MAGIKARP
+ },
+ {
+ .iv = 0,
+ .level = 21,
+ .species = SPECIES_TENTACOOL
+ },
+ {
+ .iv = 0,
+ .level = 27,
+ .species = SPECIES_FEEBAS
+ },
+ {
+ .iv = 0,
+ .level = 24,
+ .species = SPECIES_CARVANHA
+ }
+};
+
diff --git a/src/data/trainers_de.h b/src/data/trainers_de.h
new file mode 100644
index 000000000..c7a0e7744
--- /dev/null
+++ b/src/data/trainers_de.h
@@ -0,0 +1,9717 @@
+const struct Trainer gTrainers[] = {
+ [OPPONENT_NONE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_TRAINER_1,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_BRENDAN,
+ .trainerName = _(""),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x0,
+ .partySize = 0,
+ .party = NULL
+ },
+
+ [OPPONENT_ARCHIE_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_AQUA_LEADER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_ARCHIE,
+ .trainerName = _("ADRIAN"),
+ .items = {ITEM_SUPER_POTION, ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 2,
+ .party = gTrainerParty_Archie1
+ },
+
+ [OPPONENT_GRUNT_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_AQUA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_GRUNT_M,
+ .trainerName = _("RÜPEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Grunt1
+ },
+
+ [OPPONENT_GRUNT_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_AQUA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_GRUNT_M,
+ .trainerName = _("RÜPEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 4,
+ .party = gTrainerParty_Grunt2
+ },
+
+ [OPPONENT_GRUNT_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_AQUA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_GRUNT_M,
+ .trainerName = _("RÜPEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Grunt3
+ },
+
+ [OPPONENT_GRUNT_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_AQUA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_GRUNT_M,
+ .trainerName = _("RÜPEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Grunt4
+ },
+
+ [OPPONENT_GRUNT_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_AQUA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_GRUNT_M,
+ .trainerName = _("RÜPEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Grunt5
+ },
+
+ [OPPONENT_GRUNT_6] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_AQUA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_GRUNT_M,
+ .trainerName = _("RÜPEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Grunt6
+ },
+
+ [OPPONENT_GRUNT_7] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_AQUA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_GRUNT_M,
+ .trainerName = _("RÜPEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Grunt7
+ },
+
+ [OPPONENT_GRUNT_8] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_AQUA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_GRUNT_M,
+ .trainerName = _("RÜPEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Grunt8
+ },
+
+ [OPPONENT_GRUNT_9] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_AQUA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_GRUNT_M,
+ .trainerName = _("RÜPEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Grunt9
+ },
+
+ [OPPONENT_GRUNT_10] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_AQUA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_GRUNT_M,
+ .trainerName = _("RÜPEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Grunt10
+ },
+
+ [OPPONENT_GRUNT_11] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_AQUA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_GRUNT_M,
+ .trainerName = _("RÜPEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Grunt11
+ },
+
+ [OPPONENT_GRUNT_12] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_AQUA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_GRUNT_M,
+ .trainerName = _("RÜPEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Grunt12
+ },
+
+ [OPPONENT_GRUNT_13] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_AQUA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_GRUNT_M,
+ .trainerName = _("RÜPEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Grunt13
+ },
+
+ [OPPONENT_GRUNT_14] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_AQUA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_GRUNT_M,
+ .trainerName = _("RÜPEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Grunt14
+ },
+
+ [OPPONENT_GRUNT_15] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_AQUA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_GRUNT_M,
+ .trainerName = _("RÜPEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Grunt15
+ },
+
+ [OPPONENT_GRUNT_16] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_AQUA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_GRUNT_M,
+ .trainerName = _("RÜPEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Grunt16
+ },
+
+ [OPPONENT_GRUNT_17] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_AQUA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_GRUNT_M,
+ .trainerName = _("RÜPEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Grunt17
+ },
+
+ [OPPONENT_GRUNT_18] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_AQUA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_GRUNT_M,
+ .trainerName = _("RÜPEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Grunt18
+ },
+
+ [OPPONENT_GRUNT_19] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_AQUA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_GRUNT_M,
+ .trainerName = _("RÜPEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Grunt19
+ },
+
+ [OPPONENT_GRUNT_20] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_AQUA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_GRUNT_M,
+ .trainerName = _("RÜPEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Grunt20
+ },
+
+ [OPPONENT_GRUNT_21] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_AQUA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_GRUNT_M,
+ .trainerName = _("RÜPEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Grunt21
+ },
+
+ [OPPONENT_GRUNT_22] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_AQUA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_GRUNT_M,
+ .trainerName = _("RÜPEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Grunt22
+ },
+
+ [OPPONENT_GRUNT_23] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_AQUA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_GRUNT_M,
+ .trainerName = _("RÜPEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Grunt23
+ },
+
+ [OPPONENT_GRUNT_24] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_AQUA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_GRUNT_M,
+ .trainerName = _("RÜPEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Grunt24
+ },
+
+ [OPPONENT_GRUNT_25] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_AQUA,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_GRUNT_F,
+ .trainerName = _("RÜPEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Grunt25
+ },
+
+ [OPPONENT_GRUNT_26] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_AQUA,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_GRUNT_F,
+ .trainerName = _("RÜPEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Grunt26
+ },
+
+ [OPPONENT_GRUNT_27] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_AQUA,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_GRUNT_F,
+ .trainerName = _("RÜPEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Grunt27
+ },
+
+ [OPPONENT_ANONYMOUS_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_AQUA_ADMIN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_ADMIN_M,
+ .trainerName = _(""),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 2,
+ .party = gTrainerParty_Anonymous1
+ },
+
+ [OPPONENT_MATT_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_AQUA_ADMIN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_ADMIN_M,
+ .trainerName = _("WOLFGANG"),
+ .items = {ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Matt1
+ },
+
+ [OPPONENT_MATT_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_AQUA_ADMIN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_ADMIN_M,
+ .trainerName = _("WOLFGANG"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0xb,
+ .partySize = 3,
+ .party = gTrainerParty_Matt2
+ },
+
+ [OPPONENT_SHELLY_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_AQUA_ADMIN,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_ADMIN_F,
+ .trainerName = _("KORDULA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 2,
+ .party = gTrainerParty_Shelly1
+ },
+
+ [OPPONENT_SHELLY_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_AQUA_ADMIN,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_ADMIN_F,
+ .trainerName = _("KORDULA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 2,
+ .party = gTrainerParty_Shelly2
+ },
+
+ [OPPONENT_ARCHIE_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_AQUA_LEADER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_ARCHIE,
+ .trainerName = _("ADRIAN"),
+ .items = {ITEM_SUPER_POTION, ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Archie2
+ },
+
+ [OPPONENT_ARCHIE_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_AQUA_LEADER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_ARCHIE,
+ .trainerName = _("ADRIAN"),
+ .items = {ITEM_SUPER_POTION, ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Archie3
+ },
+
+ [OPPONENT_DAISY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_AROMA_LADY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_AROMA_LADY,
+ .trainerName = _("MARGARETE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Daisy
+ },
+
+ [OPPONENT_ROSE_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_AROMA_LADY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_AROMA_LADY,
+ .trainerName = _("ROSEMARIE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Rose1
+ },
+
+ [OPPONENT_LILY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_AROMA_LADY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_AROMA_LADY,
+ .trainerName = _("LILLY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Lily
+ },
+
+ [OPPONENT_VIOLET] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_AROMA_LADY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_AROMA_LADY,
+ .trainerName = _("ERIKA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Violet
+ },
+
+ [OPPONENT_ROSE_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_AROMA_LADY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_AROMA_LADY,
+ .trainerName = _("ROSEMARIE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Rose2
+ },
+
+ [OPPONENT_ROSE_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_AROMA_LADY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_AROMA_LADY,
+ .trainerName = _("ROSEMARIE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Rose3
+ },
+
+ [OPPONENT_ROSE_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_AROMA_LADY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_AROMA_LADY,
+ .trainerName = _("ROSEMARIE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Rose4
+ },
+
+ [OPPONENT_ROSE_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_AROMA_LADY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_AROMA_LADY,
+ .trainerName = _("ROSEMARIE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Rose5
+ },
+
+ [OPPONENT_DUSTY_1] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_RUIN_MANIAC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_RUIN_MANIAC,
+ .trainerName = _("RÜDIGER"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Dusty1
+ },
+
+ [OPPONENT_CHIP] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_RUIN_MANIAC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_RUIN_MANIAC,
+ .trainerName = _("RUPRECHT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Chip
+ },
+
+ [OPPONENT_FOSTER] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_RUIN_MANIAC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_RUIN_MANIAC,
+ .trainerName = _("RUBEN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Foster
+ },
+
+ [OPPONENT_DUSTY_2] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_RUIN_MANIAC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_RUIN_MANIAC,
+ .trainerName = _("RÜDIGER"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Dusty2
+ },
+
+ [OPPONENT_DUSTY_3] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_RUIN_MANIAC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_RUIN_MANIAC,
+ .trainerName = _("RÜDIGER"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Dusty3
+ },
+
+ [OPPONENT_DUSTY_4] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_RUIN_MANIAC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_RUIN_MANIAC,
+ .trainerName = _("RÜDIGER"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Dusty4
+ },
+
+ [OPPONENT_DUSTY_5] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_RUIN_MANIAC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_RUIN_MANIAC,
+ .trainerName = _("RÜDIGER"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Dusty5
+ },
+
+ [OPPONENT_GABBY_AND_TY_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_INTERVIEWER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTERVIEWER,
+ .trainerPic = TRAINER_PIC_INTERVIEWER,
+ .trainerName = _("PIA & UDO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_GabbyAndTy1
+ },
+
+ [OPPONENT_GABBY_AND_TY_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_INTERVIEWER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTERVIEWER,
+ .trainerPic = TRAINER_PIC_INTERVIEWER,
+ .trainerName = _("PIA & UDO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_GabbyAndTy2
+ },
+
+ [OPPONENT_GABBY_AND_TY_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_INTERVIEWER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTERVIEWER,
+ .trainerPic = TRAINER_PIC_INTERVIEWER,
+ .trainerName = _("PIA & UDO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_GabbyAndTy3
+ },
+
+ [OPPONENT_GABBY_AND_TY_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_INTERVIEWER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTERVIEWER,
+ .trainerPic = TRAINER_PIC_INTERVIEWER,
+ .trainerName = _("PIA & UDO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_GabbyAndTy4
+ },
+
+ [OPPONENT_GABBY_AND_TY_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_INTERVIEWER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTERVIEWER,
+ .trainerPic = TRAINER_PIC_INTERVIEWER,
+ .trainerName = _("PIA & UDO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_GabbyAndTy5
+ },
+
+ [OPPONENT_GABBY_AND_TY_6] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_INTERVIEWER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTERVIEWER,
+ .trainerPic = TRAINER_PIC_INTERVIEWER,
+ .trainerName = _("PIA & UDO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_GabbyAndTy6
+ },
+
+ [OPPONENT_LOLA_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TUBER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_TUBER_F,
+ .trainerName = _("LOLA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Lola1
+ },
+
+ [OPPONENT_CARMEN] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TUBER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_TUBER_F,
+ .trainerName = _("CARMEN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Carmen
+ },
+
+ [OPPONENT_GWEN] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TUBER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_TUBER_F,
+ .trainerName = _("HILDE "),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Gwen
+ },
+
+ [OPPONENT_LOLA_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TUBER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_TUBER_F,
+ .trainerName = _("LOLA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Lola2
+ },
+
+ [OPPONENT_LOLA_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TUBER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_TUBER_F,
+ .trainerName = _("LOLA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Lola3
+ },
+
+ [OPPONENT_LOLA_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TUBER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_TUBER_F,
+ .trainerName = _("LOLA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Lola4
+ },
+
+ [OPPONENT_LOLA_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TUBER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_TUBER_F,
+ .trainerName = _("LOLA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Lola5
+ },
+
+ [OPPONENT_RICKY_1] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_TUBER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_TUBER_M,
+ .trainerName = _("GÜNTHER"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Ricky1
+ },
+
+ [OPPONENT_SIMON] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TUBER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_TUBER_M,
+ .trainerName = _("SIMON"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Simon
+ },
+
+ [OPPONENT_CHARLIE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TUBER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_TUBER_M,
+ .trainerName = _("HILMAR"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Charlie
+ },
+
+ [OPPONENT_RICKY_2] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_TUBER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_TUBER_M,
+ .trainerName = _("GÜNTHER"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Ricky2
+ },
+
+ [OPPONENT_RICKY_3] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_TUBER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_TUBER_M,
+ .trainerName = _("GÜNTHER"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Ricky3
+ },
+
+ [OPPONENT_RICKY_4] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_TUBER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_TUBER_M,
+ .trainerName = _("GÜNTHER"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Ricky4
+ },
+
+ [OPPONENT_RICKY_5] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_TUBER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_TUBER_M,
+ .trainerName = _("GÜNTHER"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Ricky5
+ },
+
+ [OPPONENT_RANDALL] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerName = _("HUBERT"),
+ .items = {ITEM_X_SPEED, ITEM_X_SPEED, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 1,
+ .party = gTrainerParty_Randall
+ },
+
+ [OPPONENT_PARKER] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerName = _("PATRICK"),
+ .items = {ITEM_GUARD_SPEC, ITEM_GUARD_SPEC, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 1,
+ .party = gTrainerParty_Parker
+ },
+
+ [OPPONENT_GEORGE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerName = _("NILS"),
+ .items = {ITEM_SUPER_POTION, ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 1,
+ .party = gTrainerParty_George
+ },
+
+ [OPPONENT_BERKE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerName = _("CHRISTIAN"),
+ .items = {ITEM_DIRE_HIT, ITEM_DIRE_HIT, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 1,
+ .party = gTrainerParty_Berke
+ },
+
+ [OPPONENT_CLYDE] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerName = _("OSKAR"),
+ .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 5,
+ .party = gTrainerParty_Clyde
+ },
+
+ [OPPONENT_VINCENT] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerName = _("OTFRIED"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Vincent
+ },
+
+ [OPPONENT_LEROY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerName = _("OTMAR"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 2,
+ .party = gTrainerParty_Leroy
+ },
+
+ [OPPONENT_WILTON_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerName = _("PASCAL"),
+ .items = {ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Wilton1
+ },
+
+ [OPPONENT_EDGAR] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerName = _("EDGAR"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 1,
+ .party = gTrainerParty_Edgar
+ },
+
+ [OPPONENT_ALBERT] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerName = _("PABLO"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 2,
+ .party = gTrainerParty_Albert
+ },
+
+ [OPPONENT_SAMUEL] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerName = _("RICHARD"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Samuel
+ },
+
+ [OPPONENT_VITO] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerName = _("PAUL"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 4,
+ .party = gTrainerParty_Vito
+ },
+
+ [OPPONENT_OWEN] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerName = _("RAIMUND"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Owen
+ },
+
+ [OPPONENT_WILTON_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerName = _("PASCAL"),
+ .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Wilton2
+ },
+
+ [OPPONENT_WILTON_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerName = _("PASCAL"),
+ .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Wilton3
+ },
+
+ [OPPONENT_WILTON_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerName = _("PASCAL"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Wilton4
+ },
+
+ [OPPONENT_WILTON_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerName = _("PASCAL"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Wilton5
+ },
+
+ [OPPONENT_WARREN] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerName = _("MARKUS"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Warren
+ },
+
+ [OPPONENT_MARY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerName = _("YVONNE"),
+ .items = {ITEM_X_ACCURACY, ITEM_X_ACCURACY, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 1,
+ .party = gTrainerParty_Mary
+ },
+
+ [OPPONENT_LORI] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerName = _("RAMONA"),
+ .items = {ITEM_X_DEFEND, ITEM_X_DEFEND, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 1,
+ .party = gTrainerParty_Lori
+ },
+
+ [OPPONENT_JODY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerName = _("ROSWITA"),
+ .items = {ITEM_X_ATTACK, ITEM_X_ATTACK, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0xb,
+ .partySize = 1,
+ .party = gTrainerParty_Jody
+ },
+
+ [OPPONENT_WENDY] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerName = _("VIOLA"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0xb,
+ .partySize = 3,
+ .party = gTrainerParty_Wendy
+ },
+
+ [OPPONENT_ELAINE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerName = _("FRAUKE"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0xb,
+ .partySize = 2,
+ .party = gTrainerParty_Elaine
+ },
+
+ [OPPONENT_BROOKE_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerName = _("VERONIKA"),
+ .items = {ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Brooke1
+ },
+
+ [OPPONENT_JENNIFER] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerName = _("MARIANNE"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 1,
+ .party = gTrainerParty_Jennifer
+ },
+
+ [OPPONENT_HOPE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerName = _("TRUDLINDE"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 1,
+ .party = gTrainerParty_Hope
+ },
+
+ [OPPONENT_SHANNON] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerName = _("THERESA"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 1,
+ .party = gTrainerParty_Shannon
+ },
+
+ [OPPONENT_MICHELLE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerName = _("MICHELLE"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Michelle
+ },
+
+ [OPPONENT_CAROLINE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerName = _("KAROLINE"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 2,
+ .party = gTrainerParty_Caroline
+ },
+
+ [OPPONENT_JULIE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerName = _("MICHAELA"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 2,
+ .party = gTrainerParty_Julie
+ },
+
+ [OPPONENT_BROOKE_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerName = _("VERONIKA"),
+ .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Brooke2
+ },
+
+ [OPPONENT_BROOKE_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerName = _("VERONIKA"),
+ .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Brooke3
+ },
+
+ [OPPONENT_BROOKE_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerName = _("VERONIKA"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Brooke4
+ },
+
+ [OPPONENT_BROOKE_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerName = _("VERONIKA"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Brooke5
+ },
+
+ [OPPONENT_PATRICIA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_HEX_MANIAC,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_HEX_MANIAC,
+ .trainerName = _("WALBURGA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Patricia
+ },
+
+ [OPPONENT_KINDRA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_HEX_MANIAC,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_HEX_MANIAC,
+ .trainerName = _("GUNDULA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Kindra
+ },
+
+ [OPPONENT_TAMMY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_HEX_MANIAC,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_HEX_MANIAC,
+ .trainerName = _("BRUNHILDE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Tammy
+ },
+
+ [OPPONENT_VALERIE_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_HEX_MANIAC,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_HEX_MANIAC,
+ .trainerName = _("TABITHA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Valerie1
+ },
+
+ [OPPONENT_TASHA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_HEX_MANIAC,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_HEX_MANIAC,
+ .trainerName = _("PANDORA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Tasha
+ },
+
+ [OPPONENT_VALERIE_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_HEX_MANIAC,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_HEX_MANIAC,
+ .trainerName = _("TABITHA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Valerie2
+ },
+
+ [OPPONENT_VALERIE_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_HEX_MANIAC,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_HEX_MANIAC,
+ .trainerName = _("TABITHA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Valerie3
+ },
+
+ [OPPONENT_VALERIE_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_HEX_MANIAC,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_HEX_MANIAC,
+ .trainerName = _("TABITHA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Valerie4
+ },
+
+ [OPPONENT_VALERIE_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_HEX_MANIAC,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_HEX_MANIAC,
+ .trainerName = _("TABITHA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Valerie5
+ },
+
+ [OPPONENT_CINDY_1] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM,
+ .trainerClass = TRAINER_CLASS_LADY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_LADY,
+ .trainerName = _("PATRIZIA"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Cindy1
+ },
+
+ [OPPONENT_ANONYMOUS_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_LADY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_LADY,
+ .trainerName = _(""),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Anonymous2
+ },
+
+ [OPPONENT_BRIANNA_1] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_LADY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_LADY,
+ .trainerName = _("NATASCHA"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Brianna1
+ },
+
+ [OPPONENT_CINDY_2] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_LADY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_LADY,
+ .trainerName = _("PATRIZIA"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Cindy2
+ },
+
+ [OPPONENT_BRIANNA_2] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM,
+ .trainerClass = TRAINER_CLASS_LADY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_LADY,
+ .trainerName = _("NATASCHA"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Brianna2
+ },
+
+ [OPPONENT_ANETTE] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM,
+ .trainerClass = TRAINER_CLASS_LADY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_LADY,
+ .trainerName = _("ANETTE"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Anette
+ },
+
+ [OPPONENT_CINDY_3] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM,
+ .trainerClass = TRAINER_CLASS_LADY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_LADY,
+ .trainerName = _("PATRIZIA"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Cindy3
+ },
+
+ [OPPONENT_CINDY_4] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM,
+ .trainerClass = TRAINER_CLASS_LADY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_LADY,
+ .trainerName = _("PATRIZIA"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Cindy4
+ },
+
+ [OPPONENT_CINDY_5] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM,
+ .trainerClass = TRAINER_CLASS_LADY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_LADY,
+ .trainerName = _("PATRIZIA"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Cindy5
+ },
+
+ [OPPONENT_CINDY_6] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_LADY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_LADY,
+ .trainerName = _("PATRIZIA"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Cindy6
+ },
+
+ [OPPONENT_MELISSA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BEAUTY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_BEAUTY,
+ .trainerName = _("MELISSA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Melissa
+ },
+
+ [OPPONENT_SHEILA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BEAUTY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_BEAUTY,
+ .trainerName = _("SYLVIA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Sheila
+ },
+
+ [OPPONENT_SHIRLEY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BEAUTY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_BEAUTY,
+ .trainerName = _("MIRJAM"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Shirley
+ },
+
+ [OPPONENT_JESSICA_1] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_BEAUTY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_BEAUTY,
+ .trainerName = _("GERMAINE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Jessica1
+ },
+
+ [OPPONENT_CONNIE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BEAUTY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_BEAUTY,
+ .trainerName = _("FRANCESCA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Connie
+ },
+
+ [OPPONENT_BRIDGET] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BEAUTY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_BEAUTY,
+ .trainerName = _("SALMA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Bridget
+ },
+
+ [OPPONENT_OLIVIA] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_BEAUTY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_BEAUTY,
+ .trainerName = _("TIA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Olivia
+ },
+
+ [OPPONENT_TIFFANY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BEAUTY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_BEAUTY,
+ .trainerName = _("DANIELA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Tiffany
+ },
+
+ [OPPONENT_JESSICA_2] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_BEAUTY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_BEAUTY,
+ .trainerName = _("GERMAINE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Jessica2
+ },
+
+ [OPPONENT_JESSICA_3] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_BEAUTY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_BEAUTY,
+ .trainerName = _("GERMAINE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Jessica3
+ },
+
+ [OPPONENT_JESSICA_4] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_BEAUTY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_BEAUTY,
+ .trainerName = _("GERMAINE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Jessica4
+ },
+
+ [OPPONENT_JESSICA_5] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_BEAUTY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_BEAUTY,
+ .trainerName = _("GERMAINE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Jessica5
+ },
+
+ [OPPONENT_WINSTON_1] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM,
+ .trainerClass = TRAINER_CLASS_RICH_BOY,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH,
+ .trainerPic = TRAINER_PIC_RICH_BOY,
+ .trainerName = _("RENE"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Winston1
+ },
+
+ [OPPONENT_ANONYMOUS_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_RICH_BOY,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH,
+ .trainerPic = TRAINER_PIC_RICH_BOY,
+ .trainerName = _(""),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Anonymous3
+ },
+
+ [OPPONENT_GARRET] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM,
+ .trainerClass = TRAINER_CLASS_RICH_BOY,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH,
+ .trainerPic = TRAINER_PIC_RICH_BOY,
+ .trainerName = _("KAI"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Garret
+ },
+
+ [OPPONENT_WINSTON_2] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM,
+ .trainerClass = TRAINER_CLASS_RICH_BOY,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH,
+ .trainerPic = TRAINER_PIC_RICH_BOY,
+ .trainerName = _("RENE"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Winston2
+ },
+
+ [OPPONENT_WINSTON_3] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM,
+ .trainerClass = TRAINER_CLASS_RICH_BOY,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH,
+ .trainerPic = TRAINER_PIC_RICH_BOY,
+ .trainerName = _("RENE"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Winston3
+ },
+
+ [OPPONENT_WINSTON_4] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM,
+ .trainerClass = TRAINER_CLASS_RICH_BOY,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH,
+ .trainerPic = TRAINER_PIC_RICH_BOY,
+ .trainerName = _("RENE"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Winston4
+ },
+
+ [OPPONENT_WINSTON_5] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_RICH_BOY,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH,
+ .trainerPic = TRAINER_PIC_RICH_BOY,
+ .trainerName = _("RENE"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Winston5
+ },
+
+ [OPPONENT_STEVE_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMANIAC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_POKEMANIAC,
+ .trainerName = _("HIRO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Steve1
+ },
+
+ [OPPONENT_CHRIS] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMANIAC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_POKEMANIAC,
+ .trainerName = _("CHRIS"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Chris
+ },
+
+ [OPPONENT_MARK] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMANIAC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_POKEMANIAC,
+ .trainerName = _("MARK"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Mark
+ },
+
+ [OPPONENT_KENN] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMANIAC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_POKEMANIAC,
+ .trainerName = _("KLAUS"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Kenn
+ },
+
+ [OPPONENT_STEVE_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMANIAC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_POKEMANIAC,
+ .trainerName = _("HIRO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Steve2
+ },
+
+ [OPPONENT_STEVE_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMANIAC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_POKEMANIAC,
+ .trainerName = _("HIRO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Steve3
+ },
+
+ [OPPONENT_STEVE_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMANIAC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_POKEMANIAC,
+ .trainerName = _("HIRO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Steve4
+ },
+
+ [OPPONENT_STEVE_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMANIAC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_POKEMANIAC,
+ .trainerName = _("HIRO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Steve5
+ },
+
+ [OPPONENT_LUIS] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_M,
+ .trainerName = _("KONSTANTIN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Luis
+ },
+
+ [OPPONENT_AUSTIN] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_M,
+ .trainerName = _("GUIDO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Austin
+ },
+
+ [OPPONENT_DOUGLAS] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_M,
+ .trainerName = _("IGNAZ"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Douglas
+ },
+
+ [OPPONENT_DARRIN] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_M,
+ .trainerName = _("MANUEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Darrin
+ },
+
+ [OPPONENT_TONY_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_M,
+ .trainerName = _("KEVIN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Tony1
+ },
+
+ [OPPONENT_JEROME] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_M,
+ .trainerName = _("OSWALD"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Jerome
+ },
+
+ [OPPONENT_MATTHEW] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_M,
+ .trainerName = _("UMBERTO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Matthew
+ },
+
+ [OPPONENT_DAVID] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_M,
+ .trainerName = _("WINFRIED"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_David
+ },
+
+ [OPPONENT_SPENCER] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_M,
+ .trainerName = _("LEOPOLD"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Spencer
+ },
+
+ [OPPONENT_ROLAND] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_M,
+ .trainerName = _("THOMAS"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Roland
+ },
+
+ [OPPONENT_CODY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_M,
+ .trainerName = _("TIMO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Cody
+ },
+
+ [OPPONENT_STAN] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_M,
+ .trainerName = _("BALTHASAR"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Stan
+ },
+
+ [OPPONENT_BARRY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_M,
+ .trainerName = _("BASIL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Barry
+ },
+
+ [OPPONENT_DEAN] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_M,
+ .trainerName = _("DAGOBERT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Dean
+ },
+
+ [OPPONENT_RODNEY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_M,
+ .trainerName = _("DIETER"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Rodney
+ },
+
+ [OPPONENT_RICHARD] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_M,
+ .trainerName = _("ENNO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Richard
+ },
+
+ [OPPONENT_HERMAN] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_M,
+ .trainerName = _("BENNO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Herman
+ },
+
+ [OPPONENT_ANONYMOUS_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_M,
+ .trainerName = _(""),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Anonymous4
+ },
+
+ [OPPONENT_GILBERT] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_M,
+ .trainerName = _("ERICH"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Gilbert
+ },
+
+ [OPPONENT_FRANKLIN] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_M,
+ .trainerName = _("KASPER"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Franklin
+ },
+
+ [OPPONENT_DANNY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_M,
+ .trainerName = _("MARCEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Danny
+ },
+
+ [OPPONENT_JACK] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_M,
+ .trainerName = _("PEDRO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Jack
+ },
+
+ [OPPONENT_DUDLEY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_M,
+ .trainerName = _("THEODOR"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Dudley
+ },
+
+ [OPPONENT_CHAD] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_M,
+ .trainerName = _("JANNIK"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Chad
+ },
+
+ [OPPONENT_TONY_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_M,
+ .trainerName = _("KEVIN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Tony2
+ },
+
+ [OPPONENT_TONY_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_M,
+ .trainerName = _("KEVIN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Tony3
+ },
+
+ [OPPONENT_TONY_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_M,
+ .trainerName = _("KEVIN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Tony4
+ },
+
+ [OPPONENT_TONY_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_M,
+ .trainerName = _("KEVIN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Tony5
+ },
+
+ [OPPONENT_HIDEKI] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BLACK_BELT,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_BLACK_BELT,
+ .trainerName = _("SATORU"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Hideki
+ },
+
+ [OPPONENT_HITOSHI] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BLACK_BELT,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_BLACK_BELT,
+ .trainerName = _("SHIGERU"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Hitoshi
+ },
+
+ [OPPONENT_KIYO] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BLACK_BELT,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_BLACK_BELT,
+ .trainerName = _("YU"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Kiyo
+ },
+
+ [OPPONENT_KOICHI] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BLACK_BELT,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_BLACK_BELT,
+ .trainerName = _("JUNICHI"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Koichi
+ },
+
+ [OPPONENT_NOB_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BLACK_BELT,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_BLACK_BELT,
+ .trainerName = _("MINORU"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Nob1
+ },
+
+ [OPPONENT_NOB_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BLACK_BELT,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_BLACK_BELT,
+ .trainerName = _("MINORU"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Nob2
+ },
+
+ [OPPONENT_NOB_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BLACK_BELT,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_BLACK_BELT,
+ .trainerName = _("MINORU"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Nob3
+ },
+
+ [OPPONENT_NOB_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BLACK_BELT,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_BLACK_BELT,
+ .trainerName = _("MINORU"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Nob4
+ },
+
+ [OPPONENT_NOB_5] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM,
+ .trainerClass = TRAINER_CLASS_BLACK_BELT,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_BLACK_BELT,
+ .trainerName = _("MINORU"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 4,
+ .party = gTrainerParty_Nob5
+ },
+
+ [OPPONENT_YUJI] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BLACK_BELT,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_BLACK_BELT,
+ .trainerName = _("HIDEO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Yuji
+ },
+
+ [OPPONENT_DAISUKE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BLACK_BELT,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_BLACK_BELT,
+ .trainerName = _("KENJI"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Daisuke
+ },
+
+ [OPPONENT_ATSUSHI] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BLACK_BELT,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_BLACK_BELT,
+ .trainerName = _("HIROSHI"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Atsushi
+ },
+
+ [OPPONENT_KIRK] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_GUITARIST,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_GUITARIST,
+ .trainerName = _("CHUCK"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Kirk
+ },
+
+ [OPPONENT_SCOTT] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_GUITARIST,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_GUITARIST,
+ .trainerName = _("TREY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Scott
+ },
+
+ [OPPONENT_HARVEY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_GUITARIST,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_GUITARIST,
+ .trainerName = _("KERRY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Harvey
+ },
+
+ [OPPONENT_SHAWN] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_GUITARIST,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_GUITARIST,
+ .trainerName = _("REINHARD"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Shawn
+ },
+
+ [OPPONENT_RANDY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_GUITARIST,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_GUITARIST,
+ .trainerName = _("JEFF"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Randy
+ },
+
+ [OPPONENT_DALTON_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_GUITARIST,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_GUITARIST,
+ .trainerName = _("KIRK"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Dalton1
+ },
+
+ [OPPONENT_DALTON_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_GUITARIST,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_GUITARIST,
+ .trainerName = _("KIRK"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Dalton2
+ },
+
+ [OPPONENT_DALTON_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_GUITARIST,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_GUITARIST,
+ .trainerName = _("KIRK"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Dalton3
+ },
+
+ [OPPONENT_DALTON_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_GUITARIST,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_GUITARIST,
+ .trainerName = _("KIRK"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Dalton4
+ },
+
+ [OPPONENT_DALTON_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_GUITARIST,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_GUITARIST,
+ .trainerName = _("KIRK"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Dalton5
+ },
+
+ [OPPONENT_COLE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_KINDLER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_KINDLER,
+ .trainerName = _("HENDRIK"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Cole
+ },
+
+ [OPPONENT_FLINT] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_KINDLER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_KINDLER,
+ .trainerName = _("HEINZ"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Flint
+ },
+
+ [OPPONENT_AXLE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_KINDLER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_KINDLER,
+ .trainerName = _("HAGEN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Axle
+ },
+
+ [OPPONENT_JAKE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_KINDLER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_KINDLER,
+ .trainerName = _("HANNES"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Jake
+ },
+
+ [OPPONENT_ANDY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_KINDLER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_KINDLER,
+ .trainerName = _("HARTMANN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Andy
+ },
+
+ [OPPONENT_BERNIE_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_KINDLER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_KINDLER,
+ .trainerName = _("HASSO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Bernie1
+ },
+
+ [OPPONENT_BERNIE_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_KINDLER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_KINDLER,
+ .trainerName = _("HASSO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Bernie2
+ },
+
+ [OPPONENT_BERNIE_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_KINDLER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_KINDLER,
+ .trainerName = _("HASSO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Bernie3
+ },
+
+ [OPPONENT_BERNIE_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_KINDLER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_KINDLER,
+ .trainerName = _("HASSO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Bernie4
+ },
+
+ [OPPONENT_BERNIE_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_KINDLER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_KINDLER,
+ .trainerName = _("HASSO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Bernie5
+ },
+
+ [OPPONENT_DREW] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_CAMPER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_CAMPER,
+ .trainerName = _("ISSIDOR"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Drew
+ },
+
+ [OPPONENT_CLIFF] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_CAMPER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_CAMPER,
+ .trainerName = _("IVAN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Cliff
+ },
+
+ [OPPONENT_LARRY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_CAMPER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_CAMPER,
+ .trainerName = _("KAREL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Larry
+ },
+
+ [OPPONENT_SHANE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_CAMPER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_CAMPER,
+ .trainerName = _("KUNO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Shane
+ },
+
+ [OPPONENT_JUSTIN] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_CAMPER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_CAMPER,
+ .trainerName = _("LAURENZ"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Justin
+ },
+
+ [OPPONENT_ETHAN_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_CAMPER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_CAMPER,
+ .trainerName = _("EWALD"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Ethan1
+ },
+
+ [OPPONENT_JEFF] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_CAMPER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_CAMPER,
+ .trainerName = _("RAPHAEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Jeff
+ },
+
+ [OPPONENT_TRAVIS] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_CAMPER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_CAMPER,
+ .trainerName = _("RONALD"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Travis
+ },
+
+ [OPPONENT_ETHAN_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_CAMPER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_CAMPER,
+ .trainerName = _("EWALD"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Ethan2
+ },
+
+ [OPPONENT_ETHAN_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_CAMPER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_CAMPER,
+ .trainerName = _("EWALD"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Ethan3
+ },
+
+ [OPPONENT_ETHAN_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_CAMPER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_CAMPER,
+ .trainerName = _("EWALD"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Ethan4
+ },
+
+ [OPPONENT_ETHAN_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_CAMPER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_CAMPER,
+ .trainerName = _("EWALD"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Ethan5
+ },
+
+ [OPPONENT_BRENT] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BUG_MANIAC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_BUG_MANIAC,
+ .trainerName = _("ROMEO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Brent
+ },
+
+ [OPPONENT_DONALD] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BUG_MANIAC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_BUG_MANIAC,
+ .trainerName = _("TILL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Donald
+ },
+
+ [OPPONENT_TAYLOR] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BUG_MANIAC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_BUG_MANIAC,
+ .trainerName = _("URIEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Taylor
+ },
+
+ [OPPONENT_BRANDON_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BUG_MANIAC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_BUG_MANIAC,
+ .trainerName = _("BRUNO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Brandon1
+ },
+
+ [OPPONENT_DEREK] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BUG_MANIAC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_BUG_MANIAC,
+ .trainerName = _("BURKARD"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Derek
+ },
+
+ [OPPONENT_BRANDON_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BUG_MANIAC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_BUG_MANIAC,
+ .trainerName = _("BRUNO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Brandon2
+ },
+
+ [OPPONENT_BRANDON_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BUG_MANIAC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_BUG_MANIAC,
+ .trainerName = _("BRUNO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Brandon3
+ },
+
+ [OPPONENT_BRANDON_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BUG_MANIAC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_BUG_MANIAC,
+ .trainerName = _("BRUNO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 4,
+ .party = gTrainerParty_Brandon4
+ },
+
+ [OPPONENT_BRANDON_5] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM,
+ .trainerClass = TRAINER_CLASS_BUG_MANIAC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_BUG_MANIAC,
+ .trainerName = _("BRUNO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 5,
+ .party = gTrainerParty_Brandon5
+ },
+
+ [OPPONENT_EDWARD] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_PSYCHIC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_PSYCHIC_M,
+ .trainerName = _("WENDELIN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Edward
+ },
+
+ [OPPONENT_PRESTON] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PSYCHIC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_PSYCHIC_M,
+ .trainerName = _("URBAN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Preston
+ },
+
+ [OPPONENT_VIRGIL] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PSYCHIC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_PSYCHIC_M,
+ .trainerName = _("ZOLTAN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Virgil
+ },
+
+ [OPPONENT_FRITZ] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PSYCHIC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_PSYCHIC_M,
+ .trainerName = _("XAVER"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Fritz
+ },
+
+ [OPPONENT_WILLIAM] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PSYCHIC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_PSYCHIC_M,
+ .trainerName = _("WULF"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_William
+ },
+
+ [OPPONENT_JOSHUA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PSYCHIC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_PSYCHIC_M,
+ .trainerName = _("JONAS"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Joshua
+ },
+
+ [OPPONENT_CAMERON_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PSYCHIC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_PSYCHIC_M,
+ .trainerName = _("MAXIMILIAN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Cameron1
+ },
+
+ [OPPONENT_CAMERON_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PSYCHIC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_PSYCHIC_M,
+ .trainerName = _("MAXIMILIAN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Cameron2
+ },
+
+ [OPPONENT_CAMERON_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PSYCHIC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_PSYCHIC_M,
+ .trainerName = _("MAXIMILIAN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Cameron3
+ },
+
+ [OPPONENT_CAMERON_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PSYCHIC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_PSYCHIC_M,
+ .trainerName = _("MAXIMILIAN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Cameron4
+ },
+
+ [OPPONENT_CAMERON_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PSYCHIC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_PSYCHIC_M,
+ .trainerName = _("MAXIMILIAN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Cameron5
+ },
+
+ [OPPONENT_JACLYN] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_PSYCHIC,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_PSYCHIC_F,
+ .trainerName = _("COSIMA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Jaclyn
+ },
+
+ [OPPONENT_HANNAH] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PSYCHIC,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_PSYCHIC_F,
+ .trainerName = _("HANNAH"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Hannah
+ },
+
+ [OPPONENT_SAMANTHA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PSYCHIC,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_PSYCHIC_F,
+ .trainerName = _("SAMANTHA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Samantha
+ },
+
+ [OPPONENT_MAURA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PSYCHIC,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_PSYCHIC_F,
+ .trainerName = _("DOLORES"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Maura
+ },
+
+ [OPPONENT_KAYLA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PSYCHIC,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_PSYCHIC_F,
+ .trainerName = _("CAMILLA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Kayla
+ },
+
+ [OPPONENT_ALEXIS] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PSYCHIC,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_PSYCHIC_F,
+ .trainerName = _("ALEXIS"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Alexis
+ },
+
+ [OPPONENT_JACKI_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PSYCHIC,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_PSYCHIC_F,
+ .trainerName = _("KORNELIA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Jacki1
+ },
+
+ [OPPONENT_JACKI_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PSYCHIC,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_PSYCHIC_F,
+ .trainerName = _("KORNELIA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Jacki2
+ },
+
+ [OPPONENT_JACKI_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PSYCHIC,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_PSYCHIC_F,
+ .trainerName = _("KORNELIA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Jacki3
+ },
+
+ [OPPONENT_JACKI_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PSYCHIC,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_PSYCHIC_F,
+ .trainerName = _("KORNELIA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Jacki4
+ },
+
+ [OPPONENT_JACKI_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PSYCHIC,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_PSYCHIC_F,
+ .trainerName = _("KORNELIA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Jacki5
+ },
+
+ [OPPONENT_WALTER_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_GENTLEMAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH,
+ .trainerPic = TRAINER_PIC_GENTLEMAN,
+ .trainerName = _("ABRAHAM"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Walter1
+ },
+
+ [OPPONENT_TUCKER] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_GENTLEMAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH,
+ .trainerPic = TRAINER_PIC_GENTLEMAN,
+ .trainerName = _("CLAUDIO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Tucker
+ },
+
+ [OPPONENT_THOMAS] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_GENTLEMAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH,
+ .trainerPic = TRAINER_PIC_GENTLEMAN,
+ .trainerName = _("NIKOLAI"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Thomas
+ },
+
+ [OPPONENT_WALTER_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_GENTLEMAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH,
+ .trainerPic = TRAINER_PIC_GENTLEMAN,
+ .trainerName = _("ABRAHAM"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Walter2
+ },
+
+ [OPPONENT_WALTER_3] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_GENTLEMAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH,
+ .trainerPic = TRAINER_PIC_GENTLEMAN,
+ .trainerName = _("ABRAHAM"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Walter3
+ },
+
+ [OPPONENT_WALTER_4] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_GENTLEMAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH,
+ .trainerPic = TRAINER_PIC_GENTLEMAN,
+ .trainerName = _("ABRAHAM"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Walter4
+ },
+
+ [OPPONENT_WALTER_5] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_GENTLEMAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH,
+ .trainerPic = TRAINER_PIC_GENTLEMAN,
+ .trainerName = _("ABRAHAM"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Walter5
+ },
+
+ [OPPONENT_SIDNEY] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_ELITE_FOUR,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_ELITE_FOUR,
+ .trainerPic = TRAINER_PIC_SIDNEY,
+ .trainerName = _("ULRICH"),
+ .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 5,
+ .party = gTrainerParty_Sidney
+ },
+
+ [OPPONENT_PHOEBE] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_ELITE_FOUR,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_ELITE_FOUR,
+ .trainerPic = TRAINER_PIC_PHOEBE,
+ .trainerName = _("ANTONIA"),
+ .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 5,
+ .party = gTrainerParty_Phoebe
+ },
+
+ [OPPONENT_GLACIA] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_ELITE_FOUR,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_ELITE_FOUR,
+ .trainerPic = TRAINER_PIC_GLACIA,
+ .trainerName = _("FROSINA"),
+ .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 5,
+ .party = gTrainerParty_Glacia
+ },
+
+ [OPPONENT_DRAKE] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_ELITE_FOUR,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_ELITE_FOUR,
+ .trainerPic = TRAINER_PIC_DRAKE,
+ .trainerName = _("DRAGAN"),
+ .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 5,
+ .party = gTrainerParty_Drake
+ },
+
+ [OPPONENT_ROXANNE] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_LEADER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_ROXANNE,
+ .trainerName = _("FELIZIA"),
+ .items = {ITEM_POTION, ITEM_POTION, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 2,
+ .party = gTrainerParty_Roxanne
+ },
+
+ [OPPONENT_BRAWLY] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_LEADER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_BRAWLY,
+ .trainerName = _("KAMILLO"),
+ .items = {ITEM_SUPER_POTION, ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 2,
+ .party = gTrainerParty_Brawly
+ },
+
+ [OPPONENT_WATTSON] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_LEADER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_WATTSON,
+ .trainerName = _("WALTER"),
+ .items = {ITEM_SUPER_POTION, ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Wattson
+ },
+
+ [OPPONENT_FLANNERY] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_LEADER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_FLANNERY,
+ .trainerName = _("FLAVIA"),
+ .items = {ITEM_HYPER_POTION, ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Flannery
+ },
+
+ [OPPONENT_NORMAN] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_LEADER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_NORMAN,
+ .trainerName = _("NORMAN"),
+ .items = {ITEM_HYPER_POTION, ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Norman
+ },
+
+ [OPPONENT_WINONA] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_LEADER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_WINONA,
+ .trainerName = _("WIBKE"),
+ .items = {ITEM_HYPER_POTION, ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 4,
+ .party = gTrainerParty_Winona
+ },
+
+ [OPPONENT_TATE_AND_LIZA] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_LEADER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_TATE_AND_LIZA,
+ .trainerName = _("BEN&SVENJA"),
+ .items = {ITEM_HYPER_POTION, ITEM_HYPER_POTION, ITEM_HYPER_POTION, ITEM_HYPER_POTION},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x7,
+ .partySize = 2,
+ .party = gTrainerParty_TateAndLiza
+ },
+
+ [OPPONENT_WALLACE] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_LEADER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_WALLACE,
+ .trainerName = _("WASSILI"),
+ .items = {ITEM_HYPER_POTION, ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 5,
+ .party = gTrainerParty_Wallace
+ },
+
+ [OPPONENT_JERRY_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SCHOOL_KID,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_SCHOOL_KID_M,
+ .trainerName = _("ORLANDO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Jerry1
+ },
+
+ [OPPONENT_TED] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SCHOOL_KID,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_SCHOOL_KID_M,
+ .trainerName = _("RAMON"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Ted
+ },
+
+ [OPPONENT_PAUL] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SCHOOL_KID,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_SCHOOL_KID_M,
+ .trainerName = _("JÜRGEN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Paul
+ },
+
+ [OPPONENT_JERRY_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SCHOOL_KID,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_SCHOOL_KID_M,
+ .trainerName = _("ORLANDO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Jerry2
+ },
+
+ [OPPONENT_JERRY_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SCHOOL_KID,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_SCHOOL_KID_M,
+ .trainerName = _("ORLANDO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Jerry3
+ },
+
+ [OPPONENT_JERRY_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SCHOOL_KID,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_SCHOOL_KID_M,
+ .trainerName = _("ORLANDO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Jerry4
+ },
+
+ [OPPONENT_JERRY_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SCHOOL_KID,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_SCHOOL_KID_M,
+ .trainerName = _("ORLANDO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Jerry5
+ },
+
+ [OPPONENT_KAREN_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SCHOOL_KID,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_SCHOOL_KID_F,
+ .trainerName = _("KERSTIN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Karen1
+ },
+
+ [OPPONENT_GEORGIA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SCHOOL_KID,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_SCHOOL_KID_F,
+ .trainerName = _("ARIANE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Georgia
+ },
+
+ [OPPONENT_KAREN_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SCHOOL_KID,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_SCHOOL_KID_F,
+ .trainerName = _("KERSTIN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Karen2
+ },
+
+ [OPPONENT_KAREN_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SCHOOL_KID,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_SCHOOL_KID_F,
+ .trainerName = _("KERSTIN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Karen3
+ },
+
+ [OPPONENT_KAREN_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SCHOOL_KID,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_SCHOOL_KID_F,
+ .trainerName = _("KERSTIN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Karen4
+ },
+
+ [OPPONENT_KAREN_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SCHOOL_KID,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_SCHOOL_KID_F,
+ .trainerName = _("KERSTIN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Karen5
+ },
+
+ [OPPONENT_KATE_AND_JOY] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_SR_AND_JR,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_SR_AND_JR,
+ .trainerName = _("EVA & UTE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_KateAndJoy
+ },
+
+ [OPPONENT_ANNA_AND_MEG_1] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_SR_AND_JR,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_SR_AND_JR,
+ .trainerName = _("IRM & IDA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_AnnaAndMeg1
+ },
+
+ [OPPONENT_ANNA_AND_MEG_2] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_SR_AND_JR,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_SR_AND_JR,
+ .trainerName = _("IRM & IDA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_AnnaAndMeg2
+ },
+
+ [OPPONENT_ANNA_AND_MEG_3] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_SR_AND_JR,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_SR_AND_JR,
+ .trainerName = _("IRM & IDA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_AnnaAndMeg3
+ },
+
+ [OPPONENT_ANNA_AND_MEG_4] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_SR_AND_JR,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_SR_AND_JR,
+ .trainerName = _("IRM & IDA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_AnnaAndMeg4
+ },
+
+ [OPPONENT_ANNA_AND_MEG_5] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_SR_AND_JR,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_SR_AND_JR,
+ .trainerName = _("IRM & IDA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_AnnaAndMeg5
+ },
+
+ [OPPONENT_VICTOR] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM,
+ .trainerClass = TRAINER_CLASS_WINSTRATE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_POKEFAN_M,
+ .trainerName = _("VIKTOR"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Victor
+ },
+
+ [OPPONENT_MIGUEL_1] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM,
+ .trainerClass = TRAINER_CLASS_POKEFAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_POKEFAN_M,
+ .trainerName = _("MIGUEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Miguel1
+ },
+
+ [OPPONENT_COLTON] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_POKEFAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_POKEFAN_M,
+ .trainerName = _("ATTILA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 6,
+ .party = gTrainerParty_Colton
+ },
+
+ [OPPONENT_MIGUEL_2] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM,
+ .trainerClass = TRAINER_CLASS_POKEFAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_POKEFAN_M,
+ .trainerName = _("MIGUEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Miguel2
+ },
+
+ [OPPONENT_MIGUEL_3] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM,
+ .trainerClass = TRAINER_CLASS_POKEFAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_POKEFAN_M,
+ .trainerName = _("MIGUEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Miguel3
+ },
+
+ [OPPONENT_MIGUEL_4] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM,
+ .trainerClass = TRAINER_CLASS_POKEFAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_POKEFAN_M,
+ .trainerName = _("MIGUEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Miguel4
+ },
+
+ [OPPONENT_MIGUEL_5] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM,
+ .trainerClass = TRAINER_CLASS_POKEFAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_POKEFAN_M,
+ .trainerName = _("MIGUEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Miguel5
+ },
+
+ [OPPONENT_VICTORIA] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM,
+ .trainerClass = TRAINER_CLASS_WINSTRATE,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_POKEFAN_F,
+ .trainerName = _("VIKTORIA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x3,
+ .partySize = 1,
+ .party = gTrainerParty_Victoria
+ },
+
+ [OPPONENT_VANESSA] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM,
+ .trainerClass = TRAINER_CLASS_POKEFAN,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_POKEFAN_F,
+ .trainerName = _("VANESSA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Vanessa
+ },
+
+ [OPPONENT_MARISSA] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM,
+ .trainerClass = TRAINER_CLASS_POKEFAN,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_POKEFAN_F,
+ .trainerName = _("EVELYN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Marissa
+ },
+
+ [OPPONENT_ISABEL_1] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM,
+ .trainerClass = TRAINER_CLASS_POKEFAN,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_POKEFAN_F,
+ .trainerName = _("ISABEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Isabel1
+ },
+
+ [OPPONENT_ISABEL_2] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM,
+ .trainerClass = TRAINER_CLASS_POKEFAN,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_POKEFAN_F,
+ .trainerName = _("ISABEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Isabel2
+ },
+
+ [OPPONENT_ISABEL_3] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM,
+ .trainerClass = TRAINER_CLASS_POKEFAN,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_POKEFAN_F,
+ .trainerName = _("ISABEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Isabel3
+ },
+
+ [OPPONENT_ISABEL_4] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM,
+ .trainerClass = TRAINER_CLASS_POKEFAN,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_POKEFAN_F,
+ .trainerName = _("ISABEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Isabel4
+ },
+
+ [OPPONENT_ISABEL_5] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM,
+ .trainerClass = TRAINER_CLASS_POKEFAN,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_POKEFAN_F,
+ .trainerName = _("ISABEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Isabel5
+ },
+
+ [OPPONENT_TIMOTHY_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_EXPERT,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_EXPERT_M,
+ .trainerName = _("THEOBALD"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 1,
+ .party = gTrainerParty_Timothy1
+ },
+
+ [OPPONENT_TIMOTHY_2] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_EXPERT,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_EXPERT_M,
+ .trainerName = _("THEOBALD"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 1,
+ .party = gTrainerParty_Timothy2
+ },
+
+ [OPPONENT_TIMOTHY_3] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_EXPERT,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_EXPERT_M,
+ .trainerName = _("THEOBALD"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 1,
+ .party = gTrainerParty_Timothy3
+ },
+
+ [OPPONENT_TIMOTHY_4] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_EXPERT,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_EXPERT_M,
+ .trainerName = _("THEOBALD"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 1,
+ .party = gTrainerParty_Timothy4
+ },
+
+ [OPPONENT_TIMOTHY_5] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_EXPERT,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_EXPERT_M,
+ .trainerName = _("THEOBALD"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 1,
+ .party = gTrainerParty_Timothy5
+ },
+
+ [OPPONENT_VICKY] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_WINSTRATE,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_EXPERT_F,
+ .trainerName = _("VICKY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 1,
+ .party = gTrainerParty_Vicky
+ },
+
+ [OPPONENT_SHELBY_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_EXPERT,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_EXPERT_F,
+ .trainerName = _("WALTRAUD"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 2,
+ .party = gTrainerParty_Shelby1
+ },
+
+ [OPPONENT_SHELBY_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_EXPERT,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_EXPERT_F,
+ .trainerName = _("WALTRAUD"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 2,
+ .party = gTrainerParty_Shelby2
+ },
+
+ [OPPONENT_SHELBY_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_EXPERT,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_EXPERT_F,
+ .trainerName = _("WALTRAUD"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 2,
+ .party = gTrainerParty_Shelby3
+ },
+
+ [OPPONENT_SHELBY_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_EXPERT,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_EXPERT_F,
+ .trainerName = _("WALTRAUD"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 2,
+ .party = gTrainerParty_Shelby4
+ },
+
+ [OPPONENT_SHELBY_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_EXPERT,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_EXPERT_F,
+ .trainerName = _("WALTRAUD"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 2,
+ .party = gTrainerParty_Shelby5
+ },
+
+ [OPPONENT_CALVIN_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_YOUNGSTER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_YOUNGSTER,
+ .trainerName = _("ANSGAR"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Calvin1
+ },
+
+ [OPPONENT_BILLY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_YOUNGSTER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_YOUNGSTER,
+ .trainerName = _("FRIDOLIN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Billy
+ },
+
+ [OPPONENT_JOSH] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_YOUNGSTER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_YOUNGSTER,
+ .trainerName = _("GASTON"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Josh
+ },
+
+ [OPPONENT_TOMMY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_YOUNGSTER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_YOUNGSTER,
+ .trainerName = _("DOMINIK"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Tommy
+ },
+
+ [OPPONENT_JOEY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_YOUNGSTER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_YOUNGSTER,
+ .trainerName = _("LUDGER"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Joey
+ },
+
+ [OPPONENT_BEN] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_YOUNGSTER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_YOUNGSTER,
+ .trainerName = _("EGON"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Ben
+ },
+
+ [OPPONENT_ANONYMOUS_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_YOUNGSTER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_YOUNGSTER,
+ .trainerName = _(""),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Anonymous5
+ },
+
+ [OPPONENT_KEVIN] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_YOUNGSTER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_YOUNGSTER,
+ .trainerName = _("JULIUS"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Kevin
+ },
+
+ [OPPONENT_NEAL] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_YOUNGSTER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_YOUNGSTER,
+ .trainerName = _("MORITZ"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Neal
+ },
+
+ [OPPONENT_DILLON] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_YOUNGSTER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_YOUNGSTER,
+ .trainerName = _("SÖNCKE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Dillon
+ },
+
+ [OPPONENT_CALVIN_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_YOUNGSTER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_YOUNGSTER,
+ .trainerName = _("ANSGAR"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Calvin2
+ },
+
+ [OPPONENT_CALVIN_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_YOUNGSTER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_YOUNGSTER,
+ .trainerName = _("ANSGAR"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Calvin3
+ },
+
+ [OPPONENT_CALVIN_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_YOUNGSTER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_YOUNGSTER,
+ .trainerName = _("ANSGAR"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Calvin4
+ },
+
+ [OPPONENT_CALVIN_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_YOUNGSTER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_YOUNGSTER,
+ .trainerName = _("ANSGAR"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Calvin5
+ },
+
+ [OPPONENT_EDDIE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_YOUNGSTER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_YOUNGSTER,
+ .trainerName = _("HENRY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Eddie
+ },
+
+ [OPPONENT_ALLEN] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_YOUNGSTER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_YOUNGSTER,
+ .trainerName = _("HUGO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Allen
+ },
+
+ [OPPONENT_TIMMY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_YOUNGSTER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_YOUNGSTER,
+ .trainerName = _("FRIEDER"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Timmy
+ },
+
+ [OPPONENT_STEVEN] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_CHAMPION,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_STEVEN,
+ .trainerName = _("TROY"),
+ .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 6,
+ .party = gTrainerParty_Steven
+ },
+
+ [OPPONENT_ANDREW] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_FISHERMAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_FISHERMAN,
+ .trainerName = _("ANSGAR"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Andrew
+ },
+
+ [OPPONENT_IVAN] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_FISHERMAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_FISHERMAN,
+ .trainerName = _("ANGELO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Ivan
+ },
+
+ [OPPONENT_CLAUDE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_FISHERMAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_FISHERMAN,
+ .trainerName = _("ANSELM"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 4,
+ .party = gTrainerParty_Claude
+ },
+
+ [OPPONENT_ELLIOT_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_FISHERMAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_FISHERMAN,
+ .trainerName = _("ALOIS"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Elliot1
+ },
+
+ [OPPONENT_NED] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_FISHERMAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_FISHERMAN,
+ .trainerName = _("ARTHUR"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Ned
+ },
+
+ [OPPONENT_DALE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_FISHERMAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_FISHERMAN,
+ .trainerName = _("ALBIN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 4,
+ .party = gTrainerParty_Dale
+ },
+
+ [OPPONENT_NOLAN] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_FISHERMAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_FISHERMAN,
+ .trainerName = _("AMADEUS"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Nolan
+ },
+
+ [OPPONENT_BARNY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_FISHERMAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_FISHERMAN,
+ .trainerName = _("ALBRECHT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Barny
+ },
+
+ [OPPONENT_WADE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_FISHERMAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_FISHERMAN,
+ .trainerName = _("ALAIN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Wade
+ },
+
+ [OPPONENT_CARTER] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_FISHERMAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_FISHERMAN,
+ .trainerName = _("ARMIN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 4,
+ .party = gTrainerParty_Carter
+ },
+
+ [OPPONENT_ELLIOT_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_FISHERMAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_FISHERMAN,
+ .trainerName = _("ALOIS"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Elliot2
+ },
+
+ [OPPONENT_ELLIOT_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_FISHERMAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_FISHERMAN,
+ .trainerName = _("ALOIS"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 4,
+ .party = gTrainerParty_Elliot3
+ },
+
+ [OPPONENT_ELLIOT_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_FISHERMAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_FISHERMAN,
+ .trainerName = _("ALOIS"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 4,
+ .party = gTrainerParty_Elliot4
+ },
+
+ [OPPONENT_ELLIOT_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_FISHERMAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_FISHERMAN,
+ .trainerName = _("ALOIS"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x3,
+ .partySize = 4,
+ .party = gTrainerParty_Elliot5
+ },
+
+ [OPPONENT_RONALD] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_FISHERMAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_FISHERMAN,
+ .trainerName = _("ACHMED"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 6,
+ .party = gTrainerParty_Ronald
+ },
+
+ [OPPONENT_JACOB] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_M,
+ .trainerName = _("ROMAN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Jacob
+ },
+
+ [OPPONENT_ANTHONY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_M,
+ .trainerName = _("EMIL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Anthony
+ },
+
+ [OPPONENT_BENJAMIN_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_M,
+ .trainerName = _("EGIDIUS"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Benjamin1
+ },
+
+ [OPPONENT_BENJAMIN_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_M,
+ .trainerName = _("EGIDIUS"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Benjamin2
+ },
+
+ [OPPONENT_BENJAMIN_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_M,
+ .trainerName = _("EGIDIUS"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Benjamin3
+ },
+
+ [OPPONENT_BENJAMIN_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_M,
+ .trainerName = _("EGIDIUS"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Benjamin4
+ },
+
+ [OPPONENT_BENJAMIN_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_M,
+ .trainerName = _("EGIDIUS"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Benjamin5
+ },
+
+ [OPPONENT_ABIGAIL_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_F,
+ .trainerName = _("IRMGARD"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Abigail1
+ },
+
+ [OPPONENT_JASMINE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_F,
+ .trainerName = _("MARTHA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Jasmine
+ },
+
+ [OPPONENT_ABIGAIL_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_F,
+ .trainerName = _("IRMGARD"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Abigail2
+ },
+
+ [OPPONENT_ABIGAIL_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_F,
+ .trainerName = _("IRMGARD"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Abigail3
+ },
+
+ [OPPONENT_ABIGAIL_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_F,
+ .trainerName = _("IRMGARD"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Abigail4
+ },
+
+ [OPPONENT_ABIGAIL_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_F,
+ .trainerName = _("IRMGARD"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Abigail5
+ },
+
+ [OPPONENT_DYLAN_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_M,
+ .trainerName = _("IGOR"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Dylan1
+ },
+
+ [OPPONENT_DYLAN_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_M,
+ .trainerName = _("IGOR"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Dylan2
+ },
+
+ [OPPONENT_DYLAN_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_M,
+ .trainerName = _("IGOR"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Dylan3
+ },
+
+ [OPPONENT_DYLAN_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_M,
+ .trainerName = _("IGOR"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Dylan4
+ },
+
+ [OPPONENT_DYLAN_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_M,
+ .trainerName = _("IGOR"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Dylan5
+ },
+
+ [OPPONENT_MARIA_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_F,
+ .trainerName = _("JUTTA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Maria1
+ },
+
+ [OPPONENT_MARIA_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_F,
+ .trainerName = _("JUTTA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Maria2
+ },
+
+ [OPPONENT_MARIA_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_F,
+ .trainerName = _("JUTTA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Maria3
+ },
+
+ [OPPONENT_MARIA_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_F,
+ .trainerName = _("JUTTA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Maria4
+ },
+
+ [OPPONENT_MARIA_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_F,
+ .trainerName = _("JUTTA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Maria5
+ },
+
+ [OPPONENT_CALEB] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M,
+ .trainerName = _("OLEG"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 4,
+ .party = gTrainerParty_Caleb
+ },
+
+ [OPPONENT_ANONYMOUS_6] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M,
+ .trainerName = _(""),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Anonymous6
+ },
+
+ [OPPONENT_ISAIAH_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M,
+ .trainerName = _("KASPAR"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Isaiah1
+ },
+
+ [OPPONENT_ANONYMOUS_7] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M,
+ .trainerName = _(""),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Anonymous7
+ },
+
+ [OPPONENT_CHASE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M,
+ .trainerName = _("FERDINAND"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Chase
+ },
+
+ [OPPONENT_ISAIAH_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M,
+ .trainerName = _("KASPAR"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Isaiah2
+ },
+
+ [OPPONENT_ISAIAH_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M,
+ .trainerName = _("KASPAR"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Isaiah3
+ },
+
+ [OPPONENT_ISAIAH_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M,
+ .trainerName = _("KASPAR"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Isaiah4
+ },
+
+ [OPPONENT_ISAIAH_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M,
+ .trainerName = _("KASPAR"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Isaiah5
+ },
+
+ [OPPONENT_ANONYMOUS_8] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_F,
+ .trainerName = _(""),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Anonymous8
+ },
+
+ [OPPONENT_CONNOR] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_F,
+ .trainerName = _("MIRA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 4,
+ .party = gTrainerParty_Connor
+ },
+
+ [OPPONENT_ANONYMOUS_9] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_F,
+ .trainerName = _(""),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Anonymous9
+ },
+
+ [OPPONENT_KATELYN_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_F,
+ .trainerName = _("MECHTHILD"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Katelyn1
+ },
+
+ [OPPONENT_ALLISON] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_F,
+ .trainerName = _("LOTTE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 4,
+ .party = gTrainerParty_Allison
+ },
+
+ [OPPONENT_KATELYN_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_F,
+ .trainerName = _("MECHTHILD"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Katelyn2
+ },
+
+ [OPPONENT_KATELYN_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_F,
+ .trainerName = _("MECHTHILD"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Katelyn3
+ },
+
+ [OPPONENT_KATELYN_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_F,
+ .trainerName = _("MECHTHILD"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Katelyn4
+ },
+
+ [OPPONENT_KATELYN_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_F,
+ .trainerName = _("MECHTHILD"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Katelyn5
+ },
+
+ [OPPONENT_NICOLAS_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_DRAGON_TAMER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_DRAGON_TAMER,
+ .trainerName = _("ALFONS"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Nicolas1
+ },
+
+ [OPPONENT_NICOLAS_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_DRAGON_TAMER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_DRAGON_TAMER,
+ .trainerName = _("ALFONS"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Nicolas2
+ },
+
+ [OPPONENT_NICOLAS_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_DRAGON_TAMER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_DRAGON_TAMER,
+ .trainerName = _("ALFONS"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Nicolas3
+ },
+
+ [OPPONENT_NICOLAS_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_DRAGON_TAMER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_DRAGON_TAMER,
+ .trainerName = _("ALFONS"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Nicolas4
+ },
+
+ [OPPONENT_NICOLAS_5] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM,
+ .trainerClass = TRAINER_CLASS_DRAGON_TAMER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_DRAGON_TAMER,
+ .trainerName = _("ALFONS"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Nicolas5
+ },
+
+ [OPPONENT_AARON] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_DRAGON_TAMER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_DRAGON_TAMER,
+ .trainerName = _("EDMUND"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Aaron
+ },
+
+ [OPPONENT_PERRY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BIRD_KEEPER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_BIRD_KEEPER,
+ .trainerName = _("JOSCHKA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Perry
+ },
+
+ [OPPONENT_HUGH] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BIRD_KEEPER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_BIRD_KEEPER,
+ .trainerName = _("ENRICO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Hugh
+ },
+
+ [OPPONENT_PHIL] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BIRD_KEEPER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_BIRD_KEEPER,
+ .trainerName = _("HENRY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Phil
+ },
+
+ [OPPONENT_JARED] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BIRD_KEEPER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_BIRD_KEEPER,
+ .trainerName = _("HIOB"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Jared
+ },
+
+ [OPPONENT_ANONYMOUS_10] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BIRD_KEEPER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_BIRD_KEEPER,
+ .trainerName = _(""),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 4,
+ .party = gTrainerParty_Anonymous10
+ },
+
+ [OPPONENT_TANNER] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BIRD_KEEPER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_BIRD_KEEPER,
+ .trainerName = _("ANATOL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Tanner
+ },
+
+ [OPPONENT_WILL] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BIRD_KEEPER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_BIRD_KEEPER,
+ .trainerName = _("BJÖRN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Will
+ },
+
+ [OPPONENT_COLIN] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BIRD_KEEPER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_BIRD_KEEPER,
+ .trainerName = _("WIM"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Colin
+ },
+
+ [OPPONENT_ROBERT_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BIRD_KEEPER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_BIRD_KEEPER,
+ .trainerName = _("FRITJOF"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Robert1
+ },
+
+ [OPPONENT_BENNY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BIRD_KEEPER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_BIRD_KEEPER,
+ .trainerName = _("GENADI"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Benny
+ },
+
+ [OPPONENT_CHESTER] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BIRD_KEEPER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_BIRD_KEEPER,
+ .trainerName = _("VITALI"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Chester
+ },
+
+ [OPPONENT_ROBERT_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BIRD_KEEPER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_BIRD_KEEPER,
+ .trainerName = _("FRITJOF"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Robert2
+ },
+
+ [OPPONENT_ROBERT_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BIRD_KEEPER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_BIRD_KEEPER,
+ .trainerName = _("FRITJOF"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Robert3
+ },
+
+ [OPPONENT_ROBERT_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BIRD_KEEPER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_BIRD_KEEPER,
+ .trainerName = _("FRITJOF"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Robert4
+ },
+
+ [OPPONENT_ROBERT_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BIRD_KEEPER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_BIRD_KEEPER,
+ .trainerName = _("FRITJOF"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Robert5
+ },
+
+ [OPPONENT_ALEX] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BIRD_KEEPER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_BIRD_KEEPER,
+ .trainerName = _("ARNE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 4,
+ .party = gTrainerParty_Alex
+ },
+
+ [OPPONENT_BECK] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BIRD_KEEPER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_BIRD_KEEPER,
+ .trainerName = _("VINCENT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Beck
+ },
+
+ [OPPONENT_YASU] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_NINJA_BOY,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_NINJA_BOY,
+ .trainerName = _("VALENTIN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x3,
+ .partySize = 1,
+ .party = gTrainerParty_Yasu
+ },
+
+ [OPPONENT_TAKASHI] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_NINJA_BOY,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_NINJA_BOY,
+ .trainerName = _("EUGEN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x3,
+ .partySize = 3,
+ .party = gTrainerParty_Takashi
+ },
+
+ [OPPONENT_MAKOTO] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_NINJA_BOY,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_NINJA_BOY,
+ .trainerName = _("HERIBERT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x0,
+ .partySize = 1,
+ .party = gTrainerParty_Makoto
+ },
+
+ [OPPONENT_HIDEO_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_NINJA_BOY,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_NINJA_BOY,
+ .trainerName = _("SAUL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x0,
+ .partySize = 4,
+ .party = gTrainerParty_Hideo1
+ },
+
+ [OPPONENT_LAO_1] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_NINJA_BOY,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_NINJA_BOY,
+ .trainerName = _("EDUARD"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x0,
+ .partySize = 4,
+ .party = gTrainerParty_Lao1
+ },
+
+ [OPPONENT_LUNG] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_NINJA_BOY,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_NINJA_BOY,
+ .trainerName = _("ARND"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x0,
+ .partySize = 2,
+ .party = gTrainerParty_Lung
+ },
+
+ [OPPONENT_LAO_2] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_NINJA_BOY,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_NINJA_BOY,
+ .trainerName = _("EDUARD"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x0,
+ .partySize = 4,
+ .party = gTrainerParty_Lao2
+ },
+
+ [OPPONENT_LAO_3] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_NINJA_BOY,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_NINJA_BOY,
+ .trainerName = _("EDUARD"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x0,
+ .partySize = 4,
+ .party = gTrainerParty_Lao3
+ },
+
+ [OPPONENT_LAO_4] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_NINJA_BOY,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_NINJA_BOY,
+ .trainerName = _("EDUARD"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x0,
+ .partySize = 4,
+ .party = gTrainerParty_Lao4
+ },
+
+ [OPPONENT_LAO_5] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_NINJA_BOY,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_NINJA_BOY,
+ .trainerName = _("EDUARD"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x0,
+ .partySize = 4,
+ .party = gTrainerParty_Lao5
+ },
+
+ [OPPONENT_TESSA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BATTLE_GIRL,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_BATTLE_GIRL,
+ .trainerName = _("TAMARA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Tessa
+ },
+
+ [OPPONENT_LAURA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BATTLE_GIRL,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_BATTLE_GIRL,
+ .trainerName = _("LAURA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Laura
+ },
+
+ [OPPONENT_CYNDY_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BATTLE_GIRL,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_BATTLE_GIRL,
+ .trainerName = _("ELFI"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Cyndy1
+ },
+
+ [OPPONENT_CORA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BATTLE_GIRL,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_BATTLE_GIRL,
+ .trainerName = _("THEA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Cora
+ },
+
+ [OPPONENT_JILL] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BATTLE_GIRL,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_BATTLE_GIRL,
+ .trainerName = _("AGNES"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Jill
+ },
+
+ [OPPONENT_CYNDY_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BATTLE_GIRL,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_BATTLE_GIRL,
+ .trainerName = _("ELFI"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Cyndy2
+ },
+
+ [OPPONENT_CYNDY_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BATTLE_GIRL,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_BATTLE_GIRL,
+ .trainerName = _("ELFI"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Cyndy3
+ },
+
+ [OPPONENT_CYNDY_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BATTLE_GIRL,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_BATTLE_GIRL,
+ .trainerName = _("ELFI"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Cyndy4
+ },
+
+ [OPPONENT_CYNDY_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BATTLE_GIRL,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_BATTLE_GIRL,
+ .trainerName = _("ELFI"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Cyndy5
+ },
+
+ [OPPONENT_MADELINE_1] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_PARASOL_LADY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_PARASOL_LADY,
+ .trainerName = _("SASKIA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Madeline1
+ },
+
+ [OPPONENT_CLARISSA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PARASOL_LADY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_PARASOL_LADY,
+ .trainerName = _("GERDA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Clarissa
+ },
+
+ [OPPONENT_ANGELICA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PARASOL_LADY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_PARASOL_LADY,
+ .trainerName = _("MARIKA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Angelica
+ },
+
+ [OPPONENT_MADELINE_2] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_PARASOL_LADY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_PARASOL_LADY,
+ .trainerName = _("SASKIA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Madeline2
+ },
+
+ [OPPONENT_MADELINE_3] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_PARASOL_LADY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_PARASOL_LADY,
+ .trainerName = _("SASKIA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Madeline3
+ },
+
+ [OPPONENT_MADELINE_4] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_PARASOL_LADY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_PARASOL_LADY,
+ .trainerName = _("SASKIA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Madeline4
+ },
+
+ [OPPONENT_MADELINE_5] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_PARASOL_LADY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_PARASOL_LADY,
+ .trainerName = _("SASKIA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Madeline5
+ },
+
+ [OPPONENT_BEVERLY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_F,
+ .trainerName = _("DAGMAR"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Beverly
+ },
+
+ [OPPONENT_DAWN] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_F,
+ .trainerName = _("HEIDRUN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Dawn
+ },
+
+ [OPPONENT_NICOLE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_F,
+ .trainerName = _("NICOLE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Nicole
+ },
+
+ [OPPONENT_DENISE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_F,
+ .trainerName = _("DENISE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Denise
+ },
+
+ [OPPONENT_BETH] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_F,
+ .trainerName = _("ALMUT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Beth
+ },
+
+ [OPPONENT_TARA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_F,
+ .trainerName = _("SIEGLINDE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Tara
+ },
+
+ [OPPONENT_MISSY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_F,
+ .trainerName = _("MARION"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 4,
+ .party = gTrainerParty_Missy
+ },
+
+ [OPPONENT_ALICE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_F,
+ .trainerName = _("ALICE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Alice
+ },
+
+ [OPPONENT_JENNY_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_F,
+ .trainerName = _("MONIKA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Jenny1
+ },
+
+ [OPPONENT_GRACE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_F,
+ .trainerName = _("ILONA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Grace
+ },
+
+ [OPPONENT_TANYA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_F,
+ .trainerName = _("EMILIE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Tanya
+ },
+
+ [OPPONENT_SHARON] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_F,
+ .trainerName = _("GUDRUN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Sharon
+ },
+
+ [OPPONENT_NIKKI] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_F,
+ .trainerName = _("ASTRID"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Nikki
+ },
+
+ [OPPONENT_BRENDA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_F,
+ .trainerName = _("OTTILIE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Brenda
+ },
+
+ [OPPONENT_KATIE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_F,
+ .trainerName = _("SENTA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Katie
+ },
+
+ [OPPONENT_SUSIE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_F,
+ .trainerName = _("JANKA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Susie
+ },
+
+ [OPPONENT_KARA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_F,
+ .trainerName = _("RENATE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Kara
+ },
+
+ [OPPONENT_DANA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_F,
+ .trainerName = _("VICKI"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Dana
+ },
+
+ [OPPONENT_ERIN] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_F,
+ .trainerName = _("REBECCA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Erin
+ },
+
+ [OPPONENT_DEBRA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_F,
+ .trainerName = _("ANJA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Debra
+ },
+
+ [OPPONENT_LINDA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_F,
+ .trainerName = _("GISELA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Linda
+ },
+
+ [OPPONENT_KAYLEE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_F,
+ .trainerName = _("PAOLA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Kaylee
+ },
+
+ [OPPONENT_LAUREL] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_F,
+ .trainerName = _("BIRTE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Laurel
+ },
+
+ [OPPONENT_DARCY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_F,
+ .trainerName = _("DOROTHEA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Darcy
+ },
+
+ [OPPONENT_JENNY_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_F,
+ .trainerName = _("MONIKA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Jenny2
+ },
+
+ [OPPONENT_JENNY_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_F,
+ .trainerName = _("MONIKA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Jenny3
+ },
+
+ [OPPONENT_JENNY_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_F,
+ .trainerName = _("MONIKA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Jenny4
+ },
+
+ [OPPONENT_JENNY_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_F,
+ .trainerName = _("MONIKA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Jenny5
+ },
+
+ [OPPONENT_HEIDI] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_PICNICKER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_PICNICKER,
+ .trainerName = _("JANA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Heidi
+ },
+
+ [OPPONENT_BECKY] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_PICNICKER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_PICNICKER,
+ .trainerName = _("HEIDI"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Becky
+ },
+
+ [OPPONENT_CAROL] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PICNICKER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_PICNICKER,
+ .trainerName = _("NATALIE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Carol
+ },
+
+ [OPPONENT_NANCY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PICNICKER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_PICNICKER,
+ .trainerName = _("NANCY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Nancy
+ },
+
+ [OPPONENT_MARTHA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PICNICKER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_PICNICKER,
+ .trainerName = _("MARTHA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Martha
+ },
+
+ [OPPONENT_DIANA_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PICNICKER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_PICNICKER,
+ .trainerName = _("GWENDOLIN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Diana1
+ },
+
+ [OPPONENT_NINA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PICNICKER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_PICNICKER,
+ .trainerName = _("NADJA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Nina
+ },
+
+ [OPPONENT_IRENE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PICNICKER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_PICNICKER,
+ .trainerName = _("IRENE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Irene
+ },
+
+ [OPPONENT_DIANA_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PICNICKER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_PICNICKER,
+ .trainerName = _("GWENDOLIN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Diana2
+ },
+
+ [OPPONENT_DIANA_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PICNICKER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_PICNICKER,
+ .trainerName = _("GWENDOLIN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Diana3
+ },
+
+ [OPPONENT_DIANA_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PICNICKER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_PICNICKER,
+ .trainerName = _("GWENDOLIN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Diana4
+ },
+
+ [OPPONENT_DIANA_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PICNICKER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_PICNICKER,
+ .trainerName = _("GWENDOLIN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Diana5
+ },
+
+ [OPPONENT_AMY_AND_LIV_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TWINS,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_TWINS,
+ .trainerName = _("NORA & JO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_AmyAndLiv1
+ },
+
+ [OPPONENT_AMY_AND_LIV_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TWINS,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_TWINS,
+ .trainerName = _("NORA & JO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_AmyAndLiv2
+ },
+
+ [OPPONENT_GINA_AND_MIA_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TWINS,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_TWINS,
+ .trainerName = _("GINA & MIA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_GinaAndMia1
+ },
+
+ [OPPONENT_MIU_AND_YUKI] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TWINS,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_TWINS,
+ .trainerName = _("LEA & GRIT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_MiuAndYuki
+ },
+
+ [OPPONENT_AMY_AND_LIV_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TWINS,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_TWINS,
+ .trainerName = _("NORA & JO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_AmyAndLiv3
+ },
+
+ [OPPONENT_GINA_AND_MIA_2] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_TWINS,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_TWINS,
+ .trainerName = _("GINA & MIA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_GinaAndMia2
+ },
+
+ [OPPONENT_AMY_AND_LIV_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TWINS,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_TWINS,
+ .trainerName = _("NORA & JO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_AmyAndLiv4
+ },
+
+ [OPPONENT_AMY_AND_LIV_5] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_TWINS,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_TWINS,
+ .trainerName = _("NORA & JO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_AmyAndLiv5
+ },
+
+ [OPPONENT_AMY_AND_LIV_6] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_TWINS,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_TWINS,
+ .trainerName = _("NORA & JO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_AmyAndLiv6
+ },
+
+ [OPPONENT_HUEY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SAILOR,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_SAILOR,
+ .trainerName = _("TASSILO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Huey
+ },
+
+ [OPPONENT_EDMOND] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SAILOR,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_SAILOR,
+ .trainerName = _("MONTY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Edmond
+ },
+
+ [OPPONENT_ERNEST_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SAILOR,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_SAILOR,
+ .trainerName = _("ELERT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Ernest1
+ },
+
+ [OPPONENT_DWAYNE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SAILOR,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_SAILOR,
+ .trainerName = _("RETO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Dwayne
+ },
+
+ [OPPONENT_PHILLIP] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SAILOR,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_SAILOR,
+ .trainerName = _("GUNNAR"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Phillip
+ },
+
+ [OPPONENT_LEONARD] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SAILOR,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_SAILOR,
+ .trainerName = _("LEONARD"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Leonard
+ },
+
+ [OPPONENT_DUNCAN] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SAILOR,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_SAILOR,
+ .trainerName = _("PIERRE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Duncan
+ },
+
+ [OPPONENT_ERNEST_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SAILOR,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_SAILOR,
+ .trainerName = _("ELERT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Ernest2
+ },
+
+ [OPPONENT_ERNEST_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SAILOR,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_SAILOR,
+ .trainerName = _("ELERT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Ernest3
+ },
+
+ [OPPONENT_ERNEST_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SAILOR,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_SAILOR,
+ .trainerName = _("ELERT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Ernest4
+ },
+
+ [OPPONENT_ERNEST_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SAILOR,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_SAILOR,
+ .trainerName = _("ELERT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Ernest5
+ },
+
+ [OPPONENT_ANONYMOUS_11] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BOARDER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_YOUNGSTER,
+ .trainerName = _(""),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Anonymous11
+ },
+
+ [OPPONENT_ANONYMOUS_12] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BOARDER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_YOUNGSTER,
+ .trainerName = _(""),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Anonymous12
+ },
+
+ [OPPONENT_ANONYMOUS_13] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BOARDER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_YOUNGSTER,
+ .trainerName = _(""),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Anonymous13
+ },
+
+ [OPPONENT_SONNY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BOARDER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_YOUNGSTER,
+ .trainerName = _("WENZEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Sonny
+ },
+
+ [OPPONENT_DONOVAN] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BOARDER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_YOUNGSTER,
+ .trainerName = _("STANISLAUS"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Donovan
+ },
+
+ [OPPONENT_GERALD] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BOARDER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_YOUNGSTER,
+ .trainerName = _("GERALD"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Gerald
+ },
+
+ [OPPONENT_KELVIN] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BOARDER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_YOUNGSTER,
+ .trainerName = _("AARON"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Kelvin
+ },
+
+ [OPPONENT_KODY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BOARDER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_YOUNGSTER,
+ .trainerName = _("ALBERT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Kody
+ },
+
+ [OPPONENT_TEVIN] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BOARDER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_YOUNGSTER,
+ .trainerName = _("ANDRE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Tevin
+ },
+
+ [OPPONENT_DAMON] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BOARDER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_YOUNGSTER,
+ .trainerName = _("AMON"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Damon
+ },
+
+ [OPPONENT_PABLO] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BOARDER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_YOUNGSTER,
+ .trainerName = _("PABLO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Pablo
+ },
+
+ [OPPONENT_EDWIN_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COLLECTOR,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_COLLECTOR,
+ .trainerName = _("EDWIN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Edwin1
+ },
+
+ [OPPONENT_HECTOR_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COLLECTOR,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_COLLECTOR,
+ .trainerName = _("HEKTOR"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Hector1
+ },
+
+ [OPPONENT_HECTOR_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COLLECTOR,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_COLLECTOR,
+ .trainerName = _("HEKTOR"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Hector2
+ },
+
+ [OPPONENT_EDWIN_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COLLECTOR,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_COLLECTOR,
+ .trainerName = _("EDWIN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Edwin2
+ },
+
+ [OPPONENT_EDWIN_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COLLECTOR,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_COLLECTOR,
+ .trainerName = _("EDWIN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Edwin3
+ },
+
+ [OPPONENT_EDWIN_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COLLECTOR,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_COLLECTOR,
+ .trainerName = _("EDWIN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Edwin4
+ },
+
+ [OPPONENT_EDWIN_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COLLECTOR,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_COLLECTOR,
+ .trainerName = _("EDWIN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Edwin5
+ },
+
+ [OPPONENT_WALLY_1] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_POKEMON_TRAINER_3,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_WALLY,
+ .trainerName = _("HEIKO"),
+ .items = {ITEM_SUPER_POTION, ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 5,
+ .party = gTrainerParty_Wally1
+ },
+
+ [OPPONENT_BRENDAN_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_TRAINER_3,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_BRENDAN,
+ .trainerName = _("BRIX"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 1,
+ .party = gTrainerParty_Brendan1
+ },
+
+ [OPPONENT_BRENDAN_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_TRAINER_3,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_BRENDAN,
+ .trainerName = _("BRIX"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Brendan2
+ },
+
+ [OPPONENT_BRENDAN_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_TRAINER_3,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_BRENDAN,
+ .trainerName = _("BRIX"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Brendan3
+ },
+
+ [OPPONENT_BRENDAN_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_TRAINER_3,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_BRENDAN,
+ .trainerName = _("BRIX"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0xb,
+ .partySize = 1,
+ .party = gTrainerParty_Brendan4
+ },
+
+ [OPPONENT_BRENDAN_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_TRAINER_3,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_BRENDAN,
+ .trainerName = _("BRIX"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Brendan5
+ },
+
+ [OPPONENT_BRENDAN_6] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_TRAINER_3,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_BRENDAN,
+ .trainerName = _("BRIX"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Brendan6
+ },
+
+ [OPPONENT_BRENDAN_7] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_TRAINER_3,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_BRENDAN,
+ .trainerName = _("BRIX"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 1,
+ .party = gTrainerParty_Brendan7
+ },
+
+ [OPPONENT_BRENDAN_8] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_TRAINER_3,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_BRENDAN,
+ .trainerName = _("BRIX"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Brendan8
+ },
+
+ [OPPONENT_BRENDAN_9] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_TRAINER_3,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_BRENDAN,
+ .trainerName = _("BRIX"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Brendan9
+ },
+
+ [OPPONENT_MAY_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_TRAINER_3,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_MAY,
+ .trainerName = _("MAIKE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 1,
+ .party = gTrainerParty_May1
+ },
+
+ [OPPONENT_MAY_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_TRAINER_3,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_MAY,
+ .trainerName = _("MAIKE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_May2
+ },
+
+ [OPPONENT_MAY_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_TRAINER_3,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_MAY,
+ .trainerName = _("MAIKE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_May3
+ },
+
+ [OPPONENT_MAY_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_TRAINER_3,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_MAY,
+ .trainerName = _("MAIKE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 1,
+ .party = gTrainerParty_May4
+ },
+
+ [OPPONENT_MAY_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_TRAINER_3,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_MAY,
+ .trainerName = _("MAIKE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_May5
+ },
+
+ [OPPONENT_MAY_6] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_TRAINER_3,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_MAY,
+ .trainerName = _("MAIKE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_May6
+ },
+
+ [OPPONENT_MAY_7] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_TRAINER_3,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_MAY,
+ .trainerName = _("MAIKE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 1,
+ .party = gTrainerParty_May7
+ },
+
+ [OPPONENT_MAY_8] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_TRAINER_3,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_MAY,
+ .trainerName = _("MAIKE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_May8
+ },
+
+ [OPPONENT_MAY_9] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_TRAINER_3,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_MAY,
+ .trainerName = _("MAIKE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_May9
+ },
+
+ [OPPONENT_ISAAC_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_BREEDER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_POKEMON_BREEDER_M,
+ .trainerName = _("BLASIUS"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 6,
+ .party = gTrainerParty_Isaac1
+ },
+
+ [OPPONENT_RILEY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_BREEDER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_POKEMON_BREEDER_M,
+ .trainerName = _("CLIFF"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Riley
+ },
+
+ [OPPONENT_AIDAN] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_BREEDER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_POKEMON_BREEDER_M,
+ .trainerName = _("DARIO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Aidan
+ },
+
+ [OPPONENT_ISAAC_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_BREEDER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_POKEMON_BREEDER_M,
+ .trainerName = _("BLASIUS"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 6,
+ .party = gTrainerParty_Isaac2
+ },
+
+ [OPPONENT_ISAAC_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_BREEDER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_POKEMON_BREEDER_M,
+ .trainerName = _("BLASIUS"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 6,
+ .party = gTrainerParty_Isaac3
+ },
+
+ [OPPONENT_ISAAC_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_BREEDER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_POKEMON_BREEDER_M,
+ .trainerName = _("BLASIUS"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 6,
+ .party = gTrainerParty_Isaac4
+ },
+
+ [OPPONENT_ISAAC_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_BREEDER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_POKEMON_BREEDER_M,
+ .trainerName = _("BLASIUS"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 6,
+ .party = gTrainerParty_Isaac5
+ },
+
+ [OPPONENT_LYDIA_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_BREEDER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_POKEMON_BREEDER_F,
+ .trainerName = _("LYDIA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 6,
+ .party = gTrainerParty_Lydia1
+ },
+
+ [OPPONENT_ALEXIA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_BREEDER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_POKEMON_BREEDER_F,
+ .trainerName = _("DORIS"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Alexia
+ },
+
+ [OPPONENT_DANIELLE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_BREEDER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_POKEMON_BREEDER_F,
+ .trainerName = _("DUNJA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Danielle
+ },
+
+ [OPPONENT_LYDIA_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_BREEDER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_POKEMON_BREEDER_F,
+ .trainerName = _("LYDIA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 6,
+ .party = gTrainerParty_Lydia2
+ },
+
+ [OPPONENT_LYDIA_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_BREEDER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_POKEMON_BREEDER_F,
+ .trainerName = _("LYDIA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 6,
+ .party = gTrainerParty_Lydia3
+ },
+
+ [OPPONENT_LYDIA_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_BREEDER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_POKEMON_BREEDER_F,
+ .trainerName = _("LYDIA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 6,
+ .party = gTrainerParty_Lydia4
+ },
+
+ [OPPONENT_LYDIA_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_BREEDER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_POKEMON_BREEDER_F,
+ .trainerName = _("LYDIA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 6,
+ .party = gTrainerParty_Lydia5
+ },
+
+ [OPPONENT_JACKSON_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_RANGER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_POKEMON_RANGER_M,
+ .trainerName = _("ECKBERT"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 1,
+ .party = gTrainerParty_Jackson1
+ },
+
+ [OPPONENT_CARLOS] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_RANGER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_POKEMON_RANGER_M,
+ .trainerName = _("EDWARD"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Carlos
+ },
+
+ [OPPONENT_SEBASTIAN] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_RANGER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_POKEMON_RANGER_M,
+ .trainerName = _("EILMAR"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 1,
+ .party = gTrainerParty_Sebastian
+ },
+
+ [OPPONENT_JACKSON_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_RANGER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_POKEMON_RANGER_M,
+ .trainerName = _("ECKBERT"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0xb,
+ .partySize = 1,
+ .party = gTrainerParty_Jackson2
+ },
+
+ [OPPONENT_JACKSON_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_RANGER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_POKEMON_RANGER_M,
+ .trainerName = _("ECKBERT"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 1,
+ .party = gTrainerParty_Jackson3
+ },
+
+ [OPPONENT_JACKSON_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_RANGER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_POKEMON_RANGER_M,
+ .trainerName = _("ECKBERT"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0xb,
+ .partySize = 1,
+ .party = gTrainerParty_Jackson4
+ },
+
+ [OPPONENT_JACKSON_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_RANGER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_POKEMON_RANGER_M,
+ .trainerName = _("ECKBERT"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 2,
+ .party = gTrainerParty_Jackson5
+ },
+
+ [OPPONENT_CATHERINE_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_RANGER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_POKEMON_RANGER_F,
+ .trainerName = _("HANNELORE"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0xb,
+ .partySize = 2,
+ .party = gTrainerParty_Catherine1
+ },
+
+ [OPPONENT_JENNA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_RANGER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_POKEMON_RANGER_F,
+ .trainerName = _("INGEBORG"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0xb,
+ .partySize = 3,
+ .party = gTrainerParty_Jenna
+ },
+
+ [OPPONENT_SOPHIA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_RANGER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_POKEMON_RANGER_F,
+ .trainerName = _("SOPHIA"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 2,
+ .party = gTrainerParty_Sophia
+ },
+
+ [OPPONENT_CATHERINE_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_RANGER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_POKEMON_RANGER_F,
+ .trainerName = _("HANNELORE"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0xb,
+ .partySize = 2,
+ .party = gTrainerParty_Catherine2
+ },
+
+ [OPPONENT_CATHERINE_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_RANGER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_POKEMON_RANGER_F,
+ .trainerName = _("HANNELORE"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 2,
+ .party = gTrainerParty_Catherine3
+ },
+
+ [OPPONENT_CATHERINE_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_RANGER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_POKEMON_RANGER_F,
+ .trainerName = _("HANNELORE"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0xb,
+ .partySize = 2,
+ .party = gTrainerParty_Catherine4
+ },
+
+ [OPPONENT_CATHERINE_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_RANGER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_POKEMON_RANGER_F,
+ .trainerName = _("HANNELORE"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 2,
+ .party = gTrainerParty_Catherine5
+ },
+
+ [OPPONENT_MAXIE_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_MAGMA_LEADER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAXIE,
+ .trainerName = _("MARC"),
+ .items = {ITEM_SUPER_POTION, ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 2,
+ .party = gTrainerParty_Maxie1
+ },
+
+ [OPPONENT_GRUNT_28] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_MAGMA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M,
+ .trainerName = _("RÜPEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Grunt28
+ },
+
+ [OPPONENT_GRUNT_29] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_MAGMA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M,
+ .trainerName = _("RÜPEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 4,
+ .party = gTrainerParty_Grunt29
+ },
+
+ [OPPONENT_GRUNT_30] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_MAGMA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M,
+ .trainerName = _("RÜPEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Grunt30
+ },
+
+ [OPPONENT_GRUNT_31] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_MAGMA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M,
+ .trainerName = _("RÜPEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Grunt31
+ },
+
+ [OPPONENT_GRUNT_32] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_MAGMA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M,
+ .trainerName = _("RÜPEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Grunt32
+ },
+
+ [OPPONENT_GRUNT_33] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_MAGMA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M,
+ .trainerName = _("RÜPEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Grunt33
+ },
+
+ [OPPONENT_GRUNT_34] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_MAGMA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M,
+ .trainerName = _("RÜPEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Grunt34
+ },
+
+ [OPPONENT_GRUNT_35] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_MAGMA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M,
+ .trainerName = _("RÜPEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Grunt35
+ },
+
+ [OPPONENT_GRUNT_36] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_MAGMA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M,
+ .trainerName = _("RÜPEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Grunt36
+ },
+
+ [OPPONENT_GRUNT_37] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_MAGMA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M,
+ .trainerName = _("RÜPEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Grunt37
+ },
+
+ [OPPONENT_GRUNT_38] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_MAGMA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M,
+ .trainerName = _("RÜPEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Grunt38
+ },
+
+ [OPPONENT_GRUNT_39] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_MAGMA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M,
+ .trainerName = _("RÜPEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Grunt39
+ },
+
+ [OPPONENT_GRUNT_40] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_MAGMA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M,
+ .trainerName = _("RÜPEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Grunt40
+ },
+
+ [OPPONENT_GRUNT_41] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_MAGMA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M,
+ .trainerName = _("RÜPEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Grunt41
+ },
+
+ [OPPONENT_GRUNT_42] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_MAGMA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M,
+ .trainerName = _("RÜPEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Grunt42
+ },
+
+ [OPPONENT_GRUNT_43] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_MAGMA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M,
+ .trainerName = _("RÜPEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Grunt43
+ },
+
+ [OPPONENT_GRUNT_44] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_MAGMA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M,
+ .trainerName = _("RÜPEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Grunt44
+ },
+
+ [OPPONENT_GRUNT_45] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_MAGMA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M,
+ .trainerName = _("RÜPEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Grunt45
+ },
+
+ [OPPONENT_GRUNT_46] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_MAGMA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M,
+ .trainerName = _("RÜPEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Grunt46
+ },
+
+ [OPPONENT_GRUNT_47] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_MAGMA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M,
+ .trainerName = _("RÜPEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Grunt47
+ },
+
+ [OPPONENT_GRUNT_48] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_MAGMA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M,
+ .trainerName = _("RÜPEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Grunt48
+ },
+
+ [OPPONENT_GRUNT_49] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_MAGMA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M,
+ .trainerName = _("RÜPEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Grunt49
+ },
+
+ [OPPONENT_GRUNT_50] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_MAGMA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M,
+ .trainerName = _("RÜPEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Grunt50
+ },
+
+ [OPPONENT_GRUNT_51] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_MAGMA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M,
+ .trainerName = _("RÜPEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Grunt51
+ },
+
+ [OPPONENT_GRUNT_52] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_MAGMA,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_GRUNT_F,
+ .trainerName = _("RÜPEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Grunt52
+ },
+
+ [OPPONENT_GRUNT_53] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_MAGMA,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_GRUNT_F,
+ .trainerName = _("RÜPEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Grunt53
+ },
+
+ [OPPONENT_GRUNT_54] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_MAGMA,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_GRUNT_F,
+ .trainerName = _("RÜPEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Grunt54
+ },
+
+ [OPPONENT_ANONYMOUS_14] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_MAGMA_ADMIN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_BEAUTY,
+ .trainerName = _(""),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 2,
+ .party = gTrainerParty_Anonymous14
+ },
+
+ [OPPONENT_ANONYMOUS_15] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_MAGMA_ADMIN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_ADMIN_M,
+ .trainerName = _(""),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 2,
+ .party = gTrainerParty_Anonymous15
+ },
+
+ [OPPONENT_TABITHA_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_MAGMA_ADMIN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_ADMIN_M,
+ .trainerName = _("KALLE"),
+ .items = {ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0xb,
+ .partySize = 3,
+ .party = gTrainerParty_Tabitha1
+ },
+
+ [OPPONENT_TABITHA_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_MAGMA_ADMIN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_ADMIN_M,
+ .trainerName = _("KALLE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Tabitha2
+ },
+
+ [OPPONENT_ANONYMOUS_16] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_MAGMA_ADMIN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_ADMIN_M,
+ .trainerName = _(""),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0xb,
+ .partySize = 2,
+ .party = gTrainerParty_Anonymous16
+ },
+
+ [OPPONENT_COURTNEY_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_MAGMA_ADMIN,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_ADMIN_F,
+ .trainerName = _("JÖRDIS"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 2,
+ .party = gTrainerParty_Courtney1
+ },
+
+ [OPPONENT_COURTNEY_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_MAGMA_ADMIN,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_ADMIN_F,
+ .trainerName = _("JÖRDIS"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0xb,
+ .partySize = 2,
+ .party = gTrainerParty_Courtney2
+ },
+
+ [OPPONENT_MAXIE_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_MAGMA_LEADER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAXIE,
+ .trainerName = _("MARC"),
+ .items = {ITEM_SUPER_POTION, ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Maxie2
+ },
+
+ [OPPONENT_MAXIE_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_MAGMA_LEADER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAXIE,
+ .trainerName = _("MARC"),
+ .items = {ITEM_SUPER_POTION, ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Maxie3
+ },
+
+ [OPPONENT_TIANA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_LASS,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_LASS,
+ .trainerName = _("KARIN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Tiana
+ },
+
+ [OPPONENT_HALEY_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_LASS,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_LASS,
+ .trainerName = _("ELISA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Haley1
+ },
+
+ [OPPONENT_JANICE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_LASS,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_LASS,
+ .trainerName = _("RICARDA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Janice
+ },
+
+ [OPPONENT_VIVI] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_WINSTRATE,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_LASS,
+ .trainerName = _("SIEGLINDE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Vivi
+ },
+
+ [OPPONENT_HALEY_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_LASS,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_LASS,
+ .trainerName = _("ELISA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Haley2
+ },
+
+ [OPPONENT_HALEY_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_LASS,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_LASS,
+ .trainerName = _("ELISA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Haley3
+ },
+
+ [OPPONENT_HALEY_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_LASS,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_LASS,
+ .trainerName = _("ELISA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Haley4
+ },
+
+ [OPPONENT_HALEY_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_LASS,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_LASS,
+ .trainerName = _("ELISA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Haley5
+ },
+
+ [OPPONENT_SALLY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_LASS,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_LASS,
+ .trainerName = _("FREDERIKE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Sally
+ },
+
+ [OPPONENT_ROBIN] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_LASS,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_LASS,
+ .trainerName = _("ROBIN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Robin
+ },
+
+ [OPPONENT_ANDREA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_LASS,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_LASS,
+ .trainerName = _("FRIEDA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Andrea
+ },
+
+ [OPPONENT_CRISSY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_LASS,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_LASS,
+ .trainerName = _("ADELHEID"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Crissy
+ },
+
+ [OPPONENT_RICK] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BUG_CATCHER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_BUG_CATCHER,
+ .trainerName = _("BALDUR"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Rick
+ },
+
+ [OPPONENT_LYLE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BUG_CATCHER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_BUG_CATCHER,
+ .trainerName = _("DETWIN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 6,
+ .party = gTrainerParty_Lyle
+ },
+
+ [OPPONENT_JOSE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BUG_CATCHER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_BUG_CATCHER,
+ .trainerName = _("EROS"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Jose
+ },
+
+ [OPPONENT_DOUG] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BUG_CATCHER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_BUG_CATCHER,
+ .trainerName = _("EUSEBIUS"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Doug
+ },
+
+ [OPPONENT_GREG] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BUG_CATCHER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_BUG_CATCHER,
+ .trainerName = _("GANGOLF"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Greg
+ },
+
+ [OPPONENT_KENT] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BUG_CATCHER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_BUG_CATCHER,
+ .trainerName = _("GERIT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Kent
+ },
+
+ [OPPONENT_JAMES_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BUG_CATCHER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_BUG_CATCHER,
+ .trainerName = _("GERNOT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_James1
+ },
+
+ [OPPONENT_JAMES_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BUG_CATCHER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_BUG_CATCHER,
+ .trainerName = _("GERNOT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_James2
+ },
+
+ [OPPONENT_JAMES_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BUG_CATCHER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_BUG_CATCHER,
+ .trainerName = _("GERNOT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_James3
+ },
+
+ [OPPONENT_JAMES_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BUG_CATCHER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_BUG_CATCHER,
+ .trainerName = _("GERNOT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_James4
+ },
+
+ [OPPONENT_JAMES_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BUG_CATCHER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_BUG_CATCHER,
+ .trainerName = _("GERNOT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 4,
+ .party = gTrainerParty_James5
+ },
+
+ [OPPONENT_BRICE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_HIKER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_HIKER,
+ .trainerName = _("GISBERT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Brice
+ },
+
+ [OPPONENT_TRENT_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_HIKER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_HIKER,
+ .trainerName = _("HEIMKE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 4,
+ .party = gTrainerParty_Trent1
+ },
+
+ [OPPONENT_LENNY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_HIKER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_HIKER,
+ .trainerName = _("JANNO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Lenny
+ },
+
+ [OPPONENT_LUCAS_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_HIKER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_HIKER,
+ .trainerName = _("KLODWIG"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Lucas1
+ },
+
+ [OPPONENT_ALAN] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_HIKER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_HIKER,
+ .trainerName = _("LANZELOT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Alan
+ },
+
+ [OPPONENT_CLARK] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_HIKER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_HIKER,
+ .trainerName = _("LUZIUS"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Clark
+ },
+
+ [OPPONENT_ERIC] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_HIKER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_HIKER,
+ .trainerName = _("MAURIZIO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Eric
+ },
+
+ [OPPONENT_LUCAS_2] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_HIKER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_HIKER,
+ .trainerName = _("KLODWIG"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Lucas2
+ },
+
+ [OPPONENT_MIKE_1] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_HIKER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_HIKER,
+ .trainerName = _("MELVIN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Mike1
+ },
+
+ [OPPONENT_MIKE_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_HIKER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_HIKER,
+ .trainerName = _("MELVIN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Mike2
+ },
+
+ [OPPONENT_TRENT_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_HIKER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_HIKER,
+ .trainerName = _("HEIMKE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 4,
+ .party = gTrainerParty_Trent2
+ },
+
+ [OPPONENT_TRENT_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_HIKER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_HIKER,
+ .trainerName = _("HEIMKE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 4,
+ .party = gTrainerParty_Trent3
+ },
+
+ [OPPONENT_TRENT_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_HIKER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_HIKER,
+ .trainerName = _("HEIMKE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 4,
+ .party = gTrainerParty_Trent4
+ },
+
+ [OPPONENT_TRENT_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_HIKER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_HIKER,
+ .trainerName = _("HEIMKE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 4,
+ .party = gTrainerParty_Trent5
+ },
+
+ [OPPONENT_DEZ_AND_LUKE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_YOUNG_COUPLE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_YOUNG_COUPLE,
+ .trainerName = _("INA & LEIF"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_DezAndLuke
+ },
+
+ [OPPONENT_LEA_AND_JED] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_YOUNG_COUPLE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_YOUNG_COUPLE,
+ .trainerName = _("LENA & UWE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_LeaAndJed
+ },
+
+ [OPPONENT_LOIS_AND_HAL_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_YOUNG_COUPLE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_YOUNG_COUPLE,
+ .trainerName = _("GESA & PIT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_LoisAndHal1
+ },
+
+ [OPPONENT_LOIS_AND_HAL_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_YOUNG_COUPLE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_YOUNG_COUPLE,
+ .trainerName = _("GESA & PIT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_LoisAndHal2
+ },
+
+ [OPPONENT_LOIS_AND_HAL_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_YOUNG_COUPLE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_YOUNG_COUPLE,
+ .trainerName = _("GESA & PIT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_LoisAndHal3
+ },
+
+ [OPPONENT_LOIS_AND_HAL_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_YOUNG_COUPLE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_YOUNG_COUPLE,
+ .trainerName = _("GESA & PIT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_LoisAndHal4
+ },
+
+ [OPPONENT_LOIS_AND_HAL_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_YOUNG_COUPLE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_YOUNG_COUPLE,
+ .trainerName = _("GESA & PIT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_LoisAndHal5
+ },
+
+ [OPPONENT_JOHANNA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BEAUTY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_BEAUTY,
+ .trainerName = _("CORDULA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Johanna
+ },
+
+ [OPPONENT_ZANE] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerName = _("OTBERT"),
+ .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 1,
+ .party = gTrainerParty_Zane
+ },
+
+ [OPPONENT_VIVIAN] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_BATTLE_GIRL,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_BATTLE_GIRL,
+ .trainerName = _("BÄRBEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Vivian
+ },
+
+ [OPPONENT_SADIE] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_BATTLE_GIRL,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_BATTLE_GIRL,
+ .trainerName = _("CHANTAL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Sadie
+ },
+
+ [OPPONENT_HIDEO_2] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_NINJA_BOY,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_NINJA_BOY,
+ .trainerName = _("SAUL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x3,
+ .partySize = 2,
+ .party = gTrainerParty_Hideo2
+ },
+
+ [OPPONENT_KEIGO] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_NINJA_BOY,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_NINJA_BOY,
+ .trainerName = _("NELSON"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x3,
+ .partySize = 2,
+ .party = gTrainerParty_Keigo
+ },
+
+ [OPPONENT_TSUNAO] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_NINJA_BOY,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_NINJA_BOY,
+ .trainerName = _("NIKODEMUS"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x3,
+ .partySize = 3,
+ .party = gTrainerParty_Tsunao
+ },
+
+ [OPPONENT_TERRELL] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_CAMPER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_CAMPER,
+ .trainerName = _("NESTOR"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Terrell
+ },
+
+ [OPPONENT_KYLEE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PICNICKER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_PICNICKER,
+ .trainerName = _("MIREILLE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Kylee
+ },
+
+ [OPPONENT_WALLY_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_TRAINER_3,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_WALLY,
+ .trainerName = _("HEIKO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 1,
+ .party = gTrainerParty_Wally2
+ },
+
+ [OPPONENT_WALLY_3] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_POKEMON_TRAINER_3,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_WALLY,
+ .trainerName = _("HEIKO"),
+ .items = {ITEM_SUPER_POTION, ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 5,
+ .party = gTrainerParty_Wally3
+ },
+
+ [OPPONENT_WALLY_4] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_POKEMON_TRAINER_3,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_WALLY,
+ .trainerName = _("HEIKO"),
+ .items = {ITEM_SUPER_POTION, ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 5,
+ .party = gTrainerParty_Wally4
+ },
+
+ [OPPONENT_WALLY_5] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_POKEMON_TRAINER_3,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_WALLY,
+ .trainerName = _("HEIKO"),
+ .items = {ITEM_SUPER_POTION, ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 5,
+ .party = gTrainerParty_Wally5
+ },
+
+ [OPPONENT_WALLY_6] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_POKEMON_TRAINER_3,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_WALLY,
+ .trainerName = _("HEIKO"),
+ .items = {ITEM_SUPER_POTION, ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 5,
+ .party = gTrainerParty_Wally6
+ },
+
+ [OPPONENT_BRENDAN_10] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_TRAINER_3,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_BRENDAN,
+ .trainerName = _("BRIX"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 4,
+ .party = gTrainerParty_Brendan10
+ },
+
+ [OPPONENT_BRENDAN_11] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_TRAINER_3,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_BRENDAN,
+ .trainerName = _("BRIX"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 4,
+ .party = gTrainerParty_Brendan11
+ },
+
+ [OPPONENT_BRENDAN_12] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_TRAINER_3,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_BRENDAN,
+ .trainerName = _("BRIX"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 4,
+ .party = gTrainerParty_Brendan12
+ },
+
+ [OPPONENT_MAY_10] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_TRAINER_3,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_MAY,
+ .trainerName = _("MAIKE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 4,
+ .party = gTrainerParty_May10
+ },
+
+ [OPPONENT_MAY_11] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_TRAINER_3,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_MAY,
+ .trainerName = _("MAIKE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 4,
+ .party = gTrainerParty_May11
+ },
+
+ [OPPONENT_MAY_12] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_TRAINER_3,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_MAY,
+ .trainerName = _("MAIKE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 4,
+ .party = gTrainerParty_May12
+ },
+
+ [OPPONENT_JONAH] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_FISHERMAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_FISHERMAN,
+ .trainerName = _("OLOF"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 4,
+ .party = gTrainerParty_Jonah
+ },
+
+ [OPPONENT_HENRY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_FISHERMAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_FISHERMAN,
+ .trainerName = _("PIUS"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Henry
+ },
+
+ [OPPONENT_ROGER] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_FISHERMAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_FISHERMAN,
+ .trainerName = _("AMATUS"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 4,
+ .party = gTrainerParty_Roger
+ },
+
+ [OPPONENT_ALEXA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerName = _("ANNABEL"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 2,
+ .party = gTrainerParty_Alexa
+ },
+
+ [OPPONENT_RUBEN] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerName = _("TRUTZ"),
+ .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Ruben
+ },
+
+ [OPPONENT_KOJI] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BLACK_BELT,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_BLACK_BELT,
+ .trainerName = _("REMIGIUS"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Koji
+ },
+
+ [OPPONENT_WAYNE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_FISHERMAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_FISHERMAN,
+ .trainerName = _("ALVARO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 4,
+ .party = gTrainerParty_Wayne
+ },
+
+ [OPPONENT_BYRON] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BIRD_KEEPER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_BIRD_KEEPER,
+ .trainerName = _("AMALRICH"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Byron
+ },
+
+ [OPPONENT_REED] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_M,
+ .trainerName = _("ANDOLIN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 4,
+ .party = gTrainerParty_Reed
+ },
+
+ [OPPONENT_TISHA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_F,
+ .trainerName = _("IMKE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Tisha
+ },
+
+ [OPPONENT_TORI_AND_TIA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TWINS,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_TWINS,
+ .trainerName = _("LI & FLO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_ToriAndTia
+ },
+
+ [OPPONENT_KIM_AND_IRIS] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_SR_AND_JR,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_SR_AND_JR,
+ .trainerName = _("ZOE & IRIS"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_KimAndIris
+ },
+
+ [OPPONENT_TYRA_AND_IVY] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_SR_AND_JR,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_SR_AND_JR,
+ .trainerName = _("TYRA & IVY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_TyraAndIvy
+ },
+
+ [OPPONENT_MEL_AND_PAUL] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_YOUNG_COUPLE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_YOUNG_COUPLE,
+ .trainerName = _("GELI & OLE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_MelAndPaul
+ },
+
+ [OPPONENT_JOHN_AND_JAY_1] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_OLD_COUPLE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_OLD_COUPLE,
+ .trainerName = _("URS & EVI"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x7,
+ .partySize = 2,
+ .party = gTrainerParty_JohnAndJay1
+ },
+
+ [OPPONENT_JOHN_AND_JAY_2] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_OLD_COUPLE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_OLD_COUPLE,
+ .trainerName = _("URS & EVI"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x7,
+ .partySize = 2,
+ .party = gTrainerParty_JohnAndJay2
+ },
+
+ [OPPONENT_JOHN_AND_JAY_3] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_OLD_COUPLE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_OLD_COUPLE,
+ .trainerName = _("URS & EVI"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x7,
+ .partySize = 2,
+ .party = gTrainerParty_JohnAndJay3
+ },
+
+ [OPPONENT_JOHN_AND_JAY_4] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_OLD_COUPLE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_OLD_COUPLE,
+ .trainerName = _("URS & EVI"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0xb,
+ .partySize = 2,
+ .party = gTrainerParty_JohnAndJay4
+ },
+
+ [OPPONENT_JOHN_AND_JAY_5] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_OLD_COUPLE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_OLD_COUPLE,
+ .trainerName = _("URS & EVI"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x7,
+ .partySize = 2,
+ .party = gTrainerParty_JohnAndJay5
+ },
+
+ [OPPONENT_RELI_AND_IAN] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SIS_AND_BRO,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SIS_AND_BRO,
+ .trainerName = _("TOBI & UNA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_ReliAndIan
+ },
+
+ [OPPONENT_RITA_AND_SAM_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SIS_AND_BRO,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SIS_AND_BRO,
+ .trainerName = _("TOM & UTA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_RitaAndSam1
+ },
+
+ [OPPONENT_RITA_AND_SAM_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SIS_AND_BRO,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SIS_AND_BRO,
+ .trainerName = _("TOM & UTA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_RitaAndSam2
+ },
+
+ [OPPONENT_RITA_AND_SAM_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SIS_AND_BRO,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SIS_AND_BRO,
+ .trainerName = _("TOM & UTA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_RitaAndSam3
+ },
+
+ [OPPONENT_RITA_AND_SAM_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SIS_AND_BRO,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SIS_AND_BRO,
+ .trainerName = _("TOM & UTA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_RitaAndSam4
+ },
+
+ [OPPONENT_RITA_AND_SAM_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SIS_AND_BRO,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SIS_AND_BRO,
+ .trainerName = _("TOM & UTA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_RitaAndSam5
+ },
+
+ [OPPONENT_LISA_AND_RAY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SIS_AND_BRO,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SIS_AND_BRO,
+ .trainerName = _("ERKO & BEA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_LisaAndRay
+ },
+
+ [OPPONENT_EUGENE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_FISHERMAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_FISHERMAN,
+ .trainerName = _("ABELKE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 4,
+ .party = gTrainerParty_Eugene
+ }
+};
diff --git a/src/data/trainers_en.h b/src/data/trainers_en.h
new file mode 100644
index 000000000..fbcdd5a4e
--- /dev/null
+++ b/src/data/trainers_en.h
@@ -0,0 +1,9717 @@
+const struct Trainer gTrainers[] = {
+ [OPPONENT_NONE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_TRAINER_1,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_BRENDAN,
+ .trainerName = _(""),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x0,
+ .partySize = 0,
+ .party = NULL
+ },
+
+ [OPPONENT_ARCHIE_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_AQUA_LEADER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_ARCHIE,
+ .trainerName = _("ARCHIE"),
+ .items = {ITEM_SUPER_POTION, ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 2,
+ .party = gTrainerParty_Archie1
+ },
+
+ [OPPONENT_GRUNT_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_AQUA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_GRUNT_M,
+ .trainerName = _("GRUNT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Grunt1
+ },
+
+ [OPPONENT_GRUNT_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_AQUA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_GRUNT_M,
+ .trainerName = _("GRUNT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 4,
+ .party = gTrainerParty_Grunt2
+ },
+
+ [OPPONENT_GRUNT_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_AQUA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_GRUNT_M,
+ .trainerName = _("GRUNT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Grunt3
+ },
+
+ [OPPONENT_GRUNT_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_AQUA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_GRUNT_M,
+ .trainerName = _("GRUNT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Grunt4
+ },
+
+ [OPPONENT_GRUNT_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_AQUA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_GRUNT_M,
+ .trainerName = _("GRUNT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Grunt5
+ },
+
+ [OPPONENT_GRUNT_6] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_AQUA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_GRUNT_M,
+ .trainerName = _("GRUNT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Grunt6
+ },
+
+ [OPPONENT_GRUNT_7] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_AQUA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_GRUNT_M,
+ .trainerName = _("GRUNT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Grunt7
+ },
+
+ [OPPONENT_GRUNT_8] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_AQUA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_GRUNT_M,
+ .trainerName = _("GRUNT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Grunt8
+ },
+
+ [OPPONENT_GRUNT_9] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_AQUA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_GRUNT_M,
+ .trainerName = _("GRUNT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Grunt9
+ },
+
+ [OPPONENT_GRUNT_10] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_AQUA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_GRUNT_M,
+ .trainerName = _("GRUNT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Grunt10
+ },
+
+ [OPPONENT_GRUNT_11] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_AQUA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_GRUNT_M,
+ .trainerName = _("GRUNT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Grunt11
+ },
+
+ [OPPONENT_GRUNT_12] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_AQUA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_GRUNT_M,
+ .trainerName = _("GRUNT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Grunt12
+ },
+
+ [OPPONENT_GRUNT_13] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_AQUA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_GRUNT_M,
+ .trainerName = _("GRUNT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Grunt13
+ },
+
+ [OPPONENT_GRUNT_14] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_AQUA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_GRUNT_M,
+ .trainerName = _("GRUNT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Grunt14
+ },
+
+ [OPPONENT_GRUNT_15] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_AQUA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_GRUNT_M,
+ .trainerName = _("GRUNT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Grunt15
+ },
+
+ [OPPONENT_GRUNT_16] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_AQUA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_GRUNT_M,
+ .trainerName = _("GRUNT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Grunt16
+ },
+
+ [OPPONENT_GRUNT_17] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_AQUA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_GRUNT_M,
+ .trainerName = _("GRUNT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Grunt17
+ },
+
+ [OPPONENT_GRUNT_18] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_AQUA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_GRUNT_M,
+ .trainerName = _("GRUNT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Grunt18
+ },
+
+ [OPPONENT_GRUNT_19] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_AQUA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_GRUNT_M,
+ .trainerName = _("GRUNT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Grunt19
+ },
+
+ [OPPONENT_GRUNT_20] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_AQUA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_GRUNT_M,
+ .trainerName = _("GRUNT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Grunt20
+ },
+
+ [OPPONENT_GRUNT_21] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_AQUA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_GRUNT_M,
+ .trainerName = _("GRUNT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Grunt21
+ },
+
+ [OPPONENT_GRUNT_22] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_AQUA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_GRUNT_M,
+ .trainerName = _("GRUNT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Grunt22
+ },
+
+ [OPPONENT_GRUNT_23] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_AQUA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_GRUNT_M,
+ .trainerName = _("GRUNT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Grunt23
+ },
+
+ [OPPONENT_GRUNT_24] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_AQUA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_GRUNT_M,
+ .trainerName = _("GRUNT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Grunt24
+ },
+
+ [OPPONENT_GRUNT_25] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_AQUA,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_GRUNT_F,
+ .trainerName = _("GRUNT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Grunt25
+ },
+
+ [OPPONENT_GRUNT_26] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_AQUA,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_GRUNT_F,
+ .trainerName = _("GRUNT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Grunt26
+ },
+
+ [OPPONENT_GRUNT_27] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_AQUA,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_GRUNT_F,
+ .trainerName = _("GRUNT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Grunt27
+ },
+
+ [OPPONENT_ANONYMOUS_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_AQUA_ADMIN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_ADMIN_M,
+ .trainerName = _(""),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 2,
+ .party = gTrainerParty_Anonymous1
+ },
+
+ [OPPONENT_MATT_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_AQUA_ADMIN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_ADMIN_M,
+ .trainerName = _("MATT"),
+ .items = {ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Matt1
+ },
+
+ [OPPONENT_MATT_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_AQUA_ADMIN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_ADMIN_M,
+ .trainerName = _("MATT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0xb,
+ .partySize = 3,
+ .party = gTrainerParty_Matt2
+ },
+
+ [OPPONENT_SHELLY_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_AQUA_ADMIN,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_ADMIN_F,
+ .trainerName = _("SHELLY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 2,
+ .party = gTrainerParty_Shelly1
+ },
+
+ [OPPONENT_SHELLY_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_AQUA_ADMIN,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_AQUA_ADMIN_F,
+ .trainerName = _("SHELLY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 2,
+ .party = gTrainerParty_Shelly2
+ },
+
+ [OPPONENT_ARCHIE_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_AQUA_LEADER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_ARCHIE,
+ .trainerName = _("ARCHIE"),
+ .items = {ITEM_SUPER_POTION, ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Archie2
+ },
+
+ [OPPONENT_ARCHIE_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_AQUA_LEADER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA,
+ .trainerPic = TRAINER_PIC_ARCHIE,
+ .trainerName = _("ARCHIE"),
+ .items = {ITEM_SUPER_POTION, ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Archie3
+ },
+
+ [OPPONENT_DAISY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_AROMA_LADY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_AROMA_LADY,
+ .trainerName = _("DAISY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Daisy
+ },
+
+ [OPPONENT_ROSE_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_AROMA_LADY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_AROMA_LADY,
+ .trainerName = _("ROSE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Rose1
+ },
+
+ [OPPONENT_LILY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_AROMA_LADY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_AROMA_LADY,
+ .trainerName = _("LILY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Lily
+ },
+
+ [OPPONENT_VIOLET] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_AROMA_LADY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_AROMA_LADY,
+ .trainerName = _("VIOLET"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Violet
+ },
+
+ [OPPONENT_ROSE_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_AROMA_LADY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_AROMA_LADY,
+ .trainerName = _("ROSE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Rose2
+ },
+
+ [OPPONENT_ROSE_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_AROMA_LADY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_AROMA_LADY,
+ .trainerName = _("ROSE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Rose3
+ },
+
+ [OPPONENT_ROSE_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_AROMA_LADY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_AROMA_LADY,
+ .trainerName = _("ROSE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Rose4
+ },
+
+ [OPPONENT_ROSE_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_AROMA_LADY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_AROMA_LADY,
+ .trainerName = _("ROSE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Rose5
+ },
+
+ [OPPONENT_DUSTY_1] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_RUIN_MANIAC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_RUIN_MANIAC,
+ .trainerName = _("DUSTY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Dusty1
+ },
+
+ [OPPONENT_CHIP] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_RUIN_MANIAC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_RUIN_MANIAC,
+ .trainerName = _("CHIP"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Chip
+ },
+
+ [OPPONENT_FOSTER] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_RUIN_MANIAC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_RUIN_MANIAC,
+ .trainerName = _("FOSTER"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Foster
+ },
+
+ [OPPONENT_DUSTY_2] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_RUIN_MANIAC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_RUIN_MANIAC,
+ .trainerName = _("DUSTY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Dusty2
+ },
+
+ [OPPONENT_DUSTY_3] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_RUIN_MANIAC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_RUIN_MANIAC,
+ .trainerName = _("DUSTY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Dusty3
+ },
+
+ [OPPONENT_DUSTY_4] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_RUIN_MANIAC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_RUIN_MANIAC,
+ .trainerName = _("DUSTY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Dusty4
+ },
+
+ [OPPONENT_DUSTY_5] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_RUIN_MANIAC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_RUIN_MANIAC,
+ .trainerName = _("DUSTY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Dusty5
+ },
+
+ [OPPONENT_GABBY_AND_TY_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_INTERVIEWER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTERVIEWER,
+ .trainerPic = TRAINER_PIC_INTERVIEWER,
+ .trainerName = _("GABBY & TY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_GabbyAndTy1
+ },
+
+ [OPPONENT_GABBY_AND_TY_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_INTERVIEWER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTERVIEWER,
+ .trainerPic = TRAINER_PIC_INTERVIEWER,
+ .trainerName = _("GABBY & TY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_GabbyAndTy2
+ },
+
+ [OPPONENT_GABBY_AND_TY_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_INTERVIEWER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTERVIEWER,
+ .trainerPic = TRAINER_PIC_INTERVIEWER,
+ .trainerName = _("GABBY & TY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_GabbyAndTy3
+ },
+
+ [OPPONENT_GABBY_AND_TY_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_INTERVIEWER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTERVIEWER,
+ .trainerPic = TRAINER_PIC_INTERVIEWER,
+ .trainerName = _("GABBY & TY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_GabbyAndTy4
+ },
+
+ [OPPONENT_GABBY_AND_TY_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_INTERVIEWER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTERVIEWER,
+ .trainerPic = TRAINER_PIC_INTERVIEWER,
+ .trainerName = _("GABBY & TY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_GabbyAndTy5
+ },
+
+ [OPPONENT_GABBY_AND_TY_6] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_INTERVIEWER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTERVIEWER,
+ .trainerPic = TRAINER_PIC_INTERVIEWER,
+ .trainerName = _("GABBY & TY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_GabbyAndTy6
+ },
+
+ [OPPONENT_LOLA_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TUBER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_TUBER_F,
+ .trainerName = _("LOLA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Lola1
+ },
+
+ [OPPONENT_CARMEN] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TUBER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_TUBER_F,
+ .trainerName = _("CARMEN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Carmen
+ },
+
+ [OPPONENT_GWEN] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TUBER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_TUBER_F,
+ .trainerName = _("GWEN "),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Gwen
+ },
+
+ [OPPONENT_LOLA_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TUBER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_TUBER_F,
+ .trainerName = _("LOLA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Lola2
+ },
+
+ [OPPONENT_LOLA_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TUBER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_TUBER_F,
+ .trainerName = _("LOLA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Lola3
+ },
+
+ [OPPONENT_LOLA_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TUBER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_TUBER_F,
+ .trainerName = _("LOLA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Lola4
+ },
+
+ [OPPONENT_LOLA_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TUBER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_TUBER_F,
+ .trainerName = _("LOLA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Lola5
+ },
+
+ [OPPONENT_RICKY_1] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_TUBER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_TUBER_M,
+ .trainerName = _("RICKY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Ricky1
+ },
+
+ [OPPONENT_SIMON] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TUBER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_TUBER_M,
+ .trainerName = _("SIMON"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Simon
+ },
+
+ [OPPONENT_CHARLIE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TUBER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_TUBER_M,
+ .trainerName = _("CHARLIE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Charlie
+ },
+
+ [OPPONENT_RICKY_2] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_TUBER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_TUBER_M,
+ .trainerName = _("RICKY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Ricky2
+ },
+
+ [OPPONENT_RICKY_3] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_TUBER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_TUBER_M,
+ .trainerName = _("RICKY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Ricky3
+ },
+
+ [OPPONENT_RICKY_4] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_TUBER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_TUBER_M,
+ .trainerName = _("RICKY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Ricky4
+ },
+
+ [OPPONENT_RICKY_5] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_TUBER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_TUBER_M,
+ .trainerName = _("RICKY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Ricky5
+ },
+
+ [OPPONENT_RANDALL] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerName = _("RANDALL"),
+ .items = {ITEM_X_SPEED, ITEM_X_SPEED, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 1,
+ .party = gTrainerParty_Randall
+ },
+
+ [OPPONENT_PARKER] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerName = _("PARKER"),
+ .items = {ITEM_GUARD_SPEC, ITEM_GUARD_SPEC, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 1,
+ .party = gTrainerParty_Parker
+ },
+
+ [OPPONENT_GEORGE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerName = _("GEORGE"),
+ .items = {ITEM_SUPER_POTION, ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 1,
+ .party = gTrainerParty_George
+ },
+
+ [OPPONENT_BERKE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerName = _("BERKE"),
+ .items = {ITEM_DIRE_HIT, ITEM_DIRE_HIT, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 1,
+ .party = gTrainerParty_Berke
+ },
+
+ [OPPONENT_CLYDE] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerName = _("CLYDE"),
+ .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 5,
+ .party = gTrainerParty_Clyde
+ },
+
+ [OPPONENT_VINCENT] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerName = _("VINCENT"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Vincent
+ },
+
+ [OPPONENT_LEROY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerName = _("LEROY"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 2,
+ .party = gTrainerParty_Leroy
+ },
+
+ [OPPONENT_WILTON_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerName = _("WILTON"),
+ .items = {ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Wilton1
+ },
+
+ [OPPONENT_EDGAR] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerName = _("EDGAR"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 1,
+ .party = gTrainerParty_Edgar
+ },
+
+ [OPPONENT_ALBERT] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerName = _("ALBERT"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 2,
+ .party = gTrainerParty_Albert
+ },
+
+ [OPPONENT_SAMUEL] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerName = _("SAMUEL"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Samuel
+ },
+
+ [OPPONENT_VITO] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerName = _("VITO"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 4,
+ .party = gTrainerParty_Vito
+ },
+
+ [OPPONENT_OWEN] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerName = _("OWEN"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Owen
+ },
+
+ [OPPONENT_WILTON_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerName = _("WILTON"),
+ .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Wilton2
+ },
+
+ [OPPONENT_WILTON_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerName = _("WILTON"),
+ .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Wilton3
+ },
+
+ [OPPONENT_WILTON_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerName = _("WILTON"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Wilton4
+ },
+
+ [OPPONENT_WILTON_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerName = _("WILTON"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Wilton5
+ },
+
+ [OPPONENT_WARREN] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerName = _("WARREN"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Warren
+ },
+
+ [OPPONENT_MARY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerName = _("MARY"),
+ .items = {ITEM_X_ACCURACY, ITEM_X_ACCURACY, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 1,
+ .party = gTrainerParty_Mary
+ },
+
+ [OPPONENT_LORI] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerName = _("LORI"),
+ .items = {ITEM_X_DEFEND, ITEM_X_DEFEND, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 1,
+ .party = gTrainerParty_Lori
+ },
+
+ [OPPONENT_JODY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerName = _("JODY"),
+ .items = {ITEM_X_ATTACK, ITEM_X_ATTACK, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0xb,
+ .partySize = 1,
+ .party = gTrainerParty_Jody
+ },
+
+ [OPPONENT_WENDY] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerName = _("WENDY"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0xb,
+ .partySize = 3,
+ .party = gTrainerParty_Wendy
+ },
+
+ [OPPONENT_ELAINE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerName = _("ELAINE"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0xb,
+ .partySize = 2,
+ .party = gTrainerParty_Elaine
+ },
+
+ [OPPONENT_BROOKE_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerName = _("BROOKE"),
+ .items = {ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Brooke1
+ },
+
+ [OPPONENT_JENNIFER] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerName = _("JENNIFER"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 1,
+ .party = gTrainerParty_Jennifer
+ },
+
+ [OPPONENT_HOPE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerName = _("HOPE"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 1,
+ .party = gTrainerParty_Hope
+ },
+
+ [OPPONENT_SHANNON] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerName = _("SHANNON"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 1,
+ .party = gTrainerParty_Shannon
+ },
+
+ [OPPONENT_MICHELLE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerName = _("MICHELLE"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Michelle
+ },
+
+ [OPPONENT_CAROLINE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerName = _("CAROLINE"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 2,
+ .party = gTrainerParty_Caroline
+ },
+
+ [OPPONENT_JULIE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerName = _("JULIE"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 2,
+ .party = gTrainerParty_Julie
+ },
+
+ [OPPONENT_BROOKE_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerName = _("BROOKE"),
+ .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Brooke2
+ },
+
+ [OPPONENT_BROOKE_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerName = _("BROOKE"),
+ .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Brooke3
+ },
+
+ [OPPONENT_BROOKE_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerName = _("BROOKE"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Brooke4
+ },
+
+ [OPPONENT_BROOKE_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerName = _("BROOKE"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Brooke5
+ },
+
+ [OPPONENT_PATRICIA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_HEX_MANIAC,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_HEX_MANIAC,
+ .trainerName = _("PATRICIA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Patricia
+ },
+
+ [OPPONENT_KINDRA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_HEX_MANIAC,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_HEX_MANIAC,
+ .trainerName = _("KINDRA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Kindra
+ },
+
+ [OPPONENT_TAMMY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_HEX_MANIAC,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_HEX_MANIAC,
+ .trainerName = _("TAMMY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Tammy
+ },
+
+ [OPPONENT_VALERIE_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_HEX_MANIAC,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_HEX_MANIAC,
+ .trainerName = _("VALERIE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Valerie1
+ },
+
+ [OPPONENT_TASHA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_HEX_MANIAC,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_HEX_MANIAC,
+ .trainerName = _("TASHA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Tasha
+ },
+
+ [OPPONENT_VALERIE_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_HEX_MANIAC,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_HEX_MANIAC,
+ .trainerName = _("VALERIE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Valerie2
+ },
+
+ [OPPONENT_VALERIE_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_HEX_MANIAC,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_HEX_MANIAC,
+ .trainerName = _("VALERIE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Valerie3
+ },
+
+ [OPPONENT_VALERIE_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_HEX_MANIAC,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_HEX_MANIAC,
+ .trainerName = _("VALERIE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Valerie4
+ },
+
+ [OPPONENT_VALERIE_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_HEX_MANIAC,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_HEX_MANIAC,
+ .trainerName = _("VALERIE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Valerie5
+ },
+
+ [OPPONENT_CINDY_1] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM,
+ .trainerClass = TRAINER_CLASS_LADY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_LADY,
+ .trainerName = _("CINDY"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Cindy1
+ },
+
+ [OPPONENT_ANONYMOUS_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_LADY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_LADY,
+ .trainerName = _(""),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Anonymous2
+ },
+
+ [OPPONENT_BRIANNA_1] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_LADY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_LADY,
+ .trainerName = _("BRIANNA"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Brianna1
+ },
+
+ [OPPONENT_CINDY_2] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_LADY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_LADY,
+ .trainerName = _("CINDY"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Cindy2
+ },
+
+ [OPPONENT_BRIANNA_2] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM,
+ .trainerClass = TRAINER_CLASS_LADY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_LADY,
+ .trainerName = _("BRIANNA"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Brianna2
+ },
+
+ [OPPONENT_ANETTE] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM,
+ .trainerClass = TRAINER_CLASS_LADY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_LADY,
+ .trainerName = _("ANETTE"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Anette
+ },
+
+ [OPPONENT_CINDY_3] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM,
+ .trainerClass = TRAINER_CLASS_LADY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_LADY,
+ .trainerName = _("CINDY"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Cindy3
+ },
+
+ [OPPONENT_CINDY_4] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM,
+ .trainerClass = TRAINER_CLASS_LADY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_LADY,
+ .trainerName = _("CINDY"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Cindy4
+ },
+
+ [OPPONENT_CINDY_5] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM,
+ .trainerClass = TRAINER_CLASS_LADY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_LADY,
+ .trainerName = _("CINDY"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Cindy5
+ },
+
+ [OPPONENT_CINDY_6] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_LADY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_LADY,
+ .trainerName = _("CINDY"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Cindy6
+ },
+
+ [OPPONENT_MELISSA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BEAUTY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_BEAUTY,
+ .trainerName = _("MELISSA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Melissa
+ },
+
+ [OPPONENT_SHEILA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BEAUTY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_BEAUTY,
+ .trainerName = _("SHEILA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Sheila
+ },
+
+ [OPPONENT_SHIRLEY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BEAUTY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_BEAUTY,
+ .trainerName = _("SHIRLEY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Shirley
+ },
+
+ [OPPONENT_JESSICA_1] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_BEAUTY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_BEAUTY,
+ .trainerName = _("JESSICA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Jessica1
+ },
+
+ [OPPONENT_CONNIE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BEAUTY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_BEAUTY,
+ .trainerName = _("CONNIE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Connie
+ },
+
+ [OPPONENT_BRIDGET] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BEAUTY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_BEAUTY,
+ .trainerName = _("BRIDGET"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Bridget
+ },
+
+ [OPPONENT_OLIVIA] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_BEAUTY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_BEAUTY,
+ .trainerName = _("OLIVIA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Olivia
+ },
+
+ [OPPONENT_TIFFANY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BEAUTY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_BEAUTY,
+ .trainerName = _("TIFFANY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Tiffany
+ },
+
+ [OPPONENT_JESSICA_2] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_BEAUTY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_BEAUTY,
+ .trainerName = _("JESSICA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Jessica2
+ },
+
+ [OPPONENT_JESSICA_3] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_BEAUTY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_BEAUTY,
+ .trainerName = _("JESSICA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Jessica3
+ },
+
+ [OPPONENT_JESSICA_4] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_BEAUTY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_BEAUTY,
+ .trainerName = _("JESSICA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Jessica4
+ },
+
+ [OPPONENT_JESSICA_5] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_BEAUTY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_BEAUTY,
+ .trainerName = _("JESSICA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Jessica5
+ },
+
+ [OPPONENT_WINSTON_1] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM,
+ .trainerClass = TRAINER_CLASS_RICH_BOY,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH,
+ .trainerPic = TRAINER_PIC_RICH_BOY,
+ .trainerName = _("WINSTON"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Winston1
+ },
+
+ [OPPONENT_ANONYMOUS_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_RICH_BOY,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH,
+ .trainerPic = TRAINER_PIC_RICH_BOY,
+ .trainerName = _(""),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Anonymous3
+ },
+
+ [OPPONENT_GARRET] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM,
+ .trainerClass = TRAINER_CLASS_RICH_BOY,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH,
+ .trainerPic = TRAINER_PIC_RICH_BOY,
+ .trainerName = _("GARRET"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Garret
+ },
+
+ [OPPONENT_WINSTON_2] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM,
+ .trainerClass = TRAINER_CLASS_RICH_BOY,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH,
+ .trainerPic = TRAINER_PIC_RICH_BOY,
+ .trainerName = _("WINSTON"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Winston2
+ },
+
+ [OPPONENT_WINSTON_3] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM,
+ .trainerClass = TRAINER_CLASS_RICH_BOY,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH,
+ .trainerPic = TRAINER_PIC_RICH_BOY,
+ .trainerName = _("WINSTON"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Winston3
+ },
+
+ [OPPONENT_WINSTON_4] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM,
+ .trainerClass = TRAINER_CLASS_RICH_BOY,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH,
+ .trainerPic = TRAINER_PIC_RICH_BOY,
+ .trainerName = _("WINSTON"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Winston4
+ },
+
+ [OPPONENT_WINSTON_5] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_RICH_BOY,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH,
+ .trainerPic = TRAINER_PIC_RICH_BOY,
+ .trainerName = _("WINSTON"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Winston5
+ },
+
+ [OPPONENT_STEVE_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMANIAC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_POKEMANIAC,
+ .trainerName = _("STEVE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Steve1
+ },
+
+ [OPPONENT_CHRIS] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMANIAC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_POKEMANIAC,
+ .trainerName = _("CHRIS"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Chris
+ },
+
+ [OPPONENT_MARK] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMANIAC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_POKEMANIAC,
+ .trainerName = _("MARK"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Mark
+ },
+
+ [OPPONENT_KENN] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMANIAC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_POKEMANIAC,
+ .trainerName = _("KENN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Kenn
+ },
+
+ [OPPONENT_STEVE_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMANIAC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_POKEMANIAC,
+ .trainerName = _("STEVE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Steve2
+ },
+
+ [OPPONENT_STEVE_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMANIAC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_POKEMANIAC,
+ .trainerName = _("STEVE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Steve3
+ },
+
+ [OPPONENT_STEVE_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMANIAC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_POKEMANIAC,
+ .trainerName = _("STEVE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Steve4
+ },
+
+ [OPPONENT_STEVE_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMANIAC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_POKEMANIAC,
+ .trainerName = _("STEVE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Steve5
+ },
+
+ [OPPONENT_LUIS] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_M,
+ .trainerName = _("LUIS"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Luis
+ },
+
+ [OPPONENT_AUSTIN] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_M,
+ .trainerName = _("AUSTIN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Austin
+ },
+
+ [OPPONENT_DOUGLAS] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_M,
+ .trainerName = _("DOUGLAS"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Douglas
+ },
+
+ [OPPONENT_DARRIN] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_M,
+ .trainerName = _("DARRIN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Darrin
+ },
+
+ [OPPONENT_TONY_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_M,
+ .trainerName = _("TONY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Tony1
+ },
+
+ [OPPONENT_JEROME] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_M,
+ .trainerName = _("JEROME"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Jerome
+ },
+
+ [OPPONENT_MATTHEW] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_M,
+ .trainerName = _("MATTHEW"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Matthew
+ },
+
+ [OPPONENT_DAVID] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_M,
+ .trainerName = _("DAVID"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_David
+ },
+
+ [OPPONENT_SPENCER] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_M,
+ .trainerName = _("SPENCER"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Spencer
+ },
+
+ [OPPONENT_ROLAND] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_M,
+ .trainerName = _("ROLAND"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Roland
+ },
+
+ [OPPONENT_CODY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_M,
+ .trainerName = _("CODY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Cody
+ },
+
+ [OPPONENT_STAN] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_M,
+ .trainerName = _("STAN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Stan
+ },
+
+ [OPPONENT_BARRY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_M,
+ .trainerName = _("BARRY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Barry
+ },
+
+ [OPPONENT_DEAN] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_M,
+ .trainerName = _("DEAN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Dean
+ },
+
+ [OPPONENT_RODNEY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_M,
+ .trainerName = _("RODNEY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Rodney
+ },
+
+ [OPPONENT_RICHARD] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_M,
+ .trainerName = _("RICHARD"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Richard
+ },
+
+ [OPPONENT_HERMAN] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_M,
+ .trainerName = _("HERMAN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Herman
+ },
+
+ [OPPONENT_ANONYMOUS_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_M,
+ .trainerName = _(""),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Anonymous4
+ },
+
+ [OPPONENT_GILBERT] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_M,
+ .trainerName = _("GILBERT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Gilbert
+ },
+
+ [OPPONENT_FRANKLIN] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_M,
+ .trainerName = _("FRANKLIN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Franklin
+ },
+
+ [OPPONENT_DANNY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_M,
+ .trainerName = _("DANNY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Danny
+ },
+
+ [OPPONENT_JACK] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_M,
+ .trainerName = _("JACK"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Jack
+ },
+
+ [OPPONENT_DUDLEY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_M,
+ .trainerName = _("DUDLEY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Dudley
+ },
+
+ [OPPONENT_CHAD] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_M,
+ .trainerName = _("CHAD"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Chad
+ },
+
+ [OPPONENT_TONY_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_M,
+ .trainerName = _("TONY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Tony2
+ },
+
+ [OPPONENT_TONY_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_M,
+ .trainerName = _("TONY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Tony3
+ },
+
+ [OPPONENT_TONY_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_M,
+ .trainerName = _("TONY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Tony4
+ },
+
+ [OPPONENT_TONY_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_M,
+ .trainerName = _("TONY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Tony5
+ },
+
+ [OPPONENT_HIDEKI] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BLACK_BELT,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_BLACK_BELT,
+ .trainerName = _("HIDEKI"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Hideki
+ },
+
+ [OPPONENT_HITOSHI] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BLACK_BELT,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_BLACK_BELT,
+ .trainerName = _("HITOSHI"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Hitoshi
+ },
+
+ [OPPONENT_KIYO] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BLACK_BELT,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_BLACK_BELT,
+ .trainerName = _("KIYO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Kiyo
+ },
+
+ [OPPONENT_KOICHI] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BLACK_BELT,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_BLACK_BELT,
+ .trainerName = _("KOICHI"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Koichi
+ },
+
+ [OPPONENT_NOB_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BLACK_BELT,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_BLACK_BELT,
+ .trainerName = _("NOB"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Nob1
+ },
+
+ [OPPONENT_NOB_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BLACK_BELT,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_BLACK_BELT,
+ .trainerName = _("NOB"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Nob2
+ },
+
+ [OPPONENT_NOB_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BLACK_BELT,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_BLACK_BELT,
+ .trainerName = _("NOB"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Nob3
+ },
+
+ [OPPONENT_NOB_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BLACK_BELT,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_BLACK_BELT,
+ .trainerName = _("NOB"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Nob4
+ },
+
+ [OPPONENT_NOB_5] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM,
+ .trainerClass = TRAINER_CLASS_BLACK_BELT,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_BLACK_BELT,
+ .trainerName = _("NOB"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 4,
+ .party = gTrainerParty_Nob5
+ },
+
+ [OPPONENT_YUJI] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BLACK_BELT,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_BLACK_BELT,
+ .trainerName = _("YUJI"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Yuji
+ },
+
+ [OPPONENT_DAISUKE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BLACK_BELT,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_BLACK_BELT,
+ .trainerName = _("DAISUKE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Daisuke
+ },
+
+ [OPPONENT_ATSUSHI] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BLACK_BELT,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_BLACK_BELT,
+ .trainerName = _("ATSUSHI"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Atsushi
+ },
+
+ [OPPONENT_KIRK] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_GUITARIST,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_GUITARIST,
+ .trainerName = _("KIRK"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Kirk
+ },
+
+ [OPPONENT_SCOTT] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_GUITARIST,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_GUITARIST,
+ .trainerName = _("SCOTT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Scott
+ },
+
+ [OPPONENT_HARVEY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_GUITARIST,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_GUITARIST,
+ .trainerName = _("HARVEY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Harvey
+ },
+
+ [OPPONENT_SHAWN] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_GUITARIST,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_GUITARIST,
+ .trainerName = _("SHAWN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Shawn
+ },
+
+ [OPPONENT_RANDY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_GUITARIST,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_GUITARIST,
+ .trainerName = _("RANDY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Randy
+ },
+
+ [OPPONENT_DALTON_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_GUITARIST,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_GUITARIST,
+ .trainerName = _("DALTON"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Dalton1
+ },
+
+ [OPPONENT_DALTON_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_GUITARIST,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_GUITARIST,
+ .trainerName = _("DALTON"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Dalton2
+ },
+
+ [OPPONENT_DALTON_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_GUITARIST,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_GUITARIST,
+ .trainerName = _("DALTON"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Dalton3
+ },
+
+ [OPPONENT_DALTON_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_GUITARIST,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_GUITARIST,
+ .trainerName = _("DALTON"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Dalton4
+ },
+
+ [OPPONENT_DALTON_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_GUITARIST,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_GUITARIST,
+ .trainerName = _("DALTON"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Dalton5
+ },
+
+ [OPPONENT_COLE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_KINDLER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_KINDLER,
+ .trainerName = _("COLE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Cole
+ },
+
+ [OPPONENT_FLINT] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_KINDLER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_KINDLER,
+ .trainerName = _("FLINT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Flint
+ },
+
+ [OPPONENT_AXLE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_KINDLER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_KINDLER,
+ .trainerName = _("AXLE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Axle
+ },
+
+ [OPPONENT_JAKE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_KINDLER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_KINDLER,
+ .trainerName = _("JAKE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Jake
+ },
+
+ [OPPONENT_ANDY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_KINDLER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_KINDLER,
+ .trainerName = _("ANDY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Andy
+ },
+
+ [OPPONENT_BERNIE_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_KINDLER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_KINDLER,
+ .trainerName = _("BERNIE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Bernie1
+ },
+
+ [OPPONENT_BERNIE_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_KINDLER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_KINDLER,
+ .trainerName = _("BERNIE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Bernie2
+ },
+
+ [OPPONENT_BERNIE_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_KINDLER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_KINDLER,
+ .trainerName = _("BERNIE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Bernie3
+ },
+
+ [OPPONENT_BERNIE_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_KINDLER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_KINDLER,
+ .trainerName = _("BERNIE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Bernie4
+ },
+
+ [OPPONENT_BERNIE_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_KINDLER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_KINDLER,
+ .trainerName = _("BERNIE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Bernie5
+ },
+
+ [OPPONENT_DREW] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_CAMPER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_CAMPER,
+ .trainerName = _("DREW"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Drew
+ },
+
+ [OPPONENT_CLIFF] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_CAMPER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_CAMPER,
+ .trainerName = _("CLIFF"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Cliff
+ },
+
+ [OPPONENT_LARRY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_CAMPER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_CAMPER,
+ .trainerName = _("LARRY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Larry
+ },
+
+ [OPPONENT_SHANE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_CAMPER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_CAMPER,
+ .trainerName = _("SHANE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Shane
+ },
+
+ [OPPONENT_JUSTIN] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_CAMPER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_CAMPER,
+ .trainerName = _("JUSTIN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Justin
+ },
+
+ [OPPONENT_ETHAN_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_CAMPER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_CAMPER,
+ .trainerName = _("ETHAN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Ethan1
+ },
+
+ [OPPONENT_JEFF] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_CAMPER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_CAMPER,
+ .trainerName = _("JEFF"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Jeff
+ },
+
+ [OPPONENT_TRAVIS] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_CAMPER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_CAMPER,
+ .trainerName = _("TRAVIS"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Travis
+ },
+
+ [OPPONENT_ETHAN_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_CAMPER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_CAMPER,
+ .trainerName = _("ETHAN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Ethan2
+ },
+
+ [OPPONENT_ETHAN_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_CAMPER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_CAMPER,
+ .trainerName = _("ETHAN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Ethan3
+ },
+
+ [OPPONENT_ETHAN_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_CAMPER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_CAMPER,
+ .trainerName = _("ETHAN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Ethan4
+ },
+
+ [OPPONENT_ETHAN_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_CAMPER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_CAMPER,
+ .trainerName = _("ETHAN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Ethan5
+ },
+
+ [OPPONENT_BRENT] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BUG_MANIAC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_BUG_MANIAC,
+ .trainerName = _("BRENT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Brent
+ },
+
+ [OPPONENT_DONALD] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BUG_MANIAC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_BUG_MANIAC,
+ .trainerName = _("DONALD"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Donald
+ },
+
+ [OPPONENT_TAYLOR] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BUG_MANIAC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_BUG_MANIAC,
+ .trainerName = _("TAYLOR"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Taylor
+ },
+
+ [OPPONENT_BRANDON_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BUG_MANIAC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_BUG_MANIAC,
+ .trainerName = _("BRANDON"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Brandon1
+ },
+
+ [OPPONENT_DEREK] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BUG_MANIAC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_BUG_MANIAC,
+ .trainerName = _("DEREK"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Derek
+ },
+
+ [OPPONENT_BRANDON_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BUG_MANIAC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_BUG_MANIAC,
+ .trainerName = _("BRANDON"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Brandon2
+ },
+
+ [OPPONENT_BRANDON_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BUG_MANIAC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_BUG_MANIAC,
+ .trainerName = _("BRANDON"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Brandon3
+ },
+
+ [OPPONENT_BRANDON_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BUG_MANIAC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_BUG_MANIAC,
+ .trainerName = _("BRANDON"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 4,
+ .party = gTrainerParty_Brandon4
+ },
+
+ [OPPONENT_BRANDON_5] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM,
+ .trainerClass = TRAINER_CLASS_BUG_MANIAC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_BUG_MANIAC,
+ .trainerName = _("BRANDON"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 5,
+ .party = gTrainerParty_Brandon5
+ },
+
+ [OPPONENT_EDWARD] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_PSYCHIC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_PSYCHIC_M,
+ .trainerName = _("EDWARD"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Edward
+ },
+
+ [OPPONENT_PRESTON] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PSYCHIC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_PSYCHIC_M,
+ .trainerName = _("PRESTON"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Preston
+ },
+
+ [OPPONENT_VIRGIL] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PSYCHIC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_PSYCHIC_M,
+ .trainerName = _("VIRGIL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Virgil
+ },
+
+ [OPPONENT_FRITZ] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PSYCHIC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_PSYCHIC_M,
+ .trainerName = _("FRITZ"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Fritz
+ },
+
+ [OPPONENT_WILLIAM] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PSYCHIC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_PSYCHIC_M,
+ .trainerName = _("WILLIAM"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_William
+ },
+
+ [OPPONENT_JOSHUA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PSYCHIC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_PSYCHIC_M,
+ .trainerName = _("JOSHUA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Joshua
+ },
+
+ [OPPONENT_CAMERON_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PSYCHIC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_PSYCHIC_M,
+ .trainerName = _("CAMERON"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Cameron1
+ },
+
+ [OPPONENT_CAMERON_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PSYCHIC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_PSYCHIC_M,
+ .trainerName = _("CAMERON"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Cameron2
+ },
+
+ [OPPONENT_CAMERON_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PSYCHIC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_PSYCHIC_M,
+ .trainerName = _("CAMERON"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Cameron3
+ },
+
+ [OPPONENT_CAMERON_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PSYCHIC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_PSYCHIC_M,
+ .trainerName = _("CAMERON"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Cameron4
+ },
+
+ [OPPONENT_CAMERON_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PSYCHIC,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_PSYCHIC_M,
+ .trainerName = _("CAMERON"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Cameron5
+ },
+
+ [OPPONENT_JACLYN] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_PSYCHIC,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_PSYCHIC_F,
+ .trainerName = _("JACLYN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Jaclyn
+ },
+
+ [OPPONENT_HANNAH] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PSYCHIC,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_PSYCHIC_F,
+ .trainerName = _("HANNAH"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Hannah
+ },
+
+ [OPPONENT_SAMANTHA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PSYCHIC,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_PSYCHIC_F,
+ .trainerName = _("SAMANTHA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Samantha
+ },
+
+ [OPPONENT_MAURA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PSYCHIC,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_PSYCHIC_F,
+ .trainerName = _("MAURA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Maura
+ },
+
+ [OPPONENT_KAYLA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PSYCHIC,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_PSYCHIC_F,
+ .trainerName = _("KAYLA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Kayla
+ },
+
+ [OPPONENT_ALEXIS] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PSYCHIC,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_PSYCHIC_F,
+ .trainerName = _("ALEXIS"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Alexis
+ },
+
+ [OPPONENT_JACKI_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PSYCHIC,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_PSYCHIC_F,
+ .trainerName = _("JACKI"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Jacki1
+ },
+
+ [OPPONENT_JACKI_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PSYCHIC,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_PSYCHIC_F,
+ .trainerName = _("JACKI"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Jacki2
+ },
+
+ [OPPONENT_JACKI_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PSYCHIC,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_PSYCHIC_F,
+ .trainerName = _("JACKI"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Jacki3
+ },
+
+ [OPPONENT_JACKI_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PSYCHIC,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_PSYCHIC_F,
+ .trainerName = _("JACKI"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Jacki4
+ },
+
+ [OPPONENT_JACKI_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PSYCHIC,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_PSYCHIC_F,
+ .trainerName = _("JACKI"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Jacki5
+ },
+
+ [OPPONENT_WALTER_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_GENTLEMAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH,
+ .trainerPic = TRAINER_PIC_GENTLEMAN,
+ .trainerName = _("WALTER"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Walter1
+ },
+
+ [OPPONENT_TUCKER] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_GENTLEMAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH,
+ .trainerPic = TRAINER_PIC_GENTLEMAN,
+ .trainerName = _("TUCKER"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Tucker
+ },
+
+ [OPPONENT_THOMAS] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_GENTLEMAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH,
+ .trainerPic = TRAINER_PIC_GENTLEMAN,
+ .trainerName = _("THOMAS"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Thomas
+ },
+
+ [OPPONENT_WALTER_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_GENTLEMAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH,
+ .trainerPic = TRAINER_PIC_GENTLEMAN,
+ .trainerName = _("WALTER"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Walter2
+ },
+
+ [OPPONENT_WALTER_3] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_GENTLEMAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH,
+ .trainerPic = TRAINER_PIC_GENTLEMAN,
+ .trainerName = _("WALTER"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Walter3
+ },
+
+ [OPPONENT_WALTER_4] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_GENTLEMAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH,
+ .trainerPic = TRAINER_PIC_GENTLEMAN,
+ .trainerName = _("WALTER"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Walter4
+ },
+
+ [OPPONENT_WALTER_5] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_GENTLEMAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH,
+ .trainerPic = TRAINER_PIC_GENTLEMAN,
+ .trainerName = _("WALTER"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Walter5
+ },
+
+ [OPPONENT_SIDNEY] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_ELITE_FOUR,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_ELITE_FOUR,
+ .trainerPic = TRAINER_PIC_SIDNEY,
+ .trainerName = _("SIDNEY"),
+ .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 5,
+ .party = gTrainerParty_Sidney
+ },
+
+ [OPPONENT_PHOEBE] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_ELITE_FOUR,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_ELITE_FOUR,
+ .trainerPic = TRAINER_PIC_PHOEBE,
+ .trainerName = _("PHOEBE"),
+ .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 5,
+ .party = gTrainerParty_Phoebe
+ },
+
+ [OPPONENT_GLACIA] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_ELITE_FOUR,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_ELITE_FOUR,
+ .trainerPic = TRAINER_PIC_GLACIA,
+ .trainerName = _("GLACIA"),
+ .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 5,
+ .party = gTrainerParty_Glacia
+ },
+
+ [OPPONENT_DRAKE] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_ELITE_FOUR,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_ELITE_FOUR,
+ .trainerPic = TRAINER_PIC_DRAKE,
+ .trainerName = _("DRAKE"),
+ .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 5,
+ .party = gTrainerParty_Drake
+ },
+
+ [OPPONENT_ROXANNE] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_LEADER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_ROXANNE,
+ .trainerName = _("ROXANNE"),
+ .items = {ITEM_POTION, ITEM_POTION, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 2,
+ .party = gTrainerParty_Roxanne
+ },
+
+ [OPPONENT_BRAWLY] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_LEADER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_BRAWLY,
+ .trainerName = _("BRAWLY"),
+ .items = {ITEM_SUPER_POTION, ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 2,
+ .party = gTrainerParty_Brawly
+ },
+
+ [OPPONENT_WATTSON] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_LEADER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_WATTSON,
+ .trainerName = _("WATTSON"),
+ .items = {ITEM_SUPER_POTION, ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Wattson
+ },
+
+ [OPPONENT_FLANNERY] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_LEADER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_FLANNERY,
+ .trainerName = _("FLANNERY"),
+ .items = {ITEM_HYPER_POTION, ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Flannery
+ },
+
+ [OPPONENT_NORMAN] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_LEADER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_NORMAN,
+ .trainerName = _("NORMAN"),
+ .items = {ITEM_HYPER_POTION, ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Norman
+ },
+
+ [OPPONENT_WINONA] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_LEADER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_WINONA,
+ .trainerName = _("WINONA"),
+ .items = {ITEM_HYPER_POTION, ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 4,
+ .party = gTrainerParty_Winona
+ },
+
+ [OPPONENT_TATE_AND_LIZA] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_LEADER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_TATE_AND_LIZA,
+ .trainerName = _("TATE&LIZA"),
+ .items = {ITEM_HYPER_POTION, ITEM_HYPER_POTION, ITEM_HYPER_POTION, ITEM_HYPER_POTION},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x7,
+ .partySize = 2,
+ .party = gTrainerParty_TateAndLiza
+ },
+
+ [OPPONENT_WALLACE] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_LEADER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_WALLACE,
+ .trainerName = _("WALLACE"),
+ .items = {ITEM_HYPER_POTION, ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 5,
+ .party = gTrainerParty_Wallace
+ },
+
+ [OPPONENT_JERRY_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SCHOOL_KID,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_SCHOOL_KID_M,
+ .trainerName = _("JERRY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Jerry1
+ },
+
+ [OPPONENT_TED] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SCHOOL_KID,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_SCHOOL_KID_M,
+ .trainerName = _("TED"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Ted
+ },
+
+ [OPPONENT_PAUL] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SCHOOL_KID,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_SCHOOL_KID_M,
+ .trainerName = _("PAUL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Paul
+ },
+
+ [OPPONENT_JERRY_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SCHOOL_KID,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_SCHOOL_KID_M,
+ .trainerName = _("JERRY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Jerry2
+ },
+
+ [OPPONENT_JERRY_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SCHOOL_KID,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_SCHOOL_KID_M,
+ .trainerName = _("JERRY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Jerry3
+ },
+
+ [OPPONENT_JERRY_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SCHOOL_KID,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_SCHOOL_KID_M,
+ .trainerName = _("JERRY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Jerry4
+ },
+
+ [OPPONENT_JERRY_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SCHOOL_KID,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_SCHOOL_KID_M,
+ .trainerName = _("JERRY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Jerry5
+ },
+
+ [OPPONENT_KAREN_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SCHOOL_KID,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_SCHOOL_KID_F,
+ .trainerName = _("KAREN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Karen1
+ },
+
+ [OPPONENT_GEORGIA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SCHOOL_KID,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_SCHOOL_KID_F,
+ .trainerName = _("GEORGIA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Georgia
+ },
+
+ [OPPONENT_KAREN_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SCHOOL_KID,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_SCHOOL_KID_F,
+ .trainerName = _("KAREN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Karen2
+ },
+
+ [OPPONENT_KAREN_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SCHOOL_KID,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_SCHOOL_KID_F,
+ .trainerName = _("KAREN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Karen3
+ },
+
+ [OPPONENT_KAREN_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SCHOOL_KID,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_SCHOOL_KID_F,
+ .trainerName = _("KAREN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Karen4
+ },
+
+ [OPPONENT_KAREN_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SCHOOL_KID,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_SCHOOL_KID_F,
+ .trainerName = _("KAREN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Karen5
+ },
+
+ [OPPONENT_KATE_AND_JOY] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_SR_AND_JR,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_SR_AND_JR,
+ .trainerName = _("KATE & JOY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_KateAndJoy
+ },
+
+ [OPPONENT_ANNA_AND_MEG_1] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_SR_AND_JR,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_SR_AND_JR,
+ .trainerName = _("ANNA & MEG"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_AnnaAndMeg1
+ },
+
+ [OPPONENT_ANNA_AND_MEG_2] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_SR_AND_JR,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_SR_AND_JR,
+ .trainerName = _("ANNA & MEG"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_AnnaAndMeg2
+ },
+
+ [OPPONENT_ANNA_AND_MEG_3] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_SR_AND_JR,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_SR_AND_JR,
+ .trainerName = _("ANNA & MEG"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_AnnaAndMeg3
+ },
+
+ [OPPONENT_ANNA_AND_MEG_4] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_SR_AND_JR,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_SR_AND_JR,
+ .trainerName = _("ANNA & MEG"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_AnnaAndMeg4
+ },
+
+ [OPPONENT_ANNA_AND_MEG_5] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_SR_AND_JR,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_SR_AND_JR,
+ .trainerName = _("ANNA & MEG"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_AnnaAndMeg5
+ },
+
+ [OPPONENT_VICTOR] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM,
+ .trainerClass = TRAINER_CLASS_WINSTRATE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_POKEFAN_M,
+ .trainerName = _("VICTOR"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Victor
+ },
+
+ [OPPONENT_MIGUEL_1] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM,
+ .trainerClass = TRAINER_CLASS_POKEFAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_POKEFAN_M,
+ .trainerName = _("MIGUEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Miguel1
+ },
+
+ [OPPONENT_COLTON] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_POKEFAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_POKEFAN_M,
+ .trainerName = _("COLTON"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 6,
+ .party = gTrainerParty_Colton
+ },
+
+ [OPPONENT_MIGUEL_2] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM,
+ .trainerClass = TRAINER_CLASS_POKEFAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_POKEFAN_M,
+ .trainerName = _("MIGUEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Miguel2
+ },
+
+ [OPPONENT_MIGUEL_3] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM,
+ .trainerClass = TRAINER_CLASS_POKEFAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_POKEFAN_M,
+ .trainerName = _("MIGUEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Miguel3
+ },
+
+ [OPPONENT_MIGUEL_4] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM,
+ .trainerClass = TRAINER_CLASS_POKEFAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_POKEFAN_M,
+ .trainerName = _("MIGUEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Miguel4
+ },
+
+ [OPPONENT_MIGUEL_5] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM,
+ .trainerClass = TRAINER_CLASS_POKEFAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_POKEFAN_M,
+ .trainerName = _("MIGUEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Miguel5
+ },
+
+ [OPPONENT_VICTORIA] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM,
+ .trainerClass = TRAINER_CLASS_WINSTRATE,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_POKEFAN_F,
+ .trainerName = _("VICTORIA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x3,
+ .partySize = 1,
+ .party = gTrainerParty_Victoria
+ },
+
+ [OPPONENT_VANESSA] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM,
+ .trainerClass = TRAINER_CLASS_POKEFAN,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_POKEFAN_F,
+ .trainerName = _("VANESSA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Vanessa
+ },
+
+ [OPPONENT_MARISSA] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM,
+ .trainerClass = TRAINER_CLASS_POKEFAN,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_POKEFAN_F,
+ .trainerName = _("MARISSA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Marissa
+ },
+
+ [OPPONENT_ISABEL_1] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM,
+ .trainerClass = TRAINER_CLASS_POKEFAN,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_POKEFAN_F,
+ .trainerName = _("ISABEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Isabel1
+ },
+
+ [OPPONENT_ISABEL_2] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM,
+ .trainerClass = TRAINER_CLASS_POKEFAN,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_POKEFAN_F,
+ .trainerName = _("ISABEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Isabel2
+ },
+
+ [OPPONENT_ISABEL_3] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM,
+ .trainerClass = TRAINER_CLASS_POKEFAN,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_POKEFAN_F,
+ .trainerName = _("ISABEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Isabel3
+ },
+
+ [OPPONENT_ISABEL_4] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM,
+ .trainerClass = TRAINER_CLASS_POKEFAN,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_POKEFAN_F,
+ .trainerName = _("ISABEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Isabel4
+ },
+
+ [OPPONENT_ISABEL_5] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM,
+ .trainerClass = TRAINER_CLASS_POKEFAN,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_POKEFAN_F,
+ .trainerName = _("ISABEL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Isabel5
+ },
+
+ [OPPONENT_TIMOTHY_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_EXPERT,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_EXPERT_M,
+ .trainerName = _("TIMOTHY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 1,
+ .party = gTrainerParty_Timothy1
+ },
+
+ [OPPONENT_TIMOTHY_2] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_EXPERT,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_EXPERT_M,
+ .trainerName = _("TIMOTHY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 1,
+ .party = gTrainerParty_Timothy2
+ },
+
+ [OPPONENT_TIMOTHY_3] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_EXPERT,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_EXPERT_M,
+ .trainerName = _("TIMOTHY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 1,
+ .party = gTrainerParty_Timothy3
+ },
+
+ [OPPONENT_TIMOTHY_4] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_EXPERT,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_EXPERT_M,
+ .trainerName = _("TIMOTHY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 1,
+ .party = gTrainerParty_Timothy4
+ },
+
+ [OPPONENT_TIMOTHY_5] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_EXPERT,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_EXPERT_M,
+ .trainerName = _("TIMOTHY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 1,
+ .party = gTrainerParty_Timothy5
+ },
+
+ [OPPONENT_VICKY] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_WINSTRATE,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_EXPERT_F,
+ .trainerName = _("VICKY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 1,
+ .party = gTrainerParty_Vicky
+ },
+
+ [OPPONENT_SHELBY_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_EXPERT,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_EXPERT_F,
+ .trainerName = _("SHELBY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 2,
+ .party = gTrainerParty_Shelby1
+ },
+
+ [OPPONENT_SHELBY_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_EXPERT,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_EXPERT_F,
+ .trainerName = _("SHELBY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 2,
+ .party = gTrainerParty_Shelby2
+ },
+
+ [OPPONENT_SHELBY_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_EXPERT,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_EXPERT_F,
+ .trainerName = _("SHELBY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 2,
+ .party = gTrainerParty_Shelby3
+ },
+
+ [OPPONENT_SHELBY_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_EXPERT,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_EXPERT_F,
+ .trainerName = _("SHELBY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 2,
+ .party = gTrainerParty_Shelby4
+ },
+
+ [OPPONENT_SHELBY_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_EXPERT,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_EXPERT_F,
+ .trainerName = _("SHELBY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 2,
+ .party = gTrainerParty_Shelby5
+ },
+
+ [OPPONENT_CALVIN_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_YOUNGSTER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_YOUNGSTER,
+ .trainerName = _("CALVIN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Calvin1
+ },
+
+ [OPPONENT_BILLY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_YOUNGSTER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_YOUNGSTER,
+ .trainerName = _("BILLY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Billy
+ },
+
+ [OPPONENT_JOSH] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_YOUNGSTER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_YOUNGSTER,
+ .trainerName = _("JOSH"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Josh
+ },
+
+ [OPPONENT_TOMMY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_YOUNGSTER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_YOUNGSTER,
+ .trainerName = _("TOMMY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Tommy
+ },
+
+ [OPPONENT_JOEY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_YOUNGSTER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_YOUNGSTER,
+ .trainerName = _("JOEY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Joey
+ },
+
+ [OPPONENT_BEN] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_YOUNGSTER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_YOUNGSTER,
+ .trainerName = _("BEN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Ben
+ },
+
+ [OPPONENT_ANONYMOUS_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_YOUNGSTER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_YOUNGSTER,
+ .trainerName = _(""),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Anonymous5
+ },
+
+ [OPPONENT_KEVIN] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_YOUNGSTER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_YOUNGSTER,
+ .trainerName = _("KEVIN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Kevin
+ },
+
+ [OPPONENT_NEAL] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_YOUNGSTER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_YOUNGSTER,
+ .trainerName = _("NEAL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Neal
+ },
+
+ [OPPONENT_DILLON] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_YOUNGSTER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_YOUNGSTER,
+ .trainerName = _("DILLON"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Dillon
+ },
+
+ [OPPONENT_CALVIN_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_YOUNGSTER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_YOUNGSTER,
+ .trainerName = _("CALVIN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Calvin2
+ },
+
+ [OPPONENT_CALVIN_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_YOUNGSTER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_YOUNGSTER,
+ .trainerName = _("CALVIN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Calvin3
+ },
+
+ [OPPONENT_CALVIN_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_YOUNGSTER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_YOUNGSTER,
+ .trainerName = _("CALVIN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Calvin4
+ },
+
+ [OPPONENT_CALVIN_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_YOUNGSTER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_YOUNGSTER,
+ .trainerName = _("CALVIN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Calvin5
+ },
+
+ [OPPONENT_EDDIE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_YOUNGSTER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_YOUNGSTER,
+ .trainerName = _("EDDIE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Eddie
+ },
+
+ [OPPONENT_ALLEN] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_YOUNGSTER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_YOUNGSTER,
+ .trainerName = _("ALLEN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Allen
+ },
+
+ [OPPONENT_TIMMY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_YOUNGSTER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_YOUNGSTER,
+ .trainerName = _("TIMMY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Timmy
+ },
+
+ [OPPONENT_STEVEN] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_CHAMPION,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_STEVEN,
+ .trainerName = _("STEVEN"),
+ .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 6,
+ .party = gTrainerParty_Steven
+ },
+
+ [OPPONENT_ANDREW] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_FISHERMAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_FISHERMAN,
+ .trainerName = _("ANDREW"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Andrew
+ },
+
+ [OPPONENT_IVAN] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_FISHERMAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_FISHERMAN,
+ .trainerName = _("IVAN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Ivan
+ },
+
+ [OPPONENT_CLAUDE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_FISHERMAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_FISHERMAN,
+ .trainerName = _("CLAUDE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 4,
+ .party = gTrainerParty_Claude
+ },
+
+ [OPPONENT_ELLIOT_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_FISHERMAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_FISHERMAN,
+ .trainerName = _("ELLIOT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Elliot1
+ },
+
+ [OPPONENT_NED] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_FISHERMAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_FISHERMAN,
+ .trainerName = _("NED"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Ned
+ },
+
+ [OPPONENT_DALE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_FISHERMAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_FISHERMAN,
+ .trainerName = _("DALE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 4,
+ .party = gTrainerParty_Dale
+ },
+
+ [OPPONENT_NOLAN] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_FISHERMAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_FISHERMAN,
+ .trainerName = _("NOLAN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Nolan
+ },
+
+ [OPPONENT_BARNY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_FISHERMAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_FISHERMAN,
+ .trainerName = _("BARNY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Barny
+ },
+
+ [OPPONENT_WADE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_FISHERMAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_FISHERMAN,
+ .trainerName = _("WADE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Wade
+ },
+
+ [OPPONENT_CARTER] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_FISHERMAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_FISHERMAN,
+ .trainerName = _("CARTER"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 4,
+ .party = gTrainerParty_Carter
+ },
+
+ [OPPONENT_ELLIOT_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_FISHERMAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_FISHERMAN,
+ .trainerName = _("ELLIOT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Elliot2
+ },
+
+ [OPPONENT_ELLIOT_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_FISHERMAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_FISHERMAN,
+ .trainerName = _("ELLIOT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 4,
+ .party = gTrainerParty_Elliot3
+ },
+
+ [OPPONENT_ELLIOT_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_FISHERMAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_FISHERMAN,
+ .trainerName = _("ELLIOT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 4,
+ .party = gTrainerParty_Elliot4
+ },
+
+ [OPPONENT_ELLIOT_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_FISHERMAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_FISHERMAN,
+ .trainerName = _("ELLIOT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x3,
+ .partySize = 4,
+ .party = gTrainerParty_Elliot5
+ },
+
+ [OPPONENT_RONALD] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_FISHERMAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_FISHERMAN,
+ .trainerName = _("RONALD"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 6,
+ .party = gTrainerParty_Ronald
+ },
+
+ [OPPONENT_JACOB] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_M,
+ .trainerName = _("JACOB"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Jacob
+ },
+
+ [OPPONENT_ANTHONY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_M,
+ .trainerName = _("ANTHONY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Anthony
+ },
+
+ [OPPONENT_BENJAMIN_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_M,
+ .trainerName = _("BENJAMIN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Benjamin1
+ },
+
+ [OPPONENT_BENJAMIN_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_M,
+ .trainerName = _("BENJAMIN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Benjamin2
+ },
+
+ [OPPONENT_BENJAMIN_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_M,
+ .trainerName = _("BENJAMIN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Benjamin3
+ },
+
+ [OPPONENT_BENJAMIN_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_M,
+ .trainerName = _("BENJAMIN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Benjamin4
+ },
+
+ [OPPONENT_BENJAMIN_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_M,
+ .trainerName = _("BENJAMIN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Benjamin5
+ },
+
+ [OPPONENT_ABIGAIL_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_F,
+ .trainerName = _("ABIGAIL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Abigail1
+ },
+
+ [OPPONENT_JASMINE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_F,
+ .trainerName = _("JASMINE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Jasmine
+ },
+
+ [OPPONENT_ABIGAIL_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_F,
+ .trainerName = _("ABIGAIL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Abigail2
+ },
+
+ [OPPONENT_ABIGAIL_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_F,
+ .trainerName = _("ABIGAIL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Abigail3
+ },
+
+ [OPPONENT_ABIGAIL_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_F,
+ .trainerName = _("ABIGAIL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Abigail4
+ },
+
+ [OPPONENT_ABIGAIL_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_F,
+ .trainerName = _("ABIGAIL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Abigail5
+ },
+
+ [OPPONENT_DYLAN_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_M,
+ .trainerName = _("DYLAN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Dylan1
+ },
+
+ [OPPONENT_DYLAN_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_M,
+ .trainerName = _("DYLAN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Dylan2
+ },
+
+ [OPPONENT_DYLAN_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_M,
+ .trainerName = _("DYLAN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Dylan3
+ },
+
+ [OPPONENT_DYLAN_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_M,
+ .trainerName = _("DYLAN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Dylan4
+ },
+
+ [OPPONENT_DYLAN_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_M,
+ .trainerName = _("DYLAN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Dylan5
+ },
+
+ [OPPONENT_MARIA_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_F,
+ .trainerName = _("MARIA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Maria1
+ },
+
+ [OPPONENT_MARIA_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_F,
+ .trainerName = _("MARIA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Maria2
+ },
+
+ [OPPONENT_MARIA_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_F,
+ .trainerName = _("MARIA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Maria3
+ },
+
+ [OPPONENT_MARIA_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_F,
+ .trainerName = _("MARIA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Maria4
+ },
+
+ [OPPONENT_MARIA_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_F,
+ .trainerName = _("MARIA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Maria5
+ },
+
+ [OPPONENT_CALEB] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M,
+ .trainerName = _("CALEB"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 4,
+ .party = gTrainerParty_Caleb
+ },
+
+ [OPPONENT_ANONYMOUS_6] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M,
+ .trainerName = _(""),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Anonymous6
+ },
+
+ [OPPONENT_ISAIAH_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M,
+ .trainerName = _("ISAIAH"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Isaiah1
+ },
+
+ [OPPONENT_ANONYMOUS_7] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M,
+ .trainerName = _(""),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Anonymous7
+ },
+
+ [OPPONENT_CHASE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M,
+ .trainerName = _("CHASE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Chase
+ },
+
+ [OPPONENT_ISAIAH_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M,
+ .trainerName = _("ISAIAH"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Isaiah2
+ },
+
+ [OPPONENT_ISAIAH_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M,
+ .trainerName = _("ISAIAH"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Isaiah3
+ },
+
+ [OPPONENT_ISAIAH_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M,
+ .trainerName = _("ISAIAH"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Isaiah4
+ },
+
+ [OPPONENT_ISAIAH_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M,
+ .trainerName = _("ISAIAH"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Isaiah5
+ },
+
+ [OPPONENT_ANONYMOUS_8] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_F,
+ .trainerName = _(""),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Anonymous8
+ },
+
+ [OPPONENT_CONNOR] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_F,
+ .trainerName = _("CONNOR"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 4,
+ .party = gTrainerParty_Connor
+ },
+
+ [OPPONENT_ANONYMOUS_9] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_F,
+ .trainerName = _(""),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Anonymous9
+ },
+
+ [OPPONENT_KATELYN_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_F,
+ .trainerName = _("KATELYN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Katelyn1
+ },
+
+ [OPPONENT_ALLISON] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_F,
+ .trainerName = _("ALLISON"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 4,
+ .party = gTrainerParty_Allison
+ },
+
+ [OPPONENT_KATELYN_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_F,
+ .trainerName = _("KATELYN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Katelyn2
+ },
+
+ [OPPONENT_KATELYN_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_F,
+ .trainerName = _("KATELYN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Katelyn3
+ },
+
+ [OPPONENT_KATELYN_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_F,
+ .trainerName = _("KATELYN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Katelyn4
+ },
+
+ [OPPONENT_KATELYN_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TRIATHLETE,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_F,
+ .trainerName = _("KATELYN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Katelyn5
+ },
+
+ [OPPONENT_NICOLAS_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_DRAGON_TAMER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_DRAGON_TAMER,
+ .trainerName = _("NICOLAS"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Nicolas1
+ },
+
+ [OPPONENT_NICOLAS_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_DRAGON_TAMER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_DRAGON_TAMER,
+ .trainerName = _("NICOLAS"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Nicolas2
+ },
+
+ [OPPONENT_NICOLAS_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_DRAGON_TAMER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_DRAGON_TAMER,
+ .trainerName = _("NICOLAS"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Nicolas3
+ },
+
+ [OPPONENT_NICOLAS_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_DRAGON_TAMER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_DRAGON_TAMER,
+ .trainerName = _("NICOLAS"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Nicolas4
+ },
+
+ [OPPONENT_NICOLAS_5] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM,
+ .trainerClass = TRAINER_CLASS_DRAGON_TAMER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_DRAGON_TAMER,
+ .trainerName = _("NICOLAS"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Nicolas5
+ },
+
+ [OPPONENT_AARON] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_DRAGON_TAMER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_DRAGON_TAMER,
+ .trainerName = _("AARON"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Aaron
+ },
+
+ [OPPONENT_PERRY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BIRD_KEEPER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_BIRD_KEEPER,
+ .trainerName = _("PERRY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Perry
+ },
+
+ [OPPONENT_HUGH] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BIRD_KEEPER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_BIRD_KEEPER,
+ .trainerName = _("HUGH"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Hugh
+ },
+
+ [OPPONENT_PHIL] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BIRD_KEEPER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_BIRD_KEEPER,
+ .trainerName = _("PHIL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Phil
+ },
+
+ [OPPONENT_JARED] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BIRD_KEEPER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_BIRD_KEEPER,
+ .trainerName = _("JARED"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Jared
+ },
+
+ [OPPONENT_ANONYMOUS_10] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BIRD_KEEPER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_BIRD_KEEPER,
+ .trainerName = _(""),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 4,
+ .party = gTrainerParty_Anonymous10
+ },
+
+ [OPPONENT_TANNER] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BIRD_KEEPER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_BIRD_KEEPER,
+ .trainerName = _("TANNER"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Tanner
+ },
+
+ [OPPONENT_WILL] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BIRD_KEEPER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_BIRD_KEEPER,
+ .trainerName = _("WILL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Will
+ },
+
+ [OPPONENT_COLIN] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BIRD_KEEPER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_BIRD_KEEPER,
+ .trainerName = _("COLIN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Colin
+ },
+
+ [OPPONENT_ROBERT_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BIRD_KEEPER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_BIRD_KEEPER,
+ .trainerName = _("ROBERT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Robert1
+ },
+
+ [OPPONENT_BENNY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BIRD_KEEPER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_BIRD_KEEPER,
+ .trainerName = _("BENNY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Benny
+ },
+
+ [OPPONENT_CHESTER] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BIRD_KEEPER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_BIRD_KEEPER,
+ .trainerName = _("CHESTER"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Chester
+ },
+
+ [OPPONENT_ROBERT_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BIRD_KEEPER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_BIRD_KEEPER,
+ .trainerName = _("ROBERT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Robert2
+ },
+
+ [OPPONENT_ROBERT_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BIRD_KEEPER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_BIRD_KEEPER,
+ .trainerName = _("ROBERT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Robert3
+ },
+
+ [OPPONENT_ROBERT_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BIRD_KEEPER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_BIRD_KEEPER,
+ .trainerName = _("ROBERT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Robert4
+ },
+
+ [OPPONENT_ROBERT_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BIRD_KEEPER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_BIRD_KEEPER,
+ .trainerName = _("ROBERT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Robert5
+ },
+
+ [OPPONENT_ALEX] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BIRD_KEEPER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_BIRD_KEEPER,
+ .trainerName = _("ALEX"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 4,
+ .party = gTrainerParty_Alex
+ },
+
+ [OPPONENT_BECK] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BIRD_KEEPER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_BIRD_KEEPER,
+ .trainerName = _("BECK"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Beck
+ },
+
+ [OPPONENT_YASU] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_NINJA_BOY,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_NINJA_BOY,
+ .trainerName = _("YASU"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x3,
+ .partySize = 1,
+ .party = gTrainerParty_Yasu
+ },
+
+ [OPPONENT_TAKASHI] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_NINJA_BOY,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_NINJA_BOY,
+ .trainerName = _("TAKASHI"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x3,
+ .partySize = 3,
+ .party = gTrainerParty_Takashi
+ },
+
+ [OPPONENT_MAKOTO] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_NINJA_BOY,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_NINJA_BOY,
+ .trainerName = _("MAKOTO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x0,
+ .partySize = 1,
+ .party = gTrainerParty_Makoto
+ },
+
+ [OPPONENT_HIDEO_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_NINJA_BOY,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_NINJA_BOY,
+ .trainerName = _("HIDEO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x0,
+ .partySize = 4,
+ .party = gTrainerParty_Hideo1
+ },
+
+ [OPPONENT_LAO_1] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_NINJA_BOY,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_NINJA_BOY,
+ .trainerName = _("LAO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x0,
+ .partySize = 4,
+ .party = gTrainerParty_Lao1
+ },
+
+ [OPPONENT_LUNG] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_NINJA_BOY,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_NINJA_BOY,
+ .trainerName = _("LUNG"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x0,
+ .partySize = 2,
+ .party = gTrainerParty_Lung
+ },
+
+ [OPPONENT_LAO_2] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_NINJA_BOY,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_NINJA_BOY,
+ .trainerName = _("LAO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x0,
+ .partySize = 4,
+ .party = gTrainerParty_Lao2
+ },
+
+ [OPPONENT_LAO_3] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_NINJA_BOY,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_NINJA_BOY,
+ .trainerName = _("LAO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x0,
+ .partySize = 4,
+ .party = gTrainerParty_Lao3
+ },
+
+ [OPPONENT_LAO_4] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_NINJA_BOY,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_NINJA_BOY,
+ .trainerName = _("LAO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x0,
+ .partySize = 4,
+ .party = gTrainerParty_Lao4
+ },
+
+ [OPPONENT_LAO_5] =
+ {
+ .partyFlags = F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_NINJA_BOY,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_NINJA_BOY,
+ .trainerName = _("LAO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x0,
+ .partySize = 4,
+ .party = gTrainerParty_Lao5
+ },
+
+ [OPPONENT_TESSA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BATTLE_GIRL,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_BATTLE_GIRL,
+ .trainerName = _("TESSA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Tessa
+ },
+
+ [OPPONENT_LAURA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BATTLE_GIRL,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_BATTLE_GIRL,
+ .trainerName = _("LAURA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Laura
+ },
+
+ [OPPONENT_CYNDY_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BATTLE_GIRL,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_BATTLE_GIRL,
+ .trainerName = _("CYNDY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Cyndy1
+ },
+
+ [OPPONENT_CORA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BATTLE_GIRL,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_BATTLE_GIRL,
+ .trainerName = _("CORA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Cora
+ },
+
+ [OPPONENT_JILL] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BATTLE_GIRL,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_BATTLE_GIRL,
+ .trainerName = _("JILL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Jill
+ },
+
+ [OPPONENT_CYNDY_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BATTLE_GIRL,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_BATTLE_GIRL,
+ .trainerName = _("CYNDY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Cyndy2
+ },
+
+ [OPPONENT_CYNDY_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BATTLE_GIRL,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_BATTLE_GIRL,
+ .trainerName = _("CYNDY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Cyndy3
+ },
+
+ [OPPONENT_CYNDY_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BATTLE_GIRL,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_BATTLE_GIRL,
+ .trainerName = _("CYNDY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Cyndy4
+ },
+
+ [OPPONENT_CYNDY_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BATTLE_GIRL,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_BATTLE_GIRL,
+ .trainerName = _("CYNDY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Cyndy5
+ },
+
+ [OPPONENT_MADELINE_1] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_PARASOL_LADY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_PARASOL_LADY,
+ .trainerName = _("MADELINE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Madeline1
+ },
+
+ [OPPONENT_CLARISSA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PARASOL_LADY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_PARASOL_LADY,
+ .trainerName = _("CLARISSA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Clarissa
+ },
+
+ [OPPONENT_ANGELICA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PARASOL_LADY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_PARASOL_LADY,
+ .trainerName = _("ANGELICA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Angelica
+ },
+
+ [OPPONENT_MADELINE_2] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_PARASOL_LADY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_PARASOL_LADY,
+ .trainerName = _("MADELINE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Madeline2
+ },
+
+ [OPPONENT_MADELINE_3] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_PARASOL_LADY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_PARASOL_LADY,
+ .trainerName = _("MADELINE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Madeline3
+ },
+
+ [OPPONENT_MADELINE_4] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_PARASOL_LADY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_PARASOL_LADY,
+ .trainerName = _("MADELINE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Madeline4
+ },
+
+ [OPPONENT_MADELINE_5] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_PARASOL_LADY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_PARASOL_LADY,
+ .trainerName = _("MADELINE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Madeline5
+ },
+
+ [OPPONENT_BEVERLY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_F,
+ .trainerName = _("BEVERLY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Beverly
+ },
+
+ [OPPONENT_DAWN] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_F,
+ .trainerName = _("DAWN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Dawn
+ },
+
+ [OPPONENT_NICOLE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_F,
+ .trainerName = _("NICOLE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Nicole
+ },
+
+ [OPPONENT_DENISE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_F,
+ .trainerName = _("DENISE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Denise
+ },
+
+ [OPPONENT_BETH] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_F,
+ .trainerName = _("BETH"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Beth
+ },
+
+ [OPPONENT_TARA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_F,
+ .trainerName = _("TARA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Tara
+ },
+
+ [OPPONENT_MISSY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_F,
+ .trainerName = _("MISSY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 4,
+ .party = gTrainerParty_Missy
+ },
+
+ [OPPONENT_ALICE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_F,
+ .trainerName = _("ALICE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Alice
+ },
+
+ [OPPONENT_JENNY_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_F,
+ .trainerName = _("JENNY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Jenny1
+ },
+
+ [OPPONENT_GRACE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_F,
+ .trainerName = _("GRACE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Grace
+ },
+
+ [OPPONENT_TANYA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_F,
+ .trainerName = _("TANYA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Tanya
+ },
+
+ [OPPONENT_SHARON] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_F,
+ .trainerName = _("SHARON"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Sharon
+ },
+
+ [OPPONENT_NIKKI] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_F,
+ .trainerName = _("NIKKI"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Nikki
+ },
+
+ [OPPONENT_BRENDA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_F,
+ .trainerName = _("BRENDA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Brenda
+ },
+
+ [OPPONENT_KATIE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_F,
+ .trainerName = _("KATIE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Katie
+ },
+
+ [OPPONENT_SUSIE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_F,
+ .trainerName = _("SUSIE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Susie
+ },
+
+ [OPPONENT_KARA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_F,
+ .trainerName = _("KARA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Kara
+ },
+
+ [OPPONENT_DANA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_F,
+ .trainerName = _("DANA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Dana
+ },
+
+ [OPPONENT_ERIN] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_F,
+ .trainerName = _("ERIN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Erin
+ },
+
+ [OPPONENT_DEBRA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_F,
+ .trainerName = _("DEBRA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Debra
+ },
+
+ [OPPONENT_LINDA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_F,
+ .trainerName = _("LINDA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Linda
+ },
+
+ [OPPONENT_KAYLEE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_F,
+ .trainerName = _("KAYLEE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Kaylee
+ },
+
+ [OPPONENT_LAUREL] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_F,
+ .trainerName = _("LAUREL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Laurel
+ },
+
+ [OPPONENT_DARCY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_F,
+ .trainerName = _("DARCY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Darcy
+ },
+
+ [OPPONENT_JENNY_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_F,
+ .trainerName = _("JENNY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Jenny2
+ },
+
+ [OPPONENT_JENNY_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_F,
+ .trainerName = _("JENNY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Jenny3
+ },
+
+ [OPPONENT_JENNY_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_F,
+ .trainerName = _("JENNY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Jenny4
+ },
+
+ [OPPONENT_JENNY_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_F,
+ .trainerName = _("JENNY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Jenny5
+ },
+
+ [OPPONENT_HEIDI] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_PICNICKER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_PICNICKER,
+ .trainerName = _("HEIDI"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Heidi
+ },
+
+ [OPPONENT_BECKY] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_PICNICKER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_PICNICKER,
+ .trainerName = _("BECKY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Becky
+ },
+
+ [OPPONENT_CAROL] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PICNICKER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_PICNICKER,
+ .trainerName = _("CAROL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Carol
+ },
+
+ [OPPONENT_NANCY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PICNICKER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_PICNICKER,
+ .trainerName = _("NANCY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Nancy
+ },
+
+ [OPPONENT_MARTHA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PICNICKER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_PICNICKER,
+ .trainerName = _("MARTHA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Martha
+ },
+
+ [OPPONENT_DIANA_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PICNICKER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_PICNICKER,
+ .trainerName = _("DIANA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Diana1
+ },
+
+ [OPPONENT_NINA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PICNICKER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_PICNICKER,
+ .trainerName = _("NINA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Nina
+ },
+
+ [OPPONENT_IRENE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PICNICKER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_PICNICKER,
+ .trainerName = _("IRENE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Irene
+ },
+
+ [OPPONENT_DIANA_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PICNICKER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_PICNICKER,
+ .trainerName = _("DIANA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Diana2
+ },
+
+ [OPPONENT_DIANA_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PICNICKER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_PICNICKER,
+ .trainerName = _("DIANA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Diana3
+ },
+
+ [OPPONENT_DIANA_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PICNICKER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_PICNICKER,
+ .trainerName = _("DIANA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Diana4
+ },
+
+ [OPPONENT_DIANA_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PICNICKER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_PICNICKER,
+ .trainerName = _("DIANA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Diana5
+ },
+
+ [OPPONENT_AMY_AND_LIV_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TWINS,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_TWINS,
+ .trainerName = _("AMY & LIV"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_AmyAndLiv1
+ },
+
+ [OPPONENT_AMY_AND_LIV_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TWINS,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_TWINS,
+ .trainerName = _("AMY & LIV"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_AmyAndLiv2
+ },
+
+ [OPPONENT_GINA_AND_MIA_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TWINS,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_TWINS,
+ .trainerName = _("GINA & MIA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_GinaAndMia1
+ },
+
+ [OPPONENT_MIU_AND_YUKI] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TWINS,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_TWINS,
+ .trainerName = _("MIU & YUKI"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_MiuAndYuki
+ },
+
+ [OPPONENT_AMY_AND_LIV_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TWINS,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_TWINS,
+ .trainerName = _("AMY & LIV"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_AmyAndLiv3
+ },
+
+ [OPPONENT_GINA_AND_MIA_2] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_TWINS,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_TWINS,
+ .trainerName = _("GINA & MIA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_GinaAndMia2
+ },
+
+ [OPPONENT_AMY_AND_LIV_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TWINS,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_TWINS,
+ .trainerName = _("AMY & LIV"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_AmyAndLiv4
+ },
+
+ [OPPONENT_AMY_AND_LIV_5] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_TWINS,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_TWINS,
+ .trainerName = _("AMY & LIV"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_AmyAndLiv5
+ },
+
+ [OPPONENT_AMY_AND_LIV_6] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_TWINS,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_TWINS,
+ .trainerName = _("AMY & LIV"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_AmyAndLiv6
+ },
+
+ [OPPONENT_HUEY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SAILOR,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_SAILOR,
+ .trainerName = _("HUEY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Huey
+ },
+
+ [OPPONENT_EDMOND] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SAILOR,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_SAILOR,
+ .trainerName = _("EDMOND"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Edmond
+ },
+
+ [OPPONENT_ERNEST_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SAILOR,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_SAILOR,
+ .trainerName = _("ERNEST"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Ernest1
+ },
+
+ [OPPONENT_DWAYNE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SAILOR,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_SAILOR,
+ .trainerName = _("DWAYNE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Dwayne
+ },
+
+ [OPPONENT_PHILLIP] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SAILOR,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_SAILOR,
+ .trainerName = _("PHILLIP"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Phillip
+ },
+
+ [OPPONENT_LEONARD] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SAILOR,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_SAILOR,
+ .trainerName = _("LEONARD"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Leonard
+ },
+
+ [OPPONENT_DUNCAN] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SAILOR,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_SAILOR,
+ .trainerName = _("DUNCAN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Duncan
+ },
+
+ [OPPONENT_ERNEST_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SAILOR,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_SAILOR,
+ .trainerName = _("ERNEST"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Ernest2
+ },
+
+ [OPPONENT_ERNEST_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SAILOR,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_SAILOR,
+ .trainerName = _("ERNEST"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Ernest3
+ },
+
+ [OPPONENT_ERNEST_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SAILOR,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_SAILOR,
+ .trainerName = _("ERNEST"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Ernest4
+ },
+
+ [OPPONENT_ERNEST_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SAILOR,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_SAILOR,
+ .trainerName = _("ERNEST"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Ernest5
+ },
+
+ [OPPONENT_ANONYMOUS_11] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BOARDER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_YOUNGSTER,
+ .trainerName = _(""),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Anonymous11
+ },
+
+ [OPPONENT_ANONYMOUS_12] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BOARDER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_YOUNGSTER,
+ .trainerName = _(""),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Anonymous12
+ },
+
+ [OPPONENT_ANONYMOUS_13] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BOARDER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_YOUNGSTER,
+ .trainerName = _(""),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Anonymous13
+ },
+
+ [OPPONENT_SONNY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BOARDER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_YOUNGSTER,
+ .trainerName = _("SONNY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Sonny
+ },
+
+ [OPPONENT_DONOVAN] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BOARDER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_YOUNGSTER,
+ .trainerName = _("DONOVAN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Donovan
+ },
+
+ [OPPONENT_GERALD] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BOARDER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_YOUNGSTER,
+ .trainerName = _("GERALD"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Gerald
+ },
+
+ [OPPONENT_KELVIN] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BOARDER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_YOUNGSTER,
+ .trainerName = _("KELVIN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Kelvin
+ },
+
+ [OPPONENT_KODY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BOARDER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_YOUNGSTER,
+ .trainerName = _("KODY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Kody
+ },
+
+ [OPPONENT_TEVIN] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BOARDER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_YOUNGSTER,
+ .trainerName = _("TEVIN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Tevin
+ },
+
+ [OPPONENT_DAMON] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BOARDER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_YOUNGSTER,
+ .trainerName = _("DAMON"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Damon
+ },
+
+ [OPPONENT_PABLO] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BOARDER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_YOUNGSTER,
+ .trainerName = _("PABLO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Pablo
+ },
+
+ [OPPONENT_EDWIN_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COLLECTOR,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_COLLECTOR,
+ .trainerName = _("EDWIN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Edwin1
+ },
+
+ [OPPONENT_HECTOR_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COLLECTOR,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_COLLECTOR,
+ .trainerName = _("HECTOR"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Hector1
+ },
+
+ [OPPONENT_HECTOR_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COLLECTOR,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_COLLECTOR,
+ .trainerName = _("HECTOR"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Hector2
+ },
+
+ [OPPONENT_EDWIN_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COLLECTOR,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_COLLECTOR,
+ .trainerName = _("EDWIN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Edwin2
+ },
+
+ [OPPONENT_EDWIN_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COLLECTOR,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_COLLECTOR,
+ .trainerName = _("EDWIN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Edwin3
+ },
+
+ [OPPONENT_EDWIN_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COLLECTOR,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_COLLECTOR,
+ .trainerName = _("EDWIN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Edwin4
+ },
+
+ [OPPONENT_EDWIN_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COLLECTOR,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_COLLECTOR,
+ .trainerName = _("EDWIN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Edwin5
+ },
+
+ [OPPONENT_WALLY_1] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_POKEMON_TRAINER_3,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_WALLY,
+ .trainerName = _("WALLY"),
+ .items = {ITEM_SUPER_POTION, ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 5,
+ .party = gTrainerParty_Wally1
+ },
+
+ [OPPONENT_BRENDAN_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_TRAINER_3,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_BRENDAN,
+ .trainerName = _("BRENDAN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 1,
+ .party = gTrainerParty_Brendan1
+ },
+
+ [OPPONENT_BRENDAN_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_TRAINER_3,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_BRENDAN,
+ .trainerName = _("BRENDAN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Brendan2
+ },
+
+ [OPPONENT_BRENDAN_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_TRAINER_3,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_BRENDAN,
+ .trainerName = _("BRENDAN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Brendan3
+ },
+
+ [OPPONENT_BRENDAN_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_TRAINER_3,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_BRENDAN,
+ .trainerName = _("BRENDAN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0xb,
+ .partySize = 1,
+ .party = gTrainerParty_Brendan4
+ },
+
+ [OPPONENT_BRENDAN_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_TRAINER_3,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_BRENDAN,
+ .trainerName = _("BRENDAN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Brendan5
+ },
+
+ [OPPONENT_BRENDAN_6] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_TRAINER_3,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_BRENDAN,
+ .trainerName = _("BRENDAN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Brendan6
+ },
+
+ [OPPONENT_BRENDAN_7] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_TRAINER_3,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_BRENDAN,
+ .trainerName = _("BRENDAN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 1,
+ .party = gTrainerParty_Brendan7
+ },
+
+ [OPPONENT_BRENDAN_8] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_TRAINER_3,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_BRENDAN,
+ .trainerName = _("BRENDAN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Brendan8
+ },
+
+ [OPPONENT_BRENDAN_9] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_TRAINER_3,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_BRENDAN,
+ .trainerName = _("BRENDAN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Brendan9
+ },
+
+ [OPPONENT_MAY_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_TRAINER_3,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_MAY,
+ .trainerName = _("MAY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 1,
+ .party = gTrainerParty_May1
+ },
+
+ [OPPONENT_MAY_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_TRAINER_3,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_MAY,
+ .trainerName = _("MAY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_May2
+ },
+
+ [OPPONENT_MAY_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_TRAINER_3,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_MAY,
+ .trainerName = _("MAY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_May3
+ },
+
+ [OPPONENT_MAY_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_TRAINER_3,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_MAY,
+ .trainerName = _("MAY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 1,
+ .party = gTrainerParty_May4
+ },
+
+ [OPPONENT_MAY_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_TRAINER_3,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_MAY,
+ .trainerName = _("MAY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_May5
+ },
+
+ [OPPONENT_MAY_6] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_TRAINER_3,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_MAY,
+ .trainerName = _("MAY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_May6
+ },
+
+ [OPPONENT_MAY_7] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_TRAINER_3,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_MAY,
+ .trainerName = _("MAY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 1,
+ .party = gTrainerParty_May7
+ },
+
+ [OPPONENT_MAY_8] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_TRAINER_3,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_MAY,
+ .trainerName = _("MAY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_May8
+ },
+
+ [OPPONENT_MAY_9] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_TRAINER_3,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_MAY,
+ .trainerName = _("MAY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_May9
+ },
+
+ [OPPONENT_ISAAC_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_BREEDER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_POKEMON_BREEDER_M,
+ .trainerName = _("ISAAC"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 6,
+ .party = gTrainerParty_Isaac1
+ },
+
+ [OPPONENT_RILEY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_BREEDER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_POKEMON_BREEDER_M,
+ .trainerName = _("RILEY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Riley
+ },
+
+ [OPPONENT_AIDAN] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_BREEDER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_POKEMON_BREEDER_M,
+ .trainerName = _("AIDAN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Aidan
+ },
+
+ [OPPONENT_ISAAC_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_BREEDER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_POKEMON_BREEDER_M,
+ .trainerName = _("ISAAC"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 6,
+ .party = gTrainerParty_Isaac2
+ },
+
+ [OPPONENT_ISAAC_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_BREEDER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_POKEMON_BREEDER_M,
+ .trainerName = _("ISAAC"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 6,
+ .party = gTrainerParty_Isaac3
+ },
+
+ [OPPONENT_ISAAC_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_BREEDER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_POKEMON_BREEDER_M,
+ .trainerName = _("ISAAC"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 6,
+ .party = gTrainerParty_Isaac4
+ },
+
+ [OPPONENT_ISAAC_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_BREEDER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_POKEMON_BREEDER_M,
+ .trainerName = _("ISAAC"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 6,
+ .party = gTrainerParty_Isaac5
+ },
+
+ [OPPONENT_LYDIA_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_BREEDER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_POKEMON_BREEDER_F,
+ .trainerName = _("LYDIA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 6,
+ .party = gTrainerParty_Lydia1
+ },
+
+ [OPPONENT_ALEXIA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_BREEDER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_POKEMON_BREEDER_F,
+ .trainerName = _("ALEXIA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Alexia
+ },
+
+ [OPPONENT_DANIELLE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_BREEDER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_POKEMON_BREEDER_F,
+ .trainerName = _("DANIELLE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Danielle
+ },
+
+ [OPPONENT_LYDIA_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_BREEDER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_POKEMON_BREEDER_F,
+ .trainerName = _("LYDIA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 6,
+ .party = gTrainerParty_Lydia2
+ },
+
+ [OPPONENT_LYDIA_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_BREEDER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_POKEMON_BREEDER_F,
+ .trainerName = _("LYDIA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 6,
+ .party = gTrainerParty_Lydia3
+ },
+
+ [OPPONENT_LYDIA_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_BREEDER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_POKEMON_BREEDER_F,
+ .trainerName = _("LYDIA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 6,
+ .party = gTrainerParty_Lydia4
+ },
+
+ [OPPONENT_LYDIA_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_BREEDER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_POKEMON_BREEDER_F,
+ .trainerName = _("LYDIA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 6,
+ .party = gTrainerParty_Lydia5
+ },
+
+ [OPPONENT_JACKSON_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_RANGER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_POKEMON_RANGER_M,
+ .trainerName = _("JACKSON"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 1,
+ .party = gTrainerParty_Jackson1
+ },
+
+ [OPPONENT_CARLOS] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_RANGER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_POKEMON_RANGER_M,
+ .trainerName = _("CARLOS"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Carlos
+ },
+
+ [OPPONENT_SEBASTIAN] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_RANGER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_POKEMON_RANGER_M,
+ .trainerName = _("SEBASTIAN"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 1,
+ .party = gTrainerParty_Sebastian
+ },
+
+ [OPPONENT_JACKSON_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_RANGER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_POKEMON_RANGER_M,
+ .trainerName = _("JACKSON"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0xb,
+ .partySize = 1,
+ .party = gTrainerParty_Jackson2
+ },
+
+ [OPPONENT_JACKSON_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_RANGER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_POKEMON_RANGER_M,
+ .trainerName = _("JACKSON"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 1,
+ .party = gTrainerParty_Jackson3
+ },
+
+ [OPPONENT_JACKSON_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_RANGER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_POKEMON_RANGER_M,
+ .trainerName = _("JACKSON"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0xb,
+ .partySize = 1,
+ .party = gTrainerParty_Jackson4
+ },
+
+ [OPPONENT_JACKSON_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_RANGER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_POKEMON_RANGER_M,
+ .trainerName = _("JACKSON"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 2,
+ .party = gTrainerParty_Jackson5
+ },
+
+ [OPPONENT_CATHERINE_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_RANGER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_POKEMON_RANGER_F,
+ .trainerName = _("CATHERINE"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0xb,
+ .partySize = 2,
+ .party = gTrainerParty_Catherine1
+ },
+
+ [OPPONENT_JENNA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_RANGER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_POKEMON_RANGER_F,
+ .trainerName = _("JENNA"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0xb,
+ .partySize = 3,
+ .party = gTrainerParty_Jenna
+ },
+
+ [OPPONENT_SOPHIA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_RANGER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_POKEMON_RANGER_F,
+ .trainerName = _("SOPHIA"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 2,
+ .party = gTrainerParty_Sophia
+ },
+
+ [OPPONENT_CATHERINE_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_RANGER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_POKEMON_RANGER_F,
+ .trainerName = _("CATHERINE"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0xb,
+ .partySize = 2,
+ .party = gTrainerParty_Catherine2
+ },
+
+ [OPPONENT_CATHERINE_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_RANGER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_POKEMON_RANGER_F,
+ .trainerName = _("CATHERINE"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 2,
+ .party = gTrainerParty_Catherine3
+ },
+
+ [OPPONENT_CATHERINE_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_RANGER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_POKEMON_RANGER_F,
+ .trainerName = _("CATHERINE"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0xb,
+ .partySize = 2,
+ .party = gTrainerParty_Catherine4
+ },
+
+ [OPPONENT_CATHERINE_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_RANGER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_POKEMON_RANGER_F,
+ .trainerName = _("CATHERINE"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 2,
+ .party = gTrainerParty_Catherine5
+ },
+
+ [OPPONENT_MAXIE_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_MAGMA_LEADER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAXIE,
+ .trainerName = _("MAXIE"),
+ .items = {ITEM_SUPER_POTION, ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 2,
+ .party = gTrainerParty_Maxie1
+ },
+
+ [OPPONENT_GRUNT_28] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_MAGMA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M,
+ .trainerName = _("GRUNT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Grunt28
+ },
+
+ [OPPONENT_GRUNT_29] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_MAGMA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M,
+ .trainerName = _("GRUNT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 4,
+ .party = gTrainerParty_Grunt29
+ },
+
+ [OPPONENT_GRUNT_30] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_MAGMA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M,
+ .trainerName = _("GRUNT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Grunt30
+ },
+
+ [OPPONENT_GRUNT_31] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_MAGMA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M,
+ .trainerName = _("GRUNT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Grunt31
+ },
+
+ [OPPONENT_GRUNT_32] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_MAGMA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M,
+ .trainerName = _("GRUNT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Grunt32
+ },
+
+ [OPPONENT_GRUNT_33] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_MAGMA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M,
+ .trainerName = _("GRUNT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Grunt33
+ },
+
+ [OPPONENT_GRUNT_34] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_MAGMA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M,
+ .trainerName = _("GRUNT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Grunt34
+ },
+
+ [OPPONENT_GRUNT_35] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_MAGMA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M,
+ .trainerName = _("GRUNT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Grunt35
+ },
+
+ [OPPONENT_GRUNT_36] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_MAGMA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M,
+ .trainerName = _("GRUNT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Grunt36
+ },
+
+ [OPPONENT_GRUNT_37] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_MAGMA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M,
+ .trainerName = _("GRUNT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Grunt37
+ },
+
+ [OPPONENT_GRUNT_38] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_MAGMA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M,
+ .trainerName = _("GRUNT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Grunt38
+ },
+
+ [OPPONENT_GRUNT_39] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_MAGMA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M,
+ .trainerName = _("GRUNT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Grunt39
+ },
+
+ [OPPONENT_GRUNT_40] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_MAGMA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M,
+ .trainerName = _("GRUNT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Grunt40
+ },
+
+ [OPPONENT_GRUNT_41] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_MAGMA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M,
+ .trainerName = _("GRUNT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Grunt41
+ },
+
+ [OPPONENT_GRUNT_42] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_MAGMA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M,
+ .trainerName = _("GRUNT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Grunt42
+ },
+
+ [OPPONENT_GRUNT_43] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_MAGMA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M,
+ .trainerName = _("GRUNT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Grunt43
+ },
+
+ [OPPONENT_GRUNT_44] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_MAGMA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M,
+ .trainerName = _("GRUNT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Grunt44
+ },
+
+ [OPPONENT_GRUNT_45] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_MAGMA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M,
+ .trainerName = _("GRUNT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Grunt45
+ },
+
+ [OPPONENT_GRUNT_46] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_MAGMA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M,
+ .trainerName = _("GRUNT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Grunt46
+ },
+
+ [OPPONENT_GRUNT_47] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_MAGMA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M,
+ .trainerName = _("GRUNT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Grunt47
+ },
+
+ [OPPONENT_GRUNT_48] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_MAGMA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M,
+ .trainerName = _("GRUNT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Grunt48
+ },
+
+ [OPPONENT_GRUNT_49] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_MAGMA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M,
+ .trainerName = _("GRUNT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Grunt49
+ },
+
+ [OPPONENT_GRUNT_50] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_MAGMA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M,
+ .trainerName = _("GRUNT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Grunt50
+ },
+
+ [OPPONENT_GRUNT_51] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_MAGMA,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M,
+ .trainerName = _("GRUNT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Grunt51
+ },
+
+ [OPPONENT_GRUNT_52] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_MAGMA,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_GRUNT_F,
+ .trainerName = _("GRUNT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Grunt52
+ },
+
+ [OPPONENT_GRUNT_53] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_MAGMA,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_GRUNT_F,
+ .trainerName = _("GRUNT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Grunt53
+ },
+
+ [OPPONENT_GRUNT_54] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TEAM_MAGMA,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_GRUNT_F,
+ .trainerName = _("GRUNT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Grunt54
+ },
+
+ [OPPONENT_ANONYMOUS_14] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_MAGMA_ADMIN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_BEAUTY,
+ .trainerName = _(""),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 2,
+ .party = gTrainerParty_Anonymous14
+ },
+
+ [OPPONENT_ANONYMOUS_15] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_MAGMA_ADMIN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_ADMIN_M,
+ .trainerName = _(""),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 2,
+ .party = gTrainerParty_Anonymous15
+ },
+
+ [OPPONENT_TABITHA_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_MAGMA_ADMIN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_ADMIN_M,
+ .trainerName = _("TABITHA"),
+ .items = {ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0xb,
+ .partySize = 3,
+ .party = gTrainerParty_Tabitha1
+ },
+
+ [OPPONENT_TABITHA_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_MAGMA_ADMIN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_ADMIN_M,
+ .trainerName = _("TABITHA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Tabitha2
+ },
+
+ [OPPONENT_ANONYMOUS_16] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_MAGMA_ADMIN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_ADMIN_M,
+ .trainerName = _(""),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0xb,
+ .partySize = 2,
+ .party = gTrainerParty_Anonymous16
+ },
+
+ [OPPONENT_COURTNEY_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_MAGMA_ADMIN,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_ADMIN_F,
+ .trainerName = _("COURTNEY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 2,
+ .party = gTrainerParty_Courtney1
+ },
+
+ [OPPONENT_COURTNEY_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_MAGMA_ADMIN,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAGMA_ADMIN_F,
+ .trainerName = _("COURTNEY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0xb,
+ .partySize = 2,
+ .party = gTrainerParty_Courtney2
+ },
+
+ [OPPONENT_MAXIE_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_MAGMA_LEADER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAXIE,
+ .trainerName = _("MAXIE"),
+ .items = {ITEM_SUPER_POTION, ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Maxie2
+ },
+
+ [OPPONENT_MAXIE_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_MAGMA_LEADER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA,
+ .trainerPic = TRAINER_PIC_MAXIE,
+ .trainerName = _("MAXIE"),
+ .items = {ITEM_SUPER_POTION, ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Maxie3
+ },
+
+ [OPPONENT_TIANA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_LASS,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_LASS,
+ .trainerName = _("TIANA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Tiana
+ },
+
+ [OPPONENT_HALEY_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_LASS,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_LASS,
+ .trainerName = _("HALEY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Haley1
+ },
+
+ [OPPONENT_JANICE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_LASS,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_LASS,
+ .trainerName = _("JANICE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Janice
+ },
+
+ [OPPONENT_VIVI] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_WINSTRATE,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_LASS,
+ .trainerName = _("VIVI"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Vivi
+ },
+
+ [OPPONENT_HALEY_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_LASS,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_LASS,
+ .trainerName = _("HALEY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Haley2
+ },
+
+ [OPPONENT_HALEY_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_LASS,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_LASS,
+ .trainerName = _("HALEY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Haley3
+ },
+
+ [OPPONENT_HALEY_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_LASS,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_LASS,
+ .trainerName = _("HALEY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Haley4
+ },
+
+ [OPPONENT_HALEY_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_LASS,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_LASS,
+ .trainerName = _("HALEY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Haley5
+ },
+
+ [OPPONENT_SALLY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_LASS,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_LASS,
+ .trainerName = _("SALLY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Sally
+ },
+
+ [OPPONENT_ROBIN] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_LASS,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_LASS,
+ .trainerName = _("ROBIN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Robin
+ },
+
+ [OPPONENT_ANDREA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_LASS,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_LASS,
+ .trainerName = _("ANDREA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Andrea
+ },
+
+ [OPPONENT_CRISSY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_LASS,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_LASS,
+ .trainerName = _("CRISSY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Crissy
+ },
+
+ [OPPONENT_RICK] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BUG_CATCHER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_BUG_CATCHER,
+ .trainerName = _("RICK"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Rick
+ },
+
+ [OPPONENT_LYLE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BUG_CATCHER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_BUG_CATCHER,
+ .trainerName = _("LYLE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 6,
+ .party = gTrainerParty_Lyle
+ },
+
+ [OPPONENT_JOSE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BUG_CATCHER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_BUG_CATCHER,
+ .trainerName = _("JOSE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Jose
+ },
+
+ [OPPONENT_DOUG] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BUG_CATCHER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_BUG_CATCHER,
+ .trainerName = _("DOUG"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Doug
+ },
+
+ [OPPONENT_GREG] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BUG_CATCHER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_BUG_CATCHER,
+ .trainerName = _("GREG"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Greg
+ },
+
+ [OPPONENT_KENT] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BUG_CATCHER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_BUG_CATCHER,
+ .trainerName = _("KENT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Kent
+ },
+
+ [OPPONENT_JAMES_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BUG_CATCHER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_BUG_CATCHER,
+ .trainerName = _("JAMES"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_James1
+ },
+
+ [OPPONENT_JAMES_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BUG_CATCHER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_BUG_CATCHER,
+ .trainerName = _("JAMES"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_James2
+ },
+
+ [OPPONENT_JAMES_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BUG_CATCHER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_BUG_CATCHER,
+ .trainerName = _("JAMES"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_James3
+ },
+
+ [OPPONENT_JAMES_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BUG_CATCHER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_BUG_CATCHER,
+ .trainerName = _("JAMES"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_James4
+ },
+
+ [OPPONENT_JAMES_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BUG_CATCHER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_BUG_CATCHER,
+ .trainerName = _("JAMES"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 4,
+ .party = gTrainerParty_James5
+ },
+
+ [OPPONENT_BRICE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_HIKER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_HIKER,
+ .trainerName = _("BRICE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Brice
+ },
+
+ [OPPONENT_TRENT_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_HIKER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_HIKER,
+ .trainerName = _("TRENT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 4,
+ .party = gTrainerParty_Trent1
+ },
+
+ [OPPONENT_LENNY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_HIKER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_HIKER,
+ .trainerName = _("LENNY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Lenny
+ },
+
+ [OPPONENT_LUCAS_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_HIKER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_HIKER,
+ .trainerName = _("LUCAS"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Lucas1
+ },
+
+ [OPPONENT_ALAN] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_HIKER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_HIKER,
+ .trainerName = _("ALAN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Alan
+ },
+
+ [OPPONENT_CLARK] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_HIKER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_HIKER,
+ .trainerName = _("CLARK"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Clark
+ },
+
+ [OPPONENT_ERIC] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_HIKER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_HIKER,
+ .trainerName = _("ERIC"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Eric
+ },
+
+ [OPPONENT_LUCAS_2] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_HIKER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_HIKER,
+ .trainerName = _("LUCAS"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Lucas2
+ },
+
+ [OPPONENT_MIKE_1] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_HIKER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_HIKER,
+ .trainerName = _("MIKE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Mike1
+ },
+
+ [OPPONENT_MIKE_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_HIKER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_HIKER,
+ .trainerName = _("MIKE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Mike2
+ },
+
+ [OPPONENT_TRENT_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_HIKER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_HIKER,
+ .trainerName = _("TRENT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 4,
+ .party = gTrainerParty_Trent2
+ },
+
+ [OPPONENT_TRENT_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_HIKER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_HIKER,
+ .trainerName = _("TRENT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 4,
+ .party = gTrainerParty_Trent3
+ },
+
+ [OPPONENT_TRENT_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_HIKER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_HIKER,
+ .trainerName = _("TRENT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 4,
+ .party = gTrainerParty_Trent4
+ },
+
+ [OPPONENT_TRENT_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_HIKER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_HIKER,
+ .trainerName = _("TRENT"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 4,
+ .party = gTrainerParty_Trent5
+ },
+
+ [OPPONENT_DEZ_AND_LUKE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_YOUNG_COUPLE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_YOUNG_COUPLE,
+ .trainerName = _("DEZ & LUKE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_DezAndLuke
+ },
+
+ [OPPONENT_LEA_AND_JED] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_YOUNG_COUPLE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_YOUNG_COUPLE,
+ .trainerName = _("LEA & JED"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_LeaAndJed
+ },
+
+ [OPPONENT_LOIS_AND_HAL_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_YOUNG_COUPLE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_YOUNG_COUPLE,
+ .trainerName = _("LOIS & HAL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_LoisAndHal1
+ },
+
+ [OPPONENT_LOIS_AND_HAL_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_YOUNG_COUPLE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_YOUNG_COUPLE,
+ .trainerName = _("LOIS & HAL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_LoisAndHal2
+ },
+
+ [OPPONENT_LOIS_AND_HAL_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_YOUNG_COUPLE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_YOUNG_COUPLE,
+ .trainerName = _("LOIS & HAL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_LoisAndHal3
+ },
+
+ [OPPONENT_LOIS_AND_HAL_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_YOUNG_COUPLE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_YOUNG_COUPLE,
+ .trainerName = _("LOIS & HAL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_LoisAndHal4
+ },
+
+ [OPPONENT_LOIS_AND_HAL_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_YOUNG_COUPLE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_YOUNG_COUPLE,
+ .trainerName = _("LOIS & HAL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_LoisAndHal5
+ },
+
+ [OPPONENT_JOHANNA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BEAUTY,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_BEAUTY,
+ .trainerName = _("JOHANNA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Johanna
+ },
+
+ [OPPONENT_ZANE] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerName = _("ZANE"),
+ .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 1,
+ .party = gTrainerParty_Zane
+ },
+
+ [OPPONENT_VIVIAN] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_BATTLE_GIRL,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_BATTLE_GIRL,
+ .trainerName = _("VIVIAN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Vivian
+ },
+
+ [OPPONENT_SADIE] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_BATTLE_GIRL,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_BATTLE_GIRL,
+ .trainerName = _("SADIE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Sadie
+ },
+
+ [OPPONENT_HIDEO_2] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_NINJA_BOY,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_NINJA_BOY,
+ .trainerName = _("HIDEO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x3,
+ .partySize = 2,
+ .party = gTrainerParty_Hideo2
+ },
+
+ [OPPONENT_KEIGO] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_NINJA_BOY,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_NINJA_BOY,
+ .trainerName = _("KEIGO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x3,
+ .partySize = 2,
+ .party = gTrainerParty_Keigo
+ },
+
+ [OPPONENT_TSUNAO] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_NINJA_BOY,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS,
+ .trainerPic = TRAINER_PIC_NINJA_BOY,
+ .trainerName = _("TSUNAO"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x3,
+ .partySize = 3,
+ .party = gTrainerParty_Tsunao
+ },
+
+ [OPPONENT_TERRELL] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_CAMPER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_CAMPER,
+ .trainerName = _("TERRELL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Terrell
+ },
+
+ [OPPONENT_KYLEE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_PICNICKER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_PICNICKER,
+ .trainerName = _("KYLEE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 1,
+ .party = gTrainerParty_Kylee
+ },
+
+ [OPPONENT_WALLY_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_TRAINER_3,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_WALLY,
+ .trainerName = _("WALLY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 1,
+ .party = gTrainerParty_Wally2
+ },
+
+ [OPPONENT_WALLY_3] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_POKEMON_TRAINER_3,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_WALLY,
+ .trainerName = _("WALLY"),
+ .items = {ITEM_SUPER_POTION, ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 5,
+ .party = gTrainerParty_Wally3
+ },
+
+ [OPPONENT_WALLY_4] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_POKEMON_TRAINER_3,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_WALLY,
+ .trainerName = _("WALLY"),
+ .items = {ITEM_SUPER_POTION, ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 5,
+ .party = gTrainerParty_Wally4
+ },
+
+ [OPPONENT_WALLY_5] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_POKEMON_TRAINER_3,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_WALLY,
+ .trainerName = _("WALLY"),
+ .items = {ITEM_SUPER_POTION, ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 5,
+ .party = gTrainerParty_Wally5
+ },
+
+ [OPPONENT_WALLY_6] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_POKEMON_TRAINER_3,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_WALLY,
+ .trainerName = _("WALLY"),
+ .items = {ITEM_SUPER_POTION, ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 5,
+ .party = gTrainerParty_Wally6
+ },
+
+ [OPPONENT_BRENDAN_10] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_TRAINER_3,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_BRENDAN,
+ .trainerName = _("BRENDAN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 4,
+ .party = gTrainerParty_Brendan10
+ },
+
+ [OPPONENT_BRENDAN_11] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_TRAINER_3,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_BRENDAN,
+ .trainerName = _("BRENDAN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 4,
+ .party = gTrainerParty_Brendan11
+ },
+
+ [OPPONENT_BRENDAN_12] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_TRAINER_3,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
+ .trainerPic = TRAINER_PIC_BRENDAN,
+ .trainerName = _("BRENDAN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 4,
+ .party = gTrainerParty_Brendan12
+ },
+
+ [OPPONENT_MAY_10] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_TRAINER_3,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_MAY,
+ .trainerName = _("MAY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 4,
+ .party = gTrainerParty_May10
+ },
+
+ [OPPONENT_MAY_11] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_TRAINER_3,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_MAY,
+ .trainerName = _("MAY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 4,
+ .party = gTrainerParty_May11
+ },
+
+ [OPPONENT_MAY_12] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_POKEMON_TRAINER_3,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE,
+ .trainerPic = TRAINER_PIC_MAY,
+ .trainerName = _("MAY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 4,
+ .party = gTrainerParty_May12
+ },
+
+ [OPPONENT_JONAH] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_FISHERMAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_FISHERMAN,
+ .trainerName = _("JONAH"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 4,
+ .party = gTrainerParty_Jonah
+ },
+
+ [OPPONENT_HENRY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_FISHERMAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_FISHERMAN,
+ .trainerName = _("HENRY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Henry
+ },
+
+ [OPPONENT_ROGER] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_FISHERMAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_FISHERMAN,
+ .trainerName = _("ROGER"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 4,
+ .party = gTrainerParty_Roger
+ },
+
+ [OPPONENT_ALEXA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerName = _("ALEXA"),
+ .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 2,
+ .party = gTrainerParty_Alexa
+ },
+
+ [OPPONENT_RUBEN] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_COOL_TRAINER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerName = _("RUBEN"),
+ .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x7,
+ .partySize = 3,
+ .party = gTrainerParty_Ruben
+ },
+
+ [OPPONENT_KOJI] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BLACK_BELT,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_BLACK_BELT,
+ .trainerName = _("KOJI"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Koji
+ },
+
+ [OPPONENT_WAYNE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_FISHERMAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_FISHERMAN,
+ .trainerName = _("WAYNE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 4,
+ .party = gTrainerParty_Wayne
+ },
+
+ [OPPONENT_BYRON] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_BIRD_KEEPER,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
+ .trainerPic = TRAINER_PIC_BIRD_KEEPER,
+ .trainerName = _("BYRON"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_Byron
+ },
+
+ [OPPONENT_REED] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_M,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_M,
+ .trainerName = _("REED"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 4,
+ .party = gTrainerParty_Reed
+ },
+
+ [OPPONENT_TISHA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SWIMMER_F,
+ .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SWIMMER_F,
+ .trainerName = _("TISHA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 3,
+ .party = gTrainerParty_Tisha
+ },
+
+ [OPPONENT_TORI_AND_TIA] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_TWINS,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_TWINS,
+ .trainerName = _("TORI & TIA"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_ToriAndTia
+ },
+
+ [OPPONENT_KIM_AND_IRIS] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_SR_AND_JR,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_SR_AND_JR,
+ .trainerName = _("KIM & IRIS"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_KimAndIris
+ },
+
+ [OPPONENT_TYRA_AND_IVY] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_SR_AND_JR,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS,
+ .trainerPic = TRAINER_PIC_SR_AND_JR,
+ .trainerName = _("TYRA & IVY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_TyraAndIvy
+ },
+
+ [OPPONENT_MEL_AND_PAUL] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_YOUNG_COUPLE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL,
+ .trainerPic = TRAINER_PIC_YOUNG_COUPLE,
+ .trainerName = _("MEL & PAUL"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_MelAndPaul
+ },
+
+ [OPPONENT_JOHN_AND_JAY_1] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_OLD_COUPLE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_OLD_COUPLE,
+ .trainerName = _("JOHN & JAY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x7,
+ .partySize = 2,
+ .party = gTrainerParty_JohnAndJay1
+ },
+
+ [OPPONENT_JOHN_AND_JAY_2] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_OLD_COUPLE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_OLD_COUPLE,
+ .trainerName = _("JOHN & JAY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x7,
+ .partySize = 2,
+ .party = gTrainerParty_JohnAndJay2
+ },
+
+ [OPPONENT_JOHN_AND_JAY_3] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_OLD_COUPLE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_OLD_COUPLE,
+ .trainerName = _("JOHN & JAY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x7,
+ .partySize = 2,
+ .party = gTrainerParty_JohnAndJay3
+ },
+
+ [OPPONENT_JOHN_AND_JAY_4] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_OLD_COUPLE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_OLD_COUPLE,
+ .trainerName = _("JOHN & JAY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0xb,
+ .partySize = 2,
+ .party = gTrainerParty_JohnAndJay4
+ },
+
+ [OPPONENT_JOHN_AND_JAY_5] =
+ {
+ .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
+ .trainerClass = TRAINER_CLASS_OLD_COUPLE,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE,
+ .trainerPic = TRAINER_PIC_OLD_COUPLE,
+ .trainerName = _("JOHN & JAY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x7,
+ .partySize = 2,
+ .party = gTrainerParty_JohnAndJay5
+ },
+
+ [OPPONENT_RELI_AND_IAN] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SIS_AND_BRO,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SIS_AND_BRO,
+ .trainerName = _("RELI & IAN"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_ReliAndIan
+ },
+
+ [OPPONENT_RITA_AND_SAM_1] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SIS_AND_BRO,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SIS_AND_BRO,
+ .trainerName = _("RITA & SAM"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_RitaAndSam1
+ },
+
+ [OPPONENT_RITA_AND_SAM_2] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SIS_AND_BRO,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SIS_AND_BRO,
+ .trainerName = _("RITA & SAM"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_RitaAndSam2
+ },
+
+ [OPPONENT_RITA_AND_SAM_3] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SIS_AND_BRO,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SIS_AND_BRO,
+ .trainerName = _("RITA & SAM"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_RitaAndSam3
+ },
+
+ [OPPONENT_RITA_AND_SAM_4] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SIS_AND_BRO,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SIS_AND_BRO,
+ .trainerName = _("RITA & SAM"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_RitaAndSam4
+ },
+
+ [OPPONENT_RITA_AND_SAM_5] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SIS_AND_BRO,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SIS_AND_BRO,
+ .trainerName = _("RITA & SAM"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_RitaAndSam5
+ },
+
+ [OPPONENT_LISA_AND_RAY] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_SIS_AND_BRO,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER,
+ .trainerPic = TRAINER_PIC_SIS_AND_BRO,
+ .trainerName = _("LISA & RAY"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = TRUE,
+ .aiFlags = 0x1,
+ .partySize = 2,
+ .party = gTrainerParty_LisaAndRay
+ },
+
+ [OPPONENT_EUGENE] =
+ {
+ .partyFlags = 0,
+ .trainerClass = TRAINER_CLASS_FISHERMAN,
+ .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER,
+ .trainerPic = TRAINER_PIC_FISHERMAN,
+ .trainerName = _("EUGENE"),
+ .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
+ .doubleBattle = FALSE,
+ .aiFlags = 0x1,
+ .partySize = 4,
+ .party = gTrainerParty_Eugene
+ },
+};
diff --git a/src/daycare.c b/src/daycare.c
index e26db531f..795c42a96 100644
--- a/src/daycare.c
+++ b/src/daycare.c
@@ -67,7 +67,7 @@ u8 CountPokemonInDaycare(struct DayCare *daycare)
u8 i, count;
count = 0;
- for (i = 0; i < 2; i++)
+ for (i = 0; i < DAYCARE_MON_COUNT; i++)
{
if (GetBoxMonData(&daycare->mons[i], MON_DATA_SPECIES) != 0)
count++;
@@ -81,7 +81,7 @@ void InitDaycareMailRecordMixing(struct BoxPokemon * daycareMons, struct RecordM
u8 i;
u8 numDaycareMons = 0;
- for (i = 0; i < 2; i++)
+ for (i = 0; i < DAYCARE_MON_COUNT; i++)
{
if (GetBoxMonData(&daycareMons[i], MON_DATA_SPECIES) != SPECIES_NONE)
{
@@ -108,7 +108,7 @@ static s8 Daycare_FindEmptySpot(struct BoxPokemon * daycareMons)
{
u8 i;
- for (i = 0; i < 2; i++)
+ for (i = 0; i < DAYCARE_MON_COUNT; i++)
{
if (GetBoxMonData(&daycareMons[i], MON_DATA_SPECIES) == 0)
return i;
@@ -466,12 +466,9 @@ static void InheritIVs(struct Pokemon *egg, struct DayCare *daycare)
}
}
-#ifdef NONMATCHING
-static
-#endif
// Counts the number of egg moves a pokemon learns and stores the moves in
// the given array.
-u8 GetEggMoves(struct Pokemon *pokemon, u16 *eggMoves)
+static u8 GetEggMoves(struct Pokemon *pokemon, u16 *eggMoves)
{
u16 eggMoveIdx;
u16 numEggMoves;
@@ -505,11 +502,10 @@ u8 GetEggMoves(struct Pokemon *pokemon, u16 *eggMoves)
return numEggMoves;
}
-#ifdef NONMATCHING
void BuildEggMoveset(struct Pokemon *egg, struct BoxPokemon *father, struct BoxPokemon *mother)
{
u16 numSharedParentMoves;
- u8 numLevelUpMoves;
+ u32 numLevelUpMoves;
u16 numEggMoves;
u16 i, j;
@@ -549,8 +545,11 @@ void BuildEggMoveset(struct Pokemon *egg, struct BoxPokemon *father, struct BoxP
}
}
else
+ {
break;
+ }
}
+
for (i = 0; i < 4; i++)
{
if (gHatchedEggFatherMoves[i] != MOVE_NONE)
@@ -565,10 +564,9 @@ void BuildEggMoveset(struct Pokemon *egg, struct BoxPokemon *father, struct BoxP
}
}
}
- for (i = 0; i < 4; i++)
+
+ for (i = 0; i < 4 && gHatchedEggFatherMoves[i] != MOVE_NONE; i++)
{
- if (gHatchedEggFatherMoves[i] == MOVE_NONE)
- break;
for (j = 0; j < 4; j++)
{
if (gHatchedEggFatherMoves[i] == gHatchedEggMotherMoves[j] && gHatchedEggFatherMoves[i] != MOVE_NONE)
@@ -576,10 +574,8 @@ void BuildEggMoveset(struct Pokemon *egg, struct BoxPokemon *father, struct BoxP
}
}
- for (i = 0; i < 4; i++)
+ for (i = 0; i < 4 && gHatchedEggFinalMoves[i] != MOVE_NONE; i++)
{
- if (gHatchedEggFinalMoves[i] == MOVE_NONE)
- break;
for (j = 0; j < numLevelUpMoves; j++)
{
if (gHatchedEggLevelUpMoves[j] != MOVE_NONE && gHatchedEggFinalMoves[i] == gHatchedEggLevelUpMoves[j])
@@ -591,346 +587,6 @@ void BuildEggMoveset(struct Pokemon *egg, struct BoxPokemon *father, struct BoxP
}
}
}
-#else
-__attribute__((naked))
-void BuildEggMoveset(struct Pokemon *egg, struct BoxPokemon *father, struct BoxPokemon *mother)
-{
- asm_unified("\tpush {r4-r7,lr}\n"
- "\tmov r7, r10\n"
- "\tmov r6, r9\n"
- "\tmov r5, r8\n"
- "\tpush {r5-r7}\n"
- "\tsub sp, 0xC\n"
- "\tadds r7, r0, 0\n"
- "\tmov r10, r1\n"
- "\tmov r9, r2\n"
- "\tmovs r0, 0\n"
- "\tstr r0, [sp]\n"
- "\tmovs r6, 0\n"
- "\tldr r5, _08041CC8 @ =gHatchedEggMotherMoves\n"
- "\tmovs r2, 0\n"
- "\tldr r4, _08041CCC @ =gHatchedEggFatherMoves\n"
- "\tldr r3, _08041CD0 @ =gHatchedEggFinalMoves\n"
- "_08041BE4:\n"
- "\tlsls r1, r6, 1\n"
- "\tadds r0, r1, r5\n"
- "\tstrh r2, [r0]\n"
- "\tadds r0, r1, r4\n"
- "\tstrh r2, [r0]\n"
- "\tadds r1, r3\n"
- "\tstrh r2, [r1]\n"
- "\tadds r0, r6, 0x1\n"
- "\tlsls r0, 16\n"
- "\tlsrs r6, r0, 16\n"
- "\tcmp r6, 0x3\n"
- "\tbls _08041BE4\n"
- "\tmovs r6, 0\n"
- "\tldr r2, _08041CD4 @ =gHatchedEggEggMoves\n"
- "\tmovs r1, 0\n"
- "_08041C02:\n"
- "\tlsls r0, r6, 1\n"
- "\tadds r0, r2\n"
- "\tstrh r1, [r0]\n"
- "\tadds r0, r6, 0x1\n"
- "\tlsls r0, 16\n"
- "\tlsrs r6, r0, 16\n"
- "\tcmp r6, 0x9\n"
- "\tbls _08041C02\n"
- "\tmovs r6, 0\n"
- "\tldr r2, _08041CD8 @ =gHatchedEggLevelUpMoves\n"
- "\tmovs r1, 0\n"
- "_08041C18:\n"
- "\tlsls r0, r6, 1\n"
- "\tadds r0, r2\n"
- "\tstrh r1, [r0]\n"
- "\tadds r0, r6, 0x1\n"
- "\tlsls r0, 16\n"
- "\tlsrs r6, r0, 16\n"
- "\tcmp r6, 0x31\n"
- "\tbls _08041C18\n"
- "\tadds r0, r7, 0\n"
- "\tmovs r1, 0xB\n"
- "\tbl GetMonData\n"
- "\tlsls r0, 16\n"
- "\tlsrs r0, 16\n"
- "\tldr r1, _08041CD8 @ =gHatchedEggLevelUpMoves\n"
- "\tbl GetLevelUpMovesBySpecies\n"
- "\tlsls r0, 24\n"
- "\tlsrs r0, 24\n"
- "\tstr r0, [sp, 0x4]\n"
- "\tmovs r6, 0\n"
- "\tldr r1, _08041CCC @ =gHatchedEggFatherMoves\n"
- "\tmov r8, r1\n"
- "_08041C46:\n"
- "\tadds r5, r6, 0\n"
- "\tadds r5, 0xD\n"
- "\tmov r0, r10\n"
- "\tadds r1, r5, 0\n"
- "\tbl GetBoxMonData\n"
- "\tlsls r4, r6, 1\n"
- "\tmov r2, r8\n"
- "\tadds r1, r4, r2\n"
- "\tstrh r0, [r1]\n"
- "\tmov r0, r9\n"
- "\tadds r1, r5, 0\n"
- "\tbl GetBoxMonData\n"
- "\tldr r1, _08041CC8 @ =gHatchedEggMotherMoves\n"
- "\tadds r4, r1\n"
- "\tstrh r0, [r4]\n"
- "\tadds r0, r6, 0x1\n"
- "\tlsls r0, 16\n"
- "\tlsrs r6, r0, 16\n"
- "\tcmp r6, 0x3\n"
- "\tbls _08041C46\n"
- "\tldr r1, _08041CD4 @ =gHatchedEggEggMoves\n"
- "\tadds r0, r7, 0\n"
- "\tbl GetEggMoves\n"
- "\tlsls r0, 24\n"
- "\tlsrs r0, 24\n"
- "\tmov r8, r0\n"
- "\tmovs r6, 0\n"
- "_08041C82:\n"
- "\tldr r0, _08041CCC @ =gHatchedEggFatherMoves\n"
- "\tlsls r1, r6, 1\n"
- "\tadds r2, r1, r0\n"
- "\tldrh r1, [r2]\n"
- "\tmov r9, r0\n"
- "\tcmp r1, 0\n"
- "\tbeq _08041CF8\n"
- "\tmovs r5, 0\n"
- "\tcmp r5, r8\n"
- "\tbcs _08041CEA\n"
- "\tadds r4, r2, 0\n"
- "\tldr r2, _08041CDC @ =0x0000ffff\n"
- "_08041C9A:\n"
- "\tldr r0, _08041CD4 @ =gHatchedEggEggMoves\n"
- "\tlsls r1, r5, 1\n"
- "\tadds r1, r0\n"
- "\tldrh r0, [r4]\n"
- "\tldrh r1, [r1]\n"
- "\tcmp r0, r1\n"
- "\tbne _08041CE0\n"
- "\tadds r1, r0, 0\n"
- "\tadds r0, r7, 0\n"
- "\tstr r2, [sp, 0x8]\n"
- "\tbl GiveMoveToMon\n"
- "\tlsls r0, 16\n"
- "\tlsrs r0, 16\n"
- "\tldr r2, [sp, 0x8]\n"
- "\tcmp r0, r2\n"
- "\tbne _08041CEA\n"
- "\tldrh r1, [r4]\n"
- "\tadds r0, r7, 0\n"
- "\tbl DeleteFirstMoveAndGiveMoveToMon\n"
- "\tb _08041CEA\n"
- "\t.align 2, 0\n"
- "_08041CC8: .4byte gHatchedEggMotherMoves\n"
- "_08041CCC: .4byte gHatchedEggFatherMoves\n"
- "_08041CD0: .4byte gHatchedEggFinalMoves\n"
- "_08041CD4: .4byte gHatchedEggEggMoves\n"
- "_08041CD8: .4byte gHatchedEggLevelUpMoves\n"
- "_08041CDC: .4byte 0x0000ffff\n"
- "_08041CE0:\n"
- "\tadds r0, r5, 0x1\n"
- "\tlsls r0, 16\n"
- "\tlsrs r5, r0, 16\n"
- "\tcmp r5, r8\n"
- "\tbcc _08041C9A\n"
- "_08041CEA:\n"
- "\tadds r0, r6, 0x1\n"
- "\tlsls r0, 16\n"
- "\tlsrs r6, r0, 16\n"
- "\tldr r3, _08041E14 @ =gHatchedEggFatherMoves\n"
- "\tmov r9, r3\n"
- "\tcmp r6, 0x3\n"
- "\tbls _08041C82\n"
- "_08041CF8:\n"
- "\tmovs r6, 0\n"
- "_08041CFA:\n"
- "\tlsls r0, r6, 1\n"
- "\tmov r2, r9\n"
- "\tadds r1, r0, r2\n"
- "\tldrh r1, [r1]\n"
- "\tadds r2, r0, 0\n"
- "\tadds r6, 0x1\n"
- "\tmov r8, r6\n"
- "\tcmp r1, 0\n"
- "\tbeq _08041D5C\n"
- "\tmovs r5, 0\n"
- "\tldr r0, _08041E14 @ =gHatchedEggFatherMoves\n"
- "\tadds r4, r2, r0\n"
- "\tldr r6, _08041E18 @ =0x0000ffff\n"
- "\tmov r9, r0\n"
- "_08041D16:\n"
- "\tldr r3, _08041E1C @ =0x00000121\n"
- "\tadds r0, r5, r3\n"
- "\tlsls r0, 16\n"
- "\tlsrs r0, 16\n"
- "\tbl ItemIdToBattleMoveId\n"
- "\tldrh r1, [r4]\n"
- "\tlsls r0, 16\n"
- "\tlsrs r0, 16\n"
- "\tcmp r1, r0\n"
- "\tbne _08041D52\n"
- "\tlsls r1, r5, 24\n"
- "\tlsrs r1, 24\n"
- "\tadds r0, r7, 0\n"
- "\tbl CanMonLearnTMHM\n"
- "\tcmp r0, 0\n"
- "\tbeq _08041D52\n"
- "\tldrh r1, [r4]\n"
- "\tadds r0, r7, 0\n"
- "\tbl GiveMoveToMon\n"
- "\tlsls r0, 16\n"
- "\tlsrs r0, 16\n"
- "\tcmp r0, r6\n"
- "\tbne _08041D52\n"
- "\tldrh r1, [r4]\n"
- "\tadds r0, r7, 0\n"
- "\tbl DeleteFirstMoveAndGiveMoveToMon\n"
- "_08041D52:\n"
- "\tadds r0, r5, 0x1\n"
- "\tlsls r0, 16\n"
- "\tlsrs r5, r0, 16\n"
- "\tcmp r5, 0x39\n"
- "\tbls _08041D16\n"
- "_08041D5C:\n"
- "\tmov r1, r8\n"
- "\tlsls r0, r1, 16\n"
- "\tlsrs r6, r0, 16\n"
- "\tcmp r6, 0x3\n"
- "\tbls _08041CFA\n"
- "\tmovs r6, 0\n"
- "\tmov r2, r9\n"
- "\tldrh r0, [r2]\n"
- "\tldr r3, _08041E20 @ =gHatchedEggFinalMoves\n"
- "\tmov r10, r3\n"
- "\tcmp r0, 0\n"
- "\tbeq _08041DC6\n"
- "\tmov r4, r9\n"
- "\tldr r0, _08041E24 @ =gHatchedEggMotherMoves\n"
- "\tmov r9, r0\n"
- "\tmov r12, r10\n"
- "_08041D7C:\n"
- "\tmovs r5, 0\n"
- "\tlsls r2, r6, 1\n"
- "\tadds r6, 0x1\n"
- "\tmov r8, r6\n"
- "\tadds r3, r2, r4\n"
- "_08041D86:\n"
- "\tlsls r0, r5, 1\n"
- "\tadd r0, r9\n"
- "\tldrh r2, [r3]\n"
- "\tadds r1, r2, 0\n"
- "\tldrh r0, [r0]\n"
- "\tcmp r1, r0\n"
- "\tbne _08041DA8\n"
- "\tcmp r1, 0\n"
- "\tbeq _08041DA8\n"
- "\tldr r1, [sp]\n"
- "\tadds r0, r1, 0x1\n"
- "\tlsls r0, 16\n"
- "\tlsrs r0, 16\n"
- "\tstr r0, [sp]\n"
- "\tlsls r1, 1\n"
- "\tadd r1, r12\n"
- "\tstrh r2, [r1]\n"
- "_08041DA8:\n"
- "\tadds r0, r5, 0x1\n"
- "\tlsls r0, 16\n"
- "\tlsrs r5, r0, 16\n"
- "\tcmp r5, 0x3\n"
- "\tbls _08041D86\n"
- "\tmov r1, r8\n"
- "\tlsls r0, r1, 16\n"
- "\tlsrs r6, r0, 16\n"
- "\tcmp r6, 0x3\n"
- "\tbhi _08041DC6\n"
- "\tlsls r0, r6, 1\n"
- "\tadds r0, r4\n"
- "\tldrh r0, [r0]\n"
- "\tcmp r0, 0\n"
- "\tbne _08041D7C\n"
- "_08041DC6:\n"
- "\tmovs r6, 0\n"
- "\tmov r2, r10\n"
- "\tldrh r0, [r2]\n"
- "\tcmp r0, 0\n"
- "\tbeq _08041E50\n"
- "_08041DD0:\n"
- "\tmovs r5, 0\n"
- "\tadds r3, r6, 0x1\n"
- "\tmov r8, r3\n"
- "\tldr r0, [sp, 0x4]\n"
- "\tcmp r5, r0\n"
- "\tbcs _08041E38\n"
- "\tldr r2, _08041E18 @ =0x0000ffff\n"
- "_08041DDE:\n"
- "\tldr r1, _08041E28 @ =gHatchedEggLevelUpMoves\n"
- "\tlsls r0, r5, 1\n"
- "\tadds r0, r1\n"
- "\tldrh r1, [r0]\n"
- "\tcmp r1, 0\n"
- "\tbeq _08041E2C\n"
- "\tlsls r0, r6, 1\n"
- "\tmov r3, r10\n"
- "\tadds r4, r0, r3\n"
- "\tldrh r0, [r4]\n"
- "\tcmp r0, r1\n"
- "\tbne _08041E2C\n"
- "\tadds r1, r0, 0\n"
- "\tadds r0, r7, 0\n"
- "\tstr r2, [sp, 0x8]\n"
- "\tbl GiveMoveToMon\n"
- "\tlsls r0, 16\n"
- "\tlsrs r0, 16\n"
- "\tldr r2, [sp, 0x8]\n"
- "\tcmp r0, r2\n"
- "\tbne _08041E38\n"
- "\tldrh r1, [r4]\n"
- "\tadds r0, r7, 0\n"
- "\tbl DeleteFirstMoveAndGiveMoveToMon\n"
- "\tb _08041E38\n"
- "\t.align 2, 0\n"
- "_08041E14: .4byte gHatchedEggFatherMoves\n"
- "_08041E18: .4byte 0x0000ffff\n"
- "_08041E1C: .4byte 0x00000121\n"
- "_08041E20: .4byte gHatchedEggFinalMoves\n"
- "_08041E24: .4byte gHatchedEggMotherMoves\n"
- "_08041E28: .4byte gHatchedEggLevelUpMoves\n"
- "_08041E2C:\n"
- "\tadds r0, r5, 0x1\n"
- "\tlsls r0, 16\n"
- "\tlsrs r5, r0, 16\n"
- "\tldr r0, [sp, 0x4]\n"
- "\tcmp r5, r0\n"
- "\tbcc _08041DDE\n"
- "_08041E38:\n"
- "\tmov r1, r8\n"
- "\tlsls r0, r1, 16\n"
- "\tlsrs r6, r0, 16\n"
- "\tcmp r6, 0x3\n"
- "\tbhi _08041E50\n"
- "\tldr r0, _08041E60 @ =gHatchedEggFinalMoves\n"
- "\tlsls r1, r6, 1\n"
- "\tadds r1, r0\n"
- "\tldrh r1, [r1]\n"
- "\tmov r10, r0\n"
- "\tcmp r1, 0\n"
- "\tbne _08041DD0\n"
- "_08041E50:\n"
- "\tadd sp, 0xC\n"
- "\tpop {r3-r5}\n"
- "\tmov r8, r3\n"
- "\tmov r9, r4\n"
- "\tmov r10, r5\n"
- "\tpop {r4-r7}\n"
- "\tpop {r0}\n"
- "\tbx r0\n"
- "\t.align 2, 0\n"
- "_08041E60: .4byte gHatchedEggFinalMoves");
-}
-#endif
static void RemoveEggFromDayCare(struct DayCare *daycare)
{
@@ -971,7 +627,7 @@ static u16 DetermineEggSpeciesAndParentSlots(struct DayCare *daycare, u8 *parent
// Determine which of the daycare mons is the mother and father of the egg.
// The 0th index of the parentSlots array is considered the mother slot, and the
// 1st index is the father slot.
- for (i = 0; i < 2; i++)
+ for (i = 0; i < DAYCARE_MON_COUNT; i++)
{
species[i] = GetBoxMonData(&daycare->mons[i], MON_DATA_SPECIES);
if (species[i] == SPECIES_DITTO)
@@ -1036,7 +692,7 @@ void CreateEgg(struct Pokemon *mon, u16 species, bool8 setMetLocation)
u8 metLocation;
u8 isEgg;
- CreateMon(mon, species, 5, 0x20, FALSE, 0, FALSE, 0);
+ CreateMon(mon, species, EGG_HATCH_LEVEL, 0x20, FALSE, 0, FALSE, 0);
metLevel = 0;
ball = ITEM_POKE_BALL;
language = LANGUAGE_JAPANESE;
@@ -1063,7 +719,7 @@ static void SetInitialEggData(struct Pokemon *mon, u16 species, struct DayCare *
u8 language;
personality = daycare->misc.countersEtc.pendingEggPersonality | (Random() << 16);
- CreateMon(mon, species, 5, 0x20, TRUE, personality, FALSE, 0);
+ CreateMon(mon, species, EGG_HATCH_LEVEL, 0x20, TRUE, personality, FALSE, 0);
metLevel = 0;
ball = ITEM_POKE_BALL;
language = LANGUAGE_JAPANESE;
@@ -1079,169 +735,47 @@ void GiveEggFromDaycare(void)
_GiveEggFromDaycare(&gSaveBlock1.daycare);
}
-#ifdef NONMATCHING
static bool8 _ShouldEggHatch(struct DayCare *daycare)
{
struct BoxPokemon *parent;
u32 i;
- int v0;
- int steps;
- v0 = 0;
- for (i=0, parent=&daycare->mons[0]; i<2; parent++, i++)
+ int numParents;
+
+ numParents = 0;
+ for (i = 0; i < DAYCARE_MON_COUNT; i++)
{
- if (GetBoxMonData(parent, MON_DATA_SANITY_BIT2, v0))
+ parent = &daycare->mons[i];
+ if (GetBoxMonData(parent, MON_DATA_SANITY_BIT2))
{
daycare->misc.countersEtc.steps[i]++;
- v0++;
+ numParents++;
}
}
- if (daycare->misc.countersEtc.pendingEggPersonality == 0 && v0 == 2 && daycare->misc.extra.misc[4] == 0xff && GetDaycareCompatibilityScore(daycare) > (u32)((u32)(Random() * 100) / 0xffff))
- {
+
+ if (daycare->misc.countersEtc.pendingEggPersonality == 0 && numParents == 2 && (daycare->misc.countersEtc.steps[1] % 256) == 255 && GetDaycareCompatibilityScore(daycare) > (u32)(Random() * 100) / 0xffff)
TriggerPendingDaycareEgg();
- }
- if ((++daycare->misc.countersEtc.eggCycleStepsRemaining) == 0xff)
+
+ if (++daycare->misc.countersEtc.eggCycleStepsRemaining == 255)
{
- for (i=0; i<gPlayerPartyCount; i++)
+ for (i = 0; i < gPlayerPartyCount; i++)
{
if (GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG))
{
- steps = GetMonData(&gPlayerParty[i], MON_DATA_FRIENDSHIP);
- if (steps == 0)
+ int friendship = GetMonData(&gPlayerParty[i], MON_DATA_FRIENDSHIP);
+ if (friendship == 0)
{
gSpecialVar_0x8004 = i;
return TRUE;
}
- steps--;
- SetMonData(&gPlayerParty[i], MON_DATA_FRIENDSHIP, &steps);
+
+ friendship--;
+ SetMonData(&gPlayerParty[i], MON_DATA_FRIENDSHIP, &friendship);
}
}
}
+
return FALSE;
}
-#else
-__attribute__((naked))
-static bool8 _ShouldEggHatch(struct DayCare *daycare)
-{
- asm_unified("\tpush {r4-r7,lr}\n"
- "\tsub sp, 0x8\n"
- "\tadds r7, r0, 0\n"
- "\tmovs r2, 0\n"
- "\tmovs r6, 0\n"
- "\tadds r5, r7, 0\n"
- "_080421BC:\n"
- "\tlsls r4, r6, 2\n"
- "\tadds r0, r5, 0\n"
- "\tmovs r1, 0x5\n"
- "\tstr r2, [sp, 0x4]\n"
- "\tbl GetBoxMonData\n"
- "\tldr r2, [sp, 0x4]\n"
- "\tcmp r0, 0\n"
- "\tbeq _080421DE\n"
- "\tmovs r0, 0x88\n"
- "\tlsls r0, 1\n"
- "\tadds r1, r7, r0\n"
- "\tadds r1, r4\n"
- "\tldr r0, [r1]\n"
- "\tadds r0, 0x1\n"
- "\tstr r0, [r1]\n"
- "\tadds r2, 0x1\n"
- "_080421DE:\n"
- "\tadds r5, 0x50\n"
- "\tadds r6, 0x1\n"
- "\tcmp r6, 0x1\n"
- "\tbls _080421BC\n"
- "\tmovs r1, 0x8C\n"
- "\tlsls r1, 1\n"
- "\tadds r0, r7, r1\n"
- "\tldrh r0, [r0]\n"
- "\tcmp r0, 0\n"
- "\tbne _08042226\n"
- "\tcmp r2, 0x2\n"
- "\tbne _08042226\n"
- "\tsubs r1, 0x4\n"
- "\tadds r0, r7, r1\n"
- "\tldrb r0, [r0]\n"
- "\tcmp r0, 0xFF\n"
- "\tbne _08042226\n"
- "\tadds r0, r7, 0\n"
- "\tbl GetDaycareCompatibilityScore\n"
- "\tadds r4, r0, 0\n"
- "\tlsls r4, 24\n"
- "\tlsrs r4, 24\n"
- "\tbl Random\n"
- "\tlsls r0, 16\n"
- "\tlsrs r0, 16\n"
- "\tmovs r1, 0x64\n"
- "\tmuls r0, r1\n"
- "\tldr r1, _08042240 @ =0x0000ffff\n"
- "\tbl __udivsi3\n"
- "\tcmp r4, r0\n"
- "\tbls _08042226\n"
- "\tbl TriggerPendingDaycareEgg\n"
- "_08042226:\n"
- "\tmovs r0, 0x8D\n"
- "\tlsls r0, 1\n"
- "\tadds r1, r7, r0\n"
- "\tldrb r0, [r1]\n"
- "\tadds r0, 0x1\n"
- "\tstrb r0, [r1]\n"
- "\tlsls r0, 24\n"
- "\tlsrs r0, 24\n"
- "\tcmp r0, 0xFF\n"
- "\tbne _08042290\n"
- "\tmovs r6, 0\n"
- "\tb _08042288\n"
- "\t.align 2, 0\n"
- "_08042240: .4byte 0x0000ffff\n"
- "_08042244:\n"
- "\tmovs r0, 0x64\n"
- "\tadds r1, r6, 0\n"
- "\tmuls r1, r0\n"
- "\tldr r0, _08042270 @ =gPlayerParty\n"
- "\tadds r4, r1, r0\n"
- "\tadds r0, r4, 0\n"
- "\tmovs r1, 0x2D\n"
- "\tbl GetMonData\n"
- "\tcmp r0, 0\n"
- "\tbeq _08042286\n"
- "\tadds r0, r4, 0\n"
- "\tmovs r1, 0x20\n"
- "\tbl GetMonData\n"
- "\tstr r0, [sp]\n"
- "\tcmp r0, 0\n"
- "\tbne _08042278\n"
- "\tldr r0, _08042274 @ =gSpecialVar_0x8004\n"
- "\tstrh r6, [r0]\n"
- "\tmovs r0, 0x1\n"
- "\tb _08042292\n"
- "\t.align 2, 0\n"
- "_08042270: .4byte gPlayerParty\n"
- "_08042274: .4byte gSpecialVar_0x8004\n"
- "_08042278:\n"
- "\tsubs r0, 0x1\n"
- "\tstr r0, [sp]\n"
- "\tadds r0, r4, 0\n"
- "\tmovs r1, 0x20\n"
- "\tmov r2, sp\n"
- "\tbl SetMonData\n"
- "_08042286:\n"
- "\tadds r6, 0x1\n"
- "_08042288:\n"
- "\tldr r0, _0804229C @ =gPlayerPartyCount\n"
- "\tldrb r0, [r0]\n"
- "\tcmp r6, r0\n"
- "\tbcc _08042244\n"
- "_08042290:\n"
- "\tmovs r0, 0\n"
- "_08042292:\n"
- "\tadd sp, 0x8\n"
- "\tpop {r4-r7}\n"
- "\tpop {r1}\n"
- "\tbx r1\n"
- "\t.align 2, 0\n"
- "_0804229C: .4byte gPlayerPartyCount");
-}
-#endif
bool8 ShouldEggHatch(void)
{
@@ -1305,21 +839,17 @@ u8 GetDaycareState(void)
return 0;
}
-#ifdef NONMATCHING
-static
-#endif
-bool8 EggGroupsOverlap(u16 *eggGroups1, u16 *eggGroups2)
+static bool8 EggGroupsOverlap(u16 *eggGroups1, u16 *eggGroups2)
{
// Determine if the two given egg group lists contain any of the
// same egg groups.
s32 i, j;
- u16 *v0, *v1, v2;
- for (i = 0, v0 = eggGroups1; i < 2; v0++, i++)
+ for (i = 0; i < DAYCARE_MON_COUNT; i++)
{
- for (j = 0, v2 = *v0, v1 = eggGroups2; j < 2; v1++, j++)
+ for (j = 0; j < DAYCARE_MON_COUNT; j++)
{
- if (v2 == *v1)
+ if (eggGroups1[i] == eggGroups2[j])
{
return TRUE;
}
@@ -1329,226 +859,58 @@ bool8 EggGroupsOverlap(u16 *eggGroups1, u16 *eggGroups2)
return FALSE;
}
-#ifdef NONMATCHING
static u8 GetDaycareCompatibilityScore(struct DayCare *daycare)
{
+ u32 i;
+ u16 eggGroups[2][2];
u16 species[2];
- u32 otIds[2];
u32 genders[2];
- u16 eggGroups[2][2];
- int i;
- u16 *spc;
- u32 *ids;
- u32 *gnd;
- u16 *egg1;
- u16 *egg2;
- struct BoxPokemon *parent;
+ u32 otIds[2];
+ u32 personality;
- for (i=0, parent=&daycare->mons[0], spc=species, ids=otIds, gnd=genders, egg1=&eggGroups[0][0], egg2=&eggGroups[0][1]; i<2; spc++, egg1+=2, egg2+=2, parent++, i++)
+ for (i = 0; i < DAYCARE_MON_COUNT; i++)
{
- *spc = GetBoxMonData(parent, MON_DATA_SPECIES);
- *ids++ = GetBoxMonData(parent, MON_DATA_OT_ID);
- *gnd++ = GetGenderFromSpeciesAndPersonality(*spc, GetBoxMonData(parent, MON_DATA_PERSONALITY));
- *egg1 = gBaseStats[*spc].eggGroup1;
- *egg2 = gBaseStats[*spc].eggGroup2;
- }
- if (eggGroups[0][0] == 0xf)
- {
- return 0;
+ species[i] = GetBoxMonData(&daycare->mons[i], MON_DATA_SPECIES);
+ otIds[i] = GetBoxMonData(&daycare->mons[i], MON_DATA_OT_ID);
+ personality = GetBoxMonData(&daycare->mons[i], MON_DATA_PERSONALITY);
+ genders[i] = GetGenderFromSpeciesAndPersonality(species[i], personality);
+ eggGroups[i][0] = gBaseStats[species[i]].eggGroup1;
+ eggGroups[i][1] = gBaseStats[species[i]].eggGroup2;
}
- if (eggGroups[1][0] == 0xf)
- {
+
+ if (eggGroups[0][0] == EGG_GROUP_UNDISCOVERED || eggGroups[1][0] == EGG_GROUP_UNDISCOVERED)
return 0;
- }
- if (eggGroups[0][0] == 0xd && eggGroups[1][0] == 0xd)
- {
+
+ if (eggGroups[0][0] == EGG_GROUP_DITTO && eggGroups[1][0] == EGG_GROUP_DITTO)
return 0;
- }
- else if (eggGroups[0][0] == 0xd || eggGroups[1][0] == 0xd)
+
+ if (eggGroups[0][0] == EGG_GROUP_DITTO || eggGroups[1][0] == EGG_GROUP_DITTO)
{
if (otIds[0] == otIds[1])
- {
return 20;
- }
- return 50;
+ else
+ return 50;
}
+
if (genders[0] == genders[1] || genders[0] == MON_GENDERLESS || genders[1] == MON_GENDERLESS)
- {
return 0;
- }
+
if (!EggGroupsOverlap(eggGroups[0], eggGroups[1]))
- {
return 0;
- }
+
if (species[0] == species[1])
{
if (otIds[0] == otIds[1])
- {
return 50;
- }
- return 70;
+ else
+ return 70;
}
+
+ if (otIds[0] != otIds[1])
+ return 50;
else
- {
- if (otIds[0] != otIds[1])
- {
- return 50;
- }
return 20;
- }
-}
-#else
-__attribute__((naked))
-static u8 GetDaycareCompatibilityScore(struct DayCare *daycare)
-{
- asm_unified("\tpush {r4-r7,lr}\n"
- "\tmov r7, r10\n"
- "\tmov r6, r9\n"
- "\tmov r5, r8\n"
- "\tpush {r5-r7}\n"
- "\tsub sp, 0x2C\n"
- "\tmovs r1, 0\n"
- "\tmov r8, r1\n"
- "\tmov r2, sp\n"
- "\tadds r2, 0x8\n"
- "\tstr r2, [sp, 0x1C]\n"
- "\tadd r1, sp, 0xC\n"
- "\tmov r10, r1\n"
- "\tadds r2, 0xC\n"
- "\tstr r2, [sp, 0x20]\n"
- "\tmov r1, sp\n"
- "\tadds r1, 0x2\n"
- "\tldr r2, _08042488 @ =gBaseStats\n"
- "\tmov r9, r2\n"
- "\tldr r5, [sp, 0x1C]\n"
- "\tadds r7, r1, 0\n"
- "\tmov r6, sp\n"
- "\tldr r1, [sp, 0x20]\n"
- "\tstr r1, [sp, 0x24]\n"
- "\tmov r2, r10\n"
- "\tstr r2, [sp, 0x28]\n"
- "\tadds r4, r0, 0\n"
- "_0804240E:\n"
- "\tadds r0, r4, 0\n"
- "\tmovs r1, 0xB\n"
- "\tbl GetBoxMonData\n"
- "\tstrh r0, [r5]\n"
- "\tadds r0, r4, 0\n"
- "\tmovs r1, 0x1\n"
- "\tbl GetBoxMonData\n"
- "\tldr r1, [sp, 0x28]\n"
- "\tstm r1!, {r0}\n"
- "\tstr r1, [sp, 0x28]\n"
- "\tadds r0, r4, 0\n"
- "\tmovs r1, 0\n"
- "\tbl GetBoxMonData\n"
- "\tadds r1, r0, 0\n"
- "\tldrh r0, [r5]\n"
- "\tbl GetGenderFromSpeciesAndPersonality\n"
- "\tlsls r0, 24\n"
- "\tlsrs r0, 24\n"
- "\tldr r2, [sp, 0x24]\n"
- "\tstm r2!, {r0}\n"
- "\tstr r2, [sp, 0x24]\n"
- "\tldrh r1, [r5]\n"
- "\tlsls r0, r1, 3\n"
- "\tsubs r0, r1\n"
- "\tlsls r0, 2\n"
- "\tadd r0, r9\n"
- "\tldrb r0, [r0, 0x14]\n"
- "\tstrh r0, [r6]\n"
- "\tldrh r1, [r5]\n"
- "\tlsls r0, r1, 3\n"
- "\tsubs r0, r1\n"
- "\tlsls r0, 2\n"
- "\tadd r0, r9\n"
- "\tldrb r0, [r0, 0x15]\n"
- "\tstrh r0, [r7]\n"
- "\tadds r5, 0x2\n"
- "\tadds r7, 0x4\n"
- "\tadds r6, 0x4\n"
- "\tadds r4, 0x50\n"
- "\tmovs r0, 0x1\n"
- "\tadd r8, r0\n"
- "\tmov r1, r8\n"
- "\tcmp r1, 0x1\n"
- "\tbls _0804240E\n"
- "\tmov r0, sp\n"
- "\tldrh r1, [r0]\n"
- "\tcmp r1, 0xF\n"
- "\tbeq _08042484\n"
- "\tldrh r0, [r0, 0x4]\n"
- "\tcmp r0, 0xF\n"
- "\tbeq _08042484\n"
- "\tcmp r1, 0xD\n"
- "\tbne _0804248C\n"
- "\tcmp r0, 0xD\n"
- "\tbne _08042490\n"
- "_08042484:\n"
- "\tmovs r0, 0\n"
- "\tb _080424E4\n"
- "\t.align 2, 0\n"
- "_08042488: .4byte gBaseStats\n"
- "_0804248C:\n"
- "\tcmp r0, 0xD\n"
- "\tbne _0804249C\n"
- "_08042490:\n"
- "\tldr r1, [sp, 0xC]\n"
- "\tmov r2, r10\n"
- "\tldr r0, [r2, 0x4]\n"
- "\tcmp r1, r0\n"
- "\tbeq _080424DE\n"
- "\tb _080424E2\n"
- "_0804249C:\n"
- "\tldr r0, [sp, 0x14]\n"
- "\tldr r2, [sp, 0x20]\n"
- "\tldr r1, [r2, 0x4]\n"
- "\tcmp r0, r1\n"
- "\tbeq _08042484\n"
- "\tcmp r0, 0xFF\n"
- "\tbeq _08042484\n"
- "\tcmp r1, 0xFF\n"
- "\tbeq _08042484\n"
- "\tadd r1, sp, 0x4\n"
- "\tmov r0, sp\n"
- "\tbl EggGroupsOverlap\n"
- "\tlsls r0, 24\n"
- "\tcmp r0, 0\n"
- "\tbeq _08042484\n"
- "\tldr r0, [sp, 0x1C]\n"
- "\tldrh r1, [r0, 0x2]\n"
- "\tldrh r0, [r0]\n"
- "\tcmp r0, r1\n"
- "\tbne _080424D4\n"
- "\tldr r1, [sp, 0xC]\n"
- "\tmov r2, r10\n"
- "\tldr r0, [r2, 0x4]\n"
- "\tcmp r1, r0\n"
- "\tbeq _080424E2\n"
- "\tmovs r0, 0x46\n"
- "\tb _080424E4\n"
- "_080424D4:\n"
- "\tldr r1, [sp, 0xC]\n"
- "\tmov r2, r10\n"
- "\tldr r0, [r2, 0x4]\n"
- "\tcmp r1, r0\n"
- "\tbne _080424E2\n"
- "_080424DE:\n"
- "\tmovs r0, 0x14\n"
- "\tb _080424E4\n"
- "_080424E2:\n"
- "\tmovs r0, 0x32\n"
- "_080424E4:\n"
- "\tadd sp, 0x2C\n"
- "\tpop {r3-r5}\n"
- "\tmov r8, r3\n"
- "\tmov r9, r4\n"
- "\tmov r10, r5\n"
- "\tpop {r4-r7}\n"
- "\tpop {r1}\n"
- "\tbx r1");
}
-#endif
u8 GetDaycareCompatibilityScoreFromSave(void)
{
@@ -1619,7 +981,7 @@ static void GetDaycareLevelMenuText(struct DayCare *daycare, u8 *dest)
u8 i;
*dest = EOS;
- for (i = 0; i < 2; i++)
+ for (i = 0; i < DAYCARE_MON_COUNT; i++)
{
GetBoxMonNick(&daycare->mons[i], monNames[i]);
AppendMonGenderSymbol(monNames[i], &daycare->mons[i]);
@@ -1638,7 +1000,7 @@ static void GetDaycareLevelMenuLevelText(struct DayCare *daycare, u8 *dest)
u8 level;
*dest = EOS;
- for (i = 0; i < 2; i++)
+ for (i = 0; i < DAYCARE_MON_COUNT; i++)
{
level = GetLevelAfterDaycareSteps(&daycare->mons[i], daycare->misc.countersEtc.steps[i]);
dest[0] = 0x34;
diff --git a/src/de_rom_8040FE0.c b/src/de_rom_8040FE0.c
index c93ef74cd..24e0fa51b 100644
--- a/src/de_rom_8040FE0.c
+++ b/src/de_rom_8040FE0.c
@@ -89,7 +89,7 @@ u8 *de_sub_8041024(s32 arg0, u32 arg1)
}
#else
-__attribute__((naked))
+NAKED
void de_sub_8041024(void) {
asm(".syntax unified\n\
push {r4-r6,lr}\n\
diff --git a/src/debug/ereader_debug_menu.c b/src/debug/ereader_debug_menu.c
new file mode 100644
index 000000000..aaffca383
--- /dev/null
+++ b/src/debug/ereader_debug_menu.c
@@ -0,0 +1,362 @@
+#include "global.h"
+#include "debug.h"
+#include "constants/species.h"
+#include "constants/items.h"
+#include "string_util.h"
+#include "new_game.h"
+#include "load_save.h"
+#include "start_menu.h"
+#include "mystery_event_script.h"
+#include "berry.h"
+#include "mail_data.h"
+
+const u8 Str_842E238[] = _("タマゴ");
+
+#if DEBUG
+
+extern u8 gUnknown_Debug_845DAE1[];
+extern u8 gUnknown_Debug_845DAE1End[];
+
+size_t debug_sub_813C404(u8 * dest)
+{
+ size_t size = gUnknown_Debug_845DAE1End - gUnknown_Debug_845DAE1;
+ memcpy(dest, gUnknown_Debug_845DAE1, size);
+ debug_sub_812620C(dest, gUnknown_Debug_845DAE1);
+ return size;
+}
+
+extern u8 gUnknown_Debug_845E3E0[];
+extern u8 gUnknown_Debug_845E3E0End[];
+
+size_t debug_sub_813C430(u8 * dest)
+{
+ size_t size = gUnknown_Debug_845E3E0End - gUnknown_Debug_845E3E0;
+ memcpy(dest, gUnknown_Debug_845E3E0, size);
+ debug_sub_812620C(dest, gUnknown_Debug_845E3E0);
+ return size;
+}
+
+extern u8 gUnknown_Debug_845E422[];
+extern u8 gUnknown_Debug_845E422End[];
+
+size_t debug_sub_813C45C(u8 * dest)
+{
+ size_t size = gUnknown_Debug_845E422End - gUnknown_Debug_845E422;
+ memcpy(dest, gUnknown_Debug_845E422, size);
+ debug_sub_812620C(dest, gUnknown_Debug_845E422);
+ return size;
+}
+
+extern u8 gUnknown_Debug_845E402[];
+extern u8 gUnknown_Debug_845E402End[];
+
+size_t debug_sub_813C488(u8 * dest)
+{
+ size_t size = gUnknown_Debug_845E402End - gUnknown_Debug_845E402;
+ memcpy(dest, gUnknown_Debug_845E402, size);
+ debug_sub_812620C(dest, gUnknown_Debug_845E402);
+ return size;
+}
+
+extern u8 gUnknown_Debug_845E606[];
+extern u8 gUnknown_Debug_845E606End[];
+
+size_t debug_sub_813C4B4(u8 * dest)
+{
+ size_t size = gUnknown_Debug_845E606End - gUnknown_Debug_845E606;
+ memcpy(dest, gUnknown_Debug_845E606, size);
+ return size;
+}
+
+extern u8 gUnknown_Debug_845E619[];
+extern u8 gUnknown_Debug_845E619End[];
+
+size_t debug_sub_813C4D4(u8 * dest)
+{
+ size_t size = gUnknown_Debug_845E619End - gUnknown_Debug_845E619;
+ memcpy(dest, gUnknown_Debug_845E619, size);
+ debug_sub_81261B4(dest, gUnknown_Debug_845E619);
+ return size;
+}
+
+extern u8 gUnknown_Debug_845E712[];
+extern u8 gUnknown_Debug_845E712End[];
+
+size_t debug_sub_813C500(u8 * dest)
+{
+ size_t size = gUnknown_Debug_845E712End - gUnknown_Debug_845E712;
+ memcpy(dest, gUnknown_Debug_845E712, size);
+ debug_sub_812620C(dest, gUnknown_Debug_845E712);
+ return size;
+}
+
+extern u8 gUnknown_Debug_845E797[];
+extern u8 gUnknown_Debug_845E797End[];
+extern u8 gUnknown_Debug_845E7B5[];
+
+size_t debug_sub_813C52C(u8 * dest, u16 itemId)
+{
+ u8 * ptr;
+ size_t size = gUnknown_Debug_845E797End - gUnknown_Debug_845E797;
+ memcpy(dest, gUnknown_Debug_845E797, size);
+ ptr = gUnknown_Debug_845E7B5 - gUnknown_Debug_845E797 + dest;
+ ptr += 3;
+ ptr[0] = itemId;
+ ptr[1] = itemId >> 8;
+ debug_sub_812620C(dest, gUnknown_Debug_845E797);
+ return size;
+}
+
+size_t debug_sub_813C580(u8 * dest)
+{
+ return debug_sub_813C52C(dest, ITEM_POTION);
+}
+
+size_t debug_sub_813C58C(u8 * dest)
+{
+ return debug_sub_813C52C(dest, ITEM_POKE_BALL);
+}
+
+size_t debug_sub_813C598(u8 * dest)
+{
+ return debug_sub_813C52C(dest, ITEM_CHERI_BERRY);
+}
+
+size_t debug_sub_813C5A4(u8 * dest)
+{
+ return debug_sub_813C52C(dest, ITEM_TM01_FOCUS_PUNCH);
+}
+
+extern u8 gUnknown_Debug_845DDB2[];
+extern u8 gUnknown_Debug_845DDB2End[];
+extern u8 gUnknown_Debug_845DDD6[];
+
+const u8 Str_842E23C[] = _("ガイブ");
+
+size_t debug_sub_813C5B4(u8 * dest)
+{
+ u8 * saveBerry = (u8 *)&gSaveBlock1.enigmaBerry;
+ u8 * berry = (u8 *)(dest - gUnknown_Debug_845DDB2 + gUnknown_Debug_845DDD6);
+ size_t size = gUnknown_Debug_845DDB2End - gUnknown_Debug_845DDB2;
+ int i;
+
+ debug_sub_80C2C18(Str_842E23C, 0, 0);
+
+ for (i = 0; i < 0x1000; i++)
+ dest[i] = 0;
+
+ for (i = 0; i < size; i++)
+ dest[i] = gUnknown_Debug_845DDB2[i];
+
+ for (i = 0; i < sizeof(struct EnigmaBerry); i++)
+ berry[i] = saveBerry[i];
+
+ ClearEnigmaBerries();
+ debug_sub_81261B4(dest, gUnknown_Debug_845DDB2);
+ return size;
+}
+
+const u8 Str_842E240[] = _("ENGLISH");
+const u8 Str_842E248[] = _("TOURNAMENT");
+
+void debug_sub_813C638(struct Pokemon * mon, u16 species, u8 level, u16 itemId)
+{
+ u32 _itemId;
+ ZeroMonData(mon);
+ CreateMon(mon, species, level, 32, FALSE, 0, TRUE, 9999);
+ SetMonData(mon, MON_DATA_OT_NAME, Str_842E240);
+ SetMonData(mon, MON_DATA_NICKNAME, Str_842E248);
+ _itemId = itemId;
+ SetMonData(mon, MON_DATA_HELD_ITEM, &_itemId);
+}
+
+void debug_sub_813C6AC(struct Pokemon *mon, struct MailStruct *mail)
+{
+ u16 itemId;
+ ClearMailStruct(mail);
+ itemId = GetMonData(mon, MON_DATA_HELD_ITEM);
+ if (ItemIsMail(itemId))
+ {
+ u8 * name = mail->playerName;
+ u8 * id = mail->trainerId;
+ u8 nameBuf[8];
+ int i;
+
+ for (i = 0; i < 9; i++)
+ mail->words[i] = i + 1;
+
+ GetMonData(mon, MON_DATA_OT_NAME, nameBuf);
+ StringCopyN(name, nameBuf, OT_NAME_LENGTH + 1);
+
+ write_word_to_mem(GetMonData(mon, MON_DATA_OT_ID), id);
+
+ mail->species = SpeciesToMailSpecies(GetMonData(mon, MON_DATA_SPECIES), GetMonData(mon, MON_DATA_PERSONALITY));
+ mail->itemId = itemId;
+
+ }
+}
+
+extern u8 gUnknown_Debug_845E443[];
+extern u8 gUnknown_Debug_845E443End[];
+extern u8 gUnknown_Debug_845E467[];
+extern u8 gUnknown_Debug_845E4CB[];
+
+size_t debug_sub_813C740(u8 * dest)
+{
+ struct MailStruct mail;
+ u8 * src = gUnknown_Debug_845E443;
+ u8 * end = gUnknown_Debug_845E443End;
+ struct Pokemon *mon = gEnemyParty;
+ size_t size = end - src;
+ u8 dataBuffer[11];
+
+ memcpy(dest, src, size);
+ debug_sub_813C638(mon, SPECIES_PIKACHU, 5, ITEM_NONE);
+ dataBuffer[0] = TRUE;
+ SetMonData(mon, MON_DATA_IS_EGG, dataBuffer);
+ dataBuffer[0] = 3;
+ SetMonData(mon, MON_DATA_FRIENDSHIP, dataBuffer);
+ dataBuffer[0] = 255;
+ SetMonData(mon, MON_DATA_MET_LOCATION, dataBuffer);
+
+ StringCopyN(dataBuffer, Str_842E238, POKEMON_NAME_LENGTH + 1);
+ SetMonData(mon, MON_DATA_NICKNAME, dataBuffer);
+
+ dataBuffer[0] = LANGUAGE_JAPANESE;
+ SetMonData(mon, MON_DATA_LANGUAGE, dataBuffer);
+
+ memcpy(gUnknown_Debug_845E467 - src + dest, mon, sizeof(struct Pokemon));
+
+ memcpy(gUnknown_Debug_845E4CB - src + dest, &mail, sizeof(struct MailStruct));
+
+ return size;
+}
+
+size_t debug_sub_813C810(u8 * dest)
+{
+ struct MailStruct mail;
+ u8 * src = gUnknown_Debug_845E443;
+ u8 * end = gUnknown_Debug_845E443End;
+ struct Pokemon *mon = gEnemyParty;
+ size_t size = end - src;
+
+ memcpy(dest, src, size);
+ debug_sub_813C638(mon, SPECIES_UNOWN, 21, ITEM_DREAM_MAIL);
+ debug_sub_813C6AC(mon, &mail);
+
+ memcpy(gUnknown_Debug_845E467 - src + dest, mon, sizeof(struct Pokemon));
+
+ memcpy(gUnknown_Debug_845E4CB - src + dest, &mail, sizeof(struct MailStruct));
+
+ debug_sub_812620C(dest, src);
+
+ return size;
+}
+
+size_t debug_sub_813C888(u8 * dest)
+{
+ struct MailStruct mail;
+ u8 * src = gUnknown_Debug_845E443;
+ u8 * end = gUnknown_Debug_845E443End;
+ struct Pokemon *mon = gEnemyParty;
+ size_t size = end - src;
+
+ memcpy(dest, src, size);
+ debug_sub_813C638(mon, SPECIES_UNOWN, 21, ITEM_DREAM_MAIL);
+ debug_sub_813C6AC(mon, &mail);
+ mon->box.checksum = 0;
+
+ memcpy(gUnknown_Debug_845E467 - src + dest, mon, sizeof(struct Pokemon));
+
+ memcpy(gUnknown_Debug_845E4CB - src + dest, &mail, sizeof(struct MailStruct));
+
+ debug_sub_812620C(dest, src);
+
+ return size;
+}
+
+void debug_sub_813C904(void)
+{
+ debug_sub_813C638(gPlayerParty + 0, SPECIES_CHARMELEON, 50, ITEM_QUICK_CLAW);
+ debug_sub_813C638(gPlayerParty + 1, SPECIES_WARTORTLE, 50, ITEM_FOCUS_BAND);
+ debug_sub_813C638(gPlayerParty + 2, SPECIES_IVYSAUR, 50, ITEM_LUM_BERRY);
+}
+
+extern u8 gUnknown_Debug_845E4EF[];
+extern u8 gUnknown_Debug_845E4EFEnd[];
+extern u8 gUnknown_Debug_845E506[];
+
+const u8 Str_842E253[] = _(" そら  カードイー");
+
+size_t debug_sub_813C93C(u8 * dest)
+{
+ u8 * src = gUnknown_Debug_845E4EF;
+ size_t size = gUnknown_Debug_845E4EFEnd - src;
+ struct BattleTowerEReaderTrainer ereaderTrainer;
+
+ memcpy(dest, src, size);
+ SavePlayerParty();
+ debug_sub_813C904();
+ debug_sub_8075DB4(&ereaderTrainer, Str_842E253 + 5, 9999);
+ LoadPlayerParty();
+
+ memcpy(gUnknown_Debug_845E506 - src + dest, &ereaderTrainer, sizeof(ereaderTrainer));
+
+ return size;
+}
+
+const u8 Str_842E25E[] = _("ポケコッコ");
+const u8 Str_842E264[] = _("ticket");
+const u8 Str_842E26B[] = _("{PKMN}");
+const u8 Str_842E26E[] = _("wrong {PKMN}");
+const u8 Str_842E277[] = _("ribbon");
+const u8 Str_842E27E[] = _("DEX");
+const u8 Str_842E282[] = _("message");
+const u8 Str_842E28A[] = _("egg");
+const u8 Str_842E28E[] = _("RAM seed");
+const u8 Str_842E297[] = _("trainer");
+const u8 Str_842E29F[] = _("clock");
+const u8 Str_842E2A5[] = _("item");
+const u8 Str_842E2AA[] = _("goods");
+const u8 Str_842E2B0[] = _("potion");
+const u8 Str_842E2B7[] = _("ball");
+const u8 Str_842E2BC[] = _("cheri berry");
+const u8 Str_842E2C8[] = _("TM01");
+
+const struct UnkDebugMenu3Items gUnknown_Debug_842E2D0[] = {
+ {Str_842E264, debug_sub_813C404},
+ {Str_842E26B, debug_sub_813C810},
+ {Str_842E26E, debug_sub_813C888},
+ {Str_842E277, debug_sub_813C430},
+ {Str_842E27E, debug_sub_813C488},
+ {Str_842E282, debug_sub_813C45C},
+ {Str_842E28A, debug_sub_813C740},
+ {Str_842E28E, debug_sub_813C5B4},
+ {Str_842E297, debug_sub_813C93C},
+ {Str_842E29F, debug_sub_813C4B4},
+ {Str_842E2A5, debug_sub_813C4D4},
+ {Str_842E2AA, debug_sub_813C500},
+ {Str_842E2B0, debug_sub_813C580},
+ {Str_842E2B7, debug_sub_813C58C},
+ {Str_842E2BC, debug_sub_813C598},
+ {Str_842E2C8, debug_sub_813C5A4}
+};
+
+extern u8 gUnknown_Debug_845E306[];
+
+const u8 gUnknown_Debug_842E350 = 16;
+
+u8 *const gUnknown_Debug_842E354[] = {
+ gUnknown_Debug_845DAE1,
+ gUnknown_Debug_845DDB2,
+ gUnknown_Debug_845E306,
+ gUnknown_Debug_845E3E0,
+ gUnknown_Debug_845E3E0,
+ gUnknown_Debug_845E402,
+ gUnknown_Debug_845E402,
+ gUnknown_Debug_845E422,
+ gUnknown_Debug_845E422,
+ gUnknown_Debug_845E443
+};
+
+#endif // DEBUG
diff --git a/src/debug/kagaya_debug_menu.c b/src/debug/kagaya_debug_menu.c
index 3cb36ce0c..89a36b2da 100644
--- a/src/debug/kagaya_debug_menu.c
+++ b/src/debug/kagaya_debug_menu.c
@@ -74,7 +74,7 @@ u8 debug_sub_80B061C(void)
u8 KagayaDebugMenu_TrainerCard(void)
{
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gMenuCallback = debug_sub_80B068C;
return 0;
}
@@ -83,7 +83,7 @@ u8 debug_sub_80B068C(void)
{
if (!UpdatePaletteFade())
{
- debug_sub_80A0710(sub_805469C);
+ debug_sub_80A0710(c2_exit_to_overworld_1_sub_8080DEC);
CloseMenu();
ScriptContext2_Enable();
return 1;
@@ -93,7 +93,7 @@ u8 debug_sub_80B068C(void)
u8 KagayaDebugMenu_CardToExchange(void)
{
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gMenuCallback = debug_sub_80B06E0;
return 0;
}
@@ -102,7 +102,7 @@ u8 debug_sub_80B06E0(void)
{
if (!UpdatePaletteFade())
{
- debug_sub_80A073C(sub_805469C);
+ debug_sub_80A073C(c2_exit_to_overworld_1_sub_8080DEC);
CloseMenu();
ScriptContext2_Enable();
return 1;
@@ -112,7 +112,7 @@ u8 debug_sub_80B06E0(void)
u8 KagayaDebugMenu_SlotMachine(void)
{
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gMenuCallback = Kagaya_80B0734;
return 0;
}
@@ -121,7 +121,7 @@ u8 Kagaya_80B0734(void)
{
if (!UpdatePaletteFade())
{
- debug_sub_811609C(Random() % 6, sub_805469C);
+ debug_sub_811609C(Random() % 6, c2_exit_to_overworld_1_sub_8080DEC);
CloseMenu();
ScriptContext2_Enable();
return 1;
@@ -149,7 +149,7 @@ u8 debug_sub_80B0770(void)
u8 debug_sub_80B07B0(void)
{
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gMenuCallback = debug_sub_80B07DC;
return 0;
}
@@ -170,7 +170,7 @@ u8 debug_sub_80B0800(void)
u8 r2;
CloseMenu();
- r2 = sub_8068F18();
+ r2 = TrySetDiveWarp();
if (r2 != 0)
{
gFieldEffectArguments[0] = 0;
diff --git a/src/debug/matsuda_debug_menu.c b/src/debug/matsuda_debug_menu.c
index 0dbb491a7..e24868787 100644
--- a/src/debug/matsuda_debug_menu.c
+++ b/src/debug/matsuda_debug_menu.c
@@ -68,7 +68,7 @@ const struct MenuAction gMatsudaDebugMenuActions[] =
{gMatsudaDebugMenu_ActionSetAllArtMuseumText, MatsudaDebugMenu_SetArtMuseumItems},
};
-u8 unref_sub_80A9B28(void)
+u8 InitMatsudaDebugMenu(void)
{
Menu_EraseScreen();
Menu_DrawStdWindowFrame(0, 0, 17, 18);
@@ -97,7 +97,7 @@ static bool8 sub_80A9B78(void)
u8 MatsudaDebugMenu_ContestResults(void)
{
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
CreateTask(sub_80A9BE4, 0xFF);
return 1;
}
@@ -465,7 +465,7 @@ static void sub_80AA064(void)
RunTasks();
UpdatePaletteFade();
if (gMain.newKeys == 4)
- SetMainCallback2(sub_805469C);
+ SetMainCallback2(c2_exit_to_overworld_1_sub_8080DEC);
}
static void sub_80AA090(void)
@@ -870,7 +870,7 @@ void sub_80AAD08(struct Sprite *sprite, s8 var2)
{
eMatsudaDebugVar = sprite->data[3];
SetMainCallback2(sub_80AACC4);
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
}
}
@@ -883,7 +883,7 @@ void sub_80AAD44(struct Sprite *sprite, s8 var2)
SetDebugMonForContest();
for (i = 0; i < 4; i++)
gUnknown_02038670[i] = sub_80AE770(i, gSpecialVar_ContestCategory);
- SetMainCallback2(sub_805469C);
+ SetMainCallback2(c2_exit_to_overworld_1_sub_8080DEC);
}
}
diff --git a/src/debug/mori_debug_menu.c b/src/debug/mori_debug_menu.c
index 767f4cda0..4f798ecb3 100644
--- a/src/debug/mori_debug_menu.c
+++ b/src/debug/mori_debug_menu.c
@@ -2,7 +2,7 @@
#include "mori_debug_menu.h"
#include "data2.h"
#include "daycare.h"
-#include "learn_move.h"
+#include "move_tutor_menu.h"
#include "link.h"
#include "main.h"
#include "menu.h"
@@ -136,7 +136,7 @@ u8 MoriDebugMenu_10000Steps(void)
u8 MoriDebugMenu_MoveTutor(void)
{
- TeachMoveTutorMove();
+ DisplayMoveTutorMenu();
CloseMenu();
return 1;
}
diff --git a/src/debug/nakamura_debug_menu.c b/src/debug/nakamura_debug_menu.c
index 550ac7bbd..508dc048e 100644
--- a/src/debug/nakamura_debug_menu.c
+++ b/src/debug/nakamura_debug_menu.c
@@ -1,189 +1,2217 @@
#if DEBUG
#include "global.h"
+#include "constants/items.h"
+#include "constants/species.h"
+#include "constants/songs.h"
+#include "sound.h"
+#include "data2.h"
+#include "strings.h"
+#include "random.h"
+#include "palette.h"
+#include "main.h"
+#include "string_util.h"
+#include "overworld.h"
+#include "fieldmap.h"
+#include "field_player_avatar.h"
+#include "metatile_behavior.h"
+#include "start_menu.h"
+#include "party_menu.h"
+#include "choose_party.h"
+#include "secret_base.h"
+#include "roamer.h"
+#include "decoration_inventory.h"
+#include "wild_encounter.h"
#include "menu.h"
+#include "menu_helpers.h"
+#include "pokeblock.h"
-EWRAM_DATA u8 _nakamuraData0 = 0;
-EWRAM_DATA u8 _nakamuraData1 = 0;
-EWRAM_DATA u8 _nakamuraData2 = 0;
-EWRAM_DATA u8 _nakamuraData3 = 0;
-EWRAM_DATA u8 _nakamuraData4 = 0;
-EWRAM_DATA u8 _nakamuraData5 = 0;
-EWRAM_DATA u16 _nakamuraData6 = 0;
-EWRAM_DATA u16 _nakamuraData8 = 0;
-EWRAM_DATA u16 _nakamuraDataA = 0;
-EWRAM_DATA u16 _nakamuraDataC = 0;
-
-__attribute__((unused)) static u8 _nakamuraStatic0[0x18];
-__attribute__((unused)) static u8 _nakamuraStatic18;
-__attribute__((unused)) static u8 gDebugFiller3000814[4];
-
-asm(".global _nakamuraStatic0");
-asm(".global _nakamuraStatic18");
-
-u8 debug_sub_815FC54();
-u8 debug_sub_815F2B4();
-u8 debug_sub_815FC94();
-u8 debug_sub_815FB1C();
-u8 debug_sub_815F2F4();
-u8 debug_sub_815F62C();
-u8 debug_sub_815FBE8();
-u8 debug_sub_815FE1C();
-u8 debug_sub_8160D98();
-
-const u8 Str_843E36C[] = _("Berries");
-const u8 Str_843E374[] = _("Goods");
-const u8 Str_843E37A[] = _("{PKMN} list");
-const u8 Str_843E382[] = _("トラップ");
-const u8 Str_843E387[] = _("Move your base");
-const u8 Str_843E396[] = _("Moving {PKMN}");
-const u8 Str_843E3A0[] = _("Fishing points");
-const u8 Str_843E3AF[] = _("Set {POKEBLOCK}");
-const u8 Str_843E3B9[] = _("Make bases(to max)");
-const u8 Str_843E3CC[] = _("Base location");
-
-const struct MenuAction _843E3DC[] = {
- { Str_843E36C, debug_sub_815FC54 },
- { Str_843E37A, debug_sub_815F2B4 },
- { Str_843E374, debug_sub_815FC94 },
- { Str_843E387, debug_sub_815FB1C },
- { Str_843E3B9, debug_sub_815F2F4 },
- { Str_843E3CC, debug_sub_815F62C },
- { Str_843E396, debug_sub_815FBE8 },
- { Str_843E3A0, debug_sub_815FE1C },
- { Str_843E3AF, debug_sub_8160D98 },
+static bool8 TopMenu_HandleJoypad(void);
+static bool8 SwitchToPkmnListMenu(void);
+static bool8 MakeBasesToMax(void);
+static bool8 BaseLocation(void);
+static bool8 MoveYourBase_JoypadAction(void);
+static bool8 SwitchToMoveYourBaseSubmenu(void);
+static bool8 MovingPKMN(void);
+static bool8 Give999OfAllBerries(void);
+static bool8 GiveAllDecorations(void);
+static bool8 FishingPoints(void);
+static void NakaGenderTest_PrintSpeciesName(u8);
+static void NakaGenderTest_PrintSpeciesGender(u8);
+static void NakaGenderTest_PrintSpeciesLevel(u8);
+static void NakaGenderTest_JoypadAction(u8);
+static bool8 NakaGenderTest_HandleJoypad(void);
+static u8 NakaGenderTest_ForceRerollPokemon(u8);
+static bool8 SetPokeblock(void);
+
+// =======================================================
+// TOP MENU
+// =======================================================
+
+static const u8 Str_843E36C[] = _("Berries");
+static const u8 Str_843E374[] = _("Goods");
+static const u8 Str_843E37A[] = _("{PKMN} list");
+static const u8 Str_843E382[] = _("トラップ");
+static const u8 Str_843E387[] = _("Move your base");
+static const u8 Str_843E396[] = _("Moving {PKMN}");
+static const u8 Str_843E3A0[] = _("Fishing points");
+static const u8 Str_843E3AF[] = _("Set {POKEBLOCK}");
+static const u8 Str_843E3B9[] = _("Make bases(to max)");
+static const u8 Str_843E3CC[] = _("Base location");
+
+static const struct MenuAction sNakamuraTopMenuActions[] = {
+ { Str_843E36C, Give999OfAllBerries },
+ { Str_843E37A, SwitchToPkmnListMenu },
+ { Str_843E374, GiveAllDecorations },
+ { Str_843E387, SwitchToMoveYourBaseSubmenu },
+ { Str_843E3B9, MakeBasesToMax },
+ { Str_843E3CC, BaseLocation },
+ { Str_843E396, MovingPKMN },
+ { Str_843E3A0, FishingPoints },
+ { Str_843E3AF, SetPokeblock },
};
-const u8 _843E424[][4] = {
- { 1, 118, 47, 14 },
- { 2, 125, 53, 10 },
- { 3, 113, 49, 8 },
- { 0xB, 118, 67, 6 },
- { 0xC, 121, 40, 11 },
- { 0xD, 111, 35, 1 },
- { 0x15, 115, 20, 53 },
- { 0x16, 121, 18, 13 },
- { 0x17, 119, 26, 81 },
- { 0x1F, 127, 59, 67 },
- { 0x20, 125, 55, 11 },
- { 0x21, 111, 27, 27 },
- { 0x29, 114, 9, 47 },
- { 0x2A, 115, 32, 39 },
- { 0x2B, 115, 23, 8 },
- { 0x33, 114, 30, 51 },
- { 0x34, 115, 26, 15 },
- { 0x35, 115, 32, 46 },
- { 0x3D, 114, 11, 62 },
- { 0x3E, 115, 21, 18 },
- { 0x3F, 115, 25, 24 },
- { 0x47, 114, 19, 70 },
- { 0x48, 115, 32, 6 },
- { 0x49, 114, 32, 57 },
- { 0x51, 116, 71, 4 },
- { 0x52, 123, 47, 3 },
- { 0x53, 123, 57, 5 },
- { 0x5B, 116, 79, 11 },
- { 0x5C, 123, 49, 3 },
- { 0x5D, 120, 18, 12 },
- { 0x65, 120, 28, 62 },
- { 0x66, 116, 56, 6 },
- { 0x67, 119, 16, 81 },
- { 0x6F, 120, 30, 62 },
- { 0x70, 116, 55, 15 },
- { 0x71, 119, 16, 28 },
- { 0x79, 111, 33, 34 },
- { 0x7A, 118, 29, 5 },
- { 0x7B, 127, 45, 24 },
- { 0x83, 111, 24, 36 },
- { 0x84, 125, 7, 25 },
- { 0x85, 115, 8, 30 },
- { 0x8D, 111, 34, 50 },
- { 0x8E, 127, 59, 72 },
- { 0x8F, 127, 61, 21 },
- { 0x97, 127, 67, 63 },
- { 0x98, 125, 24, 32 },
- { 0x99, 111, 35, 31 },
- { 0xA1, 111, 13, 19 },
- { 0xA2, 121, 43, 7 },
- { 0xA3, 118, 47, 5 },
- { 0xA4, 111, 14, 19 },
- { 0xAB, 118, 46, 5 },
- { 0xAC, 121, 42, 7 },
- { 0xAD, 119, 19, 76 },
- { 0xAE, 115, 7, 20 },
- { 0xB5, 110, 16, 25 },
- { 0xB6, 114, 11, 27 },
- { 0xB7, 115, 8, 20 },
- { 0xBF, 110, 17, 25 },
- { 0xC0, 114, 12, 27 },
- { 0xC1, 119, 18, 76 },
- { 0xC9, 119, 5, 2 },
- { 0xCA, 119, 4, 89 },
- { 0xCB, 120, 38, 54 },
- { 0xCC, 120, 5, 76 },
- { 0xD3, 119, 5, 15 },
- { 0xD4, 119, 7, 101 },
- { 0xD5, 120, 31, 23 },
- { 0xDD, 119, 34, 24 },
- { 0xDE, 120, 26, 10 },
- { 0xDF, 119, 4, 15 },
- { 0xE7, 119, 31, 73 },
- { 0xE8, 120, 29, 85 },
- { 0xE9, 119, 6, 2 },
+static void DrawNakamuraDebugMenu(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(14, 0, 29, 19);
+ Menu_PrintItems(16, 1, ARRAY_COUNT(sNakamuraTopMenuActions), sNakamuraTopMenuActions);
+ InitMenu(0, 15, 1, ARRAY_COUNT(sNakamuraTopMenuActions), 0, 14);
+}
+
+bool8 InitNakamuraDebugMenu(void)
+{
+ DrawNakamuraDebugMenu();
+ gMenuCallback = TopMenu_HandleJoypad;
+ return FALSE;
+}
+
+static bool8 TopMenu_HandleJoypad(void)
+{
+ if (gMain.newKeys & DPAD_UP)
+ {
+ Menu_MoveCursor(-1);
+ }
+
+ if (gMain.newKeys & DPAD_DOWN)
+ {
+ Menu_MoveCursor(+1);
+ }
+
+ if (gMain.newKeys & A_BUTTON)
+ {
+ MenuFunc func = sNakamuraTopMenuActions[Menu_GetCursorPos()].func;
+ Menu_DestroyCursor();
+ return func();
+ }
+
+ if (gMain.newKeys & B_BUTTON)
+ {
+ CloseMenu();
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+// =======================================================
+// PKMN LIST
+// =======================================================
+
+static void Task_SwitchToPkmnListMenu(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ Debug_CopyLastThreePartyMonsToMultiPartnerParty();
+ OpenPartyMenu(PARTY_MENU_TYPE_LINK_MULTI_BATTLE, 0);
+ DestroyTask(taskId);
+ }
+}
+
+static bool8 SwitchToPkmnListMenu(void)
+{
+ CloseMenu();
+ Menu_EraseScreen();
+ gMain.savedCallback = c2_exit_to_overworld_1_sub_8080DEC;
+ CreateTask(Task_SwitchToPkmnListMenu, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
+ return TRUE;
+}
+
+// =======================================================
+// MAKE BASES TO MAX and BASE LOCATION
+// =======================================================
+
+EWRAM_DATA u8 sSecretBaseIdx = 0;
+
+static const u8 sSecretBaseTemplates[] = {
+ // ID, Route, X, Y
+ 0x01, 118, 47, 14 ,
+ 0x02, 125, 53, 10 ,
+ 0x03, 113, 49, 8 ,
+ 0x0B, 118, 67, 6 ,
+ 0x0C, 121, 40, 11 ,
+ 0x0D, 111, 35, 1 ,
+ 0x15, 115, 20, 53 ,
+ 0x16, 121, 18, 13 ,
+ 0x17, 119, 26, 81 ,
+ 0x1F, 127, 59, 67 ,
+ 0x20, 125, 55, 11 ,
+ 0x21, 111, 27, 27 ,
+ 0x29, 114, 9, 47 ,
+ 0x2A, 115, 32, 39 ,
+ 0x2B, 115, 23, 8 ,
+ 0x33, 114, 30, 51 ,
+ 0x34, 115, 26, 15 ,
+ 0x35, 115, 32, 46 ,
+ 0x3D, 114, 11, 62 ,
+ 0x3E, 115, 21, 18 ,
+ 0x3F, 115, 25, 24 ,
+ 0x47, 114, 19, 70 ,
+ 0x48, 115, 32, 6 ,
+ 0x49, 114, 32, 57 ,
+ 0x51, 116, 71, 4 ,
+ 0x52, 123, 47, 3 ,
+ 0x53, 123, 57, 5 ,
+ 0x5B, 116, 79, 11 ,
+ 0x5C, 123, 49, 3 ,
+ 0x5D, 120, 18, 12 ,
+ 0x65, 120, 28, 62 ,
+ 0x66, 116, 56, 6 ,
+ 0x67, 119, 16, 81 ,
+ 0x6F, 120, 30, 62 ,
+ 0x70, 116, 55, 15 ,
+ 0x71, 119, 16, 28 ,
+ 0x79, 111, 33, 34 ,
+ 0x7A, 118, 29, 5 ,
+ 0x7B, 127, 45, 24 ,
+ 0x83, 111, 24, 36 ,
+ 0x84, 125, 7, 25 ,
+ 0x85, 115, 8, 30 ,
+ 0x8D, 111, 34, 50 ,
+ 0x8E, 127, 59, 72 ,
+ 0x8F, 127, 61, 21 ,
+ 0x97, 127, 67, 63 ,
+ 0x98, 125, 24, 32 ,
+ 0x99, 111, 35, 31 ,
+ 0xA1, 111, 13, 19 ,
+ 0xA2, 121, 43, 7 ,
+ 0xA3, 118, 47, 5 ,
+ 0xA4, 111, 14, 19 ,
+ 0xAB, 118, 46, 5 ,
+ 0xAC, 121, 42, 7 ,
+ 0xAD, 119, 19, 76 ,
+ 0xAE, 115, 7, 20 ,
+ 0xB5, 110, 16, 25 ,
+ 0xB6, 114, 11, 27 ,
+ 0xB7, 115, 8, 20 ,
+ 0xBF, 110, 17, 25 ,
+ 0xC0, 114, 12, 27 ,
+ 0xC1, 119, 18, 76 ,
+ 0xC9, 119, 5, 2 ,
+ 0xCA, 119, 4, 89 ,
+ 0xCB, 120, 38, 54 ,
+ 0xCC, 120, 5, 76 ,
+ 0xD3, 119, 5, 15 ,
+ 0xD4, 119, 7, 101 ,
+ 0xD5, 120, 31, 23 ,
+ 0xDD, 119, 34, 24 ,
+ 0xDE, 120, 26, 10 ,
+ 0xDF, 119, 4, 15 ,
+ 0xE7, 119, 31, 73 ,
+ 0xE8, 120, 29, 85 ,
+ 0xE9, 119, 6, 2 ,
};
-const u8 Str_843E550[] = _("R");
-const u8 Str_843E552[] = _("X");
-const u8 Str_843E554[] = _("Y");
-const u8 Str_843E556[] = _(
- "♂1\n"
- "♂2\n"
- "♂3\n"
- "♂4\n"
- "♂5\n"
- "♀1\n"
- "♀2\n"
- "♀3\n"
- "♀4\n"
- "♀5");
-const u8 Str_843E574[] = _("ー");
-const u8 Str_843E576[] = _("あ");
-const u8 Str_843E578[] = _("ア");
-const u8 Str_843E57A[] = _("A");
-const u8 Str_843E57C[] = _("a");
-const u8 Str_843E57E[] = _("0");
-const u8 Str_843E580[] = _(
- "ADD\n"
- "DEL\n"
- "EXIT");
-const u8 Str_843E58D[] = _(
- "Fishing location R119\n"
- " Y1\n"
- " Y2\n"
- " Y3\n"
- "Encounter location\n"
- "\n"
- "\n"
- "front of you");
-const u8 _843E5D1[] = {0x0F, 0x16, 0x19};
-const u8 Str_843E5D4[] = _(
- "Aボタン {ESCAPE}\p"
- "  Bボタン ー\n"
- "START けってい");
-const u8 Str_843E5F0[] = _("?");
-const u8 Str_843E5F2[] = _("HP どりょくち");
-const u8 Str_843E5FB[] = _("こうげき どりょくち");
-const u8 Str_843E606[] = _("ぼうぎょ どりょくち");
-const u8 Str_843E611[] = _("すばやさ どりょくち");
-const u8 Str_843E61C[] = _("とくこう どりょくち");
-const u8 Str_843E627[] = _("とくぼう どりょくち");
-const u8 Str_843E632[] = _("なつきど");
-const u8 Str_843E637[] = _("どりょくち ごうけい");
-const u8 Str_843E642[] = _("ここから");
-const u8 Str_843E647[] = _("ここまで");
-const u8 Str_843E64C[] = _("かいすう");
-const u8 Str_843E651[] = _("けっか");
-const u8 Str_843E655[] = _("かい");
-const u8 Str_843E658[] = _("0");
-const u8 Str_843E65A[] = _("はんい");
+static const u8 Str_843E550[] = _("R");
+static const u8 Str_843E552[] = _("X");
+static const u8 Str_843E554[] = _("Y");
+static const u8 Str_843E556[] = _(
+ "♂1\n"
+ "♂2\n"
+ "♂3\n"
+ "♂4\n"
+ "♂5\n"
+ "♀1\n"
+ "♀2\n"
+ "♀3\n"
+ "♀4\n"
+ "♀5");
+
+static bool8 MakeBasesToMax(void)
+{
+ u8 i;
+ CloseMenu();
+
+ for (i = 1; i < 20; i++)
+ {
+ if (gSaveBlock1.secretBases[i].secretBaseId == 0)
+ {
+ u8 j;
+
+ for (j = 0; j < 7; j++)
+ {
+ gSaveBlock1.secretBases[i].playerName[j] = gSaveBlock2.playerName[j];
+ if (gSaveBlock1.secretBases[i].playerName[j] == EOS)
+ break;
+ }
+
+ if (j == 7)
+ gSaveBlock1.secretBases[i].playerName[j - 1] = CHAR_A + i - 1;
+ else
+ gSaveBlock1.secretBases[i].playerName[j] = CHAR_A + i - 1;
+
+ do
+ {
+ gSaveBlock1.secretBases[i].secretBaseId = sSecretBaseTemplates[(Random() % (ARRAY_COUNT(sSecretBaseTemplates) / 4)) * 4];
+
+ for (j = 0; j < i; j++)
+ {
+ if (gSaveBlock1.secretBases[i].secretBaseId == gSaveBlock1.secretBases[j].secretBaseId)
+ break;
+ }
+ } while (j != i);
+
+ gSaveBlock1.secretBases[i].gender = Random() % 2;
+
+ for (j = 0; j < 4; j++)
+ {
+ gSaveBlock1.secretBases[i].trainerId[j] = Random();
+ }
+
+ for (j = 0; j < 16; j++)
+ {
+ gSaveBlock1.secretBases[i].decorations[j] = 0;
+ gSaveBlock1.secretBases[i].decorationPos[j] = 0;
+ }
+
+ unref_sub_80BCD7C(i);
+ }
+ }
+
+ return TRUE;
+}
+
+static void BaseLocation_GetCurSecretBaseData(u8 * R, u8 * X, u8 * Y)
+{
+ u8 i;
+ u8 sbId = gSaveBlock1.secretBases[sSecretBaseIdx].secretBaseId;
+
+ for (i = 0; i < ARRAY_COUNT(sSecretBaseTemplates) / 4; i++)
+ {
+ if (sSecretBaseTemplates[i * 4] == sbId)
+ {
+ *R = sSecretBaseTemplates[i * 4 + 1];
+ *X = sSecretBaseTemplates[i * 4 + 2];
+ *Y = sSecretBaseTemplates[i * 4 + 3];
+ break;
+ }
+ }
+}
+
+static void BaseLocation_Redraw(void)
+{
+ Menu_BlankWindowRect(1, 1, 10, 10);
+ ConvertIntToDecimalStringN(gStringVar1, sSecretBaseIdx, STR_CONV_MODE_LEFT_ALIGN, 2);
+ Menu_PrintText(gStringVar1, 1, 1);
+
+ if (gSaveBlock1.secretBases[sSecretBaseIdx].secretBaseId != 0)
+ {
+ u8 R;
+ u8 X;
+ u8 Y;
+ BaseLocation_GetCurSecretBaseData(&R, &X, &Y);
+
+ sub_80BC190(gStringVar1, sSecretBaseIdx);
+ Menu_PrintText(gStringVar1, 1, 3);
+
+ Menu_PrintText(Str_843E550, 1, 5);
+ ConvertIntToDecimalStringN(gStringVar1, R, STR_CONV_MODE_LEFT_ALIGN, 3);
+ Menu_PrintText(gStringVar1, 2, 5);
+
+ Menu_PrintText(Str_843E552, 1, 7);
+ ConvertIntToDecimalStringN(gStringVar1, X, STR_CONV_MODE_LEFT_ALIGN, 3);
+ Menu_PrintText(gStringVar1, 3, 7);
+
+ Menu_PrintText(Str_843E554, 1, 9);
+ ConvertIntToDecimalStringN(gStringVar1, Y, STR_CONV_MODE_LEFT_ALIGN, 3);
+ Menu_PrintText(gStringVar1, 3, 9);
+ }
+}
+
+static bool8 BaseLocation_HandleJoypad(void)
+{
+ if (gMain.newKeys & DPAD_LEFT)
+ {
+ if (sSecretBaseIdx == 0)
+ sSecretBaseIdx = 19;
+ else
+ sSecretBaseIdx--;
+ BaseLocation_Redraw();
+ return FALSE;
+ }
+
+ if (gMain.newKeys & DPAD_RIGHT)
+ {
+ if (sSecretBaseIdx == 19)
+ sSecretBaseIdx = 0;
+ else
+ sSecretBaseIdx++;
+ BaseLocation_Redraw();
+ return FALSE;
+ }
+
+ if (gMain.newKeys & B_BUTTON)
+ {
+ CloseMenu();
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static bool8 BaseLocation(void)
+{
+ sSecretBaseIdx = 0;
+ gMenuCallback = BaseLocation_HandleJoypad;
+ Menu_EraseWindowRect(0, 0, 29, 19);
+ Menu_DrawStdWindowFrame(0, 0, 11, 11);
+ BaseLocation_Redraw();
+ return FALSE;
+}
+
+// =======================================================
+// MOVE YOUR BASE
+// =======================================================
+
+EWRAM_DATA u8 sMoveYourBase_CursorPos = 0;
+EWRAM_DATA u8 sMoveYourBase_XCursorPos = 0;
+EWRAM_DATA u8 sSecretBaseNameCharGroup = 0;
+
+static const u8 Str_843E574[] = _("ー");
+static const u8 Str_843E576[][2] = {
+ _("あ"),
+ _("ア"),
+ _("A"),
+ _("a"),
+ _("0")
+};
+
+static void MoveYourBase_PrintSBOwnerID(void)
+{
+ u8 * otIdPtr = gSaveBlock1.secretBases[sSecretBaseIdx].trainerId;
+ u32 otId = (otIdPtr[3] << 24) | (otIdPtr[2] << 16) | (otIdPtr[1] << 8) | (otIdPtr[0] << 0);
+ ConvertIntToDecimalStringN(gStringVar1, otId / 100000, STR_CONV_MODE_LEADING_ZEROS, 5);
+ Menu_PrintText(gStringVar1, 2, 7);
+ ConvertIntToDecimalStringN(gStringVar1, otId % 100000, STR_CONV_MODE_LEADING_ZEROS, 5);
+ Menu_PrintText(gStringVar1, 7, 7);
+}
+
+static void MoveYourBase_PrintSBOwnerName(void)
+{
+ Menu_BlankWindowRect(2, 3, 11, 4);
+ *StringCopyN(gStringVar1, gSaveBlock1.secretBases[sSecretBaseIdx].playerName, 7) = EOS;
+ Menu_PrintText(gStringVar1, 2, 3);
+}
+
+static void MoveYourBase_Redraw(void)
+{
+ Menu_BlankWindowRect(2, 1, 11, 10);
+
+ ConvertIntToDecimalStringN(gStringVar1, sSecretBaseIdx, STR_CONV_MODE_LEFT_ALIGN, 2);
+ Menu_PrintText(gStringVar1, 2, 1);
+
+ if (gSaveBlock1.secretBases[sSecretBaseIdx].secretBaseId != 0)
+ {
+ MoveYourBase_PrintSBOwnerName();
+ MoveYourBase_PrintSBOwnerID();
+ }
+}
+
+static void MoveYourBase_UpdateXCursorPosition(void)
+{
+ Menu_BlankWindowRect(2, 5, 11, 6);
+ Menu_PrintText(Str_843E574, sMoveYourBase_XCursorPos + 2, 5);
+}
+
+static void MoveYourBase_PrintCharacterSetName(void)
+{
+ if (sMoveYourBase_CursorPos)
+ Menu_BlankWindowRect(11, 1, 11, 2);
+ else
+ Menu_PrintText(Str_843E576[sSecretBaseNameCharGroup], 11, 1);
+}
+
+static void MoveYourBase_EditOwnerID(s8 direction)
+{
+ u8 * otIdPtr = gSaveBlock1.secretBases[sSecretBaseIdx].trainerId;
+ u32 otId = (otIdPtr[3] << 24) | (otIdPtr[2] << 16) | (otIdPtr[1] << 8) | (otIdPtr[0] << 0);
+ s8 digit;
+ int r1 = direction;
+
+ for (digit = 9; digit > sMoveYourBase_XCursorPos; digit--)
+ r1 *= 10;
+
+ otId += r1;
+ otIdPtr[3] = (otId & 0xFF000000) >> 24;
+ otIdPtr[2] = (otId & 0x00FF0000) >> 16;
+ otIdPtr[1] = (otId & 0x0000FF00) >> 8;
+ otIdPtr[0] = (otId & 0x000000FF) >> 0;
+ MoveYourBase_PrintSBOwnerID();
+}
+
+static void MoveYourBase_EditOwnerNameChar(s8 a0)
+{
+ u8 * namePtr = gSaveBlock1.secretBases[sSecretBaseIdx].playerName;
+ u8 r2 = 0;
+ u8 r3 = 0;
+ u8 i;
+
+ if (a0 == 100)
+ {
+ for (i = sMoveYourBase_XCursorPos; i < 7; i++)
+ {
+ namePtr[i] = EOS;
+ }
+ }
+ else
+ {
+ switch (sSecretBaseNameCharGroup)
+ {
+ case 0: // HIRA
+ r3 = 1;
+ r2 = 80;
+ break;
+ case 1: // KATA
+ r3 = 81;
+ r2 = 160;
+ break;
+ case 2: // A-Z
+ r3 = CHAR_A;
+ r2 = CHAR_Z;
+ break;
+ case 3: // a-z
+ r3 = CHAR_a;
+ r2 = CHAR_z;
+ break;
+ case 4: // 0-9
+ r3 = CHAR_0;
+ r2 = CHAR_0 + 9;
+ break;
+ }
+
+ namePtr[sMoveYourBase_XCursorPos] += a0;
+ if (namePtr[sMoveYourBase_XCursorPos] < r3)
+ namePtr[sMoveYourBase_XCursorPos] = r2;
+ if (namePtr[sMoveYourBase_XCursorPos] > r2)
+ namePtr[sMoveYourBase_XCursorPos] = r3;
+ }
+ MoveYourBase_PrintSBOwnerName();
+}
+
+static bool8 MoveYourBase_HandleJoypad_2(void)
+{
+ u32 r4 = sMoveYourBase_CursorPos == 0 ? 7 : 10;
+
+ if (gMain.newAndRepeatedKeys & DPAD_UP)
+ {
+ if (sMoveYourBase_CursorPos)
+ MoveYourBase_EditOwnerID(1);
+ else
+ MoveYourBase_EditOwnerNameChar(1);
+ return FALSE;
+ }
+
+ if (gMain.newAndRepeatedKeys & DPAD_DOWN)
+ {
+ if (sMoveYourBase_CursorPos)
+ MoveYourBase_EditOwnerID(-1);
+ else
+ MoveYourBase_EditOwnerNameChar(-1);
+ return FALSE;
+ }
+
+ if (gMain.newAndRepeatedKeys & DPAD_LEFT)
+ {
+ if (sMoveYourBase_XCursorPos == 0)
+ sMoveYourBase_XCursorPos = r4 - 1;
+ else
+ sMoveYourBase_XCursorPos--;
+ MoveYourBase_UpdateXCursorPosition();
+ return FALSE;
+ }
+
+ if (gMain.newAndRepeatedKeys & DPAD_RIGHT)
+ {
+ if (sMoveYourBase_XCursorPos == r4 - 1)
+ sMoveYourBase_XCursorPos = 0;
+ else
+ sMoveYourBase_XCursorPos++;
+ MoveYourBase_UpdateXCursorPosition();
+ return FALSE;
+ }
+
+ if (gMain.newKeys & SELECT_BUTTON)
+ {
+ if (sMoveYourBase_CursorPos == 0)
+ sSecretBaseNameCharGroup = (sSecretBaseNameCharGroup + 1) % 5;
+ MoveYourBase_PrintCharacterSetName();
+ return FALSE;
+ }
+
+ if (gMain.newKeys & A_BUTTON)
+ {
+ Menu_BlankWindowRect(2, 5, 11, 6);
+ Menu_BlankWindowRect(11, 1, 11, 2);
+ gMenuCallback = MoveYourBase_JoypadAction;
+ return FALSE;
+ }
+
+ if (gMain.newKeys & B_BUTTON)
+ {
+ if (sMoveYourBase_CursorPos == 0)
+ MoveYourBase_EditOwnerNameChar(100);
+ return FALSE;
+ }
+
+ return FALSE;
+}
+
+static bool8 MoveYourBase_JoypadAction(void)
+{
+ if (gMain.newKeys & DPAD_UP)
+ {
+ Menu_MoveCursor(-2);
+ return FALSE;
+ }
+
+ if (gMain.newKeys & DPAD_DOWN)
+ {
+ Menu_MoveCursor(+2);
+ return FALSE;
+ }
+
+ if (gMain.newKeys & DPAD_LEFT)
+ {
+ if (sSecretBaseIdx == 0)
+ sSecretBaseIdx = 19;
+ else
+ sSecretBaseIdx--;
+ MoveYourBase_Redraw();
+ return FALSE;
+ }
+
+ if (gMain.newKeys & DPAD_RIGHT)
+ {
+ if (sSecretBaseIdx == 19)
+ sSecretBaseIdx = 0;
+ else
+ sSecretBaseIdx++;
+ MoveYourBase_Redraw();
+ return FALSE;
+ }
+
+ if (gMain.newKeys & A_BUTTON)
+ {
+ if (sSecretBaseIdx != 0 && gSaveBlock1.secretBases[sSecretBaseIdx].secretBaseId != 0)
+ {
+ sMoveYourBase_CursorPos = Menu_GetCursorPos();
+ sMoveYourBase_XCursorPos = 0;
+ MoveYourBase_UpdateXCursorPosition();
+ MoveYourBase_PrintCharacterSetName();
+ gMenuCallback = MoveYourBase_HandleJoypad_2;
+ }
+ return FALSE;
+ }
+
+ if (gMain.newKeys & B_BUTTON)
+ {
+ CloseMenu();
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static bool8 SwitchToMoveYourBaseSubmenu(void)
+{
+ sSecretBaseIdx = 0;
+ sSecretBaseNameCharGroup = 0;
+ gMenuCallback = MoveYourBase_JoypadAction;
+ Menu_EraseWindowRect(0, 0, 29, 19);
+ Menu_DrawStdWindowFrame(0, 0, 12, 11);
+ MoveYourBase_Redraw();
+ InitMenu(0, 1, 3, 3, 0, 11);
+ return FALSE;
+}
+
+// =======================================================
+// MOVING PKMN (aka Roamers)
+// =======================================================
+
+static const u8 Str_843E580[] = _(
+ "ADD\n"
+ "DEL\n"
+ "EXIT");
+
+static bool8 MovingPKMN_HandleJoypad(void)
+{
+ if (gMain.newKeys & DPAD_UP)
+ {
+ Menu_MoveCursor(-1);
+ return FALSE;
+ }
+
+ if (gMain.newKeys & DPAD_DOWN)
+ {
+ Menu_MoveCursor(+1);
+ return FALSE;
+ }
+
+ if (gMain.newKeys & A_BUTTON)
+ {
+ CloseMenu();
+ switch (Menu_GetCursorPos())
+ {
+ case 0:
+ Debug_CreateRoamer();
+ break;
+ case 1:
+ ClearRoamerData();
+ ClearRoamerLocationData();
+ break;
+ }
+ return TRUE;
+ }
+
+ if (gMain.newKeys & B_BUTTON)
+ {
+ CloseMenu();
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static bool8 MovingPKMN(void)
+{
+ gMenuCallback = MovingPKMN_HandleJoypad;
+ Menu_EraseWindowRect(0, 0, 29, 19);
+ Debug_GetRoamerLocation(gStringVar1);
+ Menu_DrawStdWindowFrame(0, 0, 11, 9);
+ Menu_PrintText(gStringVar1, 1, 1);
+ Menu_PrintText(Str_843E580, 2, 3);
+ InitMenu(0, 1, 3, 3, 0, 10);
+ return FALSE;
+}
+
+// =======================================================
+// GIVE ALL BERRIES
+// =======================================================
+
+static bool8 Give999OfAllBerries(void)
+{
+ u16 i;
+
+ for (i = 0; i < 43; i++)
+ {
+ gSaveBlock1.bagPocket_Berries[i].itemId = ITEM_CHERI_BERRY + i;
+ gSaveBlock1.bagPocket_Berries[i].quantity = 999;
+ }
+
+ CloseMenu();
+ return TRUE;
+}
+
+// =======================================================
+// GIVE ALL DECORATIONS
+// =======================================================
+
+static bool8 GiveAllDecorations(void)
+{
+ ClearDecorationInventories();
+ Debug_GiveAllDecorations();
+ Menu_EraseWindowRect(0, 0, 29, 19);
+ CloseMenu();
+ return TRUE;
+}
+
+// =======================================================
+// FISHING POINTS (Feebas)
+// =======================================================
+
+static const u8 Str_843E58D[] = _(
+ "Fishing location R119\n"
+ " Y1\n"
+ " Y2\n"
+ " Y3\n"
+ "Encounter location\n"
+ "\n"
+ "\n"
+ "front of you");
+
+static u16 FishingPoints_CountFishingTilesInMapThird(u8 a0)
+{
+ u16 retval = 0;
+ u16 height = gMapHeader.mapLayout->height / 3;
+ u16 y;
+ u16 x;
+ u16 start = height * a0;
+
+ for (y = start; y < start + height; y++)
+ {
+ for (x = 0; x < gMapHeader.mapLayout->width; x++)
+ {
+ if (MetatileBehavior_IsFeebasEncounterable(MapGridGetMetatileBehaviorAt(x + 7, y + 7)) == TRUE)
+ {
+ retval++;
+ }
+ }
+ }
+
+ return retval;
+}
+
+static u16 FishingPoints_GetIndexOfCurrentFishingSpot(void)
+{
+ u16 retval = 0;
+ s16 x;
+ s16 y;
+ u16 xx;
+ u16 yy;
+
+ GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
+ x -= 7;
+ y -= 7;
+
+ for (yy = 0; yy < gMapHeader.mapLayout->height; yy++)
+ {
+ for (xx = 0; xx < gMapHeader.mapLayout->width; xx++)
+ {
+ if (MetatileBehavior_IsFeebasEncounterable(MapGridGetMetatileBehaviorAt(xx + 7, yy + 7)) == TRUE)
+ {
+ retval++;
+ if (x == xx && y == yy)
+ return retval;
+ }
+ }
+ }
+ return retval + 1;
+}
+
+static bool8 FishingPoints_HandleJoypad(void)
+{
+ if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON)
+ {
+ Menu_EraseWindowRect(0, 0, 29, 19);
+ CloseMenu();
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static bool8 FishingPoints(void)
+{
+ u16 nWaterTiles;
+ u16 nFeebas;
+
+ Menu_EraseWindowRect(0, 0, 29, 19);
+ Menu_DrawStdWindowFrame(0, 0, 16, 19);
+ Menu_PrintText(Str_843E58D, 1, 1);
+
+ ConvertIntToDecimalStringN(gStringVar1, FishingPoints_CountFishingTilesInMapThird(0), STR_CONV_MODE_RIGHT_ALIGN, 5);
+ Menu_PrintText(gStringVar1, 5, 3);
+
+ ConvertIntToDecimalStringN(gStringVar1, FishingPoints_CountFishingTilesInMapThird(1), STR_CONV_MODE_RIGHT_ALIGN, 5);
+ Menu_PrintText(gStringVar1, 5, 5);
+
+ ConvertIntToDecimalStringN(gStringVar1, FishingPoints_CountFishingTilesInMapThird(2), STR_CONV_MODE_RIGHT_ALIGN, 5);
+ Menu_PrintText(gStringVar1, 5, 7);
+
+ ConvertIntToDecimalStringN(gStringVar1, FeebasDebug_GetTrueNumberOfWaterTilesInMapThird(0), STR_CONV_MODE_RIGHT_ALIGN, 5);
+ Menu_PrintText(gStringVar1, 11, 3);
+
+ ConvertIntToDecimalStringN(gStringVar1, FeebasDebug_GetTrueNumberOfWaterTilesInMapThird(1), STR_CONV_MODE_RIGHT_ALIGN, 5);
+ Menu_PrintText(gStringVar1, 11, 5);
+
+ ConvertIntToDecimalStringN(gStringVar1, FeebasDebug_GetTrueNumberOfWaterTilesInMapThird(2), STR_CONV_MODE_RIGHT_ALIGN, 5);
+ Menu_PrintText(gStringVar1, 11, 7);
+
+ FeebasSeedRng(gSaveBlock1.easyChatPairs[0].unk2);
+ nWaterTiles = FishingPoints_CountFishingTilesInMapThird(0) + FishingPoints_CountFishingTilesInMapThird(1) + FishingPoints_CountFishingTilesInMapThird(2);
+ nFeebas = 0;
+
+ while (nFeebas != 6)
+ {
+ u16 randTile = FeebasRandom() % nWaterTiles;
+ if (randTile == 0)
+ randTile = nWaterTiles;
+ if (randTile == 0 || randTile > 3)
+ {
+ ConvertIntToDecimalStringN(gStringVar1, randTile, STR_CONV_MODE_RIGHT_ALIGN, 4);
+ Menu_PrintText(gStringVar1, (nFeebas % 3) * 5 + 2, (nFeebas / 3) * 2 + 11);
+ nFeebas++;
+ }
+ }
+
+ ConvertIntToDecimalStringN(gStringVar1, FishingPoints_GetIndexOfCurrentFishingSpot(), STR_CONV_MODE_RIGHT_ALIGN, 4);
+ Menu_PrintText(gStringVar1, 2, 17);
+
+ gMenuCallback = FishingPoints_HandleJoypad;
+
+ return FALSE;
+}
+
+// =======================================================
+// GENDER TEST?
+// =======================================================
+
+static struct {
+ s16 species;
+ s8 level;
+ u8 unk3;
+} sNakaGenderTestData[PARTY_SIZE];
+
+EWRAM_DATA u8 sNakaGenderTest_CursorPosition = 0;
+static const u8 _843E5D1[] = {0x0F, 0x16, 0x19};
+static const u8 Str_843E5D4[] = _(
+ "Aボタン {ESCAPE}\p"
+ "  Bボタン ー\n"
+ "START けってい");
+
+void NakaGenderTest(void)
+{
+ u8 i;
+
+ Menu_DrawStdWindowFrame(14, 0, 29, 13);
+ Menu_DrawStdWindowFrame(0, 14, 29, 19);
+ Menu_PrintText(Str_843E5D4, 1, 15);
+
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ sNakaGenderTestData[i].species = GetMonData(gPlayerParty + i, MON_DATA_SPECIES);
+ if (sNakaGenderTestData[i].species != SPECIES_NONE)
+ {
+ sNakaGenderTestData[i].level = GetMonData(gPlayerParty + i, MON_DATA_LEVEL);
+ NakaGenderTest_PrintSpeciesName(i);
+ NakaGenderTest_PrintSpeciesGender(i);
+ NakaGenderTest_PrintSpeciesLevel(i);
+ }
+ else
+ sNakaGenderTestData[i].level = 1;
+ sNakaGenderTestData[i].unk3 = 0;
+ }
+
+ sNakaGenderTest_CursorPosition = 0;
+ PrintTriangleCursorWithPalette(15, 1, 0xFF);
+ gMenuCallback = NakaGenderTest_HandleJoypad;
+}
+
+static void NakaGenderTest_PrintSpeciesName(u8 i)
+{
+ Menu_PrintText(gSpeciesNames[sNakaGenderTestData[i].species], 16, 2 * i + 1);
+}
+
+static void NakaGenderTest_PrintSpeciesGender(u8 i)
+{
+ u8 sp0[] = _("?");
+ u8 gender;
+
+ gender = GetMonGender(gPlayerParty + i);
+ if (gender == MON_MALE)
+ Menu_PrintText(gOtherText_MaleSymbol2, 23, 2 * i + 1);
+ else if (gender == MON_FEMALE)
+ Menu_PrintText(gOtherText_FemaleSymbolAndLv, 23, 2 * i + 1);
+ else
+ Menu_PrintText(sp0, 23, 2 * i + 1);
+}
+
+static void NakaGenderTest_PrintSpeciesLevel(u8 i)
+{
+ ConvertIntToDecimalStringN(gStringVar1, sNakaGenderTestData[i].level, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ Menu_PrintText(gStringVar1, 26, 2 * i + 1);
+}
+
+static void NakaGenderTest_RedrawCurrent(u8 i)
+{
+ Menu_BlankWindowRect(16, 2 * i + 1, 28, 2 * i + 2);
+ if (sNakaGenderTestData[i].species != SPECIES_NONE)
+ {
+ NakaGenderTest_PrintSpeciesName(i);
+ NakaGenderTest_PrintSpeciesGender(i);
+ NakaGenderTest_PrintSpeciesLevel(i);
+ }
+ NakaGenderTest_JoypadAction(5);
+}
+
+static void NakaGenderTest_AdjustSpecies(u8 i, s8 dirn)
+{
+ if (sNakaGenderTestData[i].species == SPECIES_NONE && sNakaGenderTestData[i].unk3 == 0 && dirn == 1)
+ sNakaGenderTestData[i].species = SPECIES_TREECKO - 1;
+ sNakaGenderTestData[i].species += dirn;
+ if (sNakaGenderTestData[i].species >= SPECIES_CHIMECHO)
+ sNakaGenderTestData[i].species -= SPECIES_CHIMECHO;
+ if (sNakaGenderTestData[i].species < 0)
+ sNakaGenderTestData[i].species += SPECIES_CHIMECHO;
+ CreateMon(gPlayerParty + i, sNakaGenderTestData[i].species, sNakaGenderTestData[i].level, 0x20, FALSE, 0, FALSE, 0);
+ sNakaGenderTestData[i].unk3 = 1;
+}
+
+static void NakaGenderTest_RerollPokemon(u8 i)
+{
+ if (sNakaGenderTestData[i].species != SPECIES_NONE)
+ NakaGenderTest_ForceRerollPokemon(i);
+}
+
+static void NakaGenderTest_AdjustLevel(u8 i, s8 dirn)
+{
+ if (sNakaGenderTestData[i].species != SPECIES_NONE)
+ {
+ sNakaGenderTestData[i].level += dirn;
+ if (sNakaGenderTestData[i].level > 100)
+ sNakaGenderTestData[i].level = 1;
+ if (sNakaGenderTestData[i].level < 1)
+ sNakaGenderTestData[i].level = 100;
+ SetMonData(gPlayerParty + i, MON_DATA_EXP, gExperienceTables[gBaseStats[sNakaGenderTestData[i].species].growthRate] + sNakaGenderTestData[i].level);
+ Nakamura_NakaGenderTest_RecalcStats(gPlayerParty + i);
+ }
+}
+
+static void NakaGenderTest_PartyCompactionEnsureAtLeastOne(void)
+{
+ u8 i;
+ u8 j;
+
+ Menu_EraseWindowRect(0, 0, 29, 19);
+ for (i = 0; i < 5; i++)
+ {
+ for (j = i + 1; j < 6; j++)
+ {
+ if (GetMonData(gPlayerParty + i, MON_DATA_SPECIES, NULL) == SPECIES_NONE)
+ {
+ struct Pokemon tmp = gPlayerParty[i];
+ gPlayerParty[i] = gPlayerParty[j];
+ gPlayerParty[j] = tmp;
+ }
+ }
+ }
+ CalculatePlayerPartyCount();
+ if (gPlayerPartyCount == 0)
+ {
+ CreateMon(gPlayerParty + 0, SPECIES_BULBASAUR, 10, 0x20, FALSE, 0, FALSE, 0);
+ gPlayerPartyCount = 1;
+ }
+}
+
+static void NakaGenderTest_JoypadAction(u8 i)
+{
+ u8 q;
+ u8 r;
+ PlaySE(SE_SELECT);
+ q = sNakaGenderTest_CursorPosition / 6;
+ r = sNakaGenderTest_CursorPosition % 6;
+ Menu_BlankWindowRect(_843E5D1[q], r * 2 + 1, _843E5D1[q], r * 2 + 2);
+
+ if (i == 0)
+ {
+ if (r != 0)
+ sNakaGenderTest_CursorPosition--;
+ else
+ sNakaGenderTest_CursorPosition = q * 6 + 5;
+ }
+
+ if (i == 1)
+ {
+ if (r != 5)
+ sNakaGenderTest_CursorPosition++;
+ else
+ sNakaGenderTest_CursorPosition = q * 6;
+ }
+
+ if (i == 2)
+ {
+ if (q != 0)
+ sNakaGenderTest_CursorPosition -= 6;
+ else
+ sNakaGenderTest_CursorPosition = 12 + r;
+ }
+
+ if (i == 3)
+ {
+ if (q != 2)
+ sNakaGenderTest_CursorPosition += 6;
+ else
+ sNakaGenderTest_CursorPosition = r;
+ }
+
+ q = sNakaGenderTest_CursorPosition / 6;
+ r = sNakaGenderTest_CursorPosition % 6;
+ PrintTriangleCursorWithPalette(_843E5D1[q], r * 2 + 1, 0xFF);
+}
+
+static bool8 NakaGenderTest_HandleJoypad(void)
+{
+ if (gMain.newKeys & DPAD_UP)
+ {
+ NakaGenderTest_JoypadAction(0);
+ return FALSE;
+ }
+
+ if (gMain.newKeys & DPAD_DOWN)
+ {
+ NakaGenderTest_JoypadAction(1);
+ return FALSE;
+ }
+
+ if (gMain.newKeys & DPAD_LEFT)
+ {
+ NakaGenderTest_JoypadAction(2);
+ return FALSE;
+ }
+
+ if (gMain.newKeys & DPAD_RIGHT)
+ {
+ NakaGenderTest_JoypadAction(3);
+ return FALSE;
+ }
+
+ if (gMain.newAndRepeatedKeys & A_BUTTON)
+ {
+ if (sNakaGenderTest_CursorPosition < 6)
+ NakaGenderTest_AdjustSpecies(sNakaGenderTest_CursorPosition, +1);
+ if (sNakaGenderTest_CursorPosition >= 6 && sNakaGenderTest_CursorPosition < 12)
+ NakaGenderTest_RerollPokemon(sNakaGenderTest_CursorPosition % 6);
+ if (sNakaGenderTest_CursorPosition >= 12 && sNakaGenderTest_CursorPosition < 18)
+ NakaGenderTest_AdjustLevel(sNakaGenderTest_CursorPosition % 6, +1);
+ NakaGenderTest_RedrawCurrent(sNakaGenderTest_CursorPosition % 6);
+ return FALSE;
+ }
+
+ if (gMain.newAndRepeatedKeys & B_BUTTON)
+ {
+ if (sNakaGenderTest_CursorPosition < 6)
+ NakaGenderTest_AdjustSpecies(sNakaGenderTest_CursorPosition, -1);
+ if (sNakaGenderTest_CursorPosition >= 6 && sNakaGenderTest_CursorPosition < 12)
+ NakaGenderTest_RerollPokemon(sNakaGenderTest_CursorPosition % 6);
+ if (sNakaGenderTest_CursorPosition >= 12 && sNakaGenderTest_CursorPosition < 18)
+ NakaGenderTest_AdjustLevel(sNakaGenderTest_CursorPosition % 6, -1);
+ NakaGenderTest_RedrawCurrent(sNakaGenderTest_CursorPosition % 6);
+ return FALSE;
+ }
+
+ if (gMain.newAndRepeatedKeys & R_BUTTON)
+ {
+ if (sNakaGenderTest_CursorPosition < 6)
+ NakaGenderTest_AdjustSpecies(sNakaGenderTest_CursorPosition, +10);
+ if (sNakaGenderTest_CursorPosition >= 6 && sNakaGenderTest_CursorPosition < 12)
+ NakaGenderTest_RerollPokemon(sNakaGenderTest_CursorPosition % 6);
+ if (sNakaGenderTest_CursorPosition >= 12 && sNakaGenderTest_CursorPosition < 18)
+ NakaGenderTest_AdjustLevel(sNakaGenderTest_CursorPosition % 6, +1);
+ NakaGenderTest_RedrawCurrent(sNakaGenderTest_CursorPosition % 6);
+ return FALSE;
+ }
+
+ if (gMain.newAndRepeatedKeys & L_BUTTON)
+ {
+ if (sNakaGenderTest_CursorPosition < 6)
+ NakaGenderTest_AdjustSpecies(sNakaGenderTest_CursorPosition, -10);
+ if (sNakaGenderTest_CursorPosition >= 6 && sNakaGenderTest_CursorPosition < 12)
+ NakaGenderTest_RerollPokemon(sNakaGenderTest_CursorPosition % 6);
+ if (sNakaGenderTest_CursorPosition >= 12 && sNakaGenderTest_CursorPosition < 18)
+ NakaGenderTest_AdjustLevel(sNakaGenderTest_CursorPosition % 6, -1);
+ NakaGenderTest_RedrawCurrent(sNakaGenderTest_CursorPosition % 6);
+ return FALSE;
+ }
+
+ if (gMain.newKeys & START_BUTTON)
+ {
+ NakaGenderTest_PartyCompactionEnsureAtLeastOne();
+ CloseMenu();
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static u8 NakaGenderTest_ForceRerollPokemon(u8 i)
+{
+ u16 species = GetMonData(gPlayerParty + i, MON_DATA_SPECIES);
+ u8 gender = GetMonGender(gPlayerParty + i);
+ u8 ratio = gBaseStats[species].genderRatio;
+ u32 personality;
+
+ if (ratio == MON_MALE || ratio == MON_FEMALE || ratio == MON_GENDERLESS)
+ return GetMonGender(gPlayerParty + i);
+
+ switch (gender)
+ {
+ default:
+ return MON_MALE;
+ case MON_MALE:
+ ratio = MON_FEMALE;
+ break;
+ case MON_FEMALE:
+ ratio = MON_MALE;
+ break;
+ }
+
+ do
+ {
+ personality = Random();
+ personality |= (Random() << 16);
+ } while (GetGenderFromSpeciesAndPersonality(species, personality) != ratio);
+
+ GetMonData(gPlayerParty + i, MON_DATA_IVS);
+ CreateMon(gPlayerParty + i, sNakaGenderTestData[i].species, sNakaGenderTestData[i].level, 0x20, TRUE, personality, FALSE, 0);
+ return ratio;
+}
+
+// =======================================================
+// SET POKEBLOCK
+// =======================================================
+
+static struct Pokeblock sPokeblock;
+
+#ifdef NONMATCHING
+static u8 SetPokeblock_CalcColor(u8 * dest, struct Pokeblock * pokeblock)
+{
+ u8 numGoodFlavors = 0;
+ u8 numBadFlavors = 0;
+ u8 numNeutralFlavors = 0;
+ u8 i;
+ u8 numLowFlavors;
+ s16 pkblk[6];
+
+ for (i = 0; i < 6; i++)
+ {
+ pkblk[i] = GetPokeblockData(pokeblock, i + PBLOCK_SPICY);
+ if (i != PBLOCK_FEEL - 1)
+ {
+ if (pkblk[i] > 0)
+ numGoodFlavors++;
+ if (pkblk[i] < 0)
+ numBadFlavors++;
+ if (pkblk[i] == 0)
+ numNeutralFlavors++;
+ }
+ }
+
+ if (pkblk[0] >= 50)
+ {
+ StringCopy(dest, ContestStatsText_GoldPokeBlock);
+ return PBLOCK_CLR_GOLD;
+ }
+
+ if (pkblk[1] >= 50)
+ {
+ StringCopy(dest, ContestStatsText_GoldPokeBlock);
+ return PBLOCK_CLR_GOLD;
+ }
+
+ if (pkblk[2] >= 50)
+ {
+ StringCopy(dest, ContestStatsText_GoldPokeBlock);
+ return PBLOCK_CLR_GOLD;
+ }
+
+ if (pkblk[3] >= 50)
+ {
+ StringCopy(dest, ContestStatsText_GoldPokeBlock);
+ return PBLOCK_CLR_GOLD;
+ }
+
+ if (pkblk[4] >= 50)
+ {
+ StringCopy(dest, ContestStatsText_GoldPokeBlock);
+ return PBLOCK_CLR_GOLD;
+ }
+
+ if (numGoodFlavors == 4)
+ {
+ StringCopy(dest, ContestStatsText_WhitePokeBlock);
+ return PBLOCK_CLR_WHITE;
+ }
+
+ numLowFlavors = 0;
+ for (i = 0; i < 5; i++)
+ {
+ if (pkblk[i] == 2)
+ numLowFlavors++;
+ }
+ if (numLowFlavors == 3 || numNeutralFlavors == 5 || numBadFlavors == 4)
+ {
+ StringCopy(dest, ContestStatsText_BlackPokeBlock);
+ return PBLOCK_CLR_BLACK;
+ }
+
+ if (numGoodFlavors == 3)
+ {
+ StringCopy(dest, ContestStatsText_GrayPokeBlock);
+ return PBLOCK_CLR_GRAY;
+ }
+
+ if (numGoodFlavors == 2 || numBadFlavors == 2)
+ {
+ u8 firstNonzeroFlavor = 6;
+ u8 lastNonzeroFlavor = 0;
+ for (i = 0; i < 5; i++)
+ {
+ if (pkblk[i] != 0)
+ {
+ if (firstNonzeroFlavor == 6)
+ firstNonzeroFlavor = i;
+ else
+ lastNonzeroFlavor = i;
+ }
+ }
+ if (pkblk[firstNonzeroFlavor] >= pkblk[lastNonzeroFlavor])
+ lastNonzeroFlavor = firstNonzeroFlavor;
+
+ if (lastNonzeroFlavor == 0)
+ {
+ StringCopy(dest, ContestStatsText_PurplePokeBlock);
+ return PBLOCK_CLR_PURPLE;
+ }
+
+ if (lastNonzeroFlavor == 1)
+ {
+ StringCopy(dest, ContestStatsText_IndigoPokeBlock);
+ return PBLOCK_CLR_INDIGO;
+ }
+
+ if (lastNonzeroFlavor == 2)
+ {
+ StringCopy(dest, ContestStatsText_BrownPokeBlock);
+ return PBLOCK_CLR_BROWN;
+ }
+
+ if (lastNonzeroFlavor == 3)
+ {
+ StringCopy(dest, ContestStatsText_LiteBluePokeBlock);
+ return PBLOCK_CLR_LITEBLUE;
+ }
+
+ if (lastNonzeroFlavor == 4)
+ {
+ StringCopy(dest, ContestStatsText_OlivePokeBlock);
+ return PBLOCK_CLR_OLIVE;
+ }
+ }
+
+ if (numGoodFlavors == 1 || numBadFlavors == 1)
+ {
+ if (pkblk[0] != 0)
+ {
+ StringCopy(dest, ContestStatsText_RedPokeBlock);
+ return PBLOCK_CLR_RED;
+ }
+
+ if (pkblk[1] != 0)
+ {
+ StringCopy(dest, ContestStatsText_BluePokeBlock);
+ return PBLOCK_CLR_BLUE;
+ }
+
+ if (pkblk[2] != 0)
+ {
+ StringCopy(dest, ContestStatsText_PinkPokeBlock);
+ return PBLOCK_CLR_PINK;
+ }
+
+ if (pkblk[3] != 0)
+ {
+ StringCopy(dest, ContestStatsText_GreenPokeBlock);
+ return PBLOCK_CLR_GREEN;
+ }
+
+ if (pkblk[4] != 0)
+ {
+ StringCopy(dest, ContestStatsText_YellowPokeBlock);
+ return PBLOCK_CLR_YELLOW;
+ }
+ }
+
+ StringCopy(dest, gOtherText_FiveQuestions);
+ return 0; // PBLOCK_CLR_UNKNOWN
+}
+#else
+NAKED
+static u8 SetPokeblock_CalcColor(u8 * dest, struct Pokeblock * pokeblock)
+{
+ asm("\tpush\t{r4, r5, r6, r7, lr}\n"
+ "\tmov\tr7, r9\n"
+ "\tmov\tr6, r8\n"
+ "\tpush\t{r6, r7}\n"
+ "\tadd\tsp, sp, #0xfffffff0\n"
+ "\tadd\tr6, r0, #0\n"
+ "\tmov\tr9, r1\n"
+ "\tmov\tr7, #0x0\n"
+ "\tmov\tr0, #0x0\n"
+ "\tmov\tr8, r0\n"
+ "\tmov\tr2, #0x0\n"
+ "\tmov\tr5, #0x0\n"
+ "._329:\n"
+ "\tadd\tr4, r5, #1\n"
+ "\tlsl\tr1, r4, #0x18\n"
+ "\tlsr\tr1, r1, #0x18\n"
+ "\tmov\tr0, r9\n"
+ "\tstr\tr2, [sp, #0xc]\n"
+ "\tbl\tGetPokeblockData\n"
+ "\tadd\tr1, r0, #0\n"
+ "\tlsl\tr0, r5, #0x1\n"
+ "\tadd r0, r0, sp\n"
+ "\tstrh\tr1, [r0]\n"
+ "\tldr\tr2, [sp, #0xc]\n"
+ "\tcmp\tr5, #0x5\n"
+ "\tbeq\t._328\t@cond_branch\n"
+ "\tlsl\tr0, r1, #0x10\n"
+ "\tasr\tr1, r0, #0x10\n"
+ "\tcmp\tr1, #0\n"
+ "\tble\t._326\t@cond_branch\n"
+ "\tadd\tr0, r7, #1\n"
+ "\tlsl\tr0, r0, #0x18\n"
+ "\tlsr\tr7, r0, #0x18\n"
+ "._326:\n"
+ "\tcmp\tr1, #0\n"
+ "\tbge\t._327\t@cond_branch\n"
+ "\tmov\tr0, r8\n"
+ "\tadd\tr0, r0, #0x1\n"
+ "\tlsl\tr0, r0, #0x18\n"
+ "\tlsr\tr0, r0, #0x18\n"
+ "\tmov\tr8, r0\n"
+ "._327:\n"
+ "\tcmp\tr1, #0\n"
+ "\tbne\t._328\t@cond_branch\n"
+ "\tadd\tr0, r2, #1\n"
+ "\tlsl\tr0, r0, #0x18\n"
+ "\tlsr\tr2, r0, #0x18\n"
+ "._328:\n"
+ "\tlsl\tr0, r4, #0x18\n"
+ "\tlsr\tr5, r0, #0x18\n"
+ "\tcmp\tr5, #0x5\n"
+ "\tbls\t._329\t@cond_branch\n"
+ "\tmov\tr0, sp\n"
+ "\tmov\tr1, #0x0\n"
+ "\tldsh\tr0, [r0, r1]\n"
+ "\tcmp\tr0, #0x31\n"
+ "\tbgt\t._333\t@cond_branch\n"
+ "\tmov\tr0, sp\n"
+ "\tldrh\tr0, [r0, #0x2]\n"
+ "\tlsl\tr0, r0, #0x10\n"
+ "\tasr\tr0, r0, #0x10\n"
+ "\tcmp\tr0, #0x31\n"
+ "\tbgt\t._333\t@cond_branch\n"
+ "\tmov\tr0, sp\n"
+ "\tmov\tr4, #0x4\n"
+ "\tldsh\tr0, [r0, r4]\n"
+ "\tcmp\tr0, #0x31\n"
+ "\tbgt\t._333\t@cond_branch\n"
+ "\tmov\tr0, sp\n"
+ "\tmov\tr1, #0x6\n"
+ "\tldsh\tr0, [r0, r1]\n"
+ "\tcmp\tr0, #0x31\n"
+ "\tbgt\t._333\t@cond_branch\n"
+ "\tmov\tr0, sp\n"
+ "\tmov\tr4, #0x8\n"
+ "\tldsh\tr0, [r0, r4]\n"
+ "\tcmp\tr0, #0x31\n"
+ "\tble\t._334\t@cond_branch\n"
+ "._333:\n"
+ "\tldr\tr1, ._336 @ ContestStatsText_GoldPokeBlock\n"
+ "\tadd\tr0, r6, #0\n"
+ "\tbl\tStringCopy\n"
+ "\tmov\tr0, #0xe\n"
+ "\tb\t._400\n"
+ "._337:\n"
+ "\t.align\t2, 0\n"
+ "._336:\n"
+ "\t.word\tContestStatsText_GoldPokeBlock\n"
+ "._334:\n"
+ "\tcmp\tr7, #0x4\n"
+ "\tbne\t._338\t@cond_branch\n"
+ "\tldr\tr1, ._340 @ ContestStatsText_WhitePokeBlock\n"
+ "\tadd\tr0, r6, #0\n"
+ "\tbl\tStringCopy\n"
+ "\tmov\tr0, #0xd\n"
+ "\tb\t._400\n"
+ "._341:\n"
+ "\t.align\t2, 0\n"
+ "._340:\n"
+ "\t.word\tContestStatsText_WhitePokeBlock\n"
+ "._338:\n"
+ "\tmov\tr3, #0x0\n"
+ "\tmov\tr5, #0x0\n"
+ "._343:\n"
+ "\tlsl\tr0, r5, #0x1\n"
+ "\tadd r0, r0, sp\n"
+ "\tmov\tr1, #0x0\n"
+ "\tldsh\tr0, [r0, r1]\n"
+ "\tcmp\tr0, #0x2\n"
+ "\tbne\t._342\t@cond_branch\n"
+ "\tadd\tr0, r3, #1\n"
+ "\tlsl\tr0, r0, #0x18\n"
+ "\tlsr\tr3, r0, #0x18\n"
+ "._342:\n"
+ "\tadd\tr0, r5, #1\n"
+ "\tlsl\tr0, r0, #0x18\n"
+ "\tlsr\tr5, r0, #0x18\n"
+ "\tcmp\tr5, #0x4\n"
+ "\tbls\t._343\t@cond_branch\n"
+ "\tcmp\tr3, #0x3\n"
+ "\tbeq\t._345\t@cond_branch\n"
+ "\tcmp\tr2, #0x5\n"
+ "\tbeq\t._345\t@cond_branch\n"
+ "\tmov\tr4, r8\n"
+ "\tcmp\tr4, #0x4\n"
+ "\tbne\t._346\t@cond_branch\n"
+ "._345:\n"
+ "\tldr\tr1, ._348 @ ContestStatsText_BlackPokeBlock\n"
+ "\tadd\tr0, r6, #0\n"
+ "\tbl\tStringCopy\n"
+ "\tmov\tr0, #0xc\n"
+ "\tb\t._400\n"
+ "._349:\n"
+ "\t.align\t2, 0\n"
+ "._348:\n"
+ "\t.word\tContestStatsText_BlackPokeBlock\n"
+ "._346:\n"
+ "\tcmp\tr7, #0x3\n"
+ "\tbne\t._350\t@cond_branch\n"
+ "\tldr\tr1, ._352 @ ContestStatsText_GrayPokeBlock\n"
+ "\tadd\tr0, r6, #0\n"
+ "\tbl\tStringCopy\n"
+ "\tmov\tr0, #0xb\n"
+ "\tb\t._400\n"
+ "._353:\n"
+ "\t.align\t2, 0\n"
+ "._352:\n"
+ "\t.word\tContestStatsText_GrayPokeBlock\n"
+ "._350:\n"
+ "\tcmp\tr7, #0x2\n"
+ "\tbeq\t._354\t@cond_branch\n"
+ "\tmov\tr0, r8\n"
+ "\tcmp\tr0, #0x2\n"
+ "\tbne\t._377\t@cond_branch\n"
+ "._354:\n"
+ "\tmov\tr3, #0x6\n"
+ "\tmov\tr2, #0x0\n"
+ "\tmov\tr5, #0x0\n"
+ "._359:\n"
+ "\tlsl\tr0, r5, #0x1\n"
+ "\tadd r0, r0, sp\n"
+ "\tmov\tr1, #0x0\n"
+ "\tldsh\tr0, [r0, r1]\n"
+ "\tcmp\tr0, #0\n"
+ "\tbeq\t._358\t@cond_branch\n"
+ "\tcmp\tr3, #0x6\n"
+ "\tbne\t._357\t@cond_branch\n"
+ "\tadd\tr3, r5, #0\n"
+ "\tb\t._358\n"
+ "._357:\n"
+ "\tadd\tr2, r5, #0\n"
+ "._358:\n"
+ "\tadd\tr0, r5, #1\n"
+ "\tlsl\tr0, r0, #0x18\n"
+ "\tlsr\tr5, r0, #0x18\n"
+ "\tcmp\tr5, #0x4\n"
+ "\tbls\t._359\t@cond_branch\n"
+ "\tlsl\tr0, r3, #0x1\n"
+ "\tmov\tr4, sp\n"
+ "\tadd\tr1, r4, r0\n"
+ "\tlsl\tr0, r2, #0x1\n"
+ "\tadd r0, r0, sp\n"
+ "\tmov\tr4, #0x0\n"
+ "\tldsh\tr1, [r1, r4]\n"
+ "\tmov\tr4, #0x0\n"
+ "\tldsh\tr0, [r0, r4]\n"
+ "\tcmp\tr1, r0\n"
+ "\tblt\t._360\t@cond_branch\n"
+ "\tadd\tr2, r3, #0\n"
+ "._360:\n"
+ "\tcmp\tr2, #0\n"
+ "\tbne\t._361\t@cond_branch\n"
+ "\tldr\tr1, ._363 @ ContestStatsText_PurplePokeBlock\n"
+ "\tadd\tr0, r6, #0\n"
+ "\tbl\tStringCopy\n"
+ "\tmov\tr0, #0x6\n"
+ "\tb\t._400\n"
+ "._364:\n"
+ "\t.align\t2, 0\n"
+ "._363:\n"
+ "\t.word\tContestStatsText_PurplePokeBlock\n"
+ "._361:\n"
+ "\tcmp\tr2, #0x1\n"
+ "\tbne\t._365\t@cond_branch\n"
+ "\tldr\tr1, ._367 @ ContestStatsText_IndigoPokeBlock\n"
+ "\tadd\tr0, r6, #0\n"
+ "\tbl\tStringCopy\n"
+ "\tmov\tr0, #0x7\n"
+ "\tb\t._400\n"
+ "._368:\n"
+ "\t.align\t2, 0\n"
+ "._367:\n"
+ "\t.word\tContestStatsText_IndigoPokeBlock\n"
+ "._365:\n"
+ "\tcmp\tr2, #0x2\n"
+ "\tbne\t._369\t@cond_branch\n"
+ "\tldr\tr1, ._371 @ ContestStatsText_BrownPokeBlock\n"
+ "\tadd\tr0, r6, #0\n"
+ "\tbl\tStringCopy\n"
+ "\tmov\tr0, #0x8\n"
+ "\tb\t._400\n"
+ "._372:\n"
+ "\t.align\t2, 0\n"
+ "._371:\n"
+ "\t.word\tContestStatsText_BrownPokeBlock\n"
+ "._369:\n"
+ "\tcmp\tr2, #0x3\n"
+ "\tbne\t._373\t@cond_branch\n"
+ "\tldr\tr1, ._375 @ ContestStatsText_LiteBluePokeBlock\n"
+ "\tadd\tr0, r6, #0\n"
+ "\tbl\tStringCopy\n"
+ "\tmov\tr0, #0x9\n"
+ "\tb\t._400\n"
+ "._376:\n"
+ "\t.align\t2, 0\n"
+ "._375:\n"
+ "\t.word\tContestStatsText_LiteBluePokeBlock\n"
+ "._373:\n"
+ "\tcmp\tr2, #0x4\n"
+ "\tbne\t._377\t@cond_branch\n"
+ "\tldr\tr1, ._379 @ ContestStatsText_OlivePokeBlock\n"
+ "\tadd\tr0, r6, #0\n"
+ "\tbl\tStringCopy\n"
+ "\tmov\tr0, #0xa\n"
+ "\tb\t._400\n"
+ "._380:\n"
+ "\t.align\t2, 0\n"
+ "._379:\n"
+ "\t.word\tContestStatsText_OlivePokeBlock\n"
+ "._377:\n"
+ "\tcmp\tr7, #0x1\n"
+ "\tbeq\t._381\t@cond_branch\n"
+ "\tmov\tr0, r8\n"
+ "\tcmp\tr0, #0x1\n"
+ "\tbne\t._399\t@cond_branch\n"
+ "._381:\n"
+ "\tmov\tr0, sp\n"
+ "\tmov\tr1, #0x0\n"
+ "\tldsh\tr0, [r0, r1]\n"
+ "\tcmp\tr0, #0\n"
+ "\tbeq\t._383\t@cond_branch\n"
+ "\tldr\tr1, ._385 @ ContestStatsText_RedPokeBlock\n"
+ "\tadd\tr0, r6, #0\n"
+ "\tbl\tStringCopy\n"
+ "\tmov\tr0, #0x1\n"
+ "\tb\t._400\n"
+ "._386:\n"
+ "\t.align\t2, 0\n"
+ "._385:\n"
+ "\t.word\tContestStatsText_RedPokeBlock\n"
+ "._383:\n"
+ "\tmov\tr0, sp\n"
+ "\tldrh\tr0, [r0, #0x2]\n"
+ "\tcmp\tr0, #0\n"
+ "\tbeq\t._387\t@cond_branch\n"
+ "\tldr\tr1, ._389 @ ContestStatsText_BluePokeBlock\n"
+ "\tadd\tr0, r6, #0\n"
+ "\tbl\tStringCopy\n"
+ "\tmov\tr0, #0x2\n"
+ "\tb\t._400\n"
+ "._390:\n"
+ "\t.align\t2, 0\n"
+ "._389:\n"
+ "\t.word\tContestStatsText_BluePokeBlock\n"
+ "._387:\n"
+ "\tmov\tr0, sp\n"
+ "\tmov\tr4, #0x4\n"
+ "\tldsh\tr0, [r0, r4]\n"
+ "\tcmp\tr0, #0\n"
+ "\tbeq\t._391\t@cond_branch\n"
+ "\tldr\tr1, ._393 @ ContestStatsText_PinkPokeBlock\n"
+ "\tadd\tr0, r6, #0\n"
+ "\tbl\tStringCopy\n"
+ "\tmov\tr0, #0x3\n"
+ "\tb\t._400\n"
+ "._394:\n"
+ "\t.align\t2, 0\n"
+ "._393:\n"
+ "\t.word\tContestStatsText_PinkPokeBlock\n"
+ "._391:\n"
+ "\tmov\tr0, sp\n"
+ "\tmov\tr1, #0x6\n"
+ "\tldsh\tr0, [r0, r1]\n"
+ "\tcmp\tr0, #0\n"
+ "\tbeq\t._395\t@cond_branch\n"
+ "\tldr\tr1, ._397 @ ContestStatsText_GreenPokeBlock\n"
+ "\tadd\tr0, r6, #0\n"
+ "\tbl\tStringCopy\n"
+ "\tmov\tr0, #0x4\n"
+ "\tb\t._400\n"
+ "._398:\n"
+ "\t.align\t2, 0\n"
+ "._397:\n"
+ "\t.word\tContestStatsText_GreenPokeBlock\n"
+ "._395:\n"
+ "\tmov\tr0, sp\n"
+ "\tmov\tr4, #0x8\n"
+ "\tldsh\tr0, [r0, r4]\n"
+ "\tcmp\tr0, #0\n"
+ "\tbeq\t._399\t@cond_branch\n"
+ "\tldr\tr1, ._401 @ ContestStatsText_YellowPokeBlock\n"
+ "\tadd\tr0, r6, #0\n"
+ "\tbl\tStringCopy\n"
+ "\tmov\tr0, #0x5\n"
+ "\tb\t._400\n"
+ "._402:\n"
+ "\t.align\t2, 0\n"
+ "._401:\n"
+ "\t.word\tContestStatsText_YellowPokeBlock\n"
+ "._399:\n"
+ "\tldr\tr1, ._403 @ gOtherText_FiveQuestions\n"
+ "\tadd\tr0, r6, #0\n"
+ "\tbl\tStringCopy\n"
+ "\tmov\tr0, #0x0\n"
+ "._400:\n"
+ "\tadd\tsp, sp, #0x10\n"
+ "\tpop\t{r3, r4}\n"
+ "\tmov\tr8, r3\n"
+ "\tmov\tr9, r4\n"
+ "\tpop\t{r4, r5, r6, r7}\n"
+ "\tpop\t{r1}\n"
+ "\tbx\tr1\n"
+ "._404:\n"
+ "\t.align\t2, 0\n"
+ "._403:\n"
+ "\t.word\tgOtherText_FiveQuestions");
+}
+#endif // NONMATCHING
+
+static void NakaDebug_PrintNum3Chars(u8 * buff, s16 a1)
+{
+ u8 i;
+ s16 divisor;
+ s16 quot;
+ s16 printZero;
+
+ for (i = 0; i < 4; i++)
+ buff[i] = CHAR_SPACE;
+ buff[4] = EOS;
+
+ if (a1 == 0)
+ buff[3] = CHAR_0;
+ else if (a1 > 0)
+ {
+ divisor = 100;
+ printZero = FALSE;
+ for (i = 0; i < 3; i++)
+ {
+ quot = a1 / divisor;
+ if (printZero || i == 2 || quot != 0)
+ {
+ buff[i + 1] = CHAR_0 + quot;
+ printZero = TRUE;
+ }
+ a1 %= divisor;
+ divisor /= 10;
+ }
+ }
+ else if (a1 < 0)
+ {
+ a1 = -a1;
+ divisor = 100;
+ printZero = FALSE;
+ for (i = 0; i < 3; i++)
+ {
+ quot = a1 / divisor;
+ if (printZero || i == 2 || quot != 0)
+ {
+ buff[i + 1] = CHAR_0 + quot;
+ if (!printZero)
+ buff[i] = CHAR_HYPHEN;
+ printZero = TRUE;
+ }
+ a1 %= divisor;
+ divisor /= 10;
+ }
+ }
+}
+
+static void SetPokeblock_PrintFlavorValue(u8 a0)
+{
+ struct Pokeblock *pkblk = &sPokeblock;
+
+ if (a0 == 0)
+ {
+ NakaDebug_PrintNum3Chars(gStringVar1, pkblk->spicy);
+ Menu_PrintText(gStringVar1, 8, 3);
+ }
+ else if (a0 == 1)
+ {
+ NakaDebug_PrintNum3Chars(gStringVar1, pkblk->dry);
+ Menu_PrintText(gStringVar1, 8, 5);
+ }
+ else if (a0 == 2)
+ {
+ NakaDebug_PrintNum3Chars(gStringVar1, pkblk->sweet);
+ Menu_PrintText(gStringVar1, 8, 7);
+ }
+ else if (a0 == 3)
+ {
+ NakaDebug_PrintNum3Chars(gStringVar1, pkblk->bitter);
+ Menu_PrintText(gStringVar1, 8, 9);
+ }
+ else if (a0 == 4)
+ {
+ NakaDebug_PrintNum3Chars(gStringVar1, pkblk->sour);
+ Menu_PrintText(gStringVar1, 8, 11);
+ }
+ else if (a0 == 5)
+ {
+ NakaDebug_PrintNum3Chars(gStringVar1, pkblk->feel);
+ Menu_PrintText(gStringVar1, 8, 13);
+ }
+}
+
+static void SetPokeblock_AdjustFlavor(u8 a0, s8 a1)
+{
+ struct Pokeblock *pkblk = &sPokeblock;
+
+ if (a0 == 0)
+ pkblk->spicy += a1;
+ else if (a0 == 1)
+ pkblk->dry += a1;
+ else if (a0 == 2)
+ pkblk->sweet += a1;
+ else if (a0 == 3)
+ pkblk->bitter += a1;
+ else if (a0 == 4)
+ pkblk->sour += a1;
+ else if (a0 == 5)
+ pkblk->feel += a1;
+}
+
+static void SetPokeblock_RecomputeAndPrintColor(void)
+{
+ sPokeblock.color = SetPokeblock_CalcColor(gStringVar1, &sPokeblock);
+ Menu_BlankWindowRect(1, 1, 8, 2);
+ Menu_PrintText(gStringVar1, 1, 1);
+}
+
+static void SetPokeblock_Init(void)
+{
+ u8 i;
+
+ Menu_DrawStdWindowFrame(0, 0, 12, 15);
+ SetPokeblock_RecomputeAndPrintColor();
+ Menu_PrintText(gContestStatsText_Spicy, 2, 3);
+ Menu_PrintText(gContestStatsText_Dry, 2, 5);
+ Menu_PrintText(gContestStatsText_Sweet, 2, 7);
+ Menu_PrintText(gContestStatsText_Bitter, 2, 9);
+ Menu_PrintText(gContestStatsText_Sour, 2, 11);
+ Menu_PrintText(gContestStatsText_Tasty, 2, 13);
+
+ for (i = 0; i < 6; i++)
+ SetPokeblock_PrintFlavorValue(i);
+
+ InitMenu(0, 1, 3, 6, 0, 11);
+}
+
+static void SetPokeblock_GivePokeblock(void)
+{
+ struct Pokeblock * pkblk = &sPokeblock;
+ u8 rval = 0;
+ u8 i;
+
+ if (pkblk->color == PBLOCK_CLR_BLACK)
+ {
+ if (pkblk->spicy == 2)
+ rval++;
+
+ if (pkblk->sweet == 2)
+ rval++;
+
+ if (pkblk->bitter == 2)
+ rval++;
+
+ if (pkblk->dry == 2)
+ rval++;
+
+ if (pkblk->sour == 2)
+ rval++;
+
+ if (rval != 3)
+ {
+ pkblk->spicy = 2;
+ pkblk->sweet = 2;
+ pkblk->bitter = 2;
+ }
+ }
+
+ GivePokeblock(pkblk);
+ SetPokeblock_RecomputeAndPrintColor();
+
+ for (i = 0; i < 6; i++)
+ SetPokeblock_PrintFlavorValue(i);
+}
+
+static bool8 SetPokeblock_HandleJoypad(void)
+{
+ if (gMain.newAndRepeatedKeys & DPAD_UP)
+ {
+ Menu_MoveCursor(-1);
+ return FALSE;
+ }
+
+ if (gMain.newAndRepeatedKeys & DPAD_DOWN)
+ {
+ Menu_MoveCursor(+1);
+ return FALSE;
+ }
+
+ if (gMain.newAndRepeatedKeys & DPAD_LEFT)
+ {
+ SetPokeblock_AdjustFlavor(Menu_GetCursorPos(), -1);
+ SetPokeblock_PrintFlavorValue(Menu_GetCursorPos());
+ SetPokeblock_RecomputeAndPrintColor();
+ return FALSE;
+ }
+
+ if (gMain.newAndRepeatedKeys & DPAD_RIGHT)
+ {
+ SetPokeblock_AdjustFlavor(Menu_GetCursorPos(), +1);
+ SetPokeblock_PrintFlavorValue(Menu_GetCursorPos());
+ SetPokeblock_RecomputeAndPrintColor();
+ return FALSE;
+ }
+
+ if (gMain.newKeys & A_BUTTON)
+ {
+ SetPokeblock_GivePokeblock();
+ PlaySE(SE_SELECT);
+ return FALSE;
+ }
+
+ if (gMain.newKeys & B_BUTTON)
+ {
+ Menu_EraseWindowRect(0, 0, 29, 19);
+ CloseMenu();
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static bool8 SetPokeblock(void)
+{
+ Menu_EraseWindowRect(0, 0, 29, 19);
+ SetPokeblock_Init();
+ gMenuCallback = SetPokeblock_HandleJoypad;
+ return FALSE;
+}
+
+// =======================================================
+// EFFORT VALUES
+// =======================================================
+
+EWRAM_DATA u8 sEVTest_CursorPosition = 0;
+
+static const u8 Str_843E5F2[] = _("HP どりょくち");
+static const u8 Str_843E5FB[] = _("こうげき どりょくち");
+static const u8 Str_843E606[] = _("ぼうぎょ どりょくち");
+static const u8 Str_843E611[] = _("すばやさ どりょくち");
+static const u8 Str_843E61C[] = _("とくこう どりょくち");
+static const u8 Str_843E627[] = _("とくぼう どりょくち");
+static const u8 Str_843E632[] = _("なつきど");
+static const u8 Str_843E637[] = _("どりょくち ごうけい");
+
+static void EVTest_Init(void)
+{
+ Menu_DrawStdWindowFrame(0, 0, 22, 19);
+ Menu_PrintText(gOtherText_Slash, 11, 1);
+ Menu_PrintText(Str_843E5F2, 2, 3);
+ Menu_PrintText(Str_843E5FB, 2, 5);
+ Menu_PrintText(Str_843E606, 2, 7);
+ Menu_PrintText(Str_843E611, 2, 9);
+ Menu_PrintText(Str_843E61C, 2, 11);
+ Menu_PrintText(Str_843E627, 2, 13);
+ Menu_PrintText(Str_843E637, 2, 15);
+ Menu_PrintText(Str_843E632, 2, 17);
+}
+
+static void EVTest_PrintMonData(struct Pokemon *pokemon)
+{
+ u16 evTotal;
+ u16 curEv;
+
+ Menu_BlankWindowRect(1, 1, 10, 2);
+ GetMonData(pokemon, MON_DATA_NICKNAME, gStringVar1);
+ Menu_PrintText(gStringVar1, 1, 1);
+
+ Menu_BlankWindowRect(12, 1, 21, 2);
+ Menu_PrintText(gSpeciesNames[GetMonData(pokemon, MON_DATA_SPECIES)], 12, 1);
+
+ curEv = GetMonData(pokemon, MON_DATA_HP_EV);
+ evTotal = curEv;
+ ConvertIntToDecimalStringN(gStringVar1, curEv, STR_CONV_MODE_LEFT_ALIGN, 5);
+ Menu_BlankWindowRect(13, 3, 17, 4);
+ Menu_PrintText(gStringVar1, 13, 3);
+
+ curEv = GetMonData(pokemon, MON_DATA_ATK_EV);
+ evTotal += curEv;
+ ConvertIntToDecimalStringN(gStringVar1, curEv, STR_CONV_MODE_LEFT_ALIGN, 5);
+ Menu_BlankWindowRect(13, 5, 17, 6);
+ Menu_PrintText(gStringVar1, 13, 5);
+
+ curEv = GetMonData(pokemon, MON_DATA_DEF_EV);
+ evTotal += curEv;
+ ConvertIntToDecimalStringN(gStringVar1, curEv, STR_CONV_MODE_LEFT_ALIGN, 5);
+ Menu_BlankWindowRect(13, 7, 17, 8);
+ Menu_PrintText(gStringVar1, 13, 7);
+
+ curEv = GetMonData(pokemon, MON_DATA_SPEED_EV);
+ evTotal += curEv;
+ ConvertIntToDecimalStringN(gStringVar1, curEv, STR_CONV_MODE_LEFT_ALIGN, 5);
+ Menu_BlankWindowRect(13, 9, 17, 10);
+ Menu_PrintText(gStringVar1, 13, 9);
+
+ curEv = GetMonData(pokemon, MON_DATA_SPATK_EV);
+ evTotal += curEv;
+ ConvertIntToDecimalStringN(gStringVar1, curEv, STR_CONV_MODE_LEFT_ALIGN, 5);
+ Menu_BlankWindowRect(13, 11, 17, 12);
+ Menu_PrintText(gStringVar1, 13, 11);
+
+ curEv = GetMonData(pokemon, MON_DATA_SPDEF_EV);
+ evTotal += curEv;
+ ConvertIntToDecimalStringN(gStringVar1, curEv, STR_CONV_MODE_LEFT_ALIGN, 5);
+ Menu_BlankWindowRect(13, 13, 17, 14);
+ Menu_PrintText(gStringVar1, 13, 13);
+
+ ConvertIntToDecimalStringN(gStringVar1, evTotal, STR_CONV_MODE_LEFT_ALIGN, 5);
+ Menu_BlankWindowRect(13, 15, 17, 16);
+ Menu_PrintText(gStringVar1, 13, 15);
+
+ ConvertIntToDecimalStringN(gStringVar1, GetMonData(pokemon, MON_DATA_FRIENDSHIP), STR_CONV_MODE_LEFT_ALIGN, 5);
+ Menu_BlankWindowRect(13, 17, 17, 18);
+ Menu_PrintText(gStringVar1, 13, 17);
+}
+
+static void EVTest_MovePartyCursor(s8 a0)
+{
+ s16 i;
+ if (a0 == -1)
+ {
+ if (sEVTest_CursorPosition == 0)
+ {
+ for (i = 5; i >= 0; i--)
+ {
+ if (GetMonData(gPlayerParty + i, MON_DATA_SPECIES) != SPECIES_NONE)
+ {
+ sEVTest_CursorPosition = i;
+ return;
+ }
+ }
+ }
+ sEVTest_CursorPosition += a0;
+ return;
+ }
+
+ if (a0 == 1)
+ {
+ sEVTest_CursorPosition += a0;
+ if (sEVTest_CursorPosition == 6)
+ sEVTest_CursorPosition = 0;
+ else if (GetMonData(gPlayerParty + sEVTest_CursorPosition, MON_DATA_SPECIES) == SPECIES_NONE)
+ sEVTest_CursorPosition = 0;
+ }
+}
+
+static bool8 EVTest_HandleJoypad(void)
+{
+ if (gMain.newKeys & DPAD_LEFT)
+ {
+ EVTest_MovePartyCursor(-1);
+ EVTest_PrintMonData(gPlayerParty + sEVTest_CursorPosition);
+ return FALSE;
+ }
+
+ if (gMain.newKeys & DPAD_RIGHT)
+ {
+ EVTest_MovePartyCursor(+1);
+ EVTest_PrintMonData(gPlayerParty + sEVTest_CursorPosition);
+ return FALSE;
+ }
+
+ if (gMain.newKeys & B_BUTTON)
+ {
+ Menu_EraseWindowRect(0, 0, 29, 19);
+ CloseMenu();
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+bool8 DebugMenu_EffortValues(void)
+{
+ Menu_EraseWindowRect(0, 0, 29, 19);
+ sEVTest_CursorPosition = 0;
+ EVTest_Init();
+ EVTest_PrintMonData(gPlayerParty + 0);
+ gMenuCallback = EVTest_HandleJoypad;
+ return FALSE;
+}
+
+// =======================================================
+// RNG Test
+// =======================================================
+
+EWRAM_DATA u16 sRngLeft = 0;
+EWRAM_DATA u16 sRngRight = 0;
+EWRAM_DATA u16 sNumSamples = 0;
+EWRAM_DATA u16 sRngMax = 0;
+
+static const u8 Str_843E642[] = _("ここから");
+static const u8 Str_843E647[] = _("ここまで");
+static const u8 Str_843E64C[] = _("かいすう");
+static const u8 Str_843E651[] = _("けっか");
+static const u8 Str_843E655[] = _("かい");
+static const u8 Str_843E658[] = _("0");
+static const u8 Str_843E65A[] = _("はんい");
+
+static u16 EVTest_GetDiscreteUniformRandomSamples(void)
+{
+ u16 sampCount = 0;
+ u16 left;
+ u16 right;
+ u32 i;
+
+ if (sRngLeft <= sRngRight)
+ {
+ left = sRngLeft;
+ right = sRngRight;
+ }
+ else
+ {
+ left = sRngRight;
+ right = sRngLeft;
+ }
+
+ for (i = 0; i < sNumSamples; i++)
+ {
+ u16 r0 = Random() % sRngMax;
+ if (r0 >= left && r0 <= right)
+ sampCount++;
+ }
+
+ return sampCount;
+}
+
+static void RNGTest_Init(void)
+{
+ Menu_DrawStdWindowFrame(0, 0, 15, 11);
+ Menu_PrintText(Str_843E642, 2, 1);
+ Menu_PrintText(Str_843E647, 2, 3);
+ Menu_PrintText(Str_843E65A, 2, 5);
+ Menu_PrintText(Str_843E64C, 2, 7);
+ Menu_PrintText(Str_843E651, 2, 9);
+ Menu_PrintText(Str_843E655, 13, 9);
+ Menu_PrintText(Str_843E658, 12, 1);
+ Menu_PrintText(Str_843E658, 12, 3);
+ Menu_PrintText(Str_843E658, 12, 5);
+ Menu_PrintText(Str_843E658, 12, 7);
+ Menu_PrintText(Str_843E658, 12, 9);
+ InitMenu(0, 1, 1, 4, 0, 14);
+}
+
+static void RNGTest_PrintNum(u16 a0)
+{
+ ConvertIntToDecimalStringN(gStringVar1, a0, STR_CONV_MODE_RIGHT_ALIGN, 5);
+ Menu_PrintText(gStringVar1, 8, 9);
+}
+
+static void RNGTest_AdjustAndPrintNumAtLine(u16 * a0, s8 a1, u8 a2)
+{
+ *a0 += a1;
+ ConvertIntToDecimalStringN(gStringVar1, *a0, STR_CONV_MODE_RIGHT_ALIGN, 5);
+ Menu_PrintText(gStringVar1, 8, a2);
+}
+
+static bool8 RNGTest_HandleJoypad(void)
+{
+ s8 r5 = gMain.heldKeys & R_BUTTON ? 100 : 1;
+ s8 r4;
+
+ if (gMain.newAndRepeatedKeys & DPAD_UP)
+ {
+ Menu_MoveCursor(-1);
+ return FALSE;
+ }
+
+ if (gMain.newAndRepeatedKeys & DPAD_DOWN)
+ {
+ Menu_MoveCursor(+1);
+ return FALSE;
+ }
+
+ if (gMain.newAndRepeatedKeys & DPAD_LEFT)
+ {
+ r4 = Menu_GetCursorPos();
+ if (r4 == 0)
+ RNGTest_AdjustAndPrintNumAtLine(&sRngLeft, -r5, 1);
+ if (r4 == 1)
+ RNGTest_AdjustAndPrintNumAtLine(&sRngRight, -r5, 3);
+ if (r4 == 2)
+ RNGTest_AdjustAndPrintNumAtLine(&sRngMax, -r5, 5);
+ if (r4 == 3)
+ RNGTest_AdjustAndPrintNumAtLine(&sNumSamples, -r5, 7);
+ return FALSE;
+ }
+
+ if (gMain.newAndRepeatedKeys & DPAD_RIGHT)
+ {
+ r4 = Menu_GetCursorPos();
+ if (r4 == 0)
+ RNGTest_AdjustAndPrintNumAtLine(&sRngLeft, r5, 1);
+ if (r4 == 1)
+ RNGTest_AdjustAndPrintNumAtLine(&sRngRight, r5, 3);
+ if (r4 == 2)
+ RNGTest_AdjustAndPrintNumAtLine(&sRngMax, r5, 5);
+ if (r4 == 3)
+ RNGTest_AdjustAndPrintNumAtLine(&sNumSamples, r5, 7);
+ return FALSE;
+ }
+
+ if (gMain.newKeys & A_BUTTON)
+ {
+ if (sRngMax != 0)
+ {
+ PlaySE(SE_SELECT);
+ RNGTest_PrintNum(EVTest_GetDiscreteUniformRandomSamples());
+ }
+ return FALSE;
+ }
+
+ if (gMain.newKeys & B_BUTTON)
+ {
+ Menu_EraseWindowRect(0, 0, 29, 19);
+ CloseMenu();
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+bool8 DebugMenu_RandomNumberTest(void)
+{
+ sRngLeft = 0;
+ sRngRight = 0;
+ sRngMax = 0;
+ sNumSamples = 0;
+ Menu_EraseWindowRect(0, 0, 29, 19);
+ RNGTest_Init();
+ gMenuCallback = RNGTest_HandleJoypad;
+ return FALSE;
+}
#endif // DEBUG
diff --git a/src/debug/nohara_debug_menu.c b/src/debug/nohara_debug_menu.c
index b3885ff76..349e5111f 100644
--- a/src/debug/nohara_debug_menu.c
+++ b/src/debug/nohara_debug_menu.c
@@ -1,12 +1,965 @@
#if DEBUG
#include "global.h"
+#include "constants/flags.h"
+#include "constants/songs.h"
+#include "constants/species.h"
+#include "constants/items.h"
+#include "main.h"
+#include "menu.h"
+#include "start_menu.h"
+#include "tv.h"
+#include "event_data.h"
+#include "string_util.h"
+#include "field_specials.h"
+#include "sound.h"
-__attribute__((unused)) static u8 gDebug_03000724;
-__attribute__((unused)) static u8 gDebug_03000725;
-__attribute__((unused)) static u8 gDebug_03000726;
+static u8 gDebug_03000724;
+static u8 gDebug_03000725;
+static u8 gDebug_03000726;
-asm(".global gDebug_03000724");
-asm(".global gDebug_03000725");
-asm(".global gDebug_03000726");
+bool8 debug_sub_808F414(void);
+bool8 NoharaDebugMenu_TV(void);
+bool8 debug_sub_808F4AC(void);
+void debug_sub_808F4EC(void);
+bool8 debug_sub_808F560(void);
+bool8 debug_sub_808F594(void);
+bool8 debug_sub_808F5D8(void);
+bool8 debug_sub_808F648(void);
+void debug_sub_808F6BC(void);
+void debug_sub_808F7B4(void);
+bool8 debug_sub_808F8AC(void);
+void debug_sub_808F8CC(void);
+bool8 debug_sub_808F93C(void);
+void debug_sub_808FA88(u8, u8);
+bool8 debug_sub_808FEBC(void);
+void debug_sub_808FECC(void);
+bool8 debug_sub_808FF3C(void);
+void debug_sub_8090080(u8, u8);
+bool8 debug_sub_80900AC(void);
+bool8 NoharaDebugMenu_Fan(void);
+bool8 debug_sub_80901A4(void);
+bool8 debug_sub_80901E4(void);
+bool8 debug_sub_80901F8(void);
+bool8 debug_sub_8090238(void);
+bool8 debug_sub_809029C(void);
+bool8 debug_sub_80902E4(void);
+bool8 debug_sub_80902FC(void);
+bool8 debug_sub_8090310(void);
+bool8 debug_sub_8090324(void);
+bool8 debug_sub_8090338(void);
+bool8 debug_sub_8090278(void);
+bool8 NoharaDebugMenu_BattleVSDad(void);
+bool8 NoharaDebugMenu_DadAfterBattle(void);
+bool8 NoharaDebugMenu_SootopolisCity(void);
+bool8 NoharaDebugMenu_Embark(void);
+bool8 NoharaDebugMenu_Yes9999(void);
+bool8 NoharaDebugMenu_LegendsFlagOn(void);
+bool8 NoharaDebugMenu_AddNumWinningStreaks(void);
+
+const u8 gUnknown_Debug_083C48C4[] = _("TV");
+const u8 gUnknown_Debug_083C48C7[] = _("Fan");
+const u8 gUnknown_Debug_083C48CB[] = _("Battle (vs Dad)");
+const u8 gUnknown_Debug_083C48DB[] = _("Dad after battle");
+const u8 gUnknown_Debug_083C48EC[] = _("SOOTOPOLIS CITY");
+const u8 gUnknown_Debug_083C48FC[] = _("Embark");
+const u8 gUnknown_Debug_083C4903[] = _("Yes 9999");
+const u8 gUnknown_Debug_083C490C[] = _("Legends flag ON");
+const u8 gUnknown_Debug_083C491C[] = _("Add num of winning streaks");
+
+const struct MenuAction gUnknown_Debug_083C4938[] = {
+ {gUnknown_Debug_083C48C4, NoharaDebugMenu_TV},
+ {gUnknown_Debug_083C48C7, NoharaDebugMenu_Fan},
+ {gUnknown_Debug_083C48CB, NoharaDebugMenu_BattleVSDad},
+ {gUnknown_Debug_083C48DB, NoharaDebugMenu_DadAfterBattle},
+ {gUnknown_Debug_083C48EC, NoharaDebugMenu_SootopolisCity},
+ {gUnknown_Debug_083C48FC, NoharaDebugMenu_Embark},
+ {gUnknown_Debug_083C4903, NoharaDebugMenu_Yes9999},
+ {gUnknown_Debug_083C490C, NoharaDebugMenu_LegendsFlagOn},
+ {gUnknown_Debug_083C491C, NoharaDebugMenu_AddNumWinningStreaks}
+};
+
+bool8 InitNoharaDebugMenu(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 19, 19);
+ Menu_PrintItems(1, 1, ARRAY_COUNT(gUnknown_Debug_083C4938), gUnknown_Debug_083C4938);
+ InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C4938), 0, 18);
+ gMenuCallback = debug_sub_808F414;
+ return FALSE;
+}
+
+bool8 debug_sub_808F414(void)
+{
+ s8 input = Menu_ProcessInput();
+ switch (input)
+ {
+ default:
+ gMenuCallback = gUnknown_Debug_083C4938[input].func;
+ return FALSE;
+ case -2:
+ return FALSE;
+ case -1:
+ CloseMenu();
+ return TRUE;
+ }
+}
+
+const u8 gUnknown_Debug_083C4980[] = _("Want to change data type{CLEAR_TO 143}Press Left\n"
+ "to see secret type now?{CLEAR_TO 143}to switch");
+
+const u8 gUnknown_Debug_083C49CA[] = _("Choose the TV data you wish to\n"
+ "create to check a transmission。");
+
+const u8 gUnknown_Debug_083C4A09[] = _("ほうそうの はっせいりつを セット\n"
+ "してください ?ぶんの1に なります");
+
+const u8 gUnknown_Debug_083C4A2E[] = _("SURVEY");
+const u8 gUnknown_Debug_083C4A35[] = _("RECENT HAPPENINGS");
+const u8 gUnknown_Debug_083C4A47[] = _("POKひMON FAN CLUB");
+const u8 gUnknown_Debug_083C4A58[] = _("ジム");
+const u8 gUnknown_Debug_083C4A5B[] = _("OUTBREAKS");
+const u8 gUnknown_Debug_083C4A65[] = _("NAME RATER");
+const u8 gUnknown_Debug_083C4A70[] = _("CONTEST");
+const u8 gUnknown_Debug_083C4A78[] = _("INTRODUCTION");
+const u8 gUnknown_Debug_083C4A85[] = _("SHOPPING");
+const u8 gUnknown_Debug_083C4A8E[] = _("MISFORTUNE");
+const u8 gUnknown_Debug_083C4A99[] = _("FISHING");
+const u8 gUnknown_Debug_083C4AA1[] = _("MEMORABLE DAY");
+const u8 gUnknown_Debug_083C4AAF[] = _("BRAVO TRAINER");
+
+const u8 gUnknown_Debug_083C4ABD[] = {
+ TVSHOW_FAN_CLUB_LETTER,
+ TVSHOW_RECENT_HAPPENINGS,
+ TVSHOW_PKMN_FAN_CLUB_OPINIONS,
+ TVSHOW_MASS_OUTBREAK,
+ TVSHOW_NAME_RATER_SHOW,
+ TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE,
+ TVSHOW_POKEMON_TODAY_CAUGHT,
+ TVSHOW_SMART_SHOPPER,
+ TVSHOW_POKEMON_TODAY_FAILED,
+ TVSHOW_FISHING_ADVICE,
+ TVSHOW_WORLD_OF_MASTERS,
+ TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE
+};
+
+const u8 *const gUnknown_Debug_083C4ACC[] = {
+ gUnknown_Debug_083C4A2E,
+ gUnknown_Debug_083C4A35,
+ gUnknown_Debug_083C4A47,
+ gUnknown_Debug_083C4A5B,
+ gUnknown_Debug_083C4A65,
+ gUnknown_Debug_083C4A70,
+ gUnknown_Debug_083C4A78,
+ gUnknown_Debug_083C4A85,
+ gUnknown_Debug_083C4A8E,
+ gUnknown_Debug_083C4A99,
+ gUnknown_Debug_083C4AA1,
+ gUnknown_Debug_083C4AAF
+};
+
+const u8 gDebugText_BigSale[] = _("BIG SALE");
+
+const u8 gUnknown_Debug_083C4B05[] = _("SERVICE DAY");
+const u8 gUnknown_Debug_083C4B11[] = _("CLEARーOUT SALE");
+const u8 gUnknown_Debug_083C4B20[] = {1, 2, 3};
+
+const u8 *const gUnknown_Debug_083C4B24[] = {
+ gDebugText_BigSale,
+ gUnknown_Debug_083C4B05,
+ gUnknown_Debug_083C4B11
+};
+
+const u8 gUnknown_Debug_083C4B30[] = _("Secret type");
+const u8 gUnknown_Debug_083C4B3C[] = _("Start");
+const u8 gUnknown_Debug_083C4B42[] = _("Create TV");
+const u8 gUnknown_Debug_083C4B4C[] = _("All clear");
+const u8 gUnknown_Debug_083C4B56[] = _("All seen");
+const u8 gUnknown_Debug_083C4B5F[] = _("Create CM");
+const u8 gUnknown_Debug_083C4B69[] = _("Not yet seen");
+const u8 gUnknown_Debug_083C4B76[] = _("Hit Table");
+const u8 gUnknown_Debug_083C4B80[] = _("Set full");
+
+// Normaly these would be struct MenuAction, but the prototype of
+// member .func is not consistent.
+const struct {
+ const u8 * text;
+ void *func;
+} gUnknown_Debug_083C4B8C[] = {
+ {gUnknown_Debug_083C4B30, debug_sub_808F4EC},
+ {gUnknown_Debug_083C4B3C, debug_sub_808F8AC},
+ {gUnknown_Debug_083C4B42, debug_sub_808F8CC},
+ {gUnknown_Debug_083C4B4C, debug_sub_808FEBC},
+ {gUnknown_Debug_083C4B56, debug_sub_808F560},
+ {gUnknown_Debug_083C4B5F, debug_sub_808FECC},
+ {gUnknown_Debug_083C4B69, debug_sub_808F594},
+ {gUnknown_Debug_083C4B76, debug_sub_808F5D8},
+ {gUnknown_Debug_083C4B80, debug_sub_80900AC}
+};
+
+bool8 NoharaDebugMenu_TV(void)
+{
+ gDebug_03000726 = 0;
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 10, 19);
+ Menu_PrintItems(1, 1, ARRAY_COUNT(gUnknown_Debug_083C4B8C), gUnknown_Debug_083C4B8C);
+ InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C4B8C), 0, 9);
+ gMenuCallback = debug_sub_808F4AC;
+ return FALSE;
+}
+
+bool8 debug_sub_808F4AC(void)
+{
+ s8 input = Menu_ProcessInput();
+ switch (input)
+ {
+ default:
+ gMenuCallback = (MenuFunc)gUnknown_Debug_083C4B8C[input].func;
+ return FALSE;
+ case -2:
+ return FALSE;
+ case -1:
+ CloseMenu();
+ return TRUE;
+ }
+}
+
+void debug_sub_808F4EC(void)
+{
+ debug_sub_808F6BC();
+ sub_8071F40(gUnknown_Debug_083C4980);
+ DisplayYesNoMenu(3, 3, 1);
+ gMenuCallback = debug_sub_808F648;
+}
+
+void debug_sub_808F518(void)
+{
+ u8 i;
+
+ for (i = 0; i < 24; i++)
+ {
+ if (gSaveBlock1.tvShows[i].common.kind >= TVSHOW_POKEMON_TODAY_CAUGHT &&
+ gSaveBlock1.tvShows[i].common.kind < TVSHOW_MASS_OUTBREAK &&
+ !gSaveBlock1.tvShows[i].common.active)
+ gSaveBlock1.tvShows[i].common.active = TRUE;
+ }
+}
+
+bool8 debug_sub_808F560(void)
+{
+ u8 i;
+
+ for (i = 0; i < 24; i++)
+ gSaveBlock1.tvShows[i].common.active = FALSE;
+ CloseMenu();
+ return TRUE;
+}
+
+bool8 debug_sub_808F594(void)
+{
+ u8 i;
+
+ for (i = 0; i < 24; i++)
+ {
+ if (gSaveBlock1.tvShows[i].common.kind != 0)
+ gSaveBlock1.tvShows[i].common.active = TRUE;
+ }
+ CloseMenu();
+ return TRUE;
+}
+
+const u8 gUnknown_Debug_083C4BD4[][12] = {
+ {0x0C, 0x04},
+ {0x0C, 0x08},
+ {0x0C, 0x0A},
+ {0x0E, 0x06},
+ {0x0E, 0x08},
+ {0x0E, 0x0A},
+ {0x10, 0x04},
+ {0x10, 0x06},
+ {0x10, 0x0A},
+ {0x12, 0x04},
+ {0x12, 0x06},
+ {0x12, 0x0A}
+};
+
+bool8 debug_sub_808F5D8(void)
+{
+ u8 i;
+
+ for (i = 0; i < 12; i++)
+ {
+ gSpecialVar_0x8004 = i;
+ ConvertIntToDecimalStringN(gStringVar1, GetSlotMachineId(), STR_CONV_MODE_LEFT_ALIGN, 1);
+ Menu_PrintText(gStringVar1, gUnknown_Debug_083C4BD4[i][0], gUnknown_Debug_083C4BD4[i][1]);
+ }
+ gSpecialVar_0x8004 = 0;
+ gMenuCallback = debug_sub_8090278;
+ return FALSE;
+}
+
+bool8 debug_sub_808F648(void)
+{
+ if (gMain.newKeys & DPAD_LEFT)
+ {
+ Menu_EraseWindowRect(10, 0, 29, 13);
+ gDebug_03000726 ^= 1;
+ if (gDebug_03000726)
+ debug_sub_808F7B4();
+ else
+ debug_sub_808F6BC();
+ return FALSE;
+ }
+ else
+ {
+ s8 input = Menu_ProcessInputNoWrap_();
+ switch (input)
+ {
+ case -2:
+ return FALSE;
+ case 0:
+ debug_sub_808F518();
+ // fallthrough
+ case -1:
+ default:
+ CloseMenu();
+ return TRUE;
+ }
+ }
+}
+
+void debug_sub_808F6BC(void)
+{
+ u8 i;
+
+ for (i = 0; i < 5; i++)
+ {
+ ConvertIntToDecimalStringN(gStringVar1, gSaveBlock1.tvShows[i].common.kind, STR_CONV_MODE_LEFT_ALIGN, 2);
+ Menu_PrintText(gStringVar1, i * 2 + 10, 0);
+ }
+
+ for (i = 5; i < 24; i++)
+ {
+ ConvertIntToDecimalStringN(gStringVar1, gSaveBlock1.tvShows[i].common.kind, STR_CONV_MODE_LEFT_ALIGN, 2);
+ if (i < 15)
+ Menu_PrintText(gStringVar1, i * 2, 3);
+ else
+ Menu_PrintText(gStringVar1, i * 2 - 20, 6);
+ }
+
+ for (i = 0; i < 16; i++)
+ {
+ ConvertIntToDecimalStringN(gStringVar1, gSaveBlock1.pokeNews[i].kind, STR_CONV_MODE_LEFT_ALIGN, 2);
+ if (i < 8)
+ Menu_PrintText(gStringVar1, i * 2 + 10, 9);
+ else
+ Menu_PrintText(gStringVar1, i * 2 - 6, 12);
+ }
+}
+
+void debug_sub_808F7B4(void)
+{
+ u8 i;
+
+ for (i = 0; i < 5; i++)
+ {
+ ConvertIntToDecimalStringN(gStringVar1, gSaveBlock1.tvShows[i].common.active, STR_CONV_MODE_LEFT_ALIGN, 2);
+ Menu_PrintText(gStringVar1, i * 2 + 10, 0);
+ }
+
+ for (i = 5; i < 24; i++)
+ {
+ ConvertIntToDecimalStringN(gStringVar1, gSaveBlock1.tvShows[i].common.active, STR_CONV_MODE_LEFT_ALIGN, 2);
+ if (i < 15)
+ Menu_PrintText(gStringVar1, i * 2, 3);
+ else
+ Menu_PrintText(gStringVar1, i * 2 - 20, 6);
+ }
+
+ for (i = 0; i < 16; i++)
+ {
+ ConvertIntToDecimalStringN(gStringVar1, gSaveBlock1.pokeNews[i].state, STR_CONV_MODE_LEFT_ALIGN, 2);
+ if (i < 8)
+ Menu_PrintText(gStringVar1, i * 2 + 10, 9);
+ else
+ Menu_PrintText(gStringVar1, i * 2 - 6, 12);
+ }
+}
+
+bool8 debug_sub_808F8AC(void)
+{
+ FlagSet(FLAG_SYS_TV_START);
+ FlagSet(FLAG_VISITED_MAUVILLE_CITY);
+ CloseMenu();
+ return TRUE;
+}
+
+void debug_sub_808F8CC(void)
+{
+ gDebug_03000724 = 0;
+ sub_8071F40(gUnknown_Debug_083C49CA);
+ Menu_BlankWindowRect(13, 6, 26, 8);
+ Menu_PrintText(gUnknown_Debug_083C4ACC[0], 14, 7);
+ Menu_BlankWindowRect(22, 1, 24, 2);
+ ConvertIntToDecimalStringN(gStringVar1, 0, STR_CONV_MODE_LEFT_ALIGN, 2);
+ Menu_PrintText(gStringVar1, 23, 1);
+ gMenuCallback = debug_sub_808F93C;
+}
+
+bool8 debug_sub_808F93C(void)
+{
+ bool8 updateDisplay = FALSE;
+ if (gMain.newKeys & DPAD_UP)
+ {
+ gDebug_03000725++;
+ if (gDebug_03000725 == 24)
+ gDebug_03000725 = 0;
+ PlaySE(SE_SELECT);
+ updateDisplay = TRUE;
+ }
+ if (gMain.newKeys & DPAD_DOWN)
+ {
+ if (gDebug_03000725 == 0)
+ gDebug_03000725 = 24;
+ gDebug_03000725--;
+ PlaySE(SE_SELECT);
+ updateDisplay = TRUE;
+ }
+ if (gMain.newKeys & DPAD_RIGHT)
+ {
+ gDebug_03000724++;
+ if (gDebug_03000724 == 12)
+ gDebug_03000724 = 0;
+ PlaySE(SE_SELECT);
+ updateDisplay = TRUE;
+ }
+ if (gMain.newKeys & DPAD_LEFT)
+ {
+ if (gDebug_03000724 == 0)
+ gDebug_03000724 = 12;
+ gDebug_03000724--;
+ PlaySE(SE_SELECT);
+ updateDisplay = TRUE;
+ }
+ if (updateDisplay)
+ {
+ Menu_BlankWindowRect(13, 6, 26, 8);
+ Menu_PrintText(gUnknown_Debug_083C4ACC[gDebug_03000724], 14, 7);
+ Menu_BlankWindowRect(22, 1, 24, 2);
+ ConvertIntToDecimalStringN(gStringVar1, gDebug_03000725, STR_CONV_MODE_LEFT_ALIGN, 2);
+ Menu_PrintText(gStringVar1, 23, 1);
+ }
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_PIN);
+ debug_sub_808FA88(gDebug_03000725, gUnknown_Debug_083C4ABD[gDebug_03000724]);
+ }
+ if (gMain.newKeys & (B_BUTTON | START_BUTTON))
+ {
+ sub_80BF588(gSaveBlock1.tvShows);
+ CloseMenu();
+ return TRUE;
+ }
+ return FALSE;
+}
+
+void debug_sub_808FA88(u8 a0, u8 a1)
+{
+ u8 i;
+ u8 leadMonIndex = GetLeadMonIndex();
+ u8 channel;
+
+ gSaveBlock1.tvShows[a0].common.kind = a1;
+ gSaveBlock1.tvShows[a0].common.active = TRUE;
+ for (i = 0; i < 0x22; i++)
+ gSaveBlock1.tvShows[a0].common.pad02[i] = 1;
+
+ channel = GetTVChannelByShowType(a1);
+ switch (channel)
+ {
+ case 2:
+ case 4:
+ sub_80BE160(gSaveBlock1.tvShows + a0);
+ break;
+ case 3:
+ sub_80BE138(gSaveBlock1.tvShows + a0);
+ break;
+ }
+
+ switch (a1)
+ {
+ case TVSHOW_FAN_CLUB_LETTER:
+ case TVSHOW_RECENT_HAPPENINGS:
+ {
+ TVShow * show = gSaveBlock1.tvShows + a0;
+
+ show->fanclubLetter.species = SPECIES_BULBASAUR;
+ StringCopy(gSaveBlock1.tvShows[a0].fanclubLetter.playerName, gSaveBlock2.playerName);
+ show->fanclubLetter.language = GAME_LANGUAGE;
+ break;
+ }
+ case TVSHOW_PKMN_FAN_CLUB_OPINIONS:
+ {
+ TVShow * show = gSaveBlock1.tvShows + a0;
+
+ show->fanclubOpinions.var02 = 1;
+ StringCopy(gSaveBlock1.tvShows[a0].fanclubOpinions.playerName, gSaveBlock2.playerName);
+ GetMonData(gPlayerParty + leadMonIndex, MON_DATA_NICKNAME, gSaveBlock1.tvShows[a0].fanclubOpinions.var10);
+ show->fanclubOpinions.language = GAME_LANGUAGE;
+ show->fanclubOpinions.var0E = GetMonData(gPlayerParty + leadMonIndex, MON_DATA_LANGUAGE);
+ break;
+ }
+ case TVSHOW_UNKN_SHOWTYPE_04:
+ {
+ break;
+ }
+ case TVSHOW_NAME_RATER_SHOW:
+ {
+ u16 species = GetMonData(gPlayerParty + leadMonIndex, MON_DATA_SPECIES);
+ TVShow * show = gSaveBlock1.tvShows + a0;
+
+ show->nameRaterShow.species = species;
+ show->nameRaterShow.var1C = 1;
+ StringCopy(gSaveBlock1.tvShows[a0].nameRaterShow.trainerName, gSaveBlock2.playerName);
+ GetMonData(gPlayerParty + leadMonIndex, MON_DATA_NICKNAME, gSaveBlock1.tvShows[a0].nameRaterShow.pokemonName);
+ show->nameRaterShow.language = GAME_LANGUAGE;
+ show->nameRaterShow.pokemonNameLanguage = GetMonData(gPlayerParty + leadMonIndex, MON_DATA_LANGUAGE);
+ break;
+ }
+ case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE:
+ {
+ TVShow * show = gSaveBlock1.tvShows + a0;
+
+ show->bravoTrainer.species = SPECIES_BULBASAUR;
+ StringCopy(gSaveBlock1.tvShows[a0].bravoTrainer.playerName, gSaveBlock2.playerName);
+ GetMonData(gPlayerParty + leadMonIndex, MON_DATA_NICKNAME, gSaveBlock1.tvShows[a0].bravoTrainer.pokemonNickname);
+ show->bravoTrainer.language = GAME_LANGUAGE;
+ show->bravoTrainer.var1f = GetMonData(gPlayerParty + leadMonIndex, MON_DATA_LANGUAGE);
+ break;
+ }
+ case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE:
+ {
+ TVShow * show = gSaveBlock1.tvShows + a0;
+
+ show->bravoTrainerTower.species = SPECIES_BULBASAUR;
+ show->bravoTrainerTower.defeatedSpecies = SPECIES_BULBASAUR;
+ StringCopy(gSaveBlock1.tvShows[a0].bravoTrainerTower.trainerName, gSaveBlock2.playerName);
+ StringCopy(gSaveBlock1.tvShows[a0].bravoTrainerTower.enemyTrainerName, gSaveBlock2.playerName);
+ show->bravoTrainerTower.language = GAME_LANGUAGE;
+ break;
+ }
+ case TVSHOW_MASS_OUTBREAK:
+ {
+ TVShow * show = gSaveBlock1.tvShows + a0;
+
+ show->massOutbreak.species = SPECIES_BULBASAUR;
+ show->massOutbreak.daysLeft = 1;
+ break;
+ }
+ case TVSHOW_POKEMON_TODAY_CAUGHT:
+ {
+ TVShow * show = gSaveBlock1.tvShows + a0;
+ u8 gUnknown_Debug_083C4C64[] = _("TERUKUN");
+ u8 gUnknown_Debug_083C4C6C[] = _("TERUTERUDA");
+
+ show->pokemonToday.var12 = 255;
+ StringCopy(show->pokemonToday.playerName, gUnknown_Debug_083C4C64);
+ StringCopy(show->pokemonToday.nickname, gUnknown_Debug_083C4C6C);
+ show->pokemonToday.ball = ITEM_PREMIER_BALL;
+ show->pokemonToday.species = SPECIES_WIGGLYTUFF;
+ show->pokemonToday.language = GAME_LANGUAGE;
+ show->pokemonToday.language2 = GAME_LANGUAGE;
+ break;
+ }
+ case TVSHOW_SMART_SHOPPER:
+ {
+ TVShow * show = gSaveBlock1.tvShows + a0;
+ u8 gUnknown_Debug_083C4C64[] = _("TERUKUN");
+ int ii;
+
+ for (ii = 0; ii < 3; ii++)
+ show->smartshopperShow.itemAmounts[ii] = 254;
+ show->smartshopperShow.priceReduced = TRUE;
+ show->smartshopperShow.shopLocation = 40;
+ for (ii = 0; ii < 3; ii++)
+ show->smartshopperShow.itemIds[ii] = ITEM_ENERGY_POWDER;
+ StringCopy(show->smartshopperShow.playerName, gUnknown_Debug_083C4C64);
+ show->smartshopperShow.language = GAME_LANGUAGE;
+ break;
+ }
+ case TVSHOW_POKEMON_TODAY_FAILED:
+ {
+ TVShow * show = gSaveBlock1.tvShows + a0;
+ u8 gUnknown_Debug_083C4C64[] = _("TERUKUN");
+
+ show->pokemonTodayFailed.species = SPECIES_WIGGLYTUFF;
+ show->pokemonTodayFailed.species2 = SPECIES_WIGGLYTUFF;
+ show->pokemonTodayFailed.var12 = 3;
+ show->pokemonTodayFailed.var10 = 0xff;
+ show->pokemonTodayFailed.var11 = 1;
+ StringCopy(show->pokemonTodayFailed.playerName, gUnknown_Debug_083C4C64);
+ show->pokemonTodayFailed.language = GAME_LANGUAGE;
+ break;
+ }
+ case TVSHOW_FISHING_ADVICE:
+ {
+ TVShow * show = gSaveBlock1.tvShows + a0;
+ u8 gUnknown_Debug_083C4C64[] = _("TERUKUN");
+
+ show->pokemonAngler.var02 = 0xff;
+ show->pokemonAngler.var03 = 0;
+ show->pokemonAngler.var04 = 40;
+ StringCopy(show->pokemonAngler.playerName, gUnknown_Debug_083C4C64);
+ show->pokemonAngler.language = GAME_LANGUAGE;
+ break;
+ }
+ case TVSHOW_WORLD_OF_MASTERS:
+ {
+ TVShow * show = gSaveBlock1.tvShows + a0;
+ u8 gUnknown_Debug_083C4C64[] = _("TERUKUN");
+
+ show->worldOfMasters.var02 = 0xffff;
+ show->worldOfMasters.var06 = 0xffff;
+ show->worldOfMasters.var04 = 40;
+ show->worldOfMasters.var08 = 40;
+ show->worldOfMasters.var0a = 3;
+ StringCopy(show->worldOfMasters.playerName, gUnknown_Debug_083C4C64);
+ show->worldOfMasters.language = GAME_LANGUAGE;
+ break;
+ }
+
+ }
+}
+
+bool8 debug_sub_808FEBC(void)
+{
+ ClearTVShowData();
+ CloseMenu();
+ return TRUE;
+}
+
+void debug_sub_808FECC(void)
+{
+ gDebug_03000724 = 0;
+ sub_8071F40(gUnknown_Debug_083C49CA);
+ Menu_BlankWindowRect(13, 6, 23, 8);
+ Menu_PrintText(gUnknown_Debug_083C4B24[0], 14, 7);
+ Menu_BlankWindowRect(22, 1, 24, 2);
+ ConvertIntToDecimalStringN(gStringVar1, 0, STR_CONV_MODE_LEFT_ALIGN, 2);
+ Menu_PrintText(gStringVar1, 23, 1);
+ gMenuCallback = debug_sub_808FF3C;
+}
+
+bool8 debug_sub_808FF3C(void)
+{
+ bool8 updateDisplay = FALSE;
+
+ if (gMain.newKeys & DPAD_UP)
+ {
+ gDebug_03000725++;
+ if (gDebug_03000725 == 16)
+ gDebug_03000725 = 0;
+ PlaySE(SE_SELECT);
+ updateDisplay = TRUE;
+ }
+
+ if (gMain.newKeys & DPAD_DOWN)
+ {
+ if (gDebug_03000725 == 0)
+ gDebug_03000725 = 16;
+ gDebug_03000725--;
+ PlaySE(SE_SELECT);
+ updateDisplay = TRUE;
+ }
+
+ if (gMain.newKeys & DPAD_RIGHT)
+ {
+ gDebug_03000724++;
+ if (gDebug_03000724 == 3)
+ gDebug_03000724 = 0;
+ PlaySE(SE_SELECT);
+ updateDisplay = TRUE;
+ }
+
+ if (gMain.newKeys & DPAD_LEFT)
+ {
+ if (gDebug_03000724 == 0)
+ gDebug_03000724 = 3;
+ gDebug_03000724--;
+ PlaySE(SE_SELECT);
+ updateDisplay = TRUE;
+ }
+
+ if (updateDisplay)
+ {
+ Menu_BlankWindowRect(13, 6, 23, 8);
+ Menu_PrintText(gUnknown_Debug_083C4B24[gDebug_03000724], 14, 7);
+ Menu_BlankWindowRect(22, 1, 24, 2);
+ ConvertIntToDecimalStringN(gStringVar1, gDebug_03000725, STR_CONV_MODE_LEFT_ALIGN, 2);
+ Menu_PrintText(gStringVar1, 23, 1);
+ }
+
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_PIN);
+ debug_sub_8090080(gDebug_03000725, gUnknown_Debug_083C4B20[gDebug_03000724]);
+ }
+
+ if (gMain.newKeys & (B_BUTTON | START_BUTTON))
+ {
+ sub_80BEC40();
+ CloseMenu();
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+void debug_sub_8090080(u8 a0, u8 a1)
+{
+ gSaveBlock1.pokeNews[a0].kind = a1;
+ gSaveBlock1.pokeNews[a0].state = 1;
+ gSaveBlock1.pokeNews[a0].days = 4;
+}
+
+bool8 debug_sub_80900AC(void)
+{
+ u8 i;
+ u8 j;
+
+ j = 0;
+ for (i = 0; i < 24; i++)
+ {
+ if (gSaveBlock1.tvShows[i].common.kind == 0)
+ {
+ if (j == 12)
+ j = 0;
+ debug_sub_808FA88(i, gUnknown_Debug_083C4ABD[j]);
+ gSaveBlock1.tvShows[i].common.active = FALSE;
+ j++;
+ }
+ }
+
+ j = 0;
+ for (i = 0; i < 16; i++)
+ {
+ if (gSaveBlock1.pokeNews[i].kind == 0)
+ {
+ if (j == 3)
+ j = 0;
+ debug_sub_8090080(i, gUnknown_Debug_083C4B20[j]);
+ j++;
+ }
+ }
+
+ CloseMenu();
+ return TRUE;
+}
+
+const u8 gUnknown_Debug_083C4C77[] = _("1 スクル");
+const u8 gUnknown_Debug_083C4C7D[] = _("2 ミドル");
+const u8 gUnknown_Debug_083C4C83[] = _("3 オジヨ");
+const u8 gUnknown_Debug_083C4C89[] = _("4 ボーヤ");
+const u8 gUnknown_Debug_083C4C8F[] = _("5 ボーイ");
+const u8 gUnknown_Debug_083C4C95[] = _("6 ヤング");
+const u8 gUnknown_Debug_083C4C9B[] = _("7 ヲーカ");
+const u8 gUnknown_Debug_083C4CA1[] = _("8 オルド");
+
+const u8 *const gUnknown_Debug_083C4CA8[] = {
+ gUnknown_Debug_083C4C77,
+ gUnknown_Debug_083C4C7D,
+ gUnknown_Debug_083C4C83,
+ gUnknown_Debug_083C4C89,
+ gUnknown_Debug_083C4C8F,
+ gUnknown_Debug_083C4C95,
+ gUnknown_Debug_083C4C9B,
+ gUnknown_Debug_083C4CA1
+};
+
+const u8 gUnknown_Debug_083C4CC8[] = _("Start");
+const u8 gUnknown_Debug_083C4CCE[] = _("Increase");
+const u8 gUnknown_Debug_083C4CD7[] = _("Reduce");
+const u8 gUnknown_Debug_083C4CDE[] = _("Points");
+const u8 gUnknown_Debug_083C4CE5[] = _("Play time 6");
+const u8 gUnknown_Debug_083C4CF1[] = _("P ELITE FOUR");
+const u8 gUnknown_Debug_083C4CFE[] = _("P SECRET BASE");
+const u8 gUnknown_Debug_083C4D0C[] = _("P CONTEST");
+const u8 gUnknown_Debug_083C4D16[] = _("P BATTLE TOWER");
+
+const struct MenuAction gUnknown_Debug_083C4D28[] = {
+ {gUnknown_Debug_083C4CC8, debug_sub_80901E4},
+ {gUnknown_Debug_083C4CCE, debug_sub_80901F8},
+ {gUnknown_Debug_083C4CD7, debug_sub_8090238},
+ {gUnknown_Debug_083C4CDE, debug_sub_809029C},
+ {gUnknown_Debug_083C4CE5, debug_sub_80902E4},
+ {gUnknown_Debug_083C4CF1, debug_sub_80902FC},
+ {gUnknown_Debug_083C4CFE, debug_sub_8090310},
+ {gUnknown_Debug_083C4D0C, debug_sub_8090324},
+ {gUnknown_Debug_083C4D16, debug_sub_8090338}
+};
+
+bool8 NoharaDebugMenu_Fan(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 11, 19);
+ Menu_PrintItems(1, 1, ARRAY_COUNT(gUnknown_Debug_083C4D28), gUnknown_Debug_083C4D28);
+ InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C4D28), 0, 10);
+ gMenuCallback = debug_sub_80901A4;
+ return FALSE;
+}
+
+bool8 debug_sub_80901A4(void)
+{
+ s8 input = Menu_ProcessInput();
+ switch (input)
+ {
+ default:
+ gMenuCallback = gUnknown_Debug_083C4D28[input].func;
+ return FALSE;
+ case -2:
+ return FALSE;
+ case -1:
+ CloseMenu();
+ return TRUE;
+ }
+}
+
+bool8 debug_sub_80901E4(void)
+{
+ ResetFanClub();
+ sub_810FAA0();
+ CloseMenu();
+ return TRUE;
+}
+
+bool8 debug_sub_80901F8(void)
+{
+ u8 r0 = sub_810FB9C();
+ Menu_PrintText(gUnknown_Debug_083C4CA8[gUnknown_083F8408[r0] - 8], 14, 7);
+ gMenuCallback = debug_sub_8090278;
+ return FALSE;
+}
+
+bool8 debug_sub_8090238(void)
+{
+ u8 r0 = sub_810FC18();
+ Menu_PrintText(gUnknown_Debug_083C4CA8[gUnknown_083F8410[r0] - 8], 14, 7);
+ gMenuCallback = debug_sub_8090278;
+ return FALSE;
+}
+
+bool8 debug_sub_8090278(void)
+{
+ if (gMain.newKeys & A_BUTTON)
+ {
+ CloseMenu();
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+bool8 debug_sub_809029C(void)
+{
+ ConvertIntToDecimalStringN(gStringVar1, gSaveBlock1.vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] & 0x7F, STR_CONV_MODE_LEFT_ALIGN, 2);
+ Menu_PrintText(gStringVar1, 16, 7);
+ gMenuCallback = debug_sub_8090278;
+ return FALSE;
+}
+
+bool8 debug_sub_80902E4(void)
+{
+ gSaveBlock2.playTimeHours += 6;
+ CloseMenu();
+ return TRUE;
+}
+
+bool8 debug_sub_80902FC(void)
+{
+ sub_810FB10(0);
+ CloseMenu();
+ return TRUE;
+}
+
+bool8 debug_sub_8090310(void)
+{
+ sub_810FB10(1);
+ CloseMenu();
+ return TRUE;
+}
+
+bool8 debug_sub_8090324(void)
+{
+ sub_810FB10(2);
+ CloseMenu();
+ return TRUE;
+}
+
+bool8 debug_sub_8090338(void)
+{
+ sub_810FB10(3);
+ CloseMenu();
+ return TRUE;
+}
+
+bool8 NoharaDebugMenu_BattleVSDad(void)
+{
+ VarSet(VAR_PETALBURG_GYM_STATE, 6);
+ CloseMenu();
+ return TRUE;
+}
+
+bool8 NoharaDebugMenu_DadAfterBattle(void)
+{
+ VarSet(VAR_PETALBURG_GYM_STATE, 7);
+ CloseMenu();
+ return TRUE;
+}
+
+bool8 NoharaDebugMenu_SootopolisCity(void)
+{
+ FlagSet(FLAG_LEGEND_ESCAPED_SEAFLOOR_CAVERN);
+ FlagSet(FLAG_LEGENDARY_BATTLE_COMPLETED);
+ FlagClear(FLAG_HIDE_WALLACE_SOOTOPOLIS_GYM);
+ CloseMenu();
+ return TRUE;
+}
+
+bool8 NoharaDebugMenu_Embark(void)
+{
+ FlagClear(FLAG_HIDE_MR_BRINEY_ROUTE104_HOUSE);
+ VarSet(VAR_BRINEY_HOUSE_STATE, 1);
+ CloseMenu();
+ return TRUE;
+}
+
+bool8 NoharaDebugMenu_Yes9999(void)
+{
+ VarSet(VAR_ASH_GATHER_COUNT, 9999);
+ CloseMenu();
+ return TRUE;
+}
+
+bool8 NoharaDebugMenu_LegendsFlagOn(void)
+{
+ FlagSet(FLAG_REGI_DOORS_OPENED);
+ CloseMenu();
+ return TRUE;
+}
+
+bool8 NoharaDebugMenu_AddNumWinningStreaks(void)
+{
+ if (gSaveBlock2.battleTower.bestBattleTowerWinStreak < 50)
+ gSaveBlock2.battleTower.bestBattleTowerWinStreak = 50;
+ else if (gSaveBlock2.battleTower.bestBattleTowerWinStreak < 100)
+ gSaveBlock2.battleTower.bestBattleTowerWinStreak = 100;
+ else if (gSaveBlock2.battleTower.bestBattleTowerWinStreak < 1000)
+ gSaveBlock2.battleTower.bestBattleTowerWinStreak = 1000;
+ else if (gSaveBlock2.battleTower.bestBattleTowerWinStreak < 5000)
+ gSaveBlock2.battleTower.bestBattleTowerWinStreak = 9990;
+ else if (gSaveBlock2.battleTower.bestBattleTowerWinStreak < 9990)
+ gSaveBlock2.battleTower.bestBattleTowerWinStreak = 9999;
+ CloseMenu();
+ return TRUE;
+}
#endif
diff --git a/src/debug/sound_check_menu.c b/src/debug/sound_check_menu.c
index 05cbfc8f7..d57c699da 100644
--- a/src/debug/sound_check_menu.c
+++ b/src/debug/sound_check_menu.c
@@ -19,7 +19,7 @@
// window selections
enum
{
- BGM_WINDOW,
+ MUS_WINDOW,
SE_WINDOW
};
@@ -133,8 +133,8 @@ void CB2_StartSoundCheckMenu(void)
ResetTasks();
ResetSpriteData();
Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C);
- InitMenuWindow(&gWindowTemplate_81E6CE4);
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ InitMenuWindow(&gMenuTextWindowTemplate);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
REG_WIN0H = WIN_RANGE(0, 0);
REG_WIN0V = WIN_RANGE(0, 0);
REG_WIN1H = WIN_RANGE(0, 0);
@@ -151,7 +151,7 @@ void CB2_StartSoundCheckMenu(void)
SetMainCallback2(CB2_SoundCheckMenu);
REG_DISPCNT = 0x7140;
taskId = CreateTask(Task_InitSoundCheckMenu, 0);
- gTasks[taskId].tWindowSelected = BGM_WINDOW;
+ gTasks[taskId].tWindowSelected = MUS_WINDOW;
gTasks[taskId].tBgmIndex = 0;
gTasks[taskId].tSeIndex = 0;
gTasks[taskId].data[3] = 0;
@@ -196,7 +196,7 @@ extern const u8 *const gSENames[];
void sub_80BA384(u8 taskId) // Task_HandleDrawingSoundCheckMenuText
{
HighlightSelectedWindow(gTasks[taskId].tWindowSelected);
- PrintSoundNumber(gTasks[taskId].tBgmIndex + BGM_STOP, 7, 8); // print by BGM index
+ PrintSoundNumber(gTasks[taskId].tBgmIndex + MUS_STOP, 7, 8); // print by BGM index
sub_80BA79C(gBGMNames[gTasks[taskId].tBgmIndex], 11, 8);
PrintSoundNumber(gTasks[taskId].tSeIndex, 7, 15);
sub_80BA79C(gSENames[gTasks[taskId].tSeIndex], 11, 15);
@@ -247,19 +247,19 @@ bool8 Task_ProcessSoundCheckMenuInput(u8 taskId)
{
if (gTasks[taskId].tBgmIndex != 0)
{
- m4aSongNumStop(gTasks[taskId].data[3] + BGM_STOP);
- m4aSongNumStart(gTasks[taskId].tBgmIndex + BGM_STOP);
+ m4aSongNumStop(gTasks[taskId].data[3] + MUS_STOP);
+ m4aSongNumStart(gTasks[taskId].tBgmIndex + MUS_STOP);
gTasks[taskId].data[3] = gTasks[taskId].tBgmIndex;
}
else
{
- m4aSongNumStop(gTasks[taskId].data[3] + BGM_STOP);
+ m4aSongNumStop(gTasks[taskId].data[3] + MUS_STOP);
gTasks[taskId].data[3] = 0;
}
}
else if (gTasks[taskId].tBgmIndex != 0)
{
- m4aSongNumStart(gTasks[taskId].tBgmIndex + BGM_STOP);
+ m4aSongNumStart(gTasks[taskId].tBgmIndex + MUS_STOP);
gTasks[taskId].data[3] = gTasks[taskId].tBgmIndex;
}
}
@@ -267,7 +267,7 @@ bool8 Task_ProcessSoundCheckMenuInput(u8 taskId)
else if (gMain.newKeys & B_BUTTON)
{
m4aSongNumStart(SE_SELECT);
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gTasks[taskId].func = sub_80BA68C;
}
else if (gMain.newAndRepeatedKeys & DPAD_UP)
@@ -346,7 +346,7 @@ void HighlightSelectedWindow(u8 windowType)
{
switch (windowType)
{
- case BGM_WINDOW:
+ case MUS_WINDOW:
default:
REG_WIN1H = WIN_RANGE(17, 223);
REG_WIN1V = WIN_RANGE(41, 87);
@@ -819,124 +819,124 @@ void sub_80BB1D4(void)
}
#define SOUND_LIST_BGM \
- X(BGM_STOP, "STOP") \
- X(BGM_TETSUJI, "TETSUJI") \
- X(BGM_FIELD13, "FIELD13") \
- X(BGM_KACHI22, "KACHI22") \
- X(BGM_KACHI2, "KACHI2") \
- X(BGM_KACHI3, "KACHI3") \
- X(BGM_KACHI5, "KACHI5") \
- X(BGM_PCC, "PCC") \
- X(BGM_NIBI, "NIBI") \
- X(BGM_SUIKUN, "SUIKUN") \
- X(BGM_DOORO1, "DOORO1") \
- X(BGM_DOORO_X1, "DOORO-X1") \
- X(BGM_DOORO_X3, "DOORO-X3") \
- X(BGM_MACHI_S2, "MACHI-S2") \
- X(BGM_MACHI_S4, "MACHI-S4") \
- X(BGM_GIM, "GIM") \
- X(BGM_NAMINORI, "NAMINORI") \
- X(BGM_DAN01, "DAN01") \
- X(BGM_FANFA1, "FANFA1") \
- X(BGM_ME_ASA, "ME-ASA") \
- X(BGM_ME_BACHI, "ME-BACHI") \
- X(BGM_FANFA4, "FANFA4") \
- X(BGM_FANFA5, "FANFA5") \
- X(BGM_ME_WAZA, "ME-WAZA") \
- X(BGM_BIJYUTU, "BIJYUTU") \
- X(BGM_DOORO_X4, "DOORO-X4") \
- X(BGM_FUNE_KAN, "FUNE-KAN") \
- X(BGM_ME_SHINKA, "ME-SHINKA") \
- X(BGM_SHINKA, "SHINKA") \
- X(BGM_ME_WASURE, "ME-WASURE") \
- X(BGM_SYOUJOEYE, "SYOUJOEYE") \
- X(BGM_BOYEYE, "BOYEYE") \
- X(BGM_DAN02, "DAN02") \
- X(BGM_MACHI_S3, "MACHI-S3") \
- X(BGM_ODAMAKI, "ODAMAKI") \
- X(BGM_B_TOWER, "B-TOWER") \
- X(BGM_SWIMEYE, "SWIMEYE") \
- X(BGM_DAN03, "DAN03") \
- X(BGM_ME_KINOMI, "ME-KINOMI") \
- X(BGM_ME_TAMA, "ME-TAMA") \
- X(BGM_ME_B_BIG, "ME-B-BIG") \
- X(BGM_ME_B_SMALL, "ME-B-SMALL") \
- X(BGM_ME_ZANNEN, "ME-ZANNEN") \
- X(BGM_BD_TIME, "BD-TIME") \
- X(BGM_TEST1, "TEST1") \
- X(BGM_TEST2, "TEST2") \
- X(BGM_TEST3, "TEST3") \
- X(BGM_TEST4, "TEST4") \
- X(BGM_TEST, "TEST") \
- X(BGM_GOMACHI0, "GOMACHI0") \
- X(BGM_GOTOWN, "GOTOWN") \
- X(BGM_POKECEN, "POKECEN") \
- X(BGM_NEXTROAD, "NEXTROAD") \
- X(BGM_GRANROAD, "GRANROAD") \
- X(BGM_CYCLING, "CYCLING") \
- X(BGM_FRIENDLY, "FRIENDLY") \
- X(BGM_MISHIRO, "MISHIRO") \
- X(BGM_TOZAN, "TOZAN") \
- X(BGM_GIRLEYE, "GIRLEYE") \
- X(BGM_MINAMO, "MINAMO") \
- X(BGM_ASHROAD, "ASHROAD") \
- X(BGM_EVENT0, "EVENT0") \
- X(BGM_DEEPDEEP, "DEEPDEEP") \
- X(BGM_KACHI1, "KACHI1") \
- X(BGM_TITLE3, "TITLE3") \
- X(BGM_DEMO1, "DEMO1") \
- X(BGM_GIRL_SUP, "GIRL-SUP") \
- X(BGM_HAGESHII, "HAGESHII") \
- X(BGM_KAKKOII, "KAKKOII") \
- X(BGM_KAZANBAI, "KAZANBAI") \
- X(BGM_AQA_0, "AQA-0") \
- X(BGM_TSURETEK, "TSURETEK") \
- X(BGM_BOY_SUP, "BOY-SUP") \
- X(BGM_RAINBOW, "RAINBOW") \
- X(BGM_AYASII, "AYASII") \
- X(BGM_KACHI4, "KACHI4") \
- X(BGM_ROPEWAY, "ROPEWAY") \
- X(BGM_CASINO, "CASINO") \
- X(BGM_HIGHTOWN, "HIGHTOWN") \
- X(BGM_SAFARI, "SAFARI") \
- X(BGM_C_ROAD, "C-ROAD") \
- X(BGM_AJITO, "AJITO") \
- X(BGM_M_BOAT, "M-BOAT") \
- X(BGM_M_DUNGON, "M-DUNGON") \
- X(BGM_FINECITY, "FINECITY") \
- X(BGM_MACHUPI, "MACHUPI") \
- X(BGM_P_SCHOOL, "P-SCHOOL") \
- X(BGM_DENDOU, "DENDOU") \
- X(BGM_TONEKUSA, "TONEKUSA") \
- X(BGM_MABOROSI, "MABOROSI") \
- X(BGM_CON_FAN, "CON-FAN") \
- X(BGM_CONTEST0, "CONTEST0") \
- X(BGM_MGM0, "MGM0") \
- X(BGM_T_BATTLE, "T-BATTLE") \
- X(BGM_OOAME, "OOAME") \
- X(BGM_HIDERI, "HIDERI") \
- X(BGM_RUNECITY, "RUNECITY") \
- X(BGM_CON_K, "CON-K") \
- X(BGM_EIKOU_R, "EIKOU-R") \
- X(BGM_KARAKURI, "KARAKURI") \
- X(BGM_HUTAGO, "HUTAGO") \
- X(BGM_SITENNOU, "SITENNOU") \
- X(BGM_YAMA_EYE, "YAMA-EYE") \
- X(BGM_CONLOBBY, "CONLOBBY") \
- X(BGM_INTER_V, "INTER-V") \
- X(BGM_DAIGO, "DAIGO") \
- X(BGM_THANKFOR, "THANKFOR") \
- X(BGM_END, "END") \
- X(BGM_BATTLE27, "BATTLE27") \
- X(BGM_BATTLE31, "BATTLE31") \
- X(BGM_BATTLE20, "BATTLE20") \
- X(BGM_BATTLE32, "BATTLE32") \
- X(BGM_BATTLE33, "BATTLE33") \
- X(BGM_BATTLE36, "BATTLE36") \
- X(BGM_BATTLE34, "BATTLE34") \
- X(BGM_BATTLE35, "BATTLE35") \
- X(BGM_BATTLE38, "BATTLE38") \
- X(BGM_BATTLE30, "BATTLE30")
+ X(MUS_STOP, "STOP") \
+ X(MUS_TETSUJI, "TETSUJI") \
+ X(MUS_FIELD13, "FIELD13") \
+ X(MUS_KACHI22, "KACHI22") \
+ X(MUS_KACHI2, "KACHI2") \
+ X(MUS_KACHI3, "KACHI3") \
+ X(MUS_KACHI5, "KACHI5") \
+ X(MUS_PCC, "PCC") \
+ X(MUS_NIBI, "NIBI") \
+ X(MUS_SUIKUN, "SUIKUN") \
+ X(MUS_DOORO1, "DOORO1") \
+ X(MUS_DOORO_X1, "DOORO-X1") \
+ X(MUS_DOORO_X3, "DOORO-X3") \
+ X(MUS_MACHI_S2, "MACHI-S2") \
+ X(MUS_MACHI_S4, "MACHI-S4") \
+ X(MUS_GIM, "GIM") \
+ X(MUS_NAMINORI, "NAMINORI") \
+ X(MUS_DAN01, "DAN01") \
+ X(MUS_FANFA1, "FANFA1") \
+ X(MUS_ME_ASA, "ME-ASA") \
+ X(MUS_ME_BACHI, "ME-BACHI") \
+ X(MUS_FANFA4, "FANFA4") \
+ X(MUS_FANFA5, "FANFA5") \
+ X(MUS_ME_WAZA, "ME-WAZA") \
+ X(MUS_BIJYUTU, "BIJYUTU") \
+ X(MUS_DOORO_X4, "DOORO-X4") \
+ X(MUS_FUNE_KAN, "FUNE-KAN") \
+ X(MUS_ME_SHINKA, "ME-SHINKA") \
+ X(MUS_SHINKA, "SHINKA") \
+ X(MUS_ME_WASURE, "ME-WASURE") \
+ X(MUS_SYOUJOEYE, "SYOUJOEYE") \
+ X(MUS_BOYEYE, "BOYEYE") \
+ X(MUS_DAN02, "DAN02") \
+ X(MUS_MACHI_S3, "MACHI-S3") \
+ X(MUS_ODAMAKI, "ODAMAKI") \
+ X(MUS_B_TOWER, "B-TOWER") \
+ X(MUS_SWIMEYE, "SWIMEYE") \
+ X(MUS_DAN03, "DAN03") \
+ X(MUS_ME_KINOMI, "ME-KINOMI") \
+ X(MUS_ME_TAMA, "ME-TAMA") \
+ X(MUS_ME_B_BIG, "ME-B-BIG") \
+ X(MUS_ME_B_SMALL, "ME-B-SMALL") \
+ X(MUS_ME_ZANNEN, "ME-ZANNEN") \
+ X(MUS_BD_TIME, "BD-TIME") \
+ X(MUS_TEST1, "TEST1") \
+ X(MUS_TEST2, "TEST2") \
+ X(MUS_TEST3, "TEST3") \
+ X(MUS_TEST4, "TEST4") \
+ X(MUS_TEST, "TEST") \
+ X(MUS_GOMACHI0, "GOMACHI0") \
+ X(MUS_GOTOWN, "GOTOWN") \
+ X(MUS_POKECEN, "POKECEN") \
+ X(MUS_NEXTROAD, "NEXTROAD") \
+ X(MUS_GRANROAD, "GRANROAD") \
+ X(MUS_CYCLING, "CYCLING") \
+ X(MUS_FRIENDLY, "FRIENDLY") \
+ X(MUS_MISHIRO, "MISHIRO") \
+ X(MUS_TOZAN, "TOZAN") \
+ X(MUS_GIRLEYE, "GIRLEYE") \
+ X(MUS_MINAMO, "MINAMO") \
+ X(MUS_ASHROAD, "ASHROAD") \
+ X(MUS_EVENT0, "EVENT0") \
+ X(MUS_DEEPDEEP, "DEEPDEEP") \
+ X(MUS_KACHI1, "KACHI1") \
+ X(MUS_TITLE3, "TITLE3") \
+ X(MUS_DEMO1, "DEMO1") \
+ X(MUS_GIRL_SUP, "GIRL-SUP") \
+ X(MUS_HAGESHII, "HAGESHII") \
+ X(MUS_KAKKOII, "KAKKOII") \
+ X(MUS_KAZANBAI, "KAZANBAI") \
+ X(MUS_AQA_0, "AQA-0") \
+ X(MUS_TSURETEK, "TSURETEK") \
+ X(MUS_BOY_SUP, "BOY-SUP") \
+ X(MUS_RAINBOW, "RAINBOW") \
+ X(MUS_AYASII, "AYASII") \
+ X(MUS_KACHI4, "KACHI4") \
+ X(MUS_ROPEWAY, "ROPEWAY") \
+ X(MUS_CASINO, "CASINO") \
+ X(MUS_HIGHTOWN, "HIGHTOWN") \
+ X(MUS_SAFARI, "SAFARI") \
+ X(MUS_C_ROAD, "C-ROAD") \
+ X(MUS_AJITO, "AJITO") \
+ X(MUS_M_BOAT, "M-BOAT") \
+ X(MUS_M_DUNGON, "M-DUNGON") \
+ X(MUS_FINECITY, "FINECITY") \
+ X(MUS_MACHUPI, "MACHUPI") \
+ X(MUS_P_SCHOOL, "P-SCHOOL") \
+ X(MUS_DENDOU, "DENDOU") \
+ X(MUS_TONEKUSA, "TONEKUSA") \
+ X(MUS_MABOROSI, "MABOROSI") \
+ X(MUS_CON_FAN, "CON-FAN") \
+ X(MUS_CONTEST0, "CONTEST0") \
+ X(MUS_MGM0, "MGM0") \
+ X(MUS_T_BATTLE, "T-BATTLE") \
+ X(MUS_OOAME, "OOAME") \
+ X(MUS_HIDERI, "HIDERI") \
+ X(MUS_RUNECITY, "RUNECITY") \
+ X(MUS_CON_K, "CON-K") \
+ X(MUS_EIKOU_R, "EIKOU-R") \
+ X(MUS_KARAKURI, "KARAKURI") \
+ X(MUS_HUTAGO, "HUTAGO") \
+ X(MUS_SITENNOU, "SITENNOU") \
+ X(MUS_YAMA_EYE, "YAMA-EYE") \
+ X(MUS_CONLOBBY, "CONLOBBY") \
+ X(MUS_INTER_V, "INTER-V") \
+ X(MUS_DAIGO, "DAIGO") \
+ X(MUS_THANKFOR, "THANKFOR") \
+ X(MUS_END, "END") \
+ X(MUS_BATTLE27, "BATTLE27") \
+ X(MUS_BATTLE31, "BATTLE31") \
+ X(MUS_BATTLE20, "BATTLE20") \
+ X(MUS_BATTLE32, "BATTLE32") \
+ X(MUS_BATTLE33, "BATTLE33") \
+ X(MUS_BATTLE36, "BATTLE36") \
+ X(MUS_BATTLE34, "BATTLE34") \
+ X(MUS_BATTLE35, "BATTLE35") \
+ X(MUS_BATTLE38, "BATTLE38") \
+ X(MUS_BATTLE30, "BATTLE30")
#define SOUND_LIST_SE \
X(SE_STOP, "STOP") \
@@ -1218,7 +1218,7 @@ void Task_InitCryTest(u8 taskId)
u8 zero;
Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C);
- InitMenuWindow(&gWindowTemplate_81E6CE4);
+ InitMenuWindow(&gMenuTextWindowTemplate);
gSoundTestCryNum = 1;
ResetSpriteData();
FreeAllSpritePalettes();
@@ -1249,7 +1249,7 @@ void Task_InitCryTest(u8 taskId)
Menu_DrawStdWindowFrame(0, 16, 5, 19);
PrintCryNumber();
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
REG_BG2HOFS = 0;
REG_BG2VOFS = 0;
REG_BG2CNT = 0xF01;
diff --git a/src/debug/start_menu_debug.c b/src/debug/start_menu_debug.c
index 9b12c1cc1..1f0cb5f60 100644
--- a/src/debug/start_menu_debug.c
+++ b/src/debug/start_menu_debug.c
@@ -2,6 +2,8 @@
#include "global.h"
#include "constants/songs.h"
+#include "constants/moves.h"
+#include "constants/items.h"
#include "battle.h"
#include "debug.h"
#include "link.h"
@@ -16,12 +18,68 @@
#include "task.h"
#include "text.h"
#include "trade.h"
+#include "start_menu.h"
+#include "string_util.h"
+#include "new_game.h"
+#include "script.h"
+#include "fieldmap.h"
+#include "field_player_avatar.h"
+#include "credits.h"
+#include "event_data.h"
+#include "berry.h"
+#include "pokedex.h"
+#include "mori_debug_menu.h"
+#include "cable_club.h"
+#include "field_fadetransition.h"
+#include "wild_encounter.h"
+#include "battle_setup.h"
+#include "safari_zone.h"
+#include "fldeff_flash.h"
+#include "rom6.h"
+#include "fldeff_strength.h"
+#include "pokemon_menu.h"
+#include "data2.h"
+#include "item.h"
+#include "reset_rtc_screen.h"
+#include "pokeblock.h"
+#include "ewram.h"
+#include "gba/flash_internal.h"
+#include "gba/m4a_internal.h"
+#include "berry_blender.h"
-// berry_blender.c
-extern void unref_sub_80524BC(void);
+extern void Debug_SetUpFieldMove_Cut(void);
+extern void Debug_SetUpFieldMove_SecretPower(void);
void debug_sub_8076BB4(u8);
-void debug_sub_8077CF4();
+void debug_sub_8077CF4(u8 x, u8 y);
+u8 DebugMenu_807706C(void);
+u8 DebugMenu_807709C(void);
+void DebugMenu_807719C(void);
+void DebugMenu_80771EC(void);
+void DebugMenu_8077238(void);
+u8 DebugMenu_8077D78(const struct MenuAction *menuActions);
+void DebugMenu_8077D24(const struct MenuAction *menuAction, u8 width, u8 itemCount);
+u8 DebugMenu_8077C14(void);
+bool8 DebugMenu_8077DB4(void);
+void DebugMenu_8077EAC(void);
+void DebugMenu_8077F40(u8 taskId);
+void DebugMenu_8077F7C(u8 taskId);
+void DebugMenu_8077FFC(u8 taskId);
+void DebugMenu_807806C(u8 taskId);
+void DebugMenu_8078A14(u8 taskId);
+void DebugMenu_8078AA4(u8 taskId);
+void DebugMenu_8078B38(u8 taskId);
+bool8 DebugMenu_8078C80(void);
+bool8 DebugMenu_8078CA8(void);
+bool8 DebugMenu_8078CE4(void);
+bool8 DebugMenu_8078D30(void);
+bool8 DebugMenu_8078D7C(void);
+bool8 DebugMenu_8078DA4(void);
+bool8 DebugMenu_8078DF0(void);
+bool32 DebugMenu_8078E40(u8 a0, u8 * a1, u32 a2);
+void DebugMenu_8078E68(u8 a0, u8 * a1, u32 a2);
+void DebugMenu_8078F68(u8 taskId);
+void DebugMenu_8079020(u8 taskId);
u8 DebugMenu_Exit(void);
u8 DebugMenu_OpenWatanabe(void);
@@ -280,12 +338,12 @@ const u8 Str_839BD7D[] = _("へんかんが しゅうりょう しました
extern const u8 Str_839BD2C[];
extern const u8 Str_839BD4C[];
-__attribute__((unused)) static u8 gUnknown_030006B8[4];
-__attribute__((unused)) static u8 gUnknown_030006BC[4];
-__attribute__((unused)) static u8 gUnknown_030006C0;
-__attribute__((unused)) static u8 gUnknown_030006C1;
-static const u8 *gUnknown_030006C4;
-__attribute__((unused)) static u8 gUnknown_030006C8;
+static u8 gUnknown_030006B8;
+UNUSED static const s32 * gUnknown_030006BC;
+static u8 gUnknown_030006C0;
+static u8 gUnknown_030006C1;
+static const u8 * gUnknown_030006C4;
+static u8 gUnknown_030006C8;
void debug_sub_8076AC8(u8 a)
{
@@ -402,7 +460,7 @@ u8 DebugMenu_8076CD4(void)
u8 DebugMenu_8076CD8(void)
{
- SetMainCallback2(unref_sub_80524BC);
+ SetMainCallback2(debug_sub_80524BC);
return 0;
}
@@ -485,5567 +543,2207 @@ void DebugMenu_8076D6C(u8 taskId)
}
}
-__attribute__((naked))
-u8 DebugMenu_8076E18()
-{
- asm(
- " push {lr}\n"
- " bl debug_sub_8076B4C\n"
- " ldr r0, ._67 @ DebugMenu_8076D6C\n"
- " mov r1, #0xa\n"
- " bl CreateTask\n"
- " mov r0, #0x0\n"
- " pop {r1}\n"
- " bx r1\n"
- "._68:\n"
- " .align 2, 0\n"
- "._67:\n"
- " .word DebugMenu_8076D6C+1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8076E30()
-{
- asm(
- " push {r4, lr}\n"
- " lsl r0, r0, #0x18\n"
- " lsr r3, r0, #0x18\n"
- " lsl r0, r3, #0x2\n"
- " add r0, r0, r3\n"
- " lsl r0, r0, #0x3\n"
- " ldr r1, ._73 @ gTasks\n"
- " add r4, r0, r1\n"
- " mov r0, #0x0\n"
- " ldsh r1, [r4, r0]\n"
- " cmp r1, #0x1\n"
- " beq ._69 @cond_branch\n"
- " cmp r1, #0x1\n"
- " bgt ._70 @cond_branch\n"
- " cmp r1, #0\n"
- " beq ._71 @cond_branch\n"
- " b ._86\n"
- "._74:\n"
- " .align 2, 0\n"
- "._73:\n"
- " .word gTasks+0x8\n"
- "._70:\n"
- " cmp r1, #0x2\n"
- " beq ._75 @cond_branch\n"
- " b ._86\n"
- "._71:\n"
- " bl Menu_DisplayDialogueFrame\n"
- " ldr r0, ._78 @ Str_839BD5A\n"
- " mov r1, #0x2\n"
- " mov r2, #0xf\n"
- " bl Menu_PrintText\n"
- " b ._77\n"
- "._79:\n"
- " .align 2, 0\n"
- "._78:\n"
- " .word Str_839BD5A\n"
- "._69:\n"
- " ldr r0, ._82 @ gMain\n"
- " ldrh r2, [r0, #0x2e]\n"
- " and r1, r1, r2\n"
- " cmp r1, #0\n"
- " beq ._80 @cond_branch\n"
- " bl Menu_DisplayDialogueFrame\n"
- " bl sub_813B79C\n"
- " ldr r0, ._82 + 4 @ Str_839BD7D\n"
- " mov r1, #0x2\n"
- " mov r2, #0xf\n"
- " bl Menu_PrintText\n"
- " mov r0, #0x49\n"
- " bl PlaySE\n"
- "._77:\n"
- " ldrh r0, [r4]\n"
- " add r0, r0, #0x1\n"
- " strh r0, [r4]\n"
- " b ._86\n"
- "._83:\n"
- " .align 2, 0\n"
- "._82:\n"
- " .word gMain\n"
- " .word Str_839BD7D\n"
- "._80:\n"
- " mov r0, #0x2\n"
- " and r0, r0, r2\n"
- " cmp r0, #0\n"
- " beq ._86 @cond_branch\n"
- " add r0, r3, #0\n"
- " bl DestroyTask\n"
- " bl DoSoftReset\n"
- " b ._86\n"
- "._75:\n"
- " ldr r0, ._87 @ gMain\n"
- " ldrh r1, [r0, #0x2e]\n"
- " mov r0, #0x1\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq ._86 @cond_branch\n"
- " add r0, r3, #0\n"
- " bl DestroyTask\n"
- " bl DoSoftReset\n"
- "._86:\n"
- " pop {r4}\n"
- " pop {r0}\n"
- " bx r0\n"
- "._88:\n"
- " .align 2, 0\n"
- "._87:\n"
- " .word gMain\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-u8 DebugMenu_8076EDC()
-{
- asm(
- " push {lr}\n"
- " bl debug_sub_8076B4C\n"
- " ldr r0, ._89 @ DebugMenu_8076E30\n"
- " mov r1, #0xa\n"
- " bl CreateTask\n"
- " mov r0, #0x0\n"
- " pop {r1}\n"
- " bx r1\n"
- "._90:\n"
- " .align 2, 0\n"
- "._89:\n"
- " .word DebugMenu_8076E30+1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8076EF4()
-{
- asm(
- " push {r4, r5, lr}\n"
- " add sp, sp, #0xfffffff8\n"
- " mov r0, #0x0\n"
- " mov r1, #0x0\n"
- " mov r2, #0xb\n"
- " mov r3, #0x11\n"
- " bl Menu_DrawStdWindowFrame\n"
- " ldr r4, ._93 @ gUnknown_Debug_839BDC4\n"
- " mov r0, #0x2\n"
- " mov r1, #0x1\n"
- " mov r2, #0x8\n"
- " add r3, r4, #0\n"
- " bl Menu_PrintItems\n"
- " mov r5, #0x0\n"
- " add r4, r4, #0x4\n"
- "._92:\n"
- " lsl r0, r5, #0x3\n"
- " add r0, r0, r4\n"
- " ldr r1, [r0]\n"
- " mov r0, #0x1\n"
- " and r1, r1, r0\n"
- " mov r0, #0xb6\n"
- " cmp r1, #0\n"
- " bne ._91 @cond_branch\n"
- " mov r0, #0xb5\n"
- "._91:\n"
- " lsl r2, r5, #0x1\n"
- " add r2, r2, #0x1\n"
- " lsl r2, r2, #0x18\n"
- " lsr r2, r2, #0x18\n"
- " mov r1, #0xa\n"
- " bl sub_8071F60\n"
- " add r0, r5, #1\n"
- " lsl r0, r0, #0x18\n"
- " lsr r5, r0, #0x18\n"
- " cmp r5, #0x7\n"
- " bls ._92 @cond_branch\n"
- " mov r0, #0x0\n"
- " str r0, [sp]\n"
- " mov r0, #0x9\n"
- " str r0, [sp, #0x4]\n"
- " mov r0, #0x0\n"
- " mov r1, #0x1\n"
- " mov r2, #0x1\n"
- " mov r3, #0x8\n"
- " bl InitMenu\n"
- " add sp, sp, #0x8\n"
- " pop {r4, r5}\n"
- " pop {r0}\n"
- " bx r0\n"
- "._94:\n"
- " .align 2, 0\n"
- "._93:\n"
- " .word gUnknown_Debug_839BDC4\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8076F60()
-{
- asm(
- " push {r4, r5, lr}\n"
- " lsl r0, r0, #0x18\n"
- " lsr r5, r0, #0x18\n"
- " bl Menu_ProcessInput\n"
- " add r4, r0, #0\n"
- " lsl r4, r4, #0x18\n"
- " lsr r4, r4, #0x18\n"
- " bl Menu_GetCursorPos\n"
- " lsl r0, r0, #0x18\n"
- " lsr r2, r0, #0x18\n"
- " lsl r4, r4, #0x18\n"
- " asr r4, r4, #0x18\n"
- " mov r0, #0x2\n"
- " neg r0, r0\n"
- " cmp r4, r0\n"
- " beq ._97 @cond_branch\n"
- " add r0, r0, #0x1\n"
- " cmp r4, r0\n"
- " bne ._96 @cond_branch\n"
- " bl Menu_EraseScreen\n"
- " bl debug_sub_8076B68\n"
- " add r0, r5, #0\n"
- " bl DestroyTask\n"
- " b ._97\n"
- "._96:\n"
- " ldr r3, ._100 @ gUnknown_Debug_839BDC4\n"
- " lsl r2, r2, #0x18\n"
- " asr r2, r2, #0x15\n"
- " add r0, r3, #4\n"
- " add r0, r2, r0\n"
- " ldrb r4, [r0]\n"
- " ldr r0, ._100 + 4 @ gSaveBlock2\n"
- " mov r1, #0x1\n"
- " and r1, r1, r4\n"
- " strb r1, [r0, #0x8]\n"
- " add r2, r2, r3\n"
- " ldr r1, [r2]\n"
- " bl StringCopy\n"
- " mov r0, #0x80\n"
- " and r4, r4, r0\n"
- " cmp r4, #0\n"
- " bne ._98 @cond_branch\n"
- " mov r0, #0x0\n"
- " bl debug_sub_8057508\n"
- " b ._99\n"
- "._101:\n"
- " .align 2, 0\n"
- "._100:\n"
- " .word gUnknown_Debug_839BDC4\n"
- " .word gSaveBlock2\n"
- "._98:\n"
- " mov r0, #0x1\n"
- " bl debug_sub_8057508\n"
- "._99:\n"
- " add r0, r5, #0\n"
- " bl DestroyTask\n"
- " ldr r0, ._102 @ debug_sub_8058C00\n"
- " bl SetMainCallback2\n"
- "._97:\n"
- " pop {r4, r5}\n"
- " pop {r0}\n"
- " bx r0\n"
- "._103:\n"
- " .align 2, 0\n"
- "._102:\n"
- " .word debug_sub_8058C00+1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8076FEC()
-{
- asm(
- " push {lr}\n"
- " bl DebugMenu_8076EF4\n"
- " ldr r0, ._104 @ DebugMenu_8076F60\n"
- " mov r1, #0xa\n"
- " bl CreateTask\n"
- " pop {r0}\n"
- " bx r0\n"
- "._105:\n"
- " .align 2, 0\n"
- "._104:\n"
- " .word DebugMenu_8076F60+1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8077004()
-{
- asm(
- " ldr r2, ._106 @ gUnknown_030006C4\n"
- " ldr r0, ._106 + 4 @ gUnknown_030006C1\n"
- " ldrb r0, [r0]\n"
- " lsl r0, r0, #0x3\n"
- " ldr r1, ._106 + 8 @ gUnknown_Debug_839BB64\n"
- " add r0, r0, r1\n"
- " str r0, [r2]\n"
- " bx lr\n"
- "._107:\n"
- " .align 2, 0\n"
- "._106:\n"
- " .word gUnknown_030006C4 \n"
- " .word gUnknown_030006C1 \n"
- " .word gUnknown_Debug_839BB64\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8077020()
-{
- asm(
- " push {r4, lr}\n"
- " lsl r0, r0, #0x18\n"
- " lsr r4, r0, #0x18\n"
- " ldr r0, ._109 @ gMenuCallback\n"
- " ldr r0, [r0]\n"
- " bl _call_via_r0\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x18\n"
- " cmp r0, #0x1\n"
- " bne ._108 @cond_branch\n"
- " add r0, r4, #0\n"
- " bl DestroyTask\n"
- "._108:\n"
- " pop {r4}\n"
- " pop {r0}\n"
- " bx r0\n"
- "._110:\n"
- " .align 2, 0\n"
- "._109:\n"
- " .word gMenuCallback\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8077048()
-{
- asm(
- " push {lr}\n"
- " ldr r0, ._111 @ gMenuCallback\n"
- " ldr r1, ._111 + 4 @ DebugMenu_807706C\n"
- " str r1, [r0]\n"
- " bl ScriptContext2_Enable\n"
- " ldr r0, ._111 + 8 @ DebugMenu_8077020\n"
- " mov r1, #0x50\n"
- " bl CreateTask\n"
- " pop {r0}\n"
- " bx r0\n"
- "._112:\n"
- " .align 2, 0\n"
- "._111:\n"
- " .word gMenuCallback\n"
- " .word DebugMenu_807706C+1\n"
- " .word DebugMenu_8077020+1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_807706C()
-{
- asm(
- " push {lr}\n"
- " ldr r0, ._113 @ gWindowTemplate_81E6CE4\n"
- " bl InitMenuWindow\n"
- " bl DebugMenu_8077004\n"
- " bl DebugMenu_807719C\n"
- " bl DebugMenu_80771EC\n"
- " bl DebugMenu_8077238\n"
- " ldr r1, ._113 + 4 @ gMenuCallback\n"
- " ldr r0, ._113 + 8 @ DebugMenu_807709C\n"
- " str r0, [r1]\n"
- " mov r0, #0x0\n"
- " pop {r1}\n"
- " bx r1\n"
- "._114:\n"
- " .align 2, 0\n"
- "._113:\n"
- " .word gWindowTemplate_81E6CE4\n"
- " .word gMenuCallback\n"
- " .word DebugMenu_807709C+1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_807709C()
-{
- asm(
- " push {r4, lr}\n"
- " ldr r4, ._120 @ gMain\n"
- " ldrh r1, [r4, #0x2e]\n"
- " mov r0, #0x40\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq ._115 @cond_branch\n"
- " mov r0, #0x5\n"
- " bl PlaySE\n"
- " mov r0, #0x1\n"
- " neg r0, r0\n"
- " bl Menu_MoveCursor\n"
- " ldr r1, ._120 + 4 @ gUnknown_030006C0\n"
- " strb r0, [r1]\n"
- "._115:\n"
- " ldrh r1, [r4, #0x2e]\n"
- " mov r0, #0x80\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq ._116 @cond_branch\n"
- " mov r0, #0x5\n"
- " bl PlaySE\n"
- " mov r0, #0x1\n"
- " bl Menu_MoveCursor\n"
- " ldr r1, ._120 + 4 @ gUnknown_030006C0\n"
- " strb r0, [r1]\n"
- "._116:\n"
- " ldrh r1, [r4, #0x2e]\n"
- " mov r0, #0x20\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq ._117 @cond_branch\n"
- " mov r0, #0x5\n"
- " bl PlaySE\n"
- " ldr r1, ._120 + 8 @ gUnknown_030006C1\n"
- " ldrb r0, [r1]\n"
- " cmp r0, #0\n"
- " bne ._118 @cond_branch\n"
- " mov r0, #0x7\n"
- " b ._119\n"
- "._121:\n"
- " .align 2, 0\n"
- "._120:\n"
- " .word gMain\n"
- " .word gUnknown_030006C0 \n"
- " .word gUnknown_030006C1 \n"
- "._118:\n"
- " sub r0, r0, #0x1\n"
- "._119:\n"
- " strb r0, [r1]\n"
- " bl DebugMenu_8077004\n"
- " bl DebugMenu_807719C\n"
- "._117:\n"
- " ldr r0, ._125 @ gMain\n"
- " ldrh r1, [r0, #0x2e]\n"
- " mov r0, #0x10\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq ._122 @cond_branch\n"
- " mov r0, #0x5\n"
- " bl PlaySE\n"
- " ldr r1, ._125 + 4 @ gUnknown_030006C1\n"
- " ldrb r0, [r1]\n"
- " cmp r0, #0x7\n"
- " bne ._123 @cond_branch\n"
- " mov r0, #0x0\n"
- " b ._124\n"
- "._126:\n"
- " .align 2, 0\n"
- "._125:\n"
- " .word gMain\n"
- " .word gUnknown_030006C1 \n"
- "._123:\n"
- " add r0, r0, #0x1\n"
- "._124:\n"
- " strb r0, [r1]\n"
- " bl DebugMenu_8077004\n"
- " bl DebugMenu_807719C\n"
- "._122:\n"
- " ldr r0, ._129 @ gMain\n"
- " ldrh r1, [r0, #0x2e]\n"
- " mov r0, #0x1\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq ._127 @cond_branch\n"
- " mov r0, #0x5\n"
- " bl PlaySE\n"
- " ldr r1, ._129 + 4 @ gDebug0x839B9BC\n"
- " ldr r0, ._129 + 8 @ gUnknown_030006C0\n"
- " ldrb r2, [r0]\n"
- " ldr r0, ._129 + 12 @ gUnknown_030006C4\n"
- " ldr r0, [r0]\n"
- " add r0, r0, r2\n"
- " ldrb r0, [r0]\n"
- " lsl r0, r0, #0x3\n"
- " add r1, r1, #0x4\n"
- " add r0, r0, r1\n"
- " ldr r0, [r0]\n"
- " bl _call_via_r0\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x18\n"
- " b ._132\n"
- "._130:\n"
- " .align 2, 0\n"
- "._129:\n"
- " .word gMain\n"
- " .word gDebug0x839B9BC\n"
- " .word gUnknown_030006C0 \n"
- " .word gUnknown_030006C4 \n"
- "._127:\n"
- " mov r0, #0xa\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " bne ._131 @cond_branch\n"
- " mov r0, #0x0\n"
- " b ._132\n"
- "._131:\n"
- " bl CloseMenu\n"
- " mov r0, #0x1\n"
- "._132:\n"
- " pop {r4}\n"
- " pop {r1}\n"
- " bx r1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_807719C()
-{
- asm(
- " push {r4, lr}\n"
- " add sp, sp, #0xfffffff8\n"
- " mov r0, #0x0\n"
- " mov r1, #0x0\n"
- " mov r2, #0xe\n"
- " mov r3, #0x11\n"
- " bl Menu_DrawStdWindowFrame\n"
- " ldr r3, ._133 @ gDebug0x839B9BC\n"
- " ldr r0, ._133 + 4 @ gUnknown_030006C4\n"
- " ldr r0, [r0]\n"
- " str r0, [sp]\n"
- " mov r0, #0x1\n"
- " mov r1, #0x1\n"
- " mov r2, #0x8\n"
- " bl Menu_PrintItemsReordered\n"
- " ldr r4, ._133 + 8 @ gUnknown_030006C0\n"
- " ldrb r0, [r4]\n"
- " str r0, [sp]\n"
- " mov r0, #0xd\n"
- " str r0, [sp, #0x4]\n"
- " mov r0, #0x0\n"
- " mov r1, #0x1\n"
- " mov r2, #0x1\n"
- " mov r3, #0x8\n"
- " bl InitMenu\n"
- " strb r0, [r4]\n"
- " add sp, sp, #0x8\n"
- " pop {r4}\n"
- " pop {r0}\n"
- " bx r0\n"
- "._134:\n"
- " .align 2, 0\n"
- "._133:\n"
- " .word gDebug0x839B9BC\n"
- " .word gUnknown_030006C4 \n"
- " .word gUnknown_030006C0 \n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_80771EC()
-{
- asm(
- " push {r4, lr}\n"
- " ldr r0, ._135 @ gStringVar4\n"
- " ldr r1, ._135 + 4 @ Str_839BE04\n"
- " bl StringCopy\n"
- " ldr r4, ._135 + 8 @ gSaveBlock1\n"
- " mov r1, #0x4\n"
- " ldsb r1, [r4, r1]\n"
- " mov r2, #0x1\n"
- " mov r3, #0x3\n"
- " bl ConvertIntToDecimalStringN\n"
- " mov r1, #0x5\n"
- " ldsb r1, [r4, r1]\n"
- " mov r2, #0x1\n"
- " mov r3, #0x3\n"
- " bl ConvertIntToDecimalStringN\n"
- " mov r0, #0x13\n"
- " mov r1, #0xc\n"
- " mov r2, #0x1d\n"
- " mov r3, #0xf\n"
- " bl Menu_DrawStdWindowFrame\n"
- " ldr r0, ._135 @ gStringVar4\n"
- " mov r1, #0x14\n"
- " mov r2, #0xd\n"
- " bl Menu_PrintText\n"
- " pop {r4}\n"
- " pop {r0}\n"
- " bx r0\n"
- "._136:\n"
- " .align 2, 0\n"
- "._135:\n"
- " .word gStringVar4\n"
- " .word Str_839BE04\n"
- " .word gSaveBlock1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8077238()
-{
- asm(
- " push {r4, r5, r6, r7, lr}\n"
- " mov r7, sl\n"
- " mov r6, r9\n"
- " mov r5, r8\n"
- " push {r5, r6, r7}\n"
- " add sp, sp, #0xffffffe8\n"
- " ldr r1, ._139 @ Str_839BE07\n"
- " mov r0, sp\n"
- " mov r2, #0x2\n"
- " bl memcpy\n"
- " add r0, sp, #0x4\n"
- " mov r9, r0\n"
- " ldr r1, ._139 + 4 @ Str_839BE09\n"
- " mov r2, #0x3\n"
- " bl memcpy\n"
- " add r1, sp, #0x8\n"
- " mov sl, r1\n"
- " ldr r1, ._139 + 8 @ Str_839BE0C\n"
- " mov r0, sl\n"
- " mov r2, #0x3\n"
- " bl memcpy\n"
- " mov r2, #0x0\n"
- " str r2, [sp, #0x14]\n"
- " add r4, sp, #0x10\n"
- " mov r6, sp\n"
- " add r6, r6, #0x12\n"
- " add r0, r4, #0\n"
- " add r1, r6, #0\n"
- " bl PlayerGetDestCoords\n"
- " mov r1, #0x0\n"
- " ldsh r0, [r4, r1]\n"
- " mov r2, #0x0\n"
- " ldsh r1, [r6, r2]\n"
- " bl MapGridGetZCoordAt\n"
- " mov r8, r0\n"
- " mov r0, r8\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x18\n"
- " mov r8, r0\n"
- " ldrh r0, [r4]\n"
- " sub r0, r0, #0x7\n"
- " strh r0, [r4]\n"
- " ldrh r0, [r6]\n"
- " sub r0, r0, #0x7\n"
- " strh r0, [r6]\n"
- " ldr r7, ._139 + 12 @ gStringVar4\n"
- " add r0, r7, #0\n"
- " mov r1, sp\n"
- " bl StringCopy\n"
- " add r5, sp, #0xc\n"
- " mov r2, #0x0\n"
- " ldsh r1, [r4, r2]\n"
- " add r0, r5, #0\n"
- " mov r2, #0x0\n"
- " mov r3, #0x3\n"
- " bl ConvertIntToDecimalStringN\n"
- " add r0, r7, #0\n"
- " add r1, r5, #0\n"
- " bl StringAppend\n"
- " add r0, r7, #0\n"
- " mov r1, r9\n"
- " bl StringAppend\n"
- " mov r0, #0x0\n"
- " ldsh r1, [r6, r0]\n"
- " add r0, r5, #0\n"
- " mov r2, #0x0\n"
- " mov r3, #0x3\n"
- " bl ConvertIntToDecimalStringN\n"
- " add r0, r7, #0\n"
- " add r1, r5, #0\n"
- " bl StringAppend\n"
- " add r0, r7, #0\n"
- " mov r1, sl\n"
- " bl StringAppend\n"
- " add r0, r5, #0\n"
- " mov r1, r8\n"
- " mov r2, #0x0\n"
- " mov r3, #0x2\n"
- " bl ConvertIntToDecimalStringN\n"
- " add r0, r7, #0\n"
- " add r1, r5, #0\n"
- " bl StringAppend\n"
- " ldrb r0, [r7]\n"
- " cmp r0, #0xff\n"
- " beq ._137 @cond_branch\n"
- " add r1, r7, #0\n"
- "._138:\n"
- " ldr r0, [sp, #0x14]\n"
- " add r0, r0, #0x1\n"
- " lsl r0, r0, #0x10\n"
- " lsr r0, r0, #0x10\n"
- " str r0, [sp, #0x14]\n"
- " add r0, r0, r1\n"
- " ldrb r0, [r0]\n"
- " cmp r0, #0xff\n"
- " bne ._138 @cond_branch\n"
- "._137:\n"
- " mov r0, #0x1c\n"
- " ldr r1, [sp, #0x14]\n"
- " sub r0, r0, r1\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x18\n"
- " mov r1, #0x10\n"
- " mov r2, #0x1d\n"
- " mov r3, #0x13\n"
- " bl Menu_DrawStdWindowFrame\n"
- " ldr r0, ._139 + 12 @ gStringVar4\n"
- " mov r1, #0x1d\n"
- " ldr r2, [sp, #0x14]\n"
- " sub r1, r1, r2\n"
- " lsl r1, r1, #0x18\n"
- " lsr r1, r1, #0x18\n"
- " mov r2, #0x11\n"
- " bl Menu_PrintText\n"
- " add sp, sp, #0x18\n"
- " pop {r3, r4, r5}\n"
- " mov r8, r3\n"
- " mov r9, r4\n"
- " mov sl, r5\n"
- " pop {r4, r5, r6, r7}\n"
- " pop {r0}\n"
- " bx r0\n"
- "._140:\n"
- " .align 2, 0\n"
- "._139:\n"
- " .word Str_839BE07\n"
- " .word Str_839BE09\n"
- " .word Str_839BE0C\n"
- " .word gStringVar4\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-u8 DebugMenu_Exit()
-{
- asm(
- " push {lr}\n"
- " bl CloseMenu\n"
- " mov r0, #0x1\n"
- " pop {r1}\n"
- " bx r1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-u8 DebugMenu_OpenSogabe()
-{
- asm(
- " push {lr}\n"
- " bl unref_sub_814A414\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x18\n"
- " pop {r1}\n"
- " bx r1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-u8 DebugMenu_OpenTamada()
-{
- asm(
- " push {lr}\n"
- " bl debug_sub_8075C30\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x18\n"
- " pop {r1}\n"
- " bx r1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-u8 DebugMenu_OpenKagaya()
-{
- asm(
- " push {lr}\n"
- " bl InitKagayaDebugMenu_A\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x18\n"
- " pop {r1}\n"
- " bx r1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-u8 DebugMenu_OpenMatsuda()
-{
- asm(
- " push {lr}\n"
- " bl unref_sub_80A9B28\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x18\n"
- " pop {r1}\n"
- " bx r1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-u8 DebugMenu_OpenNohara()
-{
- asm(
- " push {lr}\n"
- " bl InitNoharaDebugMenu\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x18\n"
- " pop {r1}\n"
- " bx r1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-u8 DebugMenu_OpenWatanabe()
-{
- asm(
- " push {lr}\n"
- " bl CloseMenu\n"
- " ldr r0, ._141 @ InitWatanabeDebugMenu\n"
- " bl SetMainCallback2\n"
- " bl ScriptContext2_Enable\n"
- " mov r0, #0x1\n"
- " pop {r1}\n"
- " bx r1\n"
- "._142:\n"
- " .align 2, 0\n"
- "._141:\n"
- " .word InitWatanabeDebugMenu+1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-u8 DebugMenu_EndSequenceDemo()
-{
- asm(
- " push {lr}\n"
- " bl CloseMenu\n"
- " ldr r0, ._143 @ sub_81439D0\n"
- " bl SetMainCallback2\n"
- " bl ScriptContext2_Enable\n"
- " mov r0, #0x1\n"
- " pop {r1}\n"
- " bx r1\n"
- "._144:\n"
- " .align 2, 0\n"
- "._143:\n"
- " .word sub_81439D0+1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-u8 DebugMenu_HallOfFame()
-{
- asm(
- " push {lr}\n"
- " bl CloseMenu\n"
- " bl GameClear\n"
- " bl ScriptContext2_Enable\n"
- " mov r0, #0x1\n"
- " pop {r1}\n"
- " bx r1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-u8 DebugMenu_OpenSizeComparison()
-{
- asm(
- " push {lr}\n"
- " bl CloseMenu\n"
- " bl InitSizeComparison\n"
- " bl ScriptContext2_Enable\n"
- " mov r0, #0x1\n"
- " pop {r1}\n"
- " bx r1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-u8 DebugMenu_HoennNationalDex()
-{
- asm(
- " push {lr}\n"
- " bl IsNationalPokedexEnabled\n"
- " cmp r0, #0\n"
- " beq ._145 @cond_branch\n"
- " bl DisableNationalPokedex\n"
- " b ._146\n"
- "._145:\n"
- " bl EnableNationalPokedex\n"
- "._146:\n"
- " bl CloseMenu\n"
- " mov r0, #0x1\n"
- " pop {r1}\n"
- " bx r1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-u8 DebugMenu_8077434()
-{
- asm(
- " push {lr}\n"
- " add sp, sp, #0xfffffff8\n"
- " bl Menu_GetCursorPos\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x18\n"
- " cmp r0, #0x4\n"
- " bhi ._165 @cond_branch\n"
- " lsl r0, r0, #0x2\n"
- " ldr r1, ._149 @ \n"
- " add r0, r0, r1\n"
- " ldr r0, [r0]\n"
- " mov pc, r0\n"
- "._150:\n"
- " .align 2, 0\n"
- "._149:\n"
- " .word ._148\n"
- "._148:\n"
- " .word ._151\n"
- " .word ._152\n"
- " .word ._153\n"
- " .word ._154\n"
- " .word ._155\n"
- "._151:\n"
- " ldr r0, ._157 @ Str_839BE0F\n"
- " mov r1, #0x1\n"
- " mov r2, #0x4\n"
- " bl debug_sub_80C2C18\n"
- " mov r0, #0xff\n"
- " str r0, [sp]\n"
- " str r0, [sp, #0x4]\n"
- " mov r1, #0xff\n"
- " mov r2, #0xff\n"
- " mov r3, #0x0\n"
- " bl debug_sub_80C2D24\n"
- " b ._165\n"
- "._158:\n"
- " .align 2, 0\n"
- "._157:\n"
- " .word Str_839BE0F\n"
- "._152:\n"
- " ldr r0, ._160 @ Str_839BE12\n"
- " mov r1, #0x2\n"
- " mov r2, #0x0\n"
- " bl debug_sub_80C2C18\n"
- " mov r0, #0xff\n"
- " str r0, [sp]\n"
- " str r0, [sp, #0x4]\n"
- " mov r1, #0xff\n"
- " mov r2, #0x0\n"
- " b ._159\n"
- "._161:\n"
- " .align 2, 0\n"
- "._160:\n"
- " .word Str_839BE12\n"
- "._153:\n"
- " ldr r0, ._163 @ Str_839BE16\n"
- " mov r1, #0x3\n"
- " mov r2, #0x0\n"
- " bl debug_sub_80C2C18\n"
- " mov r0, #0xff\n"
- " str r0, [sp]\n"
- " str r0, [sp, #0x4]\n"
- " mov r1, #0x0\n"
- " b ._162\n"
- "._164:\n"
- " .align 2, 0\n"
- "._163:\n"
- " .word Str_839BE16\n"
- "._154:\n"
- " ldr r0, ._166 @ Str_839BE1A\n"
- " mov r1, #0x4\n"
- " mov r2, #0x0\n"
- " bl debug_sub_80C2C18\n"
- " mov r0, #0xff\n"
- " str r0, [sp]\n"
- " str r0, [sp, #0x4]\n"
- " mov r0, #0x0\n"
- " mov r1, #0xff\n"
- "._162:\n"
- " mov r2, #0xff\n"
- "._159:\n"
- " mov r3, #0xff\n"
- " bl debug_sub_80C2D24\n"
- " b ._165\n"
- "._167:\n"
- " .align 2, 0\n"
- "._166:\n"
- " .word Str_839BE1A\n"
- "._155:\n"
- " ldr r0, ._168 @ Str_839BE1E\n"
- " mov r1, #0x4\n"
- " mov r2, #0x0\n"
- " bl debug_sub_80C2C18\n"
- " mov r0, #0xff\n"
- " str r0, [sp]\n"
- " str r0, [sp, #0x4]\n"
- " mov r1, #0xff\n"
- " mov r2, #0xff\n"
- " mov r3, #0xff\n"
- " bl debug_sub_80C2D24\n"
- "._165:\n"
- " bl CloseMenu\n"
- " mov r0, #0x1\n"
- " add sp, sp, #0x8\n"
- " pop {r1}\n"
- " bx r1\n"
- "._169:\n"
- " .align 2, 0\n"
- "._168:\n"
- " .word Str_839BE1E\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-u8 DebugMenu_807750C()
-{
- asm(
- " push {lr}\n"
- " ldr r0, ._170 @ gUnknown_Debug_839BE24\n"
- " bl DebugMenu_8077D78\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x18\n"
- " pop {r1}\n"
- " bx r1\n"
- "._171:\n"
- " .align 2, 0\n"
- "._170:\n"
- " .word gUnknown_Debug_839BE24\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-u8 DebugMenu_SetRamBerry()
-{
- asm(
- " push {lr}\n"
- " ldr r0, ._172 @ gUnknown_Debug_839BE24\n"
- " mov r1, #0xc\n"
- " mov r2, #0x5\n"
- " bl DebugMenu_8077D24\n"
- " ldr r1, ._172 + 4 @ gMenuCallback\n"
- " ldr r0, ._172 + 8 @ DebugMenu_807750C\n"
- " str r0, [r1]\n"
- " mov r0, #0x0\n"
- " pop {r1}\n"
- " bx r1\n"
- "._173:\n"
- " .align 2, 0\n"
- "._172:\n"
- " .word gUnknown_Debug_839BE24\n"
- " .word gMenuCallback\n"
- " .word DebugMenu_807750C+1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-u8 DebugMenu_ToggleBGM()
-{
- asm(
- " push {lr}\n"
- " ldr r2, ._175 @ gDisableMusic\n"
- " mov r1, #0x0\n"
- " ldrb r0, [r2]\n"
- " cmp r0, #0\n"
- " bne ._174 @cond_branch\n"
- " mov r1, #0x1\n"
- "._174:\n"
- " strb r1, [r2]\n"
- " bl CloseMenu\n"
- " mov r0, #0x1\n"
- " pop {r1}\n"
- " bx r1\n"
- "._176:\n"
- " .align 2, 0\n"
- "._175:\n"
- " .word gDisableMusic\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-u8 DebugMenu_BattleForDebug()
-{
- asm(
- " push {lr}\n"
- " bl CloseMenu\n"
- " bl InitBattleForDebug\n"
- " bl ScriptContext2_Enable\n"
- " mov r0, #0x1\n"
- " pop {r1}\n"
- " bx r1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-u8 DebugMenu_NationalDex()
-{
- asm(
- " push {r4, r5, lr}\n"
- " mov r4, #0x0\n"
- " ldr r5, ._178 @ 0x181\n"
- "._177:\n"
- " add r4, r4, #0x1\n"
- " lsl r4, r4, #0x10\n"
- " lsr r4, r4, #0x10\n"
- " add r0, r4, #0\n"
- " mov r1, #0x2\n"
- " bl GetSetPokedexFlag\n"
- " add r0, r4, #0\n"
- " mov r1, #0x3\n"
- " bl GetSetPokedexFlag\n"
- " cmp r4, r5\n"
- " bls ._177 @cond_branch\n"
- " ldr r1, ._178 + 4 @ gUnknown_03005CE8\n"
- " mov r0, #0x1\n"
- " strb r0, [r1]\n"
- " bl CloseMenu\n"
- " mov r0, #0x1\n"
- " pop {r4, r5}\n"
- " pop {r1}\n"
- " bx r1\n"
- "._179:\n"
- " .align 2, 0\n"
- "._178:\n"
- " .word 0x181\n"
- " .word gUnknown_03005CE8\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-u8 DebugMenu_HoennDex()
-{
- asm(
- " push {r4, r5, lr}\n"
- " mov r5, #0x0\n"
- "._180:\n"
- " add r5, r5, #0x1\n"
- " lsl r5, r5, #0x10\n"
- " lsr r5, r5, #0x10\n"
- " add r0, r5, #0\n"
- " bl HoennToNationalOrder\n"
- " add r4, r0, #0\n"
- " lsl r4, r4, #0x10\n"
- " lsr r4, r4, #0x10\n"
- " add r0, r4, #0\n"
- " mov r1, #0x2\n"
- " bl GetSetPokedexFlag\n"
- " add r0, r4, #0\n"
- " mov r1, #0x3\n"
- " bl GetSetPokedexFlag\n"
- " cmp r5, #0xc9\n"
- " bls ._180 @cond_branch\n"
- " ldr r1, ._181 @ gUnknown_03005CE8\n"
- " mov r0, #0x1\n"
- " strb r0, [r1]\n"
- " bl CloseMenu\n"
- " mov r0, #0x1\n"
- " pop {r4, r5}\n"
- " pop {r1}\n"
- " bx r1\n"
- "._182:\n"
- " .align 2, 0\n"
- "._181:\n"
- " .word gUnknown_03005CE8\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-u8 DebugMenu_CreatePKMN()
-{
- asm(
- " push {lr}\n"
- " bl CloseMenu\n"
- " bl InitCreatePokemon\n"
- " bl ScriptContext2_Enable\n"
- " mov r0, #0x1\n"
- " pop {r1}\n"
- " bx r1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-u8 DebugMenu_ViewPokemonGraphics()
-{
- asm(
- " push {lr}\n"
- " bl CloseMenu\n"
- " bl InitSeePokemonGraphics\n"
- " bl ScriptContext2_Enable\n"
- " mov r0, #0x1\n"
- " pop {r1}\n"
- " bx r1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-u8 DebugMenu_OpenSeeTrainers()
-{
- asm(
- " push {lr}\n"
- " bl CloseMenu\n"
- " bl InitSeeTrainers\n"
- " bl ScriptContext2_Enable\n"
- " mov r0, #0x1\n"
- " pop {r1}\n"
- " bx r1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-u8 DebugMenu_OpenMori()
-{
- asm(
- " push {lr}\n"
- " bl InitMoriDebugMenu\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x18\n"
- " pop {r1}\n"
- " bx r1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-u8 DebugMenu_OpenTomomichi()
-{
- asm(
- " push {lr}\n"
- " bl InitTomomichiDebugWindow\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x18\n"
- " pop {r1}\n"
- " bx r1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-u8 DebugMenu_OpenAoki()
-{
- asm(
- " push {lr}\n"
- " bl CloseMenu\n"
- " mov r0, #0x1\n"
- " pop {r1}\n"
- " bx r1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-u8 DebugMenu_OpenTaya()
-{
- asm(
- " push {lr}\n"
- " bl InitTayaDebugWindow\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x18\n"
- " pop {r1}\n"
- " bx r1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-u8 DebugMenu_OpenNakamura()
-{
- asm(
- " push {lr}\n"
- " bl InitNakamuraDebugMenu\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x18\n"
- " pop {r1}\n"
- " bx r1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-u8 DebugMenu_OpenIwasawa()
-{
- asm(
- " push {lr}\n"
- " bl debug_sub_8138CC4\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x18\n"
- " pop {r1}\n"
- " bx r1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-u8 DebugMenu_Teleport()
-{
- asm(
- " push {lr}\n"
- " bl Overworld_SetWarpDestToLastHealLoc\n"
- " bl sub_8080E88\n"
- " bl ScriptContext2_Enable\n"
- " bl CloseMenu\n"
- " mov r0, #0x1\n"
- " pop {r1}\n"
- " bx r1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-u8 DebugMenu_EditPKMN()
-{
- asm(
- " push {lr}\n"
- " bl Menu_EraseScreen\n"
- " bl debug_sub_815FFDC\n"
- " mov r0, #0x0\n"
- " pop {r1}\n"
- " bx r1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_80776B4()
-{
- asm(
- " push {r4, r5, lr}\n"
- " add sp, sp, #0xfffffff8\n"
- " add r4, r0, #0\n"
- " lsl r4, r4, #0x18\n"
- " lsr r4, r4, #0x18\n"
- " ldr r1, ._183 @ Str_839BE4C\n"
- " mov r0, sp\n"
- " mov r2, #0x7\n"
- " bl memcpy\n"
- " lsl r3, r4, #0x1\n"
- " lsl r5, r4, #0x19\n"
- " lsr r5, r5, #0x18\n"
- " add r3, r3, #0x1\n"
- " lsl r3, r3, #0x18\n"
- " lsr r3, r3, #0x18\n"
- " mov r0, #0x19\n"
- " add r1, r5, #0\n"
- " mov r2, #0x1d\n"
- " bl Menu_BlankWindowRect\n"
- " ldr r0, ._183 + 4 @ gUnknown_030006C8\n"
- " ldrb r0, [r0]\n"
- " ASR r0, r4\n"
- " mov r1, #0x1\n"
- " and r0, r0, r1\n"
- " lsl r0, r0, #0x2\n"
- " add r0, r0, sp\n"
- " mov r1, #0x19\n"
- " add r2, r5, #0\n"
- " bl Menu_PrintText\n"
- " add sp, sp, #0x8\n"
- " pop {r4, r5}\n"
- " pop {r0}\n"
- " bx r0\n"
- "._184:\n"
- " .align 2, 0\n"
- "._183:\n"
- " .word Str_839BE4C\n"
- " .word gUnknown_030006C8 \n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8077704()
-{
- asm(
- " push {lr}\n"
- " add sp, sp, #0xffffffec\n"
- " ldr r1, ._185 @ Str_839BE53\n"
- " mov r0, sp\n"
- " mov r2, #0x11\n"
- " bl memcpy\n"
- " mov r0, #0x13\n"
- " mov r1, #0x0\n"
- " mov r2, #0x1d\n"
- " mov r3, #0x8\n"
- " bl Menu_BlankWindowRect\n"
- " mov r0, sp\n"
- " mov r1, #0x15\n"
- " mov r2, #0x0\n"
- " bl Menu_PrintText\n"
- " ldr r2, ._185 + 4 @ gUnknown_030006C8\n"
- " mov r0, #0x80\n"
- " lsl r0, r0, #0x13\n"
- " ldrh r0, [r0]\n"
- " lsr r0, r0, #0x8\n"
- " mov r1, #0xf\n"
- " and r0, r0, r1\n"
- " strb r0, [r2]\n"
- " mov r0, #0x0\n"
- " bl DebugMenu_80776B4\n"
- " mov r0, #0x1\n"
- " bl DebugMenu_80776B4\n"
- " mov r0, #0x2\n"
- " bl DebugMenu_80776B4\n"
- " mov r0, #0x3\n"
- " bl DebugMenu_80776B4\n"
- " add sp, sp, #0x14\n"
- " pop {r0}\n"
- " bx r0\n"
- "._186:\n"
- " .align 2, 0\n"
- "._185:\n"
- " .word Str_839BE53\n"
- " .word gUnknown_030006C8 \n"
- "\n"
- );
-}
-
-__attribute__((naked))
-u8 DebugMenu_8077760()
-{
- asm(
- " push {r4, r5, lr}\n"
- " ldr r2, ._190 @ gMain\n"
- " ldrh r1, [r2, #0x2e]\n"
- " mov r0, #0x40\n"
- " and r0, r0, r1\n"
- " add r5, r2, #0\n"
- " cmp r0, #0\n"
- " beq ._187 @cond_branch\n"
- " mov r0, #0x5\n"
- " bl PlaySE\n"
- " mov r0, #0x1\n"
- " neg r0, r0\n"
- " bl Menu_MoveCursor\n"
- " ldr r1, ._190 + 4 @ gUnknown_030006B8\n"
- " ldrb r0, [r1]\n"
- " cmp r0, #0\n"
- " beq ._188 @cond_branch\n"
- " sub r0, r0, #0x1\n"
- " b ._189\n"
- "._191:\n"
- " .align 2, 0\n"
- "._190:\n"
- " .word gMain\n"
- " .word gUnknown_030006B8 \n"
- "._188:\n"
- " mov r0, #0x3\n"
- "._189:\n"
- " strb r0, [r1]\n"
- "._187:\n"
- " ldrh r1, [r5, #0x2e]\n"
- " mov r0, #0x80\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq ._192 @cond_branch\n"
- " mov r0, #0x5\n"
- " bl PlaySE\n"
- " mov r0, #0x1\n"
- " bl Menu_MoveCursor\n"
- " ldr r1, ._195 @ gUnknown_030006B8\n"
- " ldrb r0, [r1]\n"
- " cmp r0, #0x3\n"
- " beq ._193 @cond_branch\n"
- " add r0, r0, #0x1\n"
- " b ._194\n"
- "._196:\n"
- " .align 2, 0\n"
- "._195:\n"
- " .word gUnknown_030006B8 \n"
- "._193:\n"
- " mov r0, #0x0\n"
- "._194:\n"
- " strb r0, [r1]\n"
- "._192:\n"
- " ldrh r1, [r5, #0x2e]\n"
- " mov r0, #0x30\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq ._197 @cond_branch\n"
- " mov r0, #0x5\n"
- " bl PlaySE\n"
- " ldr r4, ._201 @ gUnknown_030006C8\n"
- " bl Menu_GetCursorPos\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x18\n"
- " mov r1, #0x1\n"
- " LSL r1, r0\n"
- " ldrb r0, [r4]\n"
- " eor r1, r1, r0\n"
- " strb r1, [r4]\n"
- " bl Menu_GetCursorPos\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x18\n"
- " bl DebugMenu_80776B4\n"
- "._197:\n"
- " ldrh r2, [r5, #0x2e]\n"
- " mov r0, #0x1\n"
- " and r0, r0, r2\n"
- " cmp r0, #0\n"
- " bne ._198 @cond_branch\n"
- " mov r0, #0x2\n"
- " and r0, r0, r2\n"
- " cmp r0, #0\n"
- " beq ._199 @cond_branch\n"
- "._198:\n"
- " mov r2, #0x80\n"
- " lsl r2, r2, #0x13\n"
- " ldrh r0, [r2]\n"
- " ldr r1, ._201 + 4 @ 0xf0ff\n"
- " and r1, r1, r0\n"
- " ldr r0, ._201 @ gUnknown_030006C8\n"
- " ldrb r0, [r0]\n"
- " lsl r0, r0, #0x8\n"
- " add r1, r1, r0\n"
- " strh r1, [r2]\n"
- " bl CloseMenu\n"
- " mov r0, #0x1\n"
- " b ._200\n"
- "._202:\n"
- " .align 2, 0\n"
- "._201:\n"
- " .word gUnknown_030006C8 \n"
- " .word 0xf0ff\n"
- "._199:\n"
- " mov r0, #0x0\n"
- "._200:\n"
- " pop {r4, r5}\n"
- " pop {r1}\n"
- " bx r1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-u8 DebugMenu_SwitchBG()
-{
- asm(
- " push {lr}\n"
- " add sp, sp, #0xfffffff8\n"
- " bl Menu_EraseScreen\n"
- " bl DebugMenu_8077704\n"
- " mov r0, #0x0\n"
- " str r0, [sp]\n"
- " mov r0, #0x6\n"
- " str r0, [sp, #0x4]\n"
- " mov r0, #0x0\n"
- " mov r1, #0x14\n"
- " mov r2, #0x0\n"
- " mov r3, #0x4\n"
- " bl InitMenu\n"
- " ldr r1, ._203 @ gMenuCallback\n"
- " ldr r0, ._203 + 4 @ DebugMenu_8077760\n"
- " str r0, [r1]\n"
- " mov r0, #0x0\n"
- " add sp, sp, #0x8\n"
- " pop {r1}\n"
- " bx r1\n"
- "._204:\n"
- " .align 2, 0\n"
- "._203:\n"
- " .word gMenuCallback\n"
- " .word DebugMenu_8077760+1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_807786C()
-{
- asm(
- " push {r4, lr}\n"
- " add sp, sp, #0xfffffff8\n"
- " add r4, r0, #0\n"
- " lsl r4, r4, #0x18\n"
- " lsr r4, r4, #0x18\n"
- " ldr r1, ._205 @ Str_839BE64\n"
- " mov r0, sp\n"
- " mov r2, #0x7\n"
- " bl memcpy\n"
- " mov r0, #0x19\n"
- " mov r1, #0x0\n"
- " mov r2, #0x1d\n"
- " mov r3, #0x3\n"
- " bl Menu_DrawStdWindowFrame\n"
- " lsl r0, r4, #0x1\n"
- " add r0, r0, r4\n"
- " add r0, r0, sp\n"
- " mov r1, #0x1a\n"
- " mov r2, #0x1\n"
- " bl Menu_PrintText\n"
- " add sp, sp, #0x8\n"
- " pop {r4}\n"
- " pop {r0}\n"
- " bx r0\n"
- "._206:\n"
- " .align 2, 0\n"
- "._205:\n"
- " .word Str_839BE64\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_80778A8()
-{
- asm(
- " push {r4, lr}\n"
- " ldr r4, ._211 @ gMain\n"
- " ldrh r1, [r4, #0x2e]\n"
- " mov r0, #0x30\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq ._207 @cond_branch\n"
- " mov r0, #0x5\n"
- " bl PlaySE\n"
- " ldr r2, ._211 + 4 @ sWildEncountersDisabled\n"
- " ldrb r0, [r2]\n"
- " mov r1, #0x1\n"
- " eor r0, r0, r1\n"
- " strb r0, [r2]\n"
- " ldrb r0, [r2]\n"
- " bl DebugMenu_807786C\n"
- "._207:\n"
- " ldrh r1, [r4, #0x2e]\n"
- " mov r0, #0x1\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " bne ._208 @cond_branch\n"
- " mov r0, #0x2\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq ._209 @cond_branch\n"
- "._208:\n"
- " bl CloseMenu\n"
- " mov r0, #0x1\n"
- " b ._210\n"
- "._212:\n"
- " .align 2, 0\n"
- "._211:\n"
- " .word gMain\n"
- " .word sWildEncountersDisabled\n"
- "._209:\n"
- " mov r0, #0x0\n"
- "._210:\n"
- " pop {r4}\n"
- " pop {r1}\n"
- " bx r1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-u8 DebugMenu_ControlEncounter()
-{
- asm(
- " push {lr}\n"
- " bl Menu_EraseScreen\n"
- " ldr r0, ._213 @ sWildEncountersDisabled\n"
- " ldrb r0, [r0]\n"
- " bl DebugMenu_807786C\n"
- " ldr r1, ._213 + 4 @ gMenuCallback\n"
- " ldr r0, ._213 + 8 @ DebugMenu_80778A8\n"
- " str r0, [r1]\n"
- " mov r0, #0x0\n"
- " pop {r1}\n"
- " bx r1\n"
- "._214:\n"
- " .align 2, 0\n"
- "._213:\n"
- " .word sWildEncountersDisabled\n"
- " .word gMenuCallback\n"
- " .word DebugMenu_80778A8+1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
+u8 DebugMenu_8076E18(void)
+{
+ debug_sub_8076B4C();
+ CreateTask(DebugMenu_8076D6C, 10);
+ return 0;
+}
+
+void DebugMenu_8076E30(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ switch (data[0])
+ {
+ case 0:
+ Menu_DisplayDialogueFrame();
+ Menu_PrintText(Str_839BD5A, 2, 15);
+ data[0]++;
+ break;
+ case 1:
+ if (gMain.newKeys & A_BUTTON)
+ {
+ Menu_DisplayDialogueFrame();
+ sub_813B79C();
+ Menu_PrintText(Str_839BD7D, 2, 15);
+ PlaySE(SE_PINPON);
+ data[0]++;
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ DestroyTask(taskId);
+ DoSoftReset(); // noreturn
+ }
+ break;
+ case 2:
+ if (gMain.newKeys & A_BUTTON)
+ {
+ DestroyTask(taskId);
+ DoSoftReset(); // noreturn
+ }
+ break;
+ }
+}
+
+u8 DebugMenu_8076EDC(void)
+{
+ debug_sub_8076B4C();
+ CreateTask(DebugMenu_8076E30, 10);
+ return 0;
+}
+
+const u8 Str_839BD90[] = _("ジュンイチ");
+const u8 Str_839BD96[] = _("ダイゴロウ");
+const u8 Str_839BD9C[] = _("テツジ");
+const u8 Str_839BDA0[] = _("バレンシア");
+const u8 Str_839BDA6[] = _("ハルコマチ");
+const u8 Str_839BDAC[] = _("RAYMOND");
+const u8 Str_839BDB4[] = _("TIFFANY");
+const u8 Str_839BDBC[] = _("くまxちえ");
+
+const struct {
+ const u8 * text;
+ u32 flags;
+} gUnknown_Debug_839BDC4[] = {
+ {Str_839BD90, 0x0},
+ {Str_839BD96, 0x0},
+ {Str_839BDA0, 0x1},
+ {Str_839BDA6, 0x1},
+ {Str_839BDAC, 0x80},
+ {Str_839BDB4, 0x81},
+ {Str_839BD9C, 0x0},
+ {Str_839BDBC, 0x1}
+};
+
+void DebugMenu_8076EF4(void)
+{
+ u8 i;
+
+ Menu_DrawStdWindowFrame(0, 0, 11, 17);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_839BDC4), gUnknown_Debug_839BDC4);
+ for (i = 0; i < ARRAY_COUNT(gUnknown_Debug_839BDC4); i++)
+ {
+ sub_8071F60((gUnknown_Debug_839BDC4[i].flags & 1) == MALE ? CHAR_MALE : CHAR_FEMALE, 10, 2 * i + 1);
+ }
+ InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_839BDC4), 0, 9);
+}
+
+void DebugMenu_8076F60(u8 taskId)
+{
+ s8 input = Menu_ProcessInput();
+ s8 cursorPos = Menu_GetCursorPos();
+
+ switch (input)
+ {
+ case -2:
+ break;
+ case -1:
+ Menu_EraseScreen();
+ debug_sub_8076B68();
+ DestroyTask(taskId);
+ break;
+ default:
+ {
+ u8 flags = gUnknown_Debug_839BDC4[cursorPos].flags;
+ gSaveBlock2.playerGender = flags & 1;
+ StringCopy(gSaveBlock2.playerName, gUnknown_Debug_839BDC4[cursorPos].text);
+ if ((flags & 0x80) == 0)
+ debug_sub_8057508(FALSE);
+ else
+ debug_sub_8057508(TRUE);
+ DestroyTask(taskId);
+ SetMainCallback2(debug_sub_8058C00);
+ break;
+ }
+ }
+}
+
+void DebugMenu_8076FEC(void)
+{
+ DebugMenu_8076EF4();
+ CreateTask(DebugMenu_8076F60, 10);
+}
+
+void DebugMenu_8077004(void)
+{
+ gUnknown_030006C4 = gUnknown_Debug_839BB64 + gUnknown_030006C1 * 8;
+}
+
+void DebugMenu_8077020(u8 taskId)
+{
+ if (gMenuCallback() == TRUE)
+ DestroyTask(taskId);
+}
+
+void DebugMenu_8077048(void)
+{
+ gMenuCallback = DebugMenu_807706C;
+ ScriptContext2_Enable();
+ CreateTask(DebugMenu_8077020, 80);
+}
+
+u8 DebugMenu_807706C(void)
+{
+ InitMenuWindow(&gMenuTextWindowTemplate);
+ DebugMenu_8077004();
+ DebugMenu_807719C();
+ DebugMenu_80771EC();
+ DebugMenu_8077238();
+ gMenuCallback = DebugMenu_807709C;
+ return FALSE;
+}
+
+u8 DebugMenu_807709C(void)
+{
+ if (gMain.newKeys & DPAD_UP)
+ {
+ PlaySE(SE_SELECT);
+ gUnknown_030006C0 = Menu_MoveCursor(-1);
+ }
+ if (gMain.newKeys & DPAD_DOWN)
+ {
+ PlaySE(SE_SELECT);
+ gUnknown_030006C0 = Menu_MoveCursor(+1);
+ }
+ if (gMain.newKeys & DPAD_LEFT)
+ {
+ PlaySE(SE_SELECT);
+ if (gUnknown_030006C1 == 0)
+ gUnknown_030006C1 = 7;
+ else
+ gUnknown_030006C1--;
+ DebugMenu_8077004();
+ DebugMenu_807719C();
+ }
+ if (gMain.newKeys & DPAD_RIGHT)
+ {
+ PlaySE(SE_SELECT);
+ if (gUnknown_030006C1 == 7)
+ gUnknown_030006C1 = 0;
+ else
+ gUnknown_030006C1++;
+ DebugMenu_8077004();
+ DebugMenu_807719C();
+ }
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ return gDebug0x839B9BC[gUnknown_030006C4[gUnknown_030006C0]].func();
+ }
+ if (gMain.newKeys & (B_BUTTON | START_BUTTON))
+ {
+ CloseMenu();
+ return TRUE;
+ }
+ return FALSE;
+}
+
+void DebugMenu_807719C(void)
+{
+ Menu_DrawStdWindowFrame(0, 0, 14, 17);
+ Menu_PrintItemsReordered(1, 1, 8, gDebug0x839B9BC, gUnknown_030006C4);
+ gUnknown_030006C0 = InitMenu(0, 1, 1, 8, gUnknown_030006C0, 13);
+}
+
+const u8 Str_839BE04[] = _("ID");
+
+void DebugMenu_80771EC(void)
+{
+ u8 * buf = gStringVar4;
+ buf = StringCopy(buf, Str_839BE04);
+ buf = ConvertIntToDecimalStringN(buf, gSaveBlock1.location.mapGroup, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ buf = ConvertIntToDecimalStringN(buf, gSaveBlock1.location.mapNum, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ Menu_DrawStdWindowFrame(19, 12, 29, 15);
+ Menu_PrintText(gStringVar4, 20, 13);
+}
+
+void DebugMenu_8077238(void)
+{
+ u8 sp00[] = _("X");
+ u8 sp04[] = _(" Y");
+ u8 sp08[] = _(" H");
+ u8 sp0c[4];
+
+ s16 x;
+ s16 y;
+ u8 z;
+ u16 sp14 = 0;
+
+ PlayerGetDestCoords(&x, &y);
+ z = MapGridGetZCoordAt(x, y);
+ x -= 7;
+ y -= 7;
+
+ StringCopy(gStringVar4, sp00);
+ ConvertIntToDecimalStringN(sp0c, x, STR_CONV_MODE_LEFT_ALIGN, 3);
+ StringAppend(gStringVar4, sp0c);
+ StringAppend(gStringVar4, sp04);
+ ConvertIntToDecimalStringN(sp0c, y, STR_CONV_MODE_LEFT_ALIGN, 3);
+ StringAppend(gStringVar4, sp0c);
+ StringAppend(gStringVar4, sp08);
+ ConvertIntToDecimalStringN(sp0c, z, STR_CONV_MODE_LEFT_ALIGN, 2);
+ StringAppend(gStringVar4, sp0c);
+
+ for (sp14 = 0; gStringVar4[sp14] != EOS; sp14++)
+ ;
+
+ Menu_DrawStdWindowFrame(28 - sp14, 16, 29, 19);
+ Menu_PrintText(gStringVar4, 29 - sp14, 17);
+}
+
+u8 DebugMenu_Exit(void)
+{
+ CloseMenu();
+ return TRUE;
+}
+
+u8 DebugMenu_OpenSogabe(void)
+{
+ return InitSogabeDebugMenu();
+}
+
+u8 DebugMenu_OpenTamada(void)
+{
+ return debug_sub_8075C30();
+}
+
+u8 DebugMenu_OpenKagaya(void)
+{
+ return InitKagayaDebugMenu_A();
+}
+
+u8 DebugMenu_OpenMatsuda(void)
+{
+ return InitMatsudaDebugMenu();
+}
+
+u8 DebugMenu_OpenNohara(void)
+{
+ return InitNoharaDebugMenu();
+}
+
+u8 DebugMenu_OpenWatanabe(void)
+{
+ CloseMenu();
+ SetMainCallback2(InitWatanabeDebugMenu);
+ ScriptContext2_Enable();
+ return TRUE;
+}
+
+u8 DebugMenu_EndSequenceDemo(void)
+{
+ CloseMenu();
+ SetMainCallback2(sub_81439D0);
+ ScriptContext2_Enable();
+ return TRUE;
+}
+
+u8 DebugMenu_HallOfFame(void)
+{
+ CloseMenu();
+ GameClear();
+ ScriptContext2_Enable();
+ return TRUE;
+}
+
+u8 DebugMenu_OpenSizeComparison(void)
+{
+ CloseMenu();
+ InitSizeComparison();
+ ScriptContext2_Enable();
+ return TRUE;
+}
+
+u8 DebugMenu_HoennNationalDex(void)
+{
+ if (IsNationalPokedexEnabled())
+ DisableNationalPokedex();
+ else
+ EnableNationalPokedex();
+ CloseMenu();
+ return TRUE;
+}
+
+const u8 Str_839BE0F[] = _("HP");
+const u8 Str_839BE12[] = _("PAR");
+const u8 Str_839BE16[] = _("SLP");
+const u8 Str_839BE1A[] = _("PSN");
+const u8 Str_839BE1E[] = _("ウマイ");
+
+u8 DebugMenu_8077434(void)
+{
+ switch (Menu_GetCursorPos())
+ {
+ case 0:
+ debug_sub_80C2C18(Str_839BE0F, 1, 4);
+ debug_sub_80C2D24(0xff, 0xff, 0xff, 0, 0xff, 0xff);
+ break;
+ case 1:
+ debug_sub_80C2C18(Str_839BE12, 2, 0);
+ debug_sub_80C2D24(0xff, 0xff, 0, 0xff, 0xff, 0xff);
+ break;
+ case 2:
+ debug_sub_80C2C18(Str_839BE16, 3, 0);
+ debug_sub_80C2D24(0xff, 0, 0xff, 0xff, 0xff, 0xff);
+ break;
+ case 3:
+ debug_sub_80C2C18(Str_839BE1A, 4, 0);
+ debug_sub_80C2D24(0, 0xff, 0xff, 0xff, 0xff, 0xff);
+ break;
+ case 4:
+ debug_sub_80C2C18(Str_839BE1E, 4, 0);
+ debug_sub_80C2D24(0xff, 0xff, 0xff, 0xff, 0xff, 0xff);
+ break;
+ }
+ CloseMenu();
+ return TRUE;
+}
+
+const struct MenuAction gUnknown_Debug_839BE24[] = {
+ {Str_839BE0F, DebugMenu_8077434},
+ {Str_839BE12, DebugMenu_8077434},
+ {Str_839BE16, DebugMenu_8077434},
+ {Str_839BE1A, DebugMenu_8077434},
+ {Str_839BE1E, DebugMenu_8077434}
+};
+
+u8 DebugMenu_807750C(void)
+{
+ return DebugMenu_8077D78(gUnknown_Debug_839BE24);
+}
+
+u8 DebugMenu_SetRamBerry(void)
+{
+ DebugMenu_8077D24(gUnknown_Debug_839BE24, 12, ARRAY_COUNT(gUnknown_Debug_839BE24));
+ gMenuCallback = DebugMenu_807750C;
+ return FALSE;
+}
+
+u8 DebugMenu_ToggleBGM(void)
+{
+ gDisableMusic = gDisableMusic ? FALSE : TRUE;
+ CloseMenu();
+ return TRUE;
+}
+
+u8 DebugMenu_BattleForDebug(void)
+{
+ CloseMenu();
+ InitBattleForDebug();
+ ScriptContext2_Enable();
+ return TRUE;
+}
+
+u8 DebugMenu_NationalDex(void)
+{
+ u16 i;
+
+ for (i = 0; i < 386; i++)
+ {
+ GetSetPokedexFlag(i + 1, 2);
+ GetSetPokedexFlag(i + 1, 3);
+ }
+ gUnknown_03005CE8 = TRUE;
+ CloseMenu();
+ return TRUE;
+}
+
+u8 DebugMenu_HoennDex(void)
+{
+ u16 i;
+
+ for (i = 0; i < 202; i++)
+ {
+ u16 nati = HoennToNationalOrder(i + 1);
+ GetSetPokedexFlag(nati, 2);
+ GetSetPokedexFlag(nati, 3);
+ }
+ gUnknown_03005CE8 = TRUE;
+ CloseMenu();
+ return TRUE;
+}
+
+u8 DebugMenu_CreatePKMN(void)
+{
+ CloseMenu();
+ InitCreatePokemon();
+ ScriptContext2_Enable();
+ return TRUE;
+}
+
+u8 DebugMenu_ViewPokemonGraphics(void)
+{
+ CloseMenu();
+ InitSeePokemonGraphics();
+ ScriptContext2_Enable();
+ return TRUE;
+}
+
+u8 DebugMenu_OpenSeeTrainers(void)
+{
+ CloseMenu();
+ InitSeeTrainers();
+ ScriptContext2_Enable();
+ return TRUE;
+}
+
+u8 DebugMenu_OpenMori(void)
+{
+ return InitMoriDebugMenu();
+}
+
+u8 DebugMenu_OpenTomomichi(void)
+{
+ return InitTomomichiDebugWindow();
+}
+
+u8 DebugMenu_OpenAoki(void)
+{
+ CloseMenu();
+ return TRUE;
+}
+
+u8 DebugMenu_OpenTaya(void)
+{
+ return InitTayaDebugWindow();
+}
+
+u8 DebugMenu_OpenNakamura(void)
+{
+ return InitNakamuraDebugMenu();
+}
+
+u8 DebugMenu_OpenIwasawa(void)
+{
+ return debug_sub_8138CC4();
+}
+
+u8 DebugMenu_Teleport(void)
+{
+ Overworld_SetWarpDestToLastHealLoc();
+ sub_8080E88();
+ ScriptContext2_Enable();
+ CloseMenu();
+ return TRUE;
+}
+
+u8 DebugMenu_EditPKMN(void)
+{
+ Menu_EraseScreen();
+ NakaGenderTest();
+ return FALSE;
+}
+
+void DebugMenu_80776B4(u8 bgNum)
+{
+ u8 sp00[] = __("OFF$"
+ "ON$");
+ Menu_BlankWindowRect(25, bgNum * 2, 29, bgNum * 2 + 1);
+ Menu_PrintText(sp00 + 4 * ((gUnknown_030006C8 >> bgNum) & 1), 25, bgNum * 2);
+}
+
+void DebugMenu_8077704(void)
+{
+ u8 sp00[] = _("BG0\n"
+ "BG1\n"
+ "BG2\n"
+ "BG3\n");
+ Menu_BlankWindowRect(19, 0, 29, 8);
+ Menu_PrintText(sp00, 21, 0);
+ gUnknown_030006C8 = (REG_DISPCNT >> 8) & 0x0F;
+ DebugMenu_80776B4(0);
+ DebugMenu_80776B4(1);
+ DebugMenu_80776B4(2);
+ DebugMenu_80776B4(3);
+}
+
+u8 DebugMenu_8077760(void)
+{
+ if (gMain.newKeys & DPAD_UP)
+ {
+ PlaySE(SE_SELECT);
+ Menu_MoveCursor(-1);
+ if (gUnknown_030006B8 != 0)
+ gUnknown_030006B8--;
+ else
+ gUnknown_030006B8 = 3;
+ }
+ if (gMain.newKeys & DPAD_DOWN)
+ {
+ PlaySE(SE_SELECT);
+ Menu_MoveCursor(+1);
+ if (gUnknown_030006B8 != 3)
+ gUnknown_030006B8++;
+ else
+ gUnknown_030006B8 = 0;
+ }
+ if (gMain.newKeys & (DPAD_LEFT | DPAD_RIGHT))
+ {
+ PlaySE(SE_SELECT);
+ gUnknown_030006C8 ^= (1 << Menu_GetCursorPos());
+ DebugMenu_80776B4(Menu_GetCursorPos());
+ }
+ if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON)
+ {
+ REG_DISPCNT = (REG_DISPCNT & 0xF0FF) + (gUnknown_030006C8 << 8);
+ CloseMenu();
+ return TRUE;
+ }
+ return FALSE;
+}
+
+u8 DebugMenu_SwitchBG(void)
+{
+ Menu_EraseScreen();
+ DebugMenu_8077704();
+ InitMenu(0, 20, 0, 4, 0, 6);
+ gMenuCallback = DebugMenu_8077760;
+ return FALSE;
+}
+
+void DebugMenu_807786C(u8 a0)
+{
+ u8 sp00[] = __("ON$"
+ "OFF$");
+
+ Menu_DrawStdWindowFrame(25, 0, 29, 3);
+ Menu_PrintText(sp00 + 3 * a0, 26, 1);
+}
+
+u8 DebugMenu_80778A8(void)
+{
+ if (gMain.newKeys & (DPAD_LEFT | DPAD_RIGHT))
+ {
+ PlaySE(SE_SELECT);
+ gWildEncountersDisabled ^= 1;
+ DebugMenu_807786C(gWildEncountersDisabled);
+ }
+ if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON)
+ {
+ CloseMenu();
+ return TRUE;
+ }
+ return FALSE;
+}
+
+u8 DebugMenu_ControlEncounter(void)
+{
+ Menu_EraseScreen();
+ DebugMenu_807786C(gWildEncountersDisabled);
+ gMenuCallback = DebugMenu_80778A8;
+ return FALSE;
+}
+
u8 DebugMenu_UseHM()
{
- asm(
- " ldr r1, ._215 @ gMenuCallback\n"
- " ldr r0, ._215 + 4 @ DebugMenu_8077C14\n"
- " str r0, [r1]\n"
- " mov r0, #0x0\n"
- " bx lr\n"
- "._216:\n"
- " .align 2, 0\n"
- "._215:\n"
- " .word gMenuCallback\n"
- " .word DebugMenu_8077C14+1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8077934()
-{
- asm(
- " push {lr}\n"
- " mov r1, #0x0\n"
- " ldr r3, ._218 @ gSaveBlock1\n"
- " mov r2, #0x1\n"
- "._217:\n"
- " add r0, r1, r3\n"
- " strb r2, [r0]\n"
- " add r1, r1, #0x1\n"
- " cmp r1, #0x63\n"
- " bls ._217 @cond_branch\n"
- " bl CloseMenu\n"
- " mov r0, #0x1\n"
- " pop {r1}\n"
- " bx r1\n"
- "._219:\n"
- " .align 2, 0\n"
- "._218:\n"
- " .word gSaveBlock1+0x97a\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8077954()
-{
- asm(
- " push {lr}\n"
- " mov r1, #0x0\n"
- " ldr r3, ._222 @ gSaveBlock1\n"
- " mov r2, #0x0\n"
- "._221:\n"
- " add r0, r1, r3\n"
- " strb r2, [r0]\n"
- " add r1, r1, #0x1\n"
- " cmp r1, #0x63\n"
- " bls ._221 @cond_branch\n"
- " bl CloseMenu\n"
- " mov r0, #0x1\n"
- " pop {r1}\n"
- " bx r1\n"
- "._223:\n"
- " .align 2, 0\n"
- "._222:\n"
- " .word gSaveBlock1+0x97a\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8077974()
-{
- asm(
- " push {lr}\n"
- " bl Menu_EraseScreen\n"
- " ldr r1, ._226 @ gSaveBlock1\n"
- " mov r0, #0x4\n"
- " ldsb r0, [r1, r0]\n"
- " lsl r0, r0, #0x10\n"
- " lsr r0, r0, #0x10\n"
- " ldrb r1, [r1, #0x5]\n"
- " lsl r1, r1, #0x18\n"
- " asr r1, r1, #0x18\n"
- " lsl r1, r1, #0x10\n"
- " lsr r1, r1, #0x10\n"
- " bl IsRematchTrainerIn\n"
- " cmp r0, #0\n"
- " beq ._224 @cond_branch\n"
- " ldr r0, ._226 + 4 @ gStringVar1\n"
- " ldr r1, ._226 + 8 @ Str_839BE8D\n"
- " bl StringCopy\n"
- " b ._225\n"
- "._227:\n"
- " .align 2, 0\n"
- "._226:\n"
- " .word gSaveBlock1\n"
- " .word gStringVar1\n"
- " .word Str_839BE8D\n"
- "._224:\n"
- " ldr r0, ._230 @ gStringVar1\n"
- " ldr r1, ._230 + 4 @ Str_839BE90\n"
- " bl StringCopy\n"
- "._225:\n"
- " ldr r1, ._230 + 8 @ gSaveBlock1\n"
- " mov r0, #0x4\n"
- " ldsb r0, [r1, r0]\n"
- " lsl r0, r0, #0x10\n"
- " lsr r0, r0, #0x10\n"
- " ldrb r1, [r1, #0x5]\n"
- " lsl r1, r1, #0x18\n"
- " asr r1, r1, #0x18\n"
- " lsl r1, r1, #0x10\n"
- " lsr r1, r1, #0x10\n"
- " bl DoesSomeoneWantRematchIn\n"
- " cmp r0, #0\n"
- " beq ._228 @cond_branch\n"
- " ldr r0, ._230 + 12 @ gStringVar2\n"
- " ldr r1, ._230 + 16 @ Str_839BE8D\n"
- " bl StringCopy\n"
- " b ._229\n"
- "._231:\n"
- " .align 2, 0\n"
- "._230:\n"
- " .word gStringVar1\n"
- " .word Str_839BE90\n"
- " .word gSaveBlock1\n"
- " .word gStringVar2\n"
- " .word Str_839BE8D\n"
- "._228:\n"
- " ldr r0, ._232 @ gStringVar2\n"
- " ldr r1, ._232 + 4 @ Str_839BE90\n"
- " bl StringCopy\n"
- "._229:\n"
- " ldr r0, ._232 + 8 @ Str_839BE6B\n"
- " bl sub_8071F40\n"
- " ldr r1, ._232 + 12 @ gMenuCallback\n"
- " ldr r0, ._232 + 16 @ DebugMenu_8077DB4\n"
- " str r0, [r1]\n"
- " mov r0, #0x0\n"
- " pop {r1}\n"
- " bx r1\n"
- "._233:\n"
- " .align 2, 0\n"
- "._232:\n"
- " .word gStringVar2\n"
- " .word Str_839BE90\n"
- " .word Str_839BE6B\n"
- " .word gMenuCallback\n"
- " .word DebugMenu_8077DB4+1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8077A20()
-{
- asm(
- " push {lr}\n"
- " ldr r0, ._234 @ gSaveBlock1\n"
- " ldr r1, ._234 + 4 @ 0x978\n"
- " add r0, r0, r1\n"
- " mov r1, #0xff\n"
- " strh r1, [r0]\n"
- " bl CloseMenu\n"
- " mov r0, #0x1\n"
- " pop {r1}\n"
- " bx r1\n"
- "._235:\n"
- " .align 2, 0\n"
- "._234:\n"
- " .word gSaveBlock1\n"
- " .word 0x978\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8077A40()
-{
- asm(
- " push {lr}\n"
- " ldr r0, ._236 @ gSaveBlock1\n"
- " ldr r1, ._236 + 4 @ 0x978\n"
- " add r0, r0, r1\n"
- " mov r1, #0x0\n"
- " strh r1, [r0]\n"
- " bl CloseMenu\n"
- " mov r0, #0x1\n"
- " pop {r1}\n"
- " bx r1\n"
- "._237:\n"
- " .align 2, 0\n"
- "._236:\n"
- " .word gSaveBlock1\n"
- " .word 0x978\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8077A60()
-{
- asm(
- " push {lr}\n"
- " ldr r0, ._238 @ gUnknown_Debug_839BEE4\n"
- " bl DebugMenu_8077D78\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x18\n"
- " pop {r1}\n"
- " bx r1\n"
- "._239:\n"
- " .align 2, 0\n"
- "._238:\n"
- " .word gUnknown_Debug_839BEE4\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-u8 DebugMenu_RematchTrainers()
-{
- asm(
- " push {lr}\n"
- " bl Menu_EraseScreen\n"
- " ldr r0, ._240 @ gUnknown_Debug_839BEE4\n"
- " mov r1, #0xd\n"
- " mov r2, #0x5\n"
- " bl DebugMenu_8077D24\n"
- " ldr r1, ._240 + 4 @ gMenuCallback\n"
- " ldr r0, ._240 + 8 @ DebugMenu_8077A60\n"
- " str r0, [r1]\n"
- " mov r0, #0x0\n"
- " pop {r1}\n"
- " bx r1\n"
- "._241:\n"
- " .align 2, 0\n"
- "._240:\n"
- " .word gUnknown_Debug_839BEE4\n"
- " .word gMenuCallback\n"
- " .word DebugMenu_8077A60+1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8077A9C()
-{
- asm(
- " push {lr}\n"
- " ldr r1, ._242 @ gNumSafariBalls\n"
- " mov r0, #0x1e\n"
- " strb r0, [r1]\n"
- " bl CloseMenu\n"
- " mov r0, #0x1\n"
- " pop {r1}\n"
- " bx r1\n"
- "._243:\n"
- " .align 2, 0\n"
- "._242:\n"
- " .word gNumSafariBalls\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8077AB4()
-{
- asm(
- " push {lr}\n"
- " ldr r1, ._244 @ gNumSafariBalls\n"
- " mov r0, #0x1\n"
- " strb r0, [r1]\n"
- " bl CloseMenu\n"
- " mov r0, #0x1\n"
- " pop {r1}\n"
- " bx r1\n"
- "._245:\n"
- " .align 2, 0\n"
- "._244:\n"
- " .word gNumSafariBalls\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8077ACC()
-{
- asm(
- " push {lr}\n"
- " ldr r1, ._246 @ gSafariZoneStepCounter\n"
- " mov r2, #0xfa\n"
- " lsl r2, r2, #0x1\n"
- " add r0, r2, #0\n"
- " strh r0, [r1]\n"
- " bl CloseMenu\n"
- " mov r0, #0x1\n"
- " pop {r1}\n"
- " bx r1\n"
- "._247:\n"
- " .align 2, 0\n"
- "._246:\n"
- " .word gSafariZoneStepCounter\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8077AE8()
-{
- asm(
- " push {lr}\n"
- " ldr r1, ._248 @ gSafariZoneStepCounter\n"
- " mov r0, #0x1\n"
- " strh r0, [r1]\n"
- " bl CloseMenu\n"
- " mov r0, #0x1\n"
- " pop {r1}\n"
- " bx r1\n"
- "._249:\n"
- " .align 2, 0\n"
- "._248:\n"
- " .word gSafariZoneStepCounter\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8077B00()
-{
- asm(
- " push {lr}\n"
- " bl Menu_EraseScreen\n"
- " bl unref_sub_80C853C\n"
- " cmp r0, #0\n"
- " beq ._250 @cond_branch\n"
- " ldr r0, ._252 @ Str_839BF14\n"
- " bl sub_8071F40\n"
- " b ._251\n"
- "._253:\n"
- " .align 2, 0\n"
- "._252:\n"
- " .word Str_839BF14\n"
- "._250:\n"
- " ldr r0, ._254 @ Str_839BF1F\n"
- " bl sub_8071F40\n"
- "._251:\n"
- " ldr r1, ._254 + 4 @ gMenuCallback\n"
- " ldr r0, ._254 + 8 @ DebugMenu_8077DB4\n"
- " str r0, [r1]\n"
- " mov r0, #0x0\n"
- " pop {r1}\n"
- " bx r1\n"
- "._255:\n"
- " .align 2, 0\n"
- "._254:\n"
- " .word Str_839BF1F\n"
- " .word gMenuCallback\n"
- " .word DebugMenu_8077DB4+1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8077B3C()
-{
- asm(
- " push {lr}\n"
- " ldr r0, ._256 @ gUnknown_Debug_839BF6C\n"
- " bl DebugMenu_8077D78\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x18\n"
- " pop {r1}\n"
- " bx r1\n"
- "._257:\n"
- " .align 2, 0\n"
- "._256:\n"
- " .word gUnknown_Debug_839BF6C\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-u8 DebugMenu_Safari()
-{
- asm(
- " push {lr}\n"
- " bl GetSafariZoneFlag\n"
- " cmp r0, #0\n"
- " beq ._258 @cond_branch\n"
- " bl Menu_EraseScreen\n"
- " ldr r0, ._260 @ gUnknown_Debug_839BF6C\n"
- " mov r1, #0xe\n"
- " mov r2, #0x5\n"
- " bl DebugMenu_8077D24\n"
- " ldr r0, ._260 + 4 @ gStringVar1\n"
- " ldr r1, ._260 + 8 @ gSafariZoneStepCounter\n"
- " ldrh r1, [r1]\n"
- " mov r2, #0x1\n"
- " mov r3, #0x3\n"
- " bl ConvertIntToDecimalStringN\n"
- " ldr r0, ._260 + 12 @ Str_839BF0C\n"
- " bl sub_8071F40\n"
- " ldr r1, ._260 + 16 @ gMenuCallback\n"
- " ldr r0, ._260 + 20 @ DebugMenu_8077B3C\n"
- " str r0, [r1]\n"
- " bl ScriptContext2_Enable\n"
- " mov r0, #0x0\n"
- " b ._259\n"
- "._261:\n"
- " .align 2, 0\n"
- "._260:\n"
- " .word gUnknown_Debug_839BF6C\n"
- " .word gStringVar1\n"
- " .word gSafariZoneStepCounter\n"
- " .word Str_839BF0C\n"
- " .word gMenuCallback\n"
- " .word DebugMenu_8077B3C+1\n"
- "._258:\n"
- " bl CloseMenu\n"
- " mov r0, #0x16\n"
- " bl PlaySE\n"
- " mov r0, #0x1\n"
- "._259:\n"
- " pop {r1}\n"
- " bx r1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8077BB4()
-{
- asm(
- " push {lr}\n"
- " bl debug_sub_80AFEE4\n"
- " mov r0, #0x1\n"
- " pop {r1}\n"
- " bx r1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8077BC0()
-{
- asm(
- " push {lr}\n"
- " bl debug_sub_8122080\n"
- " mov r0, #0x1\n"
- " pop {r1}\n"
- " bx r1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8077BCC()
-{
- asm(
- " push {lr}\n"
- " bl debug_sub_8120968\n"
- " mov r0, #0x1\n"
- " pop {r1}\n"
- " bx r1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8077BD8()
-{
- asm(
- " push {lr}\n"
- " bl debug_sub_8130318\n"
- " mov r0, #0x1\n"
- " pop {r1}\n"
- " bx r1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8077BE4()
-{
- asm(
- " push {lr}\n"
- " bl debug_sub_80986AC\n"
- " bl CloseMenu\n"
- " mov r0, #0x1\n"
- " pop {r1}\n"
- " bx r1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8077BF4()
-{
- asm(
- " push {lr}\n"
- " bl debug_sub_80D93F4\n"
- " mov r0, #0x1\n"
- " pop {r1}\n"
- " bx r1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8077C00()
-{
- asm(
- " push {lr}\n"
- " ldr r0, ._262 @ gUnknown_Debug_839BF94\n"
- " bl DebugMenu_8077D78\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x18\n"
- " pop {r1}\n"
- " bx r1\n"
- "._263:\n"
- " .align 2, 0\n"
- "._262:\n"
- " .word gUnknown_Debug_839BF94\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8077C14()
-{
- asm(
- " push {lr}\n"
- " bl Menu_EraseScreen\n"
- " ldr r0, ._264 @ gUnknown_Debug_839BF94\n"
- " mov r1, #0xa\n"
- " mov r2, #0x9\n"
- " bl DebugMenu_8077D24\n"
- " ldr r1, ._264 + 4 @ gMenuCallback\n"
- " ldr r0, ._264 + 8 @ DebugMenu_8077C00\n"
- " str r0, [r1]\n"
- " mov r0, #0x0\n"
- " pop {r1}\n"
- " bx r1\n"
- "._265:\n"
- " .align 2, 0\n"
- "._264:\n"
- " .word gUnknown_Debug_839BF94\n"
- " .word gMenuCallback\n"
- " .word DebugMenu_8077C00+1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8077C3C()
-{
- asm(
- " push {r4, r5, r6, r7, lr}\n"
- " mov r7, sl\n"
- " mov r6, r9\n"
- " mov r5, r8\n"
- " push {r5, r6, r7}\n"
- " add sp, sp, #0xfffffffc\n"
- " mov sl, r0\n"
- " add r7, r1, #0\n"
- " ldr r0, ._271 @ gUnknown_030006BC\n"
- " ldr r1, ._271 + 4 @ gUnknown_Debug_839BFE8\n"
- " str r1, [r0]\n"
- " mov r1, #0x0\n"
- " strb r1, [r7]\n"
- " add r7, r7, #0x1\n"
- " strb r1, [r7]\n"
- " add r7, r7, #0x1\n"
- " mov r3, #0x0\n"
- " mov r8, r0\n"
+ gMenuCallback = DebugMenu_8077C14;
+ return FALSE;
+}
+
+u8 DebugMenu_8077934(void)
+{
+ int i;
+
+ for (i = 0; i < ARRAY_COUNT(gSaveBlock1.trainerRematches); i++)
+ gSaveBlock1.trainerRematches[i] = 1;
+ CloseMenu();
+ return TRUE;
+}
+
+u8 DebugMenu_8077954(void)
+{
+ int i;
+
+ for (i = 0; i < ARRAY_COUNT(gSaveBlock1.trainerRematches); i++)
+ gSaveBlock1.trainerRematches[i] = 0;
+ CloseMenu();
+ return TRUE;
+}
+
+const u8 Str_839BE6B[] = _("さいせんかのうトレーナー:{STR_VAR_1}\n"
+ "さいせんじょうたいトレーナー:{STR_VAR_2}");
+const u8 Str_839BE8D[] = _("いる");
+const u8 Str_839BE90[] = _("いない");
+
+bool8 DebugMenu_8077974(void)
+{
+ Menu_EraseScreen();
+ if (IsRematchTrainerIn(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum))
+ StringCopy(gStringVar1, Str_839BE8D);
+ else
+ StringCopy(gStringVar1, Str_839BE90);
+ if (DoesSomeoneWantRematchIn(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum))
+ StringCopy(gStringVar2, Str_839BE8D);
+ else
+ StringCopy(gStringVar2, Str_839BE90);
+ sub_8071F40(Str_839BE6B);
+ gMenuCallback = DebugMenu_8077DB4;
+ return FALSE;
+}
+
+bool8 DebugMenu_8077A20(void)
+{
+ gSaveBlock1.trainerRematchStepCounter = 255;
+ CloseMenu();
+ return TRUE;
+}
+
+bool8 DebugMenu_8077A40(void)
+{
+ gSaveBlock1.trainerRematchStepCounter = 0;
+ CloseMenu();
+ return TRUE;
+}
+
+const u8 Str_839BE94[] = _("Max num of steps");
+const u8 Str_839BEA5[] = _("Clear num of steps");
+const u8 Str_839BEB8[] = _("See trainers");
+const u8 Str_839BEC5[] = _("Flag all clear");
+const u8 Str_839BED4[] = _("Flag all set");
+
+const struct MenuAction gUnknown_Debug_839BEE4[] = {
+ {Str_839BEB8, DebugMenu_8077974},
+ {Str_839BE94, DebugMenu_8077A20},
+ {Str_839BEA5, DebugMenu_8077A40},
+ {Str_839BED4, DebugMenu_8077934},
+ {Str_839BEC5, DebugMenu_8077954}
+};
+
+u8 DebugMenu_8077A60(void)
+{
+ return DebugMenu_8077D78(gUnknown_Debug_839BEE4);
+}
+
+u8 DebugMenu_RematchTrainers(void)
+{
+ Menu_EraseScreen();
+ DebugMenu_8077D24(gUnknown_Debug_839BEE4, 13, ARRAY_COUNT(gUnknown_Debug_839BEE4));
+ gMenuCallback = DebugMenu_8077A60;
+ return FALSE;
+}
+
+bool8 DebugMenu_8077A9C(void)
+{
+ gNumSafariBalls = 30;
+ CloseMenu();
+ return TRUE;
+}
+
+bool8 DebugMenu_8077AB4(void)
+{
+ gNumSafariBalls = 1;
+ CloseMenu();
+ return TRUE;
+}
+
+bool8 DebugMenu_8077ACC(void)
+{
+ gSafariZoneStepCounter = 500;
+ CloseMenu();
+ return TRUE;
+}
+
+bool8 DebugMenu_8077AE8(void)
+{
+ gSafariZoneStepCounter = 1;
+ CloseMenu();
+ return TRUE;
+}
+
+const u8 Str_839BF0C[] = _("のこり {STR_VAR_1}ほ");
+const u8 Str_839BF14[] = _("{STR_VAR_1}\n"
+ "のこり {STR_VAR_2}ほ");
+const u8 Str_839BF1F[] = _("めのまえには\n"
+ "キューブが ありません!");
+
+bool8 DebugMenu_8077B00(void)
+{
+ Menu_EraseScreen();
+ if (debug_sub_80C853C())
+ sub_8071F40(Str_839BF14);
+ else
+ sub_8071F40(Str_839BF1F);
+ gMenuCallback = DebugMenu_8077DB4;
+ return FALSE;
+}
+
+const u8 Str_839BF33[] = _("ほすうをのこり1にする");
+const u8 Str_839BF3F[] = _("ボールをのこり1にする");
+const u8 Str_839BF4B[] = _("キューブおきば");
+const u8 Str_839BF53[] = _("ボールをのこり30に");
+const u8 Str_839BF5E[] = _("ほすうをのこり500に");
+
+const struct MenuAction gUnknown_Debug_839BF6C[] = {
+ {Str_839BF4B, DebugMenu_8077B00},
+ {Str_839BF5E, DebugMenu_8077ACC},
+ {Str_839BF33, DebugMenu_8077AE8},
+ {Str_839BF53, DebugMenu_8077A9C},
+ {Str_839BF3F, DebugMenu_8077AB4}
+};
+
+bool8 DebugMenu_8077B3C(void)
+{
+ return DebugMenu_8077D78(gUnknown_Debug_839BF6C);
+}
+
+u8 DebugMenu_Safari(void)
+{
+ if (!GetSafariZoneFlag())
+ {
+ CloseMenu();
+ PlaySE(SE_BOO);
+ return TRUE;
+ }
+ Menu_EraseScreen();
+ DebugMenu_8077D24(gUnknown_Debug_839BF6C, 14, ARRAY_COUNT(gUnknown_Debug_839BF6C));
+ ConvertIntToDecimalStringN(gStringVar1, gSafariZoneStepCounter, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ sub_8071F40(Str_839BF0C);
+ gMenuCallback = DebugMenu_8077B3C;
+ ScriptContext2_Enable();
+ return FALSE;
+}
+
+bool8 DebugMenu_8077BB4(void)
+{
+ Debug_SetUpFieldMove_Cut();
+ return TRUE;
+}
+
+bool8 DebugMenu_8077BC0(void)
+{
+ debug_sub_8122080();
+ return TRUE;
+}
+
+bool8 DebugMenu_8077BCC(void)
+{
+ debug_sub_8120968();
+ return TRUE;
+}
+
+bool8 DebugMenu_8077BD8(void)
+{
+ debug_sub_8130318();
+ return TRUE;
+}
+
+bool8 DebugMenu_8077BE4(void)
+{
+ debug_sub_80986AC();
+ CloseMenu();
+ return TRUE;
+}
+
+bool8 DebugMenu_8077BF4(void)
+{
+ Debug_SetUpFieldMove_SecretPower();
+ return TRUE;
+}
+
+const struct MenuAction gUnknown_Debug_839BF94[] = {
+ {gMoveNames[MOVE_CUT], DebugMenu_8077BB4},
+ {gMoveNames[MOVE_FLASH], DebugMenu_8077BC0},
+ {gMoveNames[MOVE_ROCK_SMASH], DebugMenu_8077BCC},
+ {gMoveNames[MOVE_STRENGTH], DebugMenu_8077BD8},
+ {gMoveNames[MOVE_SURF], debug_sub_80B0770},
+ {gMoveNames[MOVE_FLY], debug_sub_80B07B0},
+ {gMoveNames[MOVE_WATERFALL], DebugMenu_8077BE4},
+ {gMoveNames[MOVE_DIVE], debug_sub_80B0800},
+ {gMoveNames[MOVE_SECRET_POWER], DebugMenu_8077BF4}
+};
+
+bool8 DebugMenu_8077C00(void)
+{
+ return DebugMenu_8077D78(gUnknown_Debug_839BF94);
+}
+
+u8 DebugMenu_8077C14(void)
+{
+ Menu_EraseScreen();
+ DebugMenu_8077D24(gUnknown_Debug_839BF94, 10, ARRAY_COUNT(gUnknown_Debug_839BF94));
+ gMenuCallback = DebugMenu_8077C00;
+ return FALSE;
+}
+
+const u8 Str_839BFDC[] = _(" じかん ふん びょう");
+
+const s32 gUnknown_Debug_839BFE8[] = {
+ 99, 10, 2, 23,
+ 99, 10, 2, 26
+};
+
+#ifdef NONMATCHING
+void DebugMenu_8077C3C(const char * a0, u8 * a1)
+{
+ // Register allocation swap
+ // Intended: r7 = a1, r6 = gUnknown_030006BC[2]
+ // Observed: r6 = a1, r7 = gUnknown_030006BC[2]
+
+ int i;
+
+ gUnknown_030006BC = gUnknown_Debug_839BFE8;
+ *a1++ = CHAR_SPACE;
+ *a1++ = CHAR_SPACE;
+
+ for (i = 0; i < 2; i++, gUnknown_030006BC += 4)
+ {
+ u32 r5 = 0;
+ int r2;
+ int r4;
+ for (r2 = gUnknown_030006BC[1], r4 = 0; r4 < gUnknown_030006BC[2]; r4++, r2 /= 10)
+ r5 += (a0[gUnknown_030006BC[3] + r4] - '0') * r2;
+ if (gUnknown_030006BC[0] < r5)
+ r5 = gUnknown_030006BC[0];
+ a1 = ConvertIntToDecimalStringN(a1, r5, STR_CONV_MODE_LEADING_ZEROS, gUnknown_030006BC[2]);
+ }
+ a1[0] = a0[29] - 'A' + CHAR_A;
+ if (a1[0] > 0xf6)
+ a1[0] = 0xf6;
+ a1[1] = EOS;
+}
+#else
+NAKED void DebugMenu_8077C3C(const char * a0, u8 * a1)
+{
+ asm("\tpush\t{r4, r5, r6, r7, lr}\n"
+ "\tmov\tr7, sl\n"
+ "\tmov\tr6, r9\n"
+ "\tmov\tr5, r8\n"
+ "\tpush\t{r5, r6, r7}\n"
+ "\tadd\tsp, sp, #0xfffffffc\n"
+ "\tmov\tsl, r0\n"
+ "\tadd\tr7, r1, #0\n"
+ "\tldr\tr0, ._271 @ gUnknown_030006BC\n"
+ "\tldr\tr1, ._271 + 4 @ gUnknown_Debug_839BFE8\n"
+ "\tstr\tr1, [r0]\n"
+ "\tmov\tr1, #0x0\n"
+ "\tstrb\tr1, [r7]\n"
+ "\tadd\tr7, r7, #0x1\n"
+ "\tstrb\tr1, [r7]\n"
+ "\tadd\tr7, r7, #0x1\n"
+ "\tmov\tr3, #0x0\n"
+ "\tmov\tr8, r0\n"
"._269:\n"
- " mov r5, #0x0\n"
- " ldr r1, ._271 @ gUnknown_030006BC\n"
- " ldr r0, [r1]\n"
- " ldr r2, [r0, #0x4]\n"
- " mov r4, #0x0\n"
- " ldr r1, [r0, #0x8]\n"
- " add r3, r3, #0x1\n"
- " mov r9, r3\n"
- " cmp r5, r1\n"
- " bge ._266 @cond_branch\n"
- " add r3, r0, #0\n"
- " add r6, r1, #0\n"
+ "\tmov\tr5, #0x0\n"
+ "\tldr\tr1, ._271 @ gUnknown_030006BC\n"
+ "\tldr\tr0, [r1]\n"
+ "\tldr\tr2, [r0, #0x4]\n"
+ "\tmov\tr4, #0x0\n"
+ "\tldr\tr1, [r0, #0x8]\n"
+ "\tadd\tr3, r3, #0x1\n"
+ "\tmov\tr9, r3\n"
+ "\tcmp\tr5, r1\n"
+ "\tbge\t._266\t@cond_branch\n"
+ "\tadd\tr3, r0, #0\n"
+ "\tadd\tr6, r1, #0\n"
"._267:\n"
- " ldr r0, [r3, #0xc]\n"
- " add r0, r0, r4\n"
- " add r0, r0, sl\n"
- " ldrb r0, [r0]\n"
- " sub r0, r0, #0x30\n"
- " mul r0, r0, r2\n"
- " add r5, r5, r0\n"
- " add r4, r4, #0x1\n"
- " add r0, r2, #0\n"
- " mov r1, #0xa\n"
- " str r3, [sp]\n"
- " bl __divsi3\n"
- " add r2, r0, #0\n"
- " ldr r3, [sp]\n"
- " cmp r4, r6\n"
- " blt ._267 @cond_branch\n"
+ "\tldr\tr0, [r3, #0xc]\n"
+ "\tadd\tr0, r0, r4\n"
+ "\tadd r0, r0, sl\n"
+ "\tldrb\tr0, [r0]\n"
+ "\tsub\tr0, r0, #0x30\n"
+ "\tmul\tr0, r0, r2\n"
+ "\tadd\tr5, r5, r0\n"
+ "\tadd\tr4, r4, #0x1\n"
+ "\tadd\tr0, r2, #0\n"
+ "\tmov\tr1, #0xa\n"
+ "\tstr\tr3, [sp]\n"
+ "\tbl\t__divsi3\n"
+ "\tadd\tr2, r0, #0\n"
+ "\tldr\tr3, [sp]\n"
+ "\tcmp\tr4, r6\n"
+ "\tblt\t._267\t@cond_branch\n"
"._266:\n"
- " mov r0, r8\n"
- " ldr r1, [r0]\n"
- " ldr r0, [r1]\n"
- " cmp r0, r5\n"
- " bcs ._268 @cond_branch\n"
- " add r5, r0, #0\n"
+ "\tmov\tr0, r8\n"
+ "\tldr\tr1, [r0]\n"
+ "\tldr\tr0, [r1]\n"
+ "\tcmp\tr0, r5\n"
+ "\tbcs\t._268\t@cond_branch\n"
+ "\tadd\tr5, r0, #0\n"
"._268:\n"
- " ldrb r3, [r1, #0x8]\n"
- " add r0, r7, #0\n"
- " add r1, r5, #0\n"
- " mov r2, #0x2\n"
- " bl ConvertIntToDecimalStringN\n"
- " add r7, r0, #0\n"
- " mov r3, r9\n"
- " mov r1, r8\n"
- " ldr r0, [r1]\n"
- " add r0, r0, #0x10\n"
- " str r0, [r1]\n"
- " cmp r3, #0x1\n"
- " ble ._269 @cond_branch\n"
- " mov r1, sl\n"
- " ldrb r0, [r1, #0x1d]\n"
- " add r0, r0, #0x7a\n"
- " strb r0, [r7]\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x18\n"
- " cmp r0, #0xf6\n"
- " bls ._270 @cond_branch\n"
- " mov r0, #0xf6\n"
- " strb r0, [r7]\n"
+ "\tldrb\tr3, [r1, #0x8]\n"
+ "\tadd\tr0, r7, #0\n"
+ "\tadd\tr1, r5, #0\n"
+ "\tmov\tr2, #0x2\n"
+ "\tbl\tConvertIntToDecimalStringN\n"
+ "\tadd\tr7, r0, #0\n"
+ "\tmov\tr3, r9\n"
+ "\tmov\tr1, r8\n"
+ "\tldr\tr0, [r1]\n"
+ "\tadd\tr0, r0, #0x10\n"
+ "\tstr\tr0, [r1]\n"
+ "\tcmp\tr3, #0x1\n"
+ "\tble\t._269\t@cond_branch\n"
+ "\tmov\tr1, sl\n"
+ "\tldrb\tr0, [r1, #0x1d]\n"
+ "\tadd\tr0, r0, #0x7a\n"
+ "\tstrb\tr0, [r7]\n"
+ "\tlsl\tr0, r0, #0x18\n"
+ "\tlsr\tr0, r0, #0x18\n"
+ "\tcmp\tr0, #0xf6\n"
+ "\tbls\t._270\t@cond_branch\n"
+ "\tmov\tr0, #0xf6\n"
+ "\tstrb\tr0, [r7]\n"
"._270:\n"
- " mov r0, #0xff\n"
- " strb r0, [r7, #0x1]\n"
- " add sp, sp, #0x4\n"
- " pop {r3, r4, r5}\n"
- " mov r8, r3\n"
- " mov r9, r4\n"
- " mov sl, r5\n"
- " pop {r4, r5, r6, r7}\n"
- " pop {r0}\n"
- " bx r0\n"
+ "\tmov\tr0, #0xff\n"
+ "\tstrb\tr0, [r7, #0x1]\n"
+ "\tadd\tsp, sp, #0x4\n"
+ "\tpop\t{r3, r4, r5}\n"
+ "\tmov\tr8, r3\n"
+ "\tmov\tr9, r4\n"
+ "\tmov\tsl, r5\n"
+ "\tpop\t{r4, r5, r6, r7}\n"
+ "\tpop\t{r0}\n"
+ "\tbx\tr0\n"
"._272:\n"
- " .align 2, 0\n"
+ "\t.align\t2, 0\n"
"._271:\n"
- " .word gUnknown_030006BC \n"
- " .word gUnknown_Debug_839BFE8\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void debug_sub_8077CF4()
-{
- asm(
- " push {r4, r5, r6, lr}\n"
- " add r4, r0, #0\n"
- " add r5, r1, #0\n"
- " lsl r4, r4, #0x18\n"
- " lsr r4, r4, #0x18\n"
- " lsl r5, r5, #0x18\n"
- " lsr r5, r5, #0x18\n"
- " ldr r0, ._273 @ BuildDateTime\n"
- " ldr r6, ._273 + 4 @ gStringVar4\n"
- " add r1, r6, #0\n"
- " bl DebugMenu_8077C3C\n"
- " add r0, r6, #0\n"
- " add r1, r4, #0\n"
- " add r2, r5, #0\n"
- " bl Menu_PrintText\n"
- " pop {r4, r5, r6}\n"
- " pop {r0}\n"
- " bx r0\n"
- "._274:\n"
- " .align 2, 0\n"
- "._273:\n"
- " .word BuildDateTime\n"
- " .word gStringVar4\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8077D24()
-{
- asm(
- " push {r4, r5, r6, lr}\n"
- " add sp, sp, #0xfffffff8\n"
- " add r6, r0, #0\n"
- " add r4, r1, #0\n"
- " add r5, r2, #0\n"
- " lsl r4, r4, #0x18\n"
- " lsr r4, r4, #0x18\n"
- " lsl r5, r5, #0x18\n"
- " lsr r5, r5, #0x18\n"
- " bl Menu_EraseScreen\n"
- " lsl r3, r5, #0x1\n"
- " add r3, r3, #0x1\n"
- " lsl r3, r3, #0x18\n"
- " lsr r3, r3, #0x18\n"
- " mov r0, #0x0\n"
- " mov r1, #0x0\n"
- " add r2, r4, #0\n"
- " bl Menu_DrawStdWindowFrame\n"
- " mov r0, #0x1\n"
- " mov r1, #0x1\n"
- " add r2, r5, #0\n"
- " add r3, r6, #0\n"
- " bl Menu_PrintItems\n"
- " mov r0, #0x0\n"
- " str r0, [sp]\n"
- " sub r4, r4, #0x1\n"
- " lsl r4, r4, #0x18\n"
- " lsr r4, r4, #0x18\n"
- " str r4, [sp, #0x4]\n"
- " mov r1, #0x1\n"
- " mov r2, #0x1\n"
- " add r3, r5, #0\n"
- " bl InitMenu\n"
- " add sp, sp, #0x8\n"
- " pop {r4, r5, r6}\n"
- " pop {r0}\n"
- " bx r0\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8077D78()
-{
- asm(
- " push {r4, r5, lr}\n"
- " add r5, r0, #0\n"
- " bl Menu_ProcessInput\n"
- " lsl r0, r0, #0x18\n"
- " asr r4, r0, #0x18\n"
- " mov r0, #0x2\n"
- " neg r0, r0\n"
- " cmp r4, r0\n"
- " beq ._275 @cond_branch\n"
- " add r0, r0, #0x1\n"
- " cmp r4, r0\n"
- " beq ._276 @cond_branch\n"
- " bl Menu_EraseScreen\n"
- " ldr r0, ._278 @ gMenuCallback\n"
- " lsl r1, r4, #0x3\n"
- " add r1, r1, r5\n"
- " ldr r1, [r1, #0x4]\n"
- " str r1, [r0]\n"
- "._275:\n"
- " mov r0, #0x0\n"
- " b ._277\n"
- "._279:\n"
- " .align 2, 0\n"
- "._278:\n"
- " .word gMenuCallback\n"
- "._276:\n"
- " bl CloseMenu\n"
- " mov r0, #0x1\n"
- "._277:\n"
- " pop {r4, r5}\n"
- " pop {r1}\n"
- " bx r1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8077DB4()
-{
- asm(
- " push {lr}\n"
- " ldr r0, ._282 @ gMain\n"
- " ldrh r1, [r0, #0x2e]\n"
- " mov r0, #0x1\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " bne ._280 @cond_branch\n"
- " mov r0, #0x0\n"
- " b ._281\n"
- "._283:\n"
- " .align 2, 0\n"
- "._282:\n"
- " .word gMain\n"
- "._280:\n"
- " bl CloseMenu\n"
- " mov r0, #0x1\n"
- "._281:\n"
- " pop {r1}\n"
- " bx r1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8077DD8()
-{
- asm(
- " push {r4, r5, lr}\n"
- " add r4, r0, #0\n"
- " add r5, r1, #0\n"
- " lsl r3, r3, #0x10\n"
- " lsr r3, r3, #0x10\n"
- " add r1, r3, #0\n"
- " mov r0, #0x80\n"
- " and r0, r0, r3\n"
- " cmp r0, #0\n"
- " beq ._284 @cond_branch\n"
- " ldrh r0, [r4]\n"
- " sub r0, r0, #0x1\n"
- " b ._285\n"
- "._284:\n"
- " mov r0, #0x40\n"
- " and r0, r0, r3\n"
- " cmp r0, #0\n"
- " beq ._286 @cond_branch\n"
- " ldrh r0, [r4]\n"
- " add r0, r0, #0x1\n"
- " b ._287\n"
- "._286:\n"
- " mov r0, #0x20\n"
- " and r0, r0, r3\n"
- " cmp r0, #0\n"
- " beq ._288 @cond_branch\n"
- " ldrh r0, [r4]\n"
- " sub r0, r0, #0xa\n"
- "._285:\n"
- " strh r0, [r4]\n"
- " mov r1, #0x0\n"
- " ldsh r0, [r4, r1]\n"
- " cmp r0, r5\n"
- " bge ._293 @cond_branch\n"
- " strh r2, [r4]\n"
- " b ._293\n"
- "._288:\n"
- " mov r0, #0x10\n"
- " and r1, r1, r0\n"
- " cmp r1, #0\n"
- " bne ._291 @cond_branch\n"
- " mov r0, #0x0\n"
- " b ._292\n"
- "._291:\n"
- " ldrh r0, [r4]\n"
- " add r0, r0, #0xa\n"
- "._287:\n"
- " strh r0, [r4]\n"
- " mov r1, #0x0\n"
- " ldsh r0, [r4, r1]\n"
- " cmp r0, r2\n"
- " ble ._293 @cond_branch\n"
- " strh r5, [r4]\n"
- "._293:\n"
- " mov r0, #0x1\n"
- "._292:\n"
- " pop {r4, r5}\n"
- " pop {r1}\n"
- " bx r1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8077E40()
-{
- asm(
- " push {r4, lr}\n"
- " add r4, r0, #0\n"
- " ldr r0, ._297 @ gMain\n"
- " ldrh r1, [r0, #0x2e]\n"
- " mov r0, #0x1\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " bne ._294 @cond_branch\n"
- " mov r0, #0x2\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq ._295 @cond_branch\n"
- "._294:\n"
- " bl CloseMenu\n"
- " mov r0, #0x1\n"
- " neg r0, r0\n"
- " b ._302\n"
- "._298:\n"
- " .align 2, 0\n"
- "._297:\n"
- " .word gMain\n"
- "._295:\n"
- " mov r0, #0x30\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq ._299 @cond_branch\n"
- " mov r0, #0x5\n"
- " bl PlaySE\n"
- " cmp r4, #0\n"
- " beq ._300 @cond_branch\n"
- " mov r0, #0x1\n"
- " bl DebugMenu_807786C\n"
- " mov r0, #0x0\n"
- " b ._302\n"
- "._300:\n"
- " mov r0, #0x0\n"
- " bl DebugMenu_807786C\n"
- " mov r0, #0x1\n"
- " b ._302\n"
- "._299:\n"
- " add r0, r4, #0\n"
- "._302:\n"
- " pop {r4}\n"
- " pop {r1}\n"
- " bx r1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
+ "\t.word\tgUnknown_030006BC \n"
+ "\t.word\tgUnknown_Debug_839BFE8\n");
+}
+#endif
+
+void debug_sub_8077CF4(u8 x, u8 y)
+{
+ DebugMenu_8077C3C(BuildDateTime, gStringVar4);
+ Menu_PrintText(gStringVar4, x, y);
+}
+
+void DebugMenu_8077D24(const struct MenuAction *menuAction, u8 width, u8 itemCount)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, width, 2 * itemCount + 1);
+ Menu_PrintItems(1, 1, itemCount, menuAction);
+ InitMenu(0, 1, 1, itemCount, 0, width - 1);
+}
+
+u8 DebugMenu_8077D78(const struct MenuAction *menuActions)
+{
+ s8 input = Menu_ProcessInput();
+ switch (input)
+ {
+ default:
+ Menu_EraseScreen();
+ gMenuCallback = menuActions[input].func;
+ return FALSE;
+ case -2:
+ return FALSE;
+ case -1:
+ CloseMenu();
+ return TRUE;
+ }
+}
+
+bool8 DebugMenu_8077DB4(void)
+{
+ if (gMain.newKeys & A_BUTTON)
+ {
+ CloseMenu();
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool32 DebugMenu_8077DD8(s16 * a0, s32 a1, s32 a2, u16 a3)
+{
+ if (a3 & DPAD_DOWN)
+ {
+ *a0 -= 1;
+ if (*a0 < a1)
+ *a0 = a2;
+ }
+ else if (a3 & DPAD_UP)
+ {
+ *a0 += 1;
+ if (*a0 > a2)
+ *a0 = a1;
+ }
+ else if (a3 & DPAD_LEFT)
+ {
+ *a0 -= 10;
+ if (*a0 < a1)
+ *a0 = a2;
+ }
+ else if (a3 & DPAD_RIGHT)
+ {
+ *a0 += 10;
+ if (*a0 > a2)
+ *a0 = a1;
+ }
+ else
+ return FALSE;
+ return TRUE;
+}
+
+int DebugMenu_8077E40(int flag)
+{
+ if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON)
+ {
+ CloseMenu();
+ return -1;
+ }
+ if (gMain.newKeys & (DPAD_LEFT | DPAD_RIGHT))
+ {
+ PlaySE(SE_SELECT);
+ if (flag)
+ {
+ DebugMenu_807786C(1);
+ return 0;
+ }
+ else
+ {
+ DebugMenu_807786C(0);
+ return 1;
+ }
+ }
+ return flag;
+}
+
u8 DebugMenu_MakeItems()
{
- asm(
- " push {lr}\n"
- " bl CloseMenu\n"
- " bl DebugMenu_8077EAC\n"
- " bl ScriptContext2_Enable\n"
- " mov r0, #0x1\n"
- " pop {r1}\n"
- " bx r1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8077EAC()
-{
- asm(
- " push {r4, lr}\n"
- " ldr r0, ._303 @ DebugMenu_8077F40\n"
- " mov r1, #0x50\n"
- " bl CreateTask\n"
- " add r4, r0, #0\n"
- " lsl r4, r4, #0x18\n"
- " lsr r4, r4, #0x18\n"
- " bl Menu_EraseScreen\n"
- " ldr r1, ._303 + 4 @ gTasks\n"
- " lsl r0, r4, #0x2\n"
- " add r0, r0, r4\n"
- " lsl r0, r0, #0x3\n"
- " add r0, r0, r1\n"
- " mov r1, #0x1\n"
- " strh r1, [r0, #0xa]\n"
- " strh r1, [r0, #0xc]\n"
- " pop {r4}\n"
- " pop {r0}\n"
- " bx r0\n"
- "._304:\n"
- " .align 2, 0\n"
- "._303:\n"
- " .word DebugMenu_8077F40+1\n"
- " .word gTasks\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8077EE0()
-{
- asm(
- " push {r4, r5, r6, lr}\n"
- " add r4, r0, #0\n"
- " add r6, r1, #0\n"
- " lsl r4, r4, #0x10\n"
- " lsr r4, r4, #0x10\n"
- " lsl r6, r6, #0x10\n"
- " lsr r6, r6, #0x10\n"
- " mov r0, #0x4\n"
- " mov r1, #0x11\n"
- " mov r2, #0x16\n"
- " mov r3, #0x12\n"
- " bl Menu_BlankWindowRect\n"
- " ldr r5, ._305 @ gStringVar1\n"
- " add r0, r5, #0\n"
- " add r1, r4, #0\n"
- " mov r2, #0x1\n"
- " mov r3, #0x3\n"
- " bl ConvertIntToDecimalStringN\n"
- " add r0, r5, #0\n"
- " mov r1, #0x4\n"
- " mov r2, #0x11\n"
- " bl Menu_PrintText\n"
- " add r0, r4, #0\n"
- " bl ItemId_GetName\n"
- " mov r1, #0x8\n"
- " mov r2, #0x11\n"
- " bl Menu_PrintText\n"
- " add r0, r5, #0\n"
- " add r1, r6, #0\n"
- " mov r2, #0x1\n"
- " mov r3, #0x3\n"
- " bl ConvertIntToDecimalStringN\n"
- " add r0, r5, #0\n"
- " mov r1, #0x12\n"
- " mov r2, #0x11\n"
- " bl Menu_PrintText\n"
- " pop {r4, r5, r6}\n"
- " pop {r0}\n"
- " bx r0\n"
- "._306:\n"
- " .align 2, 0\n"
- "._305:\n"
- " .word gStringVar1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8077F40()
-{
- asm(
- " push {r4, lr}\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x18\n"
- " lsl r4, r0, #0x2\n"
- " add r4, r4, r0\n"
- " lsl r4, r4, #0x3\n"
- " ldr r0, ._307 @ gTasks\n"
- " add r4, r4, r0\n"
- " bl Menu_DisplayDialogueFrame\n"
- " ldr r0, ._307 + 4 @ gDebug0x839C008\n"
- " mov r1, #0x2\n"
- " mov r2, #0xf\n"
- " bl Menu_PrintText\n"
- " ldrh r0, [r4, #0xa]\n"
- " ldrh r1, [r4, #0xc]\n"
- " bl DebugMenu_8077EE0\n"
- " ldr r0, ._307 + 8 @ DebugMenu_8077F7C\n"
- " str r0, [r4]\n"
- " pop {r4}\n"
- " pop {r0}\n"
- " bx r0\n"
- "._308:\n"
- " .align 2, 0\n"
- "._307:\n"
- " .word gTasks\n"
- " .word gDebug0x839C008\n"
- " .word DebugMenu_8077F7C+1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8077F7C()
-{
- asm(
- " push {r4, lr}\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x18\n"
- " lsl r1, r0, #0x2\n"
- " add r1, r1, r0\n"
- " lsl r1, r1, #0x3\n"
- " ldr r0, ._311 @ gTasks\n"
- " add r4, r1, r0\n"
- " ldr r3, ._311 + 4 @ gMain\n"
- " ldrh r1, [r3, #0x2e]\n"
- " mov r0, #0x1\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq ._309 @cond_branch\n"
- " bl Menu_DisplayDialogueFrame\n"
- " ldr r0, ._311 + 8 @ Str_839C014\n"
- " mov r1, #0x2\n"
- " mov r2, #0xf\n"
- " bl Menu_PrintText\n"
- " ldrh r0, [r4, #0xa]\n"
- " ldrh r1, [r4, #0xc]\n"
- " bl DebugMenu_8077EE0\n"
- " ldr r0, ._311 + 12 @ DebugMenu_8077FFC\n"
- " str r0, [r4]\n"
- " b ._317\n"
- "._312:\n"
- " .align 2, 0\n"
- "._311:\n"
- " .word gTasks\n"
- " .word gMain\n"
- " .word Str_839C014\n"
- " .word DebugMenu_8077FFC+1\n"
- "._309:\n"
- " mov r0, #0x2\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq ._313 @cond_branch\n"
- " ldr r0, ._315 @ DebugMenu_807806C\n"
- " str r0, [r4]\n"
- " b ._317\n"
- "._316:\n"
- " .align 2, 0\n"
- "._315:\n"
- " .word DebugMenu_807806C+1\n"
- "._313:\n"
- " add r0, r4, #0\n"
- " add r0, r0, #0xa\n"
- " mov r2, #0xae\n"
- " lsl r2, r2, #0x1\n"
- " ldrh r3, [r3, #0x30]\n"
- " mov r1, #0x1\n"
- " bl DebugMenu_8077DD8\n"
- " cmp r0, #0x1\n"
- " bne ._317 @cond_branch\n"
- " ldrh r0, [r4, #0xa]\n"
- " ldrh r1, [r4, #0xc]\n"
- " bl DebugMenu_8077EE0\n"
- "._317:\n"
- " pop {r4}\n"
- " pop {r0}\n"
- " bx r0\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8077FFC()
-{
- asm(
- " push {r4, lr}\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x18\n"
- " lsl r1, r0, #0x2\n"
- " add r1, r1, r0\n"
- " lsl r1, r1, #0x3\n"
- " ldr r0, ._321 @ gTasks\n"
- " add r4, r1, r0\n"
- " ldr r2, ._321 + 4 @ gMain\n"
- " ldrh r1, [r2, #0x2e]\n"
- " mov r0, #0x1\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq ._318 @cond_branch\n"
- " ldrh r0, [r4, #0xa]\n"
- " ldrh r1, [r4, #0xc]\n"
- " bl AddBagItem\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x18\n"
- " cmp r0, #0x1\n"
- " bne ._320 @cond_branch\n"
- " mov r0, #0x5\n"
- " bl PlaySE\n"
- " b ._320\n"
- "._322:\n"
- " .align 2, 0\n"
- "._321:\n"
- " .word gTasks\n"
- " .word gMain\n"
- "._318:\n"
- " mov r0, #0x2\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq ._323 @cond_branch\n"
- "._320:\n"
- " ldr r0, ._325 @ DebugMenu_8077F40\n"
- " str r0, [r4]\n"
- " b ._327\n"
- "._326:\n"
- " .align 2, 0\n"
- "._325:\n"
- " .word DebugMenu_8077F40+1\n"
- "._323:\n"
- " add r0, r4, #0\n"
- " add r0, r0, #0xc\n"
- " ldrh r3, [r2, #0x30]\n"
- " mov r1, #0x1\n"
- " mov r2, #0x63\n"
- " bl DebugMenu_8077DD8\n"
- " cmp r0, #0x1\n"
- " bne ._327 @cond_branch\n"
- " ldrh r0, [r4, #0xa]\n"
- " ldrh r1, [r4, #0xc]\n"
- " bl DebugMenu_8077EE0\n"
- "._327:\n"
- " pop {r4}\n"
- " pop {r0}\n"
- " bx r0\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_807806C()
-{
- asm(
- " push {r4, lr}\n"
- " add r4, r0, #0\n"
- " lsl r4, r4, #0x18\n"
- " lsr r4, r4, #0x18\n"
- " bl Menu_EraseScreen\n"
- " bl ScriptContext2_Disable\n"
- " add r0, r4, #0\n"
- " bl DestroyTask\n"
- " bl DebugMenu_8077048\n"
- " pop {r4}\n"
- " pop {r0}\n"
- " bx r0\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_807808C()
-{
- asm(
- " push {r4, r5, lr}\n"
- " add sp, sp, #0xfffffff4\n"
- " add r4, r0, #0\n"
- " sub r0, r4, #1\n"
- " cmp r0, #0xc\n"
- " bls ._328 @cond_branch\n"
- " mov r4, #0x1\n"
- "._328:\n"
- " lsl r1, r4, #0x5\n"
- " ldr r0, ._331 @ gSaveBlock1\n"
- " add r5, r1, r0\n"
- " bl Menu_EraseScreen\n"
- " mov r0, #0x0\n"
- " mov r1, #0x0\n"
- " mov r2, #0x13\n"
- " mov r3, #0x11\n"
- " bl Menu_DrawStdWindowFrame\n"
- " ldr r0, ._331 + 4 @ Str_839C01E\n"
- " mov r1, #0x2\n"
- " mov r2, #0x2\n"
- " bl Menu_PrintText\n"
- " mov r0, sp\n"
- " add r1, r4, #0\n"
- " mov r2, #0x1\n"
- " mov r3, #0x3\n"
- " bl ConvertIntToDecimalStringN\n"
- " mov r0, sp\n"
- " mov r1, #0xb\n"
- " mov r2, #0x2\n"
- " bl Menu_PrintText\n"
- " ldrh r1, [r5, #0x8]\n"
- " mov r0, sp\n"
- " mov r2, #0x1\n"
- " mov r3, #0x3\n"
- " bl ConvertIntToDecimalStringN\n"
- " mov r0, sp\n"
- " mov r1, #0xb\n"
- " mov r2, #0x4\n"
- " bl Menu_PrintText\n"
- " add r4, r5, #0\n"
- " add r4, r4, #0xb\n"
- " add r0, r4, #0\n"
- " bl StringLength\n"
- " lsl r0, r0, #0x10\n"
- " lsr r0, r0, #0x10\n"
- " cmp r0, #0xb\n"
- " bhi ._329 @cond_branch\n"
- " add r0, r4, #0\n"
- " mov r1, #0xb\n"
- " mov r2, #0x6\n"
- " bl Menu_PrintText\n"
- " b ._330\n"
- "._332:\n"
- " .align 2, 0\n"
- "._331:\n"
- " .word gSaveBlock1+0x2ddc\n"
- " .word Str_839C01E\n"
- "._329:\n"
- " ldr r0, ._335 @ Str_839C04D\n"
- " mov r1, #0xb\n"
- " mov r2, #0x6\n"
- " bl Menu_PrintText\n"
- "._330:\n"
- " add r4, r5, #0\n"
- " add r4, r4, #0x16\n"
- " add r0, r4, #0\n"
- " bl StringLength\n"
- " lsl r0, r0, #0x10\n"
- " lsr r0, r0, #0x10\n"
- " cmp r0, #0xb\n"
- " bhi ._333 @cond_branch\n"
- " add r0, r4, #0\n"
- " mov r1, #0xb\n"
- " mov r2, #0x8\n"
- " bl Menu_PrintText\n"
- " b ._334\n"
- "._336:\n"
- " .align 2, 0\n"
- "._335:\n"
- " .word Str_839C04D\n"
- "._333:\n"
- " ldr r0, ._337 @ Str_839C04D\n"
- " mov r1, #0xb\n"
- " mov r2, #0x8\n"
- " bl Menu_PrintText\n"
- "._334:\n"
- " ldrb r1, [r5, #0xa]\n"
- " mov r0, sp\n"
- " mov r2, #0x1\n"
- " mov r3, #0x3\n"
- " bl ConvertIntToDecimalStringN\n"
- " mov r0, sp\n"
- " mov r1, #0xb\n"
- " mov r2, #0xa\n"
- " bl Menu_PrintText\n"
- " ldr r1, [r5]\n"
- " mov r0, sp\n"
- " mov r2, #0x2\n"
- " mov r3, #0x8\n"
- " bl ConvertIntToHexStringN\n"
- " mov r0, sp\n"
- " mov r1, #0xb\n"
- " mov r2, #0xc\n"
- " bl Menu_PrintText\n"
- " add sp, sp, #0xc\n"
- " pop {r4, r5}\n"
- " pop {r0}\n"
- " bx r0\n"
- "._338:\n"
- " .align 2, 0\n"
- "._337:\n"
- " .word Str_839C04D\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_807817C()
-{
- asm(
- " push {r4, lr}\n"
- " lsl r0, r0, #0x18\n"
- " lsr r4, r0, #0x18\n"
- " ldr r0, ._340 @ gMain\n"
- " ldrh r1, [r0, #0x2e]\n"
- " mov r0, #0x1\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq ._339 @cond_branch\n"
- " bl Menu_EraseScreen\n"
- " add r0, r4, #0\n"
- " bl DestroyTask\n"
- " bl ScriptContext2_Disable\n"
- "._339:\n"
- " pop {r4}\n"
- " pop {r0}\n"
- " bx r0\n"
- "._341:\n"
- " .align 2, 0\n"
- "._340:\n"
- " .word gMain\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_80781A8()
-{
- asm(
- " push {r4, r5, lr}\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x18\n"
- " lsl r1, r0, #0x2\n"
- " add r1, r1, r0\n"
- " lsl r1, r1, #0x3\n"
- " ldr r0, ._344 @ gTasks\n"
- " add r5, r1, r0\n"
- " ldrh r1, [r5, #0x8]\n"
- " mov r2, #0x8\n"
- " ldsh r0, [r5, r2]\n"
- " cmp r0, #0\n"
- " bne ._342 @cond_branch\n"
- " add r0, r1, #1\n"
- " strh r0, [r5, #0x8]\n"
- " b ._343\n"
- "._345:\n"
- " .align 2, 0\n"
- "._344:\n"
- " .word gTasks\n"
- "._342:\n"
- " ldr r2, ._348 @ gMain\n"
- " ldrh r1, [r2, #0x2e]\n"
- " mov r0, #0x1\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq ._346 @cond_branch\n"
- " mov r1, #0x8\n"
- " ldsh r0, [r5, r1]\n"
- " bl DebugMenu_807808C\n"
- " ldr r0, ._348 + 4 @ DebugMenu_807817C\n"
- " str r0, [r5]\n"
- " b ._350\n"
- "._349:\n"
- " .align 2, 0\n"
- "._348:\n"
- " .word gMain\n"
- " .word DebugMenu_807817C+1\n"
- "._346:\n"
- " add r0, r5, #0\n"
- " add r0, r0, #0x8\n"
- " ldrh r1, [r2, #0x30]\n"
- " mov r3, #0xc0\n"
- " and r3, r3, r1\n"
- " mov r1, #0x1\n"
- " mov r2, #0xd\n"
- " bl DebugMenu_8077DD8\n"
- " cmp r0, #0\n"
- " beq ._350 @cond_branch\n"
- "._343:\n"
- " mov r0, #0x4\n"
- " mov r1, #0x11\n"
- " mov r2, #0x16\n"
- " mov r3, #0x12\n"
- " bl Menu_BlankWindowRect\n"
- " ldr r4, ._351 @ gStringVar1\n"
- " mov r2, #0x8\n"
- " ldsh r1, [r5, r2]\n"
- " add r0, r4, #0\n"
- " mov r2, #0x1\n"
- " mov r3, #0x3\n"
- " bl ConvertIntToDecimalStringN\n"
- " add r0, r4, #0\n"
- " mov r1, #0x4\n"
- " mov r2, #0x11\n"
- " bl Menu_PrintText\n"
- "._350:\n"
- " pop {r4, r5}\n"
- " pop {r0}\n"
- " bx r0\n"
- "._352:\n"
- " .align 2, 0\n"
- "._351:\n"
- " .word gStringVar1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-u8 DebugMenu_ViewPortraits()
-{
- asm(
- " push {lr}\n"
- " bl CloseMenu\n"
- " ldr r0, ._353 @ DebugMenu_80781A8\n"
- " mov r1, #0x50\n"
- " bl CreateTask\n"
- " bl ScriptContext2_Enable\n"
- " mov r0, #0x1\n"
- " pop {r1}\n"
- " bx r1\n"
- "._354:\n"
- " .align 2, 0\n"
- "._353:\n"
- " .word DebugMenu_80781A8+1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8078254()
-{
- asm(
- " push {lr}\n"
- " bl DebugMenu_807808C\n"
- " pop {r0}\n"
- " bx r0\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-u8 DebugMenu_AllBadges()
-{
- asm(
- " push {lr}\n"
- " ldr r0, ._355 @ 0x807\n"
- " bl FlagSet\n"
- " ldr r0, ._355 + 4 @ 0x808\n"
- " bl FlagSet\n"
- " ldr r0, ._355 + 8 @ 0x809\n"
- " bl FlagSet\n"
- " ldr r0, ._355 + 12 @ 0x80a\n"
- " bl FlagSet\n"
- " ldr r0, ._355 + 16 @ 0x80b\n"
- " bl FlagSet\n"
- " ldr r0, ._355 + 20 @ 0x80c\n"
- " bl FlagSet\n"
- " ldr r0, ._355 + 24 @ 0x80d\n"
- " bl FlagSet\n"
- " ldr r0, ._355 + 28 @ 0x80e\n"
- " bl FlagSet\n"
- " bl CloseMenu\n"
- " mov r0, #0x1\n"
- " pop {r1}\n"
- " bx r1\n"
- "._356:\n"
- " .align 2, 0\n"
- "._355:\n"
- " .word 0x807\n"
- " .word 0x808\n"
- " .word 0x809\n"
- " .word 0x80a\n"
- " .word 0x80b\n"
- " .word 0x80c\n"
- " .word 0x80d\n"
- " .word 0x80e\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-u8 DebugMenu_TimeRecords()
-{
- asm(
- " push {lr}\n"
- " bl CloseMenu\n"
- " ldr r0, ._357 @ debug_sub_806F9E4\n"
- " mov r1, #0x50\n"
- " bl CreateTask\n"
- " bl ScriptContext2_Enable\n"
- " mov r0, #0x1\n"
- " pop {r1}\n"
- " bx r1\n"
- "._358:\n"
- " .align 2, 0\n"
- "._357:\n"
- " .word debug_sub_806F9E4+1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-u8 DebugMenu_SetTime()
-{
- asm(
- " push {lr}\n"
- " bl CloseMenu\n"
- " bl debug_sub_806F99C\n"
- " bl ScriptContext2_Enable\n"
- " mov r0, #0x1\n"
- " pop {r1}\n"
- " bx r1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_80782EC()
-{
- asm(
- " push {lr}\n"
- " add r1, r0, #0\n"
- " lsl r1, r1, #0x10\n"
- " lsr r1, r1, #0x10\n"
- " ldr r0, ._359 @ gStringVar1\n"
- " mov r2, #0x0\n"
- " mov r3, #0x4\n"
- " bl ConvertIntToHexStringN\n"
- " ldr r0, ._359 + 4 @ Str_839C053\n"
- " bl sub_8071F40\n"
- " pop {r0}\n"
- " bx r0\n"
- "._360:\n"
- " .align 2, 0\n"
- "._359:\n"
- " .word gStringVar1\n"
- " .word Str_839C053\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8078310()
-{
- asm(
- " push {r4, r5, lr}\n"
- " lsl r0, r0, #0x18\n"
- " lsr r5, r0, #0x18\n"
- " lsl r0, r5, #0x2\n"
- " add r0, r0, r5\n"
- " lsl r0, r0, #0x3\n"
- " ldr r1, ._364 @ gTasks\n"
- " add r4, r0, r1\n"
- " mov r1, #0x0\n"
- " ldsh r0, [r4, r1]\n"
- " cmp r0, #0\n"
- " beq ._361 @cond_branch\n"
- " cmp r0, #0x1\n"
- " beq ._362 @cond_branch\n"
- " b ._375\n"
- "._365:\n"
- " .align 2, 0\n"
- "._364:\n"
- " .word gTasks+0x8\n"
- "._361:\n"
- " ldr r0, ._367 @ 0x4024\n"
- " bl VarGet\n"
- " strh r0, [r4, #0x2]\n"
- " ldrh r0, [r4, #0x2]\n"
- " bl DebugMenu_80782EC\n"
- " ldrh r0, [r4]\n"
- " add r0, r0, #0x1\n"
- " strh r0, [r4]\n"
- " b ._375\n"
- "._368:\n"
- " .align 2, 0\n"
- "._367:\n"
- " .word 0x4024\n"
- "._362:\n"
- " ldr r3, ._371 @ gMain\n"
- " ldrh r1, [r3, #0x2e]\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq ._369 @cond_branch\n"
- " mov r0, #0x49\n"
- " bl PlaySE\n"
- " ldr r0, ._371 + 4 @ 0x4024\n"
- " bl GetVarPointer\n"
- " ldrh r1, [r4, #0x2]\n"
- " strh r1, [r0]\n"
- " b ._370\n"
- "._372:\n"
- " .align 2, 0\n"
- "._371:\n"
- " .word gMain\n"
- " .word 0x4024\n"
- "._369:\n"
- " mov r0, #0x2\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq ._373 @cond_branch\n"
- "._370:\n"
- " bl Menu_EraseScreen\n"
- " add r0, r5, #0\n"
- " bl DestroyTask\n"
- " bl ScriptContext2_Disable\n"
- " b ._375\n"
- "._373:\n"
- " add r0, r4, #2\n"
- " ldr r2, ._376 @ 0xffff\n"
- " ldrh r3, [r3, #0x30]\n"
- " mov r1, #0x0\n"
- " bl DebugMenu_8077DD8\n"
- " cmp r0, #0x1\n"
- " bne ._375 @cond_branch\n"
- " ldrh r0, [r4, #0x2]\n"
- " bl DebugMenu_80782EC\n"
- "._375:\n"
- " pop {r4, r5}\n"
- " pop {r0}\n"
- " bx r0\n"
- "._377:\n"
- " .align 2, 0\n"
- "._376:\n"
- " .word 0xffff\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-u8 DebugMenu_MiragaIslandRND()
-{
- asm(
- " push {lr}\n"
- " bl CloseMenu\n"
- " ldr r0, ._378 @ DebugMenu_8078310\n"
- " mov r1, #0x50\n"
- " bl CreateTask\n"
- " bl ScriptContext2_Enable\n"
- " mov r0, #0x1\n"
- " pop {r1}\n"
- " bx r1\n"
- "._379:\n"
- " .align 2, 0\n"
- "._378:\n"
- " .word DebugMenu_8078310+1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_80783C8()
-{
- asm(
- " push {r4, lr}\n"
- " ldr r0, ._383 @ gMain\n"
- " ldrh r1, [r0, #0x2e]\n"
- " mov r0, #0x30\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq ._382 @cond_branch\n"
- " mov r0, #0x5\n"
- " bl PlaySE\n"
- " ldr r4, ._383 + 4 @ 0x804\n"
- " add r0, r4, #0\n"
- " bl FlagGet\n"
- " lsl r0, r0, #0x18\n"
- " cmp r0, #0\n"
- " bne ._381 @cond_branch\n"
- " add r0, r4, #0\n"
- " bl FlagSet\n"
- " mov r0, #0x0\n"
- " bl DebugMenu_807786C\n"
- " b ._382\n"
- "._384:\n"
- " .align 2, 0\n"
- "._383:\n"
- " .word gMain\n"
- " .word 0x804\n"
- "._381:\n"
- " add r0, r4, #0\n"
- " bl FlagClear\n"
- " mov r0, #0x1\n"
- " bl DebugMenu_807786C\n"
- "._382:\n"
- " ldr r0, ._388 @ gMain\n"
- " ldrh r1, [r0, #0x2e]\n"
- " mov r0, #0x1\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " bne ._385 @cond_branch\n"
- " mov r0, #0x2\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq ._386 @cond_branch\n"
- "._385:\n"
- " bl CloseMenu\n"
- " mov r0, #0x1\n"
- " b ._387\n"
- "._389:\n"
- " .align 2, 0\n"
- "._388:\n"
- " .word gMain\n"
- "._386:\n"
- " mov r0, #0x0\n"
- "._387:\n"
- " pop {r4}\n"
- " pop {r1}\n"
- " bx r1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-u8 DebugMenu_ToggleClearFlag()
-{
- asm(
- " push {lr}\n"
- " bl Menu_EraseScreen\n"
- " ldr r0, ._390 @ 0x804\n"
- " bl FlagGet\n"
- " mov r1, #0x1\n"
- " eor r0, r0, r1\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x18\n"
- " bl DebugMenu_807786C\n"
- " ldr r1, ._390 + 4 @ gMenuCallback\n"
- " ldr r0, ._390 + 8 @ DebugMenu_80783C8\n"
- " str r0, [r1]\n"
- " mov r0, #0x0\n"
- " pop {r1}\n"
- " bx r1\n"
- "._391:\n"
- " .align 2, 0\n"
- "._390:\n"
- " .word 0x804\n"
- " .word gMenuCallback\n"
- " .word DebugMenu_80783C8+1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8078464()
-{
- asm(
- " push {r4, lr}\n"
- " ldr r4, ._396 @ 0x82a\n"
- " add r0, r4, #0\n"
- " bl FlagGet\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x18\n"
- " bl DebugMenu_8077E40\n"
- " add r1, r0, #0\n"
- " cmp r1, #0\n"
- " beq ._392 @cond_branch\n"
- " cmp r1, #0\n"
- " bgt ._393 @cond_branch\n"
- " mov r0, #0x1\n"
- " neg r0, r0\n"
- " cmp r1, r0\n"
- " beq ._394 @cond_branch\n"
- " b ._401\n"
- "._397:\n"
- " .align 2, 0\n"
- "._396:\n"
- " .word 0x82a\n"
- "._393:\n"
- " cmp r1, #0x1\n"
- " beq ._398 @cond_branch\n"
- " b ._401\n"
- "._392:\n"
- " add r0, r4, #0\n"
- " bl FlagClear\n"
- " b ._401\n"
- "._398:\n"
- " add r0, r4, #0\n"
- " bl FlagSet\n"
- " b ._401\n"
- "._394:\n"
- " mov r0, #0x1\n"
- " b ._402\n"
- "._401:\n"
- " mov r0, #0x0\n"
- "._402:\n"
- " pop {r4}\n"
- " pop {r1}\n"
- " bx r1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-u8 DebugMenu_OpenWeatherEvents()
-{
- asm(
- " push {lr}\n"
- " bl Menu_EraseScreen\n"
- " ldr r0, ._404 @ 0x82a\n"
- " bl FlagGet\n"
- " mov r1, #0x0\n"
- " lsl r0, r0, #0x18\n"
- " cmp r0, #0\n"
- " bne ._403 @cond_branch\n"
- " mov r1, #0x1\n"
- "._403:\n"
- " add r0, r1, #0\n"
- " bl DebugMenu_807786C\n"
- " ldr r1, ._404 + 4 @ gMenuCallback\n"
- " ldr r0, ._404 + 8 @ DebugMenu_8078464\n"
- " str r0, [r1]\n"
- " mov r0, #0x0\n"
- " pop {r1}\n"
- " bx r1\n"
- "._405:\n"
- " .align 2, 0\n"
- "._404:\n"
- " .word 0x82a\n"
- " .word gMenuCallback\n"
- " .word DebugMenu_8078464+1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_80784E8()
-{
- asm(
- " push {lr}\n"
- " bl IsMysteryGiftEnabled\n"
- " bl DebugMenu_8077E40\n"
- " add r1, r0, #0\n"
- " cmp r1, #0\n"
- " beq ._406 @cond_branch\n"
- " cmp r1, #0\n"
- " bgt ._407 @cond_branch\n"
- " mov r0, #0x1\n"
- " neg r0, r0\n"
- " cmp r1, r0\n"
- " beq ._408 @cond_branch\n"
- " b ._413\n"
- "._407:\n"
- " cmp r1, #0x1\n"
- " beq ._410 @cond_branch\n"
- " b ._413\n"
- "._406:\n"
- " bl DisableMysteryGift\n"
- " b ._413\n"
- "._410:\n"
- " bl EnableMysteryGift\n"
- " b ._413\n"
- "._408:\n"
- " mov r0, #0x1\n"
- " b ._414\n"
- "._413:\n"
- " mov r0, #0x0\n"
- "._414:\n"
- " pop {r1}\n"
- " bx r1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-u8 DebugMenu_OpenMysteryEvent()
-{
- asm(
- " push {lr}\n"
- " bl Menu_EraseScreen\n"
- " bl IsMysteryGiftEnabled\n"
- " mov r1, #0x0\n"
- " cmp r0, #0\n"
- " bne ._415 @cond_branch\n"
- " mov r1, #0x1\n"
- "._415:\n"
- " add r0, r1, #0\n"
- " bl DebugMenu_807786C\n"
- " ldr r1, ._416 @ gMenuCallback\n"
- " ldr r0, ._416 + 4 @ DebugMenu_80784E8\n"
- " str r0, [r1]\n"
- " mov r0, #0x0\n"
- " pop {r1}\n"
- " bx r1\n"
- "._417:\n"
- " .align 2, 0\n"
- "._416:\n"
- " .word gMenuCallback\n"
- " .word DebugMenu_80784E8+1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8078550()
-{
- asm(
- " push {r4, r5, r6, r7, lr}\n"
- " lsl r0, r0, #0x10\n"
- " lsr r6, r0, #0x10\n"
- " lsl r0, r6, #0x18\n"
- " lsr r0, r0, #0x18\n"
- " bl GetGameStat\n"
- " add r7, r0, #0\n"
- " ldr r0, ._420 @ gStringVar1\n"
- " add r1, r6, #0\n"
- " mov r2, #0x2\n"
- " mov r3, #0x2\n"
- " bl ConvertIntToDecimalStringN\n"
- " ldr r0, ._420 + 4 @ gStringVar2\n"
- " ldr r5, ._420 + 8 @ gUnknown_Debug_839C26C\n"
- " lsl r4, r6, #0x3\n"
- " add r1, r5, #4\n"
- " add r1, r4, r1\n"
- " ldr r1, [r1]\n"
- " bl StringCopy\n"
- " add r4, r4, r5\n"
- " ldr r0, [r4]\n"
- " cmp r0, #0\n"
- " bne ._418 @cond_branch\n"
- " ldr r0, ._420 + 12 @ gStringVar3\n"
- " ldr r1, ._420 + 16 @ Str_839C085\n"
- " bl StringCopy\n"
- " b ._423\n"
- "._421:\n"
- " .align 2, 0\n"
- "._420:\n"
- " .word gStringVar1\n"
- " .word gStringVar2\n"
- " .word gUnknown_Debug_839C26C\n"
- " .word gStringVar3\n"
- " .word Str_839C085\n"
- "._418:\n"
- " cmp r6, #0x1\n"
- " beq ._422 @cond_branch\n"
- " ldr r0, ._424 @ gStringVar3\n"
- " add r1, r7, #0\n"
- " mov r2, #0x1\n"
- " mov r3, #0xa\n"
- " bl ConvertIntToDecimalStringN\n"
- " b ._423\n"
- "._425:\n"
- " .align 2, 0\n"
- "._424:\n"
- " .word gStringVar3\n"
- "._422:\n"
- " ldr r4, ._426 @ gStringVar3\n"
- " lsr r1, r7, #0x10\n"
- " add r0, r4, #0\n"
- " mov r2, #0x1\n"
- " mov r3, #0x3\n"
- " bl ConvertIntToDecimalStringN\n"
- " mov r6, #0xf0\n"
- " strb r6, [r4, #0x3]\n"
- " add r0, r4, #4\n"
- " lsr r1, r7, #0x8\n"
- " mov r5, #0xff\n"
- " and r1, r1, r5\n"
- " mov r2, #0x2\n"
- " mov r3, #0x2\n"
- " bl ConvertIntToDecimalStringN\n"
- " strb r6, [r4, #0x6]\n"
- " add r4, r4, #0x7\n"
- " and r7, r7, r5\n"
- " add r0, r4, #0\n"
- " add r1, r7, #0\n"
- " mov r2, #0x2\n"
- " mov r3, #0x2\n"
- " bl ConvertIntToDecimalStringN\n"
- "._423:\n"
- " bl Menu_DisplayDialogueFrame\n"
- " ldr r0, ._426 + 4 @ Str_839C07C\n"
- " mov r1, #0x2\n"
- " mov r2, #0xf\n"
- " bl Menu_PrintText\n"
- " pop {r4, r5, r6, r7}\n"
- " pop {r0}\n"
- " bx r0\n"
- "._427:\n"
- " .align 2, 0\n"
- "._426:\n"
- " .word gStringVar3\n"
- " .word Str_839C07C\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_807860C()
-{
- asm(
- " push {r4, r5, lr}\n"
- " lsl r0, r0, #0x18\n"
- " lsr r5, r0, #0x18\n"
- " lsl r0, r5, #0x2\n"
- " add r0, r0, r5\n"
- " lsl r0, r0, #0x3\n"
- " ldr r1, ._432 @ gTasks\n"
- " add r4, r0, r1\n"
- " mov r1, #0x0\n"
- " ldsh r0, [r4, r1]\n"
- " cmp r0, #0x1\n"
- " beq ._428 @cond_branch\n"
- " cmp r0, #0x1\n"
- " bgt ._429 @cond_branch\n"
- " cmp r0, #0\n"
- " beq ._430 @cond_branch\n"
- " b ._447\n"
- "._433:\n"
- " .align 2, 0\n"
- "._432:\n"
- " .word gTasks+0x8\n"
- "._429:\n"
- " cmp r0, #0x2\n"
- " beq ._434 @cond_branch\n"
- " b ._447\n"
- "._430:\n"
- " ldrh r0, [r4, #0x2]\n"
- " bl DebugMenu_8078550\n"
- "._441:\n"
- " ldrh r0, [r4]\n"
- " add r0, r0, #0x1\n"
- " strh r0, [r4]\n"
- " b ._447\n"
- "._428:\n"
- " ldr r3, ._439 @ gMain\n"
- " ldrh r1, [r3, #0x2e]\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq ._437 @cond_branch\n"
- " ldrh r0, [r4]\n"
- " sub r0, r0, #0x1\n"
- " strh r0, [r4]\n"
- " mov r0, #0x1\n"
- " b ._438\n"
- "._440:\n"
- " .align 2, 0\n"
- "._439:\n"
- " .word gMain\n"
- "._437:\n"
- " mov r0, #0x2\n"
- " and r0, r0, r1\n"
- " lsl r0, r0, #0x10\n"
- " lsr r2, r0, #0x10\n"
- " cmp r2, #0\n"
- " bne ._441 @cond_branch\n"
- " ldrh r1, [r3, #0x30]\n"
- " mov r0, #0x40\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq ._442 @cond_branch\n"
- " ldrh r0, [r4, #0x2]\n"
- " add r0, r0, #0x1\n"
- " strh r0, [r4, #0x2]\n"
- " lsl r0, r0, #0x10\n"
- " asr r0, r0, #0x10\n"
- " cmp r0, #0x32\n"
- " bne ._446 @cond_branch\n"
- " strh r2, [r4, #0x2]\n"
- " b ._446\n"
- "._442:\n"
- " mov r0, #0x80\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq ._447 @cond_branch\n"
- " ldrh r0, [r4, #0x2]\n"
- " sub r0, r0, #0x1\n"
- " strh r0, [r4, #0x2]\n"
- " lsl r0, r0, #0x10\n"
- " cmp r0, #0\n"
- " bge ._446 @cond_branch\n"
- " mov r0, #0x31\n"
- " strh r0, [r4, #0x2]\n"
- "._446:\n"
- " ldrh r0, [r4, #0x2]\n"
- " bl DebugMenu_8078550\n"
- " b ._447\n"
- "._434:\n"
- " bl Menu_EraseScreen\n"
- " bl ScriptContext2_Disable\n"
- " add r0, r5, #0\n"
- " bl DestroyTask\n"
- "._447:\n"
- " mov r0, #0x0\n"
- "._438:\n"
- " pop {r4, r5}\n"
- " pop {r1}\n"
- " bx r1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_80786C0()
-{
- asm(
- " push {lr}\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x18\n"
- " bl DebugMenu_807860C\n"
- " pop {r0}\n"
- " bx r0\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_80786D0()
-{
- asm(
- " push {r4, lr}\n"
- " lsl r0, r0, #0x18\n"
- " lsr r4, r0, #0x18\n"
- " add r0, r4, #0\n"
- " bl DebugMenu_807860C\n"
- " cmp r0, #0\n"
- " beq ._449 @cond_branch\n"
- " ldr r1, ._450 @ gTasks\n"
- " lsl r0, r4, #0x2\n"
- " add r0, r0, r4\n"
- " lsl r0, r0, #0x3\n"
- " add r0, r0, r1\n"
- " ldrb r2, [r0, #0xa]\n"
- " ldr r1, ._450 + 4 @ gUnknown_Debug_839C26C\n"
- " lsl r0, r2, #0x3\n"
- " add r0, r0, r1\n"
- " ldr r0, [r0]\n"
- " cmp r0, #0\n"
- " beq ._449 @cond_branch\n"
- " sub r1, r0, #1\n"
- " add r0, r2, #0\n"
- " bl SetGameStat\n"
- " mov r0, #0x15\n"
- " bl PlaySE\n"
- "._449:\n"
- " pop {r4}\n"
- " pop {r0}\n"
- " bx r0\n"
- "._451:\n"
- " .align 2, 0\n"
- "._450:\n"
- " .word gTasks\n"
- " .word gUnknown_Debug_839C26C\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8078714()
-{
- asm(
- " push {r4, lr}\n"
- " lsl r0, r0, #0x18\n"
- " lsr r4, r0, #0x18\n"
- " add r0, r4, #0\n"
- " bl DebugMenu_807860C\n"
- " cmp r0, #0\n"
- " beq ._453 @cond_branch\n"
- " ldr r1, ._454 @ gTasks\n"
- " lsl r0, r4, #0x2\n"
- " add r0, r0, r4\n"
- " lsl r0, r0, #0x3\n"
- " add r0, r0, r1\n"
- " ldrb r2, [r0, #0xa]\n"
- " ldr r1, ._454 + 4 @ gUnknown_Debug_839C26C\n"
- " lsl r0, r2, #0x3\n"
- " add r0, r0, r1\n"
- " ldr r0, [r0]\n"
- " cmp r0, #0\n"
- " beq ._453 @cond_branch\n"
- " add r0, r2, #0\n"
- " mov r1, #0x0\n"
- " bl SetGameStat\n"
- " mov r0, #0x15\n"
- " bl PlaySE\n"
- "._453:\n"
- " pop {r4}\n"
- " pop {r0}\n"
- " bx r0\n"
- "._455:\n"
- " .align 2, 0\n"
- "._454:\n"
- " .word gTasks\n"
- " .word gUnknown_Debug_839C26C\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8078758()
-{
- asm(
- " push {r4, lr}\n"
- " add r4, r0, #0\n"
- " bl CloseMenu\n"
- " bl ScriptContext2_Enable\n"
- " add r0, r4, #0\n"
- " mov r1, #0x50\n"
- " bl CreateTask\n"
- " mov r0, #0x1\n"
- " pop {r4}\n"
- " pop {r1}\n"
- " bx r1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8078774()
-{
- asm(
- " push {lr}\n"
- " ldr r0, ._456 @ DebugMenu_80786C0\n"
- " bl DebugMenu_8078758\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x18\n"
- " pop {r1}\n"
- " bx r1\n"
- "._457:\n"
- " .align 2, 0\n"
- "._456:\n"
- " .word DebugMenu_80786C0+1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8078788()
-{
- asm(
- " push {lr}\n"
- " ldr r0, ._458 @ DebugMenu_80786D0\n"
- " bl DebugMenu_8078758\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x18\n"
- " pop {r1}\n"
- " bx r1\n"
- "._459:\n"
- " .align 2, 0\n"
- "._458:\n"
- " .word DebugMenu_80786D0+1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_807879C()
-{
- asm(
- " push {lr}\n"
- " ldr r0, ._460 @ DebugMenu_8078714\n"
- " bl DebugMenu_8078758\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x18\n"
- " pop {r1}\n"
- " bx r1\n"
- "._461:\n"
- " .align 2, 0\n"
- "._460:\n"
- " .word DebugMenu_8078714+1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_80787B0()
-{
- asm(
- " push {lr}\n"
- " ldr r0, ._462 @ gUnknown_Debug_839C3FC\n"
- " bl DebugMenu_8077D78\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x18\n"
- " pop {r1}\n"
- " bx r1\n"
- "._463:\n"
- " .align 2, 0\n"
- "._462:\n"
- " .word gUnknown_Debug_839C3FC\n"
- "\n"
- );
-}
-
-__attribute__((naked))
+ CloseMenu();
+ DebugMenu_8077EAC();
+ ScriptContext2_Enable();
+ return TRUE;
+}
+
+void DebugMenu_8077EAC(void)
+{
+ u8 taskId = CreateTask(DebugMenu_8077F40, 80);
+ Menu_EraseScreen();
+ gTasks[taskId].data[1] = 1;
+ gTasks[taskId].data[2] = 1;
+}
+
+void DebugMenu_8077EE0(u16 itemId, u16 quantity)
+{
+ Menu_BlankWindowRect(4, 17, 22, 18);
+ ConvertIntToDecimalStringN(gStringVar1, itemId, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ Menu_PrintText(gStringVar1, 4, 17);
+ Menu_PrintText(ItemId_GetName(itemId), 8, 17);
+ ConvertIntToDecimalStringN(gStringVar1, quantity, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ Menu_PrintText(gStringVar1, 18, 17);
+}
+
+const u8 gDebug0x839C008[] = _("Which item?");
+
+void DebugMenu_8077F40(u8 taskId)
+{
+ struct Task *task = gTasks + taskId;
+ Menu_DisplayDialogueFrame();
+ Menu_PrintText(gDebug0x839C008, 2, 15);
+ DebugMenu_8077EE0(task->data[1], task->data[2]);
+ task->func = DebugMenu_8077F7C;
+}
+
+const u8 Str_839C014[] = _("How many?");
+
+void DebugMenu_8077F7C(u8 taskId)
+{
+ struct Task *task = gTasks + taskId;
+ if (gMain.newKeys & A_BUTTON)
+ {
+ Menu_DisplayDialogueFrame();
+ Menu_PrintText(Str_839C014, 2, 15);
+ DebugMenu_8077EE0(task->data[1], task->data[2]);
+ task->func = DebugMenu_8077FFC;
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ task->func = DebugMenu_807806C;
+ }
+ else if (DebugMenu_8077DD8(task->data + 1, 1, ITEM_15C, gMain.newAndRepeatedKeys) == TRUE)
+ {
+ DebugMenu_8077EE0(task->data[1], task->data[2]);
+ }
+}
+
+void DebugMenu_8077FFC(u8 taskId)
+{
+ struct Task *task = gTasks + taskId;
+ if (gMain.newKeys & A_BUTTON)
+ {
+ if (AddBagItem(task->data[1], task->data[2]) == TRUE)
+ PlaySE(SE_SELECT);
+ task->func = DebugMenu_8077F40;
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ task->func = DebugMenu_8077F40;
+ }
+ else if (DebugMenu_8077DD8(task->data + 2, 1, 99, gMain.newAndRepeatedKeys) == TRUE)
+ {
+ DebugMenu_8077EE0(task->data[1], task->data[2]);
+ }
+}
+
+void DebugMenu_807806C(u8 taskId)
+{
+ Menu_EraseScreen();
+ ScriptContext2_Disable();
+ DestroyTask(taskId);
+ DebugMenu_8077048();
+}
+
+const u8 Str_839C01E[] = _("にがおえ ばんごう\n"
+ "ポケモンナンバー\n"
+ "ポケモンめい\n"
+ "ブリーダーめい\n"
+ "しゅるい\n"
+ "こせいらんすう");
+const u8 Str_839C04D[] = _("データなし");
+
+void DebugMenu_807808C(u32 a0)
+{
+ u8 strbuf[11];
+ struct ContestWinner *winner;
+
+ if (a0 == 0 || a0 > 13)
+ a0 = 1;
+ winner = gSaveBlock1.contestWinners + a0 - 1;
+
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 19, 17);
+ Menu_PrintText(Str_839C01E, 2, 2);
+
+ ConvertIntToDecimalStringN(strbuf, a0, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ Menu_PrintText(strbuf, 11, 2);
+
+ ConvertIntToDecimalStringN(strbuf, winner->species, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ Menu_PrintText(strbuf, 11, 4);
+
+ if (StringLength(winner->nickname) <= 11)
+ Menu_PrintText(winner->nickname, 11, 6);
+ else
+ Menu_PrintText(Str_839C04D, 11, 6);
+
+ if (StringLength(winner->trainerName) <= 11)
+ Menu_PrintText(winner->trainerName, 11, 8);
+ else
+ Menu_PrintText(Str_839C04D, 11, 8);
+
+ ConvertIntToDecimalStringN(strbuf, winner->contestCategory, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ Menu_PrintText(strbuf, 11, 10);
+
+ ConvertIntToHexStringN(strbuf, winner->personality, STR_CONV_MODE_LEADING_ZEROS, 8);
+ Menu_PrintText(strbuf, 11, 12);
+}
+
+void DebugMenu_807817C(u8 taskId)
+{
+ if (gMain.newKeys & A_BUTTON)
+ {
+ Menu_EraseScreen();
+ DestroyTask(taskId);
+ ScriptContext2_Disable();
+ }
+}
+
+void DebugMenu_80781A8(u8 taskId)
+{
+ struct Task *task = gTasks + taskId;
+
+ if (task->data[0] == 0)
+ task->data[0]++;
+ else if (gMain.newKeys & A_BUTTON)
+ {
+ DebugMenu_807808C(task->data[0]);
+ task->func = DebugMenu_807817C;
+ return;
+ }
+ else if (!DebugMenu_8077DD8(task->data + 0, 1, 13, gMain.newAndRepeatedKeys & (DPAD_UP | DPAD_DOWN)))
+ return;
+ Menu_BlankWindowRect(4, 17, 22, 18);
+ ConvertIntToDecimalStringN(gStringVar1, task->data[0], STR_CONV_MODE_RIGHT_ALIGN, 3);
+ Menu_PrintText(gStringVar1, 4, 17);
+}
+
+u8 DebugMenu_ViewPortraits(void)
+{
+ CloseMenu();
+ CreateTask(DebugMenu_80781A8, 80);
+ ScriptContext2_Enable();
+ return TRUE;
+}
+
+void DebugMenu_8078254(u32 a0)
+{
+ DebugMenu_807808C(a0);
+}
+
+u8 DebugMenu_AllBadges(void)
+{
+ FlagSet(FLAG_BADGE01_GET);
+ FlagSet(FLAG_BADGE02_GET);
+ FlagSet(FLAG_BADGE03_GET);
+ FlagSet(FLAG_BADGE04_GET);
+ FlagSet(FLAG_BADGE05_GET);
+ FlagSet(FLAG_BADGE06_GET);
+ FlagSet(FLAG_BADGE07_GET);
+ FlagSet(FLAG_BADGE08_GET);
+ CloseMenu();
+ return TRUE;
+}
+
+u8 DebugMenu_TimeRecords(void)
+{
+ CloseMenu();
+ CreateTask(debug_sub_806F9E4, 80);
+ ScriptContext2_Enable();
+ return TRUE;
+}
+
+u8 DebugMenu_SetTime(void)
+{
+ CloseMenu();
+ debug_sub_806F99C();
+ ScriptContext2_Enable();
+ return TRUE;
+}
+
+const u8 Str_839C053[] = _("Miracle Island emerged\n"
+ "Random numbers:{STR_VAR_1}");
+
+void DebugMenu_80782EC(u16 rnums)
+{
+ ConvertIntToHexStringN(gStringVar1, rnums, STR_CONV_MODE_LEFT_ALIGN, 4);
+ sub_8071F40(Str_839C053);
+}
+
+void DebugMenu_8078310(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ switch (data[0])
+ {
+ case 0:
+ data[1] = VarGet(VAR_MIRAGE_RND_H);
+ DebugMenu_80782EC(data[1]);
+ data[0]++;
+ break;
+ case 1:
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_PINPON);
+ *GetVarPointer(VAR_MIRAGE_RND_H) = data[1];
+ Menu_EraseScreen();
+ DestroyTask(taskId);
+ ScriptContext2_Disable();
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ Menu_EraseScreen();
+ DestroyTask(taskId);
+ ScriptContext2_Disable();
+ }
+ else if (DebugMenu_8077DD8(data + 1, 0, 0xFFFF, gMain.newAndRepeatedKeys) == TRUE)
+ DebugMenu_80782EC(data[1]);
+ break;
+ }
+}
+
+u8 DebugMenu_MiragaIslandRND(void)
+{
+ CloseMenu();
+ CreateTask(DebugMenu_8078310, 80);
+ ScriptContext2_Enable();
+ return TRUE;
+}
+
+bool8 DebugMenu_80783C8(void)
+{
+ if (gMain.newKeys & (DPAD_LEFT | DPAD_RIGHT))
+ {
+ PlaySE(SE_SELECT);
+ if (!FlagGet(FLAG_SYS_GAME_CLEAR))
+ {
+ FlagSet(FLAG_SYS_GAME_CLEAR);
+ DebugMenu_807786C(0);
+ }
+ else
+ {
+ FlagClear(FLAG_SYS_GAME_CLEAR);
+ DebugMenu_807786C(1);
+ }
+ }
+ if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON)
+ {
+ CloseMenu();
+ return TRUE;
+ }
+ return FALSE;
+}
+
+u8 DebugMenu_ToggleClearFlag(void)
+{
+ Menu_EraseScreen();
+ DebugMenu_807786C(FlagGet(FLAG_SYS_GAME_CLEAR) ^ 1);
+ gMenuCallback = DebugMenu_80783C8;
+ return FALSE;
+}
+
+bool8 DebugMenu_8078464(void)
+{
+ switch (DebugMenu_8077E40(FlagGet(FLAG_SYS_WEATHER_CTRL)))
+ {
+ case 0:
+ FlagClear(FLAG_SYS_WEATHER_CTRL);
+ return FALSE;
+ case 1:
+ FlagSet(FLAG_SYS_WEATHER_CTRL);
+ return FALSE;
+ case -1:
+ return TRUE;
+ }
+ return FALSE;
+}
+
+u8 DebugMenu_OpenWeatherEvents(void)
+{
+ Menu_EraseScreen();
+ DebugMenu_807786C(FlagGet(FLAG_SYS_WEATHER_CTRL) ? FALSE : TRUE);
+ gMenuCallback = DebugMenu_8078464;
+ return FALSE;
+}
+
+bool8 DebugMenu_80784E8(void)
+{
+ switch (DebugMenu_8077E40(IsMysteryGiftEnabled()))
+ {
+ case 0:
+ DisableMysteryGift();
+ return FALSE;
+ case 1:
+ EnableMysteryGift();
+ return FALSE;
+ case -1:
+ return TRUE;
+ }
+ return FALSE;
+}
+
+u8 DebugMenu_OpenMysteryEvent(void)
+{
+ Menu_EraseScreen();
+ DebugMenu_807786C(IsMysteryGiftEnabled() ? FALSE : TRUE);
+ gMenuCallback = DebugMenu_80784E8;
+ return FALSE;
+}
+
+const u8 Str_839C07C[] = _("{STR_VAR_1}:{STR_VAR_2}\n"
+ "{STR_VAR_3}");
+const u8 Str_839C085[] = _("みしよう データ");
+const u8 Str_839C08E[] = _("Confirmation");
+const u8 Str_839C09B[] = _("Max-1 set");
+const u8 Str_839C0A5[] = _("Zero clear");
+const u8 Str_839C0B0[] = _("レポート");
+const u8 Str_839C0B5[] = _("クリア じかん");
+const u8 Str_839C0BD[] = _("りゅうこう さくせい");
+const u8 Str_839C0C8[] = _("きのみを うえたかいすう");
+const u8 Str_839C0D5[] = _("じてんしゃこうかん");
+const u8 Str_839C0DF[] = _("ほすう");
+const u8 Str_839C0E3[] = _("インタビュー");
+const u8 Str_839C0EA[] = _("バトル");
+const u8 Str_839C0EE[] = _("やせいバトル");
+const u8 Str_839C0F5[] = _("トレーナーバトル");
+const u8 Str_839C0FE[] = _("でんどういり");
+const u8 Str_839C105[] = _("ポケモンほかく");
+const u8 Str_839C10D[] = _("つった かいすう");
+const u8 Str_839C116[] = _("タマゴかえった");
+const u8 Str_839C11E[] = _("しんかした");
+const u8 Str_839C124[] = _("ポケセン かいふく");
+const u8 Str_839C12E[] = _("じたく かいふく");
+const u8 Str_839C137[] = _("サファリ りよう");
+const u8 Str_839C140[] = _("ひでん:いあいぎり");
+const u8 Str_839C14A[] = _("ひでん:いわくだき");
+const u8 Str_839C154[] = _("きち ひっこし");
+const u8 Str_839C15C[] = _("つうしんこうかん");
+const u8 Str_839C165[] = _("つうしんたいせん");
+const u8 Str_839C16E[] = _("つうしん かち");
+const u8 Str_839C176[] = _("つうしん まけ");
+const u8 Str_839C17E[] = _("つうしん ひきわけ");
+const u8 Str_839C188[] = _("わざ:はねる");
+const u8 Str_839C18F[] = _("わざ:わるあがき");
+const u8 Str_839C198[] = _("スロットおおあたりかいすう");
+const u8 Str_839C1A6[] = _("ルーレット れんしょう");
+const u8 Str_839C1B2[] = _("バトルタワー");
+const u8 Str_839C1B9[] = _("バトルタワーかち");
+const u8 Str_839C1C2[] = _("バトルタワーれんしょう");
+const u8 Str_839C1CE[] = _("ポロックさくせい");
+const u8 Str_839C1D7[] = _("つうしんでポロックつくった");
+const u8 Str_839C1E5[] = _("つうしんコンテストかち");
+const u8 Str_839C1F1[] = _("CPUコンテストさんか");
+const u8 Str_839C1FD[] = _("CPUコンテストかち");
+const u8 Str_839C208[] = _("かいもの");
+const u8 Str_839C20D[] = _("ダウジングマシン");
+const u8 Str_839C216[] = _("あめふり");
+const u8 Str_839C21B[] = _("ずかんをみた");
+const u8 Str_839C222[] = _("リボン もらった");
+const u8 Str_839C22B[] = _("だんさ とびおり");
+const u8 Str_839C234[] = _("TVを みた");
+const u8 Str_839C23B[] = _("とけいを みた");
+const u8 Str_839C243[] = _("くじが あたった");
+const u8 Str_839C24C[] = _("ポケモンあずけた");
+const u8 Str_839C255[] = _("ロープウェイりよう");
+const u8 Str_839C25F[] = _("おんせん はいった");
+
+const struct {
+ u32 maxVal;
+ const u8 * name;
+} gUnknown_Debug_839C26C[] = {
+ {0xFFFFFF, Str_839C0B0},
+ {65485627, Str_839C0B5},
+ {0xFFFFFF, Str_839C0BD},
+ {0xFFFFFF, Str_839C0C8},
+ {0xFFFFFF, Str_839C0D5},
+ {0xFFFFFF, Str_839C0DF},
+ {0xFFFFFF, Str_839C0E3},
+ {0xFFFFFF, Str_839C0EA},
+ {0xFFFFFF, Str_839C0EE},
+ {0xFFFFFF, Str_839C0F5},
+ {999, Str_839C0FE},
+ {0xFFFFFF, Str_839C105},
+ {0xFFFFFF, Str_839C10D},
+ {0xFFFFFF, Str_839C116},
+ {0xFFFFFF, Str_839C11E},
+ {0xFFFFFF, Str_839C124},
+ {0xFFFFFF, Str_839C12E},
+ {0xFFFFFF, Str_839C137},
+ {0xFFFFFF, Str_839C140},
+ {0xFFFFFF, Str_839C14A},
+ {0xFFFFFF, Str_839C154},
+ {0xFFFFFF, Str_839C15C},
+ {0xFFFFFF, Str_839C165},
+ {9999, Str_839C16E},
+ {9999, Str_839C176},
+ {9999, Str_839C17E},
+ {0xFFFFFF, Str_839C188},
+ {0xFFFFFF, Str_839C18F},
+ {0xFFFFFF, Str_839C198},
+ {0xFFFFFF, Str_839C1A6},
+ {0xFFFFFF, Str_839C1B2},
+ {0x0, Str_839C1B9},
+ {0x0, Str_839C1C2},
+ {0xFFFFFF, Str_839C1CE},
+ {0xFFFFFF, Str_839C1D7},
+ {0xFFFFFF, Str_839C1E5},
+ {0xFFFFFF, Str_839C1F1},
+ {0xFFFFFF, Str_839C1FD},
+ {0xFFFFFF, Str_839C208},
+ {0xFFFFFF, Str_839C20D},
+ {0xFFFFFF, Str_839C216},
+ {0xFFFFFF, Str_839C21B},
+ {0xFFFFFF, Str_839C222},
+ {0xFFFFFF, Str_839C22B},
+ {0xFFFFFF, Str_839C234},
+ {0xFFFFFF, Str_839C23B},
+ {0xFFFFFF, Str_839C243},
+ {0xFFFFFF, Str_839C24C},
+ {0xFFFFFF, Str_839C255},
+ {0xFFFFFF, Str_839C25F}
+};
+
+void DebugMenu_8078550(u16 gameStat)
+{
+ u32 value = GetGameStat(gameStat);
+
+ ConvertIntToDecimalStringN(gStringVar1, gameStat, STR_CONV_MODE_LEADING_ZEROS, 2);
+ StringCopy(gStringVar2, gUnknown_Debug_839C26C[gameStat].name);
+ if (gUnknown_Debug_839C26C[gameStat].maxVal == 0)
+ StringCopy(gStringVar3, Str_839C085);
+ else if (gameStat != GAME_STAT_FIRST_HOF_PLAY_TIME)
+ ConvertIntToDecimalStringN(gStringVar3, value, STR_CONV_MODE_RIGHT_ALIGN, 10);
+ else
+ {
+ ConvertIntToDecimalStringN(gStringVar3, value >> 16, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ gStringVar3[3] = CHAR_COLON;
+ ConvertIntToDecimalStringN(gStringVar3 + 4, (value >> 8) & 0xff, STR_CONV_MODE_LEADING_ZEROS, 2);
+ gStringVar3[6] = CHAR_COLON;
+ ConvertIntToDecimalStringN(gStringVar3 + 7, value & 0xff, STR_CONV_MODE_LEADING_ZEROS, 2);
+ }
+ Menu_DisplayDialogueFrame();
+ Menu_PrintText(Str_839C07C, 2, 15);
+}
+
+bool32 DebugMenu_807860C(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ switch (data[0])
+ {
+ case 0:
+ DebugMenu_8078550(data[1]);
+ data[0]++;
+ return FALSE;
+ case 1:
+ if (gMain.newKeys & A_BUTTON)
+ {
+ data[0]--;
+ return TRUE;
+ }
+ if (gMain.newKeys & B_BUTTON)
+ {
+ data[0]++;
+ return FALSE;
+ }
+ if (gMain.newAndRepeatedKeys & DPAD_UP)
+ {
+ data[1]++;
+ if (data[1] == NUM_GAME_STATS)
+ data[1] = 0;
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_DOWN)
+ {
+ data[1]--;
+ if (data[1] < 0)
+ data[1] = NUM_GAME_STATS - 1;
+ }
+ else
+ return FALSE;
+ DebugMenu_8078550(data[1]);
+ return FALSE;
+ case 2:
+ Menu_EraseScreen();
+ ScriptContext2_Disable();
+ DestroyTask(taskId);
+ return FALSE;
+ }
+ return FALSE;
+}
+
+void DebugMenu_80786C0(u8 taskId)
+{
+ DebugMenu_807860C(taskId);
+}
+
+void DebugMenu_80786D0(u8 taskId)
+{
+ if (DebugMenu_807860C(taskId))
+ {
+ u8 gameStat = gTasks[taskId].data[1];
+ if (gUnknown_Debug_839C26C[gameStat].maxVal != 0)
+ {
+ SetGameStat(gameStat, gUnknown_Debug_839C26C[gameStat].maxVal - 1);
+ PlaySE(SE_PIN);
+ }
+ }
+}
+
+void DebugMenu_8078714(u8 taskId)
+{
+ if (DebugMenu_807860C(taskId))
+ {
+ u8 gameStat = gTasks[taskId].data[1];
+ if (gUnknown_Debug_839C26C[gameStat].maxVal != 0)
+ {
+ SetGameStat(gameStat, 0);
+ PlaySE(SE_PIN);
+ }
+ }
+}
+
+bool8 DebugMenu_8078758(TaskFunc func)
+{
+ CloseMenu();
+ ScriptContext2_Enable();
+ CreateTask(func, 80);
+ return TRUE;
+}
+
+bool8 DebugMenu_8078774(void)
+{
+ return DebugMenu_8078758(DebugMenu_80786C0);
+}
+
+bool8 DebugMenu_8078788(void)
+{
+ return DebugMenu_8078758(DebugMenu_80786D0);
+}
+
+bool8 DebugMenu_807879C()
+{
+ return DebugMenu_8078758(DebugMenu_8078714);
+}
+
+const struct MenuAction gUnknown_Debug_839C3FC[] = {
+ {Str_839C08E, DebugMenu_8078774},
+ {Str_839C09B, DebugMenu_8078788},
+ {Str_839C0A5, DebugMenu_807879C}
+};
+
+bool8 DebugMenu_80787B0()
+{
+ return DebugMenu_8077D78(gUnknown_Debug_839C3FC);
+}
+
u8 DebugMenu_OpenLegendsRecord()
{
- asm(
- " push {lr}\n"
- " bl Menu_EraseScreen\n"
- " ldr r0, ._464 @ gUnknown_Debug_839C3FC\n"
- " mov r1, #0xc\n"
- " mov r2, #0x3\n"
- " bl DebugMenu_8077D24\n"
- " ldr r1, ._464 + 4 @ gMenuCallback\n"
- " ldr r0, ._464 + 8 @ DebugMenu_80787B0\n"
- " str r0, [r1]\n"
- " mov r0, #0x0\n"
- " pop {r1}\n"
- " bx r1\n"
- "._465:\n"
- " .align 2, 0\n"
- "._464:\n"
- " .word gUnknown_Debug_839C3FC\n"
- " .word gMenuCallback\n"
- " .word DebugMenu_80787B0+1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_80787EC()
-{
- asm(
- " push {r4, r5, lr}\n"
- " add sp, sp, #0xfffffffc\n"
- " mov r5, sp\n"
- " add r5, r5, #0x2\n"
- " mov r0, sp\n"
- " add r1, r5, #0\n"
- " bl GetXYCoordsOneStepInFrontOfPlayer\n"
- " ldr r4, ._466 @ gSpecialVar_Result\n"
- " mov r0, sp\n"
- " mov r1, #0x0\n"
- " ldsh r0, [r0, r1]\n"
- " mov r2, #0x0\n"
- " ldsh r1, [r5, r2]\n"
- " bl MapGridGetMetatileBehaviorAt\n"
- " strh r0, [r4]\n"
- " ldr r0, ._466 + 4 @ gStringVar1\n"
- " ldrh r1, [r4]\n"
- " mov r2, #0x2\n"
- " mov r3, #0x4\n"
- " bl ConvertIntToHexStringN\n"
- " mov r0, sp\n"
- " mov r1, #0x0\n"
- " ldsh r0, [r0, r1]\n"
- " mov r2, #0x0\n"
- " ldsh r1, [r5, r2]\n"
- " bl MapGridGetMetatileIdAt\n"
- " strh r0, [r4]\n"
- " ldr r0, ._466 + 8 @ gStringVar2\n"
- " ldrh r1, [r4]\n"
- " mov r2, #0x2\n"
- " mov r3, #0x4\n"
- " bl ConvertIntToHexStringN\n"
- " mov r0, sp\n"
- " mov r1, #0x0\n"
- " ldsh r0, [r0, r1]\n"
- " mov r2, #0x0\n"
- " ldsh r1, [r5, r2]\n"
- " bl MapGridGetZCoordAt\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x18\n"
- " strh r0, [r4]\n"
- " ldr r0, ._466 + 12 @ gStringVar3\n"
- " ldrh r1, [r4]\n"
- " mov r2, #0x2\n"
- " mov r3, #0x4\n"
- " bl ConvertIntToHexStringN\n"
- " ldr r0, ._466 + 16 @ gStringVar4\n"
- " ldr r1, ._466 + 20 @ Str_839C414\n"
- " bl StringExpandPlaceholders\n"
- " add sp, sp, #0x4\n"
- " pop {r4, r5}\n"
- " pop {r0}\n"
- " bx r0\n"
- "._467:\n"
- " .align 2, 0\n"
- "._466:\n"
- " .word gSpecialVar_Result\n"
- " .word gStringVar1\n"
- " .word gStringVar2\n"
- " .word gStringVar3\n"
- " .word gStringVar4\n"
- " .word Str_839C414\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8078880()
-{
- asm(
- " push {r4, r5, lr}\n"
- " lsl r0, r0, #0x18\n"
- " lsr r5, r0, #0x18\n"
- " ldr r1, ._472 @ gTasks\n"
- " lsl r0, r5, #0x2\n"
- " add r0, r0, r5\n"
- " lsl r0, r0, #0x3\n"
- " add r4, r0, r1\n"
- " mov r1, #0x8\n"
- " ldsh r0, [r4, r1]\n"
- " cmp r0, #0x1\n"
- " beq ._468 @cond_branch\n"
- " cmp r0, #0x1\n"
- " bgt ._469 @cond_branch\n"
- " cmp r0, #0\n"
- " beq ._470 @cond_branch\n"
- " b ._480\n"
- "._473:\n"
- " .align 2, 0\n"
- "._472:\n"
- " .word gTasks\n"
- "._469:\n"
- " cmp r0, #0x2\n"
- " beq ._474 @cond_branch\n"
- " b ._480\n"
- "._470:\n"
- " bl Menu_DisplayDialogueFrame\n"
- " b ._476\n"
- "._468:\n"
- " ldr r0, ._478 @ gStringVar4\n"
- " mov r1, #0x2\n"
- " mov r2, #0xf\n"
- " bl Menu_PrintText\n"
- "._476:\n"
- " ldrh r0, [r4, #0x8]\n"
- " add r0, r0, #0x1\n"
- " strh r0, [r4, #0x8]\n"
- " b ._480\n"
- "._479:\n"
- " .align 2, 0\n"
- "._478:\n"
- " .word gStringVar4\n"
- "._474:\n"
- " ldr r0, ._481 @ gMain\n"
- " ldrh r1, [r0, #0x2e]\n"
- " mov r0, #0x1\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq ._480 @cond_branch\n"
- " bl Menu_EraseScreen\n"
- " bl ScriptContext2_Disable\n"
- " add r0, r5, #0\n"
- " bl DestroyTask\n"
- "._480:\n"
- " pop {r4, r5}\n"
- " pop {r0}\n"
- " bx r0\n"
- "._482:\n"
- " .align 2, 0\n"
- "._481:\n"
- " .word gMain\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-u8 DebugMenu_CellInfo()
-{
- asm(
- " push {lr}\n"
- " bl CloseMenu\n"
- " ldr r0, ._483 @ DebugMenu_8078880\n"
- " mov r1, #0x50\n"
- " bl CreateTask\n"
- " bl DebugMenu_80787EC\n"
- " bl ScriptContext2_Enable\n"
- " mov r0, #0x1\n"
- " pop {r1}\n"
- " bx r1\n"
- "._484:\n"
- " .align 2, 0\n"
- "._483:\n"
- " .word DebugMenu_8078880+1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-u8 DebugMenu_OpenBerryInfo()
-{
- asm(
- " push {r4, lr}\n"
- " bl DebugOpenBerryInfo\n"
- " add r4, r0, #0\n"
- " cmp r4, #0\n"
- " bne ._485 @cond_branch\n"
- " bl CloseMenu\n"
- " mov r0, #0x1\n"
- " b ._486\n"
- "._485:\n"
- " mov r0, #0x0\n"
- " mov r1, #0x0\n"
- " mov r2, #0x13\n"
- " mov r3, #0x13\n"
- " bl Menu_DrawStdWindowFrame\n"
- " add r0, r4, #0\n"
- " mov r1, #0x1\n"
- " mov r2, #0x1\n"
- " bl Menu_PrintText\n"
- " ldr r1, ._487 @ gMenuCallback\n"
- " ldr r0, ._487 + 4 @ DebugMenu_8077DB4\n"
- " str r0, [r1]\n"
- " mov r0, #0x0\n"
- "._486:\n"
- " pop {r4}\n"
- " pop {r1}\n"
- " bx r1\n"
- "._488:\n"
- " .align 2, 0\n"
- "._487:\n"
- " .word gMenuCallback\n"
- " .word DebugMenu_8077DB4+1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8078950()
-{
- asm(
- " push {lr}\n"
- " bl Menu_DisplayDialogueFrame\n"
- " ldr r0, ._489 @ Str_839C42E\n"
- " mov r1, #0x4\n"
- " mov r2, #0xf\n"
- " bl Menu_PrintText\n"
- " pop {r0}\n"
- " bx r0\n"
- "._490:\n"
- " .align 2, 0\n"
- "._489:\n"
- " .word Str_839C42E\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8078968()
-{
- asm(
- " push {lr}\n"
- " lsl r0, r0, #0x10\n"
- " cmp r0, #0\n"
- " bne ._491 @cond_branch\n"
- " ldr r0, ._493 @ gStringVar1\n"
- " mov r1, #0x32\n"
- " mov r2, #0x2\n"
- " mov r3, #0x3\n"
- " bl ConvertIntToDecimalStringN\n"
- " b ._492\n"
- "._494:\n"
- " .align 2, 0\n"
- "._493:\n"
- " .word gStringVar1\n"
- "._491:\n"
- " ldr r0, ._495 @ gStringVar1\n"
- " mov r1, #0x64\n"
- " mov r2, #0x2\n"
- " mov r3, #0x3\n"
- " bl ConvertIntToDecimalStringN\n"
- "._492:\n"
- " ldr r0, ._495 @ gStringVar1\n"
- " mov r1, #0x4\n"
- " mov r2, #0x11\n"
- " bl Menu_PrintText\n"
- " pop {r0}\n"
- " bx r0\n"
- "._496:\n"
- " .align 2, 0\n"
- "._495:\n"
- " .word gStringVar1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_80789A4()
-{
- asm(
- " push {r4, lr}\n"
- " add r1, r0, #0\n"
- " lsl r1, r1, #0x10\n"
- " lsr r1, r1, #0x10\n"
- " ldr r4, ._497 @ gStringVar1\n"
- " add r0, r4, #0\n"
- " mov r2, #0x2\n"
- " mov r3, #0x4\n"
- " bl ConvertIntToDecimalStringN\n"
- " add r0, r4, #0\n"
- " mov r1, #0x9\n"
- " mov r2, #0x11\n"
- " bl Menu_PrintText\n"
- " pop {r4}\n"
- " pop {r0}\n"
- " bx r0\n"
- "._498:\n"
- " .align 2, 0\n"
- "._497:\n"
- " .word gStringVar1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_80789CC()
-{
- asm(
- " push {r4, r5, r6, lr}\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x18\n"
- " lsl r4, r0, #0x2\n"
- " add r4, r4, r0\n"
- " lsl r4, r4, #0x3\n"
- " ldr r6, ._499 @ gTasks\n"
- " add r5, r4, r6\n"
- " mov r0, #0x0\n"
- " strh r0, [r5]\n"
- " ldr r0, ._499 + 4 @ gSaveBlock2\n"
- " ldr r1, ._499 + 8 @ 0x55c\n"
- " add r0, r0, r1\n"
- " ldrh r0, [r0]\n"
- " strh r0, [r5, #0x2]\n"
- " bl DebugMenu_8078950\n"
- " ldrh r0, [r5]\n"
- " bl DebugMenu_8078968\n"
- " sub r6, r6, #0x8\n"
- " add r4, r4, r6\n"
- " ldr r0, ._499 + 12 @ DebugMenu_8078A14\n"
- " str r0, [r4]\n"
- " pop {r4, r5, r6}\n"
- " pop {r0}\n"
- " bx r0\n"
- "._500:\n"
- " .align 2, 0\n"
- "._499:\n"
- " .word gTasks+0x8\n"
- " .word gSaveBlock2\n"
- " .word 0x55c\n"
- " .word DebugMenu_8078A14+1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8078A14()
-{
- asm(
- " push {r4, r5, lr}\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x18\n"
- " lsl r1, r0, #0x2\n"
- " add r1, r1, r0\n"
- " lsl r4, r1, #0x3\n"
- " ldr r5, ._504 @ gTasks\n"
- " add r2, r4, r5\n"
- " ldr r0, ._504 + 4 @ gMain\n"
- " ldrh r1, [r0, #0x2e]\n"
- " mov r0, #0xc0\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq ._501 @cond_branch\n"
- " mov r1, #0x0\n"
- " mov r3, #0x0\n"
- " ldsh r0, [r2, r3]\n"
- " cmp r0, #0\n"
- " bne ._502 @cond_branch\n"
- " mov r1, #0x1\n"
- "._502:\n"
- " strh r1, [r2]\n"
- " ldrh r0, [r2]\n"
- " bl DebugMenu_8078968\n"
- " b ._510\n"
- "._505:\n"
- " .align 2, 0\n"
- "._504:\n"
- " .word gTasks+0x8\n"
- " .word gMain\n"
- "._501:\n"
- " mov r0, #0x1\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq ._506 @cond_branch\n"
- " ldr r1, ._508 @ gSaveBlock2\n"
- " mov r3, #0x0\n"
- " ldsh r0, [r2, r3]\n"
- " lsl r0, r0, #0x1\n"
- " ldr r3, ._508 + 4 @ 0x55c\n"
- " add r1, r1, r3\n"
- " add r0, r0, r1\n"
- " ldrh r0, [r0]\n"
- " strh r0, [r2, #0x2]\n"
- " ldrh r0, [r2, #0x2]\n"
- " bl DebugMenu_80789A4\n"
- " add r0, r5, #0\n"
- " sub r0, r0, #0x8\n"
- " add r0, r4, r0\n"
- " ldr r1, ._508 + 8 @ DebugMenu_8078AA4\n"
- " b ._507\n"
- "._509:\n"
- " .align 2, 0\n"
- "._508:\n"
- " .word gSaveBlock2\n"
- " .word 0x55c\n"
- " .word DebugMenu_8078AA4+1\n"
- "._506:\n"
- " mov r0, #0x2\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq ._510 @cond_branch\n"
- " add r0, r5, #0\n"
- " sub r0, r0, #0x8\n"
- " add r0, r4, r0\n"
- " ldr r1, ._511 @ DebugMenu_8078B38\n"
- "._507:\n"
- " str r1, [r0]\n"
- "._510:\n"
- " pop {r4, r5}\n"
- " pop {r0}\n"
- " bx r0\n"
- "._512:\n"
- " .align 2, 0\n"
- "._511:\n"
- " .word DebugMenu_8078B38+1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8078AA4()
-{
- asm(
- " push {r4, r5, r6, r7, lr}\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x18\n"
- " lsl r1, r0, #0x2\n"
- " add r1, r1, r0\n"
- " lsl r5, r1, #0x3\n"
- " ldr r7, ._515 @ gTasks\n"
- " add r4, r5, r7\n"
- " add r0, r4, #2\n"
- " mov r2, #0xfa\n"
- " lsl r2, r2, #0x3\n"
- " ldr r6, ._515 + 4 @ gMain\n"
- " ldrh r3, [r6, #0x30]\n"
- " mov r1, #0x0\n"
- " bl DebugMenu_8077DD8\n"
- " cmp r0, #0x1\n"
- " bne ._513 @cond_branch\n"
- " ldrh r0, [r4, #0x2]\n"
- " bl DebugMenu_80789A4\n"
- " b ._521\n"
- "._516:\n"
- " .align 2, 0\n"
- "._515:\n"
- " .word gTasks+0x8\n"
- " .word gMain\n"
- "._513:\n"
- " ldrh r1, [r6, #0x2e]\n"
- " mov r0, #0x1\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq ._517 @cond_branch\n"
- " ldr r1, ._519 @ gSaveBlock2\n"
- " mov r2, #0x0\n"
- " ldsh r0, [r4, r2]\n"
- " lsl r0, r0, #0x1\n"
- " ldr r2, ._519 + 4 @ 0x55c\n"
- " add r1, r1, r2\n"
- " add r0, r0, r1\n"
- " ldrh r1, [r4, #0x2]\n"
- " strh r1, [r0]\n"
- " mov r0, #0x49\n"
- " bl PlaySE\n"
- " add r0, r7, #0\n"
- " sub r0, r0, #0x8\n"
- " add r0, r5, r0\n"
- " ldr r1, ._519 + 8 @ DebugMenu_8078B38\n"
- " b ._518\n"
- "._520:\n"
- " .align 2, 0\n"
- "._519:\n"
- " .word gSaveBlock2\n"
- " .word 0x55c\n"
- " .word DebugMenu_8078B38+1\n"
- "._517:\n"
- " mov r0, #0x2\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq ._521 @cond_branch\n"
- " bl DebugMenu_8078950\n"
- " ldrh r0, [r4]\n"
- " bl DebugMenu_8078968\n"
- " add r0, r7, #0\n"
- " sub r0, r0, #0x8\n"
- " add r0, r5, r0\n"
- " ldr r1, ._522 @ DebugMenu_8078A14\n"
- "._518:\n"
- " str r1, [r0]\n"
- "._521:\n"
- " pop {r4, r5, r6, r7}\n"
- " pop {r0}\n"
- " bx r0\n"
- "._523:\n"
- " .align 2, 0\n"
- "._522:\n"
- " .word DebugMenu_8078A14+1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8078B38()
-{
- asm(
- " push {r4, lr}\n"
- " add r4, r0, #0\n"
- " lsl r4, r4, #0x18\n"
- " lsr r4, r4, #0x18\n"
- " bl Menu_EraseScreen\n"
- " bl ScriptContext2_Disable\n"
- " add r0, r4, #0\n"
- " bl DestroyTask\n"
- " pop {r4}\n"
- " pop {r0}\n"
- " bx r0\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-u8 DebugMenu_BattleTowerStages()
-{
- asm(
- " push {lr}\n"
- " bl CloseMenu\n"
- " bl ScriptContext2_Enable\n"
- " ldr r0, ._524 @ DebugMenu_80789CC\n"
- " mov r1, #0x50\n"
- " bl CreateTask\n"
- " mov r0, #0x1\n"
- " pop {r1}\n"
- " bx r1\n"
- "._525:\n"
- " .align 2, 0\n"
- "._524:\n"
- " .word DebugMenu_80789CC+1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8078B70()
-{
- asm(
- " push {lr}\n"
- " add r1, r0, #0\n"
- " lsl r1, r1, #0x10\n"
- " lsr r1, r1, #0x10\n"
- " ldr r0, ._526 @ gStringVar1\n"
- " mov r2, #0x0\n"
- " mov r3, #0x1\n"
- " bl ConvertIntToHexStringN\n"
- " ldr r0, ._526 + 4 @ Str_839C438\n"
- " bl sub_8071F40\n"
- " pop {r0}\n"
- " bx r0\n"
- "._527:\n"
- " .align 2, 0\n"
- "._526:\n"
- " .word gStringVar1\n"
- " .word Str_839C438\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8078B94()
-{
- asm(
- " push {r4, r5, lr}\n"
- " mov r3, #0x0\n"
- " ldr r1, ._531 @ gUnknown_Debug_839C444\n"
- " ldrb r0, [r1]\n"
- " cmp r0, #0\n"
- " beq ._529 @cond_branch\n"
- " ldr r5, ._531 + 4 @ gSaveBlock1\n"
- " add r4, r1, #0\n"
- "._530:\n"
- " lsl r0, r3, #0x3\n"
- " add r2, r0, r5\n"
- " add r0, r0, r4\n"
- " ldr r1, [r0, #0x4]\n"
- " ldr r0, [r0]\n"
- " str r0, [r2]\n"
- " str r1, [r2, #0x4]\n"
- " add r0, r3, #1\n"
- " lsl r0, r0, #0x18\n"
- " lsr r3, r0, #0x18\n"
- " cmp r3, #0x27\n"
- " bhi ._529 @cond_branch\n"
- " lsl r0, r3, #0x3\n"
- " add r0, r0, r4\n"
- " ldrb r0, [r0]\n"
- " cmp r0, #0\n"
- " bne ._530 @cond_branch\n"
- "._529:\n"
- " pop {r4, r5}\n"
- " pop {r0}\n"
- " bx r0\n"
- "._532:\n"
- " .align 2, 0\n"
- "._531:\n"
- " .word gUnknown_Debug_839C444\n"
- " .word gSaveBlock1+0x7f8\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8078BD4()
-{
- asm(
- " push {r4, r5, lr}\n"
- " lsl r0, r0, #0x18\n"
- " lsr r5, r0, #0x18\n"
- " lsl r0, r5, #0x2\n"
- " add r0, r0, r5\n"
- " lsl r0, r0, #0x3\n"
- " ldr r1, ._536 @ gTasks\n"
- " add r4, r0, r1\n"
- " mov r1, #0x0\n"
- " ldsh r0, [r4, r1]\n"
- " cmp r0, #0\n"
- " beq ._533 @cond_branch\n"
- " cmp r0, #0x1\n"
- " beq ._534 @cond_branch\n"
- " b ._545\n"
- "._537:\n"
- " .align 2, 0\n"
- "._536:\n"
- " .word gTasks+0x8\n"
- "._533:\n"
- " ldrh r0, [r4, #0x2]\n"
- " bl DebugMenu_8078B70\n"
- " ldrh r0, [r4]\n"
- " add r0, r0, #0x1\n"
- " strh r0, [r4]\n"
- " b ._545\n"
- "._534:\n"
- " ldr r2, ._541 @ gMain\n"
- " ldrh r1, [r2, #0x2e]\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq ._539 @cond_branch\n"
- " mov r0, #0x49\n"
- " bl PlaySE\n"
- " bl Menu_EraseScreen\n"
- " add r0, r5, #0\n"
- " bl DestroyTask\n"
- " bl ScriptContext2_Disable\n"
- " bl DebugMenu_8078B94\n"
- " b ._545\n"
- "._542:\n"
- " .align 2, 0\n"
- "._541:\n"
- " .word gMain\n"
- "._539:\n"
- " mov r0, #0x2\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq ._543 @cond_branch\n"
- " bl Menu_EraseScreen\n"
- " add r0, r5, #0\n"
- " bl DestroyTask\n"
- " bl ScriptContext2_Disable\n"
- " b ._545\n"
- "._543:\n"
- " add r0, r4, #2\n"
- " ldrh r3, [r2, #0x30]\n"
- " mov r1, #0x0\n"
- " mov r2, #0x4\n"
- " bl DebugMenu_8077DD8\n"
- " cmp r0, #0x1\n"
- " bne ._545 @cond_branch\n"
- " ldrh r0, [r4, #0x2]\n"
- " bl DebugMenu_8078B70\n"
- "._545:\n"
- " pop {r4, r5}\n"
- " pop {r0}\n"
- " bx r0\n"
- "\n"
- );
-}
-
-__attribute__((naked))
+ Menu_EraseScreen();
+ DebugMenu_8077D24(gUnknown_Debug_839C3FC, 12, ARRAY_COUNT(gUnknown_Debug_839C3FC));
+ gMenuCallback = DebugMenu_80787B0;
+ return FALSE;
+}
+
+const u8 Str_839C414[] = _("ATTR:{STR_VAR_1} HEIGHT:{STR_VAR_3}\n"
+ "CODE:{STR_VAR_2}");
+
+void DebugMenu_80787EC(void)
+{
+ s16 x;
+ s16 y;
+
+ GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
+ gSpecialVar_Result = MapGridGetMetatileBehaviorAt(x, y);
+ ConvertIntToHexStringN(gStringVar1, gSpecialVar_Result, STR_CONV_MODE_LEADING_ZEROS, 4);
+ gSpecialVar_Result = MapGridGetMetatileIdAt(x, y);
+ ConvertIntToHexStringN(gStringVar2, gSpecialVar_Result, STR_CONV_MODE_LEADING_ZEROS, 4);
+ gSpecialVar_Result = MapGridGetZCoordAt(x, y);
+ ConvertIntToHexStringN(gStringVar3, gSpecialVar_Result, STR_CONV_MODE_LEADING_ZEROS, 4);
+ StringExpandPlaceholders(gStringVar4, Str_839C414);
+}
+
+void DebugMenu_8078880(u8 taskId)
+{
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ Menu_DisplayDialogueFrame();
+ gTasks[taskId].data[0]++;
+ break;
+ case 1:
+ Menu_PrintText(gStringVar4, 2, 15);
+ gTasks[taskId].data[0]++;
+ break;
+ case 2:
+ if (gMain.newKeys & A_BUTTON)
+ {
+ Menu_EraseScreen();
+ ScriptContext2_Disable();
+ DestroyTask(taskId);
+ }
+ break;
+ }
+}
+
+u8 DebugMenu_CellInfo(void)
+{
+ CloseMenu();
+ CreateTask(DebugMenu_8078880, 80);
+ DebugMenu_80787EC();
+ ScriptContext2_Enable();
+ return TRUE;
+}
+
+u8 DebugMenu_OpenBerryInfo(void)
+{
+ const u8 * berryInfo = DebugOpenBerryInfo();
+ if (berryInfo != NULL)
+ {
+ Menu_DrawStdWindowFrame(0, 0, 19, 19);
+ Menu_PrintText(berryInfo, 1, 1);
+ gMenuCallback = DebugMenu_8077DB4;
+ return FALSE;
+ }
+ CloseMenu();
+ return TRUE;
+}
+
+const u8 Str_839C42E[] = _("レベル  ステージ");
+
+void DebugMenu_8078950(void)
+{
+ Menu_DisplayDialogueFrame();
+ Menu_PrintText(Str_839C42E, 4, 15);
+}
+
+void DebugMenu_8078968(u16 flag)
+{
+ if (flag == 0)
+ ConvertIntToDecimalStringN(gStringVar1, 50, STR_CONV_MODE_LEADING_ZEROS, 3);
+ else
+ ConvertIntToDecimalStringN(gStringVar1, 100, STR_CONV_MODE_LEADING_ZEROS, 3);
+ Menu_PrintText(gStringVar1, 4, 17);
+}
+
+void DebugMenu_80789A4(u16 value)
+{
+ ConvertIntToDecimalStringN(gStringVar1, value, STR_CONV_MODE_LEADING_ZEROS, 4);
+ Menu_PrintText(gStringVar1, 9, 17);
+}
+
+void DebugMenu_80789CC(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+ data[0] = 0;
+ data[1] = gSaveBlock2.battleTower.curStreakChallengesNum[0];
+ DebugMenu_8078950();
+ DebugMenu_8078968(data[0]);
+ gTasks[taskId].func = DebugMenu_8078A14;
+}
+
+void DebugMenu_8078A14(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+ if (gMain.newKeys & (DPAD_UP | DPAD_DOWN))
+ {
+ data[0] = data[0] == 0 ? 1 : 0;
+ DebugMenu_8078968(data[0]);
+ }
+ else if (gMain.newKeys & A_BUTTON)
+ {
+ data[1] = gSaveBlock2.battleTower.curStreakChallengesNum[data[0]];
+ DebugMenu_80789A4(data[1]);
+ gTasks[taskId].func = DebugMenu_8078AA4;
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ gTasks[taskId].func = DebugMenu_8078B38;
+ }
+}
+
+void DebugMenu_8078AA4(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+ if (DebugMenu_8077DD8(data + 1, 0, 2000, gMain.newAndRepeatedKeys) == TRUE)
+ {
+ DebugMenu_80789A4(data[1]);
+ }
+ else if (gMain.newKeys & A_BUTTON)
+ {
+ gSaveBlock2.battleTower.curStreakChallengesNum[data[0]] = data[1];
+ PlaySE(SE_PINPON);
+ gTasks[taskId].func = DebugMenu_8078B38;
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ DebugMenu_8078950();
+ DebugMenu_8078968(data[0]);
+ gTasks[taskId].func = DebugMenu_8078A14;
+ }
+}
+
+void DebugMenu_8078B38(u8 taskId)
+{
+ Menu_EraseScreen();
+ ScriptContext2_Disable();
+ DestroyTask(taskId);
+}
+
+u8 DebugMenu_BattleTowerStages(void)
+{
+ CloseMenu();
+ ScriptContext2_Enable();
+ CreateTask(DebugMenu_80789CC, 80);
+ return TRUE;
+}
+
+const u8 Str_839C438[] = _("ポロック グループ{STR_VAR_1}");
+
+void DebugMenu_8078B70(u16 value)
+{
+ ConvertIntToHexStringN(gStringVar1, value, STR_CONV_MODE_LEFT_ALIGN, 1);
+ sub_8071F40(Str_839C438);
+}
+
+const struct Pokeblock gUnknown_Debug_839C444[] = {
+ {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00},
+ {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00},
+ {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00},
+ {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00},
+ {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00},
+ {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00},
+ {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00},
+ {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00},
+ {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00},
+ {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00},
+ {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00},
+ {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00},
+ {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00},
+ {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00},
+ {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00},
+ {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00},
+ {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00},
+ {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00},
+ {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00},
+ {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00},
+ {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00},
+ {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00},
+ {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00},
+ {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00},
+ {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00},
+ {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00},
+ {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00},
+ {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00},
+ {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00},
+ {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00},
+ {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00},
+ {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00},
+ {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00},
+ {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00},
+ {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00},
+ {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00},
+ {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00},
+ {}
+};
+
+void DebugMenu_8078B94(void)
+{
+ u8 i;
+
+ for (i = 0; i < ARRAY_COUNT(gSaveBlock1.pokeblocks); i++)
+ {
+ if (gUnknown_Debug_839C444[i].color == 0)
+ break;
+ gSaveBlock1.pokeblocks[i] = gUnknown_Debug_839C444[i];
+ }
+}
+
+void DebugMenu_8078BD4(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ switch (data[0])
+ {
+ case 0:
+ DebugMenu_8078B70(data[1]);
+ data[0]++;
+ break;
+ case 1:
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_PINPON);
+ Menu_EraseScreen();
+ DestroyTask(taskId);
+ ScriptContext2_Disable();
+ DebugMenu_8078B94();
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ Menu_EraseScreen();
+ DestroyTask(taskId);
+ ScriptContext2_Disable();
+ }
+ else if (DebugMenu_8077DD8(data + 1, 0, 4, gMain.newAndRepeatedKeys) == TRUE)
+ {
+ DebugMenu_8078B70(data[1]);
+ }
+ break;
+ }
+}
+
u8 DebugMenu_CheckPKBLCK()
{
- asm(
- " push {lr}\n"
- " bl CloseMenu\n"
- " ldr r0, ._546 @ DebugMenu_8078BD4\n"
- " mov r1, #0x50\n"
- " bl CreateTask\n"
- " bl ScriptContext2_Enable\n"
- " mov r0, #0x1\n"
- " pop {r1}\n"
- " bx r1\n"
- "._547:\n"
- " .align 2, 0\n"
- "._546:\n"
- " .word DebugMenu_8078BD4+1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8078C80()
-{
- asm(
- " push {lr}\n"
- " bl Menu_DisplayDialogueFrame\n"
- " ldr r0, ._548 @ Str_839C5A4\n"
- " mov r1, #0x2\n"
- " mov r2, #0xf\n"
- " bl Menu_PrintText\n"
- " ldr r1, ._548 + 4 @ gMenuCallback\n"
- " ldr r0, ._548 + 8 @ DebugMenu_8078CA8\n"
- " str r0, [r1]\n"
- " mov r0, #0x0\n"
- " pop {r1}\n"
- " bx r1\n"
- "._549:\n"
- " .align 2, 0\n"
- "._548:\n"
- " .word Str_839C5A4\n"
- " .word gMenuCallback\n"
- " .word DebugMenu_8078CA8+1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8078CA8()
-{
- asm(
- " push {lr}\n"
- " ldr r0, ._552 @ gMain\n"
- " ldrh r1, [r0, #0x2e]\n"
- " mov r0, #0x1\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq ._550 @cond_branch\n"
- " ldr r1, ._552 + 4 @ gMenuCallback\n"
- " ldr r0, ._552 + 8 @ DebugMenu_8078CE4\n"
- " str r0, [r1]\n"
- " mov r0, #0x0\n"
- " b ._555\n"
- "._553:\n"
- " .align 2, 0\n"
- "._552:\n"
- " .word gMain\n"
- " .word gMenuCallback\n"
- " .word DebugMenu_8078CE4+1\n"
- "._550:\n"
- " mov r0, #0x2\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " bne ._554 @cond_branch\n"
- " mov r0, #0x0\n"
- " b ._555\n"
- "._554:\n"
- " bl CloseMenu\n"
- " mov r0, #0x1\n"
- "._555:\n"
- " pop {r1}\n"
- " bx r1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8078CE4()
-{
- asm(
- " push {lr}\n"
- " ldr r1, ._558 @ \n"
- " mov r2, #0x80\n"
- " lsl r2, r2, #0xa\n"
- " mov r0, #0x0\n"
- " bl DebugMenu_8078E40\n"
- " cmp r0, #0x1\n"
- " bne ._556 @cond_branch\n"
- " ldr r0, ._558 + 4 @ \n"
- " ldr r1, ._558 + 8 @ \n"
- " bl StringCopy\n"
- " b ._557\n"
- "._559:\n"
- " .align 2, 0\n"
- "._558:\n"
- " .word +0x2000000\n"
- " .word gStringVar4\n"
- " .word Str_839C5CC\n"
- "._556:\n"
- " ldr r0, ._560 @ gStringVar4\n"
- " ldr r1, ._560 + 4 @ Str_839C5DF\n"
- " bl StringCopy\n"
- "._557:\n"
- " ldr r1, ._560 + 8 @ gMenuCallback\n"
- " ldr r0, ._560 + 12 @ DebugMenu_8078D7C\n"
- " str r0, [r1]\n"
- " mov r0, #0x0\n"
- " pop {r1}\n"
- " bx r1\n"
- "._561:\n"
- " .align 2, 0\n"
- "._560:\n"
- " .word gStringVar4\n"
- " .word Str_839C5DF\n"
- " .word gMenuCallback\n"
- " .word DebugMenu_8078D7C+1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8078D30()
-{
- asm(
- " push {r4, r5, r6, lr}\n"
- " ldr r5, ._563 @ \n"
- " mov r4, #0x0\n"
- " mov r6, #0x80\n"
- " lsl r6, r6, #0x5\n"
- "._562:\n"
- " add r0, r4, #0\n"
- " add r1, r5, #0\n"
- " add r2, r6, #0\n"
- " bl DebugMenu_8078E68\n"
- " add r5, r5, r6\n"
- " add r0, r4, #1\n"
- " lsl r0, r0, #0x18\n"
- " lsr r4, r0, #0x18\n"
- " cmp r4, #0x1f\n"
- " bls ._562 @cond_branch\n"
- " ldr r0, ._563 + 4 @ \n"
- " ldr r1, ._563 + 8 @ \n"
- " bl StringCopy\n"
- " ldr r1, ._563 + 12 @ \n"
- " ldr r0, ._563 + 16 @ \n"
- " str r0, [r1]\n"
- " mov r0, #0x0\n"
- " pop {r4, r5, r6}\n"
- " pop {r1}\n"
- " bx r1\n"
- "._564:\n"
- " .align 2, 0\n"
- "._563:\n"
- " .word +0x2000000\n"
- " .word gStringVar4\n"
- " .word Str_839C5D6\n"
- " .word gMenuCallback\n"
- " .word DebugMenu_8078D7C+1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8078D7C()
-{
- asm(
- " push {lr}\n"
- " bl Menu_DisplayDialogueFrame\n"
- " ldr r0, ._565 @ gStringVar4\n"
- " mov r1, #0x2\n"
- " mov r2, #0xf\n"
- " bl Menu_PrintText\n"
- " ldr r1, ._565 + 4 @ gMenuCallback\n"
- " ldr r0, ._565 + 8 @ DebugMenu_8078DA4\n"
- " str r0, [r1]\n"
- " mov r0, #0x0\n"
- " pop {r1}\n"
- " bx r1\n"
- "._566:\n"
- " .align 2, 0\n"
- "._565:\n"
- " .word gStringVar4\n"
- " .word gMenuCallback\n"
- " .word DebugMenu_8078DA4+1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8078DA4()
-{
- asm(
- " push {lr}\n"
- " ldr r0, ._569 @ gMain\n"
- " ldrh r1, [r0, #0x2e]\n"
- " mov r0, #0x1\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " bne ._567 @cond_branch\n"
- " mov r0, #0x0\n"
- " b ._568\n"
- "._570:\n"
- " .align 2, 0\n"
- "._569:\n"
- " .word gMain\n"
- "._567:\n"
- " bl CloseMenu\n"
- " mov r0, #0x1\n"
- "._568:\n"
- " pop {r1}\n"
- " bx r1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-u8 DebugMenu_MeTooBackupMan()
-{
- asm(
- " push {lr}\n"
- " bl Menu_EraseScreen\n"
- " ldr r0, ._571 @ gUnknown_Debug_839C594\n"
- " mov r1, #0xc\n"
- " mov r2, #0x2\n"
- " bl DebugMenu_8077D24\n"
- " ldr r1, ._571 + 4 @ gMenuCallback\n"
- " ldr r0, ._571 + 8 @ DebugMenu_8078DF0\n"
- " str r0, [r1]\n"
- " mov r0, #0x0\n"
- " pop {r1}\n"
- " bx r1\n"
- "._572:\n"
- " .align 2, 0\n"
- "._571:\n"
- " .word gUnknown_Debug_839C594\n"
- " .word gMenuCallback\n"
- " .word DebugMenu_8078DF0+1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8078DF0()
-{
- asm(
- " push {lr}\n"
- " ldr r0, ._573 @ gUnknown_Debug_839C594\n"
- " bl DebugMenu_8077D78\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x18\n"
- " pop {r1}\n"
- " bx r1\n"
- "._574:\n"
- " .align 2, 0\n"
- "._573:\n"
- " .word gUnknown_Debug_839C594\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8078E04()
-{
- asm(
- " push {r4, r5, r6, lr}\n"
- " add r6, r1, #0\n"
- " add r5, r2, #0\n"
- " b ._575\n"
- "._577:\n"
- " ldr r0, ._579 @ 0xfffff000\n"
- " add r5, r5, r0\n"
- " mov r0, #0x80\n"
- " lsl r0, r0, #0x5\n"
- " add r6, r6, r0\n"
- " add r0, r4, #1\n"
- "._575:\n"
- " lsl r0, r0, #0x10\n"
- " lsr r4, r0, #0x10\n"
- " add r0, r4, #0\n"
- " add r1, r6, #0\n"
- " bl ProgramFlashSectorAndVerify\n"
- " cmp r0, #0\n"
- " bne ._576 @cond_branch\n"
- " mov r0, #0x80\n"
- " lsl r0, r0, #0x5\n"
- " cmp r5, r0\n"
- " bhi ._577 @cond_branch\n"
- " mov r0, #0x1\n"
- " b ._578\n"
- "._580:\n"
- " .align 2, 0\n"
- "._579:\n"
- " .word 0xfffff000\n"
- "._576:\n"
- " mov r0, #0x0\n"
- "._578:\n"
- " pop {r4, r5, r6}\n"
- " pop {r1}\n"
- " bx r1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8078E40()
-{
- asm(
- " push {r4, r5, r6, lr}\n"
- " add r4, r0, #0\n"
- " add r5, r1, #0\n"
- " add r6, r2, #0\n"
- " lsl r4, r4, #0x18\n"
- " lsr r4, r4, #0x18\n"
- " bl m4aSoundVSyncOff\n"
- " add r0, r4, #0\n"
- " add r1, r5, #0\n"
- " add r2, r6, #0\n"
- " bl DebugMenu_8078E04\n"
- " add r4, r0, #0\n"
- " bl m4aSoundVSyncOn\n"
- " add r0, r4, #0\n"
- " pop {r4, r5, r6}\n"
- " pop {r1}\n"
- " bx r1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8078E68()
-{
- asm(
- " push {r4, lr}\n"
- " add r4, r1, #0\n"
- " add r3, r2, #0\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x18\n"
- " mov r1, #0x0\n"
- " add r2, r4, #0\n"
- " bl ReadFlash\n"
- " pop {r4}\n"
- " pop {r0}\n"
- " bx r0\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8078E80()
-{
- asm(
- " push {r4, lr}\n"
- " add r4, r0, #0\n"
- " mov r0, #0x2\n"
- " mov r1, #0xf\n"
- " mov r2, #0x16\n"
- " mov r3, #0x10\n"
- " bl Menu_BlankWindowRect\n"
- " ldr r1, ._581 @ gUnknown_Debug_839C5F4\n"
- " mov r2, #0x0\n"
- " ldsh r0, [r4, r2]\n"
- " lsl r0, r0, #0x3\n"
- " add r0, r0, r1\n"
- " ldrb r1, [r0, #0x4]\n"
- " mov r0, #0xd0\n"
- " mov r2, #0xf\n"
- " bl sub_8071F60\n"
- " pop {r4}\n"
- " pop {r0}\n"
- " bx r0\n"
- "._582:\n"
- " .align 2, 0\n"
- "._581:\n"
- " .word gUnknown_Debug_839C5F4\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8078EB0()
-{
- asm(
- " push {r4, r5, lr}\n"
- " add r5, r0, #0\n"
- " ldr r4, ._583 @ gStringVar1\n"
- " mov r0, #0x2\n"
- " ldsh r1, [r5, r0]\n"
- " add r0, r4, #0\n"
- " mov r2, #0x1\n"
- " mov r3, #0x3\n"
- " bl ConvertIntToDecimalStringN\n"
- " add r0, r4, #0\n"
- " mov r1, #0x2\n"
- " mov r2, #0x11\n"
- " bl Menu_PrintText\n"
- " mov r0, #0xf0\n"
- " mov r1, #0x5\n"
- " mov r2, #0x11\n"
- " bl sub_8071F60\n"
- " mov r0, #0x4\n"
- " ldsh r1, [r5, r0]\n"
- " add r0, r4, #0\n"
- " mov r2, #0x2\n"
- " mov r3, #0x2\n"
- " bl ConvertIntToDecimalStringN\n"
- " add r0, r4, #0\n"
- " mov r1, #0x6\n"
- " mov r2, #0x11\n"
- " bl Menu_PrintText\n"
- " mov r0, #0xf0\n"
- " mov r1, #0x8\n"
- " mov r2, #0x11\n"
- " bl sub_8071F60\n"
- " mov r0, #0x6\n"
- " ldsh r1, [r5, r0]\n"
- " add r0, r4, #0\n"
- " mov r2, #0x2\n"
- " mov r3, #0x2\n"
- " bl ConvertIntToDecimalStringN\n"
- " add r0, r4, #0\n"
- " mov r1, #0x9\n"
- " mov r2, #0x11\n"
- " bl Menu_PrintText\n"
- " pop {r4, r5}\n"
- " pop {r0}\n"
- " bx r0\n"
- "._584:\n"
- " .align 2, 0\n"
- "._583:\n"
- " .word gStringVar1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8078F1C()
-{
- asm(
- " push {r4, r5, r6, lr}\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x18\n"
- " lsl r4, r0, #0x2\n"
- " add r4, r4, r0\n"
- " lsl r4, r4, #0x3\n"
- " ldr r6, ._585 @ gTasks\n"
- " add r5, r4, r6\n"
- " mov r0, #0x0\n"
- " strh r0, [r5]\n"
- " ldr r1, ._585 + 4 @ gSaveBlock2\n"
- " ldrh r0, [r1, #0xe]\n"
- " strh r0, [r5, #0x2]\n"
- " ldrb r0, [r1, #0x10]\n"
- " strh r0, [r5, #0x4]\n"
- " ldrb r0, [r1, #0x11]\n"
- " strh r0, [r5, #0x6]\n"
- " bl Menu_DisplayDialogueFrame\n"
- " add r0, r5, #0\n"
- " bl DebugMenu_8078EB0\n"
- " add r0, r5, #0\n"
- " bl DebugMenu_8078E80\n"
- " sub r6, r6, #0x8\n"
- " add r4, r4, r6\n"
- " ldr r0, ._585 + 8 @ DebugMenu_8078F68\n"
- " str r0, [r4]\n"
- " pop {r4, r5, r6}\n"
- " pop {r0}\n"
- " bx r0\n"
- "._586:\n"
- " .align 2, 0\n"
- "._585:\n"
- " .word gTasks+0x8\n"
- " .word gSaveBlock2\n"
- " .word DebugMenu_8078F68+1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8078F68()
-{
- asm(
- " push {r4, r5, r6, lr}\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x18\n"
- " lsl r1, r0, #0x2\n"
- " add r1, r1, r0\n"
- " lsl r5, r1, #0x3\n"
- " ldr r6, ._589 @ gTasks\n"
- " add r4, r5, r6\n"
- " ldr r3, ._589 + 4 @ gMain\n"
- " ldrh r1, [r3, #0x2e]\n"
- " mov r0, #0x1\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq ._587 @cond_branch\n"
- " ldr r1, ._589 + 8 @ gSaveBlock2\n"
- " ldrh r0, [r4, #0x2]\n"
- " strh r0, [r1, #0xe]\n"
- " ldrh r0, [r4, #0x4]\n"
- " strb r0, [r1, #0x10]\n"
- " ldrh r0, [r4, #0x6]\n"
- " strb r0, [r1, #0x11]\n"
- " mov r0, #0x49\n"
- " bl PlaySE\n"
- " b ._588\n"
- "._590:\n"
- " .align 2, 0\n"
- "._589:\n"
- " .word gTasks+0x8\n"
- " .word gMain\n"
- " .word gSaveBlock2\n"
- "._587:\n"
- " mov r0, #0x2\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq ._591 @cond_branch\n"
- "._588:\n"
- " add r0, r6, #0\n"
- " sub r0, r0, #0x8\n"
- " add r0, r5, r0\n"
- " ldr r1, ._593 @ DebugMenu_8079020\n"
- " str r1, [r0]\n"
- " b ._601\n"
- "._594:\n"
- " .align 2, 0\n"
- "._593:\n"
- " .word DebugMenu_8079020+1\n"
- "._591:\n"
- " mov r0, #0x20\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq ._595 @cond_branch\n"
- " ldrh r1, [r4]\n"
- " mov r2, #0x0\n"
- " ldsh r0, [r4, r2]\n"
- " cmp r0, #0\n"
- " beq ._601 @cond_branch\n"
- " sub r0, r1, #1\n"
- " b ._597\n"
- "._595:\n"
- " mov r0, #0x10\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq ._598 @cond_branch\n"
- " ldrh r0, [r4]\n"
- " cmp r0, #0x1\n"
- " bhi ._601 @cond_branch\n"
- " add r0, r0, #0x1\n"
- "._597:\n"
- " strh r0, [r4]\n"
- " add r0, r4, #0\n"
- " bl DebugMenu_8078E80\n"
- " b ._601\n"
- "._598:\n"
- " mov r0, #0x0\n"
- " ldsh r2, [r4, r0]\n"
- " lsl r2, r2, #0x3\n"
- " ldr r0, ._602 @ gUnknown_Debug_839C5F4\n"
- " add r2, r2, r0\n"
- " ldrb r0, [r2, #0x5]\n"
- " lsl r0, r0, #0x1\n"
- " add r0, r4, r0\n"
- " ldrh r1, [r2]\n"
- " ldrh r2, [r2, #0x2]\n"
- " ldrh r3, [r3, #0x30]\n"
- " bl DebugMenu_8077DD8\n"
- " cmp r0, #0x1\n"
- " bne ._601 @cond_branch\n"
- " add r0, r4, #0\n"
- " bl DebugMenu_8078EB0\n"
- "._601:\n"
- " pop {r4, r5, r6}\n"
- " pop {r0}\n"
- " bx r0\n"
- "._603:\n"
- " .align 2, 0\n"
- "._602:\n"
- " .word gUnknown_Debug_839C5F4\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8079020()
-{
- asm(
- " push {r4, lr}\n"
- " add r4, r0, #0\n"
- " lsl r4, r4, #0x18\n"
- " lsr r4, r4, #0x18\n"
- " bl Menu_EraseScreen\n"
- " bl ScriptContext2_Disable\n"
- " add r0, r4, #0\n"
- " bl DestroyTask\n"
- " pop {r4}\n"
- " pop {r0}\n"
- " bx r0\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-u8 DebugMenu_PTime()
-{
- asm(
- " push {lr}\n"
- " bl CloseMenu\n"
- " ldr r0, ._604 @ DebugMenu_8078F1C\n"
- " mov r1, #0x50\n"
- " bl CreateTask\n"
- " bl ScriptContext2_Enable\n"
- " mov r0, #0x1\n"
- " pop {r1}\n"
- " bx r1\n"
- "._605:\n"
- " .align 2, 0\n"
- "._604:\n"
- " .word DebugMenu_8078F1C+1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8079058()
-{
- asm(
- " push {r4, r5, lr}\n"
- " lsl r0, r0, #0x18\n"
- " lsr r5, r0, #0x18\n"
- " ldr r1, ._610 @ gTasks\n"
- " lsl r0, r5, #0x2\n"
- " add r0, r0, r5\n"
- " lsl r0, r0, #0x3\n"
- " add r4, r0, r1\n"
- " mov r0, #0x8\n"
- " ldsh r1, [r4, r0]\n"
- " cmp r1, #0x1\n"
- " beq ._606 @cond_branch\n"
- " cmp r1, #0x1\n"
- " bgt ._607 @cond_branch\n"
- " cmp r1, #0\n"
- " beq ._608 @cond_branch\n"
- " b ._620\n"
- "._611:\n"
- " .align 2, 0\n"
- "._610:\n"
- " .word gTasks\n"
- "._607:\n"
- " cmp r1, #0x2\n"
- " beq ._612 @cond_branch\n"
- " b ._620\n"
- "._608:\n"
- " ldr r0, ._615 @ gUnknown_Debug_03004BD0\n"
- " str r1, [r0]\n"
- " bl Menu_DisplayDialogueFrame\n"
- " b ._614\n"
- "._616:\n"
- " .align 2, 0\n"
- "._615:\n"
- " .word gUnknown_Debug_03004BD0\n"
- "._606:\n"
- " ldr r0, ._618 @ gDebug0x839C60C\n"
- " mov r1, #0x4\n"
- " mov r2, #0xf\n"
- " bl Menu_PrintText\n"
- " mov r0, #0x14\n"
- " mov r1, #0x8\n"
- " mov r2, #0x1\n"
- " bl DisplayYesNoMenu\n"
- "._614:\n"
- " ldrh r0, [r4, #0x8]\n"
- " add r0, r0, #0x1\n"
- " strh r0, [r4, #0x8]\n"
- " b ._620\n"
- "._619:\n"
- " .align 2, 0\n"
- "._618:\n"
- " .word gDebug0x839C60C\n"
- "._612:\n"
- " bl Menu_ProcessInputNoWrap_\n"
- " lsl r0, r0, #0x18\n"
- " asr r1, r0, #0x18\n"
- " mov r0, #0x2\n"
- " neg r0, r0\n"
- " cmp r1, r0\n"
- " beq ._620 @cond_branch\n"
- " cmp r1, #0\n"
- " bne ._621 @cond_branch\n"
- " ldr r1, ._623 @ gUnknown_Debug_03004BD0\n"
- " mov r0, #0x1\n"
- " b ._622\n"
- "._624:\n"
- " .align 2, 0\n"
- "._623:\n"
- " .word gUnknown_Debug_03004BD0\n"
- "._621:\n"
- " ldr r1, ._625 @ gUnknown_Debug_03004BD0\n"
- " mov r0, #0x0\n"
- "._622:\n"
- " str r0, [r1]\n"
- " bl Menu_EraseScreen\n"
- " bl ScriptContext2_Disable\n"
- " add r0, r5, #0\n"
- " bl DestroyTask\n"
- "._620:\n"
- " pop {r4, r5}\n"
- " pop {r0}\n"
- " bx r0\n"
- "._626:\n"
- " .align 2, 0\n"
- "._625:\n"
- " .word gUnknown_Debug_03004BD0\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-u8 DebugMenu_OpenMurakawa()
-{
- asm(
- " push {lr}\n"
- " bl CloseMenu\n"
- " ldr r0, ._627 @ DebugMenu_8079058\n"
- " mov r1, #0x50\n"
- " bl CreateTask\n"
- " bl ScriptContext2_Enable\n"
- " mov r0, #0x1\n"
- " pop {r1}\n"
- " bx r1\n"
- "._628:\n"
- " .align 2, 0\n"
- "._627:\n"
- " .word DebugMenu_8079058+1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void DebugMenu_8079110()
-{
- asm(
- " push {r4, r5, lr}\n"
- " lsl r0, r0, #0x18\n"
- " lsr r5, r0, #0x18\n"
- " ldr r1, ._633 @ gTasks\n"
- " lsl r0, r5, #0x2\n"
- " add r0, r0, r5\n"
- " lsl r0, r0, #0x3\n"
- " add r4, r0, r1\n"
- " mov r1, #0x8\n"
- " ldsh r0, [r4, r1]\n"
- " cmp r0, #0x1\n"
- " beq ._629 @cond_branch\n"
- " cmp r0, #0x1\n"
- " bgt ._630 @cond_branch\n"
- " cmp r0, #0\n"
- " beq ._631 @cond_branch\n"
- " b ._642\n"
- "._634:\n"
- " .align 2, 0\n"
- "._633:\n"
- " .word gTasks\n"
- "._630:\n"
- " cmp r0, #0x2\n"
- " beq ._635 @cond_branch\n"
- " b ._642\n"
- "._631:\n"
- " bl Menu_DisplayDialogueFrame\n"
- " b ._637\n"
- "._629:\n"
- " ldr r0, ._639 @ Str_839C61A\n"
- " mov r1, #0x2\n"
- " mov r2, #0xf\n"
- " bl MenuPrintMessage\n"
- "._637:\n"
- " ldrh r0, [r4, #0x8]\n"
- " add r0, r0, #0x1\n"
- " strh r0, [r4, #0x8]\n"
- " b ._642\n"
- "._640:\n"
- " .align 2, 0\n"
- "._639:\n"
- " .word Str_839C61A\n"
- "._635:\n"
- " bl Menu_UpdateWindowText\n"
- " lsl r0, r0, #0x18\n"
- " cmp r0, #0\n"
- " beq ._642 @cond_branch\n"
- " ldr r0, ._643 @ gMain\n"
- " ldrh r1, [r0, #0x2e]\n"
- " mov r0, #0x1\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq ._642 @cond_branch\n"
- " bl Menu_EraseScreen\n"
- " bl ScriptContext2_Disable\n"
- " add r0, r5, #0\n"
- " bl DestroyTask\n"
- "._642:\n"
- " pop {r4, r5}\n"
- " pop {r0}\n"
- " bx r0\n"
- "._644:\n"
- " .align 2, 0\n"
- "._643:\n"
- " .word gMain\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-u8 DebugMenu_OpenKiwa()
-{
- asm(
- " push {lr}\n"
- " bl CloseMenu\n"
- " ldr r0, ._645 @ DebugMenu_8079110\n"
- " mov r1, #0x50\n"
- " bl CreateTask\n"
- " bl ScriptContext2_Enable\n"
- " pop {r1}\n"
- " bx r1\n"
- "._646:\n"
- " .align 2, 0\n"
- "._645:\n"
- " .word DebugMenu_8079110+1\n"
- "\n"
- );
+ CloseMenu();
+ CreateTask(DebugMenu_8078BD4, 80);
+ ScriptContext2_Enable();
+ return TRUE;
+}
+
+const u8 Str_839C574[] = _("write to flash");
+const u8 Str_839C583[] = _("read from flash");
+
+const struct MenuAction gUnknown_Debug_839C594[] = {
+ {Str_839C574, DebugMenu_8078C80},
+ {Str_839C583, DebugMenu_8078D30}
+};
+
+const u8 Str_839C5A4[] = _("Press A, begin to write\n"
+ "Press B, cancel");
+
+bool8 DebugMenu_8078C80(void)
+{
+ Menu_DisplayDialogueFrame();
+ Menu_PrintText(Str_839C5A4, 2, 15);
+ gMenuCallback = DebugMenu_8078CA8;
+ return FALSE;
+}
+
+bool8 DebugMenu_8078CA8(void)
+{
+ if (gMain.newKeys & A_BUTTON)
+ {
+ gMenuCallback = DebugMenu_8078CE4;
+ return FALSE;
+ }
+ if (gMain.newKeys & B_BUTTON)
+ {
+ CloseMenu();
+ return TRUE;
+ }
+ return FALSE;
+}
+
+const u8 Str_839C5CC[] =_("かきこみ せいこう");
+const u8 Str_839C5D6[] =_("よみこみせいこう");
+const u8 Str_839C5DF[] =_("かきこみ しっぱい");
+const u8 Str_839C5E9[] =_("よみこみ しっぱい");
+
+bool8 DebugMenu_8078CE4(void)
+{
+ if (DebugMenu_8078E40(0, gSharedMem, 0x20000) == TRUE)
+ StringCopy(gStringVar4, Str_839C5CC);
+ else
+ StringCopy(gStringVar4, Str_839C5DF);
+ gMenuCallback = DebugMenu_8078D7C;
+ return FALSE;
+}
+
+bool8 DebugMenu_8078D30(void)
+{
+ u8 * data = gSharedMem;
+ u8 i;
+
+ for (i = 0; i < 32; i++)
+ {
+ DebugMenu_8078E68(i, data, 0x1000);
+ data += 0x1000;
+ }
+ StringCopy(gStringVar4, Str_839C5D6);
+ gMenuCallback = DebugMenu_8078D7C;
+ return FALSE;
+}
+
+bool8 DebugMenu_8078D7C(void)
+{
+ Menu_DisplayDialogueFrame();
+ Menu_PrintText(gStringVar4, 2, 15);
+ gMenuCallback = DebugMenu_8078DA4;
+ return FALSE;
+}
+
+bool8 DebugMenu_8078DA4(void)
+{
+ if (gMain.newKeys & A_BUTTON)
+ {
+ CloseMenu();
+ return TRUE;
+ }
+ return FALSE;
+}
+
+u8 DebugMenu_MeTooBackupMan(void)
+{
+ Menu_EraseScreen();
+ DebugMenu_8077D24(gUnknown_Debug_839C594, 12, ARRAY_COUNT(gUnknown_Debug_839C594));
+ gMenuCallback = DebugMenu_8078DF0;
+ return FALSE;
+}
+
+bool8 DebugMenu_8078DF0()
+{
+ return DebugMenu_8077D78(gUnknown_Debug_839C594);
+}
+
+bool32 DebugMenu_8078E04(u16 a0, u8 * a1, u32 a2)
+{
+ while (1)
+ {
+ if (ProgramFlashSectorAndVerify(a0, a1))
+ return FALSE;
+ if (a2 <= 0x1000)
+ break;
+ a2 -= 0x1000;
+ a1 += 0x1000;
+ a0++;
+ }
+ return TRUE;
+}
+
+bool32 DebugMenu_8078E40(u8 a0, u8 * a1, u32 a2)
+{
+ bool32 result;
+ m4aSoundVSyncOff();
+ result = DebugMenu_8078E04(a0, a1, a2);
+ m4aSoundVSyncOn();
+ return result;
+}
+
+void DebugMenu_8078E68(u8 a0, u8 * a1, u32 a2)
+{
+ ReadFlash(a0, 0, a1, a2);
+}
+
+struct GameTimeDebugMenuStruct {
+ u16 unk0;
+ u16 unk2;
+ u8 unk4;
+ u8 unk5;
+};
+
+const struct GameTimeDebugMenuStruct gUnknown_Debug_839C5F4[] = {
+ {0, 999, 2, 1},
+ {0, 59, 6, 2},
+ {0, 59, 9, 3}
+};
+
+void DebugMenu_8078E80(s16 * a0)
+{
+ Menu_BlankWindowRect(2, 15, 22, 16);
+ sub_8071F60(0xd0, gUnknown_Debug_839C5F4[*a0].unk4, 15);
+}
+
+void DebugMenu_8078EB0(s16 * a0)
+{
+ ConvertIntToDecimalStringN(gStringVar1, a0[1], STR_CONV_MODE_RIGHT_ALIGN, 3);
+ Menu_PrintText(gStringVar1, 2, 17);
+ sub_8071F60(0xf0, 5, 17);
+ ConvertIntToDecimalStringN(gStringVar1, a0[2], STR_CONV_MODE_LEADING_ZEROS, 2);
+ Menu_PrintText(gStringVar1, 6, 17);
+ sub_8071F60(0xf0, 8, 17);
+ ConvertIntToDecimalStringN(gStringVar1, a0[3], STR_CONV_MODE_LEADING_ZEROS, 2);
+ Menu_PrintText(gStringVar1, 9, 17);
+}
+
+void DebugMenu_8078F1C(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ data[0] = 0;
+ data[1] = gSaveBlock2.playTimeHours;
+ data[2] = gSaveBlock2.playTimeMinutes;
+ data[3] = gSaveBlock2.playTimeSeconds;
+
+ Menu_DisplayDialogueFrame();
+ DebugMenu_8078EB0(data);
+ DebugMenu_8078E80(data);
+ gTasks[taskId].func = DebugMenu_8078F68;
+}
+
+void DebugMenu_8078F68(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ if (gMain.newKeys & A_BUTTON)
+ {
+ gSaveBlock2.playTimeHours = data[1];
+ gSaveBlock2.playTimeMinutes = data[2];
+ gSaveBlock2.playTimeSeconds = data[3];
+ PlaySE(SE_PINPON);
+ gTasks[taskId].func = DebugMenu_8079020;
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ gTasks[taskId].func = DebugMenu_8079020;
+ }
+ else if (gMain.newKeys & DPAD_LEFT)
+ {
+ if ((u16)data[0] > 0)
+ {
+ data[0]--;
+ DebugMenu_8078E80(data);
+ }
+ }
+ else if (gMain.newKeys & DPAD_RIGHT)
+ {
+ if ((u16)data[0] < 2)
+ {
+ data[0]++;
+ DebugMenu_8078E80(data);
+ }
+ }
+ else
+ {
+ const struct GameTimeDebugMenuStruct *r2 = gUnknown_Debug_839C5F4 + data[0];
+ if (DebugMenu_8077DD8(data + r2->unk5, r2->unk0, r2->unk2, gMain.newAndRepeatedKeys) == TRUE)
+ DebugMenu_8078EB0(data);
+ }
+}
+
+void DebugMenu_8079020(u8 taskId)
+{
+ Menu_EraseScreen();
+ ScriptContext2_Disable();
+ DestroyTask(taskId);
+}
+
+u8 DebugMenu_PTime(void)
+{
+ CloseMenu();
+ CreateTask(DebugMenu_8078F1C, 80);
+ ScriptContext2_Enable();
+ return TRUE;
+}
+
+const u8 gDebug0x839C60C[] = _("Set FLASH ERR");
+
+void DebugMenu_8079058(u8 taskId)
+{
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ gUnknown_Debug_03004BD0 = 0;
+ Menu_DisplayDialogueFrame();
+ gTasks[taskId].data[0]++;
+ break;
+ case 1:
+ Menu_PrintText(gDebug0x839C60C, 4, 15);
+ DisplayYesNoMenu(20, 8, 1);
+ gTasks[taskId].data[0]++;
+ break;
+ case 2:
+ switch (Menu_ProcessInputNoWrap_())
+ {
+ case -2:
+ return;
+ case 0:
+ gUnknown_Debug_03004BD0 = 1;
+ break;
+ default:
+ gUnknown_Debug_03004BD0 = 0;
+ break;
+ }
+ Menu_EraseScreen();
+ ScriptContext2_Disable();
+ DestroyTask(taskId);
+ break;
+ }
+}
+
+u8 DebugMenu_OpenMurakawa(void)
+{
+ CloseMenu();
+ CreateTask(DebugMenu_8079058, 80);
+ ScriptContext2_Enable();
+ return TRUE;
+}
+
+const u8 Str_839C61A[] = _("abcde; abcde: ABCDE; ABCDE:\p"
+ "Tableaux des verbes du 2{SUPER_E} groupe.\p"
+ "La1{SUPER_RE} chose à apprendre c’est de lire.\p"
+ "Tableaux des verbes du 1{SUPER_ER} groupe.\p"
+ "“あいうえおかきくけコさしすせそたちつてとな”\n"
+ "<にぬネのはひふへほマみむめもやゆよらりるれろわャッ>\p"
+ "をんゃゅょアイウエオカキクケサシスルレロワ,");
+
+void DebugMenu_8079110(u8 taskId)
+{
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ Menu_DisplayDialogueFrame();
+ gTasks[taskId].data[0]++;
+ break;
+ case 1:
+ MenuPrintMessage(Str_839C61A, 2, 15);
+ gTasks[taskId].data[0]++;
+ break;
+ case 2:
+ if (Menu_UpdateWindowText() && gMain.newKeys & A_BUTTON)
+ {
+ Menu_EraseScreen();
+ ScriptContext2_Disable();
+ DestroyTask(taskId);
+ }
+ break;
+ }
+}
+
+u8 DebugMenu_OpenKiwa(void)
+{
+ CloseMenu();
+ CreateTask(DebugMenu_8079110, 80);
+ ScriptContext2_Enable();
+ // return TRUE;
}
#endif
diff --git a/src/debug/taya_debug_window.c b/src/debug/taya_debug_window.c
index f7e0e3770..c5f6fc0ec 100644
--- a/src/debug/taya_debug_window.c
+++ b/src/debug/taya_debug_window.c
@@ -1,6 +1,1087 @@
#if DEBUG
#include "global.h"
+#include "constants/species.h"
+#include "constants/opponents.h"
+#include "random.h"
+#include "palette.h"
+#include "ewram.h"
+#include "menu.h"
+#include "easy_chat.h"
+#include "event_data.h"
+#include "string_util.h"
+#include "main.h"
+#include "start_menu.h"
+#include "field_weather.h"
+#include "mauville_man.h"
+#include "pokemon_storage_system.h"
+#include "lottery_corner.h"
+#include "battle_setup.h"
+#include "region_map.h"
+#include "overworld.h"
-EWRAM_DATA u8 unk_2030224[4] = { 0 };
+bool8 debug_sub_8090808(void);
+bool8 debug_sub_808560C(void);
+bool8 TayaDebugMenu_LanettesPC(void);
+bool8 TayaDebugMenu_SimpleText(void);
+bool8 TayaDebugMenu_OldMan(void);
+bool8 TayaDebugMenu_Trend(void);
+bool8 TayaDebugMenu_TrendR(void);
+bool8 TayaDebugMenu_TownFlags(void);
+bool8 TayaDebugMenu_AwardARibbon(void);
+bool8 TayaDebugMenu_PKMNLottery(void);
+bool8 TayaDebugMenu_Trainer(void);
+bool8 TayaDebugMenu_PokenavD(void);
+void debug_sub_80915BC(void);
+void debug_sub_80916AC(void);
-#endif
+EWRAM_DATA s8 sTayaTopMenuPage = 0;
+
+struct TayaLuckyNumberEwramStruct {
+ u8 digit;
+ u8 charbuf[7];
+ u16 curLuckyId;
+ s32 tempLuckyId;
+ u16 digitDeltaMagnitude;
+};
+
+struct TayaMonDataEwramStruct {
+ u8 data[6][3];
+ u8 charbuf[0x40];
+ u8 state;
+ u8 x;
+ u8 y;
+ u8 redraw;
+ u8 maxVal;
+};
+
+#define eTayaLuckyNumber (*(struct TayaLuckyNumberEwramStruct *)gSharedMem)
+#define eTayaMonData (*(struct TayaMonDataEwramStruct *)gSharedMem)
+
+const u8 gUnknown_Debug_083C4E54[] = _("Profile");
+const u8 gUnknown_Debug_083C4E5C[] = _("Battle’s start");
+const u8 gUnknown_Debug_083C4E6B[] = _("Good saying");
+const u8 gUnknown_Debug_083C4E77[] = _("Lose a battle");
+const u8 gUnknown_Debug_083C4E85[] = _("MAIL");
+const u8 gUnknown_Debug_083C4E8A[] = _("MAIL salutation");
+const u8 gUnknown_Debug_083C4E9A[] = _("BARD’s song");
+const u8 gUnknown_Debug_083C4EA6[] = _("Interview");
+const u8 gUnknown_Debug_083C4EB0[] = _("InterviewシBTス");
+
+const struct {
+ const u8 * text;
+ u32 unk4;
+} gUnknown_Debug_083C4EC0[] = {
+ {gUnknown_Debug_083C4E54, 0x0},
+ {gUnknown_Debug_083C4E5C, 0x1},
+ {gUnknown_Debug_083C4E6B, 0xD},
+ {gUnknown_Debug_083C4E77, 0x3},
+ {gUnknown_Debug_083C4E85, 0x4},
+ {gUnknown_Debug_083C4E8A, 0x5},
+ {gUnknown_Debug_083C4E9A, 0x6},
+ {gUnknown_Debug_083C4EA6, 0x7},
+ {gUnknown_Debug_083C4EB0, 0xC}
+};
+
+const u16 gUnknown_Debug_083C4F08[] = {0x45b, 0x430, 0x20f};
+
+const u8 gUnknown_Debug_083C4F0E[] = _("BARD");
+const u8 gUnknown_Debug_083C4F13[] = _("HIPSTER");
+const u8 gUnknown_Debug_083C4F1B[] = _("RECYCLE");
+const u8 gUnknown_Debug_083C4F23[] = _("STORYTELLER");
+const u8 gUnknown_Debug_083C4F2F[] = _("GIDDY GUY");
+const u8 gUnknown_Debug_083C4F39[] = _("Flag OFF");
+const u8 gUnknown_Debug_083C4F42[] = _("21 letters");
+const u8 gUnknown_Debug_083C4F4D[] = _("ナウくなる");
+
+const struct {
+ const u8 * text;
+ u8 filler[4];
+} gUnknown_Debug_083C4F54[] = {
+ {gUnknown_Debug_083C4F0E},
+ {gUnknown_Debug_083C4F13},
+ {gUnknown_Debug_083C4F1B},
+ {gUnknown_Debug_083C4F23},
+ {gUnknown_Debug_083C4F2F},
+ {gUnknown_Debug_083C4F39},
+ {gUnknown_Debug_083C4F42},
+ {gUnknown_Debug_083C4F4D}
+};
+
+const u8 gUnknown_Debug_083C4F94[] = _("しょうしょうおまちください!");
+const u8 gUnknown_Debug_083C4FA3[] = _("Weather");
+const u8 gUnknown_Debug_083C4FAB[] = _("LANETTE’S PC");
+const u8 gUnknown_Debug_083C4FB8[] = _("SimpleText");
+const u8 gUnknown_Debug_083C4FC3[] = _("Old man");
+const u8 gUnknown_Debug_083C4FCB[] = _("Trend");
+const u8 gUnknown_Debug_083C4FD1[] = _("Trend R");
+const u8 gUnknown_Debug_083C4FD9[] = _("Town flag");
+const u8 gUnknown_Debug_083C4FE3[] = _("Award a ribbon");
+const u8 gUnknown_Debug_083C4FF2[] = _("{PKMN}LOTTERY");
+const u8 gUnknown_Debug_083C4FFC[] = _("Trainer");
+const u8 gUnknown_Debug_083C5004[] = _("POKéNAV D");
+
+const struct MenuAction gUnknown_Debug_083C5010[] = {
+ {gUnknown_Debug_083C4FA3, debug_sub_808560C},
+ {gUnknown_Debug_083C4FAB, TayaDebugMenu_LanettesPC},
+ {gUnknown_Debug_083C4FB8, TayaDebugMenu_SimpleText},
+ {gUnknown_Debug_083C4FC3, TayaDebugMenu_OldMan},
+ {gUnknown_Debug_083C4FCB, TayaDebugMenu_Trend},
+ {gUnknown_Debug_083C4FD1, TayaDebugMenu_TrendR},
+ {gUnknown_Debug_083C4FD9, TayaDebugMenu_TownFlags},
+ {gUnknown_Debug_083C4FE3, TayaDebugMenu_AwardARibbon},
+ {gUnknown_Debug_083C4FF2, TayaDebugMenu_PKMNLottery}
+};
+
+const struct MenuAction gUnknown_Debug_083C5058[] = {
+ {gUnknown_Debug_083C4FFC, TayaDebugMenu_Trainer},
+ {gUnknown_Debug_083C5004, TayaDebugMenu_PokenavD}
+};
+
+const struct {
+ const struct MenuAction *menuActions;
+ u8 nitems;
+} gUnknown_Debug_83C5068[] = {
+ {gUnknown_Debug_083C5010, 9},
+ {gUnknown_Debug_083C5058, 2}
+};
+
+const u8 gUnknown_Debug_083C5078[] = _("CHANP");
+const u8 gUnknown_Debug_083C507E[] = _("COOL");
+const u8 gUnknown_Debug_083C5083[] = _("BEAUTY");
+const u8 gUnknown_Debug_083C508A[] = _("CUTE");
+const u8 gUnknown_Debug_083C508F[] = _("SMART");
+const u8 gUnknown_Debug_083C5095[] = _("TOUGH");
+const u8 gUnknown_Debug_083C509B[] = _("WIN");
+const u8 gUnknown_Debug_083C509F[] = _("VICTORY");
+const u8 gUnknown_Debug_083C50A7[] = _("BROMIDE");
+const u8 gUnknown_Debug_083C50AF[] = _("ACCESSIT");
+const u8 gUnknown_Debug_083C50B8[] = _("MARINE");
+const u8 gUnknown_Debug_083C50BF[] = _("LAND");
+const u8 gUnknown_Debug_083C50C4[] = _("SKY");
+const u8 gUnknown_Debug_083C50C8[] = _("COUNTRY");
+const u8 gUnknown_Debug_083C50D0[] = _("NATIONAL");
+const u8 gUnknown_Debug_083C50D9[] = _("EARTH");
+const u8 gUnknown_Debug_083C50DF[] = _("WORLD");
+const u8 gUnknown_Debug_083C50E5[] = _("     ");
+
+const struct {
+ const u8 * text;
+ u16 param;
+} gUnknown_Debug_083C50EC[][3] = {
+ {
+ {gUnknown_Debug_083C5078, MON_DATA_CHAMPION_RIBBON},
+ {gUnknown_Debug_083C507E, MON_DATA_COOL_RIBBON},
+ {gUnknown_Debug_083C5083, MON_DATA_BEAUTY_RIBBON}
+ }, {
+ {gUnknown_Debug_083C508A, MON_DATA_CUTE_RIBBON},
+ {gUnknown_Debug_083C508F, MON_DATA_SMART_RIBBON},
+ {gUnknown_Debug_083C5095, MON_DATA_TOUGH_RIBBON}
+ }, {
+ {gUnknown_Debug_083C509B, MON_DATA_WINNING_RIBBON},
+ {gUnknown_Debug_083C509F, MON_DATA_VICTORY_RIBBON},
+ {gUnknown_Debug_083C50A7, MON_DATA_ARTIST_RIBBON}
+ }, {
+ {gUnknown_Debug_083C50AF, MON_DATA_EFFORT_RIBBON},
+ {gUnknown_Debug_083C50B8, MON_DATA_GIFT_RIBBON_1},
+ {gUnknown_Debug_083C50BF, MON_DATA_GIFT_RIBBON_2}
+ }, {
+ {gUnknown_Debug_083C50C4, MON_DATA_GIFT_RIBBON_3},
+ {gUnknown_Debug_083C50C8, MON_DATA_GIFT_RIBBON_4},
+ {gUnknown_Debug_083C50D0, MON_DATA_GIFT_RIBBON_5}
+ }, {
+ {gUnknown_Debug_083C50D9, MON_DATA_GIFT_RIBBON_6},
+ {gUnknown_Debug_083C50DF, MON_DATA_GIFT_RIBBON_7},
+ {gUnknown_Debug_083C50E5, 0 /* sentinel */}
+ }
+};
+
+const u8 gUnknown_Debug_083C517C[] = _("Select Ribbon");
+
+bool8 TayaDebugMenu_Trend(void)
+{
+ u8 sp00[32];
+ u8 sp20[8];
+ u16 i;
+ struct EasyChatPair *pair;
+
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 30, 11);
+ pair = gSaveBlock1.easyChatPairs;
+
+ for (i = 0; i < 5; i++)
+ {
+ u8 * r4;
+
+ sp00[0] = pair->unk1_6 ? CHAR_0 + 1 : CHAR_0 + 0;
+ EasyChat_GetWordText(sp20, pair->words[0]);
+ r4 = StringCopyPadded(sp00 + 1, sp20, CHAR_SPACE, 7);
+ EasyChat_GetWordText(sp20, pair->words[1]);
+ r4 = StringCopyPadded(r4, sp20, CHAR_SPACE, 8);
+ r4 = ConvertIntToDecimalStringN(r4, pair->unk0_0, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ *r4++ = CHAR_SPACE;
+ r4 = ConvertIntToDecimalStringN(r4, pair->unk0_7, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ *r4++ = CHAR_SPACE;
+ ConvertIntToDecimalStringN(r4, pair->unk2, STR_CONV_MODE_RIGHT_ALIGN, 5);
+ Menu_PrintText(sp00, 1, 2 * i + 1);
+ pair++;
+ }
+ gMenuCallback = debug_sub_8090808;
+ return FALSE;
+}
+
+bool8 debug_sub_8090808(void)
+{
+ if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ {
+ Menu_EraseScreen();
+ CloseMenu();
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+bool8 TayaDebugMenu_TrendR(void)
+{
+ u16 i;
+ u16 j;
+
+ for (i = 0; i < 5; i++)
+ {
+ for (j = 0; j < 2; j++)
+ {
+ gSaveBlock1.easyChatPairs[i].words[j] = sub_80EB72C(Random() % 22);
+ }
+ }
+ Menu_EraseScreen();
+ CloseMenu();
+ return TRUE;
+}
+
+bool8 debug_sub_8090880(void)
+{
+ if (!UpdatePaletteFade())
+ {
+ sub_80E60D8();
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+bool8 debug_sub_809089C(void)
+{
+ s8 input = Menu_ProcessInput();
+
+ switch (input)
+ {
+ case -1:
+ CloseMenu();
+ return TRUE;
+ case -2:
+ return FALSE;
+ default:
+ gSpecialVar_0x8004 = gUnknown_Debug_083C4EC0[input].unk4;
+ switch (gSpecialVar_0x8004)
+ {
+ case 5:
+ case 7:
+ case 8:
+ case 11:
+ case 12:
+ gSpecialVar_0x8005 = 0;
+ gSpecialVar_0x8006 = 0;
+ default:
+ FadeScreen(1, 0);
+ gMenuCallback = debug_sub_8090880;
+ break;
+ }
+ return FALSE;
+ }
+}
+
+bool8 TayaDebugMenu_SimpleText(void)
+{
+ Menu_DrawStdWindowFrame(0, 0, 12, 19);
+ Menu_PrintItems(1, 1, ARRAY_COUNT(gUnknown_Debug_083C4EC0), gUnknown_Debug_083C4EC0);
+ InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C4EC0), 0, 11);
+ gMenuCallback = debug_sub_809089C;
+ return FALSE;
+}
+
+bool8 debug_sub_8090984(void)
+{
+ s8 input = Menu_ProcessInput();
+
+ switch (input)
+ {
+ case -1:
+ CloseMenu();
+ return TRUE;
+ default:
+ if (input < 5)
+ {
+ debug_sub_810B32C(input);
+ CloseMenu();
+ return TRUE;
+ }
+ break;
+ case -2:
+ return FALSE;
+ }
+
+ if (input == 5)
+ {
+ sub_80F7F30();
+ }
+ else if (input == 6)
+ {
+ u16 i;
+
+ for (i = 0; i < 3; i++)
+ {
+ union MauvilleMan *mauvilleMan = &gSaveBlock1.mauvilleMan;
+ mauvilleMan->bard.songLyrics[i] = gUnknown_Debug_083C4F08[i];
+ mauvilleMan->bard.temporaryLyrics[i] = gUnknown_Debug_083C4F08[i];
+ gSaveBlock1.easyChats.unk2B28[i] = gUnknown_Debug_083C4F08[i];
+ }
+ }
+ else if (input == 7)
+ {
+ u16 i;
+
+ for (i = 0; i < 33; i++)
+ {
+ sub_80EB890(i);
+ }
+ }
+ CloseMenu();
+ return TRUE;
+}
+
+bool8 TayaDebugMenu_OldMan(void)
+{
+ Menu_DrawStdWindowFrame(0, 0, 10, 17);
+ Menu_PrintItems(1, 1, ARRAY_COUNT(gUnknown_Debug_083C4F54), gUnknown_Debug_083C4F54);
+ InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C4F54), GetCurrentMauvilleOldMan(), 9);
+ gMenuCallback = debug_sub_8090984;
+ return FALSE;
+}
+
+bool8 TayaDebugMenu_LanettesPC(void)
+{
+ Menu_EraseScreen();
+ ShowPokemonStorageSystem();
+ return TRUE;
+}
+
+bool8 TayaDebugMenu_TownFlags(void)
+{
+ FlagSet(FLAG_VISITED_LITTLEROOT_TOWN);
+ FlagSet(FLAG_VISITED_OLDALE_TOWN);
+ FlagSet(FLAG_VISITED_DEWFORD_TOWN);
+ FlagSet(FLAG_VISITED_LAVARIDGE_TOWN);
+ FlagSet(FLAG_VISITED_FALLARBOR_TOWN);
+ FlagSet(FLAG_VISITED_VERDANTURF_TOWN);
+ FlagSet(FLAG_VISITED_PACIFIDLOG_TOWN);
+ FlagSet(FLAG_VISITED_PETALBURG_CITY);
+ FlagSet(FLAG_VISITED_SLATEPORT_CITY);
+ FlagSet(FLAG_VISITED_MAUVILLE_CITY);
+ FlagSet(FLAG_VISITED_RUSTBORO_CITY);
+ FlagSet(FLAG_VISITED_FORTREE_CITY);
+ FlagSet(FLAG_VISITED_LILYCOVE_CITY);
+ FlagSet(FLAG_VISITED_MOSSDEEP_CITY);
+ FlagSet(FLAG_VISITED_SOOTOPOLIS_CITY);
+ FlagSet(FLAG_VISITED_EVER_GRANDE_CITY);
+ FlagSet(FLAG_LANDMARK_BATTLE_TOWER);
+ FlagSet(FLAG_LANDMARK_SOUTHERN_ISLAND);
+ FlagSet(FLAG_LANDMARK_FIERY_PATH);
+ FlagSet(FLAG_SYS_POKEMON_LEAGUE_FLY);
+ FlagSet(FLAG_LANDMARK_ISLAND_CAVE);
+ FlagSet(FLAG_LANDMARK_DESERT_RUINS);
+ FlagSet(FLAG_LANDMARK_FOSSIL_MANIACS_HOUSE);
+ FlagSet(FLAG_LANDMARK_SCORCHED_SLAB);
+ FlagSet(FLAG_LANDMARK_ANCIENT_TOMB);
+ FlagSet(FLAG_LANDMARK_TUNNELERS_REST_HOUSE);
+ FlagSet(FLAG_LANDMARK_HUNTERS_HOUSE);
+ FlagSet(FLAG_LANDMARK_SEALED_CHAMBER);
+ FlagSet(FLAG_LANDMARK_FLOWER_SHOP);
+ FlagSet(FLAG_LANDMARK_MR_BRINEY_HOUSE);
+ FlagSet(FLAG_LANDMARK_ABANDONED_SHIP);
+ FlagSet(FLAG_LANDMARK_SEASHORE_HOUSE);
+ FlagSet(FLAG_LANDMARK_NEW_MAUVILLE);
+ FlagSet(FLAG_LANDMARK_OLD_LADY_REST_SHOP);
+ FlagSet(FLAG_LANDMARK_TRICK_HOUSE);
+ FlagSet(FLAG_LANDMARK_WINSTRATE_FAMILY);
+ FlagSet(FLAG_LANDMARK_GLASS_WORKSHOP);
+ FlagSet(FLAG_LANDMARK_LANETTES_HOUSE);
+ FlagSet(FLAG_LANDMARK_POKEMON_DAYCARE);
+ FlagSet(FLAG_LANDMARK_SEAFLOOR_CAVERN);
+ FlagSet(FLAG_SYS_RIBBON_GET);
+ CloseMenu();
+ return TRUE;
+}
+
+bool8 TayaDebugMenu_AwardARibbon(void)
+{
+ BlendPalettes(0xFFFFFFFF, 16, RGB(0, 0, 0));
+ SetMainCallback2(debug_sub_80915BC);
+ CloseMenu();
+ return TRUE;
+}
+
+void debug_sub_8090C44(void)
+{
+ ConvertIntToDecimalStringN(eTayaLuckyNumber.charbuf, eTayaLuckyNumber.curLuckyId, STR_CONV_MODE_LEADING_ZEROS, 5);
+ Menu_PrintText(eTayaLuckyNumber.charbuf, 1, 1);
+ StringFill(eTayaLuckyNumber.charbuf, CHAR_SPACE, 5);
+ eTayaLuckyNumber.charbuf[eTayaLuckyNumber.digit] = 0x79;
+ Menu_PrintText(eTayaLuckyNumber.charbuf, 1, 3);
+}
+
+#ifdef NONMATCHING
+// mayday mayday
+bool8 debug_sub_8090C88(void)
+{
+ bool8 r8 = TRUE;
+
+ if (gMain.newKeys & DPAD_LEFT && eTayaLuckyNumber.digit != 0)
+ {
+ eTayaLuckyNumber.digit--;
+ }
+ else if (gMain.newKeys & DPAD_RIGHT && eTayaLuckyNumber.digit < 4)
+ {
+ eTayaLuckyNumber.digit++;
+ }
+ else
+ {
+ if (gMain.newAndRepeatedKeys & DPAD_UP)
+ {
+ u8 r4;
+
+ eTayaLuckyNumber.tempLuckyId = eTayaLuckyNumber.curLuckyId;
+ eTayaLuckyNumber.charbuf0 = 10000;
+ for (r4 = 0; r4 < eTayaLuckyNumber.digit; r4++)
+ eTayaLuckyNumber.charbuf0 /= 10;
+ eTayaLuckyNumber.tempLuckyId += eTayaLuckyNumber.charbuf0;
+ if (eTayaLuckyNumber.tempLuckyId > 0xFFFF)
+ eTayaLuckyNumber.tempLuckyId = 0xFFFF;
+ if (eTayaLuckyNumber.curLuckyId != eTayaLuckyNumber.tempLuckyId)
+ {
+ eTayaLuckyNumber.curLuckyId = eTayaLuckyNumber.tempLuckyId;
+ goto check;
+ }
+ }
+ if (gMain.newAndRepeatedKeys & DPAD_DOWN)
+ {
+ u8 r4;
+
+ eTayaLuckyNumber.tempLuckyId = eTayaLuckyNumber.curLuckyId;
+ eTayaLuckyNumber.charbuf0 = 10000;
+ for (r4 = 0; r4 < eTayaLuckyNumber.digit; r4++)
+ eTayaLuckyNumber.charbuf0 /= 10;
+ eTayaLuckyNumber.tempLuckyId -= eTayaLuckyNumber.charbuf0;
+ if (eTayaLuckyNumber.tempLuckyId < 0)
+ eTayaLuckyNumber.tempLuckyId = 0;
+ if (eTayaLuckyNumber.curLuckyId != eTayaLuckyNumber.tempLuckyId)
+ {
+ eTayaLuckyNumber.curLuckyId = eTayaLuckyNumber.tempLuckyId;
+ goto check;
+ }
+ }
+ if (gMain.newKeys & B_BUTTON)
+ {
+ CloseMenu();
+ return TRUE;
+ }
+ if (gMain.newKeys & A_BUTTON)
+ {
+ SetLotteryNumber16_Unused(eTayaLuckyNumber.curLuckyId);
+ CloseMenu();
+ return TRUE;
+ }
+ r8 = FALSE;
+ }
+
+check:
+ if (r8)
+ debug_sub_8090C44();
+ return FALSE;
+}
+#else
+NAKED bool8 debug_sub_8090C88(void)
+{
+ asm("\tpush\t{r4, r5, r6, r7, lr}\n"
+ "\tmov\tr7, r8\n"
+ "\tpush\t{r7}\n"
+ "\tadd\tsp, sp, #0xfffffffc\n"
+ "\tmov\tr0, #0x1\n"
+ "\tmov\tr8, r0\n"
+ "\tldr\tr2, ._59 @ gMain\n"
+ "\tldrh\tr1, [r2, #0x2e]\n"
+ "\tmov\tr0, #0x20\n"
+ "\tand\tr0, r0, r1\n"
+ "\tadd\tr3, r2, #0\n"
+ "\tcmp\tr0, #0\n"
+ "\tbeq\t._57\t@cond_branch\n"
+ "\tldr\tr1, ._59 + 4 @ gSharedMem\n"
+ "\tldrb\tr0, [r1]\n"
+ "\tcmp\tr0, #0\n"
+ "\tbeq\t._57\t@cond_branch\n"
+ "\tsub\tr0, r0, #0x1\n"
+ "\tstrb\tr0, [r1]\n"
+ "\tb\t._62\n"
+ "._60:\n"
+ "\t.align\t2, 0\n"
+ "._59:\n"
+ "\t.word\tgMain\n"
+ "\t.word\tgSharedMem\n"
+ "._67:\n"
+ "\tadd\tr0, r0, #0x1\n"
+ "\tstrb\tr0, [r1]\n"
+ "\tb\t._62\n"
+ "._77:\n"
+ "\tstrh\tr1, [r7, #0x8]\n"
+ "\tb\t._62\n"
+ "._79:\n"
+ "\tldr\tr0, ._64 @ gSharedMem\n"
+ "\tldrh\tr0, [r0, #0x8]\n"
+ "\tbl\tSetLotteryNumber16_Unused\n"
+ "._78:\n"
+ "\tbl\tCloseMenu\n"
+ "\tmov\tr0, #0x1\n"
+ "\tb\t._63\n"
+ "._65:\n"
+ "\t.align\t2, 0\n"
+ "._64:\n"
+ "\t.word\tgSharedMem\n"
+ "._57:\n"
+ "\tldrh\tr1, [r3, #0x2e]\n"
+ "\tmov\tr0, #0x10\n"
+ "\tand\tr0, r0, r1\n"
+ "\tcmp\tr0, #0\n"
+ "\tbeq\t._66\t@cond_branch\n"
+ "\tldr\tr1, ._81 @ gSharedMem\n"
+ "\tldrb\tr0, [r1]\n"
+ "\tcmp\tr0, #0x3\n"
+ "\tbls\t._67\t@cond_branch\n"
+ "._66:\n"
+ "\tldrh\tr1, [r3, #0x30]\n"
+ "\tmov\tr0, #0x40\n"
+ "\tand\tr0, r0, r1\n"
+ "\tcmp\tr0, #0\n"
+ "\tbeq\t._68\t@cond_branch\n"
+ "\tldr\tr0, ._81 @ gSharedMem\n"
+ "\tldrh\tr1, [r0, #0x8]\n"
+ "\tstr\tr1, [r0, #0xc]\n"
+ "\tldr\tr1, ._81 + 4 @ 0x2710\n"
+ "\tstrh\tr1, [r0, #0x10]\n"
+ "\tmov\tr4, #0x0\n"
+ "\tldrb\tr1, [r0]\n"
+ "\tadd\tr7, r0, #0\n"
+ "\tcmp\tr4, r1\n"
+ "\tbcs\t._69\t@cond_branch\n"
+ "\tadd\tr5, r7, #0\n"
+ "\tadd\tr6, r1, #0\n"
+ "._70:\n"
+ "\tldrh\tr0, [r5, #0x10]\n"
+ "\tmov\tr1, #0xa\n"
+ "\tstr\tr3, [sp]\n"
+ "\tbl\t__udivsi3\n"
+ "\tstrh\tr0, [r5, #0x10]\n"
+ "\tadd\tr0, r4, #1\n"
+ "\tlsl\tr0, r0, #0x18\n"
+ "\tlsr\tr4, r0, #0x18\n"
+ "\tldr\tr3, [sp]\n"
+ "\tcmp\tr4, r6\n"
+ "\tbcc\t._70\t@cond_branch\n"
+ "._69:\n"
+ "\tldrh\tr1, [r7, #0x10]\n"
+ "\tldr\tr0, [r7, #0xc]\n"
+ "\tadd\tr0, r0, r1\n"
+ "\tstr\tr0, [r7, #0xc]\n"
+ "\tldr\tr1, ._81 + 8 @ 0xffff\n"
+ "\tcmp\tr0, r1\n"
+ "\tble\t._71\t@cond_branch\n"
+ "\tstr\tr1, [r7, #0xc]\n"
+ "._71:\n"
+ "\tldrh\tr0, [r7, #0x8]\n"
+ "\tldr\tr1, [r7, #0xc]\n"
+ "\tcmp\tr0, r1\n"
+ "\tbne\t._77\t@cond_branch\n"
+ "._68:\n"
+ "\tldrh\tr1, [r3, #0x30]\n"
+ "\tmov\tr0, #0x80\n"
+ "\tand\tr0, r0, r1\n"
+ "\tcmp\tr0, #0\n"
+ "\tbeq\t._73\t@cond_branch\n"
+ "\tldr\tr0, ._81 @ gSharedMem\n"
+ "\tldrh\tr1, [r0, #0x8]\n"
+ "\tstr\tr1, [r0, #0xc]\n"
+ "\tldr\tr1, ._81 + 4 @ 0x2710\n"
+ "\tstrh\tr1, [r0, #0x10]\n"
+ "\tmov\tr4, #0x0\n"
+ "\tldrb\tr1, [r0]\n"
+ "\tadd\tr7, r0, #0\n"
+ "\tcmp\tr4, r1\n"
+ "\tbcs\t._74\t@cond_branch\n"
+ "\tadd\tr5, r7, #0\n"
+ "\tadd\tr6, r1, #0\n"
+ "._75:\n"
+ "\tldrh\tr0, [r5, #0x10]\n"
+ "\tmov\tr1, #0xa\n"
+ "\tstr\tr3, [sp]\n"
+ "\tbl\t__udivsi3\n"
+ "\tstrh\tr0, [r5, #0x10]\n"
+ "\tadd\tr0, r4, #1\n"
+ "\tlsl\tr0, r0, #0x18\n"
+ "\tlsr\tr4, r0, #0x18\n"
+ "\tldr\tr3, [sp]\n"
+ "\tcmp\tr4, r6\n"
+ "\tbcc\t._75\t@cond_branch\n"
+ "._74:\n"
+ "\tadd\tr2, r7, #0\n"
+ "\tldrh\tr1, [r2, #0x10]\n"
+ "\tldr\tr0, [r2, #0xc]\n"
+ "\tsub\tr0, r0, r1\n"
+ "\tstr\tr0, [r2, #0xc]\n"
+ "\tcmp\tr0, #0\n"
+ "\tbge\t._76\t@cond_branch\n"
+ "\tmov\tr0, #0x0\n"
+ "\tstr\tr0, [r2, #0xc]\n"
+ "._76:\n"
+ "\tldrh\tr0, [r2, #0x8]\n"
+ "\tldr\tr1, [r2, #0xc]\n"
+ "\tcmp\tr0, r1\n"
+ "\tbne\t._77\t@cond_branch\n"
+ "._73:\n"
+ "\tldrh\tr2, [r3, #0x2e]\n"
+ "\tmov\tr0, #0x2\n"
+ "\tand\tr0, r0, r2\n"
+ "\tcmp\tr0, #0\n"
+ "\tbne\t._78\t@cond_branch\n"
+ "\tmov\tr0, #0x1\n"
+ "\tand\tr0, r0, r2\n"
+ "\tcmp\tr0, #0\n"
+ "\tbne\t._79\t@cond_branch\n"
+ "\tmov\tr0, #0x0\n"
+ "\tmov\tr8, r0\n"
+ "._62:\n"
+ "\tmov\tr0, r8\n"
+ "\tcmp\tr0, #0\n"
+ "\tbeq\t._80\t@cond_branch\n"
+ "\tbl\tdebug_sub_8090C44\n"
+ "._80:\n"
+ "\tmov\tr0, #0x0\n"
+ "._63:\n"
+ "\tadd\tsp, sp, #0x4\n"
+ "\tpop\t{r3}\n"
+ "\tmov\tr8, r3\n"
+ "\tpop\t{r4, r5, r6, r7}\n"
+ "\tpop\t{r1}\n"
+ "\tbx\tr1\n"
+ "._82:\n"
+ "\t.align\t2, 0\n"
+ "._81:\n"
+ "\t.word\tgSharedMem\n"
+ "\t.word\t0x2710\n"
+ "\t.word\t0xffff");
+}
+#endif // NONMATCHING
+
+bool8 TayaDebugMenu_PKMNLottery(void)
+{
+ Menu_DrawStdWindowFrame(0, 0, 6, 5);
+ RetrieveLotteryNumber();
+ eTayaLuckyNumber.curLuckyId = gSpecialVar_Result;
+ eTayaLuckyNumber.digit = 0;
+ debug_sub_8090C44();
+ gMenuCallback = debug_sub_8090C88;
+ return FALSE;
+}
+
+bool8 TayaDebugMenu_Trainer(void)
+{
+ u16 i;
+
+ for (i = 0; i < ARRAY_COUNT(gTrainerEyeTrainers); i++)
+ SetTrainerFlag(gTrainerEyeTrainers[i].opponentIDs[0]);
+
+ SetTrainerFlag(OPPONENT_ROXANNE);
+ SetTrainerFlag(OPPONENT_BRAWLY);
+ SetTrainerFlag(OPPONENT_WATTSON);
+ SetTrainerFlag(OPPONENT_FLANNERY);
+ SetTrainerFlag(OPPONENT_NORMAN);
+ SetTrainerFlag(OPPONENT_WINONA);
+ SetTrainerFlag(OPPONENT_TATE_AND_LIZA);
+ SetTrainerFlag(OPPONENT_WALLACE);
+ SetTrainerFlag(OPPONENT_SIDNEY);
+ SetTrainerFlag(OPPONENT_PHOEBE);
+ SetTrainerFlag(OPPONENT_GLACIA);
+ SetTrainerFlag(OPPONENT_DRAKE);
+ SetTrainerFlag(OPPONENT_STEVEN);
+ CloseMenu();
+ return TRUE;
+}
+
+bool8 TayaDebugMenu_PokenavD(void)
+{
+ u16 i;
+ u16 j;
+
+ Menu_DisplayDialogueFrame();
+
+ for (i = 0; i < 14; i++)
+ {
+ StringCopy(gSharedMem, gUnknown_Debug_083C4F94);
+ gSharedMem[i + 1] = EOS;
+ Menu_PrintText(gSharedMem, 2, 15);
+ for (j = 0; j < 30; j++)
+ {
+ struct BoxPokemon *boxPokemon;
+ u32 otId = Random() + 1;
+ u16 level = (Random() % 100) + 1;
+ u16 species = (Random() % 386) + 1;
+ if (species >= SPECIES_OLD_UNOWN_B)
+ {
+ species += SPECIES_TREECKO - SPECIES_OLD_UNOWN_B;
+ if (species >= NUM_SPECIES)
+ species = SPECIES_BULBASAUR;
+ }
+ boxPokemon = gPokemonStorage.boxes[i] + j;
+ CreateBoxMon(boxPokemon, species, level, 32, FALSE, 0, TRUE, otId);
+
+ otId = Random() & 0xff;
+ SetBoxMonData(boxPokemon, MON_DATA_COOL, &otId);
+
+ otId = Random() & 0xff;
+ SetBoxMonData(boxPokemon, MON_DATA_BEAUTY, &otId);
+
+ otId = Random() & 0xff;
+ SetBoxMonData(boxPokemon, MON_DATA_CUTE, &otId);
+
+ otId = Random() & 0xff;
+ SetBoxMonData(boxPokemon, MON_DATA_SMART, &otId);
+
+ otId = Random() & 0xff;
+ SetBoxMonData(boxPokemon, MON_DATA_TOUGH, &otId);
+
+ otId = Random() & 0xff;
+ SetBoxMonData(boxPokemon, MON_DATA_SHEEN, &otId);
+
+ otId = (Random() & 3) + 1;
+ SetBoxMonData(boxPokemon, MON_DATA_COOL_RIBBON, &otId);
+
+ otId = (Random() & 3) + 1;
+ SetBoxMonData(boxPokemon, MON_DATA_BEAUTY_RIBBON, &otId);
+
+ otId = (Random() & 3) + 1;
+ SetBoxMonData(boxPokemon, MON_DATA_CUTE_RIBBON, &otId);
+
+ otId = (Random() & 3) + 1;
+ SetBoxMonData(boxPokemon, MON_DATA_TOUGH_RIBBON, &otId);
+
+ otId = (Random() & 3) + 1;
+ SetBoxMonData(boxPokemon, MON_DATA_SMART_RIBBON, &otId);
+
+ otId = Random() & 1;
+ SetBoxMonData(boxPokemon, MON_DATA_CHAMPION_RIBBON, &otId);
+
+ otId = Random() & 1;
+ SetBoxMonData(boxPokemon, MON_DATA_WINNING_RIBBON, &otId);
+
+ otId = Random() & 1;
+ SetBoxMonData(boxPokemon, MON_DATA_VICTORY_RIBBON, &otId);
+
+ otId = Random() & 1;
+ SetBoxMonData(boxPokemon, MON_DATA_ARTIST_RIBBON, &otId);
+
+ otId = Random() & 1;
+ SetBoxMonData(boxPokemon, MON_DATA_EFFORT_RIBBON, &otId);
+
+ otId = Random() & 1;
+ SetBoxMonData(boxPokemon, MON_DATA_GIFT_RIBBON_1, &otId);
+
+ otId = Random() & 1;
+ SetBoxMonData(boxPokemon, MON_DATA_GIFT_RIBBON_2, &otId);
+
+ otId = Random() & 1;
+ SetBoxMonData(boxPokemon, MON_DATA_GIFT_RIBBON_3, &otId);
+
+ otId = Random() & 1;
+ SetBoxMonData(boxPokemon, MON_DATA_GIFT_RIBBON_4, &otId);
+
+ otId = Random() & 1;
+ SetBoxMonData(boxPokemon, MON_DATA_GIFT_RIBBON_5, &otId);
+
+ otId = Random() & 1;
+ SetBoxMonData(boxPokemon, MON_DATA_GIFT_RIBBON_6, &otId);
+
+ otId = Random() & 1;
+ SetBoxMonData(boxPokemon, MON_DATA_GIFT_RIBBON_7, &otId);
+ }
+ }
+ TayaDebugMenu_TownFlags();
+ TayaDebugMenu_Trainer();
+ CloseMenu();
+ return TRUE;
+}
+
+bool8 TayaDebugMenu_8091190(void)
+{
+ s8 input = Menu_ProcessInput();
+ s8 r4;
+
+ switch (input)
+ {
+ default:
+ gMenuCallback = gUnknown_Debug_83C5068[sTayaTopMenuPage].menuActions[input].func;
+ return FALSE;
+ case -2:
+ r4 = sTayaTopMenuPage;
+ if (gMain.newKeys & DPAD_LEFT)
+ {
+ sTayaTopMenuPage--;
+ if (sTayaTopMenuPage < 0)
+ sTayaTopMenuPage = 1;
+ }
+
+ if (gMain.newKeys & DPAD_RIGHT)
+ {
+ sTayaTopMenuPage++;
+ if ((u8)sTayaTopMenuPage > 1)
+ sTayaTopMenuPage = 0;
+ }
+ if (r4 != sTayaTopMenuPage)
+ {
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 11, 19);
+ Menu_PrintItems(1, 1, gUnknown_Debug_83C5068[sTayaTopMenuPage].nitems, gUnknown_Debug_83C5068[sTayaTopMenuPage].menuActions);
+ InitMenu(0, 1, 1, gUnknown_Debug_83C5068[sTayaTopMenuPage].nitems, 0, 10);
+ }
+ return FALSE;
+ case -1:
+ CloseMenu();
+ return TRUE;
+ }
+}
+
+bool8 InitTayaDebugWindow(void)
+{
+ sTayaTopMenuPage = 0;
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 11, 19);
+ Menu_PrintItems(1, 1, 9, gUnknown_Debug_83C5068[0].menuActions);
+ InitMenu(0, 1, 1, 9, 0, 10);
+ gMenuCallback = TayaDebugMenu_8091190;
+ return FALSE;
+}
+
+bool8 debug_sub_80912D8(void)
+{
+ if (!gPaletteFade.active)
+ {
+ SetMainCallback2(debug_sub_8110F28);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 debug_sub_8091300(void)
+{
+ FadeScreen(1, 0);
+ gMenuCallback = debug_sub_80912D8;
+ return FALSE;
+}
+
+void debug_sub_8091320(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+void debug_sub_8091334(void)
+{
+ AnimateSprites();
+ BuildOamBuffer();
+
+ switch (eTayaMonData.state)
+ {
+ case 0:
+ eTayaMonData.redraw = 0;
+ if (gMain.newKeys & DPAD_UP)
+ {
+ if (eTayaMonData.y != 0)
+ {
+ eTayaMonData.y--;
+ eTayaMonData.redraw = 1;
+ }
+ }
+ if (gMain.newKeys & DPAD_DOWN)
+ {
+ if (eTayaMonData.x != 2)
+ {
+ if (eTayaMonData.y < 5)
+ {
+ eTayaMonData.y++;
+ eTayaMonData.redraw = 1;
+ }
+ }
+ else
+ {
+ if (eTayaMonData.y < 4)
+ {
+ eTayaMonData.y++;
+ eTayaMonData.redraw = 1;
+ }
+ }
+ }
+ if (gMain.newKeys & DPAD_LEFT)
+ {
+ if (eTayaMonData.x != 0)
+ {
+ eTayaMonData.x--;
+ eTayaMonData.redraw = 1;
+ }
+ }
+ if (gMain.newKeys & DPAD_RIGHT)
+ {
+ if (eTayaMonData.y != 5)
+ {
+ if (eTayaMonData.x < 2)
+ {
+ eTayaMonData.x++;
+ eTayaMonData.redraw = 1;
+ }
+ }
+ else
+ {
+ if (eTayaMonData.x < 1)
+ {
+ eTayaMonData.x++;
+ eTayaMonData.redraw = 1;
+ }
+ }
+ }
+ if (eTayaMonData.redraw)
+ {
+ debug_sub_80916AC();
+ }
+ else if (gMain.newKeys & A_BUTTON)
+ {
+ u16 param = gUnknown_Debug_083C50EC[eTayaMonData.y][eTayaMonData.x].param;
+ if (param >= MON_DATA_COOL_RIBBON && param <= MON_DATA_TOUGH_RIBBON)
+ eTayaMonData.maxVal = 4;
+ else
+ eTayaMonData.maxVal = 1;
+ eTayaMonData.state = 1;
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ BlendPalettes(0xFFFFFFFF, 16, RGB(0, 0, 0));
+ SetMainCallback2(sub_80546F0);
+ }
+ break;
+ case 1:
+ eTayaMonData.redraw = 0;
+ if (gMain.newKeys & DPAD_UP)
+ {
+ if (eTayaMonData.data[eTayaMonData.y][eTayaMonData.x] < eTayaMonData.maxVal)
+ {
+ eTayaMonData.data[eTayaMonData.y][eTayaMonData.x]++;
+ eTayaMonData.redraw = 1;
+ }
+ }
+ if (gMain.newKeys & DPAD_DOWN)
+ {
+ if (eTayaMonData.data[eTayaMonData.y][eTayaMonData.x] != 0)
+ {
+ eTayaMonData.data[eTayaMonData.y][eTayaMonData.x]--;
+ eTayaMonData.redraw = 1;
+ }
+ }
+ if (eTayaMonData.redraw)
+ {
+ debug_sub_80916AC();
+ }
+ else
+ {
+ if (gMain.newKeys & B_BUTTON)
+ {
+ eTayaMonData.data[eTayaMonData.y][eTayaMonData.x] = GetMonData(gPlayerParty, gUnknown_Debug_083C50EC[eTayaMonData.y][eTayaMonData.x].param);
+ debug_sub_80916AC();
+ eTayaMonData.state = 0;
+ }
+ if (gMain.newKeys & A_BUTTON)
+ {
+ if (gUnknown_Debug_083C50EC[eTayaMonData.y][eTayaMonData.x].param)
+ SetMonData(gPlayerParty, gUnknown_Debug_083C50EC[eTayaMonData.y][eTayaMonData.x].param, &eTayaMonData.data[eTayaMonData.y][eTayaMonData.x]);
+ eTayaMonData.state = 0;
+ }
+ }
+ break;
+ }
+}
+
+void debug_sub_80915BC(void)
+{
+ u8 i;
+ u8 j;
+ REG_BG0HOFS = 0;
+ REG_BG0VOFS = 0;
+ for (i = 0; i < 6; i++)
+ {
+ for (j = 0; j < 3; j++)
+ {
+ u16 param = gUnknown_Debug_083C50EC[i][j].param;
+ if (param)
+ eTayaMonData.data[i][j] = GetMonData(gPlayerParty, param);
+ else
+ eTayaMonData.data[i][j] = 0;
+ }
+ }
+ Text_LoadWindowTemplate(&gWindowTemplate_81E7224);
+ InitMenuWindow(&gWindowTemplate_81E7224);
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 29, 3);
+ Menu_PrintText(gUnknown_Debug_083C517C, 1, 1);
+ Menu_DrawStdWindowFrame(0, 4, 29, 17);
+ Menu_DrawStdWindowFrame(0, 18, 29, 21);
+ REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_OBJ_ON;
+ eTayaMonData.x = 0;
+ eTayaMonData.y = 0;
+ eTayaMonData.state = 0;
+ debug_sub_80916AC();
+ SetVBlankCallback(debug_sub_8091320);
+ SetMainCallback2(debug_sub_8091334);
+}
+
+void debug_sub_80916AC(void)
+{
+ u8 i;
+ u8 j;
+
+ for (i = 0; i < 6; i++)
+ {
+ u8 * buffer = eTayaMonData.charbuf;
+ for (j = 0; j < 3 && !(i == 5 && j == 2); j++)
+ {
+ if (eTayaMonData.x == j && eTayaMonData.y == i)
+ *buffer++ = 0xEF;
+ else
+ {
+ *buffer++ = CHAR_SPACE;
+ *buffer++ = CHAR_SPACE;
+ }
+ buffer = StringCopy(buffer, gUnknown_Debug_083C50EC[i][j].text);
+ *buffer++ = CHAR_SPACE;
+ buffer = ConvertIntToDecimalStringN(buffer, eTayaMonData.data[i][j], STR_CONV_MODE_LEFT_ALIGN, 1);
+ *buffer++ = CHAR_SPACE;
+ }
+ buffer[-1] = EOS;
+ Menu_PrintText(eTayaMonData.charbuf, 1, i * 2 + 5);
+ }
+}
+
+#endif // DEBUG
diff --git a/src/debug/tomomichi_debug_menu.c b/src/debug/tomomichi_debug_menu.c
index c3616797e..daaca570c 100644
--- a/src/debug/tomomichi_debug_menu.c
+++ b/src/debug/tomomichi_debug_menu.c
@@ -1,20 +1,4483 @@
#if DEBUG
#include "global.h"
+#include "ewram.h"
+#include "string_util.h"
+#include "palette.h"
+#include "data2.h"
+#include "event_data.h"
+#include "constants/flags.h"
+#include "constants/songs.h"
+#include "constants/species.h"
+#include "overworld.h"
+#include "script.h"
+#include "menu.h"
+#include "start_menu.h"
+#include "main.h"
+#include "contest_painting.h"
+#include "sound.h"
-// These should be static, uninitialized once it gets decompiled.
-#define BSS_DATA __attribute__((section(".bss")))
-BSS_DATA u8 gDebug_03000700[4] = {0};
-BSS_DATA u8 gDebug_03000704[4] = {0};
-BSS_DATA u8 gDebug_03000708[4] = {0};
-BSS_DATA u8 gDebug_0300070C = 0;
-BSS_DATA u8 gDebug_0300070D = 0;
-BSS_DATA u8 gDebug_0300070E = 0;
-BSS_DATA u8 gDebug_0300070F = 0;
-BSS_DATA u8 gDebug_03000710[13] = {0};
-BSS_DATA u8 gDebug_0300071D = 0;
-BSS_DATA u8 gDebug_0300071E = 0;
-BSS_DATA u8 gDebug_0300071F = 0;
-BSS_DATA u8 gDebug_03000720 = 0;
-BSS_DATA u8 gDebug_03000721 = 0;
-
-#endif
+static u16 sPicTest_Species;
+static u32 sPicTest_OTID;
+static u32 sPicTest_Personality;
+static u8 sPicTest_ContestType;
+static u8 sPicTest_MuseumArtTitleType;
+static u8 sPicTest_PreviewType;
+static u8 sFlagAndVarTest_WhichSubmenu;
+static u8 sPicTest_StringBuffer[13];
+static u8 sTopMenuCursorPos;
+static u8 sTrickRelatedMenuCursorPos;
+static u8 sControlEventsCursorPos;
+static u8 sControlFlagsCursorPos;
+static u8 sControlWORKCursorPos;
+
+static bool8 ArtMusGraphics(void);
+static bool8 DummyMenuAction(void);
+static bool8 ContestGraphics(void);
+static bool8 ContestGraphics_Show(void);
+static bool8 ControlEvents(void);
+static bool8 ControlFlags(void);
+static bool8 ControlWorks(void);
+static bool8 MuseumGraphics_Show(void);
+static bool8 PreviewData(void);
+static bool8 TrickHouse(void);
+static bool8 InitDebugWindow(void);
+static bool8 TopMenu_HandleInput(void);
+static bool8 ContestGraphics_HandleInput(void);
+static bool8 ArtMusGraphics_HandleInput(void);
+static bool8 PreviewData_HandleInput(void);
+static bool8 TrickHouse_HandleInput(void);
+static bool8 ControlEvents_HandleInput(void);
+static bool8 ControlFlags_HandleInput(void);
+static bool8 ControlWorks_HandleInput(void);
+static bool8 ControlEvents_InitSubmenu1(void);
+static bool8 ControlEvents_InitSubmenu2(void);
+static bool8 ControlEvents_Events1_HandleInput(void);
+static bool8 ControlEvents_Events2_HandleInput(void);
+static bool8 CallScript_DoHallOfFame(void);
+static bool8 CallScript_GiveCoinCaseIfNotAlreadyOwned(void);
+static bool8 CallScript_SetOldaleStateAfterRoute103Rival(void);
+static bool8 CallScript_OpenNewMauville(void);
+static bool8 CallScript_GiveSSTicketAndDoHallOfFame(void);
+static bool8 CallScript_GiveKyogreEgg(void);
+static bool8 CallScript_GiveAllItems(void);
+static bool8 CallScript_GiveAllDecorations(void);
+static bool8 CallScript_GiveAllCoins(void);
+static bool8 CallScript_OpenSootopolisGym(void);
+static bool8 CallScript_SetMoneyTo0(void);
+static bool8 CallScript_FillPartyWithBarboach(void);
+static bool8 CallScript_FillPartyWithShroomish(void);
+static bool8 CallScript_GiveBarboachEgg(void);
+static bool8 CallScript_GiveShroomishEgg(void);
+static bool8 debug_sub_808C280(void);
+static bool8 debug_sub_808C2E4(void);
+static bool8 ControlFlags_EventFlag_InitSubmenu(void);
+static bool8 debug_sub_808C36C(void);
+static bool8 debug_sub_808C3B0(void);
+static bool8 debug_sub_808C408(void);
+static bool8 debug_sub_808C460(void);
+static bool8 debug_sub_808C4B8(void);
+static bool8 debug_sub_808C510(void);
+static bool8 debug_sub_808C568(void);
+static bool8 debug_sub_808C5C0(void);
+static bool8 debug_sub_808C618(void);
+static bool8 debug_sub_808C670(void);
+static bool8 debug_sub_808C6C8(void);
+static void debug_sub_808C714(u8, u8);
+static void debug_sub_808C764(u8);
+static bool8 ControlFlags_VanishFlag_InitSubmenu(void);
+static bool8 debug_sub_808C818(void);
+static bool8 debug_sub_808C85C(void);
+static bool8 debug_sub_808C8B4(void);
+static bool8 debug_sub_808C90C(void);
+static bool8 debug_sub_808C964(void);
+static bool8 debug_sub_808C9BC(void);
+static bool8 debug_sub_808CA14(void);
+static bool8 debug_sub_808CA6C(void);
+static bool8 debug_sub_808CAC4(void);
+static bool8 debug_sub_808CB1C(void);
+static bool8 debug_sub_808CB74(void);
+static void debug_sub_808CBC0(u8, u8);
+static void debug_sub_808CC10(u8);
+static bool8 ControlFlags_TrainerFlag_InitSubmenu(void);
+static bool8 debug_sub_808CCC4(void);
+static bool8 debug_sub_808CD08(void);
+static bool8 debug_sub_808CD60(void);
+static bool8 debug_sub_808CDB8(void);
+static bool8 debug_sub_808CE10(void);
+static void debug_sub_808CE5C(u8, u8);
+static void debug_sub_808CEAC(u8);
+static bool8 ControlFlags_SysFlag_InitSubmenu(void);
+static bool8 debug_sub_808CF60(void);
+static bool8 debug_sub_808CFA4(void);
+static bool8 debug_sub_808CFFC(void);
+static bool8 debug_sub_808D054(void);
+static bool8 debug_sub_808D0AC(void);
+static bool8 debug_sub_808D104(void);
+static bool8 debug_sub_808D15C(void);
+static bool8 debug_sub_808D1B4(void);
+static bool8 debug_sub_808D20C(void);
+static bool8 debug_sub_808D264(void);
+static bool8 debug_sub_808D2BC(void);
+static void debug_sub_808D308(u8, u8);
+static void debug_sub_808D358(u8);
+static bool8 ControlFlags_FH_OBJ_InitSubmenu(void);
+static bool8 ControlFlags_FH_OBJ_HandleInput(void);
+static bool8 ControlFlags_FH_OBJ00_08_InitSubsubmenu(void);
+static bool8 ControlFlags_FH_OBJ09_15_InitSubsubmenu(void);
+static bool8 ControlFlags_FH_OBJ_Subsubmenu_HandleInput(void);
+static void ControlFlags_FH_OBJ_FlagToggle(u8, u8);
+static void ControlFlags_FH_OBJ_UpdateDisplay(u8);
+static bool8 ControlFlags_FH_InitSubmenu(void);
+static bool8 debug_sub_808D650(void);
+static bool8 debug_sub_808D694(void);
+static bool8 debug_sub_808D6EC(void);
+static bool8 debug_sub_808D744(void);
+static void debug_sub_808D790(u8, u8);
+static void debug_sub_808D7E0(u8);
+static bool8 ControlFlags_BallVanishFlag_InitSubmenu(void);
+static bool8 debug_sub_808D894(void);
+static bool8 debug_sub_808D8D8(void);
+static bool8 debug_sub_808D930(void);
+static void debug_sub_808D97C(u8, u8);
+static void debug_sub_808D9CC(u8);
+static bool8 ControlWorks_AnsWork_InitSubmenu(void);
+static bool8 ControlWorks_AnsWork_HandleInput(void);
+static void ControlWorks_AnsWork_PrintRESULT(void);
+static void ControlWorks_AnsWork_AdjustRESULT(void);
+static bool8 ControlWorks_SaveWork_InitSubmenu(void);
+static bool8 ControlWorks_SaveWork_HandleInput(void);
+static bool8 ControlWorks_SaveWork_Town_InitSubsubmenu(void);
+static bool8 ControlWorks_SaveWork_City_InitSubsubmenu(void);
+static bool8 ControlWorks_SaveWork_Route101To109_InitSubsubmenu(void);
+static bool8 ControlWorks_SaveWork_Route110To118_InitSubsubmenu(void);
+static bool8 ControlWorks_SaveWork_Route119To127_InitSubsubmenu(void);
+static bool8 ControlWorks_SaveWork_Route128To134_InitSubsubmenu(void);
+static bool8 ControlWorks_SaveWork_RoomTown_InitSubsubmenu(void);
+static bool8 ControlWorks_SaveWork_RoomCity_InitSubsubmenu(void);
+static bool8 ControlWorks_SaveWork_Dungeon_InitSubsubmenu(void);
+static bool8 ControlWorks_SaveWork_Subsubmenu_HandleInput(void);
+static void debug_sub_808DF04(u8);
+static void debug_sub_808DF64(u8, u8);
+static bool8 ControlWorks_SaveWorkPart2_InitSubmenu(void);
+static bool8 ControlWorks_SaveWorkPart2_HandleInput(void);
+static bool8 ControlWorks_SaveWorkPart2_SP_InitSubsubmenu(void);
+static bool8 ControlWorks_SaveWorkPart2_RoomR110Part1TrickHouse_InitSubsubmenu(void);
+static bool8 ControlWorks_SaveWorkPart2_RoomR110Part2_InitSubsubmenu(void);
+static bool8 ControlWorks_SaveWorkPart2_RoomLoad_InitSubsubmenu(void);
+static bool8 debug_sub_808E1B4(void);
+static bool8 debug_sub_808E20C(void);
+static bool8 debug_sub_808E264(void);
+static void debug_sub_808E2B0(u8);
+static void debug_sub_808E310(u8, u8);
+static bool8 ControlWorks_SysWork_InitSubmenu(void);
+static bool8 debug_sub_808E3BC(void);
+static bool8 debug_sub_808E400(void);
+static bool8 debug_sub_808E458(void);
+static bool8 debug_sub_808E4B0(void);
+static bool8 debug_sub_808E508(void);
+static bool8 debug_sub_808E560(void);
+static bool8 debug_sub_808E5B8(void);
+static void debug_sub_808E604(u8, u8);
+static void debug_sub_808E660(u8);
+static bool8 ControlWorks_LocalWork_InitSubmenu(void);
+static bool8 debug_sub_808E710(void);
+static bool8 debug_sub_808E754(void);
+static bool8 debug_sub_808E7AC(void);
+static bool8 debug_sub_808E804(void);
+static void debug_sub_808E850(u8, u8);
+static void debug_sub_808E8AC(u8);
+static bool8 ControlWorks_ObjWork_InitSubmenu(void);
+static bool8 debug_sub_808E95C(void);
+static bool8 debug_sub_808E9A0(void);
+static bool8 debug_sub_808E9F8(void);
+static bool8 debug_sub_808EA50(void);
+static void debug_sub_808EA9C(u8);
+static void debug_sub_808EAFC(u8, u8);
+static bool8 TrickRelated_Level_InitSubmenu(void);
+static bool8 TrickRelated_TrickMaster_InitSubmenu(void);
+static bool8 debug_sub_808EC10(void);
+static bool8 debug_sub_808EC5C(void);
+static bool8 PreviewGraphics_Show(void);
+static bool8 debug_sub_808ECD0(void);
+static void PicTest_SelectPokemon(void);
+static void PicTest_SelectPersonality(void);
+static void ContestPicTest_SelectContestType(void);
+static void MuseumArtPicTest_SelectTitleType(void);
+static void PreviewPicTest_SelectType(void);
+static void PicTest_Redraw(u8 a0);
+static void PrepareDebugOverlayBeforeShowingContestPainting(u8 a0);
+static void PrintBool(u8, u8, bool8);
+static void PrintUnsignedShort(u8, u8, u16);
+
+extern const u8 DebugScript_081C1CFE[];
+extern const u8 DebugScript_081C1D07[];
+extern const u8 DebugScript_081C1D1E[];
+extern const u8 DebugScript_081C1D24[];
+extern const u8 DebugScript_081C1D2A[];
+extern const u8 DebugScript_081C1D35[];
+extern const u8 DebugScript_081C1D46[];
+extern const u8 DebugScript_081C221F[];
+extern const u8 DebugScript_081C23E2[];
+extern const u8 DebugScript_081C23E6[];
+extern const u8 DebugScript_081C23F6[];
+extern const u8 DebugScript_081C2482[];
+extern const u8 DebugScript_081C23FD[];
+extern const u8 DebugScript_081C2518[];
+extern const u8 DebugScript_081C2507[];
+
+static const u8 sString_ContestGraphics[] = _("Contest graphics");
+static const u8 sString_ArtMuseumGraphics[] = _("Art Mus. graphics");
+static const u8 sString_PreviewData[] = _("Preview data");
+static const u8 sString_TrickHouse[] = _("TRICK HOUSE");
+static const u8 sString_ControlEvents[] = _("Control events");
+static const u8 sString_ControlFlags[] = _("Control flags");
+static const u8 sString_ControlWORK[] = _("Control WORK");
+
+static const struct MenuAction sMenuActions_TopMenu[] = {
+ {sString_ContestGraphics, ContestGraphics},
+ {sString_ArtMuseumGraphics, ArtMusGraphics},
+ {sString_PreviewData, PreviewData},
+ {sString_TrickHouse, TrickHouse},
+ {sString_ControlEvents, ControlEvents},
+ {sString_ControlFlags, ControlFlags},
+ {sString_ControlWORK, ControlWorks},
+};
+
+static const u8 sString_ContestMenuTitle[] = _("Contest");
+
+static const u8 sString_Contest_PokemonNo[] = _("Pokémon No.");
+static const u8 sString_Contest_Personality[] = _("ID rnd. digit");
+static const u8 sString_Contest_Type[] = _("Contest Type");
+static const u8 sString_Contest_PokeArt[] = _("Poké Art");
+
+static const struct MenuAction sMenuActions_ContestPicTest[] = {
+ {sString_Contest_PokemonNo, DummyMenuAction},
+ {sString_Contest_Personality, DummyMenuAction},
+ {sString_Contest_Type, DummyMenuAction},
+ {sString_Contest_PokeArt, ContestGraphics_Show}
+};
+
+static const u8 sString_Contest_ArtMuseumTitle[] = _("Art Mus.");
+
+static const u8 sString_Contest_ArtMuseum_PokemonNo[] = _("Pokémon No.");
+static const u8 sString_Contest_ArtMuseum_Personality[] = _("ID rnd. digit");
+static const u8 sString_Contest_ArtMuseum_Type[] = _("Title Type");
+static const u8 sString_Contest_ArtMuseum_PokeArt[] = _("Poké Art");
+
+static const struct MenuAction sMenuActions_ArtMuseumPicTest[] = {
+ {sString_Contest_ArtMuseum_PokemonNo, DummyMenuAction},
+ {sString_Contest_ArtMuseum_Personality, DummyMenuAction},
+ {sString_Contest_ArtMuseum_Type, DummyMenuAction},
+ {sString_Contest_ArtMuseum_PokeArt, MuseumGraphics_Show}
+};
+
+static const u8 sString_Contest_PreviewTitle[] = _("Preview");
+
+static const u8 sString_Contest_Preview_PokemonNo[] = _("Pokémon No.");
+static const u8 sString_Contest_Preview_Personality[] = _("ID rnd. digit");
+static const u8 sString_Contest_Preview_Type[] = _("Type");
+static const u8 sString_Contest_Preview_PokeArt[] = _("Poké Art");
+
+static const struct MenuAction sMenuActions_PreviewPicTest[] = {
+ {sString_Contest_Preview_PokemonNo, DummyMenuAction},
+ {sString_Contest_Preview_Personality, DummyMenuAction},
+ {sString_Contest_Preview_Type, DummyMenuAction},
+ {sString_Contest_Preview_PokeArt, PreviewGraphics_Show}
+};
+
+static const u8 sString_TrickRelated[] = _("Trick related");
+
+static const u8 sString_TrickRelated_Level[] = _("Level");
+static const u8 sString_TrickRelated_TrickMaster[] = _("Trick Master");
+
+static const struct MenuAction sMenuActions_TrickRelated[] = {
+ {sString_TrickRelated_Level, TrickRelated_Level_InitSubmenu},
+ {sString_TrickRelated_TrickMaster, TrickRelated_TrickMaster_InitSubmenu}
+};
+
+static const u8 sString_Event1[] = _("パート1");
+static const u8 sString_Event2[] = _("パート2");
+
+static const struct MenuAction sMenuActions_ControlEvents[] = {
+ {sString_Event1, ControlEvents_InitSubmenu1},
+ {sString_Event2, ControlEvents_InitSubmenu2}
+};
+
+static const u8 sString_EventFlag[] = _("イベントFLAG");
+static const u8 sString_VanishFlag[] = _("バニシュFLAG");
+static const u8 sString_TrainerFlag[] = _("トレーナーFLAG");
+static const u8 sString_SysFlag[] = _("SYSFLAG");
+static const u8 sString_BallVanishFlag[] = _("BALLバニシュFLAG");
+static const u8 sString_FH[] = _("FH");
+static const u8 sString_FH_OBJ[] = _("FH-OBJ");
+
+static const struct MenuAction sMenuActions_ControlFlags[] = {
+ {sString_EventFlag, ControlFlags_EventFlag_InitSubmenu},
+ {sString_VanishFlag, ControlFlags_VanishFlag_InitSubmenu},
+ {sString_TrainerFlag, ControlFlags_TrainerFlag_InitSubmenu},
+ {sString_SysFlag, ControlFlags_SysFlag_InitSubmenu},
+ {sString_BallVanishFlag, ControlFlags_BallVanishFlag_InitSubmenu},
+ {sString_FH, ControlFlags_FH_InitSubmenu},
+ {sString_FH_OBJ, ControlFlags_FH_OBJ_InitSubmenu}
+};
+
+static const u8 sString_SaveWork[] = _("SAVEWORK");
+static const u8 sString_SysWork[] = _("SYSWORK");
+static const u8 sString_LocalWork[] = _("LOCALWORK");
+static const u8 sString_ObjWork[] = _("OBJWORK");
+static const u8 sString_AnsWork[] = _("ANSWORK");
+static const u8 sString_SaveWorkPart2[] = _("SAVEWORK パート2");
+
+static const struct MenuAction sMenuActions_ControlWorks[] = {
+ {sString_SaveWork, ControlWorks_SaveWork_InitSubmenu},
+ {sString_SysWork, ControlWorks_SysWork_InitSubmenu},
+ {sString_LocalWork, ControlWorks_LocalWork_InitSubmenu},
+ {sString_ObjWork, ControlWorks_ObjWork_InitSubmenu},
+ {sString_AnsWork, ControlWorks_AnsWork_InitSubmenu},
+ {sString_SaveWorkPart2, ControlWorks_SaveWorkPart2_InitSubmenu}
+};
+
+static const u8 sString_Clear_go[] = _("クリアご");
+static const u8 sString_Coin_kounyuuka[] = _("コインこうにゅうかのう");
+static const u8 sString_Oldale_supporter_set[] = _("コトキサポーターセット");
+static const u8 sString_New_Mauville_open[] = _("ニューキンセツOPEN");
+static const u8 sString_Renrakusen_ni_noreru[] = _("れんらくせんにのれる");
+static const u8 sString_Egg_tsuika[] = _("タマゴついか");
+static const u8 sString_Item_ippai[] = _("アイテムいっぱい");
+static const u8 sString_Gezzu_ippai[] = _("グッズいっぱい");
+static const u8 sString_Coin_ippai[] = _("COINいっぱい");
+
+static const struct MenuAction sMenuActions_ControlEvents_Events1[] = {
+ {sString_Clear_go, CallScript_DoHallOfFame},
+ {sString_Coin_kounyuuka, CallScript_GiveCoinCaseIfNotAlreadyOwned},
+ {sString_Oldale_supporter_set, CallScript_SetOldaleStateAfterRoute103Rival},
+ {sString_New_Mauville_open, CallScript_OpenNewMauville},
+ {sString_Renrakusen_ni_noreru, CallScript_GiveSSTicketAndDoHallOfFame},
+ {sString_Egg_tsuika, CallScript_GiveKyogreEgg},
+ {sString_Item_ippai, CallScript_GiveAllItems},
+ {sString_Gezzu_ippai, CallScript_GiveAllDecorations},
+ {sString_Coin_ippai, CallScript_GiveAllCoins}
+};
+
+static const u8 sString_SootpolisGymOpen[] = _("ムロジムOPEN");
+static const u8 sString_MoneyTo0[] = _("おかねを0へ");
+static const u8 sString_BarboachFull[] = _("ドジョッチ FULL");
+static const u8 sString_ShroomishFull[] = _("キノココ FULL");
+static const u8 sString_BarboachEgg[] = _("ドジョッチ タマゴ");
+static const u8 sString_ShroomishEgg[] = _("キノココ タマゴ");
+
+static const struct MenuAction sMenuActions_ControlEvents_Events2[] = {
+ {sString_SootpolisGymOpen, CallScript_OpenSootopolisGym},
+ {sString_MoneyTo0, CallScript_SetMoneyTo0},
+ {sString_BarboachFull, CallScript_FillPartyWithBarboach},
+ {sString_ShroomishFull, CallScript_FillPartyWithShroomish},
+ {sString_BarboachEgg, CallScript_GiveBarboachEgg},
+ {sString_ShroomishEgg, CallScript_GiveShroomishEgg}
+};
+
+static const u8 sString_Answork_Mikansei[] = _("ANSWORK みかんせい");
+
+static const struct MenuAction sMenuActions_ControlEvents_AnsWork[] = {
+ {sString_Answork_Mikansei, DummyMenuAction}
+};
+
+static const u8 sString_FH_OBJ00_08[] = _("FHーOBJ00ー08");
+static const u8 sString_FH_OBJ09_15[] = _("FHーOBJ09ー15");
+
+static const struct MenuAction sMenuActions_ControlFlags_FH_OBJ[] = {
+ {sString_FH_OBJ00_08, ControlFlags_FH_OBJ00_08_InitSubsubmenu},
+ {sString_FH_OBJ09_15, ControlFlags_FH_OBJ09_15_InitSubsubmenu}
+};
+
+static const u8 sString_FH_OBJ00[] = _("FHーOBJ00");
+static const u8 sString_FH_OBJ01[] = _("FHーOBJ01");
+static const u8 sString_FH_OBJ02[] = _("FHーOBJ02");
+static const u8 sString_FH_OBJ03[] = _("FHーOBJ03");
+static const u8 sString_FH_OBJ04[] = _("FHーOBJ04");
+static const u8 sString_FH_OBJ05[] = _("FHーOBJ05");
+static const u8 sString_FH_OBJ06[] = _("FHーOBJ06");
+static const u8 sString_FH_OBJ07[] = _("FHーOBJ07");
+static const u8 sString_FH_OBJ08[] = _("FHーOBJ08");
+
+static const struct MenuAction sMenuActions_ControlFlags_FH_OBJ00_08[] = {
+ {sString_FH_OBJ00, DummyMenuAction},
+ {sString_FH_OBJ01, DummyMenuAction},
+ {sString_FH_OBJ02, DummyMenuAction},
+ {sString_FH_OBJ03, DummyMenuAction},
+ {sString_FH_OBJ04, DummyMenuAction},
+ {sString_FH_OBJ05, DummyMenuAction},
+ {sString_FH_OBJ06, DummyMenuAction},
+ {sString_FH_OBJ07, DummyMenuAction},
+ {sString_FH_OBJ08, DummyMenuAction}
+};
+
+static const u8 sString_FH_OBJ09[] = _("FH-OBJ09");
+static const u8 sString_FH_OBJ10[] = _("FH-OBJ10");
+static const u8 sString_FH_OBJ11[] = _("FH-OBJ11");
+static const u8 sString_FH_OBJ12[] = _("FH-OBJ12");
+static const u8 sString_FH_OBJ13[] = _("FH-OBJ13");
+static const u8 sString_FH_OBJ14[] = _("FH-OBJ14");
+static const u8 sString_FH_OBJ15[] = _("FH-OBJ15");
+static const u8 sString_Blank_083C1147[] = _("");
+static const u8 sString_Blank_083C1148[] = _("");
+
+static const struct MenuAction sMenuActions_ControlFlags_FH_OBJ09_15[] = {
+ {sString_FH_OBJ09, DummyMenuAction},
+ {sString_FH_OBJ10, DummyMenuAction},
+ {sString_FH_OBJ11, DummyMenuAction},
+ {sString_FH_OBJ12, DummyMenuAction},
+ {sString_FH_OBJ13, DummyMenuAction},
+ {sString_FH_OBJ14, DummyMenuAction},
+ {sString_FH_OBJ15, DummyMenuAction},
+ {sString_Blank_083C1147, DummyMenuAction},
+ {sString_Blank_083C1148, DummyMenuAction}
+};
+
+static const u8 sControlFlags_FH_OBJ_CountsArray[] = {9, 7};
+
+static const u16 sControlFlags_FH_OBJ_FlagsArrays[][9] = {
+ {0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19},
+ {0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20}
+};
+
+static const u8 gUnknown_Debug_083C11BA[] = _("FH-00-08");
+static const u8 gUnknown_Debug_083C11C3[] = _("FH-09-15");
+
+static const struct MenuAction gUnknown_Debug_083C11CC[] = {
+ {gUnknown_Debug_083C11BA, debug_sub_808D694},
+ {gUnknown_Debug_083C11C3, debug_sub_808D6EC}
+};
+
+static const u8 gUnknown_Debug_083C11DC[] = _("FH-00");
+static const u8 gUnknown_Debug_083C11E2[] = _("FH-01");
+static const u8 gUnknown_Debug_083C11E8[] = _("FH-02");
+static const u8 gUnknown_Debug_083C11EE[] = _("FH-03");
+static const u8 gUnknown_Debug_083C11F4[] = _("FH-04");
+static const u8 gUnknown_Debug_083C11FA[] = _("FH-05");
+static const u8 gUnknown_Debug_083C1200[] = _("FH-06");
+static const u8 gUnknown_Debug_083C1206[] = _("FH-07");
+static const u8 gUnknown_Debug_083C120C[] = _("FH-08");
+
+static const struct MenuAction gUnknown_Debug_083C1212[] = {
+ {gUnknown_Debug_083C11DC, DummyMenuAction},
+ {gUnknown_Debug_083C11E2, DummyMenuAction},
+ {gUnknown_Debug_083C11E8, DummyMenuAction},
+ {gUnknown_Debug_083C11EE, DummyMenuAction},
+ {gUnknown_Debug_083C11F4, DummyMenuAction},
+ {gUnknown_Debug_083C11FA, DummyMenuAction},
+ {gUnknown_Debug_083C1200, DummyMenuAction},
+ {gUnknown_Debug_083C1206, DummyMenuAction},
+ {gUnknown_Debug_083C120C, DummyMenuAction}
+};
+
+static const u8 gUnknown_Debug_083C125C[] = _("FHー09");
+static const u8 gUnknown_Debug_083C1262[] = _("FHー10");
+static const u8 gUnknown_Debug_083C1268[] = _("FHー11");
+static const u8 gUnknown_Debug_083C126E[] = _("FHー12");
+static const u8 gUnknown_Debug_083C1274[] = _("FHー13");
+static const u8 gUnknown_Debug_083C127A[] = _("FHー14");
+static const u8 gUnknown_Debug_083C1280[] = _("FHー15");
+static const u8 gUnknown_Debug_083C1286[] = _("");
+static const u8 gUnknown_Debug_083C1287[] = _("");
+
+static const struct MenuAction gUnknown_Debug_083C1288[] = {
+ {gUnknown_Debug_083C125C, DummyMenuAction},
+ {gUnknown_Debug_083C1262, DummyMenuAction},
+ {gUnknown_Debug_083C1268, DummyMenuAction},
+ {gUnknown_Debug_083C126E, DummyMenuAction},
+ {gUnknown_Debug_083C1274, DummyMenuAction},
+ {gUnknown_Debug_083C127A, DummyMenuAction},
+ {gUnknown_Debug_083C1280, DummyMenuAction},
+ {gUnknown_Debug_083C1286, DummyMenuAction},
+ {gUnknown_Debug_083C1287, DummyMenuAction}
+};
+
+static const u8 gUnknown_Debug_083C12D0[] = {9, 7};
+
+static const u16 gUnknown_Debug_083C12D2[][9] = {
+ {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09},
+ {0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10}
+};
+
+static const u8 gUnknown_Debug_083C12F6[] = _("BATCH");
+static const u8 gUnknown_Debug_083C12FC[] = _("タウンとうちゃく");
+static const u8 gUnknown_Debug_083C1305[] = _("シティとうちゃく");
+static const u8 gUnknown_Debug_083C130E[] = _("GET");
+static const u8 gUnknown_Debug_083C1312[] = _("そのた1");
+static const u8 gUnknown_Debug_083C1317[] = _("そのた2");
+static const u8 gUnknown_Debug_083C131C[] = _("そのた3");
+static const u8 gUnknown_Debug_083C1321[] = _("そのた4");
+static const u8 gUnknown_Debug_083C1326[] = _("そのた とうちゃく");
+
+static const struct MenuAction gUnknown_Debug_083C1330[] = {
+ {gUnknown_Debug_083C12F6, debug_sub_808CFA4},
+ {gUnknown_Debug_083C12FC, debug_sub_808CFFC},
+ {gUnknown_Debug_083C1305, debug_sub_808D054},
+ {gUnknown_Debug_083C130E, debug_sub_808D0AC},
+ {gUnknown_Debug_083C1312, debug_sub_808D104},
+ {gUnknown_Debug_083C1317, debug_sub_808D15C},
+ {gUnknown_Debug_083C131C, debug_sub_808D1B4},
+ {gUnknown_Debug_083C1321, debug_sub_808D20C},
+ {gUnknown_Debug_083C1326, debug_sub_808D264}
+};
+
+static const u8 gUnknown_Debug_083C1378[] = _("BATCH01ーGET");
+static const u8 gUnknown_Debug_083C1384[] = _("BATCH02ーGET");
+static const u8 gUnknown_Debug_083C1390[] = _("BATCH03ーGET");
+static const u8 gUnknown_Debug_083C139C[] = _("BATCH04ーGET");
+static const u8 gUnknown_Debug_083C13A8[] = _("BATCH05ーGET");
+static const u8 gUnknown_Debug_083C13B4[] = _("BATCH06ーGET");
+static const u8 gUnknown_Debug_083C13C0[] = _("BATCH07ーGET");
+static const u8 gUnknown_Debug_083C13CC[] = _("BATCH08ーGET");
+
+static const struct MenuAction gUnknown_Debug_083C13D8[] = {
+ {gUnknown_Debug_083C1378, DummyMenuAction},
+ {gUnknown_Debug_083C1384, DummyMenuAction},
+ {gUnknown_Debug_083C1390, DummyMenuAction},
+ {gUnknown_Debug_083C139C, DummyMenuAction},
+ {gUnknown_Debug_083C13A8, DummyMenuAction},
+ {gUnknown_Debug_083C13B4, DummyMenuAction},
+ {gUnknown_Debug_083C13C0, DummyMenuAction},
+ {gUnknown_Debug_083C13CC, DummyMenuAction}
+};
+
+static const u8 gUnknown_Debug_083C1418[] = _("T101ARRIVE");
+static const u8 gUnknown_Debug_083C1423[] = _("T102ARRIVE");
+static const u8 gUnknown_Debug_083C142E[] = _("T103ARRIVE");
+static const u8 gUnknown_Debug_083C1439[] = _("T104ARRIVE");
+static const u8 gUnknown_Debug_083C1444[] = _("T105ARRIVE");
+static const u8 gUnknown_Debug_083C144F[] = _("T106ARRIVE");
+static const u8 gUnknown_Debug_083C145A[] = _("T107ARRIVE");
+
+static const struct MenuAction gUnknown_Debug_083C1465[] = {
+ {gUnknown_Debug_083C1418, DummyMenuAction},
+ {gUnknown_Debug_083C1423, DummyMenuAction},
+ {gUnknown_Debug_083C142E, DummyMenuAction},
+ {gUnknown_Debug_083C1439, DummyMenuAction},
+ {gUnknown_Debug_083C1444, DummyMenuAction},
+ {gUnknown_Debug_083C144F, DummyMenuAction},
+ {gUnknown_Debug_083C145A, DummyMenuAction}
+};
+
+static const u8 gUnknown_Debug_083C14A0[] = _("C101ARRIVE");
+static const u8 gUnknown_Debug_083C14AB[] = _("C102ARRIVE");
+static const u8 gUnknown_Debug_083C14B6[] = _("C103ARRIVE");
+static const u8 gUnknown_Debug_083C14C1[] = _("C104ARRIVE");
+static const u8 gUnknown_Debug_083C14CC[] = _("C105ARRIVE");
+static const u8 gUnknown_Debug_083C14D7[] = _("C106ARRIVE");
+static const u8 gUnknown_Debug_083C14E2[] = _("C107ARRIVE");
+static const u8 gUnknown_Debug_083C14ED[] = _("C108ARRIVE");
+static const u8 gUnknown_Debug_083C14F8[] = _("C109ARRIVE");
+
+static const struct MenuAction gUnknown_Debug_083C1503[] = {
+ {gUnknown_Debug_083C14A0, DummyMenuAction},
+ {gUnknown_Debug_083C14AB, DummyMenuAction},
+ {gUnknown_Debug_083C14B6, DummyMenuAction},
+ {gUnknown_Debug_083C14C1, DummyMenuAction},
+ {gUnknown_Debug_083C14CC, DummyMenuAction},
+ {gUnknown_Debug_083C14D7, DummyMenuAction},
+ {gUnknown_Debug_083C14E2, DummyMenuAction},
+ {gUnknown_Debug_083C14ED, DummyMenuAction},
+ {gUnknown_Debug_083C14F8, DummyMenuAction}
+};
+
+static const u8 gUnknown_Debug_083C154C[] = _("SYSーPOKEMONーGET");
+static const u8 gUnknown_Debug_083C155C[] = _("SYSーZUKANーGET");
+static const u8 gUnknown_Debug_083C156A[] = _("SYSーPOKEGEARーGET");
+static const u8 gUnknown_Debug_083C157B[] = _("SYSーRIBBONーGET");
+
+static const struct MenuAction gUnknown_Debug_083C158A[] = {
+ {gUnknown_Debug_083C154C, DummyMenuAction},
+ {gUnknown_Debug_083C155C, DummyMenuAction},
+ {gUnknown_Debug_083C156A, DummyMenuAction},
+ {gUnknown_Debug_083C157B, DummyMenuAction}
+};
+
+static const u8 gUnknown_Debug_083C15AC[] = _("SYSーGAMEーCLEAR");
+static const u8 gUnknown_Debug_083C15BB[] = _("SYSーKAIWAーUSED");
+static const u8 gUnknown_Debug_083C15CA[] = _("SYSーNOWーOYAJIーMEET");
+static const u8 gUnknown_Debug_083C15DD[] = _("SYSーUSEーWAZAーFLASH");
+static const u8 gUnknown_Debug_083C15F0[] = _("SYSーUSEーWAZAーKAIRIKI");
+static const u8 gUnknown_Debug_083C1605[] = _("SYSーWEATHERーCTRL");
+static const u8 gUnknown_Debug_083C1616[] = _("SYSーCYCLINGーROAD");
+static const u8 gUnknown_Debug_083C1627[] = _("SYSーSAFARIーMODE");
+static const u8 gUnknown_Debug_083C1637[] = _("SYSーCRUISEーMODE");
+
+static const struct MenuAction gUnknown_Debug_083C1647[] = {
+ {gUnknown_Debug_083C15AC, DummyMenuAction},
+ {gUnknown_Debug_083C15BB, DummyMenuAction},
+ {gUnknown_Debug_083C15CA, DummyMenuAction},
+ {gUnknown_Debug_083C15DD, DummyMenuAction},
+ {gUnknown_Debug_083C15F0, DummyMenuAction},
+ {gUnknown_Debug_083C1605, DummyMenuAction},
+ {gUnknown_Debug_083C1616, DummyMenuAction},
+ {gUnknown_Debug_083C1627, DummyMenuAction},
+ {gUnknown_Debug_083C1637, DummyMenuAction}
+};
+
+static const u8 gUnknown_Debug_083C1690[] = _("SYSーTVーHOME");
+static const u8 gUnknown_Debug_083C169C[] = _("SYSーTVーWATCH");
+static const u8 gUnknown_Debug_083C16A9[] = _("SYSーTVSTART");
+static const u8 gUnknown_Debug_083C16B5[] = _("SYSーPOPWORDーINPUT");
+static const u8 gUnknown_Debug_083C16C7[] = _("SYSーMIXーRECORD");
+static const u8 gUnknown_Debug_083C16D6[] = _("SYSーCLOCKーSET");
+static const u8 gUnknown_Debug_083C16E4[] = _("SYSーCAVEーSHIP");
+static const u8 gUnknown_Debug_083C16F2[] = _("SYSーCAVEーWONDER");
+static const u8 gUnknown_Debug_083C1702[] = _("SYSーCAVEーBATTLE");
+
+static const struct MenuAction gUnknown_Debug_083C1712[] = {
+ {gUnknown_Debug_083C1690, DummyMenuAction},
+ {gUnknown_Debug_083C169C, DummyMenuAction},
+ {gUnknown_Debug_083C16A9, DummyMenuAction},
+ {gUnknown_Debug_083C16B5, DummyMenuAction},
+ {gUnknown_Debug_083C16C7, DummyMenuAction},
+ {gUnknown_Debug_083C16D6, DummyMenuAction},
+ {gUnknown_Debug_083C16E4, DummyMenuAction},
+ {gUnknown_Debug_083C16F2, DummyMenuAction},
+ {gUnknown_Debug_083C1702, DummyMenuAction}
+};
+
+static const u8 gUnknown_Debug_083C175C[] = _("SYSーSPECIALーZUKAN");
+static const u8 gUnknown_Debug_083C176E[] = _("SYSーASASEーTIDE");
+static const u8 gUnknown_Debug_083C177D[] = _("SYSーRIBBONーGET");
+static const u8 gUnknown_Debug_083C178C[] = _("SYSーPASOーMAYUMI");
+static const u8 gUnknown_Debug_083C179C[] = _("SYSーEXDATAーENABLE");
+static const u8 gUnknown_Debug_083C17AE[] = _("SYSーTENJIーANAWOHORU");
+static const u8 gUnknown_Debug_083C17C2[] = _("SYSーTENJIーKAIRIKI");
+static const u8 gUnknown_Debug_083C17D4[] = _("SYSーTENJIーWAIT");
+static const u8 gUnknown_Debug_083C17E3[] = _("SYSーTENJIーSORAWOTOBU");
+
+static const struct MenuAction gUnknown_Debug_083C17F8[] = {
+ {gUnknown_Debug_083C175C, DummyMenuAction},
+ {gUnknown_Debug_083C176E, DummyMenuAction},
+ {gUnknown_Debug_083C177D, DummyMenuAction},
+ {gUnknown_Debug_083C178C, DummyMenuAction},
+ {gUnknown_Debug_083C179C, DummyMenuAction},
+ {gUnknown_Debug_083C17AE, DummyMenuAction},
+ {gUnknown_Debug_083C17C2, DummyMenuAction},
+ {gUnknown_Debug_083C17D4, DummyMenuAction},
+ {gUnknown_Debug_083C17E3, DummyMenuAction}
+};
+
+static const u8 gUnknown_Debug_083C1840[] = _("SYSーENCーUPーITEM");
+static const u8 gUnknown_Debug_083C1850[] = _("SYSーENEーDOWNーITEM");
+static const u8 gUnknown_Debug_083C1862[] = _("SYSーKOKOROーEVENT");
+static const u8 gUnknown_Debug_083C1873[] = _("SYSーMOVEーPOKEーNEWS");
+static const u8 gUnknown_Debug_083C1886[] = _("SYSーASASEーITEM");
+static const u8 gUnknown_Debug_083C1895[] = _("SYSーBーDASH");
+static const u8 gUnknown_Debug_083C18A0[] = _("SYSーCTRLーOBJーDELETE");
+static const u8 gUnknown_Debug_083C18B4[] = _("");
+static const u8 gUnknown_Debug_083C18B5[] = _("");
+
+static const struct MenuAction gUnknown_Debug_083C18B8[] = {
+ {gUnknown_Debug_083C1840, DummyMenuAction},
+ {gUnknown_Debug_083C1850, DummyMenuAction},
+ {gUnknown_Debug_083C1862, DummyMenuAction},
+ {gUnknown_Debug_083C1873, DummyMenuAction},
+ {gUnknown_Debug_083C1886, DummyMenuAction},
+ {gUnknown_Debug_083C1895, DummyMenuAction},
+ {gUnknown_Debug_083C18A0, DummyMenuAction},
+ {gUnknown_Debug_083C18B4, DummyMenuAction},
+ {gUnknown_Debug_083C18B5, DummyMenuAction}
+};
+
+static const u8 gUnknown_Debug_083C1900[] = _("SYSーARRIVEーSUBMARINECAVE");
+static const u8 gUnknown_Debug_083C1919[] = _("SYSーARRIVEーBATTLETOWER");
+static const u8 gUnknown_Debug_083C1930[] = _("SYSーARRIVEーISLAND");
+static const u8 gUnknown_Debug_083C1942[] = _("SYSーARRIVEーLEAGUE");
+static const u8 gUnknown_Debug_083C1954[] = _("SYSーARRIVEーSORANOHASHIRA");
+static const u8 gUnknown_Debug_083C196D[] = _("");
+static const u8 gUnknown_Debug_083C196E[] = _("");
+static const u8 gUnknown_Debug_083C196F[] = _("");
+static const u8 gUnknown_Debug_083C1970[] = _("");
+
+static const struct MenuAction gDebug_0x83C1974[] = {
+ {gUnknown_Debug_083C1900, DummyMenuAction},
+ {gUnknown_Debug_083C1919, DummyMenuAction},
+ {gUnknown_Debug_083C1930, DummyMenuAction},
+ {gUnknown_Debug_083C1942, DummyMenuAction},
+ {gUnknown_Debug_083C1954, DummyMenuAction},
+ {gUnknown_Debug_083C196D, DummyMenuAction},
+ {gUnknown_Debug_083C196E, DummyMenuAction},
+ {gUnknown_Debug_083C196F, DummyMenuAction},
+ {gUnknown_Debug_083C1970, DummyMenuAction}
+};
+
+static const u8 gUnknown_Debug_083C19BC[] = {8, 7, 9, 4, 9, 9, 9, 7, 5};
+
+static const u16 gUnknown_Debug_083C19C6[][9] = {
+ {FLAG_BADGE01_GET, FLAG_BADGE02_GET, FLAG_BADGE03_GET, FLAG_BADGE04_GET, FLAG_BADGE05_GET, FLAG_BADGE06_GET, FLAG_BADGE07_GET, FLAG_BADGE08_GET},
+ {FLAG_VISITED_LITTLEROOT_TOWN, FLAG_VISITED_OLDALE_TOWN, FLAG_VISITED_DEWFORD_TOWN, FLAG_VISITED_LAVARIDGE_TOWN, FLAG_VISITED_FALLARBOR_TOWN, FLAG_VISITED_VERDANTURF_TOWN, FLAG_VISITED_PACIFIDLOG_TOWN},
+ {FLAG_VISITED_PETALBURG_CITY, FLAG_VISITED_SLATEPORT_CITY, FLAG_VISITED_MAUVILLE_CITY, FLAG_VISITED_RUSTBORO_CITY, FLAG_VISITED_FORTREE_CITY, FLAG_VISITED_LILYCOVE_CITY, FLAG_VISITED_MOSSDEEP_CITY, FLAG_VISITED_SOOTOPOLIS_CITY, FLAG_VISITED_EVER_GRANDE_CITY},
+ {FLAG_SYS_POKEMON_GET, FLAG_SYS_POKEDEX_GET, FLAG_SYS_POKENAV_GET, FLAG_SYS_RIBBON_GET},
+ {FLAG_SYS_GAME_CLEAR, FLAG_SYS_CHAT_USED, FLAG_SYS_HIPSTER_MEET, FLAG_SYS_USE_FLASH, FLAG_SYS_USE_STRENGTH, FLAG_SYS_WEATHER_CTRL, FLAG_SYS_CYCLING_ROAD, FLAG_SYS_SAFARI_MODE, FLAG_SYS_CRUISE_MODE},
+ {FLAG_SYS_TV_HOME, FLAG_SYS_TV_WATCH, FLAG_SYS_TV_START, FLAG_SYS_POPWORD_INPUT, FLAG_SYS_MIX_RECORD, FLAG_SYS_CLOCK_SET, FLAG_SYS_CAVE_SHIP, FLAG_SYS_CAVE_WONDER, FLAG_SYS_CAVE_BATTLE},
+ {FLAG_SYS_NATIONAL_DEX, FLAG_SYS_SHOAL_TIDE, FLAG_SYS_RIBBON_GET, FLAG_SYS_PC_LANETTE, FLAG_SYS_EXDATA_ENABLE, FLAG_SYS_BRAILLE_DIG, FLAG_SYS_BRAILLE_STRENGTH, FLAG_SYS_BRAILLE_WAIT, FLAG_SYS_BRAILLE_FLY},
+ {FLAG_SYS_ENC_UP_ITEM, FLAG_SYS_ENC_DOWN_ITEM, FLAG_SYS_HAS_EON_TICKET, FLAG_SYS_TV_LATI, FLAG_SYS_SHOAL_ITEM, FLAG_SYS_B_DASH, FLAG_SYS_CTRL_OBJ_DELETE},
+ {FLAG_LANDMARK_SEAFLOOR_CAVERN, FLAG_LANDMARK_BATTLE_TOWER, FLAG_LANDMARK_SOUTHERN_ISLAND, FLAG_SYS_POKEMON_LEAGUE_FLY, FLAG_LANDMARK_SKY_PILLAR}
+};
+
+static const u8 gDebug_0x83C1A68[] = _("FVーBALL パート1");
+
+static const struct MenuAction gUnknown_Debug_083C1A78[] = {
+ {gDebug_0x83C1A68, debug_sub_808D8D8}
+};
+
+static const u8 gUnknown_Debug_083C1A80[] = _("FVーBALL1ー78");
+static const u8 gUnknown_Debug_083C1A8C[] = _("FVーBALL1ー133");
+
+static const struct MenuAction gUnknown_Debug_083C1A9C[] = {
+ {gUnknown_Debug_083C1A80, DummyMenuAction},
+ {gUnknown_Debug_083C1A8C, DummyMenuAction}
+};
+
+static const u8 gUnknown_Debug_083C1AAC[] = {2};
+
+static const u16 gUnknown_Debug_083C1AAE[][9] = {
+ {FLAG_ITEM_ABANDONED_SHIP_HIDDEN_FLOOR_ROOMS_2, FLAG_ITEM_MOSSDEEP_STEVENS_HOUSE_1}
+};
+
+static const u8 gUnknown_Debug_083C1AC0[] = _("ジムリーダー");
+static const u8 gUnknown_Debug_083C1AC7[] = _("してんのう");
+static const u8 gUnknown_Debug_083C1ACD[] = _("みつる/Champロード");
+
+static const struct MenuAction gUnknown_Debug_083C1ADC[] = {
+ {gUnknown_Debug_083C1AC0, debug_sub_808CD08},
+ {gUnknown_Debug_083C1AC7, debug_sub_808CD60},
+ {gUnknown_Debug_083C1ACD, debug_sub_808CDB8}
+};
+
+static const u8 gUnknown_Debug_083C1AF4[] = _("FTーGYMー01ーLEADER");
+static const u8 gUnknown_Debug_083C1B05[] = _("FTーGYMー02ーLEADER");
+static const u8 gUnknown_Debug_083C1B16[] = _("FTーGYMー03ーLEADER");
+static const u8 gUnknown_Debug_083C1B27[] = _("FTーGYMー04ーLEADER");
+static const u8 gUnknown_Debug_083C1B38[] = _("FTーGYMー05ーLEADER");
+static const u8 gUnknown_Debug_083C1B49[] = _("FTーGYMー06ーLEADER");
+static const u8 gUnknown_Debug_083C1B5A[] = _("FTーGYMー07ーLEADER");
+static const u8 gUnknown_Debug_083C1B6B[] = _("FTーGYMー08ーLEADER");
+
+static const struct MenuAction gUnknown_Debug_083C1B7C[] = {
+ {gUnknown_Debug_083C1AF4, DummyMenuAction},
+ {gUnknown_Debug_083C1B05, DummyMenuAction},
+ {gUnknown_Debug_083C1B16, DummyMenuAction},
+ {gUnknown_Debug_083C1B27, DummyMenuAction},
+ {gUnknown_Debug_083C1B38, DummyMenuAction},
+ {gUnknown_Debug_083C1B49, DummyMenuAction},
+ {gUnknown_Debug_083C1B5A, DummyMenuAction},
+ {gUnknown_Debug_083C1B6B, DummyMenuAction}
+};
+
+static const u8 gUnknown_Debug_083C1BBC[] = _("FTーSHITENー01");
+static const u8 gUnknown_Debug_083C1BC9[] = _("FTーSHITENー02");
+static const u8 gUnknown_Debug_083C1BD6[] = _("FTーSHITENー03");
+static const u8 gUnknown_Debug_083C1BE3[] = _("FTーSHITENー04");
+
+static const struct MenuAction gUnknown_Debug_083C1BF0[] = {
+ {gUnknown_Debug_083C1BBC, DummyMenuAction},
+ {gUnknown_Debug_083C1BC9, DummyMenuAction},
+ {gUnknown_Debug_083C1BD6, DummyMenuAction},
+ {gUnknown_Debug_083C1BE3, DummyMenuAction}
+};
+
+static const u8 gUnknown_Debug_083C1C10[] = _("FTーMITSURUー01ーCAVEーD1301");
+
+static const struct MenuAction gUnknown_Debug_083C1C2C[] = {
+ {gUnknown_Debug_083C1C10, DummyMenuAction}
+};
+
+static const u8 gUnknown_Debug_083C1C34[] = {8, 4, 1};
+static const u16 gUnknown_Debug_083C1C38[][9] = {
+ {FLAG_DEFEATED_RUSTBORO_GYM, FLAG_DEFEATED_DEWFORD_GYM, FLAG_DEFEATED_MAUVILLE_GYM, FLAG_DEFEATED_LAVARIDGE_GYM, FLAG_DEFEATED_PETALBURG_GYM, FLAG_DEFEATED_FORTREE_GYM, FLAG_DEFEATED_MOSSDEEP_GYM, FLAG_DEFEATED_SOOTOPOLIS_GYM},
+ {FLAG_DEFEATED_ELITE_4_SYDNEY, FLAG_DEFEATED_ELITE_4_PHOEBE, FLAG_DEFEATED_ELITE_4_GLACIA, FLAG_DEFEATED_ELITE_4_DRAKE},
+ {0x04E1}
+};
+
+static const u8 gUnknown_Debug_083C1C6E[] = _("120/119ばんどうろカクレオン");
+static const u8 gUnknown_Debug_083C1C80[] = _("そのた1 / SUPPORTM/W");
+static const u8 gUnknown_Debug_083C1C92[] = _("ODAMAKI/FIGHTER1");
+static const u8 gUnknown_Debug_083C1CA3[] = _("MITSURU/TENKI");
+static const u8 gUnknown_Debug_083C1CB1[] = _("そのた2 /DAIGO");
+static const u8 gUnknown_Debug_083C1CBD[] = _("POKE/POKEMON");
+static const u8 gUnknown_Debug_083C1CCA[] = _("MAMA/SUPPORT02");
+static const u8 gUnknown_Debug_083C1CD9[] = _("HAGI");
+static const u8 gUnknown_Debug_083C1CDE[] = _("SUPPORT01");
+
+static const struct MenuAction gUnknown_Debug_083C1CE8[] = {
+ {gUnknown_Debug_083C1C6E, debug_sub_808C85C},
+ {gUnknown_Debug_083C1C80, debug_sub_808C8B4},
+ {gUnknown_Debug_083C1C92, debug_sub_808C90C},
+ {gUnknown_Debug_083C1CA3, debug_sub_808C964},
+ {gUnknown_Debug_083C1CB1, debug_sub_808C9BC},
+ {gUnknown_Debug_083C1CBD, debug_sub_808CA14},
+ {gUnknown_Debug_083C1CCA, debug_sub_808CA6C},
+ {gUnknown_Debug_083C1CD9, debug_sub_808CAC4},
+ {gUnknown_Debug_083C1CDE, debug_sub_808CB1C}
+};
+
+static const u8 gUnknown_Debug_083C1D30[] = _("FVーKAKUREONBー01ーFIELDーR120");
+static const u8 gUnknown_Debug_083C1D4B[] = _("FVーKAKUREー01ーFIELDーR120");
+static const u8 gUnknown_Debug_083C1D63[] = _("FVーKAKUREー02ーFIELDーR120");
+static const u8 gUnknown_Debug_083C1D7B[] = _("FVーKAKUREー03ーFIELDーR120");
+static const u8 gUnknown_Debug_083C1D93[] = _("FVーKAKUREー04ーFIELDーR120");
+static const u8 gUnknown_Debug_083C1DAB[] = _("FVーKAKUREー05ーFIELDーR120");
+static const u8 gUnknown_Debug_083C1DC3[] = _("FVーKAKUREー06ーFIELDーR120");
+static const u8 gUnknown_Debug_083C1DDB[] = _("FVーKAKUREー01ーFIELDーR119");
+static const u8 gUnknown_Debug_083C1DF3[] = _("FVーKAKUREー02ーFIELDーR119");
+
+static const struct MenuAction gUnknown_Debug_083C1E0C[] = {
+ {gUnknown_Debug_083C1D30, DummyMenuAction},
+ {gUnknown_Debug_083C1D4B, DummyMenuAction},
+ {gUnknown_Debug_083C1D63, DummyMenuAction},
+ {gUnknown_Debug_083C1D7B, DummyMenuAction},
+ {gUnknown_Debug_083C1D93, DummyMenuAction},
+ {gUnknown_Debug_083C1DAB, DummyMenuAction},
+ {gUnknown_Debug_083C1DC3, DummyMenuAction},
+ {gUnknown_Debug_083C1DDB, DummyMenuAction},
+ {gUnknown_Debug_083C1DF3, DummyMenuAction}
+};
+
+static const u8 gUnknown_Debug_083C1E54[] = _("FVーBALLー01ーC107ーR0501");
+static const u8 gUnknown_Debug_083C1E6A[] = _("FVーWORKERM1ー04ーFIELDーC104");
+static const u8 gUnknown_Debug_083C1E84[] = _("FVーSUBMARINEー06ーCAVEーD1101");
+static const u8 gUnknown_Debug_083C1E9F[] = _("FVーGUESTーALLーC106ーR0102");
+static const u8 gUnknown_Debug_083C1EB7[] = _("FVーHORIDASIー01ーC106ーR1106");
+static const u8 gUnknown_Debug_083C1ED1[] = _("FVーMIDDLEM1ー01ーR110ーR0101");
+static const u8 gUnknown_Debug_083C1EEB[] = _("FVーFUNEー01ーC102ーR0601");
+static const u8 gUnknown_Debug_083C1F01[] = _("FVーSUPPORTWー01ーT101ーR0202");
+static const u8 gUnknown_Debug_083C1F1B[] = _("FVーSUPPORTMー01ーT101ーR0102");
+
+static const struct MenuAction gUnknown_Debug_083C1F38[] = {
+ {gUnknown_Debug_083C1E54, DummyMenuAction},
+ {gUnknown_Debug_083C1E6A, DummyMenuAction},
+ {gUnknown_Debug_083C1E84, DummyMenuAction},
+ {gUnknown_Debug_083C1E9F, DummyMenuAction},
+ {gUnknown_Debug_083C1EB7, DummyMenuAction},
+ {gUnknown_Debug_083C1ED1, DummyMenuAction},
+ {gUnknown_Debug_083C1EEB, DummyMenuAction},
+ {gUnknown_Debug_083C1F01, DummyMenuAction},
+ {gUnknown_Debug_083C1F1B, DummyMenuAction}
+};
+
+static const u8 gUnknown_Debug_083C1F80[] = _("FVーODAMAKIー01ーFIELDーR101");
+static const u8 gUnknown_Debug_083C1F99[] = _("FVーODAMAKIー01ーT101ーR0301");
+static const u8 gUnknown_Debug_083C1FB2[] = _("FVーODAMAKIーHYOKAーT101ーR0301");
+static const u8 gUnknown_Debug_083C1FCE[] = _("FVーODAMAKIーHYOKAーFIELDーR101");
+static const u8 gUnknown_Debug_083C1FEA[] = _("FVーODAMAKIーHYOKAーFIELDーR103");
+static const u8 gUnknown_Debug_083C2006[] = _("FVーODAMAKIー01ーC109ーR0105");
+static const u8 gUnknown_Debug_083C201F[] = _("FVーFIGHTERー01ーCAVEーD0201");
+static const u8 gUnknown_Debug_083C2038[] = _("FVーFIGHTERー01ーT106ーR0201");
+static const u8 gUnknown_Debug_083C2051[] = _("FVーFIGHTERー01ーFIELDーR116");
+
+static const struct MenuAction gUnknown_Debug_083C206C[] = {
+ {gUnknown_Debug_083C1F80, DummyMenuAction},
+ {gUnknown_Debug_083C1F99, DummyMenuAction},
+ {gUnknown_Debug_083C1FB2, DummyMenuAction},
+ {gUnknown_Debug_083C1FCE, DummyMenuAction},
+ {gUnknown_Debug_083C1FEA, DummyMenuAction},
+ {gUnknown_Debug_083C2006, DummyMenuAction},
+ {gUnknown_Debug_083C201F, DummyMenuAction},
+ {gUnknown_Debug_083C2038, DummyMenuAction},
+ {gUnknown_Debug_083C2051, DummyMenuAction}
+};
+
+static const u8 gUnknown_Debug_083C20B4[] = _("FVーMITSURUー01ーFIELDーC101");
+static const u8 gUnknown_Debug_083C20CD[] = _("FVーMITSURUー02ーCAVEーD1301");
+static const u8 gUnknown_Debug_083C20E6[] = _("FVーMITSURUー01ーFIELDーC103");
+static const u8 gUnknown_Debug_083C20FF[] = _("FVーMITSURUー01ーT106ーR0201");
+static const u8 gUnknown_Debug_083C2118[] = _("FVーMITSURUー01ーCAVEーD1301");
+static const u8 gUnknown_Debug_083C2131[] = _("FVーMITSURUー01ーC101ーR0201");
+static const u8 gUnknown_Debug_083C214A[] = _("FVーMITSURUー01ーFIELDーR102");
+static const u8 gUnknown_Debug_083C2163[] = _("FVーTENKIー01ーR119ーR101");
+static const u8 gUnknown_Debug_083C2179[] = _("FVーTENKIー01ーR119ーR102");
+
+static const struct MenuAction gUnknown_Debug_083C2190[] = {
+ {gUnknown_Debug_083C20B4, DummyMenuAction},
+ {gUnknown_Debug_083C20CD, DummyMenuAction},
+ {gUnknown_Debug_083C20E6, DummyMenuAction},
+ {gUnknown_Debug_083C20FF, DummyMenuAction},
+ {gUnknown_Debug_083C2118, DummyMenuAction},
+ {gUnknown_Debug_083C2131, DummyMenuAction},
+ {gUnknown_Debug_083C214A, DummyMenuAction},
+ {gUnknown_Debug_083C2163, DummyMenuAction},
+ {gUnknown_Debug_083C2179, DummyMenuAction}
+};
+
+static const u8 gUnknown_Debug_083C21D8[] = _("FVーDAIGOー01ーCAVEーD0504");
+static const u8 gUnknown_Debug_083C21EF[] = _("FVーDAIGOー01ーFIELDーR128");
+static const u8 gUnknown_Debug_083C2206[] = _("FVーDAIGOー01ーFIELDーR118");
+static const u8 gUnknown_Debug_083C221D[] = _("FVーDAIGOー01ーC107ーR0501");
+static const u8 gUnknown_Debug_083C2234[] = _("FVーDAIGOー01ーFIELDーR120");
+static const u8 gUnknown_Debug_083C224B[] = _("FVーDAIGOー01ーFIELDーR108");
+
+static const struct MenuAction gUnknown_Debug_083C2264[] = {
+ {gUnknown_Debug_083C21D8, DummyMenuAction},
+ {gUnknown_Debug_083C21EF, DummyMenuAction},
+ {gUnknown_Debug_083C2206, DummyMenuAction},
+ {gUnknown_Debug_083C221D, DummyMenuAction},
+ {gUnknown_Debug_083C2234, DummyMenuAction},
+ {gUnknown_Debug_083C224B, DummyMenuAction}
+};
+
+static const u8 gUnknown_Debug_083C2294[] = _("FVーPOKE1ー02ーCAVEーD1111");
+static const u8 gUnknown_Debug_083C22AB[] = _("FVーPOKE1ー01ーCAVEーD0601");
+static const u8 gUnknown_Debug_083C22C2[] = _("FVーPOKE1ー02ーCAVEーD0601");
+static const u8 gUnknown_Debug_083C22D9[] = _("FVーPOKE1ー01ーFIELDーR101");
+static const u8 gUnknown_Debug_083C22F0[] = _("FVーPOKE1ー01ーOPENINGーROOM01");
+static const u8 gUnknown_Debug_083C230B[] = _("FVーPOKE1ー02ーOPENINGーROOM01");
+static const u8 gUnknown_Debug_083C2326[] = _("FVーPOKE1ー01ーCAVEーD2308");
+static const u8 gUnknown_Debug_083C233D[] = _("FVーPOKEMONー01ーCAVEーD0201");
+static const u8 gUnknown_Debug_083C2356[] = _("FVーPOKEMONー01ーR104ーR0101");
+
+static const struct MenuAction gUnknown_Debug_083C2370[] = {
+ {gUnknown_Debug_083C2294, DummyMenuAction},
+ {gUnknown_Debug_083C22AB, DummyMenuAction},
+ {gUnknown_Debug_083C22C2, DummyMenuAction},
+ {gUnknown_Debug_083C22D9, DummyMenuAction},
+ {gUnknown_Debug_083C22F0, DummyMenuAction},
+ {gUnknown_Debug_083C230B, DummyMenuAction},
+ {gUnknown_Debug_083C2326, DummyMenuAction},
+ {gUnknown_Debug_083C233D, DummyMenuAction},
+ {gUnknown_Debug_083C2356, DummyMenuAction}
+};
+
+static const u8 gUnknown_Debug_083C23B8[] = _("FVーMAMAー01ーFIELDーT101");
+static const u8 gUnknown_Debug_083C23CE[] = _("FVーMAMAー01ーOPENINGーROOM02");
+static const u8 gUnknown_Debug_083C23E8[] = _("FVーMAMAー01ーT101ーR0101");
+static const u8 gUnknown_Debug_083C23FE[] = _("FVーMAMAー01ーT101ーR0201");
+static const u8 gUnknown_Debug_083C2414[] = _("FVーMAMAー02ーT101ーR0101");
+static const u8 gUnknown_Debug_083C242A[] = _("FVーMAMAー02ーT101ーR0201");
+static const u8 gUnknown_Debug_083C2440[] = _("FVーSUPPORTー02ーFIELDーR110");
+static const u8 gUnknown_Debug_083C2459[] = _("FVーSUPPORTー02ーFIELDーR119");
+static const u8 gUnknown_Debug_083C2472[] = _("FVーSUPPORTー02ーFIELDーT104");
+
+static const struct MenuAction gUnknown_Debug_083C248C[] = {
+ {gUnknown_Debug_083C23B8, DummyMenuAction},
+ {gUnknown_Debug_083C23CE, DummyMenuAction},
+ {gUnknown_Debug_083C23E8, DummyMenuAction},
+ {gUnknown_Debug_083C23FE, DummyMenuAction},
+ {gUnknown_Debug_083C2414, DummyMenuAction},
+ {gUnknown_Debug_083C242A, DummyMenuAction},
+ {gUnknown_Debug_083C2440, DummyMenuAction},
+ {gUnknown_Debug_083C2459, DummyMenuAction},
+ {gUnknown_Debug_083C2472, DummyMenuAction}
+};
+
+static const u8 gUnknown_Debug_083C24D4[] = _("FVーHAGIー01ーFIELDーR104");
+static const u8 gUnknown_Debug_083C24EA[] = _("FVーHAGIー01ーR104ーR0101");
+static const u8 gUnknown_Debug_083C2500[] = _("FVーHAGIー01ーFIELDーT103");
+static const u8 gUnknown_Debug_083C2516[] = _("FVーHAGIー01ーFIELDーR109");
+static const u8 gUnknown_Debug_083C252C[] = _("FVーHAGIー01ーC102ーR0601");
+static const u8 gUnknown_Debug_083C2542[] = _("FVーHAGIー01ーC102ーR0101");
+static const u8 gUnknown_Debug_083C2558[] = _("FVーHAGIー01ーCAVEーD0201");
+static const u8 gUnknown_Debug_083C256E[] = _("FVーHAGIー01ーFIELDーR116");
+static const u8 gUnknown_Debug_083C2584[] = _("FVーHAGIー01ーSPーSHIP01");
+
+static const struct MenuAction gUnknown_Debug_083C259C[] = {
+ {gUnknown_Debug_083C24D4, DummyMenuAction},
+ {gUnknown_Debug_083C24EA, DummyMenuAction},
+ {gUnknown_Debug_083C2500, DummyMenuAction},
+ {gUnknown_Debug_083C2516, DummyMenuAction},
+ {gUnknown_Debug_083C252C, DummyMenuAction},
+ {gUnknown_Debug_083C2542, DummyMenuAction},
+ {gUnknown_Debug_083C2558, DummyMenuAction},
+ {gUnknown_Debug_083C256E, DummyMenuAction},
+ {gUnknown_Debug_083C2584, DummyMenuAction}
+};
+
+static const u8 gUnknown_Debug_083C25E4[] = _("FVーSUPPORTー01ーT101ーR0301");
+static const u8 gUnknown_Debug_083C25FD[] = _("FVーSUPPORTー01ーC109ーR0105");
+static const u8 gUnknown_Debug_083C2616[] = _("FVーSUPPORTー01ーFIELDーC104");
+static const u8 gUnknown_Debug_083C262F[] = _("FVーSUPPORTー01ーFIELDーC106");
+static const u8 gUnknown_Debug_083C2648[] = _("FVーSUPPORTー01ーFIELDーR103");
+static const u8 gUnknown_Debug_083C2661[] = _("FVーSUPPORTー01ーFIELDーR110");
+static const u8 gUnknown_Debug_083C267A[] = _("FVーSUPPORTー01ーFIELDーR119");
+static const u8 gUnknown_Debug_083C2693[] = _("FVーSUPPORTー01ーFIELDーT104");
+static const u8 gUnknown_Debug_083C26AC[] = _("FVーSUPPORTー01ーFIELDーT102");
+
+static const struct MenuAction gUnknown_Debug_083C26C8[] = {
+ {gUnknown_Debug_083C25E4, DummyMenuAction},
+ {gUnknown_Debug_083C25FD, DummyMenuAction},
+ {gUnknown_Debug_083C2616, DummyMenuAction},
+ {gUnknown_Debug_083C262F, DummyMenuAction},
+ {gUnknown_Debug_083C2648, DummyMenuAction},
+ {gUnknown_Debug_083C2661, DummyMenuAction},
+ {gUnknown_Debug_083C267A, DummyMenuAction},
+ {gUnknown_Debug_083C2693, DummyMenuAction},
+ {gUnknown_Debug_083C26AC, DummyMenuAction}
+};
+
+static const u8 gUnknown_Debug_083C2710[] = {9, 9, 9, 9, 6, 9, 9, 9, 9};
+
+static const u16 gUnknown_Debug_083C271A[][9] = {
+ {FLAG_HIDE_KECLEON_ROUTE120_2, FLAG_HIDE_KECLEON_ROUTE120_1, FLAG_HIDE_KECLEON_ROUTE120_3, FLAG_HIDE_KECLEON_ROUTE120_4, FLAG_HIDE_KECLEON_ROUTE120_5, FLAG_HIDE_KECLEON_ROUTE120_6, FLAG_HIDE_KECLEON_ROUTE120_7, FLAG_HIDE_KECLEON_ROUTE119_1, FLAG_HIDE_KECLEON_ROUTE119_2},
+ {FLAG_HIDE_BELDUM_BALL_STEVENS_HOUSE, FLAG_HIDE_DEVON_RUSTBORO, FLAG_HIDE_UNDERWATER_SUBMARINE_INTERACTION, FLAG_HIDE_LILYCOVE_MOTEL_PEOPLE, FLAG_HIDE_ROOFTOP_LADY_LILYCOVE_MART, FLAG_HIDE_TRICKMASTER_ENTRANCE, 0x352, FLAG_HIDE_MAY_UPSTAIRS, FLAG_HIDE_BRENDAN_UPSTAIRS},
+ {FLAG_HIDE_BIRCH_BATTLE_POOCHYENA, FLAG_HIDE_BIRCH_IN_LAB, FLAG_UNKNOWN_BIRCH_380, FLAG_HIDE_BIRCH_ROUTE101, FLAG_HIDE_BIRCH_ROUTE103, FLAG_HIDE_BIRCH_CHAMPIONS_ROOM, FLAG_HIDE_BOYFRIEND_RUSTURF_TUNNEL, FLAG_HIDE_BOYFRIEND_WANDAS_HOUSE, FLAG_HIDE_TUNNER_DIGGER_ROUTE116},
+ {FLAG_HIDE_WALLY_PETALBURG, FLAG_HIDE_WALLY_DEFEATED_VICTORY_ROAD, FLAG_HIDE_WALLY_MAUVILLE, FLAG_HIDE_WALLY_WANDAS_HOUSE, FLAG_HIDE_WALLY_BATTLE_VICTORY_ROAD, FLAG_HIDE_WALLY_PETALBURG_GYM, FLAG_UNKNOWN_363, FLAG_HIDE_WEATHER_INSTITUTE_WORKERS_1F, FLAG_HIDE_WEATHER_INSTITUTE_WORKERS_2F},
+ {FLAG_HIDE_STEVEN_GRANITE_CAVE, FLAG_HIDE_STEVEN_ROUTE128, FLAG_HIDE_STEVEN_ROUTE118, FLAG_HIDE_STEVEN_STEVENS_HOUSE, FLAG_HIDE_STEVEN_ROUTE120, FLAG_HIDE_STEVEN_SOOTOPOLIS},
+ {FLAG_HIDE_SLEEPING_MON_SEAFLOOR_CAVERN, FLAG_UNKNOWN_2E1, FLAG_UNKNOWN_2EC, FLAG_HIDE_POOCHYENA_ROUTE101, FLAG_HIDE_MACHOKE_MOVER_1, FLAG_HIDE_MACHOKE_MOVER_2, 0x305, FLAG_HIDE_PEEKO_RUSTURF_TUNNEL, FLAG_HIDE_PEEKO_BRINEY_HOUSE},
+ {FLAG_HIDE_MOM_LITTLEROOT, FLAG_HIDE_MOM_UPSTAIRS, FLAG_HIDE_BRENDAN_MOM_DOWNSTAIRS, FLAG_HIDE_MAY_MOM_DOWNSTAIRS, FLAG_UNKNOWN_30E, FLAG_UNKNOWN_30F, FLAG_HIDE_RIVAL_ON_BIKE_ROUTE110, FLAG_HIDE_RIVAL_ROUTE119_ON_BIKE, FLAG_HIDE_RIVAL_LAVARIDGE_2},
+ {FLAG_HIDE_MR_BRINEY_ROUTE104, FLAG_HIDE_MR_BRINEY_ROUTE104_HOUSE, FLAG_HIDE_MR_BRINEY_DEWFORD_TOWN, FLAG_HIDE_MR_BRINEY_ROUTE109, FLAG_UNKNOWN_34F, FLAG_HIDE_BRINEY_SLATEPORT_SHIPYARD, FLAG_HIDE_BRINEY_RUSTURF_TUNNEL, FLAG_HIDE_BRINEY_ROUTE116, FLAG_HIDE_BRINEY_AND_PEEKO_SS_TIDAL},
+ {FLAG_HIDE_RIVAL_BIRCH_LAB, FLAG_HIDE_RIVAL_CHAMPIONS_ROOM, FLAG_HIDE_RIVAL_RUSTBORO, FLAG_HIDE_RIVAL_LILYCOVE_MART, FLAG_HIDE_RIVAL_ROUTE103, FLAG_HIDE_RIVAL_ROUTE110, FLAG_HIDE_RIVAL_ROUTE119, FLAG_HIDE_RIVAL_LAVARIDGE_1, FLAG_HIDE_RIVAL_OLDALE_TOWN}
+};
+
+static const u8 gUnknown_Debug_083C27BC[] = _("FEひでんわざ/デボンかんれん");
+static const u8 gUnknown_Debug_083C27CC[] = _("FEだいじなアイテムPART1");
+static const u8 gUnknown_Debug_083C27DC[] = _("そのた1");
+static const u8 gUnknown_Debug_083C27E1[] = _("MITSURU/DOOR");
+static const u8 gUnknown_Debug_083C27EE[] = _("カラクリやしき10のやじるし/GYM07");
+static const u8 gUnknown_Debug_083C2803[] = _("SUPPORT/そのた4");
+static const u8 gUnknown_Debug_083C2810[] = _("DAISUKI/そのた5");
+static const u8 gUnknown_Debug_083C281D[] = _("そのた2");
+static const u8 gUnknown_Debug_083C2822[] = _("そのた6");
+
+static const struct MenuAction gUnknown_Debug_083C2828[] = {
+ {gUnknown_Debug_083C27BC, debug_sub_808C3B0},
+ {gUnknown_Debug_083C27CC, debug_sub_808C408},
+ {gUnknown_Debug_083C27DC, debug_sub_808C460},
+ {gUnknown_Debug_083C27E1, debug_sub_808C4B8},
+ {gUnknown_Debug_083C27EE, debug_sub_808C510},
+ {gUnknown_Debug_083C2803, debug_sub_808C568},
+ {gUnknown_Debug_083C2810, debug_sub_808C5C0},
+ {gUnknown_Debug_083C281D, debug_sub_808C618},
+ {gUnknown_Debug_083C2822, debug_sub_808C670}
+};
+
+static const u8 gUnknown_Debug_083C2870[] = _("FEーHWAZA01ーGET");
+static const u8 gUnknown_Debug_083C287F[] = _("FEーHWAZA02ー01ーFIELDR119");
+static const u8 gUnknown_Debug_083C2897[] = _("FEーHWAZA03ーGET");
+static const u8 gUnknown_Debug_083C28A6[] = _("FEーHWAZA04ー01ーT106ーR0201");
+static const u8 gUnknown_Debug_083C28BF[] = _("FEーHWAZA05ー01ーCAVEーD0502");
+static const u8 gUnknown_Debug_083C28D8[] = _("FEーHWAZA04ー01ーC103ーR0301");
+static const u8 gUnknown_Debug_083C28F1[] = _("FEーDEBONーNIMOTSUーRETURN");
+static const u8 gUnknown_Debug_083C2909[] = _("FEーDEBONー01ーFIELDーC104");
+static const u8 gUnknown_Debug_083C2920[] = _("FEーDEBONー02ーFIELDーC104");
+
+static const struct MenuAction gUnknown_Debug_083C2938[] = {
+ {gUnknown_Debug_083C2870, DummyMenuAction},
+ {gUnknown_Debug_083C287F, DummyMenuAction},
+ {gUnknown_Debug_083C2897, DummyMenuAction},
+ {gUnknown_Debug_083C28A6, DummyMenuAction},
+ {gUnknown_Debug_083C28BF, DummyMenuAction},
+ {gUnknown_Debug_083C28D8, DummyMenuAction},
+ {gUnknown_Debug_083C28F1, DummyMenuAction},
+ {gUnknown_Debug_083C2909, DummyMenuAction},
+ {gUnknown_Debug_083C2920, DummyMenuAction}
+};
+
+static const u8 gUnknown_Debug_083C2980[] = _("FEーCYCLEー01ーP01ーP01ーC103ーR0201");
+static const u8 gUnknown_Debug_083C299F[] = _("FEーSCOOPー01ーP01ーFIELDーR115");
+static const u8 gUnknown_Debug_083C29BA[] = _("FEーROPEー01ーP01ーFIELDーR114");
+static const u8 gUnknown_Debug_083C29D4[] = _("FEーKAMAー01ーP01ーFIELDーR119");
+static const u8 gUnknown_Debug_083C29EE[] = _("FEーZYOUROーGET");
+static const u8 gUnknown_Debug_083C29FC[] = _("FEーCUBECASEーGET");
+static const u8 gUnknown_Debug_083C2A0C[] = _("FEーBORONOTURIZAOーGET");
+static const u8 gUnknown_Debug_083C2A21[] = _("FEーIITURIZAOーGET");
+static const u8 gUnknown_Debug_083C2A32[] = _("FEーSUGOITURIZAOーGET");
+
+static const struct MenuAction gUnknown_Debug_083C2A48[] = {
+ {gUnknown_Debug_083C2980, DummyMenuAction},
+ {gUnknown_Debug_083C299F, DummyMenuAction},
+ {gUnknown_Debug_083C29BA, DummyMenuAction},
+ {gUnknown_Debug_083C29D4, DummyMenuAction},
+ {gUnknown_Debug_083C29EE, DummyMenuAction},
+ {gUnknown_Debug_083C29FC, DummyMenuAction},
+ {gUnknown_Debug_083C2A0C, DummyMenuAction},
+ {gUnknown_Debug_083C2A21, DummyMenuAction},
+ {gUnknown_Debug_083C2A32, DummyMenuAction}
+};
+
+static const u8 gUnknown_Debug_083C2A90[] = _("FEーBOSSー01ーCAVEーD0701");
+static const u8 gUnknown_Debug_083C2AA6[] = _("FEーTANTIKIーRETURN");
+static const u8 gUnknown_Debug_083C2AB8[] = _("FEーPOKE1ー01ーCAVEーD1111");
+static const u8 gUnknown_Debug_083C2ACF[] = _("FEーPOKE1ー01ーCAVEーD1206");
+static const u8 gUnknown_Debug_083C2AE6[] = _("FEーSHOPー01ーC104ーFS01");
+static const u8 gUnknown_Debug_083C2AFB[] = _("FEーHUNENOTIKETTーGET");
+static const u8 gUnknown_Debug_083C2B0F[] = _("FEーKAKUREー01ーFIELDーC105");
+static const u8 gUnknown_Debug_083C2B27[] = _("FEーKASEKIーRETURN");
+static const u8 gUnknown_Debug_083C2B38[] = _("FEーWINー01ーSPーSHIP01");
+
+static const struct MenuAction gUnknown_Debug_083C2B4C[] = {
+ {gUnknown_Debug_083C2A90, DummyMenuAction},
+ {gUnknown_Debug_083C2AA6, DummyMenuAction},
+ {gUnknown_Debug_083C2AB8, DummyMenuAction},
+ {gUnknown_Debug_083C2ACF, DummyMenuAction},
+ {gUnknown_Debug_083C2AE6, DummyMenuAction},
+ {gUnknown_Debug_083C2AFB, DummyMenuAction},
+ {gUnknown_Debug_083C2B0F, DummyMenuAction},
+ {gUnknown_Debug_083C2B27, DummyMenuAction},
+ {gUnknown_Debug_083C2B38, DummyMenuAction}
+};
+
+static const u8 gUnknown_Debug_083C2B94[] = _("FEーMITSURUー01ーT106ーR0201");
+static const u8 gUnknown_Debug_083C2BAD[] = _("FEーMITSURUー01ーCAVEーD1301");
+static const u8 gUnknown_Debug_083C2BC6[] = _("FEーMITSURUー02ーFIELDーC103");
+static const u8 gUnknown_Debug_083C2BDF[] = _("FEーMITSURUー02ーT106ーR0201");
+static const u8 gUnknown_Debug_083C2BF8[] = _("FEーMITSURUー01ーFIELDーC103");
+static const u8 gUnknown_Debug_083C2C11[] = _("FEーDOORーOPENー01ーCAVEーD1712");
+static const u8 gUnknown_Debug_083C2C2C[] = _("FEーDOORーOPENー02ーCAVEーD1712");
+static const u8 gUnknown_Debug_083C2C47[] = _("FEーDOORーOPENー04ーCAVEーD1712");
+static const u8 gUnknown_Debug_083C2C62[] = _("FEーDOORーOPENー06ーCAVEーD1712");
+
+static const struct MenuAction gUnknown_Debug_083C2C80[] = {
+ {gUnknown_Debug_083C2B94, DummyMenuAction},
+ {gUnknown_Debug_083C2BAD, DummyMenuAction},
+ {gUnknown_Debug_083C2BC6, DummyMenuAction},
+ {gUnknown_Debug_083C2BDF, DummyMenuAction},
+ {gUnknown_Debug_083C2BF8, DummyMenuAction},
+ {gUnknown_Debug_083C2C11, DummyMenuAction},
+ {gUnknown_Debug_083C2C2C, DummyMenuAction},
+ {gUnknown_Debug_083C2C47, DummyMenuAction},
+ {gUnknown_Debug_083C2C62, DummyMenuAction}
+};
+
+static const u8 gUnknown_Debug_083C2CC8[] = _("FEーKARAKURI10ーSWITCHー01");
+static const u8 gUnknown_Debug_083C2CE0[] = _("FEーKARAKURI10ーSWITCHー02");
+static const u8 gUnknown_Debug_083C2CF8[] = _("FEーKARAKURI10ーSWITCHー03");
+static const u8 gUnknown_Debug_083C2D10[] = _("FEーKARAKURI10ーSWITCHー04");
+static const u8 gUnknown_Debug_083C2D28[] = _("FEーKARAKURI10ーSWITCHー05");
+static const u8 gUnknown_Debug_083C2D40[] = _("FEーGYM07ーSWITCHー01");
+static const u8 gUnknown_Debug_083C2D53[] = _("FEーGYM07ーSWITCHー02");
+static const u8 gUnknown_Debug_083C2D66[] = _("FEーGYM07ーSWITCHー03");
+static const u8 gUnknown_Debug_083C2D79[] = _("FEーGYM07ーSWITCHー04");
+
+static const struct MenuAction gUnknown_Debug_083C2D8C[] = {
+ {gUnknown_Debug_083C2CC8, DummyMenuAction},
+ {gUnknown_Debug_083C2CE0, DummyMenuAction},
+ {gUnknown_Debug_083C2CF8, DummyMenuAction},
+ {gUnknown_Debug_083C2D10, DummyMenuAction},
+ {gUnknown_Debug_083C2D28, DummyMenuAction},
+ {gUnknown_Debug_083C2D40, DummyMenuAction},
+ {gUnknown_Debug_083C2D53, DummyMenuAction},
+ {gUnknown_Debug_083C2D66, DummyMenuAction},
+ {gUnknown_Debug_083C2D79, DummyMenuAction}
+};
+
+static const u8 gUnknown_Debug_083C2DD4[] = _("FEーSUPPORTー01ーFIELDーR103");
+static const u8 gUnknown_Debug_083C2DED[] = _("FEーSUPPORTー01ーFIELDーC106");
+static const u8 gUnknown_Debug_083C2E06[] = _("FEーSUPPORTー01ーFIELDーR104");
+static const u8 gUnknown_Debug_083C2E1F[] = _("FEーSUPPORTー02ーFIELDーC106");
+static const u8 gUnknown_Debug_083C2E38[] = _("FEーSUPPORTー01ーT101ーR0202");
+static const u8 gUnknown_Debug_083C2E51[] = _("FEーMAMAー01ーP01ーT101ーR0101");
+static const u8 gUnknown_Debug_083C2E6B[] = _("FEーCLOCKーSET");
+static const u8 gUnknown_Debug_083C2E78[] = _("FEーODAMAKIー01ーP01ーT101ーR03");
+static const u8 gUnknown_Debug_083C2E93[] = _("FEーPAPAー01ーP01ーC101ーR0201");
+
+static const struct MenuAction gUnknown_Debug_083C2EB0[] = {
+ {gUnknown_Debug_083C2DD4, DummyMenuAction},
+ {gUnknown_Debug_083C2DED, DummyMenuAction},
+ {gUnknown_Debug_083C2E06, DummyMenuAction},
+ {gUnknown_Debug_083C2E1F, DummyMenuAction},
+ {gUnknown_Debug_083C2E38, DummyMenuAction},
+ {gUnknown_Debug_083C2E51, DummyMenuAction},
+ {gUnknown_Debug_083C2E6B, DummyMenuAction},
+ {gUnknown_Debug_083C2E78, DummyMenuAction},
+ {gUnknown_Debug_083C2E93, DummyMenuAction}
+};
+
+static const u8 gUnknown_Debug_083C2EF8[] = _("FEーDAISUKIーGOODSーFLAG01");
+static const u8 gUnknown_Debug_083C2F10[] = _("FEーDAISUKIーGOODSーFLAG02");
+static const u8 gUnknown_Debug_083C2F28[] = _("FEーDAISUKIーGOODSーFLAG03");
+static const u8 gUnknown_Debug_083C2F40[] = _("FEーDAISUKIーGOODSーFLAG04");
+static const u8 gUnknown_Debug_083C2F58[] = _("FEーDAISUKIーGOODSーFLAG05");
+static const u8 gUnknown_Debug_083C2F70[] = _("FEーBASHAー01ーP01ーFIELDーC101ー");
+static const u8 gUnknown_Debug_083C2F8C[] = _("FEーBASHAー01ーP02ーFIELDーC101ー");
+static const u8 gUnknown_Debug_083C2FA8[] = _("FEーBALLー01ーP01ーSPーCONTEST");
+static const u8 gUnknown_Debug_083C2FC2[] = _("FEーWOMAN2ー01ーP01ーT101ーR0201");
+
+static const struct MenuAction gUnknown_Debug_083C2FE0[] = {
+ {gUnknown_Debug_083C2EF8, DummyMenuAction},
+ {gUnknown_Debug_083C2F10, DummyMenuAction},
+ {gUnknown_Debug_083C2F28, DummyMenuAction},
+ {gUnknown_Debug_083C2F40, DummyMenuAction},
+ {gUnknown_Debug_083C2F58, DummyMenuAction},
+ {gUnknown_Debug_083C2F70, DummyMenuAction},
+ {gUnknown_Debug_083C2F8C, DummyMenuAction},
+ {gUnknown_Debug_083C2FA8, DummyMenuAction},
+ {gUnknown_Debug_083C2FC2, DummyMenuAction}
+};
+
+static const u8 gUnknown_Debug_083C3028[] = _("FEーSOUKOーOPENーCAVEーD1704");
+static const u8 gUnknown_Debug_083C3041[] = _("FEーSORAISIー01ーCAVEーD0101");
+static const u8 gUnknown_Debug_083C305A[] = _("FEーMAYUMIー01ーーR114ーR0201");
+static const u8 gUnknown_Debug_083C3073[] = _("FEーKUSUNOKIー01ーC102ーR0601");
+static const u8 gUnknown_Debug_083C308D[] = _("FEーOLDWOMAN1ー01ーCAVEーD0808");
+static const u8 gUnknown_Debug_083C30A8[] = _("FEーTRAINERM1ー01ーC109ーR0206");
+static const u8 gUnknown_Debug_083C30C3[] = _("FEーSOONANOーTAMAGOーGET");
+static const u8 gUnknown_Debug_083C30D9[] = _("FEーDASHーSHOESーGET");
+static const u8 gUnknown_Debug_083C30EB[] = _("FEーDEBONSUKOOPUーGET");
+
+static const struct MenuAction gUnknown_Debug_083C3100[] = {
+ {gUnknown_Debug_083C3028, DummyMenuAction},
+ {gUnknown_Debug_083C3041, DummyMenuAction},
+ {gUnknown_Debug_083C305A, DummyMenuAction},
+ {gUnknown_Debug_083C3073, DummyMenuAction},
+ {gUnknown_Debug_083C308D, DummyMenuAction},
+ {gUnknown_Debug_083C30A8, DummyMenuAction},
+ {gUnknown_Debug_083C30C3, DummyMenuAction},
+ {gUnknown_Debug_083C30D9, DummyMenuAction},
+ {gUnknown_Debug_083C30EB, DummyMenuAction}
+};
+
+static const u8 gUnknown_Debug_083C3148[] = _("FEーSTUDYM1ー01ーP01ーT101R0301");
+static const u8 gUnknown_Debug_083C3164[] = _("FEーWORKERM1ー01ーC103ーR0201");
+static const u8 gUnknown_Debug_083C317E[] = _("FEーHIMITSUーGET");
+static const u8 gUnknown_Debug_083C318D[] = _("");
+static const u8 gUnknown_Debug_083C318E[] = _("");
+static const u8 gUnknown_Debug_083C318F[] = _("");
+static const u8 gUnknown_Debug_083C3190[] = _("");
+static const u8 gUnknown_Debug_083C3191[] = _("");
+static const u8 gUnknown_Debug_083C3192[] = _("");
+
+static const struct MenuAction gUnknown_Debug_083C3194[] = {
+ {gUnknown_Debug_083C3148, DummyMenuAction},
+ {gUnknown_Debug_083C3164, DummyMenuAction},
+ {gUnknown_Debug_083C317E, DummyMenuAction},
+ {gUnknown_Debug_083C318D, DummyMenuAction},
+ {gUnknown_Debug_083C318E, DummyMenuAction},
+ {gUnknown_Debug_083C318F, DummyMenuAction},
+ {gUnknown_Debug_083C3190, DummyMenuAction},
+ {gUnknown_Debug_083C3191, DummyMenuAction},
+ {gUnknown_Debug_083C3192, DummyMenuAction}
+};
+
+static const u8 gUnknown_Debug_083C31DC[] = {9, 9, 9, 9, 9, 9, 9, 9, 3};
+
+static const u16 gUnknown_Debug_83C31E6[][9] = {
+ {FLAG_RECEIVED_HM01, FLAG_RECEIVED_HM02, FLAG_RECEIVED_HM03, FLAG_RECEIVED_HM04, FLAG_RECEIVED_HM05, FLAG_RECEIVED_HM06, FLAG_RETURNED_DEVON_GOODS, FLAG_DEVON_GOODS_STOLEN, FLAG_RECOVERED_DEVON_GOODS},
+ {FLAG_RECEIVED_BIKE, 0x05B, 0x05C, 0x05D, FLAG_RECEIVED_WAILMER_PAIL, FLAG_RECEIVED_POKEBLOCK_CASE, FLAG_RECEIVED_OLD_ROD, FLAG_RECEIVED_GOOD_ROD, FLAG_RECEIVED_SUPER_ROD},
+ {FLAG_DEFEATED_EVIL_TEAM_MT_CHIMNEY, FLAG_EXCHANGED_SCANNER, FLAG_LEGEND_ESCAPED_SEAFLOOR_CAVERN, FLAG_LEGENDARY_BATTLE_COMPLETED, FLAG_RECEIVED_REPEAT_BALL, FLAG_RECEIVED_SS_TICKET, FLAG_KECLEON_FLED_FORTREE, FLAG_RECEIVED_FOSSIL_MON, FLAG_DEFEATED_SS_TIDAL_TRAINERS},
+ {0x06C, FLAG_DEFEATED_WALLY_VICTORY_ROAD, FLAG_DEFEATED_WALLY_MAUVILLE, FLAG_WALLY_SPEECH, FLAG_DECLINED_WALLY_BATTLE_MAUVILLE, FLAG_USED_ROOM_1_KEY, FLAG_USED_ROOM_2_KEY, FLAG_USED_ROOM_4_KEY, FLAG_USED_ROOM_6_KEY},
+ {FLAG_TRICK_HOUSE_PUZZLE_7_SWITCH_1, FLAG_TRICK_HOUSE_PUZZLE_7_SWITCH_2, FLAG_TRICK_HOUSE_PUZZLE_7_SWITCH_3, FLAG_TRICK_HOUSE_PUZZLE_7_SWITCH_4, FLAG_TRICK_HOUSE_PUZZLE_7_SWITCH_5, FLAG_MOSSDEEP_GYM_SWITCH_1, FLAG_MOSSDEEP_GYM_SWITCH_2, FLAG_MOSSDEEP_GYM_SWITCH_3, FLAG_MOSSDEEP_GYM_SWITCH_4},
+ {FLAG_DEFEATED_RIVAL_ROUTE103, FLAG_DECLINED_RIVAL_BATTLE_LILYCOVE, FLAG_MET_RIVAL_RUSTBORO, FLAG_MET_RIVAL_LILYCOVE, FLAG_MET_RIVAL_IN_HOUSE_AFTER_LILYCOVE, 0x050, FLAG_SET_WALL_CLOCK, FLAG_RESCUED_BIRCH, 0x055},
+ {FLAG_RECEIVED_RED_SCARF, FLAG_RECEIVED_BLUE_SCARF, FLAG_RECEIVED_PINK_SCARF, FLAG_RECEIVED_GREEN_SCARF, FLAG_RECEIVED_YELLOW_SCARF, 0x053, 0x054, FLAG_LINK_CONTEST_ROOM_POKEBALL, FLAG_MET_RIVAL_MOM},
+ {FLAG_USED_STORAGE_KEY, FLAG_MET_PROF_COSMO, FLAG_RECEIVED_DOLL_LANETTE, FLAG_EVIL_TEAM_ESCAPED_STERN_SPOKE, FLAG_RETURNED_RED_OR_BLUE_ORB, FLAG_ENTERED_ELITE_FOUR, FLAG_RECEIVED_LAVARIDGE_EGG, FLAG_RECEIVED_RUNNING_SHOES, FLAG_RECEIVED_DEVON_SCOPE},
+ {FLAG_BIRCH_AIDE_MET, FLAG_DECLINED_BIKE, FLAG_RECEIVED_SECRET_POWER}
+};
+
+static const u8 gUnknown_Debug_083C3288[] = _("CYCLEかんれん");
+static const u8 gUnknown_Debug_083C3292[] = _("おおきさくらべ");
+static const u8 gUnknown_Debug_083C329A[] = _("カウンタ");
+static const u8 gUnknown_Debug_083C329F[] = _("そのた1");
+static const u8 gUnknown_Debug_083C32A4[] = _("そのた2");
+
+static const struct MenuAction gUnknown_Debug_083C32AC[] = {
+ {gUnknown_Debug_083C3288, debug_sub_808E400},
+ {gUnknown_Debug_083C3292, debug_sub_808E458},
+ {gUnknown_Debug_083C329A, debug_sub_808E4B0},
+ {gUnknown_Debug_083C329F, debug_sub_808E508},
+ {gUnknown_Debug_083C32A4, debug_sub_808E560}
+};
+
+static const u8 gUnknown_Debug_083C32D4[] = _("WKーCYCLEーROADーHIT");
+static const u8 gUnknown_Debug_083C32E6[] = _("WKーCYCLEーROADーTIMエ1");
+static const u8 gUnknown_Debug_083C32FA[] = _("WKーCYCLEーROADーTIMエ2");
+
+static const u8 gUnknown_Debug_083C330E[] = _("WKーSIZEーKINOKOKOーOYAJI");
+static const u8 gUnknown_Debug_083C3325[] = _("WKーSIZEーNAMAZOーOYAJI");
+
+static const u8 gUnknown_Debug_083C333A[] = _("WKーSPRAYーCOUNT");
+static const u8 gUnknown_Debug_083C3349[] = _("WKーICEーCOUNT");
+static const u8 gUnknown_Debug_083C3356[] = _("WKーASHーGATHERーCOUNT");
+static const u8 gUnknown_Debug_083C336A[] = _("WKーCRUISEーCOUNT");
+static const u8 gUnknown_Debug_083C337A[] = _("WKーFRIENDLYーSTEPーCOUNT");
+static const u8 gUnknown_Debug_083C3391[] = _("WKーPOISONーSTEPーCOUNT");
+
+static const u8 gUnknown_Debug_083C33A6[] = _("WKRECYCLEーGOODS");
+static const u8 gUnknown_Debug_083C33B6[] = _("WKーFIRSTーPOKE");
+static const u8 gUnknown_Debug_083C33C4[] = _("WKーMABOROSIRNDーH");
+static const u8 gUnknown_Debug_083C33D5[] = _("WKーMABOROSIRNDーL");
+static const u8 gUnknown_Debug_083C33E6[] = _("EVーONEーDAYーWORK");
+static const u8 gUnknown_Debug_083C33F6[] = _("EVーFANWORK");
+static const u8 gUnknown_Debug_083C3401[] = _("EVーFANTIME");
+static const u8 gUnknown_Debug_083C340C[] = _("WKーKARAKURIーLEVEL");
+static const u8 gUnknown_Debug_083C341E[] = _("WKーPOKELOTーPRIZE");
+
+static const u8 gUnknown_Debug_083C342F[] = _("WKーSPECIALーZUKN");
+static const u8 gUnknown_Debug_083C343F[] = _("WKーHYOUKAーDAYS");
+static const u8 gUnknown_Debug_083C344E[] = _("WKーPOKELOTーRND1");
+static const u8 gUnknown_Debug_083C345E[] = _("WKーPOKELOTーRND2");
+static const u8 gUnknown_Debug_083C346E[] = _("WKーBASEーMAPNO");
+
+static const struct MenuAction gUnknown_Debug_083C347C[] = {
+ {gUnknown_Debug_083C32D4, DummyMenuAction},
+ {gUnknown_Debug_083C32E6, DummyMenuAction},
+ {gUnknown_Debug_083C32FA, DummyMenuAction}
+};
+
+static const struct MenuAction gUnknown_Debug_083C3494[] = {
+ {gUnknown_Debug_083C330E, DummyMenuAction},
+ {gUnknown_Debug_083C3325, DummyMenuAction}
+};
+
+static const struct MenuAction gUnknown_Debug_083C34A4[] = {
+ {gUnknown_Debug_083C333A, DummyMenuAction},
+ {gUnknown_Debug_083C3349, DummyMenuAction},
+ {gUnknown_Debug_083C3356, DummyMenuAction},
+ {gUnknown_Debug_083C336A, DummyMenuAction},
+ {gUnknown_Debug_083C337A, DummyMenuAction},
+ {gUnknown_Debug_083C3391, DummyMenuAction}
+};
+
+static const struct MenuAction gUnknown_Debug_083C34D4[] = {
+ {gUnknown_Debug_083C33A6, DummyMenuAction},
+ {gUnknown_Debug_083C33B6, DummyMenuAction},
+ {gUnknown_Debug_083C33C4, DummyMenuAction},
+ {gUnknown_Debug_083C33D5, DummyMenuAction},
+ {gUnknown_Debug_083C33E6, DummyMenuAction},
+ {gUnknown_Debug_083C33F6, DummyMenuAction},
+ {gUnknown_Debug_083C3401, DummyMenuAction},
+ {gUnknown_Debug_083C340C, DummyMenuAction},
+ {gUnknown_Debug_083C341E, DummyMenuAction}
+};
+
+static const struct MenuAction gUnknown_Debug_083C351C[] = {
+ {gUnknown_Debug_083C342F, DummyMenuAction},
+ {gUnknown_Debug_083C343F, DummyMenuAction},
+ {gUnknown_Debug_083C344E, DummyMenuAction},
+ {gUnknown_Debug_083C345E, DummyMenuAction},
+ {gUnknown_Debug_083C346E, DummyMenuAction}
+};
+
+static const u8 gUnknown_Debug_083C3544[] = {3, 2, 6, 9, 5};
+
+static const u16 gUnknown_Debug_083C354A[][9] = {
+ {VAR_CYCLING_ROAD_RECORD_COLLISIONS, VAR_CYCLING_ROAD_RECORD_TIME_L, VAR_CYCLING_ROAD_RECORD_TIME_H},
+ {VAR_SHROOMISH_SIZE_RECORD, VAR_BARBOACH_SIZE_RECORD},
+ {VAR_REPEL_STEP_COUNT, VAR_ICE_STEP_COUNT, VAR_ASH_GATHER_COUNT, VAR_CRUISE_STEP_COUNT, VAR_HAPPINESS_STEP_COUNTER, VAR_POISON_STEP_COUNTER},
+ {VAR_RECYCLE_GOODS, VAR_STARTER_MON, VAR_MIRAGE_RND_H, VAR_MIRAGE_RND_L, VAR_DAYS, VAR_FANCLUB_UNKNOWN_1, VAR_FANCLUB_UNKNOWN_2, VAR_TRICK_HOUSE_ROOMS_COMPLETED, VAR_LOTTERY_PRIZE},
+ {VAR_NATIONAL_DEX, VAR_BIRCH_STATE, VAR_LOTTERY_RND_L, VAR_LOTTERY_RND_H, VAR_SECRET_BASE_MAP}
+};
+
+static const u8 gUnknown_Debug_083C35A4[] = _("OBJCHRWORK0ー8");
+static const u8 gUnknown_Debug_083C35B2[] = _("OBJCHRWORK9ー15");
+
+static const struct MenuAction gUnknown_Debug_083C35C4[] = {
+ {gUnknown_Debug_083C35A4, debug_sub_808E9A0},
+ {gUnknown_Debug_083C35B2, debug_sub_808E9F8}
+};
+
+static const u8 gUnknown_Debug_083C35D4[] = _("OBJCHRWORK1");
+static const u8 gUnknown_Debug_083C35E0[] = _("OBJCHRWORK2");
+static const u8 gUnknown_Debug_083C35EC[] = _("OBJCHRWORK3");
+static const u8 gUnknown_Debug_083C35F8[] = _("OBJCHRWORK4");
+static const u8 gUnknown_Debug_083C3604[] = _("OBJCHRWORK5");
+static const u8 gUnknown_Debug_083C3610[] = _("OBJCHRWORK6");
+static const u8 gUnknown_Debug_083C361C[] = _("OBJCHRWORK7");
+static const u8 gUnknown_Debug_083C3628[] = _("OBJCHRWORK8");
+static const u8 gUnknown_Debug_083C3634[] = _("OBJCHRWORK9");
+
+static const u8 gUnknown_Debug_083C3640[] = _("OBJCHRWORK10");
+static const u8 gUnknown_Debug_083C364D[] = _("OBJCHRWORK11");
+static const u8 gUnknown_Debug_083C365A[] = _("OBJCHRWORK12");
+static const u8 gUnknown_Debug_083C3667[] = _("OBJCHRWORK13");
+static const u8 gUnknown_Debug_083C3674[] = _("OBJCHRWORK14");
+static const u8 gUnknown_Debug_083C3681[] = _("OBJCHRWORK15");
+static const u8 gUnknown_Debug_083C368E[] = _("OBJCHRWORK16");
+
+static const struct MenuAction gUnknown_Debug_083C369C[] = {
+ {gUnknown_Debug_083C35D4, DummyMenuAction},
+ {gUnknown_Debug_083C35E0, DummyMenuAction},
+ {gUnknown_Debug_083C35EC, DummyMenuAction},
+ {gUnknown_Debug_083C35F8, DummyMenuAction},
+ {gUnknown_Debug_083C3604, DummyMenuAction},
+ {gUnknown_Debug_083C3610, DummyMenuAction},
+ {gUnknown_Debug_083C361C, DummyMenuAction},
+ {gUnknown_Debug_083C3628, DummyMenuAction},
+ {gUnknown_Debug_083C3634, DummyMenuAction}
+};
+
+static const struct MenuAction gUnknown_Debug_083C36E4[] = {
+ {gUnknown_Debug_083C3640, DummyMenuAction},
+ {gUnknown_Debug_083C364D, DummyMenuAction},
+ {gUnknown_Debug_083C365A, DummyMenuAction},
+ {gUnknown_Debug_083C3667, DummyMenuAction},
+ {gUnknown_Debug_083C3674, DummyMenuAction},
+ {gUnknown_Debug_083C3681, DummyMenuAction},
+ {gUnknown_Debug_083C368E, DummyMenuAction}
+};
+
+static const u8 gUnknown_Debug_083C371C[] = {9, 7};
+
+static const u16 gUnknown_Debug_083C371E[][9] = {
+ {VAR_OBJ_GFX_ID_0, VAR_OBJ_GFX_ID_1, VAR_OBJ_GFX_ID_2, VAR_OBJ_GFX_ID_3, VAR_OBJ_GFX_ID_4, VAR_OBJ_GFX_ID_5, VAR_OBJ_GFX_ID_6, VAR_OBJ_GFX_ID_7, VAR_OBJ_GFX_ID_8},
+ {VAR_OBJ_GFX_ID_9, VAR_OBJ_GFX_ID_A, VAR_OBJ_GFX_ID_B, VAR_OBJ_GFX_ID_C, VAR_OBJ_GFX_ID_D, VAR_OBJ_GFX_ID_E, VAR_OBJ_GFX_ID_F}
+};
+
+static const u8 gUnknown_Debug_083C3742[] = _("SP");
+static const u8 gUnknown_Debug_083C3745[] = _("ルーム R110 PART1/カラクリ");
+static const u8 gUnknown_Debug_083C3759[] = _("ルーム R110 PART2");
+static const u8 gUnknown_Debug_083C3768[] = _("ルーム ロード");
+static const u8 gUnknown_Debug_083C3770[] = _("ソノタ1");
+static const u8 gUnknown_Debug_083C3775[] = _("ソノタ2");
+
+static const struct MenuAction sMenuActions_ControlWorks_SaveWorkPart2[] = {
+ {gUnknown_Debug_083C3742, ControlWorks_SaveWorkPart2_SP_InitSubsubmenu},
+ {gUnknown_Debug_083C3745, ControlWorks_SaveWorkPart2_RoomR110Part1TrickHouse_InitSubsubmenu},
+ {gUnknown_Debug_083C3759, ControlWorks_SaveWorkPart2_RoomR110Part2_InitSubsubmenu},
+ {gUnknown_Debug_083C3768, ControlWorks_SaveWorkPart2_RoomLoad_InitSubsubmenu},
+ {gUnknown_Debug_083C3770, debug_sub_808E1B4},
+ {gUnknown_Debug_083C3775, debug_sub_808E20C}
+};
+
+static const u8 gUnknown_Debug_083C37AC[] = _("WKーSCENEーSPーCONTEST");
+static const u8 gUnknown_Debug_083C37C0[] = _("WKーSCENEーSPーPC");
+static const u8 gUnknown_Debug_083C37CF[] = _("WKーSCENEーSPーCONTEST03");
+static const u8 gUnknown_Debug_083C37E5[] = _("WKーSCENEーSPーCONTESTITEM");
+static const u8 gUnknown_Debug_083C37FD[] = _("WKーSCENEーSPーOPENING");
+static const u8 gUnknown_Debug_083C3811[] = _("WKーSCENEーSPーSHIP01");
+static const u8 gUnknown_Debug_083C3824[] = _("");
+static const u8 gUnknown_Debug_083C3825[] = _("");
+static const u8 gUnknown_Debug_083C3826[] = _("");
+
+static const u8 gUnknown_Debug_083C3827[] = _("WKーSCENEーR110ーR0101");
+static const u8 gUnknown_Debug_083C383B[] = _("WKーSCENEーR110ーR0102");
+static const u8 gUnknown_Debug_083C384F[] = _("WKーSCENEーR110ーR0103");
+static const u8 gUnknown_Debug_083C3863[] = _("WKーKARAKURIーDAIOU");
+static const u8 gUnknown_Debug_083C3875[] = _("WKーSCENEーSHISEN");
+static const u8 gUnknown_Debug_083C3885[] = _("");
+static const u8 gUnknown_Debug_083C3886[] = _("");
+static const u8 gUnknown_Debug_083C3887[] = _("");
+static const u8 gUnknown_Debug_083C3888[] = _("");
+
+static const u8 gUnknown_Debug_083C3889[] = _("WKーSCENEーR110ーR0104");
+static const u8 gUnknown_Debug_083C389D[] = _("WKーSCENEーR110ーR0105");
+static const u8 gUnknown_Debug_083C38B1[] = _("WKーSCENEーR110ーR0106");
+static const u8 gUnknown_Debug_083C38C5[] = _("WKーSCENEーR110ーR0107");
+static const u8 gUnknown_Debug_083C38D9[] = _("WKーSCENEーR110ーR0108");
+static const u8 gUnknown_Debug_083C38ED[] = _("WKーSCENEーR110ーR0109");
+static const u8 gUnknown_Debug_083C3901[] = _("WKーSCENEーR110ーR0110");
+static const u8 gUnknown_Debug_083C3915[] = _("WKーSCENEーR110ーR0111");
+static const u8 gUnknown_Debug_083C3929[] = _("WKーSCENEー02ーR110ーR0110");
+
+static const u8 gUnknown_Debug_083C3940[] = _("WKーSCENEーR104ーR0101");
+static const u8 gUnknown_Debug_083C3954[] = _("WKーSCENEーR113ーR0101");
+static const u8 gUnknown_Debug_083C3968[] = _("");
+static const u8 gUnknown_Debug_083C3969[] = _("");
+static const u8 gUnknown_Debug_083C396A[] = _("");
+static const u8 gUnknown_Debug_083C396B[] = _("");
+static const u8 gUnknown_Debug_083C396C[] = _("");
+static const u8 gUnknown_Debug_083C396D[] = _("");
+static const u8 gUnknown_Debug_083C396E[] = _("");
+
+static const u8 gUnknown_Debug_083C396F[] = _("WKーSCENEーBASEーGDOODS");
+static const u8 gUnknown_Debug_083C3984[] = _("WKーSCENEーHAGIーFUNE");
+static const u8 gUnknown_Debug_083C3997[] = _("WKーSCENEーFUNEーPOS");
+static const u8 gUnknown_Debug_083C39A9[] = _("WKーSCENEーBASEーMAKE");
+static const u8 gUnknown_Debug_083C39BC[] = _("WKーSCENEーARTISTーC106ーR");
+static const u8 gUnknown_Debug_083C39D3[] = _("WKーSCENEーPOKEーLEAGUE");
+static const u8 gUnknown_Debug_083C39E8[] = _("WKーSCENEーROPEWAY");
+static const u8 gUnknown_Debug_083C39F9[] = _("WKーSCENEーSAFARIーZONE");
+static const u8 gUnknown_Debug_083C3A0E[] = _("WKーSCENEーCYCLEーROAD");
+
+static const u8 gUnknown_Debug_083C3A22[] = _("WKーSCENEーR119ーTENKI");
+static const u8 gUnknown_Debug_083C3A36[] = _("WKーSCENEー01ーC102ーR0401");
+static const u8 gUnknown_Debug_083C3A4D[] = _("WKーFUTAGOー01ーFIELDーR104");
+static const u8 gUnknown_Debug_083C3A65[] = _("WKーSCENEーBATTLEーTOWER");
+static const u8 gUnknown_Debug_083C3A7B[] = _("WKーSCENEーTRーHOUSE");
+static const u8 gUnknown_Debug_083C3A8D[] = _("WKーKASEKIーTYPE");
+static const u8 gUnknown_Debug_083C3A9C[] = _("");
+static const u8 gUnknown_Debug_083C3A9D[] = _("");
+static const u8 gUnknown_Debug_083C3A9E[] = _("");
+
+static const struct MenuAction gUnknown_Debug_083C3AA0[] = {
+ {gUnknown_Debug_083C37AC, DummyMenuAction},
+ {gUnknown_Debug_083C37C0, DummyMenuAction},
+ {gUnknown_Debug_083C37CF, DummyMenuAction},
+ {gUnknown_Debug_083C37E5, DummyMenuAction},
+ {gUnknown_Debug_083C37FD, DummyMenuAction},
+ {gUnknown_Debug_083C3811, DummyMenuAction},
+ {gUnknown_Debug_083C3824, DummyMenuAction},
+ {gUnknown_Debug_083C3825, DummyMenuAction}
+};
+
+static const struct MenuAction gUnknown_Debug_83C3AE0[] = {
+ {gUnknown_Debug_083C3827, DummyMenuAction},
+ {gUnknown_Debug_083C383B, DummyMenuAction},
+ {gUnknown_Debug_083C384F, DummyMenuAction},
+ {gUnknown_Debug_083C3863, DummyMenuAction},
+ {gUnknown_Debug_083C3875, DummyMenuAction},
+ {gUnknown_Debug_083C3885, DummyMenuAction},
+ {gUnknown_Debug_083C3886, DummyMenuAction},
+ {gUnknown_Debug_083C3887, DummyMenuAction},
+ {gUnknown_Debug_083C3888, DummyMenuAction}
+};
+
+static const struct MenuAction gUnknown_Debug_83C3B28[] = {
+ {gUnknown_Debug_083C3889, DummyMenuAction},
+ {gUnknown_Debug_083C389D, DummyMenuAction},
+ {gUnknown_Debug_083C38B1, DummyMenuAction},
+ {gUnknown_Debug_083C38C5, DummyMenuAction},
+ {gUnknown_Debug_083C38D9, DummyMenuAction},
+ {gUnknown_Debug_083C38ED, DummyMenuAction},
+ {gUnknown_Debug_083C3901, DummyMenuAction},
+ {gUnknown_Debug_083C3915, DummyMenuAction},
+ {gUnknown_Debug_083C3929, DummyMenuAction}
+};
+
+static const struct MenuAction gUnknown_Debug_83C3B70[] = {
+ {gUnknown_Debug_083C3940, DummyMenuAction},
+ {gUnknown_Debug_083C3954, DummyMenuAction},
+ {gUnknown_Debug_083C3968, DummyMenuAction},
+ {gUnknown_Debug_083C3969, DummyMenuAction},
+ {gUnknown_Debug_083C396A, DummyMenuAction},
+ {gUnknown_Debug_083C396B, DummyMenuAction},
+ {gUnknown_Debug_083C396C, DummyMenuAction},
+ {gUnknown_Debug_083C396D, DummyMenuAction},
+ {gUnknown_Debug_083C396E, DummyMenuAction}
+};
+
+static const struct MenuAction gUnknown_Debug_83C3BB8[] = {
+ {gUnknown_Debug_083C396F, DummyMenuAction},
+ {gUnknown_Debug_083C3984, DummyMenuAction},
+ {gUnknown_Debug_083C3997, DummyMenuAction},
+ {gUnknown_Debug_083C39A9, DummyMenuAction},
+ {gUnknown_Debug_083C39BC, DummyMenuAction},
+ {gUnknown_Debug_083C39D3, DummyMenuAction},
+ {gUnknown_Debug_083C39E8, DummyMenuAction},
+ {gUnknown_Debug_083C39F9, DummyMenuAction},
+ {gUnknown_Debug_083C3A0E, DummyMenuAction}
+};
+
+static const struct MenuAction gUnknown_Debug_83C3C00[] = {
+ {gUnknown_Debug_083C3A22, DummyMenuAction},
+ {gUnknown_Debug_083C3A36, DummyMenuAction},
+ {gUnknown_Debug_083C3A4D, DummyMenuAction},
+ {gUnknown_Debug_083C3A65, DummyMenuAction},
+ {gUnknown_Debug_083C3A7B, DummyMenuAction},
+ {gUnknown_Debug_083C3A8D, DummyMenuAction},
+ {gUnknown_Debug_083C3A9C, DummyMenuAction},
+ {gUnknown_Debug_083C3A9D, DummyMenuAction},
+ {gUnknown_Debug_083C3A9E, DummyMenuAction}
+};
+
+static const u8 sControlWorks_SaveWork_CountsArray[] = {6, 5, 9, 2, 9, 6};
+
+static const u16 sControlWorks_SaveWork_ItemArrays[][9] = {
+ {VAR_LINK_CONTEST_ROOM_STATE, VAR_CABLE_CLUB_STATE, VAR_CONTEST_LOCATION, VAR_CONTEST_PRIZE_PICKUP, VAR_LITTLEROOT_INTRO_STATE, VAR_PORTHOLE_STATE},
+ {VAR_TRICK_HOUSE_ENTRANCE_STATE_2, VAR_TRICK_HOUSE_PRIZE_PICKUP, VAR_TRICK_HOUSE_STATE, VAR_TRICK_HOUSE_ENTRANCE_STATE_3, VAR_TRICK_HOUSE_ENTRANCE_STATE},
+ {VAR_TRICK_HOUSE_PUZZLE_1_STATE, VAR_TRICK_HOUSE_PUZZLE_2_STATE, VAR_TRICK_HOUSE_PUZZLE_3_STATE, VAR_TRICK_HOUSE_PUZZLE_4_STATE, VAR_TRICK_HOUSE_PUZZLE_5_STATE, VAR_TRICK_HOUSE_PUZZLE_6_STATE, VAR_TRICK_HOUSE_PUZZLE_7_STATE, VAR_TRICK_HOUSE_PUZZLE_8_STATE, VAR_TRICK_HOUSE_PUZZLE_7_STATE_2},
+ {VAR_BRINEY_HOUSE_STATE, VAR_GLASS_WORKSHOP_STATE},
+ {VAR_0x4089, VAR_BOARD_BRINEY_BOAT_ROUTE104_STATE, VAR_BRINEY_LOCATION, VAR_0x4097, VAR_LILYCOVE_CONTEST_LOBBY_STATE, VAR_ELITE_4_STATE, VAR_CABLE_CAR_STATION_STATE, VAR_SAFARI_ZONE_STATE, VAR_CYCLING_CHALLENGE_STATE},
+ {VAR_WEATHER_INSTITUTE_STATE, VAR_SLATEPORT_FAN_CLUB_STATE, 0x40BB, VAR_BRAVO_TRAINER_BATTLE_TOWER_ON, VAR_GAME_CORNER_STATE, VAR_WHICH_FOSSIL_REVIVED}
+};
+
+static const u8 sString_Town[] = _("タウン");
+static const u8 sString_City[] = _("シティ");
+static const u8 sString_Route_101_to_109[] = _("ロード101ー109");
+static const u8 sString_Route_110_to_118[] = _("ロード110ー118");
+static const u8 sString_Route_119_to_127[] = _("ロード119ー127");
+static const u8 sString_Route_128_to_134[] = _("ロード128ー134");
+static const u8 sString_Room_Town[] = _("ルーム タウン");
+static const u8 sString_Room_City[] = _("ルーム シティ");
+static const u8 sString_Dungeon_nai[] = _("ダンジョンない");
+
+static const struct MenuAction sMenuAction_ControlWorks_SaveWork[] = {
+ {sString_Town, ControlWorks_SaveWork_Town_InitSubsubmenu},
+ {sString_City, ControlWorks_SaveWork_City_InitSubsubmenu},
+ {sString_Route_101_to_109, ControlWorks_SaveWork_Route101To109_InitSubsubmenu},
+ {sString_Route_110_to_118, ControlWorks_SaveWork_Route110To118_InitSubsubmenu},
+ {sString_Route_119_to_127, ControlWorks_SaveWork_Route119To127_InitSubsubmenu},
+ {sString_Route_128_to_134, ControlWorks_SaveWork_Route128To134_InitSubsubmenu},
+ {sString_Room_Town, ControlWorks_SaveWork_RoomTown_InitSubsubmenu},
+ {sString_Room_City, ControlWorks_SaveWork_RoomCity_InitSubsubmenu},
+ {sString_Dungeon_nai, ControlWorks_SaveWork_Dungeon_InitSubsubmenu}
+};
+
+static const u8 sString_WK_SCENE_FIELD_T101[] = _("WKーSCENEーFIELDーT101");
+static const u8 sString_WK_SCENE_FIELD_T102[] = _("WKーSCENEーFIELDーT102");
+static const u8 sString_WK_SCENE_FIELD_T103[] = _("WKーSCENEーFIELDーT103");
+static const u8 sString_WK_SCENE_FIELD_T104[] = _("WKーSCENEーFIELDーT104");
+static const u8 sString_WK_BASE_POSNO[] = _("WKーBASEーPOSNO");
+static const u8 sString_WK_SCENE_FIELD_T106[] = _("WKーSCENEーFIELDーT106");
+static const u8 sString_WK_SCENE_FIELD_T107[] = _("WKーSCENEーFIELDーT107");
+static const u8 sString_WK_SCENE_2_FIELD_T102[] = _("WKーSCENEー02ーFIELDーT102");
+
+static const u8 sString_WK_SCENE_FIELD_C101[] = _("WKーSCENEーFIELDーC101");
+static const u8 sString_WK_SCENE_FIELD_C102[] = _("WKーSCENEーFIELDーC102");
+static const u8 sString_WK_SCENE_FIELD_C103[] = _("WKーSCENEーFIELDーC103");
+static const u8 sString_WK_SCENE_FIELD_C104[] = _("WKーSCENEーFIELDーC104");
+static const u8 sString_WK_SCENE_FIELD_C105[] = _("WKーSCENEーFIELDーC105");
+static const u8 sString_WK_SCENE_FIELD_C106[] = _("WKーSCENEーFIELDーC106");
+static const u8 sString_WK_SCENE_FIELD_C107[] = _("WKーSCENEーFIELDーC107");
+static const u8 sString_WK_SCENE_FIELD_C108[] = _("WKーSCENEーFIELDーC108");
+static const u8 sString_WK_SCENE_FIELD_C109[] = _("WKーSCENEーFIELDーC109");
+
+static const u8 sString_WK_SCENE_FIELD_R101[] = _("WKーSCENEーFIELDーR101");
+static const u8 sString_WK_SCENE_FIELD_R102[] = _("WKーSCENEーFIELDーR102");
+static const u8 sString_WK_SCENE_FIELD_R103[] = _("WKーSCENEーFIELDーR103");
+static const u8 sString_WK_SCENE_FIELD_R104[] = _("WKーSCENEーFIELDーR104");
+static const u8 sString_WK_SCENE_FIELD_R105[] = _("WKーSCENEーFIELDーR105");
+static const u8 sString_WK_SCENE_FIELD_R106[] = _("WKーSCENEーFIELDーR106");
+static const u8 sString_WK_SCENE_FIELD_R107[] = _("WKーSCENEーFIELDーR107");
+static const u8 sString_WK_SCENE_FIELD_R108[] = _("WKーSCENEーFIELDーR108");
+static const u8 sString_WK_SCENE_FIELD_R109[] = _("WKーSCENEーFIELDーR109");
+
+static const u8 sString_WK_SCENE_FIELD_R110[] = _("WKーSCENEーFIELDーR110");
+static const u8 sString_WK_SCENE_FIELD_R111[] = _("WKーSCENEーFIELDーR111");
+static const u8 sString_WK_SCENE_FIELD_R112[] = _("WKーSCENEーFIELDーR112");
+static const u8 sString_WK_SCENE_FIELD_R113[] = _("WKーSCENEーFIELDーR113");
+static const u8 sString_WK_SCENE_FIELD_R114[] = _("WKーSCENEーFIELDーR114");
+static const u8 sString_WK_SCENE_FIELD_R115[] = _("WKーSCENEーFIELDーR115");
+static const u8 sString_WK_SCENE_FIELD_R116[] = _("WKーSCENEーFIELDーR116");
+static const u8 sString_WK_SCENE_FIELD_R117[] = _("WKーSCENEーFIELDーR117");
+static const u8 sString_WK_SCENE_FIELD_R118[] = _("WKーSCENEーFIELDーR118");
+
+static const u8 sString_WK_SCENE_FIELD_R119[] = _("WKーSCENEーFIELDーR119");
+static const u8 sString_WK_SCENE_FIELD_R120[] = _("WKーSCENEーFIELDーR120");
+static const u8 sString_WK_SCENE_FIELD_R121[] = _("WKーSCENEーFIELDーR121");
+static const u8 sString_WK_SCENE_FIELD_R122[] = _("WKーSCENEーFIELDーR122");
+static const u8 sString_WK_SCENE_FIELD_R123[] = _("WKーSCENEーFIELDーR123");
+static const u8 sString_WK_SCENE_FIELD_R124[] = _("WKーSCENEーFIELDーR124");
+static const u8 sString_WK_SCENE_FIELD_R125[] = _("WKーSCENEーFIELDーR125");
+static const u8 sString_WK_SCENE_FIELD_R126[] = _("WKーSCENEーFIELDーR126");
+static const u8 sString_WK_SCENE_FIELD_R127[] = _("WKーSCENEーFIELDーR127");
+
+static const u8 sString_WK_SCENE_FIELD_R128[] = _("WKーSCENEーFIELDーR128");
+static const u8 sString_WK_SCENE_FIELD_R129[] = _("WKーSCENEーFIELDーR129");
+static const u8 sString_WK_SCENE_FIELD_R130[] = _("WKーSCENEーFIELDーR130");
+static const u8 sString_WK_SCENE_FIELD_R131[] = _("WKーSCENEーFIELDーR131");
+static const u8 sString_WK_SCENE_FIELD_R132[] = _("WKーSCENEーFIELDーR132");
+static const u8 sString_WK_SCENE_FIELD_R133[] = _("WKーSCENEーFIELDーR133");
+static const u8 sString_WK_SCENE_FIELD_R134[] = _("WKーSCENEーFIELDーR134");
+
+static const u8 sString_WK_SCENE_T101_R0101[] = _("WKーSCENEーT101ーR0101");
+static const u8 sString_WK_SCENE_T101_R0102[] = _("WKーSCENEーT101ーR0102");
+static const u8 sString_WK_SCENE_T101_R0301[] = _("WKーSCENEーT101ーR0301");
+static const u8 sString_WK_SCENE_T101_R0201[] = _("WKーSCENEーT101ーR0201");
+static const u8 sString_WK_SCENE_T101_R0202[] = _("WKーSCENEーT101ーR0202");
+static const u8 sString_WK_SCENE_T107_R0201[] = _("WKーSCENEーT107ーR0201"); // unused string
+
+static const u8 sString_WK_SCENE_C101_R0201[] = _("WKーSCENEーC101ーR0201");
+static const u8 sString_WK_SCENE_C104_R0103[] = _("WKーSCENEーC104ーR0103");
+static const u8 sString_WK_SCENE_C103_R0101[] = _("WKーSCENEーC103ーR0101");
+static const u8 sString_WK_SCENE_C106_R0202[] = _("WKーSCENEーC106ーR0202");
+static const u8 sString_WK_SCENE_C106_R0401[] = _("WKーSCENEーC106ーR0401");
+static const u8 sString_WK_SCENE_C101_R0601[] = _("WKーSCENEーC102ーR0601");
+static const u8 sString_WK_SCENE_C102_R0501[] = _("WKーSCENEーC102ーR0501");
+static const u8 sString_WK_SCENE_C104_R0102[] = _("WKーSCENEーC104ーR0102");
+static const u8 sString_WK_SCENE_C107_R0501[] = _("WKーSCENEーC107ーR0501");
+
+static const u8 sString_WK_SCENE_CAVE_D0601[] = _("WKーSCENEーCAVEーD0601");
+static const u8 sString_WK_SCENE_CAVE_D0201[] = _("WKーSCENEーCAVEーD0201");
+static const u8 sString_WK_SCENE_CAVE_D1206[] = _("WKーSCENEーCAVEーD1206");
+static const u8 sString_WK_SCENE_CAVE_D1111[] = _("WKーSCENEーCAVEーD1111");
+static const u8 sString_WK_SCENE_CAVE_D0701[] = _("WKーSCENEーCAVEーD0701");
+static const u8 sString_WK_SCENE_CAVE_D0808[] = _("WKーSCENEーCAVEーD0808");
+static const u8 sString_WK_SCENE_CAVE_D1602[] = _("WKーSCENEーCAVEーD1602");
+static const u8 sString_WK_SCENE_CAVE_D0101[] = _("WKーSCENEーCAVEーD0101");
+static const u8 sString_WK_SCENE_CAVE_D1301[] = _("WKーSCENEーCAVEーD1301");
+
+static const struct MenuAction sMenuActions_SaveWork_Town[] = {
+ {sString_WK_SCENE_FIELD_T101, DummyMenuAction},
+ {sString_WK_SCENE_FIELD_T102, DummyMenuAction},
+ {sString_WK_SCENE_FIELD_T103, DummyMenuAction},
+ {sString_WK_SCENE_FIELD_T104, DummyMenuAction},
+ {sString_WK_BASE_POSNO, DummyMenuAction},
+ {sString_WK_SCENE_FIELD_T106, DummyMenuAction},
+ {sString_WK_SCENE_FIELD_T107, DummyMenuAction},
+ {sString_WK_SCENE_2_FIELD_T102, DummyMenuAction}
+};
+
+static const struct MenuAction sMenuActions_SaveWork_City[] = {
+ {sString_WK_SCENE_FIELD_C101, DummyMenuAction},
+ {sString_WK_SCENE_FIELD_C102, DummyMenuAction},
+ {sString_WK_SCENE_FIELD_C103, DummyMenuAction},
+ {sString_WK_SCENE_FIELD_C104, DummyMenuAction},
+ {sString_WK_SCENE_FIELD_C105, DummyMenuAction},
+ {sString_WK_SCENE_FIELD_C106, DummyMenuAction},
+ {sString_WK_SCENE_FIELD_C107, DummyMenuAction},
+ {sString_WK_SCENE_FIELD_C108, DummyMenuAction},
+ {sString_WK_SCENE_FIELD_C109, DummyMenuAction}
+};
+
+static const struct MenuAction sMenuActions_SaveWork_Route101To109[] = {
+ {sString_WK_SCENE_FIELD_R101, DummyMenuAction},
+ {sString_WK_SCENE_FIELD_R102, DummyMenuAction},
+ {sString_WK_SCENE_FIELD_R103, DummyMenuAction},
+ {sString_WK_SCENE_FIELD_R104, DummyMenuAction},
+ {sString_WK_SCENE_FIELD_R105, DummyMenuAction},
+ {sString_WK_SCENE_FIELD_R106, DummyMenuAction},
+ {sString_WK_SCENE_FIELD_R107, DummyMenuAction},
+ {sString_WK_SCENE_FIELD_R108, DummyMenuAction},
+ {sString_WK_SCENE_FIELD_R109, DummyMenuAction}
+};
+
+static const struct MenuAction sMenuActions_SaveWork_Route110To118[] = {
+ {sString_WK_SCENE_FIELD_R110, DummyMenuAction},
+ {sString_WK_SCENE_FIELD_R111, DummyMenuAction},
+ {sString_WK_SCENE_FIELD_R112, DummyMenuAction},
+ {sString_WK_SCENE_FIELD_R113, DummyMenuAction},
+ {sString_WK_SCENE_FIELD_R114, DummyMenuAction},
+ {sString_WK_SCENE_FIELD_R115, DummyMenuAction},
+ {sString_WK_SCENE_FIELD_R116, DummyMenuAction},
+ {sString_WK_SCENE_FIELD_R117, DummyMenuAction},
+ {sString_WK_SCENE_FIELD_R118, DummyMenuAction}
+};
+
+static const struct MenuAction sMenuActions_SaveWork_Route119To127[] = {
+ {sString_WK_SCENE_FIELD_R119, DummyMenuAction},
+ {sString_WK_SCENE_FIELD_R120, DummyMenuAction},
+ {sString_WK_SCENE_FIELD_R121, DummyMenuAction},
+ {sString_WK_SCENE_FIELD_R122, DummyMenuAction},
+ {sString_WK_SCENE_FIELD_R123, DummyMenuAction},
+ {sString_WK_SCENE_FIELD_R124, DummyMenuAction},
+ {sString_WK_SCENE_FIELD_R125, DummyMenuAction},
+ {sString_WK_SCENE_FIELD_R126, DummyMenuAction},
+ {sString_WK_SCENE_FIELD_R127, DummyMenuAction}
+};
+
+static const struct MenuAction sMenuActions_SaveWork_Route128To134[] = {
+ {sString_WK_SCENE_FIELD_R128, DummyMenuAction},
+ {sString_WK_SCENE_FIELD_R129, DummyMenuAction},
+ {sString_WK_SCENE_FIELD_R130, DummyMenuAction},
+ {sString_WK_SCENE_FIELD_R131, DummyMenuAction},
+ {sString_WK_SCENE_FIELD_R132, DummyMenuAction},
+ {sString_WK_SCENE_FIELD_R133, DummyMenuAction},
+ {sString_WK_SCENE_FIELD_R134, DummyMenuAction}
+};
+
+static const struct MenuAction sMenuActions_SaveWork_RoomTown[] = {
+ {sString_WK_SCENE_T101_R0101, DummyMenuAction},
+ {sString_WK_SCENE_T101_R0102, DummyMenuAction},
+ {sString_WK_SCENE_T101_R0301, DummyMenuAction},
+ {sString_WK_SCENE_T101_R0201, DummyMenuAction},
+ {sString_WK_SCENE_T101_R0202, DummyMenuAction}
+};
+
+static const struct MenuAction sMenuActions_SaveWork_RoomCity[] = {
+ {sString_WK_SCENE_C101_R0201, DummyMenuAction},
+ {sString_WK_SCENE_C104_R0103, DummyMenuAction},
+ {sString_WK_SCENE_C103_R0101, DummyMenuAction},
+ {sString_WK_SCENE_C106_R0202, DummyMenuAction},
+ {sString_WK_SCENE_C106_R0401, DummyMenuAction},
+ {sString_WK_SCENE_C101_R0601, DummyMenuAction},
+ {sString_WK_SCENE_C102_R0501, DummyMenuAction},
+ {sString_WK_SCENE_C104_R0102, DummyMenuAction},
+ {sString_WK_SCENE_C107_R0501, DummyMenuAction}
+};
+
+static const struct MenuAction sMenuActions_SaveWork_Dungeon[] = {
+ {sString_WK_SCENE_CAVE_D0601, DummyMenuAction},
+ {sString_WK_SCENE_CAVE_D0201, DummyMenuAction},
+ {sString_WK_SCENE_CAVE_D1206, DummyMenuAction},
+ {sString_WK_SCENE_CAVE_D1111, DummyMenuAction},
+ {sString_WK_SCENE_CAVE_D0701, DummyMenuAction},
+ {sString_WK_SCENE_CAVE_D0808, DummyMenuAction},
+ {sString_WK_SCENE_CAVE_D1602, DummyMenuAction},
+ {sString_WK_SCENE_CAVE_D0101, DummyMenuAction},
+ {sString_WK_SCENE_CAVE_D1301, DummyMenuAction}
+};
+
+static const u8 gUnknown_Debug_083C457C[] = {8, 9, 9, 9, 9, 7, 6, 9, 9};
+
+static const u16 gUnknown_Debug_083C4586[][9] = {
+ {VAR_LITTLEROOT_STATE, VAR_ROUTE102_ACCESSIBLE, 0x4052, VAR_LAVARIDGE_RIVAL_STATE, VAR_CURRENT_SECRET_BASE, 0x4055, 0x4056, VAR_OLDALE_STATE},
+ {VAR_PETALBURG_STATE, VAR_SLATEPORT_STATE, 0x4059, VAR_RUSTBORO_STATE, 0x405B, 0x405C, 0x405D, VAR_SOOTOPOLIS_STATE, 0x405F},
+ {VAR_ROUTE101_STATE, 0x4061, VAR_ROUTE103_STATE, 0x4063, 0x4064, 0x4065, 0x4066, 0x4067, 0x4068},
+ {VAR_ROUTE110_STATE, 0x406A, 0x406B, 0x406C, 0x406D, 0x406E, VAR_ROUTE116_STATE, 0x4070, VAR_ROUTE118_STATE},
+ {VAR_ROUTE119_STATE, 0x4073, VAR_ROUTE121_STATE, 0x4075, 0x4076, 0x4077, 0x4078, 0x4079, 0x407A},
+ {VAR_ROUTE128_STATE, 0x407C, 0x407D, 0x407E, 0x407F, 0x4080, 0x4081},
+ {VAR_LITTLEROOT_HOUSES_STATE, 0x4083, VAR_BIRCH_LAB_STATE, VAR_LITTLEROOT_HOUSES_STATE_2, VAR_LITTLEROOT_RIVAL_STATE, VAR_PACIFIDLOG_TM_RECEIVED_DAY},
+ {VAR_PETALBURG_GYM_STATE, VAR_DEVON_CORP_3F_STATE, VAR_MAUVILLE_GYM_STATE, VAR_LILYCOVE_MUSEUM_2F_STATE, VAR_LILYCOVE_FAN_CLUB_STATE, VAR_SLATEPORT_HARBOR_STATE, VAR_SLATEPORT_MUSEUM_1F_STATE, VAR_FOSSIL_RESURRECTION_STATE, VAR_STEVENS_HOUSE_STATE},
+ {VAR_PETALBURG_WOODS_STATE, VAR_RUSTURF_TUNNEL_STATE, VAR_CAVE_OF_ORIGIN_B4F_STATE, VAR_SEAFLOOR_CAVERN_STATE, 0x40A8, VAR_MT_PYRE_STATE, VAR_NEW_MAUVILLE_STATE, VAR_METEOR_FALLS_STATE, VAR_VICTORY_ROAD_1F_STATE}
+};
+
+static const u8 gUnknown_Debug_083C4628[] = _("LOCALWORK0ー8");
+static const u8 gUnknown_Debug_083C4635[] = _("LOCALWORK9ー15");
+
+static const struct MenuAction gUnknown_Debug_083C4644[] = {
+ {gUnknown_Debug_083C4628, debug_sub_808E754},
+ {gUnknown_Debug_083C4635, debug_sub_808E7AC}
+};
+
+static const u8 gUnknown_Debug_083C4654[] = _("LOCALWORK0");
+static const u8 gUnknown_Debug_083C465F[] = _("LOCALWORK1");
+static const u8 gUnknown_Debug_083C466A[] = _("LOCALWORK2");
+static const u8 gUnknown_Debug_083C4675[] = _("LOCALWORK3");
+static const u8 gUnknown_Debug_083C4680[] = _("LOCALWORK4");
+static const u8 gUnknown_Debug_083C468B[] = _("LOCALWORK5");
+static const u8 gUnknown_Debug_083C4696[] = _("LOCALWORK6");
+static const u8 gUnknown_Debug_083C46A1[] = _("LOCALWORK7");
+static const u8 gUnknown_Debug_083C46AC[] = _("LOCALWORK8");
+
+static const u8 gUnknown_Debug_083C46B7[] = _("LOCALWORK9");
+static const u8 gUnknown_Debug_083C46C2[] = _("LOCALWORK10");
+static const u8 gUnknown_Debug_083C46CE[] = _("LOCALWORK11");
+static const u8 gUnknown_Debug_083C46DA[] = _("LOCALWORK12");
+static const u8 gUnknown_Debug_083C46E6[] = _("LOCALWORK13");
+static const u8 gUnknown_Debug_083C46F2[] = _("LOCALWORK14");
+static const u8 gUnknown_Debug_083C46FE[] = _("LOCALWORK15");
+
+static const struct MenuAction gUnknown_Debug_083C470C[] = {
+ {gUnknown_Debug_083C4654, DummyMenuAction},
+ {gUnknown_Debug_083C465F, DummyMenuAction},
+ {gUnknown_Debug_083C466A, DummyMenuAction},
+ {gUnknown_Debug_083C4675, DummyMenuAction},
+ {gUnknown_Debug_083C4680, DummyMenuAction},
+ {gUnknown_Debug_083C468B, DummyMenuAction},
+ {gUnknown_Debug_083C4696, DummyMenuAction},
+ {gUnknown_Debug_083C46A1, DummyMenuAction},
+ {gUnknown_Debug_083C46AC, DummyMenuAction}
+};
+
+static const struct MenuAction gUnknown_Debug_083C4754C[] = {
+ {gUnknown_Debug_083C46B7, DummyMenuAction},
+ {gUnknown_Debug_083C46C2, DummyMenuAction},
+ {gUnknown_Debug_083C46CE, DummyMenuAction},
+ {gUnknown_Debug_083C46DA, DummyMenuAction},
+ {gUnknown_Debug_083C46E6, DummyMenuAction},
+ {gUnknown_Debug_083C46F2, DummyMenuAction},
+ {gUnknown_Debug_083C46FE, DummyMenuAction}
+};
+
+static const u8 gUnknown_Debug_083C478C[] = {9, 7};
+
+static const u16 gUnknown_Debug_083C478E[][9] = {
+ {VAR_TEMP_0, VAR_TEMP_1, VAR_TEMP_2, VAR_TEMP_3, VAR_TEMP_4, VAR_TEMP_5, VAR_TEMP_6, VAR_TEMP_7, VAR_TEMP_8},
+ {VAR_TEMP_9, VAR_TEMP_A, VAR_TEMP_B, VAR_TEMP_C, VAR_TEMP_D, VAR_TEMP_E, VAR_TEMP_F}
+};
+
+static const u8 gUnknown_Debug_083C47B2[] = _("Level");
+static const u8 gUnknown_Debug_083C47B8[] = _("Scene1");
+static const u8 gUnknown_Debug_083C47BF[] = _("Scene2");
+static const u8 gUnknown_Debug_083C47C6[] = _("Scene3");
+static const u8 gUnknown_Debug_083C47CD[] = _("Scene4");
+static const u8 gUnknown_Debug_083C47D4[] = _("Scene5");
+static const u8 gUnknown_Debug_083C47DB[] = _("Scene6");
+static const u8 gUnknown_Debug_083C47E2[] = _("Scene7");
+static const u8 gUnknown_Debug_083C47E9[] = _("Scene8");
+
+static const struct MenuAction gUnknown_Debug_083C47F0[] = {
+ {gUnknown_Debug_083C47B8, DummyMenuAction},
+ {gUnknown_Debug_083C47BF, DummyMenuAction},
+ {gUnknown_Debug_083C47C6, DummyMenuAction},
+ {gUnknown_Debug_083C47CD, DummyMenuAction},
+ {gUnknown_Debug_083C47D4, DummyMenuAction},
+ {gUnknown_Debug_083C47DB, DummyMenuAction},
+ {gUnknown_Debug_083C47E2, DummyMenuAction},
+ {gUnknown_Debug_083C47E9, DummyMenuAction}
+};
+
+static const u8 gUnknown_Debug_083C4830[] = _("Trick Master");
+
+static const u8 gUnknown_Debug_083C483D[] = _("Hidden MASTER");
+static const u8 gUnknown_Debug_083C484B[] = _("Inside the HOUSE");
+static const u8 gUnknown_Debug_083C485C[] = _("Pass a reward");
+static const u8 gUnknown_Debug_083C486A[] = _("Rig a trick");
+static const u8 gUnknown_Debug_083C4876[] = _("MASTER is gone");
+
+static const struct MenuAction gUnknown_Debug_083C4888[] = {
+ {gUnknown_Debug_083C483D, DummyMenuAction},
+ {gUnknown_Debug_083C484B, DummyMenuAction},
+ {gUnknown_Debug_083C485C, DummyMenuAction},
+ {gUnknown_Debug_083C486A, DummyMenuAction},
+ {gUnknown_Debug_083C4876, DummyMenuAction}
+};
+
+static const u8 sDummyNickname[] = _("PMNICKNAME");
+static const u8 sDummyTrainerName[] = _("BREEDER");
+
+bool8 InitTomomichiDebugWindow(void)
+{
+ InitDebugWindow();
+ return FALSE;
+}
+
+static void debug_sub_808B868(void)
+{
+ c2_exit_to_overworld_1_continue_scripts_restart_music();
+}
+
+static bool8 InitDebugWindow(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 13, 15);
+ Menu_PrintItems(1, 1, ARRAY_COUNT(sMenuActions_TopMenu), sMenuActions_TopMenu);
+ InitMenu(0, 1, 1, ARRAY_COUNT(sMenuActions_TopMenu), sTopMenuCursorPos, 12);
+ gMenuCallback = TopMenu_HandleInput;
+ return FALSE;
+}
+
+static bool8 TopMenu_HandleInput(void)
+{
+ if (gMain.newKeys & DPAD_UP)
+ {
+ PlaySE(SE_SELECT);
+ sTopMenuCursorPos = Menu_MoveCursor(-1);
+ }
+ if (gMain.newKeys & DPAD_DOWN)
+ {
+ PlaySE(SE_SELECT);
+ sTopMenuCursorPos = Menu_MoveCursor(+1);
+ }
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ return sMenuActions_TopMenu[sTopMenuCursorPos].func();
+ }
+ if (gMain.newKeys & (B_BUTTON | START_BUTTON))
+ {
+ CloseMenu();
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static bool8 ContestGraphics(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 20, 11);
+ Menu_PrintText(sString_ContestMenuTitle, 1, 1);
+ Menu_PrintItems(2, 3, ARRAY_COUNT(sMenuActions_ContestPicTest), sMenuActions_ContestPicTest);
+ InitMenu(0, 1, 3, ARRAY_COUNT(sMenuActions_ContestPicTest), 0, 19);
+ gMenuCallback = ContestGraphics_HandleInput;
+ sPicTest_Species = SPECIES_BULBASAUR;
+ sPicTest_OTID = 28467;
+ sPicTest_Personality = 0;
+ sPicTest_ContestType = 1;
+ return FALSE;
+}
+
+static bool8 ArtMusGraphics(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 20, 11);
+ Menu_PrintText(sString_Contest_ArtMuseumTitle, 1, 1);
+ Menu_PrintItems(2, 3, ARRAY_COUNT(sMenuActions_ArtMuseumPicTest), sMenuActions_ArtMuseumPicTest);
+ InitMenu(0, 1, 3, ARRAY_COUNT(sMenuActions_ArtMuseumPicTest), 0, 19);
+ gMenuCallback = ArtMusGraphics_HandleInput;
+ sPicTest_Species = SPECIES_BULBASAUR;
+ sPicTest_OTID = 28467;
+ sPicTest_Personality = 0;
+ sPicTest_MuseumArtTitleType = 1;
+ return FALSE;
+}
+
+static bool8 PreviewData(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 20, 11);
+ Menu_PrintText(sString_Contest_PreviewTitle, 1, 1);
+ Menu_PrintItems(2, 3, ARRAY_COUNT(sMenuActions_PreviewPicTest), sMenuActions_PreviewPicTest);
+ InitMenu(0, 1, 3, ARRAY_COUNT(sMenuActions_PreviewPicTest), 0, 19);
+ gMenuCallback = PreviewData_HandleInput;
+ sPicTest_Species = SPECIES_BULBASAUR;
+ sPicTest_OTID = 28467;
+ sPicTest_Personality = 0;
+ sPicTest_PreviewType = 1;
+ return FALSE;
+}
+
+static bool8 TrickHouse(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 24, 7);
+ Menu_PrintText(sString_TrickRelated, 1, 1);
+ Menu_PrintItems(2, 3, ARRAY_COUNT(sMenuActions_TrickRelated), sMenuActions_TrickRelated);
+ InitMenu(0, 1, 3, ARRAY_COUNT(sMenuActions_TrickRelated), sTrickRelatedMenuCursorPos, 23);
+ gMenuCallback = TrickHouse_HandleInput;
+ return FALSE;
+}
+
+static bool8 ControlEvents(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 24, 5);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(sMenuActions_ControlEvents), sMenuActions_ControlEvents);
+ InitMenu(0, 1, 1, ARRAY_COUNT(sMenuActions_ControlEvents), sControlEventsCursorPos, 23);
+ gMenuCallback = ControlEvents_HandleInput;
+ return FALSE;
+}
+
+static bool8 ControlFlags(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 24, 15);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(sMenuActions_ControlFlags), sMenuActions_ControlFlags);
+ InitMenu(0, 1, 1, ARRAY_COUNT(sMenuActions_ControlFlags), sControlFlagsCursorPos, 23);
+ gMenuCallback = ControlFlags_HandleInput;
+ return FALSE;
+}
+
+static bool8 ControlWorks(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 24, 13);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(sMenuActions_ControlWorks), sMenuActions_ControlWorks);
+ InitMenu(0, 1, 1, ARRAY_COUNT(sMenuActions_ControlWorks), sControlWORKCursorPos, 23);
+ gMenuCallback = ControlWorks_HandleInput;
+ return FALSE;
+}
+
+static bool8 ContestGraphics_HandleInput(void)
+{
+ s8 input = Menu_ProcessInput();
+ s8 cursorPos = Menu_GetCursorPos();
+
+ switch (cursorPos)
+ {
+ case 0:
+ PicTest_SelectPokemon();
+ break;
+ case 1:
+ PicTest_SelectPersonality();
+ break;
+ case 2:
+ ContestPicTest_SelectContestType();
+ break;
+ }
+ PicTest_Redraw(0);
+ if (input == -2)
+ return FALSE;
+ if (input == -1)
+ {
+ CloseMenu();
+ return TRUE;
+ }
+ if (input == 3)
+ {
+ gMenuCallback = sMenuActions_ContestPicTest[3].func;
+ return FALSE;
+ }
+ return FALSE;
+}
+
+static bool8 ArtMusGraphics_HandleInput(void)
+{
+ s8 input = Menu_ProcessInput();
+ s8 cursorPos = Menu_GetCursorPos();
+
+ switch (cursorPos)
+ {
+ case 0:
+ PicTest_SelectPokemon();
+ break;
+ case 1:
+ PicTest_SelectPersonality();
+ break;
+ case 2:
+ MuseumArtPicTest_SelectTitleType();
+ break;
+ }
+ PicTest_Redraw(1);
+ if (input == -2)
+ return FALSE;
+ if (input == -1)
+ {
+ CloseMenu();
+ return TRUE;
+ }
+ if (input == 3)
+ {
+ gMenuCallback = sMenuActions_ArtMuseumPicTest[3].func;
+ return FALSE;
+ }
+ return FALSE;
+}
+
+static bool8 PreviewData_HandleInput(void)
+{
+ s8 input = Menu_ProcessInput();
+ s8 cursorPos = Menu_GetCursorPos();
+
+ switch (cursorPos)
+ {
+ case 0:
+ PicTest_SelectPokemon();
+ break;
+ case 1:
+ PicTest_SelectPersonality();
+ break;
+ case 2:
+ PreviewPicTest_SelectType();
+ break;
+ }
+ PicTest_Redraw(2);
+ if (input == -2)
+ return FALSE;
+ if (input == -1)
+ {
+ CloseMenu();
+ return TRUE;
+ }
+ if (input == 3)
+ {
+ gMenuCallback = sMenuActions_PreviewPicTest[3].func;
+ return FALSE;
+ }
+ return FALSE;
+}
+
+static bool8 TrickHouse_HandleInput(void)
+{
+ if (gMain.newKeys & DPAD_UP)
+ {
+ PlaySE(SE_SELECT);
+ sTrickRelatedMenuCursorPos = Menu_MoveCursor(-1);
+ }
+ if (gMain.newKeys & DPAD_DOWN)
+ {
+ PlaySE(SE_SELECT);
+ sTrickRelatedMenuCursorPos = Menu_MoveCursor(+1);
+ }
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ return sMenuActions_TrickRelated[sTrickRelatedMenuCursorPos].func();
+ }
+ if (gMain.newKeys & (B_BUTTON | START_BUTTON))
+ {
+ CloseMenu();
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static bool8 ControlEvents_HandleInput(void)
+{
+ if (gMain.newKeys & DPAD_UP)
+ {
+ PlaySE(SE_SELECT);
+ sControlEventsCursorPos = Menu_MoveCursor(-1);
+ }
+ if (gMain.newKeys & DPAD_DOWN)
+ {
+ PlaySE(SE_SELECT);
+ sControlEventsCursorPos = Menu_MoveCursor(+1);
+ }
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ return sMenuActions_ControlEvents[sControlEventsCursorPos].func();
+ }
+ if (gMain.newKeys & (B_BUTTON | START_BUTTON))
+ {
+ CloseMenu();
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static bool8 ControlFlags_HandleInput(void)
+{
+ if (gMain.newKeys & DPAD_UP)
+ {
+ PlaySE(SE_SELECT);
+ sControlFlagsCursorPos = Menu_MoveCursor(-1);
+ }
+ if (gMain.newKeys & DPAD_DOWN)
+ {
+ PlaySE(SE_SELECT);
+ sControlFlagsCursorPos = Menu_MoveCursor(+1);
+ }
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ return sMenuActions_ControlFlags[sControlFlagsCursorPos].func();
+ }
+ if (gMain.newKeys & (B_BUTTON | START_BUTTON))
+ {
+ CloseMenu();
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static bool8 ControlWorks_HandleInput(void)
+{
+ if (gMain.newKeys & DPAD_UP)
+ {
+ PlaySE(SE_SELECT);
+ sControlWORKCursorPos = Menu_MoveCursor(-1);
+ }
+ if (gMain.newKeys & DPAD_DOWN)
+ {
+ PlaySE(SE_SELECT);
+ sControlWORKCursorPos = Menu_MoveCursor(+1);
+ }
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ return sMenuActions_ControlWorks[sControlWORKCursorPos].func();
+ }
+ if (gMain.newKeys & (B_BUTTON | START_BUTTON))
+ {
+ CloseMenu();
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static bool8 ControlEvents_InitSubmenu1(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 28, 19);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(sMenuActions_ControlEvents_Events1), sMenuActions_ControlEvents_Events1);
+ InitMenu(0, 1, 1, ARRAY_COUNT(sMenuActions_ControlEvents_Events1), 0, 27);
+ gMenuCallback = ControlEvents_Events1_HandleInput;
+ return FALSE;
+}
+
+static bool8 ControlEvents_InitSubmenu2(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 28, 13);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(sMenuActions_ControlEvents_Events2), sMenuActions_ControlEvents_Events2);
+ InitMenu(0, 1, 1, ARRAY_COUNT(sMenuActions_ControlEvents_Events2), 0, 27);
+ gMenuCallback = ControlEvents_Events2_HandleInput;
+ return FALSE;
+}
+
+static bool8 ControlEvents_Events1_HandleInput(void)
+{
+ s8 input = Menu_ProcessInput();
+
+ if (input == -2)
+ return FALSE;
+ if (input == -1)
+ {
+ CloseMenu();
+ return TRUE;
+ }
+ gMenuCallback = sMenuActions_ControlEvents_Events1[input].func;
+ return FALSE;
+}
+
+static bool8 ControlEvents_Events2_HandleInput(void)
+{
+ s8 input = Menu_ProcessInput();
+
+ if (input == -2)
+ return FALSE;
+ if (input == -1)
+ {
+ CloseMenu();
+ return TRUE;
+ }
+ gMenuCallback = sMenuActions_ControlEvents_Events2[input].func;
+ return FALSE;
+}
+
+static bool8 CallScript_DoHallOfFame(void)
+{
+ ScriptContext1_SetupScript(DebugScript_081C1CFE);
+ CloseMenu();
+ return TRUE;
+}
+
+static bool8 CallScript_GiveCoinCaseIfNotAlreadyOwned(void)
+{
+ ScriptContext1_SetupScript(DebugScript_081C1D07);
+ CloseMenu();
+ return TRUE;
+}
+
+static bool8 CallScript_SetOldaleStateAfterRoute103Rival(void)
+{
+ ScriptContext1_SetupScript(DebugScript_081C1D1E);
+ CloseMenu();
+ return TRUE;
+}
+
+static bool8 CallScript_OpenNewMauville(void)
+{
+ ScriptContext1_SetupScript(DebugScript_081C1D24);
+ CloseMenu();
+ return TRUE;
+}
+
+static bool8 CallScript_GiveSSTicketAndDoHallOfFame(void)
+{
+ ScriptContext1_SetupScript(DebugScript_081C1D2A);
+ CloseMenu();
+ return TRUE;
+}
+
+static bool8 CallScript_GiveKyogreEgg(void)
+{
+ ScriptContext1_SetupScript(DebugScript_081C1D35);
+ CloseMenu();
+ return TRUE;
+}
+
+static bool8 CallScript_GiveAllItems(void)
+{
+ ScriptContext1_SetupScript(DebugScript_081C1D46);
+ CloseMenu();
+ return TRUE;
+}
+
+static bool8 CallScript_GiveAllDecorations(void)
+{
+ ScriptContext1_SetupScript(DebugScript_081C221F);
+ CloseMenu();
+ return TRUE;
+}
+
+static bool8 CallScript_GiveAllCoins(void)
+{
+ ScriptContext1_SetupScript(DebugScript_081C23E2);
+ CloseMenu();
+ return TRUE;
+}
+
+static bool8 CallScript_OpenSootopolisGym(void)
+{
+ ScriptContext1_SetupScript(DebugScript_081C23E6);
+ CloseMenu();
+ return TRUE;
+}
+
+static bool8 CallScript_SetMoneyTo0(void)
+{
+ ScriptContext1_SetupScript(DebugScript_081C23F6);
+ CloseMenu();
+ return TRUE;
+}
+
+static bool8 CallScript_FillPartyWithBarboach(void)
+{
+ ScriptContext1_SetupScript(DebugScript_081C2482);
+ CloseMenu();
+ return TRUE;
+}
+
+static bool8 CallScript_FillPartyWithShroomish(void)
+{
+ ScriptContext1_SetupScript(DebugScript_081C23FD);
+ CloseMenu();
+ return TRUE;
+}
+
+static bool8 CallScript_GiveBarboachEgg(void)
+{
+ ScriptContext1_SetupScript(DebugScript_081C2518);
+ CloseMenu();
+ return TRUE;
+}
+
+static bool8 CallScript_GiveShroomishEgg(void)
+{
+ ScriptContext1_SetupScript(DebugScript_081C2507);
+ CloseMenu();
+ return TRUE;
+}
+
+static bool8 ContestGraphics_Show(void)
+{
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
+ gMenuCallback = debug_sub_808C280;
+ return FALSE;
+}
+
+static bool8 debug_sub_808C280(void)
+{
+ if (!UpdatePaletteFade())
+ {
+ CloseMenu();
+ PrepareDebugOverlayBeforeShowingContestPainting(0);
+ SetMainCallback2(CB2_ContestPainting);
+ gMain.savedCallback = debug_sub_808B868;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static bool8 MuseumGraphics_Show(void)
+{
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
+ gMenuCallback = debug_sub_808C2E4;
+ return FALSE;
+}
+
+static bool8 debug_sub_808C2E4(void)
+{
+ if (!UpdatePaletteFade())
+ {
+ CloseMenu();
+ PrepareDebugOverlayBeforeShowingContestPainting(1);
+ SetMainCallback2(CB2_ContestPainting);
+ gMain.savedCallback = debug_sub_808B868;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static bool8 ControlFlags_EventFlag_InitSubmenu(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 28, 19);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C2828), gUnknown_Debug_083C2828);
+ InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C2828), 0, 27);
+ gMenuCallback = debug_sub_808C36C;
+ return FALSE;
+}
+
+static bool8 debug_sub_808C36C(void)
+{
+ s8 input = Menu_ProcessInput();
+
+ if (input == -2)
+ return FALSE;
+ if (input == -1)
+ {
+ CloseMenu();
+ return TRUE;
+ }
+ gMenuCallback = gUnknown_Debug_083C2828[input].func;
+ return FALSE;
+}
+
+static bool8 debug_sub_808C3B0(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C2938) + 1);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C2938), gUnknown_Debug_083C2938);
+ InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C2938), 0, 28);
+ sFlagAndVarTest_WhichSubmenu = 0;
+ gMenuCallback = debug_sub_808C6C8;
+ return FALSE;
+}
+
+static bool8 debug_sub_808C408(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C2A48) + 1);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C2A48), gUnknown_Debug_083C2A48);
+ InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C2A48), 0, 28);
+ sFlagAndVarTest_WhichSubmenu = 1;
+ gMenuCallback = debug_sub_808C6C8;
+ return FALSE;
+}
+
+static bool8 debug_sub_808C460(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C2B4C) + 1);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C2B4C), gUnknown_Debug_083C2B4C);
+ InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C2B4C), 0, 28);
+ sFlagAndVarTest_WhichSubmenu = 2;
+ gMenuCallback = debug_sub_808C6C8;
+ return FALSE;
+}
+
+static bool8 debug_sub_808C4B8(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C2C80) + 1);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C2C80), gUnknown_Debug_083C2C80);
+ InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C2C80), 0, 28);
+ sFlagAndVarTest_WhichSubmenu = 3;
+ gMenuCallback = debug_sub_808C6C8;
+ return FALSE;
+}
+
+static bool8 debug_sub_808C510(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C2D8C) + 1);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C2D8C), gUnknown_Debug_083C2D8C);
+ InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C2D8C), 0, 28);
+ sFlagAndVarTest_WhichSubmenu = 4;
+ gMenuCallback = debug_sub_808C6C8;
+ return FALSE;
+}
+
+static bool8 debug_sub_808C568(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C2EB0) + 1);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C2EB0), gUnknown_Debug_083C2EB0);
+ InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C2EB0), 0, 28);
+ sFlagAndVarTest_WhichSubmenu = 5;
+ gMenuCallback = debug_sub_808C6C8;
+ return FALSE;
+}
+
+static bool8 debug_sub_808C5C0(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C2FE0) + 1);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C2FE0), gUnknown_Debug_083C2FE0);
+ InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C2FE0), 0, 28);
+ sFlagAndVarTest_WhichSubmenu = 6;
+ gMenuCallback = debug_sub_808C6C8;
+ return FALSE;
+}
+
+static bool8 debug_sub_808C618(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C3100) + 1);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C3100), gUnknown_Debug_083C3100);
+ InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C3100), 0, 28);
+ sFlagAndVarTest_WhichSubmenu = 7;
+ gMenuCallback = debug_sub_808C6C8;
+ return FALSE;
+}
+
+static bool8 debug_sub_808C670(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 29, 2 * 3 + 1);
+ Menu_PrintItems(2, 1, 3, gUnknown_Debug_083C3194);
+ InitMenu(0, 1, 1, 3, 0, 28);
+ sFlagAndVarTest_WhichSubmenu = 8;
+ gMenuCallback = debug_sub_808C6C8;
+ return FALSE;
+}
+
+static bool8 debug_sub_808C6C8(void)
+{
+ s8 input = Menu_ProcessInput();
+ s8 cursorPos = Menu_GetCursorPos();
+
+ debug_sub_808C714(sFlagAndVarTest_WhichSubmenu, cursorPos);
+ debug_sub_808C764(sFlagAndVarTest_WhichSubmenu);
+ if (input == -2)
+ return FALSE;
+ if (input == -1)
+ {
+ CloseMenu();
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static void debug_sub_808C714(u8 whichMenu, u8 cursorPos)
+{
+ if (gMain.newKeys & R_BUTTON)
+ {
+ if (!FlagGet(gUnknown_Debug_83C31E6[whichMenu][cursorPos]))
+ FlagSet(gUnknown_Debug_83C31E6[whichMenu][cursorPos]);
+ else
+ FlagClear(gUnknown_Debug_83C31E6[whichMenu][cursorPos]);
+ }
+}
+
+static void debug_sub_808C764(u8 whichMenu)
+{
+ u8 i;
+
+ for (i = 0; i < gUnknown_Debug_083C31DC[whichMenu]; i++)
+ {
+ PrintBool(28, 2 * i + 1, FlagGet(gUnknown_Debug_83C31E6[whichMenu][i]) ? 1 : 0);
+ }
+}
+
+static bool8 ControlFlags_VanishFlag_InitSubmenu(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 28, 19);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C1CE8), gUnknown_Debug_083C1CE8);
+ InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C1CE8), 0, 27);
+ gMenuCallback = debug_sub_808C818;
+ return FALSE;
+}
+
+static bool8 debug_sub_808C818(void)
+{
+ s8 input = Menu_ProcessInput();
+
+ if (input == -2)
+ return FALSE;
+ if (input == -1)
+ {
+ CloseMenu();
+ return TRUE;
+ }
+ gMenuCallback = gUnknown_Debug_083C1CE8[input].func;
+ return FALSE;
+}
+
+static bool8 debug_sub_808C85C(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C1E0C) + 1);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C1E0C), gUnknown_Debug_083C1E0C);
+ InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C1E0C), 0, 28);
+ sFlagAndVarTest_WhichSubmenu = 0;
+ gMenuCallback = debug_sub_808CB74;
+ return FALSE;
+}
+
+static bool8 debug_sub_808C8B4(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C1F38) + 1);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C1F38), gUnknown_Debug_083C1F38);
+ InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C1F38), 0, 28);
+ sFlagAndVarTest_WhichSubmenu = 1;
+ gMenuCallback = debug_sub_808CB74;
+ return FALSE;
+}
+
+static bool8 debug_sub_808C90C(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C206C) + 1);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C206C), gUnknown_Debug_083C206C);
+ InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C206C), 0, 28);
+ sFlagAndVarTest_WhichSubmenu = 2;
+ gMenuCallback = debug_sub_808CB74;
+ return FALSE;
+}
+
+static bool8 debug_sub_808C964(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C2190) + 1);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C2190), gUnknown_Debug_083C2190);
+ InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C2190), 0, 28);
+ sFlagAndVarTest_WhichSubmenu = 3;
+ gMenuCallback = debug_sub_808CB74;
+ return FALSE;
+}
+
+static bool8 debug_sub_808C9BC(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C2264) + 1);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C2264), gUnknown_Debug_083C2264);
+ InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C2264), 0, 28);
+ sFlagAndVarTest_WhichSubmenu = 4;
+ gMenuCallback = debug_sub_808CB74;
+ return FALSE;
+}
+
+static bool8 debug_sub_808CA14(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C2370) + 1);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C2370), gUnknown_Debug_083C2370);
+ InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C2370), 0, 28);
+ sFlagAndVarTest_WhichSubmenu = 5;
+ gMenuCallback = debug_sub_808CB74;
+ return FALSE;
+}
+
+static bool8 debug_sub_808CA6C(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C248C) + 1);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C248C), gUnknown_Debug_083C248C);
+ InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C248C), 0, 28);
+ sFlagAndVarTest_WhichSubmenu = 6;
+ gMenuCallback = debug_sub_808CB74;
+ return FALSE;
+}
+
+static bool8 debug_sub_808CAC4(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C259C) + 1);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C259C), gUnknown_Debug_083C259C);
+ InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C259C), 0, 27);
+ sFlagAndVarTest_WhichSubmenu = 7;
+ gMenuCallback = debug_sub_808CB74;
+ return FALSE;
+}
+
+static bool8 debug_sub_808CB1C(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C26C8) + 1);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C26C8), gUnknown_Debug_083C26C8);
+ InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C26C8), 0, 28);
+ sFlagAndVarTest_WhichSubmenu = 8;
+ gMenuCallback = debug_sub_808CB74;
+ return FALSE;
+}
+
+static bool8 debug_sub_808CB74(void)
+{
+ s8 input = Menu_ProcessInput();
+ s8 cursorPos = Menu_GetCursorPos();
+
+ debug_sub_808CBC0(sFlagAndVarTest_WhichSubmenu, cursorPos);
+ debug_sub_808CC10(sFlagAndVarTest_WhichSubmenu);
+ if (input == -2)
+ return FALSE;
+ if (input == -1)
+ {
+ CloseMenu();
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static void debug_sub_808CBC0(u8 whichMenu, u8 cursorPos)
+{
+ if (gMain.newKeys & R_BUTTON)
+ {
+ if (!FlagGet(gUnknown_Debug_083C271A[whichMenu][cursorPos]))
+ FlagSet(gUnknown_Debug_083C271A[whichMenu][cursorPos]);
+ else
+ FlagClear(gUnknown_Debug_083C271A[whichMenu][cursorPos]);
+ }
+}
+
+static void debug_sub_808CC10(u8 whichMenu)
+{
+ u8 i;
+
+ for (i = 0; i < gUnknown_Debug_083C2710[whichMenu]; i++)
+ {
+ PrintBool(28, 2 * i + 1, FlagGet(gUnknown_Debug_083C271A[whichMenu][i]) ? 1 : 0);
+ }
+}
+
+static bool8 ControlFlags_TrainerFlag_InitSubmenu(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 28, 2 * ARRAY_COUNT(gUnknown_Debug_083C1ADC) + 1);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C1ADC), gUnknown_Debug_083C1ADC);
+ InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C1ADC), 0, 27);
+ gMenuCallback = debug_sub_808CCC4;
+ return FALSE;
+}
+
+static bool8 debug_sub_808CCC4(void)
+{
+ s8 input = Menu_ProcessInput();
+
+ if (input == -2)
+ return FALSE;
+ if (input == -1)
+ {
+ CloseMenu();
+ return TRUE;
+ }
+ gMenuCallback = gUnknown_Debug_083C1ADC[input].func;
+ return FALSE;
+}
+
+static bool8 debug_sub_808CD08(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C1B7C) + 1);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C1B7C), gUnknown_Debug_083C1B7C);
+ InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C1B7C), 0, 28);
+ sFlagAndVarTest_WhichSubmenu = 0;
+ gMenuCallback = debug_sub_808CE10;
+ return FALSE;
+}
+
+static bool8 debug_sub_808CD60(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C1BF0) + 1);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C1BF0), gUnknown_Debug_083C1BF0);
+ InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C1BF0), 0, 28);
+ sFlagAndVarTest_WhichSubmenu = 1;
+ gMenuCallback = debug_sub_808CE10;
+ return FALSE;
+}
+
+static bool8 debug_sub_808CDB8(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C1C2C) + 1);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C1C2C), gUnknown_Debug_083C1C2C);
+ InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C1C2C), 0, 28);
+ sFlagAndVarTest_WhichSubmenu = 2;
+ gMenuCallback = debug_sub_808CE10;
+ return FALSE;
+}
+
+static bool8 debug_sub_808CE10(void)
+{
+ s8 input = Menu_ProcessInput();
+ s8 cursorPos = Menu_GetCursorPos();
+
+ debug_sub_808CE5C(sFlagAndVarTest_WhichSubmenu, cursorPos);
+ debug_sub_808CEAC(sFlagAndVarTest_WhichSubmenu);
+ if (input == -2)
+ return FALSE;
+ if (input == -1)
+ {
+ CloseMenu();
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static void debug_sub_808CE5C(u8 whichMenu, u8 cursorPos)
+{
+ if (gMain.newKeys & R_BUTTON)
+ {
+ if (!FlagGet(gUnknown_Debug_083C1C38[whichMenu][cursorPos]))
+ FlagSet(gUnknown_Debug_083C1C38[whichMenu][cursorPos]);
+ else
+ FlagClear(gUnknown_Debug_083C1C38[whichMenu][cursorPos]);
+ }
+}
+
+static void debug_sub_808CEAC(u8 whichMenu)
+{
+ u8 i;
+
+ for (i = 0; i < gUnknown_Debug_083C1C34[whichMenu]; i++)
+ {
+ PrintBool(28, 2 * i + 1, FlagGet(gUnknown_Debug_083C1C38[whichMenu][i]) ? 1 : 0);
+ }
+}
+
+static bool8 ControlFlags_SysFlag_InitSubmenu(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 28, 2 * ARRAY_COUNT(gUnknown_Debug_083C1330) + 1);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C1330), gUnknown_Debug_083C1330);
+ InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C1330), 0, 27);
+ gMenuCallback = debug_sub_808CF60;
+ return FALSE;
+}
+
+static bool8 debug_sub_808CF60(void)
+{
+ s8 input = Menu_ProcessInput();
+
+ if (input == -2)
+ return FALSE;
+ if (input == -1)
+ {
+ CloseMenu();
+ return TRUE;
+ }
+ gMenuCallback = gUnknown_Debug_083C1330[input].func;
+ return FALSE;
+}
+
+static bool8 debug_sub_808CFA4(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C13D8) + 1);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C13D8), gUnknown_Debug_083C13D8);
+ InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C13D8), 0, 28);
+ sFlagAndVarTest_WhichSubmenu = 0;
+ gMenuCallback = debug_sub_808D2BC;
+ return FALSE;
+}
+
+static bool8 debug_sub_808CFFC(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C1465) + 1);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C1465), gUnknown_Debug_083C1465);
+ InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C1465), 0, 28);
+ sFlagAndVarTest_WhichSubmenu = 1;
+ gMenuCallback = debug_sub_808D2BC;
+ return FALSE;
+}
+
+static bool8 debug_sub_808D054(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C1503) + 1);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C1503), gUnknown_Debug_083C1503);
+ InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C1503), 0, 28);
+ sFlagAndVarTest_WhichSubmenu = 2;
+ gMenuCallback = debug_sub_808D2BC;
+ return FALSE;
+}
+
+static bool8 debug_sub_808D0AC(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C158A) + 1);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C158A), gUnknown_Debug_083C158A);
+ InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C158A), 0, 28);
+ sFlagAndVarTest_WhichSubmenu = 3;
+ gMenuCallback = debug_sub_808D2BC;
+ return FALSE;
+}
+
+static bool8 debug_sub_808D104(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C1647) + 1);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C1647), gUnknown_Debug_083C1647);
+ InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C1647), 0, 28);
+ sFlagAndVarTest_WhichSubmenu = 4;
+ gMenuCallback = debug_sub_808D2BC;
+ return FALSE;
+}
+
+static bool8 debug_sub_808D15C(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C1712) + 1);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C1712), gUnknown_Debug_083C1712);
+ InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C1712), 0, 28);
+ sFlagAndVarTest_WhichSubmenu = 5;
+ gMenuCallback = debug_sub_808D2BC;
+ return FALSE;
+}
+
+static bool8 debug_sub_808D1B4(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C17F8) + 1);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C17F8), gUnknown_Debug_083C17F8);
+ InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C17F8), 0, 28);
+ sFlagAndVarTest_WhichSubmenu = 6;
+ gMenuCallback = debug_sub_808D2BC;
+ return FALSE;
+}
+
+static bool8 debug_sub_808D20C(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 29, 2 * 7 + 1);
+ Menu_PrintItems(2, 1, 7, gUnknown_Debug_083C18B8);
+ InitMenu(0, 1, 1, 7, 0, 28);
+ sFlagAndVarTest_WhichSubmenu = 7;
+ gMenuCallback = debug_sub_808D2BC;
+ return FALSE;
+}
+
+static bool8 debug_sub_808D264(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 29, 2 * 5 + 1);
+ Menu_PrintItems(2, 1, 5, gDebug_0x83C1974);
+ InitMenu(0, 1, 1, 5, 0, 28);
+ sFlagAndVarTest_WhichSubmenu = 8;
+ gMenuCallback = debug_sub_808D2BC;
+ return FALSE;
+}
+
+static bool8 debug_sub_808D2BC(void)
+{
+ s8 input = Menu_ProcessInput();
+ s8 cursorPos = Menu_GetCursorPos();
+
+ debug_sub_808D308(sFlagAndVarTest_WhichSubmenu, cursorPos);
+ debug_sub_808D358(sFlagAndVarTest_WhichSubmenu);
+ if (input == -2)
+ return FALSE;
+ if (input == -1)
+ {
+ CloseMenu();
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static void debug_sub_808D308(u8 whichMenu, u8 cursorPos)
+{
+ if (gMain.newKeys & R_BUTTON)
+ {
+ if (!FlagGet(gUnknown_Debug_083C19C6[whichMenu][cursorPos]))
+ FlagSet(gUnknown_Debug_083C19C6[whichMenu][cursorPos]);
+ else
+ FlagClear(gUnknown_Debug_083C19C6[whichMenu][cursorPos]);
+ }
+}
+
+static void debug_sub_808D358(u8 whichMenu)
+{
+ u8 i;
+
+ for (i = 0; i < gUnknown_Debug_083C19BC[whichMenu]; i++)
+ {
+ PrintBool(28, 2 * i + 1, FlagGet(gUnknown_Debug_083C19C6[whichMenu][i]) ? 1 : 0);
+ }
+}
+
+static bool8 ControlFlags_FH_OBJ_InitSubmenu(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 28, 2 * ARRAY_COUNT(sMenuActions_ControlFlags_FH_OBJ) + 1);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(sMenuActions_ControlFlags_FH_OBJ), sMenuActions_ControlFlags_FH_OBJ);
+ InitMenu(0, 1, 1, ARRAY_COUNT(sMenuActions_ControlFlags_FH_OBJ), 0, 27);
+ gMenuCallback = ControlFlags_FH_OBJ_HandleInput;
+ return FALSE;
+}
+
+static bool8 ControlFlags_FH_OBJ_HandleInput(void)
+{
+ s8 input = Menu_ProcessInput();
+
+ if (input == -2)
+ return FALSE;
+ if (input == -1)
+ {
+ CloseMenu();
+ return TRUE;
+ }
+ gMenuCallback = sMenuActions_ControlFlags_FH_OBJ[input].func;
+ return FALSE;
+}
+
+static bool8 ControlFlags_FH_OBJ00_08_InitSubsubmenu(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(sMenuActions_ControlFlags_FH_OBJ00_08) + 1);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(sMenuActions_ControlFlags_FH_OBJ00_08), sMenuActions_ControlFlags_FH_OBJ00_08);
+ InitMenu(0, 1, 1, ARRAY_COUNT(sMenuActions_ControlFlags_FH_OBJ00_08), 0, 28);
+ sFlagAndVarTest_WhichSubmenu = 0;
+ gMenuCallback = ControlFlags_FH_OBJ_Subsubmenu_HandleInput;
+ return FALSE;
+}
+
+static bool8 ControlFlags_FH_OBJ09_15_InitSubsubmenu(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 29, 2 * 7 + 1);
+ Menu_PrintItems(2, 1, 7, sMenuActions_ControlFlags_FH_OBJ09_15);
+ InitMenu(0, 1, 1, 7, 0, 28);
+ sFlagAndVarTest_WhichSubmenu = 1;
+ gMenuCallback = ControlFlags_FH_OBJ_Subsubmenu_HandleInput;
+ return FALSE;
+}
+
+static bool8 ControlFlags_FH_OBJ_Subsubmenu_HandleInput(void)
+{
+ s8 input = Menu_ProcessInput();
+ s8 cursorPos = Menu_GetCursorPos();
+
+ ControlFlags_FH_OBJ_FlagToggle(sFlagAndVarTest_WhichSubmenu, cursorPos);
+ ControlFlags_FH_OBJ_UpdateDisplay(sFlagAndVarTest_WhichSubmenu);
+ if (input == -2)
+ return FALSE;
+ if (input == -1)
+ {
+ CloseMenu();
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static void ControlFlags_FH_OBJ_FlagToggle(u8 whichMenu, u8 cursorPos)
+{
+ if (gMain.newKeys & R_BUTTON)
+ {
+ if (!FlagGet(sControlFlags_FH_OBJ_FlagsArrays[whichMenu][cursorPos]))
+ FlagSet(sControlFlags_FH_OBJ_FlagsArrays[whichMenu][cursorPos]);
+ else
+ FlagClear(sControlFlags_FH_OBJ_FlagsArrays[whichMenu][cursorPos]);
+ }
+}
+
+static void ControlFlags_FH_OBJ_UpdateDisplay(u8 whichMenu)
+{
+ u8 i;
+
+ for (i = 0; i < sControlFlags_FH_OBJ_CountsArray[whichMenu]; i++)
+ {
+ PrintBool(28, 2 * i + 1, FlagGet(sControlFlags_FH_OBJ_FlagsArrays[whichMenu][i]) ? 1 : 0);
+ }
+}
+
+static bool8 ControlFlags_FH_InitSubmenu(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 28, 2 * ARRAY_COUNT(gUnknown_Debug_083C11CC) + 1);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C11CC), gUnknown_Debug_083C11CC);
+ InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C11CC), 0, 27);
+ gMenuCallback = debug_sub_808D650;
+ return FALSE;
+}
+
+static bool8 debug_sub_808D650(void)
+{
+ s8 input = Menu_ProcessInput();
+
+ if (input == -2)
+ return FALSE;
+ if (input == -1)
+ {
+ CloseMenu();
+ return TRUE;
+ }
+ gMenuCallback = gUnknown_Debug_083C11CC[input].func;
+ return FALSE;
+}
+
+static bool8 debug_sub_808D694(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C1212) + 1);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C1212), gUnknown_Debug_083C1212);
+ InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C1212), 0, 28);
+ sFlagAndVarTest_WhichSubmenu = 0;
+ gMenuCallback = debug_sub_808D744;
+ return FALSE;
+}
+
+static bool8 debug_sub_808D6EC(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 29, 2 * 7 + 1);
+ Menu_PrintItems(2, 1, 7, gUnknown_Debug_083C1288);
+ InitMenu(0, 1, 1, 7, 0, 28);
+ sFlagAndVarTest_WhichSubmenu = 1;
+ gMenuCallback = debug_sub_808D744;
+ return FALSE;
+}
+
+static bool8 debug_sub_808D744(void)
+{
+ s8 input = Menu_ProcessInput();
+ s8 cursorPos = Menu_GetCursorPos();
+
+ debug_sub_808D790(sFlagAndVarTest_WhichSubmenu, cursorPos);
+ debug_sub_808D7E0(sFlagAndVarTest_WhichSubmenu);
+ if (input == -2)
+ return FALSE;
+ if (input == -1)
+ {
+ CloseMenu();
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static void debug_sub_808D790(u8 whichMenu, u8 cursorPos)
+{
+ if (gMain.newKeys & R_BUTTON)
+ {
+ if (!FlagGet(gUnknown_Debug_083C12D2[whichMenu][cursorPos]))
+ FlagSet(gUnknown_Debug_083C12D2[whichMenu][cursorPos]);
+ else
+ FlagClear(gUnknown_Debug_083C12D2[whichMenu][cursorPos]);
+ }
+}
+
+static void debug_sub_808D7E0(u8 whichMenu)
+{
+ u8 i;
+
+ for (i = 0; i < gUnknown_Debug_083C12D0[whichMenu]; i++)
+ {
+ PrintBool(28, 2 * i + 1, FlagGet(gUnknown_Debug_083C12D2[whichMenu][i]) ? 1 : 0);
+ }
+}
+
+static bool8 ControlFlags_BallVanishFlag_InitSubmenu(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 28, 2 * ARRAY_COUNT(gUnknown_Debug_083C1A78) + 1);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C1A78), gUnknown_Debug_083C1A78);
+ InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C1A78), 0, 27);
+ gMenuCallback = debug_sub_808D894;
+ return FALSE;
+}
+
+static bool8 debug_sub_808D894(void)
+{
+ s8 input = Menu_ProcessInput();
+
+ if (input == -2)
+ return FALSE;
+ if (input == -1)
+ {
+ CloseMenu();
+ return TRUE;
+ }
+ gMenuCallback = gUnknown_Debug_083C1A78[input].func;
+ return FALSE;
+}
+
+static bool8 debug_sub_808D8D8(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C1A9C) + 1);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C1A9C), gUnknown_Debug_083C1A9C);
+ InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C1A9C), 0, 28);
+ sFlagAndVarTest_WhichSubmenu = 0;
+ gMenuCallback = debug_sub_808D930;
+ return FALSE;
+}
+
+static bool8 debug_sub_808D930(void)
+{
+ s8 input = Menu_ProcessInput();
+ s8 cursorPos = Menu_GetCursorPos();
+
+ debug_sub_808D97C(sFlagAndVarTest_WhichSubmenu, cursorPos);
+ debug_sub_808D9CC(sFlagAndVarTest_WhichSubmenu);
+ if (input == -2)
+ return FALSE;
+ if (input == -1)
+ {
+ CloseMenu();
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static void debug_sub_808D97C(u8 whichMenu, u8 cursorPos)
+{
+ if (gMain.newKeys & R_BUTTON)
+ {
+ if (!FlagGet(gUnknown_Debug_083C1AAE[whichMenu][cursorPos]))
+ FlagSet(gUnknown_Debug_083C1AAE[whichMenu][cursorPos]);
+ else
+ FlagClear(gUnknown_Debug_083C1AAE[whichMenu][cursorPos]);
+ }
+}
+
+static void debug_sub_808D9CC(u8 whichMenu)
+{
+ u8 i;
+
+ for (i = 0; i < gUnknown_Debug_083C1AAC[whichMenu]; i++)
+ {
+ PrintBool(28, 2 * i + 1, FlagGet(gUnknown_Debug_083C1AAE[whichMenu][i]) ? 1 : 0);
+ }
+}
+
+static bool8 ControlWorks_AnsWork_InitSubmenu(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(sMenuActions_ControlEvents_AnsWork) + 1);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(sMenuActions_ControlEvents_AnsWork), sMenuActions_ControlEvents_AnsWork);
+ InitMenu(0, 1, 1, ARRAY_COUNT(sMenuActions_ControlEvents_AnsWork), 0, 28);
+ gMenuCallback = ControlWorks_AnsWork_HandleInput;
+ return FALSE;
+}
+
+static bool8 ControlWorks_AnsWork_HandleInput(void)
+{
+ s8 input = Menu_ProcessInput();
+ /*s8 cursorPos = */Menu_GetCursorPos();
+
+ ControlWorks_AnsWork_AdjustRESULT();
+ ControlWorks_AnsWork_PrintRESULT();
+ if (input == -2)
+ return FALSE;
+ if (input == -1)
+ {
+ CloseMenu();
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static void ControlWorks_AnsWork_PrintRESULT(void)
+{
+ PrintUnsignedShort(24, 1, gSpecialVar_Result);
+}
+
+static void ControlWorks_AnsWork_AdjustRESULT(void)
+{
+ u16 delta;
+
+ if (gMain.newKeys & R_BUTTON)
+ {
+ delta = +1;
+ }
+ else if (gMain.newKeys & L_BUTTON)
+ {
+ delta = -1;
+ }
+ else
+ return;
+ gSpecialVar_Result += delta;
+}
+
+static bool8 ControlWorks_SaveWork_InitSubmenu(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 24, 2 * ARRAY_COUNT(sMenuAction_ControlWorks_SaveWork) + 1);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(sMenuAction_ControlWorks_SaveWork), sMenuAction_ControlWorks_SaveWork);
+ InitMenu(0, 1, 1, ARRAY_COUNT(sMenuAction_ControlWorks_SaveWork), 0, 23);
+ gMenuCallback = ControlWorks_SaveWork_HandleInput;
+ return FALSE;
+}
+
+static bool8 ControlWorks_SaveWork_HandleInput(void)
+{
+ s8 input = Menu_ProcessInput();
+
+ if (input == -2)
+ return FALSE;
+ if (input == -1)
+ {
+ CloseMenu();
+ return TRUE;
+ }
+ gMenuCallback = sMenuAction_ControlWorks_SaveWork[input].func;
+ return FALSE;
+}
+
+static bool8 ControlWorks_SaveWork_Town_InitSubsubmenu(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(sMenuActions_SaveWork_Town) + 1);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(sMenuActions_SaveWork_Town), sMenuActions_SaveWork_Town);
+ InitMenu(0, 1, 1, ARRAY_COUNT(sMenuActions_SaveWork_Town), 0, 28);
+ sFlagAndVarTest_WhichSubmenu = 0;
+ gMenuCallback = ControlWorks_SaveWork_Subsubmenu_HandleInput;
+ return FALSE;
+}
+
+static bool8 ControlWorks_SaveWork_City_InitSubsubmenu(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(sMenuActions_SaveWork_City) + 1);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(sMenuActions_SaveWork_City), sMenuActions_SaveWork_City);
+ InitMenu(0, 1, 1, ARRAY_COUNT(sMenuActions_SaveWork_City), 0, 28);
+ sFlagAndVarTest_WhichSubmenu = 1;
+ gMenuCallback = ControlWorks_SaveWork_Subsubmenu_HandleInput;
+ return FALSE;
+}
+
+static bool8 ControlWorks_SaveWork_Route101To109_InitSubsubmenu(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(sMenuActions_SaveWork_Route101To109) + 1);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(sMenuActions_SaveWork_Route101To109), sMenuActions_SaveWork_Route101To109);
+ InitMenu(0, 1, 1, ARRAY_COUNT(sMenuActions_SaveWork_Route101To109), 0, 28);
+ sFlagAndVarTest_WhichSubmenu = 2;
+ gMenuCallback = ControlWorks_SaveWork_Subsubmenu_HandleInput;
+ return FALSE;
+}
+
+static bool8 ControlWorks_SaveWork_Route110To118_InitSubsubmenu(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(sMenuActions_SaveWork_Route110To118) + 1);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(sMenuActions_SaveWork_Route110To118), sMenuActions_SaveWork_Route110To118);
+ InitMenu(0, 1, 1, ARRAY_COUNT(sMenuActions_SaveWork_Route110To118), 0, 28);
+ sFlagAndVarTest_WhichSubmenu = 3;
+ gMenuCallback = ControlWorks_SaveWork_Subsubmenu_HandleInput;
+ return FALSE;
+}
+
+static bool8 ControlWorks_SaveWork_Route119To127_InitSubsubmenu(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(sMenuActions_SaveWork_Route119To127) + 1);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(sMenuActions_SaveWork_Route119To127), sMenuActions_SaveWork_Route119To127);
+ InitMenu(0, 1, 1, ARRAY_COUNT(sMenuActions_SaveWork_Route119To127), 0, 28);
+ sFlagAndVarTest_WhichSubmenu = 4;
+ gMenuCallback = ControlWorks_SaveWork_Subsubmenu_HandleInput;
+ return FALSE;
+}
+
+static bool8 ControlWorks_SaveWork_Route128To134_InitSubsubmenu(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(sMenuActions_SaveWork_Route128To134) + 1);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(sMenuActions_SaveWork_Route128To134), sMenuActions_SaveWork_Route128To134);
+ InitMenu(0, 1, 1, ARRAY_COUNT(sMenuActions_SaveWork_Route128To134), 0, 28);
+ sFlagAndVarTest_WhichSubmenu = 5;
+ gMenuCallback = ControlWorks_SaveWork_Subsubmenu_HandleInput;
+ return FALSE;
+}
+
+static bool8 ControlWorks_SaveWork_RoomTown_InitSubsubmenu(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 29, 2 * 6 + 1);
+ Menu_PrintItems(2, 1, 6, sMenuActions_SaveWork_RoomTown); // overflows into the next menu
+ InitMenu(0, 1, 1, 6, 0, 28);
+ sFlagAndVarTest_WhichSubmenu = 6;
+ gMenuCallback = ControlWorks_SaveWork_Subsubmenu_HandleInput;
+ return FALSE;
+}
+
+static bool8 ControlWorks_SaveWork_RoomCity_InitSubsubmenu(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(sMenuActions_SaveWork_RoomCity) + 1);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(sMenuActions_SaveWork_RoomCity), sMenuActions_SaveWork_RoomCity);
+ InitMenu(0, 1, 1, ARRAY_COUNT(sMenuActions_SaveWork_RoomCity), 0, 28);
+ sFlagAndVarTest_WhichSubmenu = 7;
+ gMenuCallback = ControlWorks_SaveWork_Subsubmenu_HandleInput;
+ return FALSE;
+}
+
+static bool8 ControlWorks_SaveWork_Dungeon_InitSubsubmenu(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(sMenuActions_SaveWork_Dungeon) + 1);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(sMenuActions_SaveWork_Dungeon), sMenuActions_SaveWork_Dungeon);
+ InitMenu(0, 1, 1, ARRAY_COUNT(sMenuActions_SaveWork_Dungeon), 0, 28);
+ sFlagAndVarTest_WhichSubmenu = 8;
+ gMenuCallback = ControlWorks_SaveWork_Subsubmenu_HandleInput;
+ return FALSE;
+}
+
+static bool8 ControlWorks_SaveWork_Subsubmenu_HandleInput(void)
+{
+ s8 input = Menu_ProcessInput();
+ s8 cursorPos = Menu_GetCursorPos();
+
+ debug_sub_808DF64(sFlagAndVarTest_WhichSubmenu, cursorPos);
+ debug_sub_808DF04(sFlagAndVarTest_WhichSubmenu);
+ if (input == -2)
+ return FALSE;
+ if (input == -1)
+ {
+ CloseMenu();
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static void debug_sub_808DF04(u8 whichMenu)
+{
+ u8 i;
+
+ for (i = 0; i < gUnknown_Debug_083C457C[whichMenu]; i++)
+ {
+ PrintUnsignedShort(24, 2 * i + 1, VarGet(gUnknown_Debug_083C4586[whichMenu][i]));
+ }
+}
+
+static void debug_sub_808DF64(u8 whichMenu, u8 cursorPos)
+{
+ u16 delta;
+
+ if (gMain.newKeys & R_BUTTON)
+ delta = +1;
+ else if (gMain.newKeys & L_BUTTON)
+ delta = -1;
+ else
+ return;
+ VarSet(gUnknown_Debug_083C4586[whichMenu][cursorPos], VarGet(gUnknown_Debug_083C4586[whichMenu][cursorPos]) + delta);
+}
+
+static bool8 ControlWorks_SaveWorkPart2_InitSubmenu(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 24, 2 * ARRAY_COUNT(sMenuActions_ControlWorks_SaveWorkPart2) + 1);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(sMenuActions_ControlWorks_SaveWorkPart2), sMenuActions_ControlWorks_SaveWorkPart2);
+ InitMenu(0, 1, 1, ARRAY_COUNT(sMenuActions_ControlWorks_SaveWorkPart2), 0, 23);
+ gMenuCallback = ControlWorks_SaveWorkPart2_HandleInput;
+ return FALSE;
+}
+
+static bool8 ControlWorks_SaveWorkPart2_HandleInput(void)
+{
+ s8 input = Menu_ProcessInput();
+
+ if (input == -2)
+ return FALSE;
+ if (input == -1)
+ {
+ CloseMenu();
+ return TRUE;
+ }
+ gMenuCallback = sMenuActions_ControlWorks_SaveWorkPart2[input].func;
+ return FALSE;
+}
+
+static bool8 ControlWorks_SaveWorkPart2_SP_InitSubsubmenu(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 29, 2 * 6 + 1);
+ Menu_PrintItems(2, 1, 6, gUnknown_Debug_083C3AA0);
+ InitMenu(0, 1, 1, 6, 0, 28);
+ sFlagAndVarTest_WhichSubmenu = 0;
+ gMenuCallback = debug_sub_808E264;
+ return FALSE;
+}
+
+static bool8 ControlWorks_SaveWorkPart2_RoomR110Part1TrickHouse_InitSubsubmenu(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 29, 2 * 5 + 1);
+ Menu_PrintItems(2, 1, 5, gUnknown_Debug_83C3AE0);
+ InitMenu(0, 1, 1, 5, 0, 28);
+ sFlagAndVarTest_WhichSubmenu = 1;
+ gMenuCallback = debug_sub_808E264;
+ return FALSE;
+}
+
+static bool8 ControlWorks_SaveWorkPart2_RoomR110Part2_InitSubsubmenu(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_83C3B28) + 1);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_83C3B28), gUnknown_Debug_83C3B28);
+ InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_83C3B28), 0, 28);
+ sFlagAndVarTest_WhichSubmenu = 2;
+ gMenuCallback = debug_sub_808E264;
+ return FALSE;
+}
+
+static bool8 ControlWorks_SaveWorkPart2_RoomLoad_InitSubsubmenu(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 29, 2 * 2 + 1);
+ Menu_PrintItems(2, 1, 2, gUnknown_Debug_83C3B70);
+ InitMenu(0, 1, 1, 2, 0, 28);
+ sFlagAndVarTest_WhichSubmenu = 3;
+ gMenuCallback = debug_sub_808E264;
+ return FALSE;
+}
+
+static bool8 debug_sub_808E1B4(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_83C3BB8) + 1);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_83C3BB8), gUnknown_Debug_83C3BB8);
+ InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_83C3BB8), 0, 28);
+ sFlagAndVarTest_WhichSubmenu = 4;
+ gMenuCallback = debug_sub_808E264;
+ return FALSE;
+}
+
+static bool8 debug_sub_808E20C(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 29, 2 * 6 + 1);
+ Menu_PrintItems(2, 1, 6, gUnknown_Debug_83C3C00);
+ InitMenu(0, 1, 1, 6, 0, 28);
+ sFlagAndVarTest_WhichSubmenu = 5;
+ gMenuCallback = debug_sub_808E264;
+ return FALSE;
+}
+
+static bool8 debug_sub_808E264(void)
+{
+ s8 input = Menu_ProcessInput();
+ s8 cursorPos = Menu_GetCursorPos();
+
+ debug_sub_808E310(sFlagAndVarTest_WhichSubmenu, cursorPos);
+ debug_sub_808E2B0(sFlagAndVarTest_WhichSubmenu);
+ if (input == -2)
+ return FALSE;
+ if (input == -1)
+ {
+ CloseMenu();
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static void debug_sub_808E2B0(u8 whichMenu)
+{
+ u8 i;
+
+ for (i = 0; i < sControlWorks_SaveWork_CountsArray[whichMenu]; i++)
+ {
+ PrintUnsignedShort(24, 2 * i + 1, VarGet(sControlWorks_SaveWork_ItemArrays[whichMenu][i]));
+ }
+}
+
+static void debug_sub_808E310(u8 whichMenu, u8 cursorPos)
+{
+ u16 delta;
+
+ if (gMain.newKeys & R_BUTTON)
+ delta = +1;
+ else if (gMain.newKeys & L_BUTTON)
+ delta = -1;
+ else
+ return;
+ VarSet(sControlWorks_SaveWork_ItemArrays[whichMenu][cursorPos], VarGet(sControlWorks_SaveWork_ItemArrays[whichMenu][cursorPos]) + delta);
+}
+
+static bool8 ControlWorks_SysWork_InitSubmenu(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 24, 2 * ARRAY_COUNT(gUnknown_Debug_083C32AC) + 1);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C32AC), gUnknown_Debug_083C32AC);
+ InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C32AC), 0, 23);
+ gMenuCallback = debug_sub_808E3BC;
+ return FALSE;
+}
+
+static bool8 debug_sub_808E3BC(void)
+{
+ s8 input = Menu_ProcessInput();
+
+ if (input == -2)
+ return FALSE;
+ if (input == -1)
+ {
+ CloseMenu();
+ return TRUE;
+ }
+ gMenuCallback = gUnknown_Debug_083C32AC[input].func;
+ return FALSE;
+}
+
+static bool8 debug_sub_808E400(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C347C) + 1);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C347C), gUnknown_Debug_083C347C);
+ InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C347C), 0, 28);
+ sFlagAndVarTest_WhichSubmenu = 0;
+ gMenuCallback = debug_sub_808E5B8;
+ return FALSE;
+}
+
+static bool8 debug_sub_808E458(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C3494) + 1);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C3494), gUnknown_Debug_083C3494);
+ InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C3494), 0, 28);
+ sFlagAndVarTest_WhichSubmenu = 1;
+ gMenuCallback = debug_sub_808E5B8;
+ return FALSE;
+}
+
+static bool8 debug_sub_808E4B0(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C34A4) + 1);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C34A4), gUnknown_Debug_083C34A4);
+ InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C34A4), 0, 28);
+ sFlagAndVarTest_WhichSubmenu = 2;
+ gMenuCallback = debug_sub_808E5B8;
+ return FALSE;
+}
+
+static bool8 debug_sub_808E508(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C34D4) + 1);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C34D4), gUnknown_Debug_083C34D4);
+ InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C34D4), 0, 28);
+ sFlagAndVarTest_WhichSubmenu = 3;
+ gMenuCallback = debug_sub_808E5B8;
+ return FALSE;
+}
+
+static bool8 debug_sub_808E560(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C351C) + 1);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C351C), gUnknown_Debug_083C351C);
+ InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C351C), 0, 28);
+ sFlagAndVarTest_WhichSubmenu = 4;
+ gMenuCallback = debug_sub_808E5B8;
+ return FALSE;
+}
+
+static bool8 debug_sub_808E5B8(void)
+{
+ s8 input = Menu_ProcessInput();
+ s8 cursorPos = Menu_GetCursorPos();
+
+ debug_sub_808E604(sFlagAndVarTest_WhichSubmenu, cursorPos);
+ debug_sub_808E660(sFlagAndVarTest_WhichSubmenu);
+ if (input == -2)
+ return FALSE;
+ if (input == -1)
+ {
+ CloseMenu();
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static void debug_sub_808E604(u8 whichMenu, u8 cursorPos)
+{
+ u16 delta;
+
+ if (gMain.newAndRepeatedKeys & R_BUTTON)
+ delta = +1;
+ else if (gMain.newAndRepeatedKeys & L_BUTTON)
+ delta = -1;
+ else
+ return;
+ VarSet(gUnknown_Debug_083C354A[whichMenu][cursorPos], VarGet(gUnknown_Debug_083C354A[whichMenu][cursorPos]) + delta);
+}
+
+static void debug_sub_808E660(u8 whichMenu)
+{
+ u8 i;
+
+ for (i = 0; i < gUnknown_Debug_083C3544[whichMenu]; i++)
+ {
+ PrintUnsignedShort(24, 2 * i + 1, VarGet(gUnknown_Debug_083C354A[whichMenu][i]));
+ }
+}
+
+static bool8 ControlWorks_LocalWork_InitSubmenu(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 24, 2 * ARRAY_COUNT(gUnknown_Debug_083C4644) + 1);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C4644), gUnknown_Debug_083C4644);
+ InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C4644), 0, 23);
+ gMenuCallback = debug_sub_808E710;
+ return FALSE;
+}
+
+static bool8 debug_sub_808E710(void)
+{
+ s8 input = Menu_ProcessInput();
+
+ if (input == -2)
+ return FALSE;
+ if (input == -1)
+ {
+ CloseMenu();
+ return TRUE;
+ }
+ gMenuCallback = gUnknown_Debug_083C4644[input].func;
+ return FALSE;
+}
+
+static bool8 debug_sub_808E754(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C470C) + 1);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C470C), gUnknown_Debug_083C470C);
+ InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C470C), 0, 28);
+ sFlagAndVarTest_WhichSubmenu = 0;
+ gMenuCallback = debug_sub_808E804;
+ return FALSE;
+}
+
+static bool8 debug_sub_808E7AC(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C4754C) + 1);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C4754C), gUnknown_Debug_083C4754C);
+ InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C4754C), 0, 28);
+ sFlagAndVarTest_WhichSubmenu = 1;
+ gMenuCallback = debug_sub_808E804;
+ return FALSE;
+}
+
+static bool8 debug_sub_808E804(void)
+{
+ s8 input = Menu_ProcessInput();
+ s8 cursorPos = Menu_GetCursorPos();
+
+ debug_sub_808E850(sFlagAndVarTest_WhichSubmenu, cursorPos);
+ debug_sub_808E8AC(sFlagAndVarTest_WhichSubmenu);
+ if (input == -2)
+ return FALSE;
+ if (input == -1)
+ {
+ CloseMenu();
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static void debug_sub_808E850(u8 whichMenu, u8 cursorPos)
+{
+ u16 delta;
+
+ if (gMain.newKeys & R_BUTTON)
+ delta = +1;
+ else if (gMain.newKeys & L_BUTTON)
+ delta = -1;
+ else
+ return;
+ VarSet(gUnknown_Debug_083C478E[whichMenu][cursorPos], VarGet(gUnknown_Debug_083C478E[whichMenu][cursorPos]) + delta);
+}
+
+static void debug_sub_808E8AC(u8 whichMenu)
+{
+ u8 i;
+
+ for (i = 0; i < gUnknown_Debug_083C478C[whichMenu]; i++)
+ {
+ PrintUnsignedShort(24, 2 * i + 1, VarGet(gUnknown_Debug_083C478E[whichMenu][i]));
+ }
+}
+
+static bool8 ControlWorks_ObjWork_InitSubmenu(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 24, 2 * ARRAY_COUNT(gUnknown_Debug_083C35C4) + 1);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C35C4), gUnknown_Debug_083C35C4);
+ InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C35C4), 0, 23);
+ gMenuCallback = debug_sub_808E95C;
+ return FALSE;
+}
+
+static bool8 debug_sub_808E95C(void)
+{
+ s8 input = Menu_ProcessInput();
+
+ if (input == -2)
+ return FALSE;
+ if (input == -1)
+ {
+ CloseMenu();
+ return TRUE;
+ }
+ gMenuCallback = gUnknown_Debug_083C35C4[input].func;
+ return FALSE;
+}
+
+static bool8 debug_sub_808E9A0(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C369C) + 1);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C369C), gUnknown_Debug_083C369C);
+ InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C369C), 0, 28);
+ sFlagAndVarTest_WhichSubmenu = 0;
+ gMenuCallback = debug_sub_808EA50;
+ return FALSE;
+}
+
+static bool8 debug_sub_808E9F8(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 29, 2 * ARRAY_COUNT(gUnknown_Debug_083C36E4) + 1);
+ Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_083C36E4), gUnknown_Debug_083C36E4);
+ InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_083C36E4), 0, 28);
+ sFlagAndVarTest_WhichSubmenu = 1;
+ gMenuCallback = debug_sub_808EA50;
+ return FALSE;
+}
+
+static bool8 debug_sub_808EA50(void)
+{
+ s8 input = Menu_ProcessInput();
+ s8 cursorPos = Menu_GetCursorPos();
+
+ debug_sub_808EAFC(sFlagAndVarTest_WhichSubmenu, cursorPos);
+ debug_sub_808EA9C(sFlagAndVarTest_WhichSubmenu);
+ if (input == -2)
+ return FALSE;
+ if (input == -1)
+ {
+ CloseMenu();
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static void debug_sub_808EA9C(u8 whichMenu)
+{
+ u8 i;
+
+ for (i = 0; i < gUnknown_Debug_083C371C[whichMenu]; i++)
+ {
+ PrintUnsignedShort(24, 2 * i + 1, VarGet(gUnknown_Debug_083C371E[whichMenu][i]));
+ }
+}
+
+static void debug_sub_808EAFC(u8 whichMenu, u8 cursorPos)
+{
+ u16 delta;
+
+ if (gMain.newKeys & R_BUTTON)
+ delta = +1;
+ else if (gMain.newKeys & L_BUTTON)
+ delta = -1;
+ else
+ return;
+ VarSet(gUnknown_Debug_083C371E[whichMenu][cursorPos], VarGet(gUnknown_Debug_083C371E[whichMenu][cursorPos]) + delta);
+}
+
+static bool8 TrickRelated_Level_InitSubmenu(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 12, 2 * ARRAY_COUNT(gUnknown_Debug_083C47F0) + 3);
+ Menu_PrintText(gUnknown_Debug_083C47B2, 1, 1);
+ Menu_PrintItems(2, 3, ARRAY_COUNT(gUnknown_Debug_083C47F0), gUnknown_Debug_083C47F0);
+ InitMenu(0, 1, 3, ARRAY_COUNT(gUnknown_Debug_083C47F0), 0, 11);
+ gMenuCallback = debug_sub_808EC10;
+ return FALSE;
+}
+
+static bool8 TrickRelated_TrickMaster_InitSubmenu(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 13, 2 * ARRAY_COUNT(gUnknown_Debug_083C4888) + 3);
+ Menu_PrintText(gUnknown_Debug_083C4830, 1, 1);
+ Menu_PrintItems(2, 3, ARRAY_COUNT(gUnknown_Debug_083C4888), gUnknown_Debug_083C4888);
+ InitMenu(0, 1, 3, ARRAY_COUNT(gUnknown_Debug_083C4888), 0, 12);
+ gMenuCallback = debug_sub_808EC5C;
+ return FALSE;
+}
+
+static bool8 debug_sub_808EC10(void)
+{
+ s8 input = Menu_ProcessInput();
+ s8 cursorPos = Menu_GetCursorPos();
+
+ if (input == -2)
+ {
+ return FALSE;
+ }
+ if (input == -1)
+ {
+ return FALSE;
+ }
+ gSaveBlock1.vars[VAR_TRICK_HOUSE_ROOMS_COMPLETED - VARS_START] = cursorPos;
+ CloseMenu();
+ return TRUE;
+}
+
+static bool8 debug_sub_808EC5C(void)
+{
+ s8 input = Menu_ProcessInput();
+ s8 cursorPos = Menu_GetCursorPos();
+
+ if (input == -2)
+ {
+ return FALSE;
+ }
+ if (input == -1)
+ {
+ return FALSE;
+ }
+ VarSet(VAR_TRICK_HOUSE_ENTRANCE_STATE_3, cursorPos);
+ CloseMenu();
+ return TRUE;
+}
+
+static bool8 PreviewGraphics_Show(void)
+{
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
+ gMenuCallback = debug_sub_808ECD0;
+ return FALSE;
+}
+
+static bool8 debug_sub_808ECD0(void)
+{
+ if (!UpdatePaletteFade())
+ {
+ CloseMenu();
+ PrepareDebugOverlayBeforeShowingContestPainting(2);
+ SetMainCallback2(CB2_ContestPainting);
+ gMain.savedCallback = debug_sub_808B868;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static bool8 DummyMenuAction(void)
+{
+ return FALSE;
+}
+
+static void PicTest_SelectPokemon(void)
+{
+ if (gMain.newAndRepeatedKeys & DPAD_LEFT)
+ {
+ if (sPicTest_Species != SPECIES_BULBASAUR)
+ sPicTest_Species--;
+ }
+ if (gMain.newAndRepeatedKeys & DPAD_RIGHT)
+ {
+ if (sPicTest_Species != SPECIES_CHIMECHO)
+ sPicTest_Species++;
+ }
+ if (gMain.newAndRepeatedKeys & L_BUTTON)
+ {
+ if (sPicTest_Species >= SPECIES_BULBASAUR + 10)
+ sPicTest_Species -= 10;
+ else
+ sPicTest_Species = SPECIES_BULBASAUR;
+ }
+ if (gMain.newAndRepeatedKeys & R_BUTTON)
+ {
+ if (sPicTest_Species <= SPECIES_CHIMECHO - 10)
+ sPicTest_Species += 10;
+ else
+ sPicTest_Species = SPECIES_CHIMECHO;
+ }
+}
+
+static void PicTest_SelectPersonality(void)
+{
+ if (gMain.newAndRepeatedKeys & DPAD_LEFT)
+ {
+ if (sPicTest_Personality != 0)
+ sPicTest_Personality--;
+ }
+ if (gMain.newAndRepeatedKeys & DPAD_RIGHT)
+ {
+ if (sPicTest_Personality != UINT32_MAX)
+ sPicTest_Personality++;
+ }
+ if (gMain.newAndRepeatedKeys & L_BUTTON)
+ {
+ if (sPicTest_Personality >= 0x10)
+ sPicTest_Personality -= 0x10;
+ else
+ sPicTest_Personality = 0;
+ }
+ if (gMain.newAndRepeatedKeys & R_BUTTON)
+ {
+ if (sPicTest_Personality <= UINT32_MAX - 0x10)
+ sPicTest_Personality += 0x10;
+ else
+ sPicTest_Personality = UINT32_MAX;
+ }
+ if ((gMain.newKeys & (L_BUTTON | R_BUTTON)) == (L_BUTTON | R_BUTTON))
+ {
+ sPicTest_Personality = UINT32_MAX;
+ }
+}
+
+static void ContestPicTest_SelectContestType(void)
+{
+ if (gMain.newAndRepeatedKeys & DPAD_LEFT)
+ {
+ if (sPicTest_ContestType != CONTEST_COOL + 1)
+ sPicTest_ContestType--;
+ }
+ if (gMain.newAndRepeatedKeys & DPAD_RIGHT)
+ {
+ if (sPicTest_ContestType != CONTEST_TOUGH + 1)
+ sPicTest_ContestType++;
+ }
+ if (gMain.newAndRepeatedKeys & L_BUTTON)
+ sPicTest_ContestType = CONTEST_COOL + 1;
+ if (gMain.newAndRepeatedKeys & R_BUTTON)
+ sPicTest_ContestType = CONTEST_TOUGH + 1;
+}
+
+static void MuseumArtPicTest_SelectTitleType(void)
+{
+ if (gMain.newAndRepeatedKeys & DPAD_LEFT)
+ {
+ if (sPicTest_MuseumArtTitleType != 1)
+ sPicTest_MuseumArtTitleType--;
+ }
+ if (gMain.newAndRepeatedKeys & DPAD_RIGHT)
+ {
+ if (sPicTest_MuseumArtTitleType != 15)
+ sPicTest_MuseumArtTitleType++;
+ }
+ if (gMain.newAndRepeatedKeys & L_BUTTON)
+ {
+ if (sPicTest_MuseumArtTitleType >= 11)
+ sPicTest_MuseumArtTitleType -= 10;
+ else
+ sPicTest_MuseumArtTitleType = 0; // Causes underflow when pressing left on the dpad shortly thereafter.
+ }
+ if (gMain.newAndRepeatedKeys & R_BUTTON)
+ {
+ if (sPicTest_MuseumArtTitleType <= 5)
+ sPicTest_MuseumArtTitleType += 10;
+ else
+ sPicTest_MuseumArtTitleType = 15;
+ }
+}
+
+static void PreviewPicTest_SelectType(void)
+{
+ if (gMain.newAndRepeatedKeys & DPAD_LEFT)
+ {
+ if (sPicTest_PreviewType != 1)
+ sPicTest_PreviewType--;
+ }
+ if (gMain.newAndRepeatedKeys & DPAD_RIGHT)
+ {
+ if (sPicTest_PreviewType != 15)
+ sPicTest_PreviewType++;
+ }
+ if (gMain.newAndRepeatedKeys & L_BUTTON)
+ {
+ if (sPicTest_PreviewType >= 11)
+ sPicTest_PreviewType -= 10;
+ else
+ sPicTest_PreviewType = 0; // Causes underflow when pressing left on the dpad shortly thereafter.
+ }
+ if (gMain.newAndRepeatedKeys & R_BUTTON)
+ {
+ if (sPicTest_PreviewType <= 5)
+ sPicTest_PreviewType += 10;
+ else
+ sPicTest_PreviewType = 15;
+ }
+}
+
+#ifdef NONMATCHING
+static void PicTest_Redraw(u8 a0)
+{
+ u8 i;
+ u8 digit;
+ u16 species;
+
+ switch (a0)
+ {
+ case 0:
+ case 1:
+ case 2:
+ for (i = 0; i < 8; i++)
+ {
+ digit = (sPicTest_Personality >> (4 * (7 - i))) & 0xf;
+ if (digit < 10)
+ sPicTest_StringBuffer[i] = digit + CHAR_0;
+ else
+ sPicTest_StringBuffer[i] = digit + CHAR_A - 10;
+ }
+ sPicTest_StringBuffer[i] = EOS;
+ Menu_PrintText(sPicTest_StringBuffer, 12, 5);
+ break;
+ }
+ for (i = 0; i < POKEMON_NAME_LENGTH; i++)
+ {
+ sPicTest_StringBuffer[i + 1] = CHAR_SPACE;
+ }
+
+ for (i = 0, species = sPicTest_Species; gSpeciesNames[species][i] != EOS && i < POKEMON_NAME_LENGTH; i++)
+ {
+ sPicTest_StringBuffer[i + 1] = gSpeciesNames[species][i];
+ }
+
+ sPicTest_StringBuffer[0] = 0xB1;
+ sPicTest_StringBuffer[POKEMON_NAME_LENGTH + 1] = 0xB2;
+ sPicTest_StringBuffer[POKEMON_NAME_LENGTH + 2] = EOS;
+ switch (a0)
+ {
+ case 0:
+ case 1:
+ case 2:
+ Menu_PrintText(sPicTest_StringBuffer, 8, 1);
+ break;
+ default:
+ Menu_PrintText(sPicTest_StringBuffer, 12, 1);
+ break;
+ }
+ sPicTest_StringBuffer[3] = EOS;
+ sPicTest_StringBuffer[0] = sPicTest_Species / 100 + CHAR_0;
+ sPicTest_StringBuffer[1] = (sPicTest_Species % 100) / 10 + CHAR_0;
+ sPicTest_StringBuffer[2] = sPicTest_Species % 10 + CHAR_0;
+ Menu_PrintText(sPicTest_StringBuffer, 12, 3);
+
+ switch (a0)
+ {
+ case 0:
+ sPicTest_StringBuffer[0] = sPicTest_ContestType / 100 + CHAR_0;
+ sPicTest_StringBuffer[1] = (sPicTest_ContestType % 100) / 10 + CHAR_0;
+ sPicTest_StringBuffer[2] = sPicTest_ContestType % 10 + CHAR_0;
+ Menu_PrintText(sPicTest_StringBuffer, 12, 7);
+ break;
+ case 1:
+ sPicTest_StringBuffer[0] = sPicTest_MuseumArtTitleType / 100 + CHAR_0;
+ sPicTest_StringBuffer[1] = (sPicTest_MuseumArtTitleType % 100) / 10 + CHAR_0;
+ sPicTest_StringBuffer[2] = sPicTest_MuseumArtTitleType % 10 + CHAR_0;
+ Menu_PrintText(sPicTest_StringBuffer, 12, 7);
+ break;
+ case 2:
+ sPicTest_StringBuffer[0] = sPicTest_PreviewType / 100 + CHAR_0;
+ sPicTest_StringBuffer[1] = (sPicTest_PreviewType % 100) / 10 + CHAR_0;
+ sPicTest_StringBuffer[2] = sPicTest_PreviewType % 10 + CHAR_0;
+ Menu_PrintText(sPicTest_StringBuffer, 12, 7);
+ break;
+ }
+}
+#else
+NAKED void PicTest_Redraw(u8 a0)
+{
+ asm("\tpush\t{r4, r5, r6, r7, lr}\n"
+ "\tmov\tr7, r8\n"
+ "\tpush\t{r7}\n"
+ "\tlsl\tr0, r0, #0x18\n"
+ "\tlsr\tr6, r0, #0x18\n"
+ "\tcmp\tr6, #0x2\n"
+ "\tbgt\t._653\t@cond_branch\n"
+ "\tcmp\tr6, #0\n"
+ "\tblt\t._653\t@cond_branch\n"
+ "\tmov\tr3, #0x0\n"
+ "\tldr\tr0, ._656 @ sPicTest_Personality\n"
+ "\tmov\tr8, r0\n"
+ "\tldr\tr4, ._656 + 4 @ sPicTest_StringBuffer\n"
+ "\tmov\tr7, #0x7\n"
+ "\tmov\tr5, #0xf\n"
+ "._658:\n"
+ "\tsub\tr0, r7, r3\n"
+ "\tlsl\tr0, r0, #0x2\n"
+ "\tmov\tr1, r8\n"
+ "\tldr\tr2, [r1]\n"
+ "\tLSR\tr2, r0\n"
+ "\tand\tr2, r2, r5\n"
+ "\tcmp\tr2, #0x9\n"
+ "\tbhi\t._654\t@cond_branch\n"
+ "\tadd\tr1, r3, r4\n"
+ "\tadd\tr0, r2, #0\n"
+ "\tadd\tr0, r0, #0xa1\n"
+ "\tb\t._655\n"
+ "._657:\n"
+ "\t.align\t2, 0\n"
+ "._656:\n"
+ "\t.word\tsPicTest_Personality\n"
+ "\t.word\tsPicTest_StringBuffer\n"
+ "._654:\n"
+ "\tadd\tr1, r3, r4\n"
+ "\tadd\tr0, r2, #0\n"
+ "\tsub\tr0, r0, #0x4f\n"
+ "._655:\n"
+ "\tstrb\tr0, [r1]\n"
+ "\tadd\tr0, r3, #1\n"
+ "\tlsl\tr0, r0, #0x18\n"
+ "\tlsr\tr3, r0, #0x18\n"
+ "\tcmp\tr3, #0x7\n"
+ "\tbls\t._658\t@cond_branch\n"
+ "\tldr\tr0, ._666 @ sPicTest_StringBuffer\n"
+ "\tmov\tr1, #0xff\n"
+ "\tstrb\tr1, [r0, #0x8]\n"
+ "\tmov\tr1, #0xc\n"
+ "\tmov\tr2, #0x5\n"
+ "\tbl\tMenu_PrintText\n"
+ "._653:\n"
+ "\tmov\tr3, #0x0\n"
+ "\tldr\tr7, ._666 @ sPicTest_StringBuffer\n"
+ "\tldr\tr5, ._666 + 4 @ sPicTest_Species\n"
+ "\tldr\tr2, ._666 + 8 @ gSpeciesNames\n"
+ "\tmov\tr8, r2\n"
+ "\tadd\tr4, r7, #0\n"
+ "\tmov\tr2, #0x0\n"
+ "._659:\n"
+ "\tadd\tr1, r3, #1\n"
+ "\tadd\tr0, r1, r4\n"
+ "\tstrb\tr2, [r0]\n"
+ "\tlsl\tr1, r1, #0x18\n"
+ "\tlsr\tr3, r1, #0x18\n"
+ "\tcmp\tr3, #0x9\n"
+ "\tbls\t._659\t@cond_branch\n"
+ "\tmov\tr3, #0x0\n"
+ "\tldrh\tr2, [r5]\n"
+ "\tmov\tr0, #0xb\n"
+ "\tadd\tr1, r2, #0\n"
+ "\tmul\tr1, r1, r0\n"
+ "\tmov\tr2, r8\n"
+ "\tadd\tr0, r1, r2\n"
+ "\tldrb\tr0, [r0]\n"
+ "\tcmp\tr0, #0xff\n"
+ "\tbeq\t._661\t@cond_branch\n"
+ "\tldr\tr0, ._666 @ sPicTest_StringBuffer\n"
+ "\tmov\tip, r0\n"
+ "\tmov\tr5, r8\n"
+ "\tadd\tr4, r1, #0\n"
+ "._662:\n"
+ "\tadd\tr1, r3, #1\n"
+ "\tmov\tr0, ip\n"
+ "\tadd\tr2, r1, r0\n"
+ "\tadd\tr0, r3, r4\n"
+ "\tadd\tr0, r0, r5\n"
+ "\tldrb\tr0, [r0]\n"
+ "\tstrb\tr0, [r2]\n"
+ "\tlsl\tr1, r1, #0x18\n"
+ "\tlsr\tr3, r1, #0x18\n"
+ "\tadd\tr0, r3, r4\n"
+ "\tadd\tr0, r0, r5\n"
+ "\tldrb\tr0, [r0]\n"
+ "\tcmp\tr0, #0xff\n"
+ "\tbeq\t._661\t@cond_branch\n"
+ "\tcmp\tr3, #0x9\n"
+ "\tbls\t._662\t@cond_branch\n"
+ "._661:\n"
+ "\tmov\tr0, #0xb1\n"
+ "\tstrb\tr0, [r7]\n"
+ "\tmov\tr0, #0xb2\n"
+ "\tstrb\tr0, [r7, #0xb]\n"
+ "\tmov\tr0, #0xff\n"
+ "\tstrb\tr0, [r7, #0xc]\n"
+ "\tcmp\tr6, #0x2\n"
+ "\tbgt\t._664\t@cond_branch\n"
+ "\tcmp\tr6, #0\n"
+ "\tblt\t._664\t@cond_branch\n"
+ "\tadd\tr0, r7, #0\n"
+ "\tmov\tr1, #0x8\n"
+ "\tmov\tr2, #0x1\n"
+ "\tbl\tMenu_PrintText\n"
+ "\tb\t._665\n"
+ "._667:\n"
+ "\t.align\t2, 0\n"
+ "._666:\n"
+ "\t.word\tsPicTest_StringBuffer\n"
+ "\t.word\tsPicTest_Species\n"
+ "\t.word\tgSpeciesNames\n"
+ "._664:\n"
+ "\tldr\tr0, ._672 @ sPicTest_StringBuffer\n"
+ "\tmov\tr1, #0xc\n"
+ "\tmov\tr2, #0x1\n"
+ "\tbl\tMenu_PrintText\n"
+ "._665:\n"
+ "\tldr\tr5, ._672 @ sPicTest_StringBuffer\n"
+ "\tmov\tr0, #0xff\n"
+ "\tstrb\tr0, [r5, #0x3]\n"
+ "\tldr\tr4, ._672 + 4 @ sPicTest_Species\n"
+ "\tldrh\tr0, [r4]\n"
+ "\tmov\tr1, #0x64\n"
+ "\tbl\t__udivsi3\n"
+ "\tadd\tr0, r0, #0xa1\n"
+ "\tstrb\tr0, [r5]\n"
+ "\tldrh\tr0, [r4]\n"
+ "\tmov\tr1, #0x64\n"
+ "\tbl\t__umodsi3\n"
+ "\tlsl\tr0, r0, #0x10\n"
+ "\tlsr\tr0, r0, #0x10\n"
+ "\tmov\tr1, #0xa\n"
+ "\tbl\t__udivsi3\n"
+ "\tadd\tr0, r0, #0xa1\n"
+ "\tstrb\tr0, [r5, #0x1]\n"
+ "\tldrh\tr0, [r4]\n"
+ "\tmov\tr1, #0xa\n"
+ "\tbl\t__umodsi3\n"
+ "\tadd\tr0, r0, #0xa1\n"
+ "\tstrb\tr0, [r5, #0x2]\n"
+ "\tadd\tr0, r5, #0\n"
+ "\tmov\tr1, #0xc\n"
+ "\tmov\tr2, #0x3\n"
+ "\tbl\tMenu_PrintText\n"
+ "\tcmp\tr6, #0x1\n"
+ "\tbeq\t._668\t@cond_branch\n"
+ "\tcmp\tr6, #0x1\n"
+ "\tbgt\t._669\t@cond_branch\n"
+ "\tcmp\tr6, #0\n"
+ "\tbeq\t._670\t@cond_branch\n"
+ "\tb\t._679\n"
+ "._673:\n"
+ "\t.align\t2, 0\n"
+ "._672:\n"
+ "\t.word\tsPicTest_StringBuffer\n"
+ "\t.word\tsPicTest_Species\n"
+ "._669:\n"
+ "\tcmp\tr6, #0x2\n"
+ "\tbeq\t._674\t@cond_branch\n"
+ "\tb\t._679\n"
+ "._670:\n"
+ "\tldr\tr4, ._677 @ sPicTest_ContestType\n"
+ "\tb\t._676\n"
+ "._678:\n"
+ "\t.align\t2, 0\n"
+ "._677:\n"
+ "\t.word\tsPicTest_ContestType\n"
+ "._668:\n"
+ "\tldr\tr4, ._680 @ sPicTest_MuseumArtTitleType\n"
+ "._676:\n"
+ "\tldrb\tr0, [r4]\n"
+ "\tmov\tr1, #0x64\n"
+ "\tbl\t__udivsi3\n"
+ "\tadd\tr0, r0, #0xa1\n"
+ "\tstrb\tr0, [r5]\n"
+ "\tldrb\tr0, [r4]\n"
+ "\tmov\tr1, #0x64\n"
+ "\tbl\t__umodsi3\n"
+ "\tlsl\tr0, r0, #0x18\n"
+ "\tlsr\tr0, r0, #0x18\n"
+ "\tmov\tr1, #0xa\n"
+ "\tbl\t__udivsi3\n"
+ "\tadd\tr0, r0, #0xa1\n"
+ "\tstrb\tr0, [r5, #0x1]\n"
+ "\tldrb\tr0, [r4]\n"
+ "\tmov\tr1, #0xa\n"
+ "\tbl\t__umodsi3\n"
+ "\tadd\tr0, r0, #0xa1\n"
+ "\tstrb\tr0, [r5, #0x2]\n"
+ "\tadd\tr0, r5, #0\n"
+ "\tmov\tr1, #0xc\n"
+ "\tmov\tr2, #0x7\n"
+ "\tbl\tMenu_PrintText\n"
+ "\tb\t._679\n"
+ "._681:\n"
+ "\t.align\t2, 0\n"
+ "._680:\n"
+ "\t.word\tsPicTest_MuseumArtTitleType\n"
+ "._674:\n"
+ "\tldr\tr4, ._682 @ sPicTest_PreviewType\n"
+ "\tldrb\tr0, [r4]\n"
+ "\tmov\tr1, #0x64\n"
+ "\tbl\t__udivsi3\n"
+ "\tadd\tr0, r0, #0xa1\n"
+ "\tstrb\tr0, [r5]\n"
+ "\tldrb\tr0, [r4]\n"
+ "\tmov\tr1, #0x64\n"
+ "\tbl\t__umodsi3\n"
+ "\tlsl\tr0, r0, #0x18\n"
+ "\tlsr\tr0, r0, #0x18\n"
+ "\tmov\tr1, #0xa\n"
+ "\tbl\t__udivsi3\n"
+ "\tadd\tr0, r0, #0xa1\n"
+ "\tstrb\tr0, [r5, #0x1]\n"
+ "\tldrb\tr0, [r4]\n"
+ "\tmov\tr1, #0xa\n"
+ "\tbl\t__umodsi3\n"
+ "\tadd\tr0, r0, #0xa1\n"
+ "\tstrb\tr0, [r5, #0x2]\n"
+ "\tadd\tr0, r5, #0\n"
+ "\tmov\tr1, #0xc\n"
+ "\tmov\tr2, #0x7\n"
+ "\tbl\tMenu_PrintText\n"
+ "._679:\n"
+ "\tpop\t{r3}\n"
+ "\tmov\tr8, r3\n"
+ "\tpop\t{r4, r5, r6, r7}\n"
+ "\tpop\t{r0}\n"
+ "\tbx\tr0\n"
+ "._683:\n"
+ "\t.align\t2, 0\n"
+ "._682:\n"
+ "\t.word\tsPicTest_PreviewType");
+}
+#endif // NONMATCHING
+
+static void PrepareDebugOverlayBeforeShowingContestPainting(u8 a0)
+{
+ struct ContestEntry *contestEntry = &ewram15DE0;
+ contestEntry->species = sPicTest_Species;
+ contestEntry->otId = sPicTest_OTID;
+ contestEntry->personality = sPicTest_Personality;
+ switch (a0)
+ {
+ case 0:
+ ewram15DDF = 0;
+ ewram15DDE = 0;
+ contestEntry->contestType = sPicTest_ContestType - 1;
+ StringCopy(contestEntry->trainer_name, sDummyTrainerName);
+ StringCopy(contestEntry->pokemon_name, sDummyNickname);
+ break;
+ case 1:
+ ewram15DDF = 0;
+ ewram15DDE = 8;
+ contestEntry->contestType = sPicTest_MuseumArtTitleType - 1;
+ StringCopy(contestEntry->pokemon_name, sDummyNickname);
+ break;
+ case 2:
+ ewram15DDF = 1;
+ ewram15DDE = 8;
+ contestEntry->contestType = sPicTest_PreviewType - 1;
+ break;
+ case 3:
+ ewram15DDF = 0;
+ ewram15DDE = 8;
+ contestEntry->contestType = 0;
+ StringCopy(contestEntry->pokemon_name, sDummyNickname);
+ break;
+ case 4:
+ ewram15DDF = 0;
+ ewram15DDE = 8;
+ contestEntry->contestType = 3;
+ StringCopy(contestEntry->pokemon_name, sDummyNickname);
+ break;
+ case 5:
+ ewram15DDF = 0;
+ ewram15DDE = 8;
+ contestEntry->contestType = 9;
+ StringCopy(contestEntry->pokemon_name, sDummyNickname);
+ break;
+ }
+}
+
+static void PrintBool(u8 a0, u8 a1, bool8 a2)
+{
+ if (a2 == FALSE)
+ sPicTest_StringBuffer[0] = CHAR_0;
+ else
+ sPicTest_StringBuffer[0] = CHAR_0 + 1;
+ sPicTest_StringBuffer[1] = EOS;
+ Menu_PrintText(sPicTest_StringBuffer, a0, a1);
+}
+
+static void PrintUnsignedShort(u8 a0, u8 a1, u16 a2)
+{
+ sPicTest_StringBuffer[0] = a2 / 10000 + CHAR_0;
+ sPicTest_StringBuffer[1] = (a2 % 10000) / 1000 + CHAR_0;
+ sPicTest_StringBuffer[2] = (a2 % 1000) / 100 + CHAR_0;
+ sPicTest_StringBuffer[3] = (a2 % 100) / 10 + CHAR_0;
+ sPicTest_StringBuffer[4] = a2 % 10 + CHAR_0;
+ sPicTest_StringBuffer[5] = EOS;
+ Menu_PrintText(sPicTest_StringBuffer, a0, a1);
+}
+
+void debug_nullsub_66(void)
+{
+// This function likely serves as the entry point into this file.
+}
+
+#endif // DEBUG
diff --git a/src/debug/unknown_debug_menu.c b/src/debug/unknown_debug_menu.c
index ef3e0e66c..787e456d2 100644
--- a/src/debug/unknown_debug_menu.c
+++ b/src/debug/unknown_debug_menu.c
@@ -30,7 +30,7 @@ const struct MenuAction gUnknown_0842C29C[] = {
{UnknownString_8thRound, sub_814A4B8}
};
-int unref_sub_814A414(void)
+int InitSogabeDebugMenu(void)
{
Menu_EraseScreen();
Menu_DrawStdWindowFrame(0, 0, 16, 18);
diff --git a/src/debug/watanabe_debug_menu.c b/src/debug/watanabe_debug_menu.c
index 6c94b0466..ed6a1d18d 100644
--- a/src/debug/watanabe_debug_menu.c
+++ b/src/debug/watanabe_debug_menu.c
@@ -1,11 +1,3752 @@
#if DEBUG
#include "global.h"
+#include "decompress.h"
+#include "ewram.h"
+#include "random.h"
+#include "gba/flash_internal.h"
+#include "constants/items.h"
+#include "constants/species.h"
+#include "constants/moves.h"
+#include "constants/songs.h"
+#include "debug.h"
+#include "palette.h"
+#include "scanline_effect.h"
+#include "main.h"
+#include "task.h"
+#include "sprite.h"
+#include "text.h"
+#include "menu.h"
+#include "script.h"
+#include "overworld.h"
+#include "data2.h"
+#include "fieldmap.h"
+#include "save.h"
+#include "sound.h"
+#include "pokedex.h"
+#include "load_save.h"
+#include "pokemon_storage_system.h"
+#include "battle.h"
+#include "battle_bg.h"
+#include "item.h"
+#include "pokemon_summary_screen.h"
+#include "pokemon_icon.h"
+#include "field_effect.h"
+
+struct WatanabeDebugMenuItemSubstruct {
+ u32 unk0;
+ u32 unk4;
+ u8 unk8;
+ u8 unk9;
+};
+
+struct WatanabeDebugMenuItem {
+ const u8 * text;
+ union {
+ u8 type1[2];
+ u32 type2;
+ u8 type3;
+ const struct WatanabeDebugMenuItemSubstruct *type4;
+ } data;
+};
+
+struct WatanabeEwram17000 {
+ u8 fill0;
+ u8 unk1_0:4;
+ u8 unk1_4:1;
+ u8 unk1_5:3;
+ u8 unk2;
+ u8 unk3;
+ u8 fill4[5];
+ u8 unk9;
+ u8 unkA;
+ u8 unkB;
+ u8 unkC;
+};
+
+struct WatanabeEwram18000 {
+ struct Pokemon pokemon;
+ u32 unk64[0x40];
+ u32 unk164;
+ u8 unk168;
+ u8 unk169;
+ u8 unk16a;
+ u8 unk16b[259];
+};
+
+struct WatanabeEwram18000_2 {
+ u16 unk0;
+ u8 unk2;
+ u8 unk3;
+ u8 unk4;
+ u8 unk5;
+ u8 unk6;
+ u8 unk7;
+ u8 unk8;
+ u8 unk9;
+ u8 unkA;
+ struct PlttData unkC;
+ u16 unk10[16];
+};
+
+#define eWatanabe17000 (*(struct WatanabeEwram17000 *)(gSharedMem + 0x17000))
+#define eWatanabe18000 (*(struct WatanabeEwram18000 *)(gSharedMem + 0x18000))
+#define eWatanabe18000_2 (*(struct WatanabeEwram18000_2 *)(gSharedMem + 0x18000))
EWRAM_DATA u8 gUnknown_Debug_20389EC[0x20] = { 0 };
EWRAM_DATA u8 gUnknown_Debug_2038A0C[0x10] = { 0 };
-EWRAM_DATA u8 gUnknown_Debug_2038A1C[4] = { 0 };
-EWRAM_DATA u8 gUnknown_Debug_2038A20[4] = { 0 };
+EWRAM_DATA struct WatanabeEwram18000 * gUnknown_Debug_2038A1C = NULL;
+EWRAM_DATA struct WatanabeEwram18000_2 * gUnknown_Debug_2038A20 = NULL;
+
+u32 byte_3005E30;
+
+extern s8 gBattleTerrain;
+
+void debug_80C3A50(u8 taskId);
+void debug_80C3D2C(u8 taskId);
+void debug_80C4214(u8);
+void debug_80C42B8(u8 taskId);
+void debug_80C4348(u8 taskId);
+void debug_80C43A8(u8 taskId);
+void debug_80C44EC(u8 taskId);
+void debug_80C4550(u8 taskId);
+void debug_80C4694(void);
+void debug_80C4704(void);
+bool8 debug_80C4774(void);
+void debug_80C47BC(u8 taskId);
+void debug_80C48A0(u8 taskId);
+void debug_80C4900(u8 taskId);
+void debug_80C4A60(u8 taskId);
+void debug_80C4AC4(u8 taskId);
+void debug_80C4C44(u8);
+void debug_80C4D14(u8 taskId);
+void debug_80C4DB8(u8 taskId);
+void debug_80C4E18(u8 taskId);
+void debug_80C4F00(u8);
+void debug_80C4F48(u8 taskId);
+void debug_80C5038(u8 taskId);
+void debug_80C5098(u8 taskId);
+void debug_80C5158(u8 taskId);
+void debug_80C5174(u8 taskId);
+void debug_80C5190(u8 taskId);
+void debug_80C51AC(u8 taskId);
+void debug_80C51C8(u8 taskId);
+void debug_80C51E4(u8 taskId);
+void debug_80C53A4(u8 taskId);
+void debug_80C53C0(u8 taskId);
+void debug_80C53F0(u8 taskId);
+void debug_80C55E4(u8 taskId);
+void debug_80C5708(u8 taskId);
+void debug_80C5C94(void);
+void debug_80C5DEC(void);
+void debug_80C5EF4(void);
+void debug_80C5FFC(void);
+void debug_80C627C(u8);
+void debug_80C6384(void);
+void debug_80C643C(void);
+void debug_80C6544(u8);
+void debug_80C689C(u8 *, const u8 *, u8);
+void debug_80C6678(u8 *, u32, u8, u8);
+void debug_80C68CC(u16, u8, u8, u8);
+void debug_80C6B00(u8 taskId);
+void debug_80C6CB8(u8 taskId);
+void debug_80C6EE8(u8 taskId);
+void debug_80C6FA8(u8 taskId);
+void debug_80C71FC(u8 taskId);
+void debug_80C7294(u8 taskId);
+void debug_80C74E4(u8 taskId);
+void debug_80C7584(struct Sprite *);
+void debug_80C777C(u8 taskId);
+void debug_80C7934(u8 taskId);
+void debug_80C7A54(u8 taskId);
+void debug_80C7B14(u8 taskId);
+void debug_80C7D44(u8 taskId);
+void debug_80C7DDC(u8 taskId);
+void debug_80C802C(u8 taskId);
+
+#define SPRITETAG_WATANABE 0x1000
+
+u8 byte_83F88EC[];
+u16 word_83F888C[];
+
+struct SpriteSheet stru_83F8828[] = {
+ {byte_83F88EC, 0x800, SPRITETAG_WATANABE},
+ {}
+};
+struct SpritePalette stru_83F8838[] = {
+ {word_83F888C, SPRITETAG_WATANABE},
+ {}
+};
+
+void debug_69(struct Sprite *sprite)
+{
+
+}
+
+void debug_80C35DC(void)
+{
+ SetVBlankCallback(NULL);
+ REG_DISPCNT = 0;
+ REG_BG3CNT = 0;
+ REG_BG2CNT = 0;
+ REG_BG1CNT = 0;
+ REG_BG0CNT = 0;
+ REG_BG3HOFS = 0;
+ REG_BG3VOFS = 0;
+ REG_BG2HOFS = 0;
+ REG_BG2VOFS = 0;
+ REG_BG1HOFS = 0;
+ REG_BG1VOFS = 0;
+ REG_BG0HOFS = 0;
+ REG_BG0VOFS = 0;
+ DmaFill16Large(3, 0, VRAM, VRAM_SIZE, 0x1000);
+ DmaFill32Defvars(3, 0, OAM, OAM_SIZE);
+ DmaFill16Defvars(3, 0, PLTT, PLTT_SIZE);
+ ResetPaletteFade();
+ ScanlineEffect_Stop();
+ ResetTasks();
+ ResetSpriteData();
+ ResetPaletteFade(); // I really don't want palette fade here
+ FreeAllSpritePalettes();
+ LoadSpriteSheet(stru_83F8828);
+ LoadSpritePalette(stru_83F8838);
+ Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C);
+ InitMenuWindow(&gMenuTextWindowTemplate);
+}
+
+void debug_80C36F4(void)
+{
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+void debug_80C370C(void)
+{
+ if (!gPaletteFade.active)
+ {
+ SetMainCallback2(debug_80C36F4);
+ }
+
+ else
+ {
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+ }
+}
+
+void debug_80C373C(u8 taskId)
+{
+ DestroyTask(taskId);
+ ScriptContext2_Disable();
+ SetMainCallback2(sub_80546F0);
+}
+
+void debug_80C3758(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+void debug_80C376C(u16 a0, u8 a1, u8 a2)
+{
+ u8 i;
+ u8 divresult;
+ u8 sp00[4];
+ bool8 r4;
+
+ for (i = 0; i < 3; i++)
+ sp00[i] = CHAR_SPACE;
+ sp00[3] = EOS;
+
+ r4 = FALSE;
+ divresult = a0 / 100;
+ if (divresult)
+ {
+ sp00[0] = CHAR_0 + divresult;
+ r4 = TRUE;
+ }
+
+ divresult = (a0 % 100) / 10;
+ if (divresult || r4)
+ {
+ sp00[1] = CHAR_0 + divresult;
+ }
+
+ sp00[2] = CHAR_0 + ((a0 % 100) % 10);
+
+ Menu_PrintText(sp00, a1, a2);
+}
+
+void debug_80C3800(u16 a0, u8 a1, u8 a2)
+{
+ u8 sp00[11];
+ u8 i;
+
+ for (i = 0; i < 10; i++)
+ sp00[i] = CHAR_SPACE;
+ sp00[i] = EOS;
+
+ for (i = 0; gSpeciesNames[a0][i] != EOS && i < 10; i++)
+ sp00[i] = gSpeciesNames[a0][i];
+
+ Menu_PrintText(sp00, a1, a2);
+}
+
+u16 debug_80C3878(u8 a0, u16 a1)
+{
+ switch (a0)
+ {
+ default:
+ case 0:
+ if (a1 > SPECIES_BULBASAUR)
+ a1--;
+ else
+ a1 = NUM_SPECIES - 1;
+ break;
+ case 1:
+ if (a1 < NUM_SPECIES - 1)
+ a1++;
+ else
+ a1 = SPECIES_BULBASAUR;
+ break;
+ }
+ return a1;
+}
+
+u16 debug_80C38B4(u8 a0, u16 a1)
+{
+ switch (a0)
+ {
+ default:
+ case 0:
+ if (a1)
+ a1--;
+ else
+ a1 = 0x52;
+ break;
+ case 1:
+ if (a1 < 0x52)
+ a1++;
+ else
+ a1 = 0;
+ break;
+ }
+ return a1;
+}
+
+void debug_80C38E4(u8 a0, u8 a1, u8 a2, u8 a3, u8 a4)
+{
+ u8 sp00[] = _("▶");
+ Menu_BlankWindowRect(a1, a2, a1, a3);
+ if (a4)
+ Menu_PrintText(sp00, a1, a0);
+}
+
+const u8 gUnknown_Debug_083F7FD6[] = {0x25, 0x20, 0x01, 0x08};
+
+void debug_80C393C(void)
+{
+ ProgramFlashSectorAndVerify(30, (void *)gUnknown_Debug_083F7FD6);
+}
+
+void InitWatanabeDebugMenu(void)
+{
+ switch (gMain.state)
+ {
+ default:
+ case 0:
+ save_serialize_map();
+ sub_8125E2C();
+ gMain.state = 1;
+ break;
+ case 1:
+ if (sub_8125E6C())
+ gMain.state++;
+ break;
+ case 2:
+ PlaySE(SE_SAVE);
+ gMain.state++;
+ break;
+ case 3:
+ if (!IsSEPlaying())
+ {
+ ScriptContext2_Disable();
+ SetMainCallback2(sub_80546F0);
+ }
+ break;
+ }
+}
+
+void InitSizeComparison(void)
+{
+ u8 taskId;
+ u16 imeBak;
+ debug_80C35DC();
+ gReservedSpritePaletteCount = 1;
+ LoadPalette(gUnknown_Debug_20389EC, 0x100, 0x20);
+
+ imeBak = REG_IME;
+ REG_IME = 0;
+ REG_IE |= INTR_FLAG_VBLANK;
+ REG_IME = imeBak;
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
+ SetVBlankCallback(debug_80C3758);
+ SetMainCallback2(debug_80C370C);
+ REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_OBJ_ON;
+ taskId = CreateTask(debug_80C3A50, 0);
+ gTasks[taskId].data[0] = 0xfc;
+}
+
+const u8 gUnknown_Debug_083F7FDA[] = _("ひりつ");
+const u8 gUnknown_Debug_083F7FDE[] = _("たかさ");
+const u8 gUnknown_Debug_083F7FE2[] = _("Lキー▶しゅくしょう");
+const u8 gUnknown_Debug_083F7FED[] = _("Rキー▶かくだい");
+const u8 gUnknown_Debug_083F7FF6[] = _("Uキー▶うえ いどう");
+const u8 gUnknown_Debug_083F8001[] = _("Dキー▶した いどう");
+const u8 gUnknown_Debug_083F800C[] = _("Aボタン▶そうさきりかえ");
+const u8 gUnknown_Debug_083F8019[] = _("Bボタン▶やめる");
+const u8 gUnknown_Debug_083F8022[] = _("スタート:");
+const u8 gUnknown_Debug_083F8028[] = _(":セレクト");
+
+#ifdef NONMATCHING
+void debug_80C3A50(u8 taskId)
+{
+ u16 natDexNum = gTasks[taskId].data[0];
+ u16 species = NationalPokedexNumToSpecies(natDexNum);
+ u16 spriteId;
+ u16 spriteId2;
+ struct SaveBlock2 *saveBlock2 = &gSaveBlock2;
+
+ Menu_DrawStdWindowFrame(6, 0, 23, 9);
+
+ Menu_DrawStdWindowFrame(0, 0, 5, 9);
+ Menu_PrintText(gUnknown_Debug_083F7FDA, 1, 1);
+ Menu_PrintText(gUnknown_Debug_083F7FDE, 1, 5);
+
+ Menu_DrawStdWindowFrame(24, 0, 29, 9);
+ Menu_PrintText(gUnknown_Debug_083F7FD6, 25, 1);
+ Menu_PrintText(gUnknown_Debug_083F7FDE, 25, 5);
+
+ Menu_DrawStdWindowFrame(0, 10, 11, 19);
+ Menu_PrintText(gUnknown_Debug_083F7FE2, 1, 11);
+ Menu_PrintText(gUnknown_Debug_083F7FED, 1, 13);
+ Menu_PrintText(gUnknown_Debug_083F7FF6, 1, 15);
+ Menu_PrintText(gUnknown_Debug_083F8001, 1, 17);
+
+ Menu_DrawStdWindowFrame(12, 10, 29, 15);
+ Menu_PrintText(gUnknown_Debug_083F800C, 13, 11);
+ Menu_PrintText(gUnknown_Debug_083F8019, 13, 13);
+
+ Menu_DrawStdWindowFrame(12, 16, 29, 19);
+ Menu_PrintText(gUnknown_Debug_083F8022, 13, 17);
+ Menu_PrintText(gUnknown_Debug_083F8028, 24, 17);
+
+ debug_80C3800(species, 18, 17);
+
+ spriteId = sub_8091A4C(saveBlock2->playerGender, 0x98, 0x28, 0);
+ gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL;
+ gSprites[spriteId].oam.matrixNum = 2;
+ gSprites[spriteId].oam.priority = 0;
+ gSprites[spriteId].oam.paletteNum = 0;
+ FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(0));
+ gSprites[spriteId].pos2.y = gPokedexEntries[natDexNum].trainerOffset;
+ SetOamMatrix(2, gPokedexEntries[natDexNum].trainerScale, 0, 0, gPokedexEntries[natDexNum].trainerScale);
+ gTasks[taskId].data[3] = spriteId;
+ gTasks[taskId].data[4] = gPokedexEntries[natDexNum].trainerOffset;
+ gTasks[taskId].data[6] = gPokedexEntries[natDexNum].trainerScale;
+
+ spriteId2 = sub_80918EC(natDexNum, 0x58, 0x28, 1);
+ gSprites[spriteId2].oam.affineMode = ST_OAM_AFFINE_NORMAL;
+ gSprites[spriteId2].oam.matrixNum = 1;
+ gSprites[spriteId2].oam.priority = 0;
+ gSprites[spriteId2].oam.paletteNum = 0;
+ FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(0));
+ gSprites[spriteId2].pos2.y = gPokedexEntries[natDexNum].pokemonOffset;
+ SetOamMatrix(1, gPokedexEntries[natDexNum].pokemonScale, 0, 0, gPokedexEntries[natDexNum].pokemonScale);
+ gTasks[taskId].data[2] = spriteId2;
+ gTasks[taskId].data[5] = gPokedexEntries[natDexNum].pokemonOffset;
+ gTasks[taskId].data[7] = gPokedexEntries[natDexNum].pokemonScale;
+ gTasks[taskId].data[8] = 0;
+ gTasks[taskId].data[9] = 0;
+
+ REG_WININ = 0x3F1F;
+ REG_WINOUT = 0x001F;
+ REG_WIN0H = ((gTasks[taskId].data[8] * 64 + 0x38) << 8) + (gTasks[taskId].data[8] * 64 + 0x78);
+ REG_WIN0V = 0x0848;
+ REG_WIN1H = 0x31BF;
+ REG_WIN1V = 0x014F;
+ REG_BLDCNT = BLDCNT_TGT1_BG0 | BLDCNT_TGT1_BD | BLDCNT_EFFECT_DARKEN;
+ REG_BLDALPHA = 0;
+ REG_BLDY = 7;
+ REG_DISPCNT |= DISPCNT_WIN0_ON | DISPCNT_WIN1_ON;
+ gTasks[taskId].func = debug_80C3D2C;
+}
+#else
+NAKED void debug_80C3A50(u8 taskId)
+{
+ asm("\tpush\t{r4, r5, r6, r7, lr}\n"
+ "\tmov\tr7, sl\n"
+ "\tmov\tr6, r9\n"
+ "\tmov\tr5, r8\n"
+ "\tpush\t{r5, r6, r7}\n"
+ "\tadd\tsp, sp, #0xffffffd8\n"
+ "\tlsl\tr0, r0, #0x18\n"
+ "\tlsr\tr0, r0, #0x18\n"
+ "\tldr\tr1, ._56 @ gTasks\n"
+ "\tlsl\tr2, r0, #0x2\n"
+ "\tadd\tr0, r2, r0\n"
+ "\tlsl\tr0, r0, #0x3\n"
+ "\tadd\tr7, r0, r1\n"
+ "\tldrh\tr0, [r7, #0x8]\n"
+ "\tstr\tr0, [sp, #0x4]\n"
+ "\tbl\tNationalPokedexNumToSpecies\n"
+ "\tmov\tr1, sp\n"
+ "\tstrh\tr0, [r1, #0x8]\n"
+ "\tadd\tr2, r0, #0\n"
+ "\tlsl\tr2, r2, #0x10\n"
+ "\tstr\tr2, [sp, #0xc]\n"
+ "\tlsr\tr2, r2, #0x10\n"
+ "\tmov\tr9, r2\n"
+ "\tldr\tr3, ._56 + 4 @ gSaveBlock2\n"
+ "\tmov\tr8, r3\n"
+ "\tmov\tr0, #0x6\n"
+ "\tmov\tr1, #0x0\n"
+ "\tmov\tr2, #0x17\n"
+ "\tmov\tr3, #0x9\n"
+ "\tbl\tMenu_DrawStdWindowFrame\n"
+ "\tmov\tr0, #0x0\n"
+ "\tmov\tr1, #0x0\n"
+ "\tmov\tr2, #0x5\n"
+ "\tmov\tr3, #0x9\n"
+ "\tbl\tMenu_DrawStdWindowFrame\n"
+ "\tldr\tr5, ._56 + 8 @ gUnknown_Debug_083F7FD6\n"
+ "\tadd\tr0, r5, #0\n"
+ "\tmov\tr1, #0x1\n"
+ "\tmov\tr2, #0x1\n"
+ "\tbl\tMenu_PrintText\n"
+ "\tldr\tr4, ._56 + 12 @ gUnknown_Debug_083F7FDE\n"
+ "\tadd\tr0, r4, #0\n"
+ "\tmov\tr1, #0x1\n"
+ "\tmov\tr2, #0x5\n"
+ "\tbl\tMenu_PrintText\n"
+ "\tmov\tr0, #0x18\n"
+ "\tmov\tr1, #0x0\n"
+ "\tmov\tr2, #0x1d\n"
+ "\tmov\tr3, #0x9\n"
+ "\tbl\tMenu_DrawStdWindowFrame\n"
+ "\tadd\tr0, r5, #0\n"
+ "\tmov\tr1, #0x19\n"
+ "\tmov\tr2, #0x1\n"
+ "\tbl\tMenu_PrintText\n"
+ "\tadd\tr0, r4, #0\n"
+ "\tmov\tr1, #0x19\n"
+ "\tmov\tr2, #0x5\n"
+ "\tbl\tMenu_PrintText\n"
+ "\tmov\tr0, #0x0\n"
+ "\tmov\tr1, #0xa\n"
+ "\tmov\tr2, #0xb\n"
+ "\tmov\tr3, #0x13\n"
+ "\tbl\tMenu_DrawStdWindowFrame\n"
+ "\tldr\tr0, ._56 + 16 @ gUnknown_Debug_083F7FE2\n"
+ "\tmov\tr1, #0x1\n"
+ "\tmov\tr2, #0xb\n"
+ "\tbl\tMenu_PrintText\n"
+ "\tldr\tr0, ._56 + 20 @ gUnknown_Debug_083F7FED\n"
+ "\tmov\tr1, #0x1\n"
+ "\tmov\tr2, #0xd\n"
+ "\tbl\tMenu_PrintText\n"
+ "\tldr\tr0, ._56 + 24 @ gUnknown_Debug_083F7FF6\n"
+ "\tmov\tr1, #0x1\n"
+ "\tmov\tr2, #0xf\n"
+ "\tbl\tMenu_PrintText\n"
+ "\tldr\tr0, ._56 + 28 @ gUnknown_Debug_083F8001\n"
+ "\tmov\tr1, #0x1\n"
+ "\tmov\tr2, #0x11\n"
+ "\tbl\tMenu_PrintText\n"
+ "\tmov\tr0, #0xc\n"
+ "\tmov\tr1, #0xa\n"
+ "\tmov\tr2, #0x1d\n"
+ "\tmov\tr3, #0xf\n"
+ "\tbl\tMenu_DrawStdWindowFrame\n"
+ "\tldr\tr0, ._56 + 32 @ gUnknown_Debug_083F800C\n"
+ "\tmov\tr1, #0xd\n"
+ "\tmov\tr2, #0xb\n"
+ "\tbl\tMenu_PrintText\n"
+ "\tldr\tr0, ._56 + 36 @ gUnknown_Debug_083F8019\n"
+ "\tmov\tr1, #0xd\n"
+ "\tmov\tr2, #0xd\n"
+ "\tbl\tMenu_PrintText\n"
+ "\tmov\tr0, #0xc\n"
+ "\tmov\tr1, #0x10\n"
+ "\tmov\tr2, #0x1d\n"
+ "\tmov\tr3, #0x13\n"
+ "\tbl\tMenu_DrawStdWindowFrame\n"
+ "\tldr\tr0, ._56 + 40 @ gUnknown_Debug_083F8022\n"
+ "\tmov\tr1, #0xd\n"
+ "\tmov\tr2, #0x11\n"
+ "\tbl\tMenu_PrintText\n"
+ "\tldr\tr0, ._56 + 44 @ gUnknown_Debug_083F8028\n"
+ "\tmov\tr1, #0x18\n"
+ "\tmov\tr2, #0x11\n"
+ "\tbl\tMenu_PrintText\n"
+ "\tmov\tr0, r9\n"
+ "\tmov\tr1, #0x12\n"
+ "\tmov\tr2, #0x11\n"
+ "\tbl\tdebug_80C3800\n"
+ "\tmov\tr1, r8\n"
+ "\tldrb\tr0, [r1, #0x8]\n"
+ "\tmov\tr1, #0x98\n"
+ "\tmov\tr2, #0x28\n"
+ "\tmov\tr3, #0x0\n"
+ "\tbl\tsub_8091A4C\n"
+ "\tmov\tr2, sp\n"
+ "\tstrh\tr0, [r2, #0x10]\n"
+ "\tadd\tr3, r0, #0\n"
+ "\tlsl\tr3, r3, #0x10\n"
+ "\tstr\tr3, [sp, #0x18]\n"
+ "\tlsr\tr0, r3, #0x10\n"
+ "\tstr\tr0, [sp, #0x14]\n"
+ "\tlsl\tr4, r0, #0x4\n"
+ "\tadd\tr4, r4, r0\n"
+ "\tlsl\tr4, r4, #0x2\n"
+ "\tldr\tr1, ._56 + 48 @ gSprites\n"
+ "\tadd\tr4, r4, r1\n"
+ "\tldrb\tr1, [r4, #0x1]\n"
+ "\tmov\tr2, #0x4\n"
+ "\tneg\tr2, r2\n"
+ "\tmov\tsl, r2\n"
+ "\tmov\tr0, sl\n"
+ "\tand\tr0, r0, r1\n"
+ "\tmov\tr3, #0x1\n"
+ "\torr\tr0, r0, r3\n"
+ "\tstrb\tr0, [r4, #0x1]\n"
+ "\tldrb\tr1, [r4, #0x3]\n"
+ "\tmov\tr0, #0x3f\n"
+ "\tneg\tr0, r0\n"
+ "\tmov\tr9, r0\n"
+ "\tand\tr0, r0, r1\n"
+ "\tmov\tr1, #0x4\n"
+ "\torr\tr0, r0, r1\n"
+ "\tstrb\tr0, [r4, #0x3]\n"
+ "\tldrb\tr1, [r4, #0x5]\n"
+ "\tsub\tr2, r2, #0x9\n"
+ "\tmov\tr8, r2\n"
+ "\tmov\tr0, r8\n"
+ "\tand\tr0, r0, r1\n"
+ "\tmov\tr3, #0xf\n"
+ "\tand\tr0, r0, r3\n"
+ "\tstrb\tr0, [r4, #0x5]\n"
+ "\tmov\tr0, #0x0\n"
+ "\tbl\tGetSpritePaletteTagByPaletteNum\n"
+ "\tlsl\tr0, r0, #0x10\n"
+ "\tlsr\tr0, r0, #0x10\n"
+ "\tbl\tFreeSpritePaletteByTag\n"
+ "\tldr\tr0, ._56 + 52 @ gPokedexEntries\n"
+ "\tldr\tr1, [sp, #0x4]\n"
+ "\tlsl\tr5, r1, #0x3\n"
+ "\tadd\tr5, r5, r1\n"
+ "\tlsl\tr5, r5, #0x2\n"
+ "\tadd\tr5, r5, r0\n"
+ "\tldrh\tr6, [r5, #0x20]\n"
+ "\tstrh\tr6, [r4, #0x26]\n"
+ "\tldrh\tr4, [r5, #0x1e]\n"
+ "\tstr\tr4, [sp]\n"
+ "\tmov\tr0, #0x2\n"
+ "\tadd\tr1, r4, #0\n"
+ "\tmov\tr2, #0x0\n"
+ "\tmov\tr3, #0x0\n"
+ "\tbl\tSetOamMatrix\n"
+ "\tmov\tr2, sp\n"
+ "\tldrh\tr2, [r2, #0x14]\n"
+ "\tstrh\tr2, [r7, #0xe]\n"
+ "\tstrh\tr6, [r7, #0x10]\n"
+ "\tstrh\tr4, [r7, #0x14]\n"
+ "\tldr\tr0, [sp, #0x4]\n"
+ "\tmov\tr1, #0x58\n"
+ "\tmov\tr2, #0x28\n"
+ "\tmov\tr3, #0x1\n"
+ "\tbl\tsub_80918EC\n"
+ "\tmov\tr3, sp\n"
+ "\tstrh\tr0, [r3, #0x1c]\n"
+ "\tlsl\tr0, r0, #0x10\n"
+ "\tstr\tr0, [sp, #0x24]\n"
+ "\tlsr\tr1, r0, #0x10\n"
+ "\tstr\tr1, [sp, #0x20]\n"
+ "\tlsl\tr4, r1, #0x4\n"
+ "\tadd\tr4, r4, r1\n"
+ "\tlsl\tr4, r4, #0x2\n"
+ "\tldr\tr2, ._56 + 48 @ gSprites\n"
+ "\tadd\tr4, r4, r2\n"
+ "\tldrb\tr0, [r4, #0x1]\n"
+ "\tmov\tr3, sl\n"
+ "\tand\tr3, r3, r0\n"
+ "\tmov\tr0, #0x1\n"
+ "\torr\tr3, r3, r0\n"
+ "\tstrb\tr3, [r4, #0x1]\n"
+ "\tldrb\tr0, [r4, #0x3]\n"
+ "\tmov\tr1, r9\n"
+ "\tand\tr1, r1, r0\n"
+ "\tmov\tr0, #0x2\n"
+ "\torr\tr1, r1, r0\n"
+ "\tstrb\tr1, [r4, #0x3]\n"
+ "\tldrb\tr0, [r4, #0x5]\n"
+ "\tmov\tr2, r8\n"
+ "\tand\tr2, r2, r0\n"
+ "\tmov\tr3, #0xf\n"
+ "\tand\tr2, r2, r3\n"
+ "\tstrb\tr2, [r4, #0x5]\n"
+ "\tmov\tr0, #0x0\n"
+ "\tbl\tGetSpritePaletteTagByPaletteNum\n"
+ "\tlsl\tr0, r0, #0x10\n"
+ "\tlsr\tr0, r0, #0x10\n"
+ "\tbl\tFreeSpritePaletteByTag\n"
+ "\tldrh\tr0, [r5, #0x1c]\n"
+ "\tmov\tr8, r0\n"
+ "\tstrh\tr0, [r4, #0x26]\n"
+ "\tldrh\tr4, [r5, #0x1a]\n"
+ "\tstr\tr4, [sp]\n"
+ "\tmov\tr0, #0x1\n"
+ "\tadd\tr1, r4, #0\n"
+ "\tmov\tr2, #0x0\n"
+ "\tmov\tr3, #0x0\n"
+ "\tbl\tSetOamMatrix\n"
+ "\tmov\tr1, sp\n"
+ "\tldrh\tr1, [r1, #0x20]\n"
+ "\tstrh\tr1, [r7, #0xc]\n"
+ "\tmov\tr2, r8\n"
+ "\tstrh\tr2, [r7, #0x12]\n"
+ "\tstrh\tr4, [r7, #0x16]\n"
+ "\tmov\tr3, #0x0\n"
+ "\tstrh\tr3, [r7, #0x18]\n"
+ "\tstrh\tr3, [r7, #0x1a]\n"
+ "\tldr\tr1, ._56 + 56 @ 0x4000048\n"
+ "\tldr\tr2, ._56 + 60 @ 0x3f1f\n"
+ "\tadd\tr0, r2, #0\n"
+ "\tstrh\tr0, [r1]\n"
+ "\tadd\tr1, r1, #0x2\n"
+ "\tmov\tr0, #0x1f\n"
+ "\tstrh\tr0, [r1]\n"
+ "\tldr\tr2, ._56 + 64 @ 0x4000040\n"
+ "\tmov\tr3, #0x18\n"
+ "\tldsh\tr1, [r7, r3]\n"
+ "\tlsl\tr1, r1, #0x6\n"
+ "\tadd\tr0, r1, #0\n"
+ "\tadd\tr0, r0, #0x38\n"
+ "\tlsl\tr0, r0, #0x8\n"
+ "\tadd\tr1, r1, #0x78\n"
+ "\tadd\tr0, r0, r1\n"
+ "\tstrh\tr0, [r2]\n"
+ "\tldr\tr1, ._56 + 68 @ 0x4000044\n"
+ "\tldr\tr2, ._56 + 72 @ 0x848\n"
+ "\tadd\tr0, r2, #0\n"
+ "\tstrh\tr0, [r1]\n"
+ "\tsub\tr1, r1, #0x2\n"
+ "\tldr\tr3, ._56 + 76 @ 0x31bf\n"
+ "\tadd\tr0, r3, #0\n"
+ "\tstrh\tr0, [r1]\n"
+ "\tadd\tr1, r1, #0x4\n"
+ "\tldr\tr2, ._56 + 80 @ 0x14f\n"
+ "\tadd\tr0, r2, #0\n"
+ "\tstrh\tr0, [r1]\n"
+ "\tadd\tr1, r1, #0xa\n"
+ "\tmov\tr0, #0xe1\n"
+ "\tstrh\tr0, [r1]\n"
+ "\tldr\tr0, ._56 + 84 @ 0x4000052\n"
+ "\tmov\tr3, #0x0\n"
+ "\tstrh\tr3, [r0]\n"
+ "\tadd\tr1, r1, #0x4\n"
+ "\tmov\tr0, #0x7\n"
+ "\tstrh\tr0, [r1]\n"
+ "\tmov\tr2, #0x80\n"
+ "\tlsl\tr2, r2, #0x13\n"
+ "\tldrh\tr0, [r2]\n"
+ "\tmov\tr3, #0xc0\n"
+ "\tlsl\tr3, r3, #0x7\n"
+ "\tadd\tr1, r3, #0\n"
+ "\torr\tr0, r0, r1\n"
+ "\tstrh\tr0, [r2]\n"
+ "\tldr\tr0, ._56 + 88 @ debug_80C3D2C\n"
+ "\tstr\tr0, [r7]\n"
+ "\tadd\tsp, sp, #0x28\n"
+ "\tpop\t{r3, r4, r5}\n"
+ "\tmov\tr8, r3\n"
+ "\tmov\tr9, r4\n"
+ "\tmov\tsl, r5\n"
+ "\tpop\t{r4, r5, r6, r7}\n"
+ "\tpop\t{r0}\n"
+ "\tbx\tr0\n"
+ "._57:\n"
+ "\t.align\t2, 0\n"
+ "._56:\n"
+ "\t.word\tgTasks\n"
+ "\t.word\tgSaveBlock2\n"
+ "\t.word\tgUnknown_Debug_083F7FD6+0x4\n"
+ "\t.word\tgUnknown_Debug_083F7FDE\n"
+ "\t.word\tgUnknown_Debug_083F7FE2\n"
+ "\t.word\tgUnknown_Debug_083F7FED\n"
+ "\t.word\tgUnknown_Debug_083F7FF6\n"
+ "\t.word\tgUnknown_Debug_083F8001\n"
+ "\t.word\tgUnknown_Debug_083F800C\n"
+ "\t.word\tgUnknown_Debug_083F8019\n"
+ "\t.word\tgUnknown_Debug_083F8022\n"
+ "\t.word\tgUnknown_Debug_083F8028\n"
+ "\t.word\tgSprites\n"
+ "\t.word\tgPokedexEntries\n"
+ "\t.word\t0x4000048\n"
+ "\t.word\t0x3f1f\n"
+ "\t.word\t0x4000040\n"
+ "\t.word\t0x4000044\n"
+ "\t.word\t0x848\n"
+ "\t.word\t0x31bf\n"
+ "\t.word\t0x14f\n"
+ "\t.word\t0x4000052\n"
+ "\t.word\tdebug_80C3D2C+1");
+}
+#endif // NONMATCHING
+
+void debug_80C3D2C(u8 taskId)
+{
+ if (gMain.newKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
+ SetMainCallback2(debug_80C370C);
+ gTasks[taskId].func = debug_80C373C;
+ }
+ else if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ gTasks[taskId].data[8] ^= 1;
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_LEFT)
+ {
+ if (gTasks[taskId].data[8])
+ {
+ if (gMain.heldKeys & R_BUTTON)
+ gTasks[taskId].data[6] += 16;
+ else
+ gTasks[taskId].data[6] += 1;
+ if ((u16)gTasks[taskId].data[6] > 0x8000)
+ gTasks[taskId].data[6] = 0x8000;
+ }
+ else
+ {
+ if (gMain.heldKeys & R_BUTTON)
+ gTasks[taskId].data[7] += 16;
+ else
+ gTasks[taskId].data[7] += 1;
+ if ((u16)gTasks[taskId].data[7] > 0x8000)
+ gTasks[taskId].data[7] = 0x8000;
+ }
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_RIGHT)
+ {
+ if (gTasks[taskId].data[8])
+ {
+ if (gMain.heldKeys & R_BUTTON)
+ gTasks[taskId].data[6] -= 16;
+ else
+ gTasks[taskId].data[6] -= 1;
+ if (gTasks[taskId].data[6] < 0x100)
+ gTasks[taskId].data[6] = 0x100;
+ }
+ else
+ {
+ if (gMain.heldKeys & R_BUTTON)
+ gTasks[taskId].data[7] -= 16;
+ else
+ gTasks[taskId].data[7] -= 1;
+ if (gTasks[taskId].data[7] < 0x100)
+ gTasks[taskId].data[7] = 0x100;
+ }
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_UP)
+ {
+ if (gTasks[taskId].data[8])
+ {
+ gTasks[taskId].data[4]--;
+ }
+ else
+ {
+ gTasks[taskId].data[5]--;
+ }
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_DOWN)
+ {
+ if (gTasks[taskId].data[8])
+ {
+ gTasks[taskId].data[4]++;
+ }
+ else
+ {
+ gTasks[taskId].data[5]++;
+ }
+ }
+ else if (gMain.newAndRepeatedKeys & START_BUTTON)
+ {
+ if (gTasks[taskId].data[0] < 0x182)
+ gTasks[taskId].data[0]++;
+ else
+ gTasks[taskId].data[0] = 1;
+ DestroySprite(gSprites + gTasks[taskId].data[2]);
+ DestroySprite(gSprites + gTasks[taskId].data[3]);
+ gTasks[taskId].func = debug_80C3A50;
+ }
+ else if (gMain.newAndRepeatedKeys & SELECT_BUTTON)
+ {
+ if (gTasks[taskId].data[0] > 1)
+ gTasks[taskId].data[0]--;
+ else
+ gTasks[taskId].data[0] = 0x182;
+ DestroySprite(gSprites + gTasks[taskId].data[2]);
+ DestroySprite(gSprites + gTasks[taskId].data[3]);
+ gTasks[taskId].func = debug_80C3A50;
+ }
+ else
+ {
+ u16 scale = gTasks[taskId].data[7];
+ u16 offset = gTasks[taskId].data[5];
+ SetOamMatrix(1, scale, 0, 0, scale);
+ debug_80C68CC(scale, 1, 3, 4);
+ debug_80C68CC(offset, 1, 7, 4);
+ gSprites[gTasks[taskId].data[2]].pos2.y = offset;
+
+ scale = gTasks[taskId].data[6];
+ offset = gTasks[taskId].data[4];
+ SetOamMatrix(2, scale, 0, 0, scale);
+ debug_80C68CC(scale, 25, 3, 4);
+ debug_80C68CC(offset, 25, 7, 4);
+ gSprites[gTasks[taskId].data[3]].pos2.y = offset;
+
+ REG_WIN0H = ((gTasks[taskId].data[8] * 64 + 0x38) << 8) + (gTasks[taskId].data[8] * 64 + 0x78);
+ }
+}
+
+void debug_80C405C(u8 * dest, u16 species)
+{
+ u8 i;
+
+ for (i = 0; i < 10; i++)
+ dest[i] = CHAR_SPACE;
+ dest[i] = EOS;
+
+ dest[0] = CHAR_HYPHEN;
+
+ if (species != SPECIES_NONE)
+ {
+ for (i = 0; gSpeciesNames[species][i] != EOS && i < 10; i++)
+ dest[i] = gSpeciesNames[species][i];
+ }
+}
+
+void debug_80C40C4(bool8 who)
+{
+ u8 i;
+ u16 maxHp;
+
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ if (who)
+ {
+ struct Pokemon *pokemon = gEnemyParty + i;
+ if (GetMonData(pokemon, MON_DATA_SPECIES) != SPECIES_NONE)
+ {
+ CalculateMonStats(pokemon);
+ maxHp = GetMonData(pokemon, MON_DATA_MAX_HP);
+ SetMonData(pokemon, MON_DATA_HP, &maxHp);
+ }
+ }
+ else
+ {
+ struct Pokemon *pokemon = gPlayerParty + i;
+ if (GetMonData(pokemon, MON_DATA_SPECIES) != SPECIES_NONE)
+ {
+ CalculateMonStats(pokemon);
+ maxHp = GetMonData(pokemon, MON_DATA_MAX_HP);
+ SetMonData(pokemon, MON_DATA_HP, &maxHp);
+ }
+ }
+ }
+}
+
+void InitBattleForDebug(void)
+{
+ SavePlayerParty();
+ gUnknown_Debug_2038A0C[13] = gSaveBlock2.playerGender;
+ gUnknown_Debug_2038A0C[0] = 0;
+ gUnknown_Debug_2038A0C[1] = 0;
+ gUnknown_Debug_2038A0C[2] = 0;
+ gUnknown_Debug_2038A0C[3] = 0;
+ gUnknown_Debug_2038A0C[4] = 0;
+ gUnknown_Debug_2038A0C[5] = 0;
+ gUnknown_Debug_2038A0C[6] = 0;
+ gUnknown_Debug_2038A0C[7] = 0;
+ gUnknown_Debug_2038A0C[8] = 0;
+ gUnknown_Debug_2038A0C[12] = 0;
+ byte_3005E30 = 0;
+ ZeroPlayerPartyMons();
+ ZeroEnemyPartyMons();
+ debug_80C4214(0);
+ CreateTask(debug_80C47BC, 0);
+}
+
+void debug_80C41A8(void)
+{
+ gUnknown_Debug_2038A0C[1] = 0;
+ gUnknown_Debug_2038A0C[2] = 0;
+ ZeroPlayerPartyMons();
+ ZeroEnemyPartyMons();
+ debug_80C4214(0);
+ CreateTask(debug_80C47BC, 0);
+}
+
+const u8 gUnknown_Debug_083F802E[] = _("やせいたいせん");
+const u8 gUnknown_Debug_083F8036[] = _("1VS1たいせん");
+const u8 gUnknown_Debug_083F803F[] = _("2VS2たいせん");
+const u8 gUnknown_Debug_083F8048[] = _("{COLOR BLUE}1VS1つうしんたいせん");
+const u8 gUnknown_Debug_083F8058[] = _("{COLOR BLUE}2VS2つうしんたいせん");
+
+const struct WatanabeDebugMenuItem gUnknown_Debug_083F8068[] = {
+ {gUnknown_Debug_083F802E, {.type1 = {0x00, 0x01}}},
+ {gUnknown_Debug_083F8036, {.type1 = {0x08, 0x01}}},
+ {gUnknown_Debug_083F803F, {.type1 = {0x09, 0x02}}},
+ {gUnknown_Debug_083F8048, {.type1 = {0x0A, 0x01}}},
+ {gUnknown_Debug_083F8058, {.type1 = {0x0B, 0x02}}}
+};
+
+const u8 gUnknown_Debug_083F8090[] = _("きほんタイプ");
+const u8 gUnknown_Debug_083F8097[] = _("AIタイプ2");
+const u8 gUnknown_Debug_083F809E[] = _("AIタイプ3");
+const u8 gUnknown_Debug_083F80A5[] = _("AIタイプ4");
+const u8 gUnknown_Debug_083F80AC[] = _("AIタイプ5");
+const u8 gUnknown_Debug_083F80B3[] = _("AIタイプ6");
+const u8 gUnknown_Debug_083F80BA[] = _("AIタイプ7");
+const u8 gUnknown_Debug_083F80C1[] = _("AIタイプ8");
+const u8 gUnknown_Debug_083F80C8[] = _("AIタイプ9");
+const u8 gUnknown_Debug_083F80CF[] = _("AIタイプ10");
+
+const struct WatanabeDebugMenuItem gUnknown_Debug_083F80D8[] = {
+ {gUnknown_Debug_083F8090, {.type2 = 0x1}},
+ {gUnknown_Debug_083F8097, {.type2 = 0x2}},
+ {gUnknown_Debug_083F809E, {.type2 = 0x4}},
+ {gUnknown_Debug_083F80A5, {.type2 = 0x8}},
+ {gUnknown_Debug_083F80AC, {.type2 = 0x10}},
+ {gUnknown_Debug_083F80B3, {.type2 = 0x20}},
+ {gUnknown_Debug_083F80BA, {.type2 = 0x40}},
+ {gUnknown_Debug_083F80C1, {.type2 = 0x80}},
+ {gUnknown_Debug_083F80C8, {.type2 = 0x100}},
+ {gUnknown_Debug_083F80CF, {.type2 = 0x200}}
+};
+
+const u8 gUnknown_Debug_083F8128[] = _("くさ");
+const u8 gUnknown_Debug_083F812B[] = _("ながい くさ");
+const u8 gUnknown_Debug_083F8132[] = _("すな");
+const u8 gUnknown_Debug_083F8135[] = _("みず");
+const u8 gUnknown_Debug_083F8138[] = _("うみ");
+const u8 gUnknown_Debug_083F813B[] = _("いけ");
+const u8 gUnknown_Debug_083F813E[] = _("いわ");
+const u8 gUnknown_Debug_083F8141[] = _("どうくつ");
+const u8 gUnknown_Debug_083F8146[] = _("そのた");
+
+const struct WatanabeDebugMenuItem gUnknown_Debug_083F814C[] = {
+ {gUnknown_Debug_083F8128, {.type3 = 0x0}},
+ {gUnknown_Debug_083F812B, {.type3 = 0x1}},
+ {gUnknown_Debug_083F8132, {.type3 = 0x2}},
+ {gUnknown_Debug_083F8135, {.type3 = 0x3}},
+ {gUnknown_Debug_083F8138, {.type3 = 0x4}},
+ {gUnknown_Debug_083F813B, {.type3 = 0x5}},
+ {gUnknown_Debug_083F813E, {.type3 = 0x6}},
+ {gUnknown_Debug_083F8141, {.type3 = 0x7}},
+ {gUnknown_Debug_083F8146, {.type3 = 0x8}}
+};
+
+void debug_80C41D4(void)
+{
+ debug_80C40C4(0);
+ debug_80C4214(0);
+ CreateTask(debug_80C42B8, 0);
+}
+
+void debug_80C41F4(void)
+{
+ debug_80C40C4(1);
+ debug_80C4214(1);
+ CreateTask(debug_80C42B8, 0);
+}
+
+void debug_80C4214(UNUSED u8 a0)
+{
+ u16 imeBak;
+ debug_80C35DC();
+ REG_WIN0H = 0;
+ REG_WIN0V = 0;
+ REG_WIN1H = 0;
+ REG_WIN1V = 0;
+ REG_WININ = 0x1111;
+ REG_WINOUT = 0x0031;
+ REG_BLDCNT = BLDCNT_TGT1_BG0 | BLDCNT_TGT1_BD | BLDCNT_EFFECT_DARKEN;
+ REG_BLDALPHA = 0;
+ REG_BLDY = 7;
+
+ imeBak = REG_IME;
+ REG_IME = 0;
+ REG_IE |= INTR_FLAG_VBLANK;
+ REG_IME = imeBak;
+
+ SetVBlankCallback(debug_80C3758);
+ SetMainCallback2(debug_80C370C);
+ REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON | DISPCNT_WIN1_ON;
+ REG_WIN0H = 0x01EF;
+ REG_WIN0V = 0x819F;
+}
+
+void debug_80C42B8(u8 taskId)
+{
+ u8 sp00[] = _("ポケモンを えらんでね");
+ u8 sp0c[] = _("{COLOR RED}START:つぎへ");
+
+ Menu_DrawStdWindowFrame(0, 16, 29, 19);
+ Menu_PrintText(sp00, 1, 17);
+ Menu_PrintText(sp0c, 20, 17);
+
+ debug_80C4694();
+ debug_80C4704();
+
+ if (gUnknown_Debug_2038A0C[0])
+ gTasks[taskId].func = debug_80C44EC;
+ else
+ gTasks[taskId].func = debug_80C4348;
+}
+
+void debug_80C4348(u8 taskId)
+{
+ debug_80C38E4(gUnknown_Debug_2038A0C[1] * 2 + 3, 1, 1, 14, 1);
+ REG_WIN1H = 0x0177;
+ REG_WIN1V = 0x017F;
+ gTasks[taskId].func = debug_80C43A8;
+}
+
+void debug_80C43A8(u8 taskId)
+{
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ debug_sub_80A433C(gPlayerParty + gUnknown_Debug_2038A0C[1], debug_80C41D4);
+ DestroyTask(taskId);
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ gTasks[taskId].func = debug_80C4F48;
+ }
+ else if (gMain.newKeys & START_BUTTON)
+ {
+ if (debug_80C4774())
+ {
+ PlaySE(SE_SELECT);
+ CalculatePlayerPartyCount();
+ CalculateEnemyPartyCount();
+ gTasks[taskId].func = debug_80C4D14;
+ }
+ }
+ else if (gMain.newKeys & (R_BUTTON | DPAD_RIGHT))
+ {
+ debug_80C38E4(0, 1, 1, 14, 0);
+ gTasks[taskId].func = debug_80C44EC;
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_UP && gUnknown_Debug_2038A0C[1] != 0)
+ {
+ gUnknown_Debug_2038A0C[1]--;
+ gTasks[taskId].func = debug_80C4348;
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_DOWN && gUnknown_Debug_2038A0C[1] < 5 && GetMonData(gPlayerParty + gUnknown_Debug_2038A0C[1], MON_DATA_SPECIES) != SPECIES_NONE)
+ {
+ gUnknown_Debug_2038A0C[1]++;
+ gTasks[taskId].func = debug_80C4348;
+ }
+}
+
+void debug_80C44EC(u8 taskId)
+{
+ debug_80C38E4(gUnknown_Debug_2038A0C[2] * 2 + 3, 16, 1, 14, 1);
+ REG_WIN1H = 0x79EF;
+ REG_WIN1V = 0x017F;
+ gTasks[taskId].func = debug_80C4550;
+}
+
+void debug_80C4550(u8 taskId)
+{
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ debug_sub_80A433C(gEnemyParty + gUnknown_Debug_2038A0C[2], debug_80C41F4);
+ DestroyTask(taskId);
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ gTasks[taskId].func = debug_80C4F48;
+ }
+ else if (gMain.newKeys & START_BUTTON)
+ {
+ if (debug_80C4774())
+ {
+ PlaySE(SE_SELECT);
+ CalculatePlayerPartyCount();
+ CalculateEnemyPartyCount();
+ gTasks[taskId].func = debug_80C4D14;
+ }
+ }
+ else if (gMain.newKeys & (L_BUTTON | DPAD_LEFT))
+ {
+ debug_80C38E4(0, 16, 1, 14, 0);
+ gTasks[taskId].func = debug_80C4348;
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_UP && gUnknown_Debug_2038A0C[2] != 0)
+ {
+ gUnknown_Debug_2038A0C[2]--;
+ gTasks[taskId].func = debug_80C44EC;
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_DOWN && gUnknown_Debug_2038A0C[2] < 5 && GetMonData(gEnemyParty + gUnknown_Debug_2038A0C[2], MON_DATA_SPECIES) != SPECIES_NONE)
+ {
+ gUnknown_Debug_2038A0C[2]++;
+ gTasks[taskId].func = debug_80C44EC;
+ }
+}
+
+void debug_80C4694(void)
+{
+ u8 i;
+ u8 sp00[] = _("{COLOR RED}じぶんの ポケモン");
+ u8 sp10[POKEMON_NAME_LENGTH + 1];
+
+ Menu_DrawStdWindowFrame(0, 0, 14, 15);
+ Menu_PrintText(sp00, 2, 1);
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ debug_80C405C(sp10, GetMonData(gPlayerParty + i, MON_DATA_SPECIES));
+ Menu_PrintText(sp10, 2, 2 * i + 3);
+ }
+}
+
+void debug_80C4704(void)
+{
+ u8 i;
+ u8 sp00[] = _("{COLOR RED}あいての ポケモン");
+ u8 sp10[POKEMON_NAME_LENGTH + 1];
+
+ Menu_DrawStdWindowFrame(15, 0, 29, 15);
+ Menu_PrintText(sp00, 17, 1);
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ debug_80C405C(sp10, GetMonData(gEnemyParty + i, MON_DATA_SPECIES));
+ Menu_PrintText(sp10, 17, 2 * i + 3);
+ }
+}
+
+bool8 debug_80C4774(void)
+{
+ u8 i = gUnknown_Debug_2038A0C[12] - 1;
+ if (GetMonData(gPlayerParty + i, MON_DATA_SPECIES) != SPECIES_NONE && GetMonData(gEnemyParty + i, MON_DATA_SPECIES) != SPECIES_NONE)
+ return TRUE;
+ return FALSE;
+}
+
+void debug_80C47BC(u8 taskId)
+{
+ u8 i;
+ u8 sp00[] = _("たいせんモードを えらんでね");
+ u8 sp10[] = _("{COLOR RED}START:つぎへ");
+ u8 sp20[] = _("{COLOR RED}バトルモード せんたく");
+ u8 sp30[] = _("{COLOR RED}トレーナーAI せんたく");
+
+ Menu_DrawStdWindowFrame(0, 16, 29, 19);
+ Menu_PrintText(sp00, 1, 17);
+ Menu_PrintText(sp10, 20, 17);
+
+ Menu_DrawStdWindowFrame(0, 0, 14, 15);
+ Menu_PrintText(sp20, 2, 1);
+
+ for (i = 0; i < ARRAY_COUNT(gUnknown_Debug_083F8068); i++)
+ Menu_PrintText(gUnknown_Debug_083F8068[i].text, 2, 2 * i + 3);
+
+ Menu_DrawStdWindowFrame(15, 0, 29, 15);
+ Menu_PrintText(sp30, 17, 1);
+
+ debug_80C4C44(gUnknown_Debug_2038A0C[4]);
+
+ gTasks[taskId].func = debug_80C48A0;
+}
+
+void debug_80C48A0(u8 taskId)
+{
+ debug_80C38E4(2 * gUnknown_Debug_2038A0C[3] + 3, 1, 1, 14, 1);
+ REG_WIN1H = 0x0177;
+ REG_WIN1V = 0x017F;
+ gTasks[taskId].func = debug_80C4900;
+}
+
+void debug_80C4900(u8 taskId)
+{
+ if (gMain.newKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
+ SetMainCallback2(debug_80C370C);
+ LoadPlayerParty();
+ gSaveBlock2.playerGender = gUnknown_Debug_2038A0C[13];
+ gBattleTypeFlags = 0;
+ gUnknown_02023A14_50 = 0;
+ gTasks[taskId].func = debug_80C373C;
+ }
+ else if (gMain.newKeys & START_BUTTON || gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ gBattleTypeFlags = gUnknown_Debug_083F8068[gUnknown_Debug_2038A0C[3]].data.type1[0];
+ gUnknown_02023A14_50 = 8;
+ gUnknown_Debug_2038A0C[12] = gUnknown_Debug_083F8068[gUnknown_Debug_2038A0C[3]].data.type1[1];
+ if (gUnknown_Debug_2038A0C[3] == 1 || gUnknown_Debug_2038A0C[3] == 2)
+ {
+ debug_80C38E4(0, 1, 1, 14, 0);
+ gTasks[taskId].func = debug_80C4A60;
+ }
+ else
+ {
+ gTasks[taskId].func = debug_80C4F48;
+ }
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_UP && gUnknown_Debug_2038A0C[3] > 0)
+ {
+ gUnknown_Debug_2038A0C[3]--;
+ gTasks[taskId].func = debug_80C48A0;
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_DOWN && gUnknown_Debug_2038A0C[3] < 2)
+ {
+ gUnknown_Debug_2038A0C[3]++;
+ gTasks[taskId].func = debug_80C48A0;
+ }
+}
+
+void debug_80C4A60(u8 taskId)
+{
+ debug_80C38E4(gUnknown_Debug_2038A0C[5] * 2 + 3, 16, 1, 14, 1);
+ REG_WIN1H = 0x79EF;
+ REG_WIN1V = 0x017F;
+ gTasks[taskId].func = debug_80C4AC4;
+}
+
+void debug_80C4AC4(u8 taskId)
+{
+ u8 r1 = gUnknown_Debug_2038A0C[4] + gUnknown_Debug_2038A0C[5];
+
+ if (gMain.newKeys & A_BUTTON)
+ {
+ u32 mask = gUnknown_Debug_083F80D8[r1].data.type2;
+ if (byte_3005E30 & mask)
+ byte_3005E30 &= (mask ^ 0xFFFF);
+ else
+ byte_3005E30 |= mask;
+ debug_80C4C44(gUnknown_Debug_2038A0C[4]);
+ gTasks[taskId].func = debug_80C4A60;
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ debug_80C38E4(0, 16, 1, 14, 0);
+ gTasks[taskId].func = debug_80C48A0;
+ }
+ else if (gMain.newKeys & START_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ gTrainerBattleOpponent = 0x400;
+ eWatanabe17000.unk1_4 = 0;
+ eWatanabe17000.unk2 = 0xAC;
+ eWatanabe17000.unk3 = 0xFF;
+ eWatanabe17000.unk9 = 0;
+ eWatanabe17000.unkA = 0;
+ eWatanabe17000.unkB = 0;
+ eWatanabe17000.unkC = 0;
+ gTasks[taskId].func = debug_80C4F48;
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_UP)
+ {
+ if (gUnknown_Debug_2038A0C[5] > 0)
+ gUnknown_Debug_2038A0C[5]--;
+ else if (gUnknown_Debug_2038A0C[4] > 0)
+ {
+ gUnknown_Debug_2038A0C[4]--;
+ debug_80C4C44(gUnknown_Debug_2038A0C[4]);
+ }
+ gTasks[taskId].func = debug_80C4A60;
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_DOWN && gUnknown_Debug_2038A0C[5] < 9)
+ {
+ if (gUnknown_Debug_2038A0C[5] < 5)
+ gUnknown_Debug_2038A0C[5]++;
+ else if (gUnknown_Debug_2038A0C[4] < 4)
+ {
+ gUnknown_Debug_2038A0C[4]++;
+ debug_80C4C44(gUnknown_Debug_2038A0C[4]);
+ }
+ gTasks[taskId].func = debug_80C4A60;
+ }
+}
+
+void debug_80C4C44(u8 a0)
+{
+ u8 i;
+ u8 j;
+ u8 sp00[15];
+
+ for (i = 0; i < 6; i++)
+ {
+ if (i + a0 < 10)
+ {
+ for (j = 0; gUnknown_Debug_083F80D8[i + a0].text[j] != EOS && j < 12; j++)
+ {
+ sp00[j + 3] = gUnknown_Debug_083F80D8[i + a0].text[j];
+ }
+ for (; j < 12; j++)
+ {
+ sp00[j + 3] = CHAR_SPACE;
+ }
+ sp00[14] = EOS;
+ sp00[0] = EXT_CTRL_CODE_BEGIN;
+ sp00[1] = 0x01;
+ if (byte_3005E30 & (1 << (i + a0)))
+ sp00[2] = 0x03;
+ else
+ sp00[2] = 0x01;
+ Menu_PrintText(sp00, 17, 2 * i + 3);
+ }
+ }
+}
+
+void debug_80C4D14(u8 taskId)
+{
+ u8 sp00[] = _("たいせんモードを えらんでね");
+ u8 sp10[] = _("{COLOR RED}START:かいし");
+ u8 sp20[] = _("{COLOR RED}バトルちけい せんたく");
+
+ Menu_DrawStdWindowFrame(0, 16, 29, 19);
+ Menu_PrintText(sp00, 1, 17);
+ Menu_PrintText(sp10, 20, 17);
+
+ Menu_DrawStdWindowFrame(0, 0, 14, 15);
+ Menu_PrintText(sp20, 2, 1);
+ debug_80C4F00(gUnknown_Debug_2038A0C[6]);
+
+ Menu_DrawStdWindowFrame(15, 0, 29,15);
+ gTasks[taskId].func = debug_80C4DB8;
+}
+
+void debug_80C4DB8(u8 taskId)
+{
+ debug_80C38E4(2 * gUnknown_Debug_2038A0C[7] + 3, 1, 1, 14, 1);
+ REG_WIN1H = 0x0177;
+ REG_WIN1V = 0x017F;
+ gTasks[taskId].func = debug_80C4E18;
+}
+
+void debug_80C4E18(u8 taskId)
+{
+ u8 r6 = gUnknown_Debug_2038A0C[6] + gUnknown_Debug_2038A0C[7];
+ if (gMain.newKeys & B_BUTTON)
+ {
+ gTasks[taskId].func = debug_80C42B8;
+ }
+ else if (gMain.newKeys & START_BUTTON || gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ gBattleTerrain = gUnknown_Debug_083F814C[r6].data.type3;
+ gTasks[taskId].func = debug_80C5158;
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_UP)
+ {
+ if (gUnknown_Debug_2038A0C[7] > 0)
+ gUnknown_Debug_2038A0C[7]--;
+ else if (gUnknown_Debug_2038A0C[6] > 0)
+ {
+ gUnknown_Debug_2038A0C[6]--;
+ debug_80C4F00(gUnknown_Debug_2038A0C[6]);
+ }
+ gTasks[taskId].func = debug_80C4DB8;
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_DOWN && gUnknown_Debug_2038A0C[7] < 8)
+ {
+ if (gUnknown_Debug_2038A0C[7] < 5)
+ gUnknown_Debug_2038A0C[7]++;
+ else if (gUnknown_Debug_2038A0C[6] < 3)
+ {
+ gUnknown_Debug_2038A0C[6]++;
+ debug_80C4F00(gUnknown_Debug_2038A0C[6]);
+ }
+ gTasks[taskId].func = debug_80C4DB8;
+ }
+}
+
+void debug_80C4F00(u8 a0)
+{
+ u8 i;
+ Menu_BlankWindowRect(1, 3, 13, 14);
+
+ for (i = 0; i < 6; i++)
+ {
+ if (i < 9)
+ Menu_PrintText(gUnknown_Debug_083F814C[i + a0].text, 2, 2 * i + 3);
+ }
+}
+
+void debug_80C4F48(u8 taskId)
+{
+ u8 sp00[] = _("じぶんの せいべつを えらんでね");
+ u8 sp14[] = _("{COLOR RED}START:つぎへ");
+ u8 sp24[] = _("{COLOR RED}せいべつ せんたく");
+ u8 sp34[] = _("おとこ");
+ u8 sp38[] = _("おんな");
+
+ Menu_DrawStdWindowFrame(0, 16, 29, 19);
+ Menu_PrintText(sp00, 1, 17);
+ Menu_PrintText(sp14, 20, 17);
+
+ Menu_DrawStdWindowFrame(0, 0, 14, 15);
+ Menu_PrintText(sp24, 2, 1);
+
+ Menu_BlankWindowRect(1, 3, 13, 14);
+ Menu_PrintText(sp24, 2, 1);
+ Menu_PrintText(sp34, 2, 3);
+ Menu_PrintText(sp38, 2, 5);
+
+ Menu_DrawStdWindowFrame(15, 0, 29, 15);
+ gTasks[taskId].func = debug_80C5038;
+}
+
+void debug_80C5038(u8 taskId)
+{
+ debug_80C38E4(gUnknown_Debug_2038A0C[8] * 2 + 3, 1, 1, 14, 1);
+ REG_WIN1H = 0x0177;
+ REG_WIN1V = 0x017F;
+ gTasks[taskId].func = debug_80C5098;
+}
+
+void debug_80C5098(u8 taskId)
+{
+ if (gMain.newKeys & B_BUTTON)
+ {
+ gTasks[taskId].func = debug_80C47BC;
+ }
+ else if (gMain.newKeys & START_BUTTON || gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ gSaveBlock2.playerGender = gUnknown_Debug_2038A0C[8];
+ gTasks[taskId].func = debug_80C42B8;
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_UP && gUnknown_Debug_2038A0C[8] > 0)
+ {
+ gUnknown_Debug_2038A0C[8]--;
+ gTasks[taskId].func = debug_80C5038;
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_DOWN && gUnknown_Debug_2038A0C[8] < 1)
+ {
+ gUnknown_Debug_2038A0C[8]++;
+ gTasks[taskId].func = debug_80C5038;
+ }
+}
+
+void debug_80C5158(u8 taskId)
+{
+ gTasks[taskId].func = debug_80C5174;
+}
+
+void debug_80C5174(u8 taskId)
+{
+ gTasks[taskId].func = debug_80C5190;
+}
+
+void debug_80C5190(u8 taskId)
+{
+ gTasks[taskId].func = debug_80C51AC;
+}
+
+void debug_80C51AC(u8 taskId)
+{
+ gTasks[taskId].func = debug_80C51C8;
+}
+
+void debug_80C51C8(u8 taskId)
+{
+ gTasks[taskId].func = debug_80C51E4;
+}
+
+void debug_80C51E4(u8 taskId)
+{
+ sub_80408BC();
+ gMain.savedCallback = debug_80C41A8;
+ SetMainCallback2(debug_sub_800D684);
+}
+
+void debug_80C5208(void)
+{
+ u16 i;
+
+ gUnknown_Debug_2038A1C = &eWatanabe18000;
+
+ for (i = 0; i < 64; i++)
+ {
+ gUnknown_Debug_2038A1C->unk64[i] = 0;
+ }
+
+ gUnknown_Debug_2038A1C->unk64[0] = 0xfc;
+ gUnknown_Debug_2038A1C->unk64[3] = gSaveBlock2.playerTrainerId[0] | (gSaveBlock2.playerTrainerId[1] << 8) | (gSaveBlock2.playerTrainerId[2] << 16) | (gSaveBlock2.playerTrainerId[3] << 24);
+ gUnknown_Debug_2038A1C->unk64[4] = (Random() << 16) | Random();
+ gUnknown_Debug_2038A1C->unk64[1] = 1;
+ gUnknown_Debug_2038A1C->unk64[2] = 1;
+ debug_80C5C94();
+}
+
+bool8 debug_80C527C(struct Pokemon *pokemon)
+{
+ u8 i;
+
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ if (GetMonData(gPlayerParty + i, MON_DATA_SPECIES, NULL) == SPECIES_NONE)
+ {
+ gPlayerParty[i] = *pokemon;
+ gPlayerPartyCount = i + 1;
+ return FALSE;
+ }
+ }
+ SendMonToPC(&gUnknown_Debug_2038A1C->pokemon);
+ return TRUE;
+}
+
+const u8 Str_83F8237[] = _("Kind");
+const struct WatanabeDebugMenuItemSubstruct _83F823C = {1, 0x00000182, 0x00, 0x03};
+
+const u8 Str_83F8248[] = _("Level");
+const struct WatanabeDebugMenuItemSubstruct _83F8250 = {1, 0x00000064, 0x00, 0x03};
+
+const u8 Str_83F825C[] = _("EXP Points");
+const struct WatanabeDebugMenuItemSubstruct _83F8268 = {1, 0x001E8480, 0x00, 0x07};
+
+const u8 Str_83F8274[] = _("ID");
+const struct WatanabeDebugMenuItemSubstruct _83F8278 = {0, 0xFFFFFFFF, 0x00, 0x0A};
+
+const u8 Str_83F8284[] = _("Rnd Numbers");
+const struct WatanabeDebugMenuItemSubstruct _83F8290 = {0, 0xFFFFFFFF, 0x00, 0x0A};
+
+const u8 Str_83F829C[] = _("Sex");
+const struct WatanabeDebugMenuItemSubstruct _83F82A0 = {0, 0x00000002, 0x00, 0xFF};
+
+const u8 Str_83F82AC[] = _("Character");
+const struct WatanabeDebugMenuItemSubstruct _83F82B8 = {0, 0x00000018, 0x00, 0xFF};
+
+const u8 Str_83F82C4[] = _("Move1");
+const struct WatanabeDebugMenuItemSubstruct _83F82CC = {0, 0x00000162, 0x00, 0x03};
+
+const u8 Str_83F82D8[] = _("Move2");
+const struct WatanabeDebugMenuItemSubstruct _83F82E0 = {0, 0x00000162, 0x00, 0x03};
+
+const u8 Str_83F82EC[] = _("Move3");
+const struct WatanabeDebugMenuItemSubstruct _83F82F4 = {0, 0x00000162, 0x00, 0x03};
+
+const u8 Str_83F8300[] = _("Move4");
+const struct WatanabeDebugMenuItemSubstruct _83F8308 = {0, 0x00000162, 0x00, 0x03};
+
+const u8 Str_83F8314[] = _("Hold");
+const struct WatanabeDebugMenuItemSubstruct _83F831C = {0, 0x000000FF, 0x00, 0x03};
+
+const u8 Str_83F8328[] = _("SP. Ability");
+const struct WatanabeDebugMenuItemSubstruct _83F8334 = {0, 0x00000001, 0x00, 0xFF};
+
+const u8 Str_83F8340[] = _("HPrnd");
+const struct WatanabeDebugMenuItemSubstruct _83F8348 = {0, 0x0000001F, 0x00, 0x02};
+
+const u8 Str_83F8354[] = _("HPexp");
+const struct WatanabeDebugMenuItemSubstruct _83F835C = {0, 0x000000FF, 0x00, 0x03};
+
+const u8 Str_83F8368[] = _("ATKrnd");
+const struct WatanabeDebugMenuItemSubstruct _83F8370 = {0, 0x0000001F, 0x00, 0x02};
+
+const u8 Str_83F837C[] = _("ATKexp");
+const struct WatanabeDebugMenuItemSubstruct _83F8384 = {0, 0x000000FF, 0x00, 0x03};
+
+const u8 Str_83F8390[] = _("DEFrnd");
+const struct WatanabeDebugMenuItemSubstruct _83F8398 = {0, 0x0000001F, 0x00, 0x02};
+
+const u8 Str_83F83A4[] = _("DEFexp");
+const struct WatanabeDebugMenuItemSubstruct _83F83AC = {0, 0x000000FF, 0x00, 0x03};
+
+const u8 Str_83F83B8[] = _("SPDrnd");
+const struct WatanabeDebugMenuItemSubstruct _83F83C0 = {0, 0x0000001F, 0x00, 0x02};
+
+const u8 Str_83F83CC[] = _("SPDexp");
+const struct WatanabeDebugMenuItemSubstruct _83F83D4 = {0, 0x000000FF, 0x00, 0x03};
+
+const u8 Str_83F83E0[] = _("SP. ATK$rnd");
+const struct WatanabeDebugMenuItemSubstruct _83F83EC = {0, 0x0000001F, 0x00, 0x02};
+
+const u8 Str_83F83F8[] = _("SP. ATK$exp");
+const struct WatanabeDebugMenuItemSubstruct _83F8404 = {0, 0x000000FF, 0x00, 0x03};
+
+const u8 Str_83F8410[] = _("SP. DEF$rnd");
+const struct WatanabeDebugMenuItemSubstruct _83F841C = {0, 0x0000001F, 0x00, 0x02};
+
+const u8 Str_83F8428[] = _("SP. DEF$exp");
+const struct WatanabeDebugMenuItemSubstruct _83F8434 = {0, 0x000000FF, 0x00, 0x03};
+
+const u8 Str_83F8440[] = _("Cool");
+const struct WatanabeDebugMenuItemSubstruct _83F8448 = {0, 0x000000FF, 0x00, 0x03};
+
+const u8 Str_83F8454[] = _("Beauty");
+const struct WatanabeDebugMenuItemSubstruct _83F845C = {0, 0x000000FF, 0x00, 0x03};
+
+const u8 Str_83F8468[] = _("Cute");
+const struct WatanabeDebugMenuItemSubstruct _83F8470 = {0, 0x000000FF, 0x00, 0x03};
+
+const u8 Str_83F847C[] = _("Smart");
+const struct WatanabeDebugMenuItemSubstruct _83F8484 = {0, 0x000000FF, 0x00, 0x03};
+
+const u8 Str_83F8490[] = _("Tough");
+const struct WatanabeDebugMenuItemSubstruct _83F8498 = {0, 0x000000FF, 0x00, 0x03};
+
+const u8 Str_83F84A4[] = _("Sheen");
+const struct WatanabeDebugMenuItemSubstruct _83F84AC = {0, 0x000000FF, 0x00, 0x03};
+
+const u8 Str_83F84B8[] = _("Tameness");
+const struct WatanabeDebugMenuItemSubstruct _83F84C4 = {0, 0x000000FF, 0x00, 0x03};
+
+const u8 Str_83F84D0[] = _("{PK}RUS");
+const struct WatanabeDebugMenuItemSubstruct _83F84D8 = {0, 0x000000FF, 0x00, 0x03};
+
+const u8 Str_83F84E4[] = _("EGG$");
+const struct WatanabeDebugMenuItemSubstruct _83F84EC = {0, 0x00000001, 0x00, 0xFF};
+
+const u8 Str_83F84F8[] = _("Status");
+const struct WatanabeDebugMenuItemSubstruct _83F8500 = {0, 0x00000006, 0x00, 0xFF};
+
+const u8 gUnknown_Debug_083F850A[] = _("{COLOR RED}HP  ");
+const u8 gUnknown_Debug_083F8514[] = _("{COLOR RED}ATK ");
+const u8 gUnknown_Debug_083F851C[] = _("{COLOR RED}DEF ");
+const u8 gUnknown_Debug_083F8524[] = _("{COLOR RED}SPEED");
+const u8 gUnknown_Debug_083F852D[] = _("{COLOR RED}SP。ATK");
+const u8 gUnknown_Debug_083F8537[] = _("{COLOR RED}SP。DEF");
+const u8 gUnknown_Debug_083F8541[] = _("なし");
+const u8 gUnknown_Debug_083F8544[] = _("♂");
+const u8 gUnknown_Debug_083F8546[] = _("♀");
+const u8 gUnknown_Debug_083F8548[] = _("ー");
+const u8 gUnknown_Debug_083F854A[] = _("ON");
+const u8 gUnknown_Debug_083F854D[] = _("OFF");
+
+const struct WatanabeDebugMenuItem gUnknown_Debug_083F8554[] = {
+ {Str_83F8237, {.type4 = &_83F823C}},
+ {Str_83F8248, {.type4 = &_83F8250}},
+ {Str_83F825C, {.type4 = &_83F8268}},
+ {Str_83F8274, {.type4 = &_83F8278}},
+ {Str_83F8284, {.type4 = &_83F8290}},
+ {Str_83F829C, {.type4 = &_83F82A0}},
+ {Str_83F82AC, {.type4 = &_83F82B8}},
+ {Str_83F82C4, {.type4 = &_83F82CC}},
+ {Str_83F82D8, {.type4 = &_83F82E0}},
+ {Str_83F82EC, {.type4 = &_83F82F4}},
+ {Str_83F8300, {.type4 = &_83F8308}},
+ {Str_83F8314, {.type4 = &_83F831C}},
+ {Str_83F8328, {.type4 = &_83F8334}},
+ {Str_83F8340, {.type4 = &_83F8348}},
+ {Str_83F8354, {.type4 = &_83F835C}},
+ {Str_83F8368, {.type4 = &_83F8370}},
+ {Str_83F837C, {.type4 = &_83F8384}},
+ {Str_83F8390, {.type4 = &_83F8398}},
+ {Str_83F83A4, {.type4 = &_83F83AC}},
+ {Str_83F83B8, {.type4 = &_83F83C0}},
+ {Str_83F83CC, {.type4 = &_83F83D4}},
+ {Str_83F83E0, {.type4 = &_83F83EC}},
+ {Str_83F83F8, {.type4 = &_83F8404}},
+ {Str_83F8410, {.type4 = &_83F841C}},
+ {Str_83F8428, {.type4 = &_83F8434}},
+ {Str_83F8440, {.type4 = &_83F8448}},
+ {Str_83F8454, {.type4 = &_83F845C}},
+ {Str_83F8468, {.type4 = &_83F8470}},
+ {Str_83F847C, {.type4 = &_83F8484}},
+ {Str_83F8490, {.type4 = &_83F8498}},
+ {Str_83F84A4, {.type4 = &_83F84AC}},
+ {Str_83F84B8, {.type4 = &_83F84C4}},
+ {Str_83F84D0, {.type4 = &_83F84D8}},
+ {Str_83F84E4, {.type4 = &_83F84EC}},
+ {Str_83F84F8, {.type4 = &_83F8500}}
+};
+
+const u8 gUnknown_Debug_083F866C[] = {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0xFF
+};
+
+const u8 gUnknown_Debug_083F8674[] = {
+ 0x22, 0x1F, 0x20, 0xFF
+};
+
+const u8 gUnknown_Debug_083F8678[] = {
+ 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0xFF
+};
+
+const u8 gUnknown_Debug_083F867F[] = {
+ 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0xFE, 0xFF
+};
+
+const u8 gUnknown_Debug_083F8687[] = {
+ 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0xFD, 0xFF
+};
+
+const u8 gUnknown_Debug_083F868F[] = {
+ 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0xFF
+};
+
+const struct WatanabeDebugMenuItem gUnknown_Debug_083F8698[] = {
+ {gUnknown_Debug_083F866C, {.type3 = 0x5}},
+ {gUnknown_Debug_083F8674, {.type3 = 0x3}},
+ {gUnknown_Debug_083F8678, {.type3 = 0x6}},
+ {gUnknown_Debug_083F867F, {.type3 = 0x6}},
+ {gUnknown_Debug_083F8687, {.type3 = 0x6}},
+ {gUnknown_Debug_083F868F, {.type3 = 0x6}}
+};
+
+const u8 gUnknown_Debug_083F86C8[] = _("ーーー");
+const u8 gUnknown_Debug_083F86CC[] = _("SLP");
+const u8 gUnknown_Debug_083F86D0[] = _("PSN");
+const u8 gUnknown_Debug_083F86D4[] = _("BRN");
+const u8 gUnknown_Debug_083F86D8[] = _("FRZ");
+const u8 gUnknown_Debug_083F86DC[] = _("PAR");
+const u8 gUnknown_Debug_083F86E0[] = _("PSN2");
+
+const struct WatanabeDebugMenuItem gUnknown_Debug_083F86E8[] = {
+ {gUnknown_Debug_083F86C8, {.type3 = 0x0}},
+ {gUnknown_Debug_083F86CC, {.type3 = 0x1}},
+ {gUnknown_Debug_083F86D0, {.type3 = 0x8}},
+ {gUnknown_Debug_083F86D4, {.type3 = 0x10}},
+ {gUnknown_Debug_083F86D8, {.type3 = 0x20}},
+ {gUnknown_Debug_083F86DC, {.type3 = 0x40}},
+ {gUnknown_Debug_083F86E0, {.type3 = 0x80}}
+};
+
+const u8 gUnknown_Debug_083F8720[] = _("PKMNワLIST");
+const u8 gUnknown_Debug_083F872A[] = _("PKMNワBOX");
+void InitCreatePokemon(void)
+{
+ u8 sp04[] = _("Create POKひMON   LR:Shift  START:Add");
+
+ debug_80C35DC();
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
+ REG_BLDCNT = 0x0000;
+ REG_BLDALPHA = 0x0000;
+ REG_BLDY = 0x0000;
+
+ {
+ u16 imeBak = REG_IME;
+ REG_IME = 0;
+ REG_IE |= INTR_FLAG_VBLANK;
+ REG_IME = imeBak;
+ }
+
+ REG_DISPSTAT |= DISPSTAT_VBLANK_INTR;
+
+ SetVBlankCallback(debug_80C3758);
+ SetMainCallback2(debug_80C370C);
+
+ Menu_DrawStdWindowFrame(0, 0, 29, 3);
+ Menu_PrintText(sp04, 1, 1);
+ REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_OBJ_ON;
+ CreateTask(debug_80C53A4, 0);
+ debug_80C5208();
+ gUnknown_Debug_2038A1C->unk168 = 0;
+ gUnknown_Debug_2038A1C->unk169 = 0;
+}
+
+void debug_80C53A4(u8 taskId)
+{
+ gTasks[taskId].func = debug_80C53C0;
+}
+
+void debug_80C53C0(u8 taskId)
+{
+ debug_80C6384();
+ debug_80C627C(0);
+ gTasks[taskId].func = debug_80C53F0;
+}
+
+void debug_80C53F0(u8 taskId)
+{
+ if (gMain.newKeys & A_BUTTON)
+ {
+ gUnknown_Debug_2038A1C->unk164 = gUnknown_Debug_2038A1C->unk64[gUnknown_Debug_083F8698[gUnknown_Debug_2038A1C->unk168].text[gUnknown_Debug_2038A1C->unk169]];
+ gUnknown_Debug_2038A1C->unk16a = 0;
+ debug_80C643C();
+ gTasks[taskId].func = debug_80C55E4;
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
+ SetMainCallback2(debug_80C370C);
+ gTasks[taskId].func = debug_80C373C;
+ }
+ else if (gMain.newKeys & START_BUTTON)
+ {
+ bool8 r4;
+ PlaySE(SE_SELECT);
+ debug_80C5FFC();
+ r4 = debug_80C527C(&gUnknown_Debug_2038A1C->pokemon);
+ Menu_DrawStdWindowFrame(3, 8, 26, 11);
+ if (r4)
+ Menu_PrintText(gUnknown_Debug_083F872A, 4, 9);
+ else
+ Menu_PrintText(gUnknown_Debug_083F8720, 4, 9);
+ gTasks[taskId].func = debug_80C5708;
+ }
+ else if (gMain.newKeys & SELECT_BUTTON)
+ {
+ u32 r4 = gUnknown_Debug_2038A1C->unk64[0];
+ GetSetPokedexFlag(r4, 2);
+ GetSetPokedexFlag(r4, 3);
+ PlaySE(SE_SELECT);
+ }
+ else if (gMain.newKeys & DPAD_UP)
+ {
+ debug_80C627C(2);
+ }
+ else if (gMain.newKeys & DPAD_DOWN)
+ {
+ debug_80C627C(1);
+ }
+ else if (gMain.newKeys & L_BUTTON && gUnknown_Debug_2038A1C->unk168 > 0)
+ {
+ gUnknown_Debug_2038A1C->unk168--;
+ gUnknown_Debug_2038A1C->unk169 = 0;
+ gTasks[taskId].func = debug_80C53C0;
+ }
+ else if (gMain.newKeys & R_BUTTON && gUnknown_Debug_2038A1C->unk168 < 5)
+ {
+ gUnknown_Debug_2038A1C->unk168++;
+ gUnknown_Debug_2038A1C->unk169 = 0;
+ gTasks[taskId].func = debug_80C53C0;
+ }
+}
+
+void debug_80C55E4(u8 taskId)
+{
+ u8 r7 = gUnknown_Debug_083F8698[gUnknown_Debug_2038A1C->unk168].text[gUnknown_Debug_2038A1C->unk169];
+ if (gMain.newKeys & A_BUTTON)
+ {
+ gTasks[taskId].func = debug_80C53C0;
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ gUnknown_Debug_2038A1C->unk64[r7] = gUnknown_Debug_2038A1C->unk164;
+ gTasks[taskId].func = debug_80C53C0;
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_UP)
+ {
+ debug_80C6544(1);
+ debug_80C643C();
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_DOWN)
+ {
+ debug_80C6544(2);
+ debug_80C643C();
+ }
+ else if (gUnknown_Debug_083F8554[r7].data.type4->unk9 != 0xFF)
+ {
+ if (gMain.newKeys & DPAD_LEFT && gUnknown_Debug_2038A1C->unk16a < gUnknown_Debug_083F8554[r7].data.type4->unk9 - 1)
+ {
+ gUnknown_Debug_2038A1C->unk16a++;
+ debug_80C643C();
+ }
+ else if (gMain.newKeys & DPAD_RIGHT && gUnknown_Debug_2038A1C->unk16a > 0)
+ {
+ gUnknown_Debug_2038A1C->unk16a--;
+ debug_80C643C();
+ }
+ }
+}
+
+void debug_80C5708(u8 taskId)
+{
+ if (gMain.newKeys & A_BUTTON)
+ {
+ gTasks[taskId].func = debug_80C53C0;
+ }
+}
+
+u8 debug_80C5738(u8 * a0, u8 a1, u8 a2)
+{
+ u16 i;
+ u8 r5;
+ u8 r2;
+
+ if (a1 == 0xfe)
+ {
+ debug_80C689C(a0, gUnknown_Debug_083F850A, 7);
+ debug_80C6678(a0 + 7, gUnknown_Debug_2038A1C->unk64[35], 3, 1);
+ a0[19] = CHAR_SPACE;
+ a0[20] = CHAR_SPACE;
+ debug_80C689C(a0 + 21, gUnknown_Debug_083F8514, 7);
+ debug_80C6678(a0 + 28, gUnknown_Debug_2038A1C->unk64[36], 3, 1);
+ a0[40] = CHAR_SPACE;
+ a0[41] = CHAR_SPACE;
+ debug_80C689C(a0 + 42, gUnknown_Debug_083F851C, 9);
+ debug_80C6678(a0 + 49, gUnknown_Debug_2038A1C->unk64[37], 3, 1);
+ return 0;
+ }
+ if (a1 == 0xfd)
+ {
+ debug_80C689C(a0, gUnknown_Debug_083F8524, 9);
+ debug_80C6678(a0 + 9, gUnknown_Debug_2038A1C->unk64[38], 3, 1);
+ a0[21] = CHAR_SPACE;
+ a0[22] = CHAR_SPACE;
+ debug_80C689C(a0 + 23, gUnknown_Debug_083F852D, 9);
+ debug_80C6678(a0 + 32, gUnknown_Debug_2038A1C->unk64[39], 3, 1);
+ a0[44] = CHAR_SPACE;
+ a0[45] = CHAR_SPACE;
+ debug_80C689C(a0 + 46, gUnknown_Debug_083F8537, 9);
+ debug_80C6678(a0 + 55, gUnknown_Debug_2038A1C->unk64[40], 3, 1);
+ return 0;
+ }
+ for (i = 0; i < 12; i++)
+ a0[i] = CHAR_SPACE;
+ debug_80C689C(a0, gUnknown_Debug_083F8554[a1].text, 11);
+ for (i = 12; i < 256; i++)
+ a0[i] = EOS;
+ r2 = gUnknown_Debug_083F8554[a1].data.type4->unk9;
+ r5 = r2 * 4;
+ switch (a1)
+ {
+ default:
+ a0[0] = EOS;
+ break;
+ case 0:
+ debug_80C6678(a0 + 10, gUnknown_Debug_2038A1C->unk64[a1], r2, a2);
+ a0[10 + r5] = CHAR_SPACE;
+ a0[11 + r5] = EXT_CTRL_CODE_BEGIN;
+ a0[12 + r5] = 0x01;
+ a0[13 + r5] = a2;
+ debug_80C689C(a0 + 14 + r5, gSpeciesNames[NationalPokedexNumToSpecies(gUnknown_Debug_2038A1C->unk64[a1])], 10);
+ break;
+ case 5:
+ switch (gUnknown_Debug_2038A1C->unk64[a1])
+ {
+ case 0:
+ debug_80C689C(a0 + 10, gUnknown_Debug_083F8546, 2);
+ break;
+ case 1:
+ debug_80C689C(a0 + 10, gUnknown_Debug_083F8541, 2);
+ break;
+ case 2:
+ debug_80C689C(a0 + 10, gUnknown_Debug_083F8544, 2);
+ break;
+ }
+ break;
+ case 7 ... 10:
+ debug_80C6678(a0 + 10, gUnknown_Debug_2038A1C->unk64[a1], r2, a2);
+ a0[10 + r5] = CHAR_SPACE;
+ a0[11 + r5] = EXT_CTRL_CODE_BEGIN;
+ a0[12 + r5] = 0x01;
+ a0[13 + r5] = a2;
+ debug_80C689C(a0 + 14 + r5, gMoveNames[gUnknown_Debug_2038A1C->unk64[a1]], 12);
+ break;
+ case 11:
+ debug_80C6678(a0 + 10, gUnknown_Debug_2038A1C->unk64[a1], r2, a2);
+ a0[10 + r5] = CHAR_SPACE;
+ a0[11 + r5] = EXT_CTRL_CODE_BEGIN;
+ a0[12 + r5] = 0x01;
+ a0[13 + r5] = a2;
+ if (gUnknown_Debug_2038A1C->unk64[a1] != ITEM_NONE)
+ debug_80C689C(a0 + 14 + r5, ItemId_GetName(gUnknown_Debug_2038A1C->unk64[a1]), 9);
+ else
+ debug_80C689C(a0 + 14 + r5, gUnknown_Debug_083F8541, 9);
+ break;
+ case 12:
+ a0 += 12;
+ debug_80C689C(a0, gAbilityNames[GetAbilityBySpecies(NationalPokedexNumToSpecies(gUnknown_Debug_2038A1C->unk64[0]), gUnknown_Debug_2038A1C->unk64[a1])], 12);
+ break;
+ case 34:
+ debug_80C689C(a0 + 10, gUnknown_Debug_083F86E8[gUnknown_Debug_2038A1C->unk64[a1]].text, 4);
+ break;
+ case 1 ... 4:
+ case 13 ... 32:
+ debug_80C6678(a0 + 12, gUnknown_Debug_2038A1C->unk64[a1], r2, a2);
+ break;
+ case 33:
+ if (gUnknown_Debug_2038A1C->unk64[a1])
+ debug_80C689C(a0 + 10, gUnknown_Debug_083F854A, 4);
+ else
+ debug_80C689C(a0 + 10, gUnknown_Debug_083F854D, 4);
+ break;
+ case 6:
+ debug_80C689C(a0 + 10, gNatureNames[gUnknown_Debug_2038A1C->unk64[a1]], 5);
+ break;
+ }
+ return 0;
+}
+
+u32 debug_80C5B60(u8 a0)
+{
+ return gUnknown_Debug_2038A1C->unk64[a0];
+}
+
+void debug_80C5B74(u32 a0, u8 a1)
+{
+ switch (a1)
+ {
+ default:
+ gUnknown_Debug_2038A1C->unk64[a1] = a0;
+ break;
+ case 0:
+ case 3:
+ case 4:
+ gUnknown_Debug_2038A1C->unk64[a1] = a0;
+ debug_80C5C94();
+ break;
+ case 1:
+ gUnknown_Debug_2038A1C->unk64[a1] = a0;
+ gUnknown_Debug_2038A1C->unk64[2] = gExperienceTables[gBaseStats[NationalPokedexNumToSpecies(gUnknown_Debug_2038A1C->unk64[0])].growthRate][a0];
+ debug_80C5C94();
+ break;
+ case 2:
+ gUnknown_Debug_2038A1C->unk64[a1] = a0;
+ debug_80C5DEC();
+ break;
+ case 13 ... 24:
+ gUnknown_Debug_2038A1C->unk64[a1] = a0;
+ debug_80C5EF4();
+ break;
+ }
+}
+
+void debug_80C5C94(void)
+{
+ u32 ivs = gUnknown_Debug_2038A1C->unk64[13] & 0x1f;
+ ivs |= (gUnknown_Debug_2038A1C->unk64[15] & 0x1f) << 5;
+ ivs |= (gUnknown_Debug_2038A1C->unk64[17] & 0x1f) << 10;
+ ivs |= (gUnknown_Debug_2038A1C->unk64[19] & 0x1f) << 15;
+ ivs |= (gUnknown_Debug_2038A1C->unk64[21] & 0x1f) << 20;
+ ivs |= (gUnknown_Debug_2038A1C->unk64[23] & 0x1f) << 25;
+ CreateMon(&gUnknown_Debug_2038A1C->pokemon, NationalPokedexNumToSpecies(gUnknown_Debug_2038A1C->unk64[0]), gUnknown_Debug_2038A1C->unk64[1], ivs, TRUE, gUnknown_Debug_2038A1C->unk64[4], TRUE, gUnknown_Debug_2038A1C->unk64[3]);
+ gUnknown_Debug_2038A1C->unk64[5] = (u8)(GetMonGender(&gUnknown_Debug_2038A1C->pokemon) + 2);
+ gUnknown_Debug_2038A1C->unk64[6] = GetNature(&gUnknown_Debug_2038A1C->pokemon);
+ gUnknown_Debug_2038A1C->unk64[7] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_MOVE1);
+ gUnknown_Debug_2038A1C->unk64[8] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_MOVE2);
+ gUnknown_Debug_2038A1C->unk64[9] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_MOVE3);
+ gUnknown_Debug_2038A1C->unk64[10] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_MOVE4);
+ gUnknown_Debug_2038A1C->unk64[2] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_EXP);
+ gUnknown_Debug_2038A1C->unk64[35] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_MAX_HP);
+ gUnknown_Debug_2038A1C->unk64[36] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_ATK);
+ gUnknown_Debug_2038A1C->unk64[37] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_DEF);
+ gUnknown_Debug_2038A1C->unk64[38] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPEED);
+ gUnknown_Debug_2038A1C->unk64[39] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPATK);
+ gUnknown_Debug_2038A1C->unk64[40] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPDEF);
+}
+
+void debug_80C5DEC(void)
+{
+ u32 zero = 0;
+ SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_EXP, gUnknown_Debug_2038A1C->unk64 + 2);
+ SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_MOVE1, &zero);
+ SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_MOVE2, &zero);
+ SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_MOVE3, &zero);
+ SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_MOVE4, &zero);
+ CalculateMonStats(&gUnknown_Debug_2038A1C->pokemon);
+ GiveMonInitialMoveset(&gUnknown_Debug_2038A1C->pokemon);
+ gUnknown_Debug_2038A1C->unk64[1] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_LEVEL);
+ gUnknown_Debug_2038A1C->unk64[7] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_MOVE1);
+ gUnknown_Debug_2038A1C->unk64[8] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_MOVE2);
+ gUnknown_Debug_2038A1C->unk64[9] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_MOVE3);
+ gUnknown_Debug_2038A1C->unk64[10] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_MOVE4);
+ gUnknown_Debug_2038A1C->unk64[35] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_MAX_HP);
+ gUnknown_Debug_2038A1C->unk64[36] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_ATK);
+ gUnknown_Debug_2038A1C->unk64[37] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_DEF);
+ gUnknown_Debug_2038A1C->unk64[38] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPEED);
+ gUnknown_Debug_2038A1C->unk64[39] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPATK);
+ gUnknown_Debug_2038A1C->unk64[40] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPDEF);
+}
+
+void debug_80C5EF4(void)
+{
+ SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_HP_IV, gUnknown_Debug_2038A1C->unk64 + 13);
+ SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_HP_EV, gUnknown_Debug_2038A1C->unk64 + 14);
+ SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_ATK_IV, gUnknown_Debug_2038A1C->unk64 + 15);
+ SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_ATK_EV, gUnknown_Debug_2038A1C->unk64 + 16);
+ SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_DEF_IV, gUnknown_Debug_2038A1C->unk64 + 17);
+ SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_DEF_EV, gUnknown_Debug_2038A1C->unk64 + 18);
+ SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPEED_IV, gUnknown_Debug_2038A1C->unk64 + 19);
+ SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPEED_EV, gUnknown_Debug_2038A1C->unk64 + 20);
+ SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPATK_IV, gUnknown_Debug_2038A1C->unk64 + 21);
+ SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPATK_EV, gUnknown_Debug_2038A1C->unk64 + 22);
+ SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPDEF_IV, gUnknown_Debug_2038A1C->unk64 + 23);
+ SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPDEF_EV, gUnknown_Debug_2038A1C->unk64 + 24);
+ CalculateMonStats(&gUnknown_Debug_2038A1C->pokemon);
+ gUnknown_Debug_2038A1C->unk64[35] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_MAX_HP);
+ gUnknown_Debug_2038A1C->unk64[36] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_ATK);
+ gUnknown_Debug_2038A1C->unk64[37] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_DEF);
+ gUnknown_Debug_2038A1C->unk64[38] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPEED);
+ gUnknown_Debug_2038A1C->unk64[39] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPATK);
+ gUnknown_Debug_2038A1C->unk64[40] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPDEF);
+}
+
+void debug_80C5FFC(void)
+{
+ u32 ivs;
+ u8 sp10[] = _("たまご");
+ u8 sp14[] = _("DebugーG");
+ u8 one;
+ u16 ff;
+
+ ivs = gUnknown_Debug_2038A1C->unk64[13] & 0x1f;
+ ivs |= (gUnknown_Debug_2038A1C->unk64[15] & 0x1f) << 5;
+ ivs |= (gUnknown_Debug_2038A1C->unk64[17] & 0x1f) << 10;
+ ivs |= (gUnknown_Debug_2038A1C->unk64[19] & 0x1f) << 15;
+ ivs |= (gUnknown_Debug_2038A1C->unk64[21] & 0x1f) << 20;
+ ivs |= (gUnknown_Debug_2038A1C->unk64[23] & 0x1f) << 25;
+
+ CreateMon(&gUnknown_Debug_2038A1C->pokemon, NationalPokedexNumToSpecies(gUnknown_Debug_2038A1C->unk64[0]), gUnknown_Debug_2038A1C->unk64[1], ivs, TRUE, gUnknown_Debug_2038A1C->unk64[4], TRUE, gUnknown_Debug_2038A1C->unk64[3]);
+
+ if (gUnknown_Debug_2038A1C->unk64[7] != MOVE_NONE)
+ SetMonMoveSlot(&gUnknown_Debug_2038A1C->pokemon, gUnknown_Debug_2038A1C->unk64[7], 0);
+ if (gUnknown_Debug_2038A1C->unk64[8] != MOVE_NONE)
+ SetMonMoveSlot(&gUnknown_Debug_2038A1C->pokemon, gUnknown_Debug_2038A1C->unk64[8], 1);
+ if (gUnknown_Debug_2038A1C->unk64[9] != MOVE_NONE)
+ SetMonMoveSlot(&gUnknown_Debug_2038A1C->pokemon, gUnknown_Debug_2038A1C->unk64[9], 2);
+ if (gUnknown_Debug_2038A1C->unk64[10] != MOVE_NONE)
+ SetMonMoveSlot(&gUnknown_Debug_2038A1C->pokemon, gUnknown_Debug_2038A1C->unk64[10], 3);
+
+ SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_EXP, gUnknown_Debug_2038A1C->unk64 + 2);
+ SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_HP_IV, gUnknown_Debug_2038A1C->unk64 + 13);
+ SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_HP_EV, gUnknown_Debug_2038A1C->unk64 + 14);
+ SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_ATK_IV, gUnknown_Debug_2038A1C->unk64 + 15);
+ SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_ATK_EV, gUnknown_Debug_2038A1C->unk64 + 16);
+ SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_DEF_IV, gUnknown_Debug_2038A1C->unk64 + 17);
+ SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_DEF_EV, gUnknown_Debug_2038A1C->unk64 + 18);
+ SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPEED_IV, gUnknown_Debug_2038A1C->unk64 + 19);
+ SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPEED_EV, gUnknown_Debug_2038A1C->unk64 + 20);
+ SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPATK_IV, gUnknown_Debug_2038A1C->unk64 + 21);
+ SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPATK_EV, gUnknown_Debug_2038A1C->unk64 + 22);
+ SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPDEF_IV, gUnknown_Debug_2038A1C->unk64 + 23);
+ SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPDEF_EV, gUnknown_Debug_2038A1C->unk64 + 24);
+
+ SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_COOL, gUnknown_Debug_2038A1C->unk64 + 25);
+ SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_BEAUTY, gUnknown_Debug_2038A1C->unk64 + 26);
+ SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_CUTE, gUnknown_Debug_2038A1C->unk64 + 27);
+ SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SMART, gUnknown_Debug_2038A1C->unk64 + 28);
+ SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_TOUGH, gUnknown_Debug_2038A1C->unk64 + 29);
+ SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SHEEN, gUnknown_Debug_2038A1C->unk64 + 30);
+ SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_FRIENDSHIP, gUnknown_Debug_2038A1C->unk64 + 31);
+ SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_POKERUS, gUnknown_Debug_2038A1C->unk64 + 32);
+
+ SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_HELD_ITEM, gUnknown_Debug_2038A1C->unk64 + 11);
+ SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_ALT_ABILITY, gUnknown_Debug_2038A1C->unk64 + 12);
+
+ SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_STATUS, &gUnknown_Debug_083F86E8[gUnknown_Debug_2038A1C->unk64[34]].data.type3);
+
+ SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_IS_EGG, gUnknown_Debug_2038A1C->unk64 + 33);
+ if (gUnknown_Debug_2038A1C->unk64[33])
+ {
+ SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_NICKNAME, sp10);
+ one = LANGUAGE_JAPANESE;
+ SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_LANGUAGE, &one);
+ }
+
+ SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_OT_NAME, sp14);
+ ff = 0xff;
+ SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_MET_LOCATION, &ff);
+ CalculateMonStats(&gUnknown_Debug_2038A1C->pokemon);
+}
+
+void debug_80C627C(u8 a0)
+{
+ u8 sp00[] = _("▶");
+ u8 sp04[] = _(" ");
+
+ switch (a0)
+ {
+ case 0:
+ Menu_PrintText(sp00, 1, 2 * gUnknown_Debug_2038A1C->unk169 + 5);
+ break;
+ case 1:
+ if (gUnknown_Debug_2038A1C->unk169 < gUnknown_Debug_083F8698[gUnknown_Debug_2038A1C->unk168].data.type3 - 1)
+ {
+ Menu_PrintText(sp04, 1, 2 * gUnknown_Debug_2038A1C->unk169 + 5);
+ gUnknown_Debug_2038A1C->unk169++;
+ Menu_PrintText(sp00, 1, 2 * gUnknown_Debug_2038A1C->unk169 + 5);
+ }
+ break;
+ case 2:
+ if (gUnknown_Debug_2038A1C->unk169 > 0)
+ {
+ Menu_PrintText(sp04, 1, 2 * gUnknown_Debug_2038A1C->unk169 + 5);
+ gUnknown_Debug_2038A1C->unk169--;
+ Menu_PrintText(sp00, 1, 2 * gUnknown_Debug_2038A1C->unk169 + 5);
+ }
+ break;
+ }
+}
+
+void debug_80C6384(void)
+{
+ u16 i;
+
+ Menu_DrawStdWindowFrame(0, 4, 29, 19);
+ for (i = 0; gUnknown_Debug_083F8698[gUnknown_Debug_2038A1C->unk168].text[i] != EOS; i++)
+ {
+ gUnknown_Debug_2038A1C->unk16b[0] = EXT_CTRL_CODE_BEGIN;
+ gUnknown_Debug_2038A1C->unk16b[1] = 0x01;
+ gUnknown_Debug_2038A1C->unk16b[2] = 0x01;
+ debug_80C5738(gUnknown_Debug_2038A1C->unk16b + 3, gUnknown_Debug_083F8698[gUnknown_Debug_2038A1C->unk168].text[i], 1);
+ Menu_PrintText(gUnknown_Debug_2038A1C->unk16b, 2, 2 * i + 5);
+ }
+}
+
+void debug_80C643C(void)
+{
+ u16 i;
+
+ Menu_BlankWindowRect(2, 5, 28, 18);
+ for (i = 0; gUnknown_Debug_083F8698[gUnknown_Debug_2038A1C->unk168].text[i] != EOS; i++)
+ {
+ gUnknown_Debug_2038A1C->unk16b[0] = EXT_CTRL_CODE_BEGIN;
+ gUnknown_Debug_2038A1C->unk16b[1] = 0x01;
+ if (i == gUnknown_Debug_2038A1C->unk169)
+ {
+ gUnknown_Debug_2038A1C->unk16b[2] = 0x02;
+ debug_80C5738(gUnknown_Debug_2038A1C->unk16b + 3, gUnknown_Debug_083F8698[gUnknown_Debug_2038A1C->unk168].text[i], 2);
+ }
+ else
+ {
+ gUnknown_Debug_2038A1C->unk16b[2] = 0x01;
+ debug_80C5738(gUnknown_Debug_2038A1C->unk16b + 3, gUnknown_Debug_083F8698[gUnknown_Debug_2038A1C->unk168].text[i], 1);
+ }
+ Menu_PrintText(gUnknown_Debug_2038A1C->unk16b, 2, 2 * i + 5);
+ }
+}
+
+const u32 gUnknown_Debug_083F8768[] = {
+ 1,
+ 10,
+ 100,
+ 1000,
+ 10000,
+ 100000,
+ 1000000,
+ 10000000,
+ 100000000,
+ 1000000000
+};
+
+void debug_80C6544(u8 a0)
+{
+ u32 r7 = debug_80C5B60(gUnknown_Debug_083F8698[gUnknown_Debug_2038A1C->unk168].text[gUnknown_Debug_2038A1C->unk169]);
+ u32 r5 = gUnknown_Debug_083F8554[gUnknown_Debug_083F8698[gUnknown_Debug_2038A1C->unk168].text[gUnknown_Debug_2038A1C->unk169]].data.type4->unk0;
+ u32 r4 = gUnknown_Debug_083F8554[gUnknown_Debug_083F8698[gUnknown_Debug_2038A1C->unk168].text[gUnknown_Debug_2038A1C->unk169]].data.type4->unk4;
+ u32 r3 = gUnknown_Debug_083F8768[gUnknown_Debug_2038A1C->unk16a];
+
+ if (gUnknown_Debug_083F8554[gUnknown_Debug_083F8698[gUnknown_Debug_2038A1C->unk168].text[gUnknown_Debug_2038A1C->unk169]].data.type4->unk8 == 0)
+ {
+ switch (a0)
+ {
+ case 1:
+ if (r7 < r4 - r3)
+ r7 += r3;
+ else if (r7 < r4)
+ r7 = r4;
+ else
+ r7 = r5;
+ break;
+ case 2:
+ if (r7 > r5 + r3)
+ r7 -= r3;
+ else if (r7 > r5)
+ r7 = r5;
+ else
+ r7 = r4;
+ break;
+ }
+ }
+ debug_80C5B74(r7, gUnknown_Debug_083F8698[gUnknown_Debug_2038A1C->unk168].text[gUnknown_Debug_2038A1C->unk169]);
+}
+
+void debug_80C6630(u8 * a0, u8 a1, u8 a2, u8 a3)
+{
+ *a0++ = EXT_CTRL_CODE_BEGIN;
+ *a0++ = 0x01;
+ if (a2 == 2)
+ {
+ if (a3 != gUnknown_Debug_2038A1C->unk16a)
+ *a0 = 0x02;
+ else
+ *a0 = 0x04;
+ }
+ else
+ *a0 = 0x01;
+ a0[1] = a1 + CHAR_0;
+}
+
+void debug_80C6678(u8 * a0, u32 a1, u8 a2, u8 a3)
+{
+ u8 r7 = 0;
+
+ switch (a2)
+ {
+ default:
+ case 10:
+ debug_80C6630(a0 + r7, a1 / 1000000000, a3, 9);
+ a1 %= 1000000000;
+ r7 += 4;
+ case 9:
+ debug_80C6630(a0 + r7, a1 / 100000000, a3, 8);
+ a1 %= 100000000;
+ r7 += 4;
+ case 8:
+ debug_80C6630(a0 + r7, a1 / 10000000, a3, 7);
+ a1 %= 10000000;
+ r7 += 4;
+ case 7:
+ debug_80C6630(a0 + r7, a1 / 1000000, a3, 6);
+ a1 %= 1000000;
+ r7 += 4;
+ case 6:
+ debug_80C6630(a0 + r7, a1 / 100000, a3, 5);
+ a1 %= 100000;
+ r7 += 4;
+ case 5:
+ debug_80C6630(a0 + r7, a1 / 10000, a3, 4);
+ a1 %= 10000;
+ r7 += 4;
+ case 4:
+ debug_80C6630(a0 + r7, a1 / 1000, a3, 3);
+ a1 %= 1000;
+ r7 += 4;
+ case 3:
+ debug_80C6630(a0 + r7, a1 / 100, a3, 2);
+ a1 %= 100;
+ r7 += 4;
+ case 2:
+ debug_80C6630(a0 + r7, a1 / 10, a3, 1);
+ a1 %= 10;
+ r7 += 4;
+ case 1:
+ debug_80C6630(a0 + r7, a1, a3, 0);
+ break;
+ }
+}
+
+void debug_80C689C(u8 * a0, const u8 * a1, u8 a2)
+{
+ u8 i;
+
+ for (i = 0; a1[i] != EOS && i < a2; i++)
+ a0[i] = a1[i];
+}
+
+void debug_80C68CC(u16 a0, u8 a1, u8 a2, u8 a3)
+{
+ u8 sp00[5];
+ u8 i;
+
+ for (i = 0; i < 4; i++)
+ sp00[i] = 0;
+ sp00[4] = EOS;
+
+ switch (a3)
+ {
+ default:
+ sp00[0] = a0 >> 12;
+ case 3:
+ sp00[1] = (a0 & 0x0F00) >> 8;
+ case 2:
+ sp00[2] = (a0 & 0x00F0) >> 4;
+ case 1:
+ sp00[3] = (a0 & 0x000F);
+ break;
+ }
+
+ for (i = 0; i < 4; i++)
+ {
+ if (sp00[i] < 10)
+ sp00[i] += CHAR_0;
+ else
+ sp00[i] += CHAR_A - 10;
+ }
+
+ Menu_PrintText(sp00 + (u8)(4 - a3), a1, a2);
+}
+
+struct OamData gOamData_83F8848 = {
+ .y = 0xa0
+};
+
+union AnimCmd gSpriteAnim_83F8850[] = {
+ ANIMCMD_FRAME(38, 30),
+ ANIMCMD_END
+};
+
+union AnimCmd gSpriteAnim_83F8858[] = {
+ ANIMCMD_FRAME(39, 30),
+ ANIMCMD_END
+};
+
+union AnimCmd gSpriteAnim_83F8860[] = {
+ ANIMCMD_FRAME(40, 30),
+ ANIMCMD_END
+};
+
+const union AnimCmd *gSpriteAnimTable_83F8868[] = {
+ gSpriteAnim_83F8850,
+ gSpriteAnim_83F8858,
+ gSpriteAnim_83F8860
+};
+
+struct SpriteTemplate gSpriteTemplate_83F8874 = {
+ SPRITETAG_WATANABE,
+ SPRITETAG_WATANABE,
+ &gOamData_83F8848,
+ gSpriteAnimTable_83F8868,
+ NULL,
+ gDummySpriteAffineAnimTable,
+ debug_80C7584
+};
+
+u16 word_83F888C[] = INCBIN_U16("graphics/debug/sprite_browser.gbapal");
+u8 byte_83F88EC[] = INCBIN_U8("graphics/debug/sprite_browser.4bpp");
+
+void InitSeePokemonGraphics(void)
+{
+ u16 pal;
+ u8 spriteId;
+ debug_80C35DC();
+ DmaCopy16Defvars(3, byte_83F88EC, BG_SCREEN_ADDR(28), sizeof(byte_83F88EC));
+ LoadPalette(word_83F888C, 0x80, sizeof(word_83F888C));
+ pal = RGB(31, 31, 31);
+ LoadPalette(&pal, 0, sizeof(pal));
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
+ REG_WIN0H = 0;
+ REG_WIN0V = 0;
+ REG_WIN1H = 0;
+ REG_WIN1V = 0;
+ REG_WININ = 0x3F;
+ REG_WINOUT = 0x1F;
+ REG_BLDCNT = BLDCNT_TGT1_BG0 | BLDCNT_TGT1_OBJ | BLDCNT_TGT1_BD | BLDCNT_EFFECT_DARKEN;
+ REG_BLDALPHA = 0;
+ REG_BLDY = 0x07;
+ {
+ u16 imeBak = REG_IME;
+ REG_IME = 0;
+ REG_IE |= INTR_FLAG_VBLANK;
+ REG_IME = imeBak;
+ }
+ SetVBlankCallback(debug_80C3758);
+ SetMainCallback2(debug_80C370C);
+ sub_809D51C();
+ REG_BG0CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(2) | BGCNT_SCREENBASE(31);
+ REG_BG1CNT = BGCNT_PRIORITY(2) | BGCNT_CHARBASE(2) | BGCNT_SCREENBASE(30);
+ REG_DISPCNT = DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON;
+ CreateTask(debug_80C6B00, 0);
+ gUnknown_Debug_2038A20 = &eWatanabe18000_2;
+ gUnknown_Debug_2038A20->unk0 = 0x115;
+ gUnknown_Debug_2038A20->unk2 = 0;
+ gUnknown_Debug_2038A20->unk3 = 0;
+ gUnknown_Debug_2038A20->unk5 = 0;
+ gUnknown_Debug_2038A20->unk7 = 0;
+ gUnknown_Debug_2038A20->unkA = 0;
+ gUnknown_Debug_2038A20->unk8 = 0;
+ spriteId = CreateSprite(&gSpriteTemplate_83F8874, 0x6C, 0x74, 0);
+ gSprites[spriteId].data[0] = 0;
+ StartSpriteAnim(gSprites + spriteId, 0);
+ spriteId = CreateSprite(&gSpriteTemplate_83F8874, 0x6C, 0x74, 0);
+ gSprites[spriteId].data[0] = 1;
+ StartSpriteAnim(gSprites + spriteId, 1);
+ spriteId = CreateSprite(&gSpriteTemplate_83F8874, 0x6C, 0x74, 0);
+ gSprites[spriteId].data[0] = 2;
+ StartSpriteAnim(gSprites + spriteId, 2);
+}
+
+const u16 gUnknown_Debug_083F8790[] = {
+ 0x0000,
+ 0x0002,
+ 0x0004,
+ 0x0006,
+ 0x0008,
+ 0x000a,
+ 0x000c,
+ 0x000e,
+ 0x0010,
+ 0x0012,
+ 0x0014,
+ 0x0016,
+ 0x0018,
+ 0x001a,
+ 0x001c,
+ 0x001e,
+ 0x001f,
+ 0x001e,
+ 0x001c,
+ 0x001a,
+ 0x0018,
+ 0x0016,
+ 0x0014,
+ 0x0012,
+ 0x0010,
+ 0x000e,
+ 0x000c,
+ 0x000a,
+ 0x0008,
+ 0x0006,
+ 0x0004,
+ 0x0002
+};
+
+const u8 gUnknown_Debug_083F87D0[] = _("{COLOR RED}L{ESCAPE}ロ");
+const u8 gUnknown_Debug_083F87D8[] = _("{COLOR RED}{ESCAPE}ワR");
+const u8 gUnknown_Debug_083F87E0[] = _("かいはつナンバー");
+const u8 gUnknown_Debug_083F87E9[] = _("グラフィックナンバー");
+const u8 gUnknown_Debug_083F87F4[] = _("{COLOR RED}A:カラーせってい");
+const u8 gUnknown_Debug_083F8801[] = _("{COLOR RED}A:けってい B:キャンセル");
+const u8 gUnknown_Debug_083F8813[] = _(":");
+void debug_80C6B00(u8 taskId)
+{
+ u8 sp00[] = {0x00, 0x10, 0x20, 0x20, 0x20, 0x21, 0x20, 0x20, 0x20, 0x21, 0x20, 0x20, 0x20, 0x21, 0x20, 0x20, 0x20, 0x21};
+ u8 i;
+
+ Menu_DrawStdWindowFrame(10, 0, 15, 7);
+ Menu_DrawStdWindowFrame(0, 0, 9, 9);
+ Menu_DrawStdWindowFrame(0, 10, 9, 19);
+ Menu_DrawStdWindowFrame(16, 0, 29, 7);
+ Menu_PrintText(gUnknown_Debug_083F87D0, 17, 1);
+ Menu_PrintText(gUnknown_Debug_083F87D8, 27, 1);
+ Menu_PrintText(gUnknown_Debug_083F87E0, 17, 5);
+
+ Menu_DrawStdWindowFrame(10, 8, 29, 12);
+ for (i = 0; i < 15; i++)
+ ((u16 *)(VRAM + 0xFA56))[i] = 0xA311 + i;
+ for (i = 0; i < 15; i++)
+ ((u16 *)(VRAM + 0xF256))[i] = 0x8301 + i;
+
+ Menu_PrintText(gUnknown_Debug_083F87F4, 20, 10);
+ Menu_DrawStdWindowFrame(10, 13, 29, 19);
+
+ sp00[0] = 0x23;
+ for (i = 0; i < 18; i++)
+ ((u16 *)(VRAM + 0xF396))[i] = 0x9300 + sp00[i];
+ sp00[0] = 0x24;
+ for (i = 0; i < 18; i++)
+ ((u16 *)(VRAM + 0xF3D6))[i] = 0x9300 + sp00[i];
+ sp00[0] = 0x25;
+ for (i = 0; i < 18; i++)
+ ((u16 *)(VRAM + 0xF416))[i] = 0x9300 + sp00[i];
+
+ Menu_PrintText(gUnknown_Debug_083F8801, 15, 17);
+
+ REG_WIN0H = 0x51EF;
+ REG_WIN0V = 0x699F;
+
+ gTasks[taskId].func = debug_80C6CB8;
+}
+
+void debug_80C6CB8(u8 taskId)
+{
+ DecompressPicFromTable_2(gMonFrontPicTable + gUnknown_Debug_2038A20->unk0, gMonFrontPicCoords[gUnknown_Debug_2038A20->unk0].coords, gMonFrontPicCoords[gUnknown_Debug_2038A20->unk0].y_offset, gUnknown_081FAF4C[0], gUnknown_081FAF4C[1], gUnknown_Debug_2038A20->unk0);
+ LoadCompressedObjectPalette(gMonPaletteTable + gUnknown_Debug_2038A20->unk0);
+ GetMonSpriteTemplate_803C56C(gUnknown_Debug_2038A20->unk0, 1);
+ gUnknown_Debug_2038A20->unk2 = CreateSprite(&gUnknown_02024E8C, 0x28, 0x28, 0);
+ gSprites[gUnknown_Debug_2038A20->unk2].callback = debug_69;
+ gSprites[gUnknown_Debug_2038A20->unk2].oam.priority = 0;
+
+ DecompressPicFromTable_2(gMonBackPicTable + gUnknown_Debug_2038A20->unk0, gMonBackPicCoords[gUnknown_Debug_2038A20->unk0].coords, gMonBackPicCoords[gUnknown_Debug_2038A20->unk0].y_offset, gUnknown_081FAF4C[0], gUnknown_081FAF4C[2], gUnknown_Debug_2038A20->unk0);
+ LoadCompressedObjectPalette(gMonPaletteTable + gUnknown_Debug_2038A20->unk0);
+ GetMonSpriteTemplate_803C56C(gUnknown_Debug_2038A20->unk0, 2);
+ gUnknown_Debug_2038A20->unk3 = CreateSprite(&gUnknown_02024E8C, 0x28, 0x78, 0);
+ gSprites[gUnknown_Debug_2038A20->unk3].callback = debug_69;
+ gSprites[gUnknown_Debug_2038A20->unk3].oam.priority = 0;
+
+ gUnknown_Debug_2038A20->unk4 = CreateMonIcon(gUnknown_Debug_2038A20->unk0, sub_809D62C, 0x68, 0x2C, 0, 0);
+
+ sub_8091738(SpeciesToNationalPokedexNum(gUnknown_Debug_2038A20->unk0), 2, 0x3fc);
+
+ ((u16 *)(VRAM + 0xF858))[0] = 0xF3FC;
+ ((u16 *)(VRAM + 0xF858))[1] = 0xF3FD;
+ ((u16 *)(VRAM + 0xF858))[32] = 0xF3FE;
+ ((u16 *)(VRAM + 0xF858))[33] = 0xF3FF;
+
+ debug_80C3800(gUnknown_Debug_2038A20->unk0, 17, 3);
+ debug_80C376C(gUnknown_Debug_2038A20->unk0, 26, 5);
+
+ gUnknown_Debug_2038A20->unk6 = gSprites[gUnknown_Debug_2038A20->unk2].oam.paletteNum;
+ CpuCopy16(gPlttBufferUnfaded + gUnknown_Debug_2038A20->unk6 * 16 + 0x100, gPlttBufferUnfaded + 0x80, 0x20);
+ CpuCopy16(gPlttBufferUnfaded + gUnknown_Debug_2038A20->unk6 * 16 + 0x100, gPlttBufferFaded + 0x80, 0x20);
+
+ gTasks[taskId].func = debug_80C6EE8;
+
+ gUnknown_Debug_2038A20->unk9 = 0;
+ StopCryAndClearCrySongs();
+ PlayCry1(gUnknown_Debug_2038A20->unk0, 0);
+}
+
+void debug_80C6EE8(u8 taskId)
+{
+ u16 hue;
+ CpuCopy16(gPlttBufferUnfaded + 0x80, gUnknown_Debug_2038A20->unk10, 32);
+ hue = gPlttBufferUnfaded[gUnknown_Debug_2038A20->unk7 + 0x81];
+ gUnknown_Debug_2038A20->unkC.r = hue & 0x1f;
+ gUnknown_Debug_2038A20->unkC.g = (hue & 0x3e0) >> 5;
+ gUnknown_Debug_2038A20->unkC.b = (hue & 0x7c00) >> 10;
+ gUnknown_Debug_2038A20->unkC.unused_15 = 0;
+ debug_80C68CC(gUnknown_Debug_2038A20->unk7 + 1, 11, 10, 2);
+ Menu_PrintText(gUnknown_Debug_083F8813, 13, 10);
+ debug_80C68CC(hue, 14, 10, 4);
+ gTasks[taskId].func = debug_80C6FA8;
+}
+
+#ifdef NONMATCHING
+void debug_80C6FA8(u8 taskId)
+{
+ if (gMain.newKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
+ SetMainCallback2(debug_80C370C);
+ gTasks[taskId].func = debug_80C373C;
+ }
+ else if (gMain.newAndRepeatedKeys & R_BUTTON)
+ {
+ gUnknown_Debug_2038A20->unk0 = debug_80C3878(0, gUnknown_Debug_2038A20->unk0);
+ gTasks[taskId].func = debug_80C71FC;
+ }
+ else if (gMain.newAndRepeatedKeys & L_BUTTON)
+ {
+ gUnknown_Debug_2038A20->unk0 = debug_80C3878(1, gUnknown_Debug_2038A20->unk0);
+ gTasks[taskId].func = debug_80C71FC;
+ }
+ else if (gMain.newKeys & A_BUTTON)
+ {
+ gUnknown_Debug_2038A20->unk5 = 1;
+ REG_WIN0H = 0x51EF;
+ REG_WIN0V = 0x4167;
+ gTasks[taskId].func = debug_80C7294;
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_RIGHT && gUnknown_Debug_2038A20->unk7 < 14)
+ {
+ ((u16 *)PLTT)[0x81 + gUnknown_Debug_2038A20->unk7] = 0;
+ do; while(0);
+ gUnknown_Debug_2038A20->unk7++;
+ gTasks[taskId].func = debug_80C6EE8;
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_LEFT && gUnknown_Debug_2038A20->unk7 > 0)
+ {
+ ((u16 *)PLTT)[0x81 + gUnknown_Debug_2038A20->unk7] = 0;
+ do; while(0);
+ gUnknown_Debug_2038A20->unk7--;
+ gTasks[taskId].func = debug_80C6EE8;
+ }
+ else if (gMain.newKeys & START_BUTTON)
+ {
+ gUnknown_Debug_2038A20->unk9 ^= 1;
+ if (gUnknown_Debug_2038A20->unk9)
+ LoadCompressedPalette(GetMonSpritePalFromOtIdPersonality(gUnknown_Debug_2038A20->unk0, 0, 0), gUnknown_Debug_2038A20->unk6 * 16 + 0x100, 0x20);
+ else
+ LoadCompressedPalette(GetMonSpritePalFromOtIdPersonality(gUnknown_Debug_2038A20->unk0, 0, 9), gUnknown_Debug_2038A20->unk6 * 16 + 0x100, 0x20);
+ CpuCopy16(gPlttBufferUnfaded + gUnknown_Debug_2038A20->unk6 * 16 + 0x100, gPlttBufferUnfaded + 0x80, 32);
+ CpuCopy16(gPlttBufferUnfaded + gUnknown_Debug_2038A20->unk6 * 16 + 0x100, gPlttBufferFaded + 0x80, 32);
+ gTasks[taskId].func = debug_80C6EE8;
+ }
+ else
+ {
+ if (gMain.newKeys & SELECT_BUTTON)
+ {
+ StopCryAndClearCrySongs();
+ PlayCry1(gUnknown_Debug_2038A20->unk0, 0);
+ }
+ gUnknown_Debug_2038A20->unk8 += 4;
+ gUnknown_Debug_2038A20->unk8 &= 0x1f;
+ ((u16 *)PLTT)[0xa1 + gUnknown_Debug_2038A20->unk7] = gUnknown_Debug_083F8790[gUnknown_Debug_2038A20->unk8];
+ }
+}
+#else
+NAKED void debug_80C6FA8(u8 taskId)
+{
+ asm(".equiv PLTT, 0x05000000\n"
+ "\tpush\t{r4, r5, r6, lr}\n"
+ "\tadd\tsp, sp, #0xfffffffc\n"
+ "\tlsl\tr0, r0, #0x18\n"
+ "\tlsr\tr6, r0, #0x18\n"
+ "\tldr\tr1, ._674 @ gMain\n"
+ "\tldrh\tr2, [r1, #0x2e]\n"
+ "\tmov\tr0, #0x2\n"
+ "\tand\tr0, r0, r2\n"
+ "\tadd\tr4, r1, #0\n"
+ "\tcmp\tr0, #0\n"
+ "\tbeq\t._672\t@cond_branch\n"
+ "\tmov\tr0, #0x5\n"
+ "\tbl\tPlaySE\n"
+ "\tmov\tr0, #0x1\n"
+ "\tneg\tr0, r0\n"
+ "\tmov\tr1, #0x0\n"
+ "\tstr\tr1, [sp]\n"
+ "\tmov\tr2, #0x0\n"
+ "\tmov\tr3, #0x10\n"
+ "\tbl\tBeginNormalPaletteFade\n"
+ "\tldr\tr0, ._674 + 4 @ debug_80C370C\n"
+ "\tbl\tSetMainCallback2\n"
+ "\tldr\tr1, ._674 + 8 @ gTasks\n"
+ "\tlsl\tr0, r6, #0x2\n"
+ "\tadd\tr0, r0, r6\n"
+ "\tlsl\tr0, r0, #0x3\n"
+ "\tadd\tr0, r0, r1\n"
+ "\tldr\tr1, ._674 + 12 @ debug_80C373C\n"
+ "\tstr\tr1, [r0]\n"
+ "\tb\t._703\n"
+ "._675:\n"
+ "\t.align\t2, 0\n"
+ "._674:\n"
+ "\t.word\tgMain\n"
+ "\t.word\tdebug_80C370C+1\n"
+ "\t.word\tgTasks\n"
+ "\t.word\tdebug_80C373C+1\n"
+ "._672:\n"
+ "\tldrh\tr1, [r4, #0x30]\n"
+ "\tmov\tr0, #0x80\n"
+ "\tlsl\tr0, r0, #0x1\n"
+ "\tand\tr0, r0, r1\n"
+ "\tcmp\tr0, #0\n"
+ "\tbeq\t._676\t@cond_branch\n"
+ "\tldr\tr4, ._678 @ gUnknown_Debug_2038A20\n"
+ "\tldr\tr0, [r4]\n"
+ "\tldrh\tr1, [r0]\n"
+ "\tmov\tr0, #0x0\n"
+ "\tb\t._677\n"
+ "._679:\n"
+ "\t.align\t2, 0\n"
+ "._678:\n"
+ "\t.word\tgUnknown_Debug_2038A20\n"
+ "._676:\n"
+ "\tmov\tr0, #0x80\n"
+ "\tlsl\tr0, r0, #0x2\n"
+ "\tand\tr0, r0, r1\n"
+ "\tcmp\tr0, #0\n"
+ "\tbeq\t._680\t@cond_branch\n"
+ "\tldr\tr4, ._682 @ gUnknown_Debug_2038A20\n"
+ "\tldr\tr0, [r4]\n"
+ "\tldrh\tr1, [r0]\n"
+ "\tmov\tr0, #0x1\n"
+ "._677:\n"
+ "\tbl\tdebug_80C3878\n"
+ "\tldr\tr1, [r4]\n"
+ "\tstrh\tr0, [r1]\n"
+ "\tldr\tr1, ._682 + 4 @ gTasks\n"
+ "\tlsl\tr0, r6, #0x2\n"
+ "\tadd\tr0, r0, r6\n"
+ "\tlsl\tr0, r0, #0x3\n"
+ "\tadd\tr0, r0, r1\n"
+ "\tldr\tr1, ._682 + 8 @ debug_80C71FC\n"
+ "\tstr\tr1, [r0]\n"
+ "\tb\t._703\n"
+ "._683:\n"
+ "\t.align\t2, 0\n"
+ "._682:\n"
+ "\t.word\tgUnknown_Debug_2038A20\n"
+ "\t.word\tgTasks\n"
+ "\t.word\tdebug_80C71FC+1\n"
+ "._680:\n"
+ "\tmov\tr3, #0x1\n"
+ "\tand\tr3, r3, r2\n"
+ "\tcmp\tr3, #0\n"
+ "\tbeq\t._684\t@cond_branch\n"
+ "\tldr\tr0, ._686 @ gUnknown_Debug_2038A20\n"
+ "\tldr\tr1, [r0]\n"
+ "\tmov\tr0, #0x1\n"
+ "\tstrb\tr0, [r1, #0x5]\n"
+ "\tldr\tr1, ._686 + 4 @ 0x4000040\n"
+ "\tldr\tr2, ._686 + 8 @ 0x51ef\n"
+ "\tadd\tr0, r2, #0\n"
+ "\tstrh\tr0, [r1]\n"
+ "\tadd\tr1, r1, #0x4\n"
+ "\tldr\tr2, ._686 + 12 @ 0x4167\n"
+ "\tadd\tr0, r2, #0\n"
+ "\tstrh\tr0, [r1]\n"
+ "\tldr\tr1, ._686 + 16 @ gTasks\n"
+ "\tlsl\tr0, r6, #0x2\n"
+ "\tadd\tr0, r0, r6\n"
+ "\tlsl\tr0, r0, #0x3\n"
+ "\tadd\tr0, r0, r1\n"
+ "\tldr\tr1, ._686 + 20 @ debug_80C7294\n"
+ "\tstr\tr1, [r0]\n"
+ "\tb\t._703\n"
+ "._687:\n"
+ "\t.align\t2, 0\n"
+ "._686:\n"
+ "\t.word\tgUnknown_Debug_2038A20\n"
+ "\t.word\t0x4000040\n"
+ "\t.word\t0x51ef\n"
+ "\t.word\t0x4167\n"
+ "\t.word\tgTasks\n"
+ "\t.word\tdebug_80C7294+1\n"
+ "._684:\n"
+ "\tmov\tr0, #0x10\n"
+ "\tand\tr0, r0, r1\n"
+ "\tcmp\tr0, #0\n"
+ "\tbeq\t._689\t@cond_branch\n"
+ "\tldr\tr1, ._691 @ gUnknown_Debug_2038A20\n"
+ "\tldr\tr2, [r1]\n"
+ "\tldrb\tr0, [r2, #0x7]\n"
+ "\tcmp\tr0, #0xd\n"
+ "\tbhi\t._689\t@cond_branch\n"
+ "\tlsl\tr0, r0, #0x1\n"
+ "\tldr\tr2, ._691 + 4 @ PLTT + 0x102\n"
+ "\tadd\tr0, r0, r2\n"
+ "\tstrh\tr3, [r0]\n"
+ "\tldr\tr1, [r1]\n"
+ "\tldrb\tr0, [r1, #0x7]\n"
+ "\tadd\tr0, r0, #0x1\n"
+ "\tstrb\tr0, [r1, #0x7]\n"
+ "\tb\t._695\n"
+ "._692:\n"
+ "\t.align\t2, 0\n"
+ "._691:\n"
+ "\t.word\tgUnknown_Debug_2038A20\n"
+ "\t.word\tPLTT + 0x102\n"
+ "._689:\n"
+ "\tldrh\tr1, [r4, #0x30]\n"
+ "\tmov\tr0, #0x20\n"
+ "\tand\tr0, r0, r1\n"
+ "\tcmp\tr0, #0\n"
+ "\tbeq\t._694\t@cond_branch\n"
+ "\tldr\tr2, ._696 @ gUnknown_Debug_2038A20\n"
+ "\tldr\tr1, [r2]\n"
+ "\tldrb\tr0, [r1, #0x7]\n"
+ "\tcmp\tr0, #0\n"
+ "\tbeq\t._694\t@cond_branch\n"
+ "\tlsl\tr0, r0, #0x1\n"
+ "\tldr\tr1, ._696 + 4 @ PLTT + 0x102\n"
+ "\tadd\tr0, r0, r1\n"
+ "\tmov\tr1, #0x0\n"
+ "\tstrh\tr1, [r0]\n"
+ "\tldr\tr1, [r2]\n"
+ "\tldrb\tr0, [r1, #0x7]\n"
+ "\tsub\tr0, r0, #0x1\n"
+ "\tstrb\tr0, [r1, #0x7]\n"
+ "\tb\t._695\n"
+ "._697:\n"
+ "\t.align\t2, 0\n"
+ "._696:\n"
+ "\t.word\tgUnknown_Debug_2038A20\n"
+ "\t.word\tPLTT + 0x102\n"
+ "._694:\n"
+ "\tldrh\tr1, [r4, #0x2e]\n"
+ "\tmov\tr0, #0x8\n"
+ "\tand\tr0, r0, r1\n"
+ "\tcmp\tr0, #0\n"
+ "\tbeq\t._698\t@cond_branch\n"
+ "\tldr\tr4, ._701 @ gUnknown_Debug_2038A20\n"
+ "\tldr\tr2, [r4]\n"
+ "\tldrb\tr0, [r2, #0x9]\n"
+ "\tmov\tr1, #0x1\n"
+ "\teor\tr0, r0, r1\n"
+ "\tstrb\tr0, [r2, #0x9]\n"
+ "\tldr\tr1, [r4]\n"
+ "\tldrb\tr0, [r1, #0x9]\n"
+ "\tcmp\tr0, #0\n"
+ "\tbeq\t._699\t@cond_branch\n"
+ "\tldrh\tr0, [r1]\n"
+ "\tmov\tr1, #0x0\n"
+ "\tmov\tr2, #0x0\n"
+ "\tbl\tGetMonSpritePalFromOtIdPersonality\n"
+ "\tldr\tr1, [r4]\n"
+ "\tldrb\tr1, [r1, #0x6]\n"
+ "\tlsl\tr1, r1, #0x14\n"
+ "\tmov\tr2, #0x80\n"
+ "\tlsl\tr2, r2, #0x11\n"
+ "\tadd\tr1, r1, r2\n"
+ "\tlsr\tr1, r1, #0x10\n"
+ "\tmov\tr2, #0x20\n"
+ "\tbl\tLoadCompressedPalette\n"
+ "\tb\t._700\n"
+ "._702:\n"
+ "\t.align\t2, 0\n"
+ "._701:\n"
+ "\t.word\tgUnknown_Debug_2038A20\n"
+ "._699:\n"
+ "\tldrh\tr0, [r1]\n"
+ "\tmov\tr1, #0x0\n"
+ "\tmov\tr2, #0x9\n"
+ "\tbl\tGetMonSpritePalFromOtIdPersonality\n"
+ "\tldr\tr1, [r4]\n"
+ "\tldrb\tr1, [r1, #0x6]\n"
+ "\tlsl\tr1, r1, #0x14\n"
+ "\tmov\tr2, #0x80\n"
+ "\tlsl\tr2, r2, #0x11\n"
+ "\tadd\tr1, r1, r2\n"
+ "\tlsr\tr1, r1, #0x10\n"
+ "\tmov\tr2, #0x20\n"
+ "\tbl\tLoadCompressedPalette\n"
+ "._700:\n"
+ "\tldr\tr5, ._704 @ gUnknown_Debug_2038A20\n"
+ "\tldr\tr0, [r5]\n"
+ "\tldrb\tr0, [r0, #0x6]\n"
+ "\tlsl\tr0, r0, #0x5\n"
+ "\tldr\tr4, ._704 + 4 @ gPlttBufferUnfaded\n"
+ "\tadd\tr0, r0, r4\n"
+ "\tldr\tr2, ._704 + 8 @ 0xffffff00\n"
+ "\tadd\tr1, r4, r2\n"
+ "\tmov\tr2, #0x10\n"
+ "\tbl\tCpuSet\n"
+ "\tldr\tr0, [r5]\n"
+ "\tldrb\tr0, [r0, #0x6]\n"
+ "\tlsl\tr0, r0, #0x5\n"
+ "\tadd\tr0, r0, r4\n"
+ "\tldr\tr1, ._704 + 12 @ gPlttBufferFaded\n"
+ "\tmov\tr2, #0x10\n"
+ "\tbl\tCpuSet\n"
+ "._695:\n"
+ "\tldr\tr1, ._704 + 16 @ gTasks\n"
+ "\tlsl\tr0, r6, #0x2\n"
+ "\tadd\tr0, r0, r6\n"
+ "\tlsl\tr0, r0, #0x3\n"
+ "\tadd\tr0, r0, r1\n"
+ "\tldr\tr1, ._704 + 20 @ debug_80C6EE8\n"
+ "\tstr\tr1, [r0]\n"
+ "\tb\t._703\n"
+ "._705:\n"
+ "\t.align\t2, 0\n"
+ "._704:\n"
+ "\t.word\tgUnknown_Debug_2038A20\n"
+ "\t.word\tgPlttBufferUnfaded+0x200\n"
+ "\t.word\t0xffffff00\n"
+ "\t.word\tgPlttBufferFaded+0x100\n"
+ "\t.word\tgTasks\n"
+ "\t.word\tdebug_80C6EE8+1\n"
+ "._698:\n"
+ "\tmov\tr0, #0x4\n"
+ "\tand\tr0, r0, r1\n"
+ "\tcmp\tr0, #0\n"
+ "\tbeq\t._706\t@cond_branch\n"
+ "\tbl\tStopCryAndClearCrySongs\n"
+ "\tldr\tr0, ._707 @ gUnknown_Debug_2038A20\n"
+ "\tldr\tr0, [r0]\n"
+ "\tldrh\tr0, [r0]\n"
+ "\tmov\tr1, #0x0\n"
+ "\tbl\tPlayCry1\n"
+ "._706:\n"
+ "\tldr\tr2, ._707 @ gUnknown_Debug_2038A20\n"
+ "\tldr\tr1, [r2]\n"
+ "\tldrb\tr0, [r1, #0x8]\n"
+ "\tadd\tr0, r0, #0x4\n"
+ "\tstrb\tr0, [r1, #0x8]\n"
+ "\tldr\tr3, [r2]\n"
+ "\tldrb\tr1, [r3, #0x8]\n"
+ "\tmov\tr0, #0x1f\n"
+ "\tand\tr0, r0, r1\n"
+ "\tstrb\tr0, [r3, #0x8]\n"
+ "\tldr\tr0, [r2]\n"
+ "\tldrb\tr1, [r0, #0x7]\n"
+ "\tlsl\tr1, r1, #0x1\n"
+ "\tldr\tr2, ._707 + 4 @ PLTT + 0x142\n"
+ "\tadd\tr1, r1, r2\n"
+ "\tldr\tr2, ._707 + 8 @ gUnknown_Debug_083F8790\n"
+ "\tldrb\tr0, [r0, #0x8]\n"
+ "\tlsl\tr0, r0, #0x1\n"
+ "\tadd\tr0, r0, r2\n"
+ "\tldrh\tr0, [r0]\n"
+ "\tstrh\tr0, [r1]\n"
+ "._703:\n"
+ "\tadd\tsp, sp, #0x4\n"
+ "\tpop\t{r4, r5, r6}\n"
+ "\tpop\t{r0}\n"
+ "\tbx\tr0\n"
+ "._708:\n"
+ "\t.align\t2, 0\n"
+ "._707:\n"
+ "\t.word\tgUnknown_Debug_2038A20\n"
+ "\t.word\tPLTT + 0x142\n"
+ "\t.word\tgUnknown_Debug_083F8790");
+}
+#endif // NONMATCHING
+
+void debug_80C71FC(u8 taskId)
+{
+ FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(gSprites[gUnknown_Debug_2038A20->unk2].oam.paletteNum));
+ DestroySprite(gSprites + gUnknown_Debug_2038A20->unk2);
+ FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(gSprites[gUnknown_Debug_2038A20->unk3].oam.paletteNum));
+ DestroySprite(gSprites + gUnknown_Debug_2038A20->unk3);
+ sub_809D510(gSprites + gUnknown_Debug_2038A20->unk4);
+ gTasks[taskId].func = debug_80C6CB8;
+}
+
+void debug_80C7294(u8 taskId)
+{
+ if (gMain.newKeys & A_BUTTON)
+ {
+ gUnknown_Debug_2038A20->unk5 = 0;
+ REG_WIN0H = 0x51EF;
+ REG_WIN0V = 0x699F;
+ gTasks[taskId].func = debug_80C6EE8;
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ gUnknown_Debug_2038A20->unk5 = 0;
+ REG_WIN0H = 0x51EF;
+ REG_WIN0V = 0x699F;
+ CpuCopy16(gUnknown_Debug_2038A20->unk10, gPlttBufferUnfaded + 0x80, 32);
+ CpuCopy16(gUnknown_Debug_2038A20->unk10, gPlttBufferFaded + 0x80, 32);
+ CpuCopy16(gUnknown_Debug_2038A20->unk10, gPlttBufferUnfaded + 0x100 + gUnknown_Debug_2038A20->unk6 * 16, 32);
+ CpuCopy16(gUnknown_Debug_2038A20->unk10, gPlttBufferFaded + 0x100 + gUnknown_Debug_2038A20->unk6 * 16, 32);
+ gTasks[taskId].func = debug_80C6EE8;
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_DOWN && gUnknown_Debug_2038A20->unkA < 2)
+ {
+ gUnknown_Debug_2038A20->unkA++;
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_UP && gUnknown_Debug_2038A20->unkA > 0)
+ {
+ gUnknown_Debug_2038A20->unkA--;
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_RIGHT)
+ {
+ switch (gUnknown_Debug_2038A20->unkA)
+ {
+ case 0:
+ if (gUnknown_Debug_2038A20->unkC.r < 31)
+ gUnknown_Debug_2038A20->unkC.r++;
+ gTasks[taskId].func = debug_80C74E4;
+ break;
+ case 1:
+ if (gUnknown_Debug_2038A20->unkC.g < 31)
+ gUnknown_Debug_2038A20->unkC.g++;
+ gTasks[taskId].func = debug_80C74E4;
+ break;
+ case 2:
+ if (gUnknown_Debug_2038A20->unkC.b < 31)
+ gUnknown_Debug_2038A20->unkC.b++;
+ gTasks[taskId].func = debug_80C74E4;
+ break;
+ }
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_LEFT)
+ {
+ switch (gUnknown_Debug_2038A20->unkA)
+ {
+ case 0:
+ if (gUnknown_Debug_2038A20->unkC.r > 0)
+ gUnknown_Debug_2038A20->unkC.r--;
+ gTasks[taskId].func = debug_80C74E4;
+ break;
+ case 1:
+ if (gUnknown_Debug_2038A20->unkC.g > 0)
+ gUnknown_Debug_2038A20->unkC.g--;
+ gTasks[taskId].func = debug_80C74E4;
+ break;
+ case 2:
+ if (gUnknown_Debug_2038A20->unkC.b > 0)
+ gUnknown_Debug_2038A20->unkC.b--;
+ gTasks[taskId].func = debug_80C74E4;
+ break;
+ }
+ }
+}
+
+void debug_80C74E4(u8 taskId)
+{
+ u16 pal = (gUnknown_Debug_2038A20->unkC.r & 0x001f) + ((gUnknown_Debug_2038A20->unkC.g << 5) & 0x03e0) + ((gUnknown_Debug_2038A20->unkC.b << 10) & 0x7c00);
+ gPlttBufferUnfaded[gUnknown_Debug_2038A20->unk7 + 0x81] = pal;
+ gPlttBufferFaded[gUnknown_Debug_2038A20->unk7 + 0x81] = pal;
+ gPlttBufferUnfaded[0x101 + gUnknown_Debug_2038A20->unk6 * 16 + gUnknown_Debug_2038A20->unk7] = pal;
+ gPlttBufferFaded[0x101 + gUnknown_Debug_2038A20->unk6 * 16 + gUnknown_Debug_2038A20->unk7] = pal;
+ debug_80C68CC(pal, 14, 10, 4);
+ gTasks[taskId].func = debug_80C7294;
+}
+
+void debug_80C7584(struct Sprite *sprite)
+{
+ if (!gUnknown_Debug_2038A20->unk5)
+ sprite->invisible = TRUE;
+ else
+ {
+ u8 shade;
+ switch (sprite->data[0])
+ {
+ default:
+ case 0:
+ shade = gUnknown_Debug_2038A20->unkC.r;
+ break;
+ case 1:
+ shade = gUnknown_Debug_2038A20->unkC.g;
+ break;
+ case 2:
+ shade = gUnknown_Debug_2038A20->unkC.b;
+ break;
+ }
+ sprite->pos2.x = 4 * shade;
+ sprite->pos2.y = 8 * sprite->data[0];
+ sprite->data[1]++;
+ if (sprite->data[0] == gUnknown_Debug_2038A20->unkA && !(sprite->data[1] & 0x08))
+ sprite->invisible = TRUE;
+ else
+ sprite->invisible = FALSE;
+ }
+}
+
+void InitSeeTrainers(void)
+{
+ u8 spriteId;
+ u16 imeBak;
+ debug_80C35DC();
+ DmaCopy16Defvars(3, byte_83F88EC, VRAM + 0xe000, 0x800);
+ LoadPalette(word_83F888C, 0x80, 0x60);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
+ REG_WIN0H = 0;
+ REG_WIN0V = 0;
+ REG_WIN1H = 0;
+ REG_WIN1V = 0;
+ REG_WININ = 0x3F;
+ REG_WINOUT = 0x1F;
+ REG_BLDCNT = 0xF1;
+ REG_BLDALPHA = 0;
+ REG_BLDY = 7;
+ imeBak = REG_IME;
+ REG_IME = 0;
+ REG_IE |= INTR_FLAG_VBLANK;
+ REG_IME = imeBak;
+ SetVBlankCallback(debug_80C3758);
+ SetMainCallback2(debug_80C370C);
+ REG_BG0CNT = 0x1F0B;
+ REG_BG1CNT = 0x1E0A;
+ REG_DISPCNT = 0x3340;
+ CreateTask(debug_80C777C, 0);
+ gUnknown_Debug_2038A20 = &eWatanabe18000_2;
+ gUnknown_Debug_2038A20->unk0 = 0;
+ gUnknown_Debug_2038A20->unk2 = 0;
+ gUnknown_Debug_2038A20->unk3 = 0;
+ gUnknown_Debug_2038A20->unk5 = 0;
+ gUnknown_Debug_2038A20->unk7 = 0;
+ gUnknown_Debug_2038A20->unkA = 0;
+ gUnknown_Debug_2038A20->unk8 = 0;
+ spriteId = CreateSprite(&gSpriteTemplate_83F8874, 0x6c, 0x74, 0);
+ gSprites[spriteId].data[0] = 0;
+ StartSpriteAnim(gSprites + spriteId, 0);
+ spriteId = CreateSprite(&gSpriteTemplate_83F8874, 0x6c, 0x74, 0);
+ gSprites[spriteId].data[0] = 1;
+ StartSpriteAnim(gSprites + spriteId, 1);
+ spriteId = CreateSprite(&gSpriteTemplate_83F8874, 0x6c, 0x74, 0);
+ gSprites[spriteId].data[0] = 2;
+ StartSpriteAnim(gSprites + spriteId, 2);
+}
+
+void debug_80C777C(u8 taskId)
+{
+ u8 sp00[] = {0x00, 0x10, 0x20, 0x20, 0x20, 0x21, 0x20, 0x20, 0x20, 0x21, 0x20, 0x20, 0x20, 0x21, 0x20, 0x20, 0x20, 0x21};
+ u8 i;
+
+ Menu_DrawStdWindowFrame(9, 0, 14, 7);
+ Menu_DrawStdWindowFrame(0, 0, 9, 9);
+ Menu_DrawStdWindowFrame(0, 10, 9, 19);
+ Menu_DrawStdWindowFrame(14, 0, 29, 7);
+ Menu_PrintText(gUnknown_Debug_083F87D0, 15, 1);
+ Menu_PrintText(gUnknown_Debug_083F87D8, 25, 1);
+ Menu_PrintText(gUnknown_Debug_083F87E0, 15, 5);
+
+ Menu_DrawStdWindowFrame(10, 8, 29, 12);
+ for (i = 0; i < 15; i++)
+ ((u16 *)(VRAM + 0xFA56))[i] = 0xA311 + i;
+ for (i = 0; i < 15; i++)
+ ((u16 *)(VRAM + 0xF256))[i] = 0x8301 + i;
+
+ Menu_PrintText(gUnknown_Debug_083F87F4, 20, 10);
+ Menu_DrawStdWindowFrame(10, 13, 29, 19);
+
+ sp00[0] = 0x23;
+ for (i = 0; i < 18; i++)
+ ((u16 *)(VRAM + 0xF396))[i] = 0x9300 + sp00[i];
+ sp00[0] = 0x24;
+ for (i = 0; i < 18; i++)
+ ((u16 *)(VRAM + 0xF3D6))[i] = 0x9300 + sp00[i];
+ sp00[0] = 0x25;
+ for (i = 0; i < 18; i++)
+ ((u16 *)(VRAM + 0xF416))[i] = 0x9300 + sp00[i];
+
+ Menu_PrintText(gUnknown_Debug_083F8801, 15, 17);
+
+ REG_WIN0H = 0x51EF;
+ REG_WIN0V = 0x699F;
+
+ gTasks[taskId].func = debug_80C7934;
+}
+
+void debug_80C7934(u8 taskId)
+{
+ DecompressPicFromTable_2(gTrainerFrontPicTable + gUnknown_Debug_2038A20->unk0, gTrainerFrontPicCoords[gUnknown_Debug_2038A20->unk0].coords, gTrainerFrontPicCoords[gUnknown_Debug_2038A20->unk0].y_offset, gUnknown_081FAF4C[0], gUnknown_081FAF4C[1], gUnknown_Debug_2038A20->unk0);
+ LoadCompressedObjectPalette(gTrainerFrontPicPaletteTable + gUnknown_Debug_2038A20->unk0);
+ GetMonSpriteTemplate_803C5A0(gUnknown_Debug_2038A20->unk0, 1);
+ gUnknown_Debug_2038A20->unk2 = CreateSprite(&gUnknown_02024E8C, 0x28, 0x28, 0);
+ gSprites[gUnknown_Debug_2038A20->unk2].callback = debug_69;
+ gSprites[gUnknown_Debug_2038A20->unk2].oam.priority = 0;
+
+ debug_80C376C(gUnknown_Debug_2038A20->unk0, 26, 5);
+
+ gUnknown_Debug_2038A20->unk6 = gSprites[gUnknown_Debug_2038A20->unk2].oam.paletteNum;
+ CpuCopy16(gPlttBufferUnfaded + gUnknown_Debug_2038A20->unk6 * 16 + 0x100, gPlttBufferUnfaded + 0x80, 0x20);
+ CpuCopy16(gPlttBufferUnfaded + gUnknown_Debug_2038A20->unk6 * 16 + 0x100, gPlttBufferFaded + 0x80, 0x20);
+
+ gTasks[taskId].func = debug_80C7A54;
+
+ gUnknown_Debug_2038A20->unk9 = 0;
+}
+
+void debug_80C7A54(u8 taskId)
+{
+ u16 hue;
+ CpuCopy16(gPlttBufferUnfaded + 0x80, gUnknown_Debug_2038A20->unk10, 32);
+ hue = gPlttBufferUnfaded[gUnknown_Debug_2038A20->unk7 + 0x81];
+ gUnknown_Debug_2038A20->unkC.r = hue & 0x1f;
+ gUnknown_Debug_2038A20->unkC.g = (hue & 0x3e0) >> 5;
+ gUnknown_Debug_2038A20->unkC.b = (hue & 0x7c00) >> 10;
+ gUnknown_Debug_2038A20->unkC.unused_15 = 0;
+ debug_80C68CC(gUnknown_Debug_2038A20->unk7 + 1, 11, 10, 2);
+ Menu_PrintText(gUnknown_Debug_083F8813, 13, 10);
+ debug_80C68CC(hue, 14, 10, 4);
+ gTasks[taskId].func = debug_80C7B14;
+}
+
+#ifdef NONMATCHING
+void debug_80C7B14(u8 taskId)
+{
+ if (gMain.newKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
+ SetMainCallback2(debug_80C370C);
+ gTasks[taskId].func = debug_80C373C;
+ }
+ else if (gMain.newAndRepeatedKeys & R_BUTTON)
+ {
+ gUnknown_Debug_2038A20->unk0 = debug_80C38B4(0, gUnknown_Debug_2038A20->unk0);
+ gTasks[taskId].func = debug_80C7D44;
+ }
+ else if (gMain.newAndRepeatedKeys & L_BUTTON)
+ {
+ gUnknown_Debug_2038A20->unk0 = debug_80C38B4(1, gUnknown_Debug_2038A20->unk0);
+ gTasks[taskId].func = debug_80C7D44;
+ }
+ else if (gMain.newKeys & A_BUTTON)
+ {
+ gUnknown_Debug_2038A20->unk5 = 1;
+ REG_WIN0H = 0x51EF;
+ REG_WIN0V = 0x4167;
+ gTasks[taskId].func = debug_80C7DDC;
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_RIGHT && gUnknown_Debug_2038A20->unk7 < 14)
+ {
+ ((u16 *)PLTT)[0x81 + gUnknown_Debug_2038A20->unk7] = 0;
+ do; while (0); // this matches the asm here...
+ gUnknown_Debug_2038A20->unk7++;
+ gTasks[taskId].func = debug_80C7A54;
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_LEFT && gUnknown_Debug_2038A20->unk7 > 0)
+ {
+ ((u16 *)PLTT)[0x81 + gUnknown_Debug_2038A20->unk7] = 0;
+ do; while (0); // ... but not here
+ gUnknown_Debug_2038A20->unk7--;
+ gTasks[taskId].func = debug_80C7A54;
+ }
+ else if (gMain.newKeys & START_BUTTON)
+ {
+ gUnknown_Debug_2038A20->unk9 ^= 1;
+ if (gUnknown_Debug_2038A20->unk9)
+ {
+ LoadCompressedPalette(GetMonSpritePalFromOtIdPersonality(gUnknown_Debug_2038A20->unk0, 0, 0), gUnknown_Debug_2038A20->unk6 * 16 + 0x100, 0x20);
+ }
+ else
+ {
+ LoadCompressedPalette(GetMonSpritePalFromOtIdPersonality(gUnknown_Debug_2038A20->unk0, 0, 9), gUnknown_Debug_2038A20->unk6 * 16 + 0x100, 0x20);
+ }
+ CpuCopy16(gPlttBufferUnfaded + gUnknown_Debug_2038A20->unk6 * 16 + 0x100, gPlttBufferUnfaded + 0x80, 32);
+ CpuCopy16(gPlttBufferUnfaded + gUnknown_Debug_2038A20->unk6 * 16 + 0x100, gPlttBufferFaded + 0x80, 32);
+ gTasks[taskId].func = debug_80C7A54;
+ }
+ else
+ {
+ gUnknown_Debug_2038A20->unk8 += 4;
+ gUnknown_Debug_2038A20->unk8 &= 0x1f;
+ ((u16 *)PLTT)[0xa1 + gUnknown_Debug_2038A20->unk7] = gUnknown_Debug_083F8790[gUnknown_Debug_2038A20->unk8];
+ }
+}
+#else
+NAKED void debug_80C7B14(u8 taskId)
+{
+ asm("\tpush\t{r4, r5, r6, lr}\n"
+ "\tadd\tsp, sp, #0xfffffffc\n"
+ "\tlsl\tr0, r0, #0x18\n"
+ "\tlsr\tr6, r0, #0x18\n"
+ "\tldr\tr1, ._792 @ gMain\n"
+ "\tldrh\tr3, [r1, #0x2e]\n"
+ "\tmov\tr0, #0x2\n"
+ "\tand\tr0, r0, r3\n"
+ "\tadd\tr4, r1, #0\n"
+ "\tcmp\tr0, #0\n"
+ "\tbeq\t._790\t@cond_branch\n"
+ "\tmov\tr0, #0x5\n"
+ "\tbl\tPlaySE\n"
+ "\tmov\tr0, #0x1\n"
+ "\tneg\tr0, r0\n"
+ "\tmov\tr1, #0x0\n"
+ "\tstr\tr1, [sp]\n"
+ "\tmov\tr2, #0x0\n"
+ "\tmov\tr3, #0x10\n"
+ "\tbl\tBeginNormalPaletteFade\n"
+ "\tldr\tr0, ._792 + 4 @ debug_80C370C\n"
+ "\tbl\tSetMainCallback2\n"
+ "\tldr\tr1, ._792 + 8 @ gTasks\n"
+ "\tlsl\tr0, r6, #0x2\n"
+ "\tadd\tr0, r0, r6\n"
+ "\tlsl\tr0, r0, #0x3\n"
+ "\tadd\tr0, r0, r1\n"
+ "\tldr\tr1, ._792 + 12 @ debug_80C373C\n"
+ "\tstr\tr1, [r0]\n"
+ "\tb\t._821\n"
+ "._793:\n"
+ "\t.align\t2, 0\n"
+ "._792:\n"
+ "\t.word\tgMain\n"
+ "\t.word\tdebug_80C370C+1\n"
+ "\t.word\tgTasks\n"
+ "\t.word\tdebug_80C373C+1\n"
+ "._790:\n"
+ "\tldrh\tr1, [r4, #0x30]\n"
+ "\tmov\tr0, #0x80\n"
+ "\tlsl\tr0, r0, #0x1\n"
+ "\tand\tr0, r0, r1\n"
+ "\tcmp\tr0, #0\n"
+ "\tbeq\t._794\t@cond_branch\n"
+ "\tldr\tr4, ._796 @ gUnknown_Debug_2038A20\n"
+ "\tldr\tr0, [r4]\n"
+ "\tldrh\tr1, [r0]\n"
+ "\tmov\tr0, #0x0\n"
+ "\tb\t._795\n"
+ "._797:\n"
+ "\t.align\t2, 0\n"
+ "._796:\n"
+ "\t.word\tgUnknown_Debug_2038A20\n"
+ "._794:\n"
+ "\tmov\tr0, #0x80\n"
+ "\tlsl\tr0, r0, #0x2\n"
+ "\tand\tr0, r0, r1\n"
+ "\tcmp\tr0, #0\n"
+ "\tbeq\t._798\t@cond_branch\n"
+ "\tldr\tr4, ._800 @ gUnknown_Debug_2038A20\n"
+ "\tldr\tr0, [r4]\n"
+ "\tldrh\tr1, [r0]\n"
+ "\tmov\tr0, #0x1\n"
+ "._795:\n"
+ "\tbl\tdebug_80C38B4\n"
+ "\tldr\tr1, [r4]\n"
+ "\tstrh\tr0, [r1]\n"
+ "\tldr\tr1, ._800 + 4 @ gTasks\n"
+ "\tlsl\tr0, r6, #0x2\n"
+ "\tadd\tr0, r0, r6\n"
+ "\tlsl\tr0, r0, #0x3\n"
+ "\tadd\tr0, r0, r1\n"
+ "\tldr\tr1, ._800 + 8 @ debug_80C7D44\n"
+ "\tstr\tr1, [r0]\n"
+ "\tb\t._821\n"
+ "._801:\n"
+ "\t.align\t2, 0\n"
+ "._800:\n"
+ "\t.word\tgUnknown_Debug_2038A20\n"
+ "\t.word\tgTasks\n"
+ "\t.word\tdebug_80C7D44+1\n"
+ "._798:\n"
+ "\tmov\tr2, #0x1\n"
+ "\tand\tr2, r2, r3\n"
+ "\tcmp\tr2, #0\n"
+ "\tbeq\t._802\t@cond_branch\n"
+ "\tldr\tr0, ._804 @ gUnknown_Debug_2038A20\n"
+ "\tldr\tr1, [r0]\n"
+ "\tmov\tr0, #0x1\n"
+ "\tstrb\tr0, [r1, #0x5]\n"
+ "\tldr\tr1, ._804 + 4 @ 0x4000040\n"
+ "\tldr\tr2, ._804 + 8 @ 0x51ef\n"
+ "\tadd\tr0, r2, #0\n"
+ "\tstrh\tr0, [r1]\n"
+ "\tadd\tr1, r1, #0x4\n"
+ "\tldr\tr2, ._804 + 12 @ 0x4167\n"
+ "\tadd\tr0, r2, #0\n"
+ "\tstrh\tr0, [r1]\n"
+ "\tldr\tr1, ._804 + 16 @ gTasks\n"
+ "\tlsl\tr0, r6, #0x2\n"
+ "\tadd\tr0, r0, r6\n"
+ "\tlsl\tr0, r0, #0x3\n"
+ "\tadd\tr0, r0, r1\n"
+ "\tldr\tr1, ._804 + 20 @ debug_80C7DDC\n"
+ "\tstr\tr1, [r0]\n"
+ "\tb\t._821\n"
+ "._805:\n"
+ "\t.align\t2, 0\n"
+ "._804:\n"
+ "\t.word\tgUnknown_Debug_2038A20\n"
+ "\t.word\t0x4000040\n"
+ "\t.word\t0x51ef\n"
+ "\t.word\t0x4167\n"
+ "\t.word\tgTasks\n"
+ "\t.word\tdebug_80C7DDC+1\n"
+ "._802:\n"
+ "\tmov\tr0, #0x10\n"
+ "\tand\tr0, r0, r1\n"
+ "\tldr\tr3, ._809 @ gUnknown_Debug_2038A20\n"
+ "\tcmp\tr0, #0\n"
+ "\tbeq\t._807\t@cond_branch\n"
+ "\tldr\tr1, [r3]\n"
+ "\tldrb\tr0, [r1, #0x7]\n"
+ "\tcmp\tr0, #0xd\n"
+ "\tbhi\t._807\t@cond_branch\n"
+ "\tlsl\tr0, r0, #0x1\n"
+ "\tldr\tr1, ._809 + 4 @ 0x5000102\n"
+ "\tadd\tr0, r0, r1\n"
+ "\tstrh\tr2, [r0]\n"
+ "\tldr\tr1, [r3]\n"
+ "\tldrb\tr0, [r1, #0x7]\n"
+ "\tadd\tr0, r0, #0x1\n"
+ "\tstrb\tr0, [r1, #0x7]\n"
+ "\tb\t._813\n"
+ "._810:\n"
+ "\t.align\t2, 0\n"
+ "._809:\n"
+ "\t.word\tgUnknown_Debug_2038A20\n"
+ "\t.word\t0x5000102\n"
+ "._807:\n"
+ "\tldrh\tr1, [r4, #0x30]\n"
+ "\tmov\tr0, #0x20\n"
+ "\tand\tr0, r0, r1\n"
+ "\tcmp\tr0, #0\n"
+ "\tbeq\t._812\t@cond_branch\n"
+ "\tldr\tr1, [r3]\n"
+ "\tldrb\tr0, [r1, #0x7]\n"
+ "\tcmp\tr0, #0\n"
+ "\tbeq\t._812\t@cond_branch\n"
+ "\tlsl\tr0, r0, #0x1\n"
+ "\tldr\tr2, ._814 @ 0x5000102\n"
+ "\tadd\tr0, r0, r2\n"
+ "\tmov\tr1, #0x0\n"
+ "\tstrh\tr1, [r0]\n"
+ "\tldr\tr1, [r3]\n"
+ "\tldrb\tr0, [r1, #0x7]\n"
+ "\tsub\tr0, r0, #0x1\n"
+ "\tstrb\tr0, [r1, #0x7]\n"
+ "\tb\t._813\n"
+ "._815:\n"
+ "\t.align\t2, 0\n"
+ "._814:\n"
+ "\t.word\t0x5000102\n"
+ "._812:\n"
+ "\tldrh\tr1, [r4, #0x2e]\n"
+ "\tmov\tr0, #0x8\n"
+ "\tand\tr0, r0, r1\n"
+ "\tcmp\tr0, #0\n"
+ "\tbeq\t._816\t@cond_branch\n"
+ "\tldr\tr4, ._819 @ gUnknown_Debug_2038A20\n"
+ "\tldr\tr2, [r4]\n"
+ "\tldrb\tr0, [r2, #0x9]\n"
+ "\tmov\tr1, #0x1\n"
+ "\teor\tr0, r0, r1\n"
+ "\tstrb\tr0, [r2, #0x9]\n"
+ "\tldr\tr1, [r4]\n"
+ "\tldrb\tr0, [r1, #0x9]\n"
+ "\tcmp\tr0, #0\n"
+ "\tbeq\t._817\t@cond_branch\n"
+ "\tldrh\tr0, [r1]\n"
+ "\tmov\tr1, #0x0\n"
+ "\tmov\tr2, #0x0\n"
+ "\tbl\tGetMonSpritePalFromOtIdPersonality\n"
+ "\tldr\tr1, [r4]\n"
+ "\tldrb\tr1, [r1, #0x6]\n"
+ "\tlsl\tr1, r1, #0x14\n"
+ "\tmov\tr2, #0x80\n"
+ "\tlsl\tr2, r2, #0x11\n"
+ "\tadd\tr1, r1, r2\n"
+ "\tlsr\tr1, r1, #0x10\n"
+ "\tmov\tr2, #0x20\n"
+ "\tbl\tLoadCompressedPalette\n"
+ "\tb\t._818\n"
+ "._820:\n"
+ "\t.align\t2, 0\n"
+ "._819:\n"
+ "\t.word\tgUnknown_Debug_2038A20\n"
+ "._817:\n"
+ "\tldrh\tr0, [r1]\n"
+ "\tmov\tr1, #0x0\n"
+ "\tmov\tr2, #0x9\n"
+ "\tbl\tGetMonSpritePalFromOtIdPersonality\n"
+ "\tldr\tr1, [r4]\n"
+ "\tldrb\tr1, [r1, #0x6]\n"
+ "\tlsl\tr1, r1, #0x14\n"
+ "\tmov\tr2, #0x80\n"
+ "\tlsl\tr2, r2, #0x11\n"
+ "\tadd\tr1, r1, r2\n"
+ "\tlsr\tr1, r1, #0x10\n"
+ "\tmov\tr2, #0x20\n"
+ "\tbl\tLoadCompressedPalette\n"
+ "._818:\n"
+ "\tldr\tr5, ._822 @ gUnknown_Debug_2038A20\n"
+ "\tldr\tr0, [r5]\n"
+ "\tldrb\tr0, [r0, #0x6]\n"
+ "\tlsl\tr0, r0, #0x5\n"
+ "\tldr\tr4, ._822 + 4 @ gPlttBufferUnfaded\n"
+ "\tadd\tr0, r0, r4\n"
+ "\tldr\tr2, ._822 + 8 @ 0xffffff00\n"
+ "\tadd\tr1, r4, r2\n"
+ "\tmov\tr2, #0x10\n"
+ "\tbl\tCpuSet\n"
+ "\tldr\tr0, [r5]\n"
+ "\tldrb\tr0, [r0, #0x6]\n"
+ "\tlsl\tr0, r0, #0x5\n"
+ "\tadd\tr0, r0, r4\n"
+ "\tldr\tr1, ._822 + 12 @ gPlttBufferFaded\n"
+ "\tmov\tr2, #0x10\n"
+ "\tbl\tCpuSet\n"
+ "._813:\n"
+ "\tldr\tr1, ._822 + 16 @ gTasks\n"
+ "\tlsl\tr0, r6, #0x2\n"
+ "\tadd\tr0, r0, r6\n"
+ "\tlsl\tr0, r0, #0x3\n"
+ "\tadd\tr0, r0, r1\n"
+ "\tldr\tr1, ._822 + 20 @ debug_80C7A54\n"
+ "\tstr\tr1, [r0]\n"
+ "\tb\t._821\n"
+ "._823:\n"
+ "\t.align\t2, 0\n"
+ "._822:\n"
+ "\t.word\tgUnknown_Debug_2038A20\n"
+ "\t.word\tgPlttBufferUnfaded+0x200\n"
+ "\t.word\t0xffffff00\n"
+ "\t.word\tgPlttBufferFaded+0x100\n"
+ "\t.word\tgTasks\n"
+ "\t.word\tdebug_80C7A54+1\n"
+ "._816:\n"
+ "\tldr\tr1, [r3]\n"
+ "\tldrb\tr0, [r1, #0x8]\n"
+ "\tadd\tr0, r0, #0x4\n"
+ "\tstrb\tr0, [r1, #0x8]\n"
+ "\tldr\tr2, [r3]\n"
+ "\tldrb\tr1, [r2, #0x8]\n"
+ "\tmov\tr0, #0x1f\n"
+ "\tand\tr0, r0, r1\n"
+ "\tstrb\tr0, [r2, #0x8]\n"
+ "\tldr\tr0, [r3]\n"
+ "\tldrb\tr1, [r0, #0x7]\n"
+ "\tlsl\tr1, r1, #0x1\n"
+ "\tldr\tr2, ._824 @ 0x5000142\n"
+ "\tadd\tr1, r1, r2\n"
+ "\tldr\tr2, ._824 + 4 @ gUnknown_Debug_083F8790\n"
+ "\tldrb\tr0, [r0, #0x8]\n"
+ "\tlsl\tr0, r0, #0x1\n"
+ "\tadd\tr0, r0, r2\n"
+ "\tldrh\tr0, [r0]\n"
+ "\tstrh\tr0, [r1]\n"
+ "._821:\n"
+ "\tadd\tsp, sp, #0x4\n"
+ "\tpop\t{r4, r5, r6}\n"
+ "\tpop\t{r0}\n"
+ "\tbx\tr0\n"
+ "._825:\n"
+ "\t.align\t2, 0\n"
+ "._824:\n"
+ "\t.word\t0x5000142\n"
+ "\t.word\tgUnknown_Debug_083F8790");
+}
+#endif // NONMATCHING
+
+void debug_80C7D44(u8 taskId)
+{
+ FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(gSprites[gUnknown_Debug_2038A20->unk2].oam.paletteNum));
+ DestroySprite(gSprites + gUnknown_Debug_2038A20->unk2);
+ FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(gSprites[gUnknown_Debug_2038A20->unk3].oam.paletteNum));
+ DestroySprite(gSprites + gUnknown_Debug_2038A20->unk3);
+ sub_809D510(gSprites + gUnknown_Debug_2038A20->unk4);
+ gTasks[taskId].func = debug_80C7934;
+}
+
+void debug_80C7DDC(u8 taskId)
+{
+ if (gMain.newKeys & A_BUTTON)
+ {
+ gUnknown_Debug_2038A20->unk5 = 0;
+ REG_WIN0H = 0x51EF;
+ REG_WIN0V = 0x699F;
+ gTasks[taskId].func = debug_80C7A54;
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ gUnknown_Debug_2038A20->unk5 = 0;
+ REG_WIN0H = 0x51EF;
+ REG_WIN0V = 0x699F;
+ CpuCopy16(gUnknown_Debug_2038A20->unk10, gPlttBufferUnfaded + 0x80, 32);
+ CpuCopy16(gUnknown_Debug_2038A20->unk10, gPlttBufferFaded + 0x80, 32);
+ CpuCopy16(gUnknown_Debug_2038A20->unk10, gPlttBufferUnfaded + 0x100 + gUnknown_Debug_2038A20->unk6 * 16, 32);
+ CpuCopy16(gUnknown_Debug_2038A20->unk10, gPlttBufferFaded + 0x100 + gUnknown_Debug_2038A20->unk6 * 16, 32);
+ gTasks[taskId].func = debug_80C7A54;
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_DOWN && gUnknown_Debug_2038A20->unkA < 2)
+ {
+ gUnknown_Debug_2038A20->unkA++;
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_UP && gUnknown_Debug_2038A20->unkA > 0)
+ {
+ gUnknown_Debug_2038A20->unkA--;
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_RIGHT)
+ {
+ switch (gUnknown_Debug_2038A20->unkA)
+ {
+ case 0:
+ if (gUnknown_Debug_2038A20->unkC.r < 31)
+ gUnknown_Debug_2038A20->unkC.r++;
+ gTasks[taskId].func = debug_80C802C;
+ break;
+ case 1:
+ if (gUnknown_Debug_2038A20->unkC.g < 31)
+ gUnknown_Debug_2038A20->unkC.g++;
+ gTasks[taskId].func = debug_80C802C;
+ break;
+ case 2:
+ if (gUnknown_Debug_2038A20->unkC.b < 31)
+ gUnknown_Debug_2038A20->unkC.b++;
+ gTasks[taskId].func = debug_80C802C;
+ break;
+ }
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_LEFT)
+ {
+ switch (gUnknown_Debug_2038A20->unkA)
+ {
+ case 0:
+ if (gUnknown_Debug_2038A20->unkC.r > 0)
+ gUnknown_Debug_2038A20->unkC.r--;
+ gTasks[taskId].func = debug_80C802C;
+ break;
+ case 1:
+ if (gUnknown_Debug_2038A20->unkC.g > 0)
+ gUnknown_Debug_2038A20->unkC.g--;
+ gTasks[taskId].func = debug_80C802C;
+ break;
+ case 2:
+ if (gUnknown_Debug_2038A20->unkC.b > 0)
+ gUnknown_Debug_2038A20->unkC.b--;
+ gTasks[taskId].func = debug_80C802C;
+ break;
+ }
+ }
+}
-u8 byte_3005E30[0x20];
+void debug_80C802C(u8 taskId)
+{
+ u16 pal = (gUnknown_Debug_2038A20->unkC.r & 0x001f) + ((gUnknown_Debug_2038A20->unkC.g << 5) & 0x03e0) + ((gUnknown_Debug_2038A20->unkC.b << 10) & 0x7c00);
+ gPlttBufferUnfaded[gUnknown_Debug_2038A20->unk7 + 0x81] = pal;
+ gPlttBufferFaded[gUnknown_Debug_2038A20->unk7 + 0x81] = pal;
+ gPlttBufferUnfaded[0x101 + gUnknown_Debug_2038A20->unk6 * 16 + gUnknown_Debug_2038A20->unk7] = pal;
+ gPlttBufferFaded[0x101 + gUnknown_Debug_2038A20->unk6 * 16 + gUnknown_Debug_2038A20->unk7] = pal;
+ debug_80C68CC(pal, 14, 10, 4);
+ gTasks[taskId].func = debug_80C7DDC;
+}
-#endif
+#endif // DEBUG
diff --git a/src/decoration.c b/src/decoration.c
index 477414993..a4976932d 100644
--- a/src/decoration.c
+++ b/src/decoration.c
@@ -1,7 +1,7 @@
#include "global.h"
#include "constants/decorations.h"
#include "main.h"
-#include "constants/map_objects.h"
+#include "constants/event_objects.h"
#include "overworld.h"
#include "sound.h"
#include "constants/songs.h"
@@ -19,6 +19,7 @@
#include "event_data.h"
#include "field_weather.h"
#include "decoration.h"
+#include "decoration_inventory.h"
#include "shop.h"
#include "ewram.h"
@@ -1088,183 +1089,183 @@ const u16 DecorGfx_KISS_POSTER[] = {
};
const u16 DecorGfx_PICHU_DOLL[] = {
- MAP_OBJ_GFX_PICHU_DOLL
+ EVENT_OBJ_GFX_PICHU_DOLL
};
const u16 DecorGfx_PIKACHU_DOLL[] = {
- MAP_OBJ_GFX_PIKACHU_DOLL
+ EVENT_OBJ_GFX_PIKACHU_DOLL
};
const u16 DecorGfx_MARILL_DOLL[] = {
- MAP_OBJ_GFX_MARILL_DOLL
+ EVENT_OBJ_GFX_MARILL_DOLL
};
const u16 DecorGfx_TOGEPI_DOLL[] = {
- MAP_OBJ_GFX_TOGEPI_DOLL
+ EVENT_OBJ_GFX_TOGEPI_DOLL
};
const u16 DecorGfx_CYNDAQUIL_DOLL[] = {
- MAP_OBJ_GFX_CYNDAQUIL_DOLL
+ EVENT_OBJ_GFX_CYNDAQUIL_DOLL
};
const u16 DecorGfx_CHIKORITA_DOLL[] = {
- MAP_OBJ_GFX_CHIKORITA_DOLL
+ EVENT_OBJ_GFX_CHIKORITA_DOLL
};
const u16 DecorGfx_TOTODILE_DOLL[] = {
- MAP_OBJ_GFX_TOTODILE_DOLL
+ EVENT_OBJ_GFX_TOTODILE_DOLL
};
const u16 DecorGfx_JIGGLYPUFF_DOLL[] = {
- MAP_OBJ_GFX_JIGGLYPUFF_DOLL
+ EVENT_OBJ_GFX_JIGGLYPUFF_DOLL
};
const u16 DecorGfx_MEOWTH_DOLL[] = {
- MAP_OBJ_GFX_MEOWTH_DOLL
+ EVENT_OBJ_GFX_MEOWTH_DOLL
};
const u16 DecorGfx_CLEFAIRY_DOLL[] = {
- MAP_OBJ_GFX_CLEFAIRY_DOLL
+ EVENT_OBJ_GFX_CLEFAIRY_DOLL
};
const u16 DecorGfx_DITTO_DOLL[] = {
- MAP_OBJ_GFX_DITTO_DOLL
+ EVENT_OBJ_GFX_DITTO_DOLL
};
const u16 DecorGfx_SMOOCHUM_DOLL[] = {
- MAP_OBJ_GFX_SMOOCHUM_DOLL
+ EVENT_OBJ_GFX_SMOOCHUM_DOLL
};
const u16 DecorGfx_TREECKO_DOLL[] = {
- MAP_OBJ_GFX_TREECKO_DOLL
+ EVENT_OBJ_GFX_TREECKO_DOLL
};
const u16 DecorGfx_TORCHIC_DOLL[] = {
- MAP_OBJ_GFX_TORCHIC_DOLL
+ EVENT_OBJ_GFX_TORCHIC_DOLL
};
const u16 DecorGfx_MUDKIP_DOLL[] = {
- MAP_OBJ_GFX_MUDKIP_DOLL
+ EVENT_OBJ_GFX_MUDKIP_DOLL
};
const u16 DecorGfx_DUSKULL_DOLL[] = {
- MAP_OBJ_GFX_DUSKULL_DOLL
+ EVENT_OBJ_GFX_DUSKULL_DOLL
};
const u16 DecorGfx_WYNAUT_DOLL[] = {
- MAP_OBJ_GFX_WYNAUT_DOLL
+ EVENT_OBJ_GFX_WYNAUT_DOLL
};
const u16 DecorGfx_BALTOY_DOLL[] = {
- MAP_OBJ_GFX_BALTOY_DOLL
+ EVENT_OBJ_GFX_BALTOY_DOLL
};
const u16 DecorGfx_KECLEON_DOLL[] = {
- MAP_OBJ_GFX_KECLEON_DOLL
+ EVENT_OBJ_GFX_KECLEON_DOLL
};
const u16 DecorGfx_AZURILL_DOLL[] = {
- MAP_OBJ_GFX_AZURILL_DOLL
+ EVENT_OBJ_GFX_AZURILL_DOLL
};
const u16 DecorGfx_SKITTY_DOLL[] = {
- MAP_OBJ_GFX_SKITTY_DOLL
+ EVENT_OBJ_GFX_SKITTY_DOLL
};
const u16 DecorGfx_SWABLU_DOLL[] = {
- MAP_OBJ_GFX_SWABLU_DOLL
+ EVENT_OBJ_GFX_SWABLU_DOLL
};
const u16 DecorGfx_GULPIN_DOLL[] = {
- MAP_OBJ_GFX_GULPIN_DOLL
+ EVENT_OBJ_GFX_GULPIN_DOLL
};
const u16 DecorGfx_LOTAD_DOLL[] = {
- MAP_OBJ_GFX_LOTAD_DOLL
+ EVENT_OBJ_GFX_LOTAD_DOLL
};
const u16 DecorGfx_SEEDOT_DOLL[] = {
- MAP_OBJ_GFX_SEEDOT_DOLL
+ EVENT_OBJ_GFX_SEEDOT_DOLL
};
const u16 DecorGfx_PIKA_CUSHION[] = {
- MAP_OBJ_GFX_PIKA_CUSHION
+ EVENT_OBJ_GFX_PIKA_CUSHION
};
const u16 DecorGfx_ROUND_CUSHION[] = {
- MAP_OBJ_GFX_ROUND_CUSHION
+ EVENT_OBJ_GFX_ROUND_CUSHION
};
const u16 DecorGfx_KISS_CUSHION[] = {
- MAP_OBJ_GFX_KISS_CUSHION
+ EVENT_OBJ_GFX_KISS_CUSHION
};
const u16 DecorGfx_ZIGZAG_CUSHION[] = {
- MAP_OBJ_GFX_ZIGZAG_CUSHION
+ EVENT_OBJ_GFX_ZIGZAG_CUSHION
};
const u16 DecorGfx_SPIN_CUSHION[] = {
- MAP_OBJ_GFX_SPIN_CUSHION
+ EVENT_OBJ_GFX_SPIN_CUSHION
};
const u16 DecorGfx_DIAMOND_CUSHION[] = {
- MAP_OBJ_GFX_DIAMOND_CUSHION
+ EVENT_OBJ_GFX_DIAMOND_CUSHION
};
const u16 DecorGfx_BALL_CUSHION[] = {
- MAP_OBJ_GFX_BALL_CUSHION
+ EVENT_OBJ_GFX_BALL_CUSHION
};
const u16 DecorGfx_GRASS_CUSHION[] = {
- MAP_OBJ_GFX_GRASS_CUSHION
+ EVENT_OBJ_GFX_GRASS_CUSHION
};
const u16 DecorGfx_FIRE_CUSHION[] = {
- MAP_OBJ_GFX_FIRE_CUSHION
+ EVENT_OBJ_GFX_FIRE_CUSHION
};
const u16 DecorGfx_WATER_CUSHION[] = {
- MAP_OBJ_GFX_WATER_CUSHION
+ EVENT_OBJ_GFX_WATER_CUSHION
};
const u16 DecorGfx_SNORLAX_DOLL[] = {
- MAP_OBJ_GFX_BIG_SNORLAX_DOLL
+ EVENT_OBJ_GFX_BIG_SNORLAX_DOLL
};
const u16 DecorGfx_RHYDON_DOLL[] = {
- MAP_OBJ_GFX_BIG_RHYDON_DOLL
+ EVENT_OBJ_GFX_BIG_RHYDON_DOLL
};
const u16 DecorGfx_LAPRAS_DOLL[] = {
- MAP_OBJ_GFX_BIG_LAPRAS_DOLL
+ EVENT_OBJ_GFX_BIG_LAPRAS_DOLL
};
const u16 DecorGfx_VENUSAUR_DOLL[] = {
- MAP_OBJ_GFX_BIG_VENUSAUR_DOLL
+ EVENT_OBJ_GFX_BIG_VENUSAUR_DOLL
};
const u16 DecorGfx_CHARIZARD_DOLL[] = {
- MAP_OBJ_GFX_BIG_CHARIZARD_DOLL
+ EVENT_OBJ_GFX_BIG_CHARIZARD_DOLL
};
const u16 DecorGfx_BLASTOISE_DOLL[] = {
- MAP_OBJ_GFX_BIG_BLASTOISE_DOLL
+ EVENT_OBJ_GFX_BIG_BLASTOISE_DOLL
};
const u16 DecorGfx_WAILMER_DOLL[] = {
- MAP_OBJ_GFX_BIG_WAILMER_DOLL
+ EVENT_OBJ_GFX_BIG_WAILMER_DOLL
};
const u16 DecorGfx_REGIROCK_DOLL[] = {
- MAP_OBJ_GFX_BIG_REGIROCK_DOLL
+ EVENT_OBJ_GFX_BIG_REGIROCK_DOLL
};
const u16 DecorGfx_REGICE_DOLL[] = {
- MAP_OBJ_GFX_BIG_REGICE_DOLL
+ EVENT_OBJ_GFX_BIG_REGICE_DOLL
};
const u16 DecorGfx_REGISTEEL_DOLL[] = {
- MAP_OBJ_GFX_BIG_REGISTEEL_DOLL
+ EVENT_OBJ_GFX_BIG_REGISTEEL_DOLL
};
#if ENGLISH
@@ -1410,7 +1411,7 @@ const struct MenuAction2 gUnknown_083EC604[] = {
{SecretBaseText_Decorate, sub_80FF160},
{SecretBaseText_PutAway, sub_8100A0C},
{SecretBaseText_Toss, sub_8101700},
- {gUnknownText_Exit, gpu_pal_decompress_alloc_tag_and_upload}
+ {gOtherText_Exit, gpu_pal_decompress_alloc_tag_and_upload}
};
const u8 *const gUnknown_083EC624[] = {
@@ -1555,9 +1556,9 @@ void sub_80FE470(u8 decoCat, u8 left, u8 top, u8 palIdx) // PrintDecorationCateg
strptr[2] = palIdx;
strptr += 3;
strptr = StringCopy(strptr, gUnknown_083EC5E4[decoCat]);
- strptr = sub_8072C14(strptr, sub_8134194(decoCat), 0x56, 1);
+ strptr = AlignInt1InMenuWindow(strptr, GetNumDecorationsInInventoryCategory(decoCat), 0x56, 1);
*strptr++ = 0xba;
- strptr = sub_8072C14(strptr, gDecorationInventories[decoCat].size, 0x68, 1);
+ strptr = AlignInt1InMenuWindow(strptr, gDecorationInventories[decoCat].size, 0x68, 1);
strptr[0] = EXT_CTRL_CODE_BEGIN;
strptr[1] = 5;
strptr[2] = v0;
@@ -1579,7 +1580,7 @@ void sub_80FE528(u8 taskId) // PrintDecorationCategorySelectionMenuStrings
sub_80FE470(decoCat, 1, 2 * decoCat + 1, 255); // Unselectable
}
}
- Menu_PrintText(gUnknownText_Exit, 1, 17);
+ Menu_PrintText(gOtherText_Exit, 1, 17);
}
void sub_80FE5AC(u8 taskId)
@@ -1609,10 +1610,10 @@ void sub_80FE604(u8 taskId)
gUnknown_020388F6 = Menu_GetCursorPos();
if (gUnknown_020388F6 != 8)
{
- gUnknown_020388D5 = sub_8134194(gUnknown_020388F6);
+ gUnknown_020388D5 = GetNumDecorationsInInventoryCategory(gUnknown_020388F6);
if (gUnknown_020388D5)
{
- sub_8134104(gUnknown_020388F6);
+ SortDecorationInventory(gUnknown_020388F6);
gUnknown_020388D0 = gDecorationInventories[gUnknown_020388F6].items;
sub_80FEF50(taskId);
ClearVerticalScrollIndicatorPalettes();
@@ -1805,7 +1806,7 @@ void sub_80FEABC(u8 taskId, u8 dummy1)
}
if (i == gUnknown_020388D5)
{
- sub_8072A18(gUnknownText_Exit, 0x08, 8 * ni, 0x68, 1);
+ sub_8072A18(gOtherText_Exit, 0x08, 8 * ni, 0x68, 1);
break;
}
if (gUnknown_020388D0[i])
@@ -1856,48 +1857,13 @@ void sub_80FECE0(u8 decoCat)
sub_8072AB0(gDecorations[gUnknown_020388D0[decoCat]].description, 0x80, 0x68, 0x68, 0x30, 0x1);
}
#elif GERMAN
-__attribute__((naked))
-void sub_80FECE0(u8 decoCat)
+int sub_80FECE0(u8 decoCat)
{
- asm(".syntax unified\n\
- push {lr}\n\
- sub sp, 0x8\n\
- lsls r0, 24\n\
- lsrs r2, r0, 24\n\
- ldr r0, _080FED18 @ =gUnknown_020388D5\n\
- ldrb r0, [r0]\n\
- cmp r2, r0\n\
- beq _080FED24\n\
- ldr r1, _080FED1C @ =gDecorations\n\
- ldr r0, _080FED20 @ =gUnknown_020388D0\n\
- ldr r0, [r0]\n\
- adds r0, r2\n\
- ldrb r0, [r0]\n\
- lsls r0, 5\n\
- adds r1, 0x18\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- movs r1, 0x30\n\
- str r1, [sp]\n\
- movs r1, 0x1\n\
- str r1, [sp, 0x4]\n\
- movs r1, 0x80\n\
- movs r2, 0x68\n\
- movs r3, 0x68\n\
- bl sub_8072AB0\n\
- movs r0, 0x1\n\
- b _080FED26\n\
- .align 2, 0\n\
-_080FED18: .4byte gUnknown_020388D5\n\
-_080FED1C: .4byte gDecorations\n\
-_080FED20: .4byte gUnknown_020388D0\n\
-_080FED24:\n\
- movs r0, 0\n\
-_080FED26:\n\
- add sp, 0x8\n\
- pop {r1}\n\
- bx r1\n\
- .syntax divided\n");
+ if (decoCat == gUnknown_020388D5)
+ return FALSE;
+
+ sub_8072AB0(gDecorations[gUnknown_020388D0[decoCat]].description, 0x80, 0x68, 0x68, 0x30, 0x1);
+ return TRUE;
}
#endif
@@ -2057,7 +2023,7 @@ void sub_80FF098(u8 taskId)
{
gUnknown_020388F4--;
}
- sub_8134104(gUnknown_020388F6);
+ SortDecorationInventory(gUnknown_020388F6);
sub_80FED90(taskId);
sub_80FEF28();
}
@@ -2073,11 +2039,11 @@ void sub_80FF114(u8 taskId)
{
DrawWholeMapView();
Overworld_SetWarpDestination(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum, -1, gTasks[taskId].data[3], gTasks[taskId].data[4]);
- warp_in();
+ WarpIntoMap();
}
void sub_80FF160(u8 taskId)
{
- if (!sub_81341D4())
+ if (!GetNumDecorationsInInventory())
{
DisplayItemMessageOnField(taskId, gSecretBaseText_NoDecors, sub_80FE428, 0);
} else
@@ -2109,9 +2075,9 @@ u16 sub_80FF1B0(u8 decoId, u8 a1)
void sub_80FF1EC(u16 mapX, u16 mapY, u8 decWidth, u8 decHeight, u16 decIdx)
{
u16 i;
- u16 j; // r10
+ u16 j;
u16 behavior;
- u16 flags; // r8
+ u16 collision;
u16 v0;
u16 v1;
s16 x;
@@ -2124,27 +2090,23 @@ void sub_80FF1EC(u16 mapX, u16 mapY, u8 decWidth, u8 decHeight, u16 decIdx)
{
x = mapX + j;
behavior = GetBehaviorByMetatileId(0x200 + gDecorations[decIdx].tiles[i * decWidth + j]);
- if (sub_8057288(behavior) == 1 || (gDecorations[decIdx].permission != DECORPERM_PASS_FLOOR && (behavior >> 12)))
- {
- flags = 0xc00;
- } else
- {
- flags = 0x000;
- }
- if (gDecorations[decIdx].permission != DECORPERM_NA_WALL && sub_80572B0(MapGridGetMetatileBehaviorAt(x, decBottom)) == 1)
- {
+ if (MetatileBehavior_IsSecretBaseImpassable(behavior) == TRUE || (gDecorations[decIdx].permission != DECORPERM_PASS_FLOOR && (behavior >> 12) != 0))
+ collision = 0xc00; // impassable collision
+ else
+ collision = 0x000; // passable collision
+
+ if (gDecorations[decIdx].permission != DECORPERM_NA_WALL && MetatileBehavior_IsSecretBaseNorthWall(MapGridGetMetatileBehaviorAt(x, decBottom)) == 1)
v0 = 1;
- } else
- {
+ else
v0 = 0;
- }
+
v1 = sub_80FF1B0(gDecorations[decIdx].id, i * decWidth + j);
if (v1 != 0xffff)
{
- MapGridSetMetatileEntryAt(x, decBottom, (gDecorations[decIdx].tiles[i * decWidth + j] + (0x200 | v0)) | flags | v1);
+ MapGridSetMetatileEntryAt(x, decBottom, (gDecorations[decIdx].tiles[i * decWidth + j] + (0x200 | v0)) | collision | v1);
} else
{
- MapGridSetMetatileIdAt(x, decBottom, (gDecorations[decIdx].tiles[i * decWidth + j] + (0x200 | v0)) | flags);
+ MapGridSetMetatileIdAt(x, decBottom, (gDecorations[decIdx].tiles[i * decWidth + j] + (0x200 | v0)) | collision);
}
}
}
@@ -2196,20 +2158,20 @@ void sub_80FF474(void)
if (FlagGet(i + FLAG_DECORATION_2) == 1)
{
FlagClear(i + FLAG_DECORATION_2);
- for (j=0; j<gMapHeader.events->mapObjectCount; j++)
+ for (j=0; j<gMapHeader.events->eventObjectCount; j++)
{
- if (gMapHeader.events->mapObjects[j].flagId == i + FLAG_DECORATION_2)
+ if (gMapHeader.events->eventObjects[j].flagId == i + FLAG_DECORATION_2)
{
break;
}
}
- VarSet(0x3f20 + gMapHeader.events->mapObjects[j].graphicsId, gUnknown_02038900.decoration->tiles[0]);
- gSpecialVar_0x8005 = gMapHeader.events->mapObjects[j].localId;
+ VarSet(0x3f20 + gMapHeader.events->eventObjects[j].graphicsId, gUnknown_02038900.decoration->tiles[0]);
+ gSpecialVar_0x8005 = gMapHeader.events->eventObjects[j].localId;
gSpecialVar_0x8006 = gUnknown_020391A4;
gSpecialVar_0x8007 = gUnknown_020391A6;
show_sprite(gSpecialVar_0x8005, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup);
sub_805C0F8(gSpecialVar_0x8005, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, gSpecialVar_0x8006, gSpecialVar_0x8007);
- sub_805C78C(gSpecialVar_0x8005, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup);
+ TryOverrideTemplateCoordsForEventObject(gSpecialVar_0x8005, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup);
break;
}
}
@@ -2281,7 +2243,7 @@ void sub_80FF6AC(u8 taskId)
break;
case 1:
gPaletteFade.bufferTransferDisabled = 1;
- AddDecorationIconObjectFromFieldObject(&gUnknown_02038900, gUnknown_020388D0[gUnknown_020388F5]);
+ AddDecorationIconObjectFromEventObject(&gUnknown_02038900, gUnknown_020388D0[gUnknown_020388F5]);
sub_80FF960(taskId);
SetUpPlacingDecorationPlayerAvatar(taskId, &gUnknown_02038900);
pal_fill_black();
@@ -2298,7 +2260,7 @@ void sub_80FF6AC(u8 taskId)
}
}
-void AddDecorationIconObjectFromFieldObject(struct UnkStruct_02038900 * unk_02038900, u8 decoIdx)
+void AddDecorationIconObjectFromEventObject(struct UnkStruct_02038900 * unk_02038900, u8 decoIdx)
{
sub_80FEF74();
sub_80FED1C();
@@ -2309,15 +2271,15 @@ void AddDecorationIconObjectFromFieldObject(struct UnkStruct_02038900 * unk_0203
sub_81008BC(unk_02038900);
sub_8100930(unk_02038900->decoration->shape);
sub_8100874(unk_02038900);
- sub_810070C(unk_02038900->palette, ((u16 *)gMapHeader.mapData->secondaryTileset->metatiles + 8 * unk_02038900->decoration->tiles[0])[7] >> 12);
+ sub_810070C(unk_02038900->palette, ((u16 *)gMapHeader.mapLayout->secondaryTileset->metatiles + 8 * unk_02038900->decoration->tiles[0])[7] >> 12);
LoadSpritePalette(&gUnknown_083EC954);
- gUnknown_020391A8 = gSprites[gUnknown_03004880.unk4].data[0];
- gUnknown_03004880.unk4 = CreateSprite(&gSpriteTemplate_83EC93C, gUnknown_083EC900[unk_02038900->decoration->shape].x, gUnknown_083EC900[unk_02038900->decoration->shape].y, 0);
+ gUnknown_020391A8 = gSprites[gFieldCamera.trackedSpriteId].data[0];
+ gFieldCamera.trackedSpriteId = CreateSprite(&gSpriteTemplate_83EC93C, gUnknown_083EC900[unk_02038900->decoration->shape].x, gUnknown_083EC900[unk_02038900->decoration->shape].y, 0);
} else
{
- gUnknown_020391A8 = gSprites[gUnknown_03004880.unk4].data[0];
- gUnknown_03004880.unk4 = AddPseudoFieldObject(unk_02038900->decoration->tiles[0], sub_81009A8, gUnknown_083EC900[unk_02038900->decoration->shape].x, gUnknown_083EC900[unk_02038900->decoration->shape].y, 1);
- gSprites[gUnknown_03004880.unk4].oam.priority = 1;
+ gUnknown_020391A8 = gSprites[gFieldCamera.trackedSpriteId].data[0];
+ gFieldCamera.trackedSpriteId = AddPseudoEventObject(unk_02038900->decoration->tiles[0], sub_81009A8, gUnknown_083EC900[unk_02038900->decoration->shape].x, gUnknown_083EC900[unk_02038900->decoration->shape].y, 1);
+ gSprites[gFieldCamera.trackedSpriteId].oam.priority = 1;
}
}
@@ -2331,14 +2293,14 @@ void SetUpPlacingDecorationPlayerAvatar(u8 taskId, struct UnkStruct_02038900 *un
}
if (gSaveBlock2.playerGender == MALE)
{
- gUnknown_020391A9 = AddPseudoFieldObject(0xc1, SpriteCallbackDummy, v0, 0x48, 0);
+ gUnknown_020391A9 = AddPseudoEventObject(0xc1, SpriteCallbackDummy, v0, 0x48, 0);
} else
{
- gUnknown_020391A9 = AddPseudoFieldObject(0xc2, SpriteCallbackDummy, v0, 0x48, 0);
+ gUnknown_020391A9 = AddPseudoEventObject(0xc2, SpriteCallbackDummy, v0, 0x48, 0);
}
gSprites[gUnknown_020391A9].oam.priority = 1;
DestroySprite(&gSprites[gUnknown_020391A8]);
- gUnknown_020391A8 = gUnknown_03004880.unk4;
+ gUnknown_020391A8 = gFieldCamera.trackedSpriteId;
}
void sub_80FF960(u8 taskId)
@@ -2407,9 +2369,9 @@ void sub_80FFB08(u8 taskId)
DisplayItemMessageOnField(taskId, gSecretBaseText_CancelDecorating, sub_8100248, 0);
}
-bool8 sub_80FFB6C(u8 a0, u16 a1)
+bool8 sub_80FFB6C(u8 metatileBehavior, u16 layerType)
{
- if (sub_8057274(a0) != 1 || a1 != 0)
+ if (MetatileBehavior_IsBlockDecoration(metatileBehavior) != TRUE || layerType != 0)
{
return FALSE;
}
@@ -2425,15 +2387,15 @@ bool8 sub_80FFB94(u8 taskId, s16 x, s16 y, u16 decoId)
return TRUE;
}
-bool8 sub_80FFBDC(u16 a0, const struct Decoration *decoration)
+bool8 sub_80FFBDC(u16 metatileBehavior, const struct Decoration *decoration)
{
- if (sub_8057274(a0) != 1)
+ if (MetatileBehavior_IsBlockDecoration(metatileBehavior) != TRUE)
{
- if (decoration->id == DECOR_SOLID_BOARD && sub_8057300(a0) == 1)
+ if (decoration->id == DECOR_SOLID_BOARD && MetatileBehavior_IsSecretBaseHole(metatileBehavior) == TRUE)
{
return TRUE;
}
- if (sub_805729C(a0))
+ if (MetatileBehavior_IsNormal(metatileBehavior))
{
return TRUE;
}
@@ -2448,7 +2410,7 @@ bool8 sub_80FFC24(u8 taskId, const struct Decoration *decoration)
u8 i;
u8 j;
u8 behaviorAt;
- u16 behaviorBy;
+ u16 layerType;
u8 mapY;
u8 mapX;
s16 curY;
@@ -2466,16 +2428,16 @@ bool8 sub_80FFC24(u8 taskId, const struct Decoration *decoration)
{
curX = gTasks[taskId].data[0] + j;
behaviorAt = MapGridGetMetatileBehaviorAt(curX, curY);
- behaviorBy = GetBehaviorByMetatileId(0x200 + decoration->tiles[(mapY - 1 - i) * mapX + j]) & 0xf000;
+ layerType = GetBehaviorByMetatileId(0x200 + decoration->tiles[(mapY - 1 - i) * mapX + j]) & 0xf000;
if (!sub_80FFBDC(behaviorAt, decoration))
{
return FALSE;
}
- if (!sub_80FFB94(taskId, curX, curY, behaviorBy))
+ if (!sub_80FFB94(taskId, curX, curY, layerType))
{
return FALSE;
}
- behaviorAt = GetFieldObjectIdByXYZ(curX, curY, 0);
+ behaviorAt = GetEventObjectIdByXYZ(curX, curY, 0);
if (behaviorAt != 0 && behaviorAt != 16)
{
return FALSE;
@@ -2491,16 +2453,16 @@ bool8 sub_80FFC24(u8 taskId, const struct Decoration *decoration)
{
curX = gTasks[taskId].data[0] + j;
behaviorAt = MapGridGetMetatileBehaviorAt(curX, curY);
- behaviorBy = GetBehaviorByMetatileId(0x200 + decoration->tiles[(mapY - 1 - i) * mapX + j]) & 0xf000;
- if (!sub_805729C(behaviorAt) && !sub_80FFB6C(behaviorAt, behaviorBy))
+ layerType = GetBehaviorByMetatileId(0x200 + decoration->tiles[(mapY - 1 - i) * mapX + j]) & 0xf000;
+ if (!MetatileBehavior_IsNormal(behaviorAt) && !sub_80FFB6C(behaviorAt, layerType))
{
return FALSE;
}
- if (!sub_80FFB94(taskId, curX, curY, behaviorBy))
+ if (!sub_80FFB94(taskId, curX, curY, layerType))
{
return FALSE;
}
- if (GetFieldObjectIdByXYZ(curX, curY, 0) != 16)
+ if (GetEventObjectIdByXYZ(curX, curY, 0) != 16)
{
return FALSE;
}
@@ -2511,16 +2473,16 @@ bool8 sub_80FFC24(u8 taskId, const struct Decoration *decoration)
{
curX = gTasks[taskId].data[0] + j;
behaviorAt = MapGridGetMetatileBehaviorAt(curX, curY);
- behaviorBy = GetBehaviorByMetatileId(0x200 + decoration->tiles[j]) & 0xf000;
- if (!sub_805729C(behaviorAt) && !sub_80572B0(behaviorAt))
+ layerType = GetBehaviorByMetatileId(0x200 + decoration->tiles[j]) & 0xf000;
+ if (!MetatileBehavior_IsNormal(behaviorAt) && !MetatileBehavior_IsSecretBaseNorthWall(behaviorAt))
{
return FALSE;
}
- if (!sub_80FFB94(taskId, curX, curY, behaviorBy))
+ if (!sub_80FFB94(taskId, curX, curY, layerType))
{
return FALSE;
}
- behaviorAt = GetFieldObjectIdByXYZ(curX, curY, 0);
+ behaviorAt = GetEventObjectIdByXYZ(curX, curY, 0);
if (behaviorAt != 0 && behaviorAt != 16)
{
return FALSE;
@@ -2534,7 +2496,7 @@ bool8 sub_80FFC24(u8 taskId, const struct Decoration *decoration)
for (j=0; j<mapX; j++)
{
curX = gTasks[taskId].data[0] + j;
- if (!sub_80572B0(MapGridGetMetatileBehaviorAt(curX, curY)))
+ if (!MetatileBehavior_IsSecretBaseNorthWall(MapGridGetMetatileBehaviorAt(curX, curY)))
{
return FALSE;
}
@@ -2553,19 +2515,19 @@ bool8 sub_80FFC24(u8 taskId, const struct Decoration *decoration)
behaviorAt = MapGridGetMetatileBehaviorAt(curX, curY);
if (decoration->shape == DECORSHAPE_1x2)
{
- if (!sub_80572EC(behaviorAt))
+ if (!MetatileBehavior_IsLargeMatCenter(behaviorAt))
{
return FALSE;
}
}
- else if (!sub_80572D8(behaviorAt))
+ else if (!MetatileBehavior_IsSecretBaseLargeMatEdge(behaviorAt))
{
- if (!sub_80572EC(behaviorAt))
+ if (!MetatileBehavior_IsLargeMatCenter(behaviorAt))
{
return FALSE;
}
}
- if (GetFieldObjectIdByXYZ(curX, curY, 0) != 16)
+ if (GetEventObjectIdByXYZ(curX, curY, 0) != 16)
{
return FALSE;
}
@@ -2575,7 +2537,7 @@ bool8 sub_80FFC24(u8 taskId, const struct Decoration *decoration)
return TRUE;
}
#else
-__attribute__((naked))
+NAKED
bool8 sub_80FFC24(u8 taskId, const struct Decoration *decoration)
{
asm(".syntax unified\n"
@@ -2716,7 +2678,7 @@ bool8 sub_80FFC24(u8 taskId, const struct Decoration *decoration)
"\tldr r2, [sp, 0xC]\n"
"\tlsrs r1, r2, 16\n"
"\tmovs r2, 0\n"
- "\tbl GetFieldObjectIdByXYZ\n"
+ "\tbl GetEventObjectIdByXYZ\n"
"\tlsls r0, 24\n"
"\tlsrs r4, r0, 24\n"
"\tcmp r4, 0\n"
@@ -2811,7 +2773,7 @@ bool8 sub_80FFC24(u8 taskId, const struct Decoration *decoration)
"\tadds r5, r1, 0\n"
"\tands r5, r0\n"
"\tadds r0, r4, 0\n"
- "\tbl sub_805729C\n"
+ "\tbl MetatileBehavior_IsNormal\n"
"\tlsls r0, 24\n"
"\tcmp r0, 0\n"
"\tbne _080FFE0C\n"
@@ -2839,7 +2801,7 @@ bool8 sub_80FFC24(u8 taskId, const struct Decoration *decoration)
"\tldr r2, [sp, 0x20]\n"
"\tlsrs r1, r2, 16\n"
"\tmovs r2, 0\n"
- "\tbl GetFieldObjectIdByXYZ\n"
+ "\tbl GetEventObjectIdByXYZ\n"
"\tlsls r0, 24\n"
"\tlsrs r0, 24\n"
"\tcmp r0, 0x10\n"
@@ -2916,12 +2878,12 @@ bool8 sub_80FFC24(u8 taskId, const struct Decoration *decoration)
"\tadds r5, r1, 0\n"
"\tands r5, r0\n"
"\tadds r0, r4, 0\n"
- "\tbl sub_805729C\n"
+ "\tbl MetatileBehavior_IsNormal\n"
"\tlsls r0, 24\n"
"\tcmp r0, 0\n"
"\tbne _080FFEDA\n"
"\tadds r0, r4, 0\n"
- "\tbl sub_80572B0\n"
+ "\tbl MetatileBehavior_IsSecretBaseNorthWall\n"
"\tlsls r0, 24\n"
"\tcmp r0, 0\n"
"\tbne _080FFEDA\n"
@@ -2943,7 +2905,7 @@ bool8 sub_80FFC24(u8 taskId, const struct Decoration *decoration)
"\tldr r2, [sp, 0x20]\n"
"\tlsrs r1, r2, 16\n"
"\tmovs r2, 0\n"
- "\tbl GetFieldObjectIdByXYZ\n"
+ "\tbl GetEventObjectIdByXYZ\n"
"\tlsls r0, 24\n"
"\tlsrs r4, r0, 24\n"
"\tcmp r4, 0\n"
@@ -2999,7 +2961,7 @@ bool8 sub_80FFC24(u8 taskId, const struct Decoration *decoration)
"\tbl MapGridGetMetatileBehaviorAt\n"
"\tlsls r0, 24\n"
"\tlsrs r0, 24\n"
- "\tbl sub_80572B0\n"
+ "\tbl MetatileBehavior_IsSecretBaseNorthWall\n"
"\tlsls r0, 24\n"
"\tcmp r0, 0\n"
"\tbeq _080FFFF4\n"
@@ -3065,7 +3027,7 @@ bool8 sub_80FFC24(u8 taskId, const struct Decoration *decoration)
"\tbne _080FFFF8\n"
"_080FFFE8:\n"
"\tadds r0, r4, 0\n"
- "\tbl sub_80572EC\n"
+ "\tbl MetatileBehavior_IsLargeMatCenter\n"
"\tlsls r0, 24\n"
"\tcmp r0, 0\n"
"\tbne _08100004\n"
@@ -3074,7 +3036,7 @@ bool8 sub_80FFC24(u8 taskId, const struct Decoration *decoration)
"\tb _08100026\n"
"_080FFFF8:\n"
"\tadds r0, r4, 0\n"
- "\tbl sub_80572D8\n"
+ "\tbl MetatileBehavior_IsSecretBaseLargeMatEdge\n"
"\tlsls r0, 24\n"
"\tcmp r0, 0\n"
"\tbeq _080FFFE8\n"
@@ -3083,7 +3045,7 @@ bool8 sub_80FFC24(u8 taskId, const struct Decoration *decoration)
"\tldr r2, [sp, 0x20]\n"
"\tlsrs r1, r2, 16\n"
"\tmovs r2, 0\n"
- "\tbl GetFieldObjectIdByXYZ\n"
+ "\tbl GetEventObjectIdByXYZ\n"
"\tlsls r0, 24\n"
"\tlsrs r0, 24\n"
"\tcmp r0, 0x10\n"
@@ -3244,7 +3206,7 @@ bool8 sub_810038C(u8 taskId)
{
data[1]++;
return FALSE;
- } else if (gUnknown_020391AA == DIR_NORTH && data[1] - 7 >= gMapHeader.mapData->height)
+ } else if (gUnknown_020391AA == DIR_NORTH && data[1] - 7 >= gMapHeader.mapLayout->height)
{
data[1]--;
return FALSE;
@@ -3252,7 +3214,7 @@ bool8 sub_810038C(u8 taskId)
{
data[0]++;
return FALSE;
- } else if (gUnknown_020391AA == DIR_EAST && data[0] + data[5] - 8 >= gMapHeader.mapData->width)
+ } else if (gUnknown_020391AA == DIR_EAST && data[0] + data[5] - 8 >= gMapHeader.mapLayout->width)
{
data[0]--;
return FALSE;
@@ -3374,7 +3336,7 @@ void sub_810070C(u16 *a0, u16 a1)
u16 i;
for (i=0; i<16; i++)
{
- a0[i] = ((u16 *)gMapHeader.mapData->primaryTileset->palettes)[16 * a1 + i];
+ a0[i] = ((u16 *)gMapHeader.mapLayout->primaryTileset->palettes)[16 * a1 + i];
}
}
@@ -3390,7 +3352,7 @@ void sub_8100740(u8 *dest, u16 flags)
}
for (i=0; i<32; i++)
{
- buffer[i] = ((u8 *)gMapHeader.mapData->primaryTileset->tiles)[flags * 32 + i];
+ buffer[i] = ((u8 *)gMapHeader.mapLayout->primaryTileset->tiles)[flags * 32 + i];
}
switch (mode)
{
@@ -3436,7 +3398,7 @@ void sub_8100874(struct UnkStruct_02038900 *unk_02038900)
u16 sub_810089C(u16 a0)
{
- return ((u16 *)gMapHeader.mapData->secondaryTileset->metatiles)[a0] & 0xfff;
+ return ((u16 *)gMapHeader.mapLayout->secondaryTileset->metatiles)[a0] & 0xfff;
}
const u8 Unknown_3EC660[] = {0, 1, 2, 3};
@@ -3656,11 +3618,11 @@ void sub_8100A7C(void)
{
gSpecialVar_0x8005 = gUnknown_020391B4[gSpecialVar_0x8004].flagId;
sub_8100A60(gUnknown_020391B4[gSpecialVar_0x8004].decorId);
- for (i=0; i<gMapHeader.events->mapObjectCount; i++)
+ for (i=0; i<gMapHeader.events->eventObjectCount; i++)
{
- if (gMapHeader.events->mapObjects[i].flagId == gSpecialVar_0x8005)
+ if (gMapHeader.events->eventObjects[i].flagId == gSpecialVar_0x8005)
{
- gSpecialVar_0x8006 = gMapHeader.events->mapObjects[i].localId;
+ gSpecialVar_0x8006 = gMapHeader.events->eventObjects[i].localId;
break;
}
}
@@ -3670,11 +3632,11 @@ void sub_8100A7C(void)
void sub_8100B20(void)
{
u8 i;
- for (i=0; i<gMapHeader.events->mapObjectCount; i++)
+ for (i=0; i<gMapHeader.events->eventObjectCount; i++)
{
- if (gMapHeader.events->mapObjects[i].flagId == gSpecialVar_0x8004)
+ if (gMapHeader.events->eventObjects[i].flagId == gSpecialVar_0x8004)
{
- gSpecialVar_0x8005 = gMapHeader.events->mapObjects[i].localId;
+ gSpecialVar_0x8005 = gMapHeader.events->eventObjects[i].localId;
break;
}
}
@@ -3703,7 +3665,7 @@ void sub_8100B6C(void)
{
for (k=0; k<gUnknown_020391B4[i].width; k++)
{
- MapGridSetMetatileEntryAt(x + 7 + k, y + 7 - j, ((u16 *)gMapHeader.mapData->map)[(x + k) + gMapHeader.mapData->width * (y - j)] | 0x3000);
+ MapGridSetMetatileEntryAt(x + 7 + k, y + 7 - j, ((u16 *)gMapHeader.mapLayout->map)[(x + k) + gMapHeader.mapLayout->width * (y - j)] | 0x3000);
}
}
sub_8100A60(gUnknown_020391B4[i].decorId);
@@ -3760,21 +3722,21 @@ bool8 sub_8100D38(u8 taskId)
void SetUpPuttingAwayDecorationPlayerAvatar(void)
{
- player_get_direction_lower_nybble();
+ GetPlayerFacingDirection();
Menu_EraseWindowRect(0, 0, 29, 19);
- gUnknown_020391A8 = gSprites[gUnknown_03004880.unk4].data[0];
+ gUnknown_020391A8 = gSprites[gFieldCamera.trackedSpriteId].data[0];
sub_81016C8();
- gUnknown_03004880.unk4 = CreateSprite(&gSpriteTemplate_83ECA88, 0x78, 0x50, 0);
+ gFieldCamera.trackedSpriteId = CreateSprite(&gSpriteTemplate_83ECA88, 0x78, 0x50, 0);
if (gSaveBlock2.playerGender == MALE)
{
- gUnknown_020391A9 = AddPseudoFieldObject(0xc1, SpriteCallbackDummy, 0x88, 0x48, 0);
+ gUnknown_020391A9 = AddPseudoEventObject(0xc1, SpriteCallbackDummy, 0x88, 0x48, 0);
} else
{
- gUnknown_020391A9 = AddPseudoFieldObject(0xc2, SpriteCallbackDummy, 0x88, 0x48, 0);
+ gUnknown_020391A9 = AddPseudoEventObject(0xc2, SpriteCallbackDummy, 0x88, 0x48, 0);
}
gSprites[gUnknown_020391A9].oam.priority = 1;
DestroySprite(&gSprites[gUnknown_020391A8]);
- gUnknown_020391A8 = gUnknown_03004880.unk4;
+ gUnknown_020391A8 = gFieldCamera.trackedSpriteId;
gSprites[gUnknown_020391A8].oam.priority = 1;
}
@@ -3839,7 +3801,7 @@ void sub_8100FB4(u8 taskId)
void sub_8101024(u8 taskId)
{
- u8 mtBehavior;
+ u8 metatileBehavior;
s16 *data;
sub_8101460(taskId);
if (gUnknown_02039234 != 0)
@@ -3848,8 +3810,9 @@ void sub_8101024(u8 taskId)
} else
{
data = gTasks[taskId].data;
- mtBehavior = MapGridGetMetatileBehaviorAt(data[0], data[1]);
- if (MetatileBehavior_IsSecretBasePC(mtBehavior) == TRUE || sub_805738C(mtBehavior) == TRUE)
+ metatileBehavior = MapGridGetMetatileBehaviorAt(data[0], data[1]);
+ if (MetatileBehavior_IsSecretBasePC(metatileBehavior) == TRUE
+ || MetatileBehavior_IsPlayerRoomPCOn(metatileBehavior) == TRUE)
{
gSprites[gUnknown_020391A8].invisible = 0;
gSprites[gUnknown_020391A8].callback = SpriteCallbackDummy;
@@ -3953,9 +3916,9 @@ void sub_81012A0(void)
yOff = ewram_1f000.pos[gUnknown_020391B4[gUnknown_02039234].decorId] & 0xf;
for (i=0; i<0x40; i++)
{
- if (gSaveBlock1.mapObjectTemplates[i].x == xOff && gSaveBlock1.mapObjectTemplates[i].y == yOff && !FlagGet(gSaveBlock1.mapObjectTemplates[i].flagId))
+ if (gSaveBlock1.eventObjectTemplates[i].x == xOff && gSaveBlock1.eventObjectTemplates[i].y == yOff && !FlagGet(gSaveBlock1.eventObjectTemplates[i].flagId))
{
- gUnknown_020391B4[gUnknown_02039234].flagId = gSaveBlock1.mapObjectTemplates[i].flagId;
+ gUnknown_020391B4[gUnknown_02039234].flagId = gSaveBlock1.eventObjectTemplates[i].flagId;
break;
}
}
@@ -4036,7 +3999,7 @@ void sub_8101460(u8 taskId)
}
}
#else
-__attribute__((naked))
+NAKED
void sub_8101460(u8 taskId)
{
asm(".syntax unified\n"
@@ -4228,7 +4191,7 @@ void sub_81016F4(void)
void sub_8101700(u8 taskId)
{
- if (!sub_81341D4())
+ if (!GetNumDecorationsInInventory())
{
DisplayItemMessageOnField(taskId, gSecretBaseText_NoDecors, sub_80FE428, 0);
} else
@@ -4241,7 +4204,7 @@ void sub_8101700(u8 taskId)
void sub_8101750(u8 taskId)
{
- if (!sub_81341D4())
+ if (!GetNumDecorationsInInventory())
{
DisplayItemMessageOnField(taskId, gSecretBaseText_NoDecors, sub_80FE428, 0);
} else
diff --git a/src/decoration_inventory.c b/src/decoration_inventory.c
index 8f7f5eb92..feec11670 100644
--- a/src/decoration_inventory.c
+++ b/src/decoration_inventory.c
@@ -1,9 +1,9 @@
#include "global.h"
-#include "constants/decorations.h"
-#include "sprite.h"
-#include "task.h"
#include "decoration.h"
#include "decoration_inventory.h"
+#include "sprite.h"
+#include "task.h"
+#include "constants/decorations.h"
#define DECOR_INV(ptr) {.items = ptr, .size = sizeof ptr}
@@ -18,160 +18,147 @@ struct DecorationInventory const gDecorationInventories[] = {
DECOR_INV(gSaveBlock1.decorCushion)
};
-void ClearDecorationInventory(u8 invIdx)
+void ClearDecorationInventory(u8 category)
{
u8 i;
- for (i=0; i<gDecorationInventories[invIdx].size; i++)
+ for (i = 0; i < gDecorationInventories[category].size; i++)
{
- gDecorationInventories[invIdx].items[i] = DECOR_NONE;
+ gDecorationInventories[category].items[i] = DECOR_NONE;
}
}
void ClearDecorationInventories(void)
{
u8 i;
- for (i=0; i<8; i++)
+ for (i = 0; i < 8; i++)
{
ClearDecorationInventory(i);
}
}
-s8 sub_8133F9C(u8 invIdx)
+s8 FindFreeDecorationInventorySlot(u8 category)
{
s8 i;
- for (i=0; i<(s8)gDecorationInventories[invIdx].size; i++)
+ for (i = 0; i < (s8)gDecorationInventories[category].size; i++)
{
- if (gDecorationInventories[invIdx].items[i] == DECOR_NONE)
- {
+ if (gDecorationInventories[category].items[i] == DECOR_NONE)
return i;
- }
}
+
return -1;
}
-bool8 sub_8133FE4(u8 decorIdx)
+bool8 InventoryContainsDecoration(u8 decorationId)
{
- u8 invIdx;
u8 i;
- invIdx = gDecorations[decorIdx].category;
- for (i=0; i<gDecorationInventories[invIdx].size; i++)
+ u8 category = gDecorations[decorationId].category;
+ for (i = 0; i < gDecorationInventories[category].size; i++)
{
- if (gDecorationInventories[invIdx].items[i] == decorIdx)
- {
+ if (gDecorationInventories[category].items[i] == decorationId)
return TRUE;
- }
}
+
return FALSE;
}
-bool8 IsThereStorageSpaceForDecoration(u8 decorIdx)
+bool8 GiveDecoration(u8 decorationId)
{
- u8 invIdx;
- s8 invSlot;
- if (decorIdx == DECOR_NONE)
- {
+ u8 category;
+ s8 slot;
+ if (decorationId == DECOR_NONE)
return FALSE;
- }
- invIdx = gDecorations[decorIdx].category;
- invSlot = sub_8133F9C(invIdx);
- if (invSlot == -1)
- {
+
+ category = gDecorations[decorationId].category;
+ slot = FindFreeDecorationInventorySlot(category);
+ if (slot == -1)
return FALSE;
- }
- gDecorationInventories[invIdx].items[invSlot] = decorIdx;
+
+ gDecorationInventories[category].items[slot] = decorationId;
return TRUE;
}
-bool8 sub_8134074(u8 decorIdx)
+bool8 CheckDecorationInventoryHasSpace(u8 decorationId)
{
- u8 invIdx;
- if (decorIdx == DECOR_NONE)
- {
+ u8 category;
+ if (decorationId == DECOR_NONE)
return FALSE;
- }
- invIdx = gDecorations[decorIdx].category;
- if (sub_8133F9C(invIdx) == -1)
- {
+
+ category = gDecorations[decorationId].category;
+ if (FindFreeDecorationInventorySlot(category) == -1)
return FALSE;
- }
+
return TRUE;
}
-s8 sub_81340A8(u8 decorIdx)
+s8 RemoveDecorationFromInventory(u8 decorationId)
{
- u8 i;
- u8 invIdx;
- i = 0;
- if (decorIdx == DECOR_NONE)
- {
+ u8 category;
+ u8 i = 0;
+ if (decorationId == DECOR_NONE)
return FALSE;
- }
- for (i=0; i<gDecorationInventories[gDecorations[decorIdx].category].size; i++)
+
+ for (i = 0; i < gDecorationInventories[gDecorations[decorationId].category].size; i++)
{
- invIdx = gDecorations[decorIdx].category;
- if (gDecorationInventories[invIdx].items[i] == decorIdx)
+ category = gDecorations[decorationId].category;
+ if (gDecorationInventories[category].items[i] == decorationId)
{
- gDecorationInventories[invIdx].items[i] = DECOR_NONE;
- sub_8134104(invIdx);
+ gDecorationInventories[category].items[i] = DECOR_NONE;
+ SortDecorationInventory(category);
return TRUE;
}
}
+
return FALSE;
}
-void sub_8134104(u8 invIdx)
+void SortDecorationInventory(u8 category)
{
u8 i;
u8 j;
u8 tmp;
- for (i=0; i<gDecorationInventories[invIdx].size; i++)
+ for (i = 0; i < gDecorationInventories[category].size; i++)
{
- for (j=i+1; j<gDecorationInventories[invIdx].size; j++)
+ for (j = i + 1; j < gDecorationInventories[category].size; j++)
{
- if (gDecorationInventories[invIdx].items[j] != 0 && (gDecorationInventories[invIdx].items[i] == DECOR_NONE || gDecorationInventories[invIdx].items[i] > gDecorationInventories[invIdx].items[j]))
+ if (gDecorationInventories[category].items[j] != 0 && (gDecorationInventories[category].items[i] == DECOR_NONE || gDecorationInventories[category].items[i] > gDecorationInventories[category].items[j]))
{
- tmp = gDecorationInventories[invIdx].items[i];
- gDecorationInventories[invIdx].items[i] = gDecorationInventories[invIdx].items[j];
- gDecorationInventories[invIdx].items[j] = tmp;
+ tmp = gDecorationInventories[category].items[i];
+ gDecorationInventories[category].items[i] = gDecorationInventories[category].items[j];
+ gDecorationInventories[category].items[j] = tmp;
}
}
}
}
-u8 sub_8134194(u8 invIdx)
+u8 GetNumDecorationsInInventoryCategory(u8 category)
{
u8 i;
- u8 count;
- count = 0;
- for (i=0; i<gDecorationInventories[invIdx].size; i++)
+ u8 count = 0;
+ for (i = 0; i < gDecorationInventories[category].size; i++)
{
- if (gDecorationInventories[invIdx].items[i] != 0)
- {
+ if (gDecorationInventories[category].items[i] != DECOR_NONE)
count++;
- }
}
+
return count;
}
-u8 sub_81341D4(void)
+u8 GetNumDecorationsInInventory(void)
{
u8 i;
- u8 count;
- count = 0;
- for (i=0; i<8; i++)
- {
- count += sub_8134194(i);
- }
+ u8 count = 0;
+ for (i = 0; i < 8; i++)
+ count += GetNumDecorationsInInventoryCategory(i);
+
return count;
}
-
#if DEBUG
-void debug_sub_814A3A8(void)
+void Debug_GiveAllDecorations(void)
{
u8 decor;
for (decor = 0; decor < DECOR_COUNT; decor++)
- IsThereStorageSpaceForDecoration(decor);
+ GiveDecoration(decor);
}
#endif
diff --git a/src/diploma.c b/src/diploma.c
index b31fc7dec..5a1e1254b 100644
--- a/src/diploma.c
+++ b/src/diploma.c
@@ -69,9 +69,9 @@ void CB2_ShowDiploma(void)
FreeAllSpritePalettes();
LoadPalette(gDiplomaPalettes, 0, 64);
Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C);
- InitMenuWindow(&gWindowTemplate_81E6CE4);
+ InitMenuWindow(&gMenuTextWindowTemplate);
DisplayDiplomaText();
- BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
savedIme = REG_IME;
REG_IME = 0;
@@ -109,7 +109,7 @@ static void Task_DiplomaWaitForKeyPress(u8 taskId)
{
if (gMain.newKeys & (A_BUTTON | B_BUTTON))
{
- BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gTasks[taskId].func = Task_DiplomaFadeOut;
}
}
diff --git a/src/easy_chat_1.c b/src/easy_chat_1.c
index 4b64846f9..4f5c71518 100644
--- a/src/easy_chat_1.c
+++ b/src/easy_chat_1.c
@@ -328,7 +328,7 @@ void sub_80E62F8(void)
SetVBlankCallback(sub_80E6A6C);
break;
case 7:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
break;
case 8:
REG_DISPCNT = 0x1F40;
@@ -1227,7 +1227,7 @@ void sub_80E752C(void)
switch (gEasyChatStruct->unk24)
{
case 0:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gEasyChatStruct->unk24++;
break;
case 1:
diff --git a/src/easy_chat_2.c b/src/easy_chat_2.c
index ed6a97ba2..7cf4d87b9 100644
--- a/src/easy_chat_2.c
+++ b/src/easy_chat_2.c
@@ -1,6 +1,6 @@
#include "global.h"
#include "constants/easy_chat.h"
-#include "constants/map_objects.h"
+#include "constants/event_objects.h"
#include "data2.h"
#include "decompress.h"
#include "easy_chat.h"
@@ -19,6 +19,12 @@
#include "trig.h"
#include "scanline_effect.h"
+#include "data/text/easy_chat/group_words.h"
+#include "data/text/easy_chat/words_by_letter.h"
+#include "data/text/easy_chat/group_sizes.h"
+#include "data/text/easy_chat/group_orders.h"
+#include "data/text/easy_chat/group_name_table.h"
+
extern void sub_8095C8C();
extern void sub_809D104(void *, u16, u16, const void *, u16, u16, u16, u16);
@@ -734,10 +740,10 @@ void sub_80E8BF4(u8 reporter, u8 b)
{
case 0: // Gabby
default:
- gabbyTyGfxId = MAP_OBJ_GFX_REPORTER_M;
+ gabbyTyGfxId = EVENT_OBJ_GFX_REPORTER_M;
break;
case 1: // Ty
- gabbyTyGfxId = MAP_OBJ_GFX_REPORTER_F;
+ gabbyTyGfxId = EVENT_OBJ_GFX_REPORTER_F;
break;
}
@@ -745,8 +751,8 @@ void sub_80E8BF4(u8 reporter, u8 b)
LoadSpritePalette(&gUnknown_083DBD38);
CreateSprite(&gSpriteTemplate_83DBD48, x, y, 1);
- spriteId = AddPseudoFieldObject(
- (gSaveBlock2.playerGender == MALE) ? MAP_OBJ_GFX_RIVAL_BRENDAN_NORMAL : MAP_OBJ_GFX_RIVAL_MAY_NORMAL,
+ spriteId = AddPseudoEventObject(
+ (gSaveBlock2.playerGender == MALE) ? EVENT_OBJ_GFX_RIVAL_BRENDAN_NORMAL : EVENT_OBJ_GFX_RIVAL_MAY_NORMAL,
SpriteCallbackDummy, x - 12, y, 0);
if (spriteId != MAX_SPRITES)
{
@@ -754,7 +760,7 @@ void sub_80E8BF4(u8 reporter, u8 b)
StartSpriteAnim(&gSprites[spriteId], 3);
}
- spriteId = AddPseudoFieldObject(gabbyTyGfxId, SpriteCallbackDummy, x + 12, y, 0);
+ spriteId = AddPseudoEventObject(gabbyTyGfxId, SpriteCallbackDummy, x + 12, y, 0);
if (spriteId != MAX_SPRITES)
{
gSprites[spriteId].oam.priority = 0;
@@ -1176,7 +1182,7 @@ void sub_80E9368(u8 a)
gEasyChatStruct->unk9F8E[2] = 1;
if (r4 != NULL)
{
- sub_8072C74(gEasyChatStruct->unk9F8E + 3, r4, 240, 2);
+ AlignStringInMenuWindow(gEasyChatStruct->unk9F8E + 3, r4, 240, 2);
Menu_PrintText(gEasyChatStruct->unk9F8E, 0, 0);
}
else
@@ -2067,11 +2073,6 @@ void sub_80EAD08(void)
}
}
-extern const u8 *const gEasyChatGroupNames[];
-extern const u8 gEasyChatGroupSizes[];
-extern const u16 gEasyChatWordsByLetter[];
-extern const u16 gEasyChatWordsAlphabetized[];
-
u8 *CopyEasyChatGroupName(u8 *dest, u8 group, int unused)
{
return StringCopy(dest, gEasyChatGroupNames[group]);
@@ -2133,7 +2134,7 @@ u16 sub_80EAE88(u8 group)
}
#if GERMAN
-__attribute__((naked))
+NAKED
void sub_80EAECC(void)
{
asm(".syntax unified\n\
@@ -2369,10 +2370,6 @@ void sub_80EAECC(void)
}
#endif
-extern const u8 *const gEasyChatGroupWords[];
-extern const u16 *const gEasyChatGroupOrders[];
-extern const u8 gEasyChatGroupSizes[];
-
// loads strings of all easy chat words except for the species and move names.
void LoadEasyChatStrings(void)
{
@@ -3011,6 +3008,7 @@ static u16 sub_80EB9D8(void)
u16 *speciesList;
u16 local1;
u16 i;
+ u8 topsize;
local1 = sub_80EAE88(0);
@@ -3019,7 +3017,7 @@ static u16 sub_80EB9D8(void)
local1 = Random() % local1;
speciesList = (u16 *)gEasyChatGroupWords[EC_GROUP_POKEMON_1];
- for (i = 0; i < gEasyChatGroupSizes[EC_GROUP_POKEMON_1]; i++)
+ for (i = 0, topsize = gEasyChatGroupSizes[EC_GROUP_POKEMON_1]; i < topsize; i++)
{
const u16 dexNum = SpeciesToNationalPokedexNum(*speciesList);
const u8 local2 = GetSetPokedexFlag(dexNum, 0);
diff --git a/src/egg_hatch.c b/src/egg_hatch.c
index 282ad31fb..580ec6886 100644
--- a/src/egg_hatch.c
+++ b/src/egg_hatch.c
@@ -40,9 +40,9 @@ struct EggHatchData
struct EggHatchData* gEggHatchData;
-extern const u32 gUnknown_08D00000[];
-extern const u32 gUnknown_08D00524[];
-extern const u16 gUnknown_08D004E0[]; //palette
+extern const u32 gBattleTextboxTiles[];
+extern const u32 gBattleTextboxTilemap[];
+extern const u16 gBattleTextboxPalette[]; //palette
extern const struct SpriteSheet sUnknown_0820A3B0;
extern const struct SpriteSheet sUnknown_0820A3B8;
extern const struct SpritePalette sUnknown_0820A3C0;
@@ -244,7 +244,7 @@ static void CreatedHatchedMon(struct Pokemon *egg, struct Pokemon *temp)
markings = GetMonData(egg, MON_DATA_MARKINGS);
pokerus = GetMonData(egg, MON_DATA_POKERUS);
- CreateMon(temp, species, 5, 32, TRUE, personality, 0, 0);
+ CreateMon(temp, species, EGG_HATCH_LEVEL, 32, TRUE, personality, 0, 0);
for (i = 0; i < 4; i++)
{
@@ -317,7 +317,7 @@ static bool8 sub_8042ABC(void* a, u8 b)
}
#else
-__attribute__((naked))
+NAKED
static bool8 sub_8042ABC(void* a, u8 b)
{
asm(".syntax unified\n\
@@ -441,7 +441,7 @@ void EggHatch(void)
{
ScriptContext2_Enable();
CreateTask(Task_EggHatch, 10);
- BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
}
static void Task_EggHatch(u8 taskID)
@@ -478,10 +478,10 @@ static void CB2_EggHatch_0(void)
gMain.state++;
break;
case 2:
- LZDecompressVram(&gUnknown_08D00000, (void*)(VRAM));
- CpuSet(&gUnknown_08D00524, ewram0_7, 0x800);
+ LZDecompressVram(&gBattleTextboxTiles, (void*)(VRAM));
+ CpuSet(&gBattleTextboxTilemap, ewram0_7, 0x800);
DmaCopy16(3, ewram0_7, (void*)(VRAM + 0x2800), 0x500);
- LoadCompressedPalette(&gUnknown_08D004E0, 0, 0x20);
+ LoadCompressedPalette(&gBattleTextboxPalette, 0, 0x20);
gMain.state++;
break;
case 3:
@@ -554,7 +554,7 @@ static void CB2_EggHatch_1(void)
switch (gEggHatchData->CB2_state)
{
case 0:
- BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
REG_DISPCNT = 0x1740;
gEggHatchData->CB2_state++;
CreateTask(Task_EggHatchPlayBGM, 5);
@@ -629,7 +629,7 @@ static void CB2_EggHatch_1(void)
}
break;
case 10:
- BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gEggHatchData->CB2_state++;
break;
case 11:
@@ -730,7 +730,7 @@ static void SpriteCB_Egg_4(struct Sprite* sprite)
{
s16 i;
if (sprite->data[0] == 0)
- BeginNormalPaletteFade(-1, -1, 0, 0x10, 0xFFFF);
+ BeginNormalPaletteFade(0xFFFFFFFF, -1, 0, 16, FADE_COLOR_WHITE);
if (sprite->data[0] < 4u)
{
for (i = 0; i <= 3; i++)
@@ -754,7 +754,7 @@ static void SpriteCB_Egg_5(struct Sprite* sprite)
StartSpriteAffineAnim(&gSprites[gEggHatchData->pokeSpriteID], 1);
}
if (sprite->data[0] == 8)
- BeginNormalPaletteFade(-1, -1, 0x10, 0, 0xFFFF);
+ BeginNormalPaletteFade(0xFFFFFFFF, -1, 16, 0, FADE_COLOR_WHITE);
if (sprite->data[0] <= 9)
gSprites[gEggHatchData->pokeSpriteID].pos1.y -= 1;
if (sprite->data[0] > 40)
diff --git a/src/event_data.c b/src/event_data.c
index 9d6d2372b..bfa9ff821 100644
--- a/src/event_data.c
+++ b/src/event_data.c
@@ -136,7 +136,7 @@ bool8 VarSet(u16 id, u16 value)
return TRUE;
}
-u8 VarGetFieldObjectGraphicsId(u8 id)
+u8 VarGetEventObjectGraphicsId(u8 id)
{
return VarGet(VAR_OBJ_GFX_ID_0 + id);
}
diff --git a/src/map_obj_lock.c b/src/event_obj_lock.c
index 3bd25dbdf..33f37e87e 100644
--- a/src/map_obj_lock.c
+++ b/src/event_obj_lock.c
@@ -1,5 +1,5 @@
#include "global.h"
-#include "map_obj_lock.h"
+#include "event_obj_lock.h"
#include "event_object_movement.h"
#include "field_player_avatar.h"
#include "script_movement.h"
@@ -37,9 +37,9 @@ bool8 sub_8064CFC(void)
}
}
-void ScriptFreezeMapObjects(void)
+void ScriptFreezeEventObjects(void)
{
- FreezeMapObjects();
+ FreezeEventObjects();
CreateTask(sub_8064CDC, 80);
}
@@ -52,9 +52,9 @@ void sub_8064D38(u8 taskId)
sub_80594C0();
task->data[0] = 1;
}
- if (!task->data[1] && !gMapObjects[gSelectedMapObject].mapobj_bit_1)
+ if (!task->data[1] && !gEventObjects[gSelectedEventObject].singleMovementActive)
{
- FreezeMapObject(&gMapObjects[gSelectedMapObject]);
+ FreezeEventObject(&gEventObjects[gSelectedEventObject]);
task->data[1] = 1;
}
if (task->data[0] && task->data[1])
@@ -74,44 +74,44 @@ bool8 sub_8064DB4(void)
}
}
-void LockSelectedMapObject(void)
+void LockSelectedEventObject(void)
{
u8 taskId;
- FreezeMapObjectsExceptOne(gSelectedMapObject);
+ FreezeEventObjectsExceptOne(gSelectedEventObject);
taskId = CreateTask(sub_8064D38, 80);
- if (!gMapObjects[gSelectedMapObject].mapobj_bit_1)
+ if (!gEventObjects[gSelectedEventObject].singleMovementActive)
{
- FreezeMapObject(&gMapObjects[gSelectedMapObject]);
+ FreezeEventObject(&gEventObjects[gSelectedEventObject]);
gTasks[taskId].data[1] = 1;
}
}
-void sub_8064E2C(void)
+void ScriptUnfreezeEventObjects(void)
{
- u8 objectId = GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0);
- FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[objectId]);
+ u8 playerObjectId = GetEventObjectIdByLocalIdAndMap(0xFF, 0, 0);
+ EventObjectClearHeldMovementIfFinished(&gEventObjects[playerObjectId]);
sub_80A2178();
- UnfreezeMapObjects();
+ UnfreezeEventObjects();
}
void unref_sub_8064E5C(void)
{
- u8 objectId;
+ u8 playerObjectId;
- if (gMapObjects[gSelectedMapObject].active)
- FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[gSelectedMapObject]);
- objectId = GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0);
- FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[objectId]);
+ if (gEventObjects[gSelectedEventObject].active)
+ EventObjectClearHeldMovementIfFinished(&gEventObjects[gSelectedEventObject]);
+ playerObjectId = GetEventObjectIdByLocalIdAndMap(0xFF, 0, 0);
+ EventObjectClearHeldMovementIfFinished(&gEventObjects[playerObjectId]);
sub_80A2178();
- UnfreezeMapObjects();
+ UnfreezeEventObjects();
}
void sub_8064EAC(void)
{
- FieldObjectFaceOppositeDirection(&gMapObjects[gSelectedMapObject], gSpecialVar_Facing);
+ EventObjectFaceOppositeDirection(&gEventObjects[gSelectedEventObject], gSpecialVar_Facing);
}
void sub_8064ED4(void)
{
- FieldObjectClearAnimIfSpecialAnimActive(&gMapObjects[gSelectedMapObject]);
+ EventObjectClearHeldMovementIfActive(&gEventObjects[gSelectedEventObject]);
}
diff --git a/src/event_object_movement.c b/src/event_object_movement.c
index 155ce33f5..5d498c1ff 100644
--- a/src/event_object_movement.c
+++ b/src/event_object_movement.c
@@ -12,1726 +12,466 @@
#include "overworld.h"
#include "sprite.h"
#include "metatile_behavior.h"
-#include "constants/maps.h"
-#include "constants/map_objects.h"
#include "trainer_see.h"
+#include "constants/field_effects.h"
+#include "constants/maps.h"
+#include "constants/event_objects.h"
// this file was known as evobjmv.c in Game Freak's original source
-// rodata
-
-const u8 gUnknown_0830FD14[] = {1, 1, 6, 7, 8, 9, 6, 7, 8, 9, 11, 11, 0, 0, 0, 0};
+static u8 MovementType_BerryTreeGrowth_Callback(struct EventObject*, struct Sprite*);
+static u8 MovementType_Disguise_Callback(struct EventObject*, struct Sprite*);
+static u8 MovementType_Hidden_Callback(struct EventObject*, struct Sprite*);
+static bool8 IsCoordOutsideEventObjectMovementRange(struct EventObject*, s16, s16);
+static bool8 DoesObjectCollideWithObjectAt(struct EventObject*, s16, s16);
+static bool8 IsMetatileDirectionallyImpassable(struct EventObject*, s16, s16, u8);
+static void ClearEventObjectMovement(struct EventObject*, struct Sprite *sprite);
+static void EventObjectSetSingleMovement(struct EventObject*, struct Sprite*, u8);
+static u8 EventObjectExecSingleMovementAction(struct EventObject*, struct Sprite*);
+static void SetMovementDelay(struct Sprite*, s16);
+static u8 WaitForMovementDelay(struct Sprite*);
+static u8 GetCollisionInDirection(struct EventObject*, u8);
+static void MoveCoordsInDirection(u32, s16 *, s16 *, s16, s16);
+static void DoGroundEffects_OnSpawn(struct EventObject*, struct Sprite*);
+static void DoGroundEffects_OnBeginStep(struct EventObject*, struct Sprite*);
+static void DoGroundEffects_OnFinishStep(struct EventObject*, struct Sprite*);
+static void UpdateEventObjectSpriteAnimPause(struct EventObject*, struct Sprite*);
+static void TryEnableEventObjectAnim(struct EventObject*, struct Sprite*);
+static void EventObjectExecHeldMovementAction(struct EventObject*, struct Sprite*);
+static void EventObjectUpdateSubpriority(struct EventObject*, struct Sprite*);
+static void UpdateEventObjectVisibility(struct EventObject*, struct Sprite*);
+static void UpdateEventObjectIsOffscreen(struct EventObject*, struct Sprite*);
+static void UpdateEventObjSpriteVisibility(struct EventObject*, struct Sprite*);
+static void nullsub(struct EventObject*, struct Sprite*, u8);
+static void DoTracksGroundEffect_Footprints(struct EventObject*, struct Sprite*, u8);
+static void DoTracksGroundEffect_BikeTireTracks(struct EventObject*, struct Sprite*, u8);
+static u8 GetReflectionTypeByMetatileBehavior(u32);
+static void Step1(struct Sprite *sprite, u8 direction);
+static void Step2(struct Sprite *sprite, u8 direction);
+static void Step3(struct Sprite *sprite, u8 direction);
+static void Step4(struct Sprite *sprite, u8 direction);
+static void Step8(struct Sprite *sprite, u8 direction);
+static void oamt_npc_ministep_reset(struct Sprite*, u8, u8);
+static void CameraObject_0(struct Sprite *);
+static void CameraObject_1(struct Sprite *);
+static void CameraObject_2(struct Sprite *);
+static void ObjectCB_CameraObject(struct Sprite *sprite);
+static bool8 EventObjectZCoordIsCompatible(struct EventObject*, u8);
+static struct EventObjectTemplate *FindEventObjectTemplateByLocalId(u8, struct EventObjectTemplate*, u8);
+static void UpdateEventObjectSpriteSubpriorityAndVisibility(struct Sprite *);
+static void InitObjectPriorityByZCoord(struct Sprite *sprite, u8 z);
+static void CreateReflectionEffectSprites(void);
+
+const u8 gReflectionEffectPaletteMap[] = {1, 1, 6, 7, 8, 9, 6, 7, 8, 9, 11, 11, 0, 0, 0, 0};
+
+const struct SpriteTemplate gCameraSpriteTemplate = {0, 0xFFFF, &gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, ObjectCB_CameraObject};
-void ObjectCB_CameraObject(struct Sprite *sprite);
-const struct SpriteTemplate gSpriteTemplate_830FD24 = {0, 0xFFFF, &gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, ObjectCB_CameraObject};
-
-void CameraObject_0(struct Sprite *);
-void CameraObject_1(struct Sprite *);
-void CameraObject_2(struct Sprite *);
void (*const gCameraObjectFuncs[])(struct Sprite *) = {
CameraObject_0,
CameraObject_1,
CameraObject_2,
};
-const u32 gMapObjectPic_BrendanNormal_0[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/normal/00.4bpp");
-const u32 gMapObjectPic_BrendanNormal_1[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/normal/01.4bpp");
-const u32 gMapObjectPic_BrendanNormal_2[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/normal/02.4bpp");
-const u32 gMapObjectPic_BrendanNormal_3[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/normal/03.4bpp");
-const u32 gMapObjectPic_BrendanNormal_4[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/normal/04.4bpp");
-const u32 gMapObjectPic_BrendanNormal_5[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/normal/05.4bpp");
-const u32 gMapObjectPic_BrendanNormal_6[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/normal/06.4bpp");
-const u32 gMapObjectPic_BrendanNormal_7[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/normal/07.4bpp");
-const u32 gMapObjectPic_BrendanNormal_8[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/normal/08.4bpp");
-const u32 gMapObjectPic_BrendanNormal_9[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/normal/09.4bpp");
-const u32 gMapObjectPic_BrendanNormal_10[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/normal/10.4bpp");
-const u32 gMapObjectPic_BrendanNormal_11[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/normal/11.4bpp");
-const u32 gMapObjectPic_BrendanNormal_12[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/normal/12.4bpp");
-const u32 gMapObjectPic_BrendanNormal_13[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/normal/13.4bpp");
-const u32 gMapObjectPic_BrendanNormal_14[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/normal/14.4bpp");
-const u32 gMapObjectPic_BrendanNormal_15[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/normal/15.4bpp");
-const u32 gMapObjectPic_BrendanNormal_16[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/normal/16.4bpp");
-const u32 gMapObjectPic_BrendanNormal_17[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/normal/17.4bpp");
-const u16 gMapObjectPalette8[] = INCBIN_U16("graphics/map_objects/palettes/08.gbapal");
-const u16 NullPalette_8310F68[16] = {};
-const u16 NullPalette_8310F88[16] = {};
-const u16 NullPalette_8310FA8[16] = {};
-const u16 NullPalette_8310FC8[16] = {};
-const u16 NullPalette_8310FE8[16] = {};
-const u16 NullPalette_8311008[16] = {};
-const u16 NullPalette_8311028[16] = {};
-const u16 NullPalette_8311048[16] = {};
-const u16 NullPalette_8311068[16] = {};
-const u16 NullPalette_8311088[16] = {};
-const u16 NullPalette_83110A8[16] = {};
-const u16 NullPalette_83110C8[16] = {};
-const u16 NullPalette_83110E8[16] = {};
-const u16 NullPalette_8311108[16] = {};
-const u16 NullPalette_8311128[16] = {};
-const u16 gMapObjectPalette9[] = INCBIN_U16("graphics/map_objects/palettes/09.gbapal");
-const u16 gMapObjectPalette10[] = INCBIN_U16("graphics/map_objects/palettes/10.gbapal");
-const u32 gMapObjectPic_BrendanFieldMove_0[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/field_move/0.4bpp");
-const u32 gMapObjectPic_BrendanFieldMove_1[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/field_move/1.4bpp");
-const u32 gMapObjectPic_BrendanFieldMove_2[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/field_move/2.4bpp");
-const u32 gMapObjectPic_BrendanFieldMove_3[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/field_move/3.4bpp");
-const u32 gMapObjectPic_BrendanFieldMove_4[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/field_move/4.4bpp");
-const u32 gMapObjectPic_BrendanSurfing_0[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/surfing/0.4bpp");
-const u32 gMapObjectPic_BrendanSurfing_3[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/surfing/3.4bpp");
-const u32 gMapObjectPic_BrendanSurfing_1[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/surfing/1.4bpp");
-const u32 gMapObjectPic_BrendanSurfing_4[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/surfing/4.4bpp");
-const u32 gMapObjectPic_BrendanSurfing_2[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/surfing/2.4bpp");
-const u32 gMapObjectPic_BrendanSurfing_5[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/surfing/5.4bpp");
-const u32 gMapObjectPic_BrendanMachBike_0[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/mach_bike/0.4bpp");
-const u32 gMapObjectPic_BrendanMachBike_1[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/mach_bike/1.4bpp");
-const u32 gMapObjectPic_BrendanMachBike_2[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/mach_bike/2.4bpp");
-const u32 gMapObjectPic_BrendanMachBike_3[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/mach_bike/3.4bpp");
-const u32 gMapObjectPic_BrendanMachBike_4[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/mach_bike/4.4bpp");
-const u32 gMapObjectPic_BrendanMachBike_5[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/mach_bike/5.4bpp");
-const u32 gMapObjectPic_BrendanMachBike_6[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/mach_bike/6.4bpp");
-const u32 gMapObjectPic_BrendanMachBike_7[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/mach_bike/7.4bpp");
-const u32 gMapObjectPic_BrendanMachBike_8[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/mach_bike/8.4bpp");
-const u32 gMapObjectPic_BrendanAcroBike_0[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/acro_bike/00.4bpp");
-const u32 gMapObjectPic_BrendanAcroBike_1[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/acro_bike/01.4bpp");
-const u32 gMapObjectPic_BrendanAcroBike_2[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/acro_bike/02.4bpp");
-const u32 gMapObjectPic_BrendanAcroBike_3[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/acro_bike/03.4bpp");
-const u32 gMapObjectPic_BrendanAcroBike_4[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/acro_bike/04.4bpp");
-const u32 gMapObjectPic_BrendanAcroBike_5[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/acro_bike/05.4bpp");
-const u32 gMapObjectPic_BrendanAcroBike_6[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/acro_bike/06.4bpp");
-const u32 gMapObjectPic_BrendanAcroBike_7[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/acro_bike/07.4bpp");
-const u32 gMapObjectPic_BrendanAcroBike_8[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/acro_bike/08.4bpp");
-const u32 gMapObjectPic_BrendanAcroBike_9[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/acro_bike/09.4bpp");
-const u32 gMapObjectPic_BrendanAcroBike_10[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/acro_bike/10.4bpp");
-const u32 gMapObjectPic_BrendanAcroBike_11[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/acro_bike/11.4bpp");
-const u32 gMapObjectPic_BrendanAcroBike_12[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/acro_bike/12.4bpp");
-const u32 gMapObjectPic_BrendanAcroBike_13[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/acro_bike/13.4bpp");
-const u32 gMapObjectPic_BrendanAcroBike_14[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/acro_bike/14.4bpp");
-const u32 gMapObjectPic_BrendanAcroBike_15[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/acro_bike/15.4bpp");
-const u32 gMapObjectPic_BrendanAcroBike_16[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/acro_bike/16.4bpp");
-const u32 gMapObjectPic_BrendanAcroBike_17[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/acro_bike/17.4bpp");
-const u32 gMapObjectPic_BrendanAcroBike_18[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/acro_bike/18.4bpp");
-const u32 gMapObjectPic_BrendanAcroBike_19[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/acro_bike/19.4bpp");
-const u32 gMapObjectPic_BrendanAcroBike_20[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/acro_bike/20.4bpp");
-const u32 gMapObjectPic_BrendanAcroBike_21[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/acro_bike/21.4bpp");
-const u32 gMapObjectPic_BrendanAcroBike_22[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/acro_bike/22.4bpp");
-const u32 gMapObjectPic_BrendanAcroBike_23[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/acro_bike/23.4bpp");
-const u32 gMapObjectPic_BrendanAcroBike_24[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/acro_bike/24.4bpp");
-const u32 gMapObjectPic_BrendanAcroBike_25[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/acro_bike/25.4bpp");
-const u32 gMapObjectPic_BrendanAcroBike_26[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/acro_bike/26.4bpp");
-const u32 gMapObjectPic_BrendanFishing_0[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/fishing/00.4bpp");
-const u32 gMapObjectPic_BrendanFishing_1[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/fishing/01.4bpp");
-const u32 gMapObjectPic_BrendanFishing_2[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/fishing/02.4bpp");
-const u32 gMapObjectPic_BrendanFishing_3[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/fishing/03.4bpp");
-const u32 gMapObjectPic_BrendanFishing_4[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/fishing/04.4bpp");
-const u32 gMapObjectPic_BrendanFishing_5[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/fishing/05.4bpp");
-const u32 gMapObjectPic_BrendanFishing_6[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/fishing/06.4bpp");
-const u32 gMapObjectPic_BrendanFishing_7[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/fishing/07.4bpp");
-const u32 gMapObjectPic_BrendanFishing_8[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/fishing/08.4bpp");
-const u32 gMapObjectPic_BrendanFishing_9[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/fishing/09.4bpp");
-const u32 gMapObjectPic_BrendanFishing_10[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/fishing/10.4bpp");
-const u32 gMapObjectPic_BrendanFishing_11[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/fishing/11.4bpp");
-const u32 gMapObjectPic_BrendanWatering_0[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/watering/0.4bpp");
-const u32 gMapObjectPic_BrendanWatering_3[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/watering/3.4bpp");
-const u32 gMapObjectPic_BrendanWatering_1[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/watering/1.4bpp");
-const u32 gMapObjectPic_BrendanWatering_4[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/watering/4.4bpp");
-const u32 gMapObjectPic_BrendanWatering_2[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/watering/2.4bpp");
-const u32 gMapObjectPic_BrendanWatering_5[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/watering/5.4bpp");
-const u32 gMapObjectPic_BrendanDecorating[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/decorating.4bpp");
-const u32 gMapObjectPic_MayDecorating[] = INCBIN_U32("graphics/map_objects/pics/people/may/decorating.4bpp");
-const u32 gMapObjectPic_BrendanUnderwater_0[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/underwater/0.4bpp");
-const u32 gMapObjectPic_BrendanUnderwater_1[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/underwater/1.4bpp");
-const u32 gMapObjectPic_BrendanUnderwater_2[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/underwater/2.4bpp");
-const u32 gMapObjectPic_BrendanUnderwater_3[] = INCBIN_U32("graphics/map_objects/pics/people/brendan/underwater/3.4bpp");
-const u32 gMapObjectPic_MayUnderwater_0[] = INCBIN_U32("graphics/map_objects/pics/people/may/underwater/0.4bpp");
-const u32 gMapObjectPic_MayUnderwater_1[] = INCBIN_U32("graphics/map_objects/pics/people/may/underwater/1.4bpp");
-const u32 gMapObjectPic_MayUnderwater_2[] = INCBIN_U32("graphics/map_objects/pics/people/may/underwater/2.4bpp");
-const u32 gMapObjectPic_MayUnderwater_3[] = INCBIN_U32("graphics/map_objects/pics/people/may/underwater/3.4bpp");
-const u16 gMapObjectPalette11[] = INCBIN_U16("graphics/map_objects/palettes/11.gbapal");
-const u32 gMapObjectPic_MayNormal_0[] = INCBIN_U32("graphics/map_objects/pics/people/may/normal/00.4bpp");
-const u32 gMapObjectPic_MayNormal_1[] = INCBIN_U32("graphics/map_objects/pics/people/may/normal/01.4bpp");
-const u32 gMapObjectPic_MayNormal_2[] = INCBIN_U32("graphics/map_objects/pics/people/may/normal/02.4bpp");
-const u32 gMapObjectPic_MayNormal_3[] = INCBIN_U32("graphics/map_objects/pics/people/may/normal/03.4bpp");
-const u32 gMapObjectPic_MayNormal_4[] = INCBIN_U32("graphics/map_objects/pics/people/may/normal/04.4bpp");
-const u32 gMapObjectPic_MayNormal_5[] = INCBIN_U32("graphics/map_objects/pics/people/may/normal/05.4bpp");
-const u32 gMapObjectPic_MayNormal_6[] = INCBIN_U32("graphics/map_objects/pics/people/may/normal/06.4bpp");
-const u32 gMapObjectPic_MayNormal_7[] = INCBIN_U32("graphics/map_objects/pics/people/may/normal/07.4bpp");
-const u32 gMapObjectPic_MayNormal_8[] = INCBIN_U32("graphics/map_objects/pics/people/may/normal/08.4bpp");
-const u32 gMapObjectPic_MayNormal_9[] = INCBIN_U32("graphics/map_objects/pics/people/may/normal/09.4bpp");
-const u32 gMapObjectPic_MayNormal_10[] = INCBIN_U32("graphics/map_objects/pics/people/may/normal/10.4bpp");
-const u32 gMapObjectPic_MayNormal_11[] = INCBIN_U32("graphics/map_objects/pics/people/may/normal/11.4bpp");
-const u32 gMapObjectPic_MayNormal_12[] = INCBIN_U32("graphics/map_objects/pics/people/may/normal/12.4bpp");
-const u32 gMapObjectPic_MayNormal_13[] = INCBIN_U32("graphics/map_objects/pics/people/may/normal/13.4bpp");
-const u32 gMapObjectPic_MayNormal_14[] = INCBIN_U32("graphics/map_objects/pics/people/may/normal/14.4bpp");
-const u32 gMapObjectPic_MayNormal_15[] = INCBIN_U32("graphics/map_objects/pics/people/may/normal/15.4bpp");
-const u32 gMapObjectPic_MayNormal_16[] = INCBIN_U32("graphics/map_objects/pics/people/may/normal/16.4bpp");
-const u32 gMapObjectPic_MayNormal_17[] = INCBIN_U32("graphics/map_objects/pics/people/may/normal/17.4bpp");
-const u16 gMapObjectPalette17[] = INCBIN_U16("graphics/map_objects/palettes/17.gbapal");
-const u16 gMapObjectPalette18[] = INCBIN_U16("graphics/map_objects/palettes/18.gbapal");
-const u16 NullPalette_831B7E8[16] = {};
-const u16 NullPalette_831B808[16] = {};
-const u16 NullPalette_831B828[16] = {};
-const u16 NullPalette_831B848[16] = {};
-const u16 NullPalette_831B868[16] = {};
-const u16 NullPalette_831B888[16] = {};
-const u16 NullPalette_831B8A8[16] = {};
-const u16 NullPalette_831B8C8[16] = {};
-const u16 NullPalette_831B8E8[16] = {};
-const u16 NullPalette_831B908[16] = {};
-const u16 NullPalette_831B928[16] = {};
-const u16 NullPalette_831B948[16] = {};
-const u16 NullPalette_831B968[16] = {};
-const u16 NullPalette_831B988[16] = {};
-const u32 gMapObjectPic_MayMachBike_0[] = INCBIN_U32("graphics/map_objects/pics/people/may/mach_bike/0.4bpp");
-const u32 gMapObjectPic_MayMachBike_1[] = INCBIN_U32("graphics/map_objects/pics/people/may/mach_bike/1.4bpp");
-const u32 gMapObjectPic_MayMachBike_2[] = INCBIN_U32("graphics/map_objects/pics/people/may/mach_bike/2.4bpp");
-const u32 gMapObjectPic_MayMachBike_3[] = INCBIN_U32("graphics/map_objects/pics/people/may/mach_bike/3.4bpp");
-const u32 gMapObjectPic_MayMachBike_4[] = INCBIN_U32("graphics/map_objects/pics/people/may/mach_bike/4.4bpp");
-const u32 gMapObjectPic_MayMachBike_5[] = INCBIN_U32("graphics/map_objects/pics/people/may/mach_bike/5.4bpp");
-const u32 gMapObjectPic_MayMachBike_6[] = INCBIN_U32("graphics/map_objects/pics/people/may/mach_bike/6.4bpp");
-const u32 gMapObjectPic_MayMachBike_7[] = INCBIN_U32("graphics/map_objects/pics/people/may/mach_bike/7.4bpp");
-const u32 gMapObjectPic_MayMachBike_8[] = INCBIN_U32("graphics/map_objects/pics/people/may/mach_bike/8.4bpp");
-const u32 gMapObjectPic_MayAcroBike_0[] = INCBIN_U32("graphics/map_objects/pics/people/may/acro_bike/00.4bpp");
-const u32 gMapObjectPic_MayAcroBike_1[] = INCBIN_U32("graphics/map_objects/pics/people/may/acro_bike/01.4bpp");
-const u32 gMapObjectPic_MayAcroBike_2[] = INCBIN_U32("graphics/map_objects/pics/people/may/acro_bike/02.4bpp");
-const u32 gMapObjectPic_MayAcroBike_3[] = INCBIN_U32("graphics/map_objects/pics/people/may/acro_bike/03.4bpp");
-const u32 gMapObjectPic_MayAcroBike_4[] = INCBIN_U32("graphics/map_objects/pics/people/may/acro_bike/04.4bpp");
-const u32 gMapObjectPic_MayAcroBike_5[] = INCBIN_U32("graphics/map_objects/pics/people/may/acro_bike/05.4bpp");
-const u32 gMapObjectPic_MayAcroBike_6[] = INCBIN_U32("graphics/map_objects/pics/people/may/acro_bike/06.4bpp");
-const u32 gMapObjectPic_MayAcroBike_7[] = INCBIN_U32("graphics/map_objects/pics/people/may/acro_bike/07.4bpp");
-const u32 gMapObjectPic_MayAcroBike_8[] = INCBIN_U32("graphics/map_objects/pics/people/may/acro_bike/08.4bpp");
-const u32 gMapObjectPic_MayAcroBike_9[] = INCBIN_U32("graphics/map_objects/pics/people/may/acro_bike/09.4bpp");
-const u32 gMapObjectPic_MayAcroBike_10[] = INCBIN_U32("graphics/map_objects/pics/people/may/acro_bike/10.4bpp");
-const u32 gMapObjectPic_MayAcroBike_11[] = INCBIN_U32("graphics/map_objects/pics/people/may/acro_bike/11.4bpp");
-const u32 gMapObjectPic_MayAcroBike_12[] = INCBIN_U32("graphics/map_objects/pics/people/may/acro_bike/12.4bpp");
-const u32 gMapObjectPic_MayAcroBike_13[] = INCBIN_U32("graphics/map_objects/pics/people/may/acro_bike/13.4bpp");
-const u32 gMapObjectPic_MayAcroBike_14[] = INCBIN_U32("graphics/map_objects/pics/people/may/acro_bike/14.4bpp");
-const u32 gMapObjectPic_MayAcroBike_15[] = INCBIN_U32("graphics/map_objects/pics/people/may/acro_bike/15.4bpp");
-const u32 gMapObjectPic_MayAcroBike_16[] = INCBIN_U32("graphics/map_objects/pics/people/may/acro_bike/16.4bpp");
-const u32 gMapObjectPic_MayAcroBike_17[] = INCBIN_U32("graphics/map_objects/pics/people/may/acro_bike/17.4bpp");
-const u32 gMapObjectPic_MayAcroBike_18[] = INCBIN_U32("graphics/map_objects/pics/people/may/acro_bike/18.4bpp");
-const u32 gMapObjectPic_MayAcroBike_19[] = INCBIN_U32("graphics/map_objects/pics/people/may/acro_bike/19.4bpp");
-const u32 gMapObjectPic_MayAcroBike_20[] = INCBIN_U32("graphics/map_objects/pics/people/may/acro_bike/20.4bpp");
-const u32 gMapObjectPic_MayAcroBike_21[] = INCBIN_U32("graphics/map_objects/pics/people/may/acro_bike/21.4bpp");
-const u32 gMapObjectPic_MayAcroBike_22[] = INCBIN_U32("graphics/map_objects/pics/people/may/acro_bike/22.4bpp");
-const u32 gMapObjectPic_MayAcroBike_23[] = INCBIN_U32("graphics/map_objects/pics/people/may/acro_bike/23.4bpp");
-const u32 gMapObjectPic_MayAcroBike_24[] = INCBIN_U32("graphics/map_objects/pics/people/may/acro_bike/24.4bpp");
-const u32 gMapObjectPic_MayAcroBike_25[] = INCBIN_U32("graphics/map_objects/pics/people/may/acro_bike/25.4bpp");
-const u32 gMapObjectPic_MayAcroBike_26[] = INCBIN_U32("graphics/map_objects/pics/people/may/acro_bike/26.4bpp");
-const u32 gMapObjectPic_MaySurfing_0[] = INCBIN_U32("graphics/map_objects/pics/people/may/surfing/0.4bpp");
-const u32 gMapObjectPic_MaySurfing_3[] = INCBIN_U32("graphics/map_objects/pics/people/may/surfing/3.4bpp");
-const u32 gMapObjectPic_MaySurfing_1[] = INCBIN_U32("graphics/map_objects/pics/people/may/surfing/1.4bpp");
-const u32 gMapObjectPic_MaySurfing_4[] = INCBIN_U32("graphics/map_objects/pics/people/may/surfing/4.4bpp");
-const u32 gMapObjectPic_MaySurfing_2[] = INCBIN_U32("graphics/map_objects/pics/people/may/surfing/2.4bpp");
-const u32 gMapObjectPic_MaySurfing_5[] = INCBIN_U32("graphics/map_objects/pics/people/may/surfing/5.4bpp");
-const u32 gMapObjectPic_MayFieldMove_0[] = INCBIN_U32("graphics/map_objects/pics/people/may/field_move/0.4bpp");
-const u32 gMapObjectPic_MayFieldMove_1[] = INCBIN_U32("graphics/map_objects/pics/people/may/field_move/1.4bpp");
-const u32 gMapObjectPic_MayFieldMove_2[] = INCBIN_U32("graphics/map_objects/pics/people/may/field_move/2.4bpp");
-const u32 gMapObjectPic_MayFieldMove_3[] = INCBIN_U32("graphics/map_objects/pics/people/may/field_move/3.4bpp");
-const u32 gMapObjectPic_MayFieldMove_4[] = INCBIN_U32("graphics/map_objects/pics/people/may/field_move/4.4bpp");
-const u32 gMapObjectPic_MayFishing_0[] = INCBIN_U32("graphics/map_objects/pics/people/may/fishing/00.4bpp");
-const u32 gMapObjectPic_MayFishing_1[] = INCBIN_U32("graphics/map_objects/pics/people/may/fishing/01.4bpp");
-const u32 gMapObjectPic_MayFishing_2[] = INCBIN_U32("graphics/map_objects/pics/people/may/fishing/02.4bpp");
-const u32 gMapObjectPic_MayFishing_3[] = INCBIN_U32("graphics/map_objects/pics/people/may/fishing/03.4bpp");
-const u32 gMapObjectPic_MayFishing_4[] = INCBIN_U32("graphics/map_objects/pics/people/may/fishing/04.4bpp");
-const u32 gMapObjectPic_MayFishing_5[] = INCBIN_U32("graphics/map_objects/pics/people/may/fishing/05.4bpp");
-const u32 gMapObjectPic_MayFishing_6[] = INCBIN_U32("graphics/map_objects/pics/people/may/fishing/06.4bpp");
-const u32 gMapObjectPic_MayFishing_7[] = INCBIN_U32("graphics/map_objects/pics/people/may/fishing/07.4bpp");
-const u32 gMapObjectPic_MayFishing_8[] = INCBIN_U32("graphics/map_objects/pics/people/may/fishing/08.4bpp");
-const u32 gMapObjectPic_MayFishing_9[] = INCBIN_U32("graphics/map_objects/pics/people/may/fishing/09.4bpp");
-const u32 gMapObjectPic_MayFishing_10[] = INCBIN_U32("graphics/map_objects/pics/people/may/fishing/10.4bpp");
-const u32 gMapObjectPic_MayFishing_11[] = INCBIN_U32("graphics/map_objects/pics/people/may/fishing/11.4bpp");
-const u32 gMapObjectPic_MayWatering_0[] = INCBIN_U32("graphics/map_objects/pics/people/may/watering/0.4bpp");
-const u32 gMapObjectPic_MayWatering_3[] = INCBIN_U32("graphics/map_objects/pics/people/may/watering/3.4bpp");
-const u32 gMapObjectPic_MayWatering_1[] = INCBIN_U32("graphics/map_objects/pics/people/may/watering/1.4bpp");
-const u32 gMapObjectPic_MayWatering_4[] = INCBIN_U32("graphics/map_objects/pics/people/may/watering/4.4bpp");
-const u32 gMapObjectPic_MayWatering_2[] = INCBIN_U32("graphics/map_objects/pics/people/may/watering/2.4bpp");
-const u32 gMapObjectPic_MayWatering_5[] = INCBIN_U32("graphics/map_objects/pics/people/may/watering/5.4bpp");
-const u16 gMapObjectPalette0[] = INCBIN_U16("graphics/map_objects/palettes/00.gbapal");
-const u16 gMapObjectPalette1[] = INCBIN_U16("graphics/map_objects/palettes/01.gbapal");
-const u16 gMapObjectPalette2[] = INCBIN_U16("graphics/map_objects/palettes/02.gbapal");
-const u16 gMapObjectPalette3[] = INCBIN_U16("graphics/map_objects/palettes/03.gbapal");
-const u16 gMapObjectPalette4[] = INCBIN_U16("graphics/map_objects/palettes/04.gbapal");
-const u16 gMapObjectPalette5[] = INCBIN_U16("graphics/map_objects/palettes/05.gbapal");
-const u16 gMapObjectPalette6[] = INCBIN_U16("graphics/map_objects/palettes/06.gbapal");
-const u16 gMapObjectPalette7[] = INCBIN_U16("graphics/map_objects/palettes/07.gbapal");
-const u32 gMapObjectPic_LittleBoy1_0[] = INCBIN_U32("graphics/map_objects/pics/people/little_boy_1/0.4bpp");
-const u32 gMapObjectPic_LittleBoy1_1[] = INCBIN_U32("graphics/map_objects/pics/people/little_boy_1/1.4bpp");
-const u32 gMapObjectPic_LittleBoy1_2[] = INCBIN_U32("graphics/map_objects/pics/people/little_boy_1/2.4bpp");
-const u32 gMapObjectPic_LittleBoy1_3[] = INCBIN_U32("graphics/map_objects/pics/people/little_boy_1/3.4bpp");
-const u32 gMapObjectPic_LittleBoy1_4[] = INCBIN_U32("graphics/map_objects/pics/people/little_boy_1/4.4bpp");
-const u32 gMapObjectPic_LittleBoy1_5[] = INCBIN_U32("graphics/map_objects/pics/people/little_boy_1/5.4bpp");
-const u32 gMapObjectPic_LittleBoy1_6[] = INCBIN_U32("graphics/map_objects/pics/people/little_boy_1/6.4bpp");
-const u32 gMapObjectPic_LittleBoy1_7[] = INCBIN_U32("graphics/map_objects/pics/people/little_boy_1/7.4bpp");
-const u32 gMapObjectPic_LittleBoy1_8[] = INCBIN_U32("graphics/map_objects/pics/people/little_boy_1/8.4bpp");
-const u32 gMapObjectPic_LittleGirl1_0[] = INCBIN_U32("graphics/map_objects/pics/people/little_girl_1/0.4bpp");
-const u32 gMapObjectPic_LittleGirl1_1[] = INCBIN_U32("graphics/map_objects/pics/people/little_girl_1/1.4bpp");
-const u32 gMapObjectPic_LittleGirl1_2[] = INCBIN_U32("graphics/map_objects/pics/people/little_girl_1/2.4bpp");
-const u32 gMapObjectPic_LittleGirl1_3[] = INCBIN_U32("graphics/map_objects/pics/people/little_girl_1/3.4bpp");
-const u32 gMapObjectPic_LittleGirl1_4[] = INCBIN_U32("graphics/map_objects/pics/people/little_girl_1/4.4bpp");
-const u32 gMapObjectPic_LittleGirl1_5[] = INCBIN_U32("graphics/map_objects/pics/people/little_girl_1/5.4bpp");
-const u32 gMapObjectPic_LittleGirl1_6[] = INCBIN_U32("graphics/map_objects/pics/people/little_girl_1/6.4bpp");
-const u32 gMapObjectPic_LittleGirl1_7[] = INCBIN_U32("graphics/map_objects/pics/people/little_girl_1/7.4bpp");
-const u32 gMapObjectPic_LittleGirl1_8[] = INCBIN_U32("graphics/map_objects/pics/people/little_girl_1/8.4bpp");
-const u32 gMapObjectPic_Boy1_0[] = INCBIN_U32("graphics/map_objects/pics/people/boy_1/0.4bpp");
-const u32 gMapObjectPic_Boy1_1[] = INCBIN_U32("graphics/map_objects/pics/people/boy_1/1.4bpp");
-const u32 gMapObjectPic_Boy1_2[] = INCBIN_U32("graphics/map_objects/pics/people/boy_1/2.4bpp");
-const u32 gMapObjectPic_Boy1_3[] = INCBIN_U32("graphics/map_objects/pics/people/boy_1/3.4bpp");
-const u32 gMapObjectPic_Boy1_4[] = INCBIN_U32("graphics/map_objects/pics/people/boy_1/4.4bpp");
-const u32 gMapObjectPic_Boy1_5[] = INCBIN_U32("graphics/map_objects/pics/people/boy_1/5.4bpp");
-const u32 gMapObjectPic_Boy1_6[] = INCBIN_U32("graphics/map_objects/pics/people/boy_1/6.4bpp");
-const u32 gMapObjectPic_Boy1_7[] = INCBIN_U32("graphics/map_objects/pics/people/boy_1/7.4bpp");
-const u32 gMapObjectPic_Boy1_8[] = INCBIN_U32("graphics/map_objects/pics/people/boy_1/8.4bpp");
-const u32 gMapObjectPic_Girl1_0[] = INCBIN_U32("graphics/map_objects/pics/people/girl_1/0.4bpp");
-const u32 gMapObjectPic_Girl1_1[] = INCBIN_U32("graphics/map_objects/pics/people/girl_1/1.4bpp");
-const u32 gMapObjectPic_Girl1_2[] = INCBIN_U32("graphics/map_objects/pics/people/girl_1/2.4bpp");
-const u32 gMapObjectPic_Girl1_3[] = INCBIN_U32("graphics/map_objects/pics/people/girl_1/3.4bpp");
-const u32 gMapObjectPic_Girl1_4[] = INCBIN_U32("graphics/map_objects/pics/people/girl_1/4.4bpp");
-const u32 gMapObjectPic_Girl1_5[] = INCBIN_U32("graphics/map_objects/pics/people/girl_1/5.4bpp");
-const u32 gMapObjectPic_Girl1_6[] = INCBIN_U32("graphics/map_objects/pics/people/girl_1/6.4bpp");
-const u32 gMapObjectPic_Girl1_7[] = INCBIN_U32("graphics/map_objects/pics/people/girl_1/7.4bpp");
-const u32 gMapObjectPic_Girl1_8[] = INCBIN_U32("graphics/map_objects/pics/people/girl_1/8.4bpp");
-const u32 gMapObjectPic_Boy2_0[] = INCBIN_U32("graphics/map_objects/pics/people/boy_2/0.4bpp");
-const u32 gMapObjectPic_Boy2_1[] = INCBIN_U32("graphics/map_objects/pics/people/boy_2/1.4bpp");
-const u32 gMapObjectPic_Boy2_2[] = INCBIN_U32("graphics/map_objects/pics/people/boy_2/2.4bpp");
-const u32 gMapObjectPic_Boy2_3[] = INCBIN_U32("graphics/map_objects/pics/people/boy_2/3.4bpp");
-const u32 gMapObjectPic_Boy2_4[] = INCBIN_U32("graphics/map_objects/pics/people/boy_2/4.4bpp");
-const u32 gMapObjectPic_Boy2_5[] = INCBIN_U32("graphics/map_objects/pics/people/boy_2/5.4bpp");
-const u32 gMapObjectPic_Boy2_6[] = INCBIN_U32("graphics/map_objects/pics/people/boy_2/6.4bpp");
-const u32 gMapObjectPic_Boy2_7[] = INCBIN_U32("graphics/map_objects/pics/people/boy_2/7.4bpp");
-const u32 gMapObjectPic_Boy2_8[] = INCBIN_U32("graphics/map_objects/pics/people/boy_2/8.4bpp");
-const u32 gMapObjectPic_Girl2_0[] = INCBIN_U32("graphics/map_objects/pics/people/girl_2/0.4bpp");
-const u32 gMapObjectPic_Girl2_1[] = INCBIN_U32("graphics/map_objects/pics/people/girl_2/1.4bpp");
-const u32 gMapObjectPic_Girl2_2[] = INCBIN_U32("graphics/map_objects/pics/people/girl_2/2.4bpp");
-const u32 gMapObjectPic_Girl2_3[] = INCBIN_U32("graphics/map_objects/pics/people/girl_2/3.4bpp");
-const u32 gMapObjectPic_Girl2_4[] = INCBIN_U32("graphics/map_objects/pics/people/girl_2/4.4bpp");
-const u32 gMapObjectPic_Girl2_5[] = INCBIN_U32("graphics/map_objects/pics/people/girl_2/5.4bpp");
-const u32 gMapObjectPic_Girl2_6[] = INCBIN_U32("graphics/map_objects/pics/people/girl_2/6.4bpp");
-const u32 gMapObjectPic_Girl2_7[] = INCBIN_U32("graphics/map_objects/pics/people/girl_2/7.4bpp");
-const u32 gMapObjectPic_Girl2_8[] = INCBIN_U32("graphics/map_objects/pics/people/girl_2/8.4bpp");
-const u32 gMapObjectPic_LittleBoy2_0[] = INCBIN_U32("graphics/map_objects/pics/people/little_boy_2/0.4bpp");
-const u32 gMapObjectPic_LittleBoy2_1[] = INCBIN_U32("graphics/map_objects/pics/people/little_boy_2/1.4bpp");
-const u32 gMapObjectPic_LittleBoy2_2[] = INCBIN_U32("graphics/map_objects/pics/people/little_boy_2/2.4bpp");
-const u32 gMapObjectPic_LittleBoy2_3[] = INCBIN_U32("graphics/map_objects/pics/people/little_boy_2/3.4bpp");
-const u32 gMapObjectPic_LittleBoy2_4[] = INCBIN_U32("graphics/map_objects/pics/people/little_boy_2/4.4bpp");
-const u32 gMapObjectPic_LittleBoy2_5[] = INCBIN_U32("graphics/map_objects/pics/people/little_boy_2/5.4bpp");
-const u32 gMapObjectPic_LittleBoy2_6[] = INCBIN_U32("graphics/map_objects/pics/people/little_boy_2/6.4bpp");
-const u32 gMapObjectPic_LittleBoy2_7[] = INCBIN_U32("graphics/map_objects/pics/people/little_boy_2/7.4bpp");
-const u32 gMapObjectPic_LittleBoy2_8[] = INCBIN_U32("graphics/map_objects/pics/people/little_boy_2/8.4bpp");
-const u32 gMapObjectPic_LittleGirl2_0[] = INCBIN_U32("graphics/map_objects/pics/people/little_girl_2/0.4bpp");
-const u32 gMapObjectPic_LittleGirl2_1[] = INCBIN_U32("graphics/map_objects/pics/people/little_girl_2/1.4bpp");
-const u32 gMapObjectPic_LittleGirl2_2[] = INCBIN_U32("graphics/map_objects/pics/people/little_girl_2/2.4bpp");
-const u32 gMapObjectPic_LittleGirl2_3[] = INCBIN_U32("graphics/map_objects/pics/people/little_girl_2/3.4bpp");
-const u32 gMapObjectPic_LittleGirl2_4[] = INCBIN_U32("graphics/map_objects/pics/people/little_girl_2/4.4bpp");
-const u32 gMapObjectPic_LittleGirl2_5[] = INCBIN_U32("graphics/map_objects/pics/people/little_girl_2/5.4bpp");
-const u32 gMapObjectPic_LittleGirl2_6[] = INCBIN_U32("graphics/map_objects/pics/people/little_girl_2/6.4bpp");
-const u32 gMapObjectPic_LittleGirl2_7[] = INCBIN_U32("graphics/map_objects/pics/people/little_girl_2/7.4bpp");
-const u32 gMapObjectPic_LittleGirl2_8[] = INCBIN_U32("graphics/map_objects/pics/people/little_girl_2/8.4bpp");
-const u32 gMapObjectPic_Boy3_0[] = INCBIN_U32("graphics/map_objects/pics/people/boy_3/0.4bpp");
-const u32 gMapObjectPic_Boy3_1[] = INCBIN_U32("graphics/map_objects/pics/people/boy_3/1.4bpp");
-const u32 gMapObjectPic_Boy3_2[] = INCBIN_U32("graphics/map_objects/pics/people/boy_3/2.4bpp");
-const u32 gMapObjectPic_Boy3_3[] = INCBIN_U32("graphics/map_objects/pics/people/boy_3/3.4bpp");
-const u32 gMapObjectPic_Boy3_4[] = INCBIN_U32("graphics/map_objects/pics/people/boy_3/4.4bpp");
-const u32 gMapObjectPic_Boy3_5[] = INCBIN_U32("graphics/map_objects/pics/people/boy_3/5.4bpp");
-const u32 gMapObjectPic_Boy3_6[] = INCBIN_U32("graphics/map_objects/pics/people/boy_3/6.4bpp");
-const u32 gMapObjectPic_Boy3_7[] = INCBIN_U32("graphics/map_objects/pics/people/boy_3/7.4bpp");
-const u32 gMapObjectPic_Boy3_8[] = INCBIN_U32("graphics/map_objects/pics/people/boy_3/8.4bpp");
-const u32 gMapObjectPic_Girl3_0[] = INCBIN_U32("graphics/map_objects/pics/people/girl_3/0.4bpp");
-const u32 gMapObjectPic_Girl3_1[] = INCBIN_U32("graphics/map_objects/pics/people/girl_3/1.4bpp");
-const u32 gMapObjectPic_Girl3_2[] = INCBIN_U32("graphics/map_objects/pics/people/girl_3/2.4bpp");
-const u32 gMapObjectPic_Girl3_3[] = INCBIN_U32("graphics/map_objects/pics/people/girl_3/3.4bpp");
-const u32 gMapObjectPic_Girl3_4[] = INCBIN_U32("graphics/map_objects/pics/people/girl_3/4.4bpp");
-const u32 gMapObjectPic_Girl3_5[] = INCBIN_U32("graphics/map_objects/pics/people/girl_3/5.4bpp");
-const u32 gMapObjectPic_Girl3_6[] = INCBIN_U32("graphics/map_objects/pics/people/girl_3/6.4bpp");
-const u32 gMapObjectPic_Girl3_7[] = INCBIN_U32("graphics/map_objects/pics/people/girl_3/7.4bpp");
-const u32 gMapObjectPic_Girl3_8[] = INCBIN_U32("graphics/map_objects/pics/people/girl_3/8.4bpp");
-const u32 gMapObjectPic_Boy4_0[] = INCBIN_U32("graphics/map_objects/pics/people/boy_4/0.4bpp");
-const u32 gMapObjectPic_Boy4_1[] = INCBIN_U32("graphics/map_objects/pics/people/boy_4/1.4bpp");
-const u32 gMapObjectPic_Boy4_2[] = INCBIN_U32("graphics/map_objects/pics/people/boy_4/2.4bpp");
-const u32 gMapObjectPic_Boy4_3[] = INCBIN_U32("graphics/map_objects/pics/people/boy_4/3.4bpp");
-const u32 gMapObjectPic_Boy4_4[] = INCBIN_U32("graphics/map_objects/pics/people/boy_4/4.4bpp");
-const u32 gMapObjectPic_Boy4_5[] = INCBIN_U32("graphics/map_objects/pics/people/boy_4/5.4bpp");
-const u32 gMapObjectPic_Boy4_6[] = INCBIN_U32("graphics/map_objects/pics/people/boy_4/6.4bpp");
-const u32 gMapObjectPic_Boy4_7[] = INCBIN_U32("graphics/map_objects/pics/people/boy_4/7.4bpp");
-const u32 gMapObjectPic_Boy4_8[] = INCBIN_U32("graphics/map_objects/pics/people/boy_4/8.4bpp");
-const u32 gMapObjectPic_Woman1_0[] = INCBIN_U32("graphics/map_objects/pics/people/woman_1/0.4bpp");
-const u32 gMapObjectPic_Woman1_1[] = INCBIN_U32("graphics/map_objects/pics/people/woman_1/1.4bpp");
-const u32 gMapObjectPic_Woman1_2[] = INCBIN_U32("graphics/map_objects/pics/people/woman_1/2.4bpp");
-const u32 gMapObjectPic_Woman1_3[] = INCBIN_U32("graphics/map_objects/pics/people/woman_1/3.4bpp");
-const u32 gMapObjectPic_Woman1_4[] = INCBIN_U32("graphics/map_objects/pics/people/woman_1/4.4bpp");
-const u32 gMapObjectPic_Woman1_5[] = INCBIN_U32("graphics/map_objects/pics/people/woman_1/5.4bpp");
-const u32 gMapObjectPic_Woman1_6[] = INCBIN_U32("graphics/map_objects/pics/people/woman_1/6.4bpp");
-const u32 gMapObjectPic_Woman1_7[] = INCBIN_U32("graphics/map_objects/pics/people/woman_1/7.4bpp");
-const u32 gMapObjectPic_Woman1_8[] = INCBIN_U32("graphics/map_objects/pics/people/woman_1/8.4bpp");
-const u32 gMapObjectPic_FatMan_0[] = INCBIN_U32("graphics/map_objects/pics/people/fat_man/0.4bpp");
-const u32 gMapObjectPic_FatMan_1[] = INCBIN_U32("graphics/map_objects/pics/people/fat_man/1.4bpp");
-const u32 gMapObjectPic_FatMan_2[] = INCBIN_U32("graphics/map_objects/pics/people/fat_man/2.4bpp");
-const u32 gMapObjectPic_FatMan_3[] = INCBIN_U32("graphics/map_objects/pics/people/fat_man/3.4bpp");
-const u32 gMapObjectPic_FatMan_4[] = INCBIN_U32("graphics/map_objects/pics/people/fat_man/4.4bpp");
-const u32 gMapObjectPic_FatMan_5[] = INCBIN_U32("graphics/map_objects/pics/people/fat_man/5.4bpp");
-const u32 gMapObjectPic_FatMan_6[] = INCBIN_U32("graphics/map_objects/pics/people/fat_man/6.4bpp");
-const u32 gMapObjectPic_FatMan_7[] = INCBIN_U32("graphics/map_objects/pics/people/fat_man/7.4bpp");
-const u32 gMapObjectPic_FatMan_8[] = INCBIN_U32("graphics/map_objects/pics/people/fat_man/8.4bpp");
-const u32 gMapObjectPic_Woman2_0[] = INCBIN_U32("graphics/map_objects/pics/people/woman_2/0.4bpp");
-const u32 gMapObjectPic_Woman2_1[] = INCBIN_U32("graphics/map_objects/pics/people/woman_2/1.4bpp");
-const u32 gMapObjectPic_Woman2_2[] = INCBIN_U32("graphics/map_objects/pics/people/woman_2/2.4bpp");
-const u32 gMapObjectPic_Woman2_3[] = INCBIN_U32("graphics/map_objects/pics/people/woman_2/3.4bpp");
-const u32 gMapObjectPic_Woman2_4[] = INCBIN_U32("graphics/map_objects/pics/people/woman_2/4.4bpp");
-const u32 gMapObjectPic_Woman2_5[] = INCBIN_U32("graphics/map_objects/pics/people/woman_2/5.4bpp");
-const u32 gMapObjectPic_Woman2_6[] = INCBIN_U32("graphics/map_objects/pics/people/woman_2/6.4bpp");
-const u32 gMapObjectPic_Woman2_7[] = INCBIN_U32("graphics/map_objects/pics/people/woman_2/7.4bpp");
-const u32 gMapObjectPic_Woman2_8[] = INCBIN_U32("graphics/map_objects/pics/people/woman_2/8.4bpp");
-const u32 gMapObjectPic_Man1_0[] = INCBIN_U32("graphics/map_objects/pics/people/man_1/0.4bpp");
-const u32 gMapObjectPic_Man1_1[] = INCBIN_U32("graphics/map_objects/pics/people/man_1/1.4bpp");
-const u32 gMapObjectPic_Man1_2[] = INCBIN_U32("graphics/map_objects/pics/people/man_1/2.4bpp");
-const u32 gMapObjectPic_Man1_3[] = INCBIN_U32("graphics/map_objects/pics/people/man_1/3.4bpp");
-const u32 gMapObjectPic_Man1_4[] = INCBIN_U32("graphics/map_objects/pics/people/man_1/4.4bpp");
-const u32 gMapObjectPic_Man1_5[] = INCBIN_U32("graphics/map_objects/pics/people/man_1/5.4bpp");
-const u32 gMapObjectPic_Man1_6[] = INCBIN_U32("graphics/map_objects/pics/people/man_1/6.4bpp");
-const u32 gMapObjectPic_Man1_7[] = INCBIN_U32("graphics/map_objects/pics/people/man_1/7.4bpp");
-const u32 gMapObjectPic_Man1_8[] = INCBIN_U32("graphics/map_objects/pics/people/man_1/8.4bpp");
-const u32 gMapObjectPic_Woman3_0[] = INCBIN_U32("graphics/map_objects/pics/people/woman_3/0.4bpp");
-const u32 gMapObjectPic_Woman3_1[] = INCBIN_U32("graphics/map_objects/pics/people/woman_3/1.4bpp");
-const u32 gMapObjectPic_Woman3_2[] = INCBIN_U32("graphics/map_objects/pics/people/woman_3/2.4bpp");
-const u32 gMapObjectPic_Woman3_3[] = INCBIN_U32("graphics/map_objects/pics/people/woman_3/3.4bpp");
-const u32 gMapObjectPic_Woman3_4[] = INCBIN_U32("graphics/map_objects/pics/people/woman_3/4.4bpp");
-const u32 gMapObjectPic_Woman3_5[] = INCBIN_U32("graphics/map_objects/pics/people/woman_3/5.4bpp");
-const u32 gMapObjectPic_Woman3_6[] = INCBIN_U32("graphics/map_objects/pics/people/woman_3/6.4bpp");
-const u32 gMapObjectPic_Woman3_7[] = INCBIN_U32("graphics/map_objects/pics/people/woman_3/7.4bpp");
-const u32 gMapObjectPic_Woman3_8[] = INCBIN_U32("graphics/map_objects/pics/people/woman_3/8.4bpp");
-const u32 gMapObjectPic_OldMan1_0[] = INCBIN_U32("graphics/map_objects/pics/people/old_man_1/0.4bpp");
-const u32 gMapObjectPic_OldMan1_1[] = INCBIN_U32("graphics/map_objects/pics/people/old_man_1/1.4bpp");
-const u32 gMapObjectPic_OldMan1_2[] = INCBIN_U32("graphics/map_objects/pics/people/old_man_1/2.4bpp");
-const u32 gMapObjectPic_OldMan1_3[] = INCBIN_U32("graphics/map_objects/pics/people/old_man_1/3.4bpp");
-const u32 gMapObjectPic_OldMan1_4[] = INCBIN_U32("graphics/map_objects/pics/people/old_man_1/4.4bpp");
-const u32 gMapObjectPic_OldMan1_5[] = INCBIN_U32("graphics/map_objects/pics/people/old_man_1/5.4bpp");
-const u32 gMapObjectPic_OldMan1_6[] = INCBIN_U32("graphics/map_objects/pics/people/old_man_1/6.4bpp");
-const u32 gMapObjectPic_OldMan1_7[] = INCBIN_U32("graphics/map_objects/pics/people/old_man_1/7.4bpp");
-const u32 gMapObjectPic_OldMan1_8[] = INCBIN_U32("graphics/map_objects/pics/people/old_man_1/8.4bpp");
-const u32 gMapObjectPic_OldWoman1_0[] = INCBIN_U32("graphics/map_objects/pics/people/old_woman_1/0.4bpp");
-const u32 gMapObjectPic_OldWoman1_1[] = INCBIN_U32("graphics/map_objects/pics/people/old_woman_1/1.4bpp");
-const u32 gMapObjectPic_OldWoman1_2[] = INCBIN_U32("graphics/map_objects/pics/people/old_woman_1/2.4bpp");
-const u32 gMapObjectPic_OldWoman1_3[] = INCBIN_U32("graphics/map_objects/pics/people/old_woman_1/3.4bpp");
-const u32 gMapObjectPic_OldWoman1_4[] = INCBIN_U32("graphics/map_objects/pics/people/old_woman_1/4.4bpp");
-const u32 gMapObjectPic_OldWoman1_5[] = INCBIN_U32("graphics/map_objects/pics/people/old_woman_1/5.4bpp");
-const u32 gMapObjectPic_OldWoman1_6[] = INCBIN_U32("graphics/map_objects/pics/people/old_woman_1/6.4bpp");
-const u32 gMapObjectPic_OldWoman1_7[] = INCBIN_U32("graphics/map_objects/pics/people/old_woman_1/7.4bpp");
-const u32 gMapObjectPic_OldWoman1_8[] = INCBIN_U32("graphics/map_objects/pics/people/old_woman_1/8.4bpp");
-const u32 gMapObjectPic_Man2_0[] = INCBIN_U32("graphics/map_objects/pics/people/man_2/0.4bpp");
-const u32 gMapObjectPic_Man2_1[] = INCBIN_U32("graphics/map_objects/pics/people/man_2/1.4bpp");
-const u32 gMapObjectPic_Man2_2[] = INCBIN_U32("graphics/map_objects/pics/people/man_2/2.4bpp");
-const u32 gMapObjectPic_Man2_3[] = INCBIN_U32("graphics/map_objects/pics/people/man_2/3.4bpp");
-const u32 gMapObjectPic_Man2_4[] = INCBIN_U32("graphics/map_objects/pics/people/man_2/4.4bpp");
-const u32 gMapObjectPic_Man2_5[] = INCBIN_U32("graphics/map_objects/pics/people/man_2/5.4bpp");
-const u32 gMapObjectPic_Man2_6[] = INCBIN_U32("graphics/map_objects/pics/people/man_2/6.4bpp");
-const u32 gMapObjectPic_Man2_7[] = INCBIN_U32("graphics/map_objects/pics/people/man_2/7.4bpp");
-const u32 gMapObjectPic_Man2_8[] = INCBIN_U32("graphics/map_objects/pics/people/man_2/8.4bpp");
-const u32 gMapObjectPic_Woman4_0[] = INCBIN_U32("graphics/map_objects/pics/people/woman_4/0.4bpp");
-const u32 gMapObjectPic_Woman4_1[] = INCBIN_U32("graphics/map_objects/pics/people/woman_4/1.4bpp");
-const u32 gMapObjectPic_Woman4_2[] = INCBIN_U32("graphics/map_objects/pics/people/woman_4/2.4bpp");
-const u32 gMapObjectPic_Woman4_3[] = INCBIN_U32("graphics/map_objects/pics/people/woman_4/3.4bpp");
-const u32 gMapObjectPic_Woman4_4[] = INCBIN_U32("graphics/map_objects/pics/people/woman_4/4.4bpp");
-const u32 gMapObjectPic_Woman4_5[] = INCBIN_U32("graphics/map_objects/pics/people/woman_4/5.4bpp");
-const u32 gMapObjectPic_Woman4_6[] = INCBIN_U32("graphics/map_objects/pics/people/woman_4/6.4bpp");
-const u32 gMapObjectPic_Woman4_7[] = INCBIN_U32("graphics/map_objects/pics/people/woman_4/7.4bpp");
-const u32 gMapObjectPic_Woman4_8[] = INCBIN_U32("graphics/map_objects/pics/people/woman_4/8.4bpp");
-const u32 gMapObjectPic_Man3_0[] = INCBIN_U32("graphics/map_objects/pics/people/man_3/0.4bpp");
-const u32 gMapObjectPic_Man3_1[] = INCBIN_U32("graphics/map_objects/pics/people/man_3/1.4bpp");
-const u32 gMapObjectPic_Man3_2[] = INCBIN_U32("graphics/map_objects/pics/people/man_3/2.4bpp");
-const u32 gMapObjectPic_Man3_3[] = INCBIN_U32("graphics/map_objects/pics/people/man_3/3.4bpp");
-const u32 gMapObjectPic_Man3_4[] = INCBIN_U32("graphics/map_objects/pics/people/man_3/4.4bpp");
-const u32 gMapObjectPic_Man3_5[] = INCBIN_U32("graphics/map_objects/pics/people/man_3/5.4bpp");
-const u32 gMapObjectPic_Man3_6[] = INCBIN_U32("graphics/map_objects/pics/people/man_3/6.4bpp");
-const u32 gMapObjectPic_Man3_7[] = INCBIN_U32("graphics/map_objects/pics/people/man_3/7.4bpp");
-const u32 gMapObjectPic_Man3_8[] = INCBIN_U32("graphics/map_objects/pics/people/man_3/8.4bpp");
-const u32 gMapObjectPic_Woman5_0[] = INCBIN_U32("graphics/map_objects/pics/people/woman_5/0.4bpp");
-const u32 gMapObjectPic_Woman5_1[] = INCBIN_U32("graphics/map_objects/pics/people/woman_5/1.4bpp");
-const u32 gMapObjectPic_Woman5_2[] = INCBIN_U32("graphics/map_objects/pics/people/woman_5/2.4bpp");
-const u32 gMapObjectPic_Woman5_3[] = INCBIN_U32("graphics/map_objects/pics/people/woman_5/3.4bpp");
-const u32 gMapObjectPic_Woman5_4[] = INCBIN_U32("graphics/map_objects/pics/people/woman_5/4.4bpp");
-const u32 gMapObjectPic_Woman5_5[] = INCBIN_U32("graphics/map_objects/pics/people/woman_5/5.4bpp");
-const u32 gMapObjectPic_Woman5_6[] = INCBIN_U32("graphics/map_objects/pics/people/woman_5/6.4bpp");
-const u32 gMapObjectPic_Woman5_7[] = INCBIN_U32("graphics/map_objects/pics/people/woman_5/7.4bpp");
-const u32 gMapObjectPic_Woman5_8[] = INCBIN_U32("graphics/map_objects/pics/people/woman_5/8.4bpp");
-const u32 gMapObjectPic_Cook_0[] = INCBIN_U32("graphics/map_objects/pics/people/cook/0.4bpp");
-const u32 gMapObjectPic_Cook_1[] = INCBIN_U32("graphics/map_objects/pics/people/cook/1.4bpp");
-const u32 gMapObjectPic_Cook_2[] = INCBIN_U32("graphics/map_objects/pics/people/cook/2.4bpp");
-const u32 gMapObjectPic_Woman6_0[] = INCBIN_U32("graphics/map_objects/pics/people/woman_6/0.4bpp");
-const u32 gMapObjectPic_Woman6_1[] = INCBIN_U32("graphics/map_objects/pics/people/woman_6/1.4bpp");
-const u32 gMapObjectPic_Woman6_2[] = INCBIN_U32("graphics/map_objects/pics/people/woman_6/2.4bpp");
-const u32 gMapObjectPic_Woman6_3[] = INCBIN_U32("graphics/map_objects/pics/people/woman_6/3.4bpp");
-const u32 gMapObjectPic_Woman6_4[] = INCBIN_U32("graphics/map_objects/pics/people/woman_6/4.4bpp");
-const u32 gMapObjectPic_Woman6_5[] = INCBIN_U32("graphics/map_objects/pics/people/woman_6/5.4bpp");
-const u32 gMapObjectPic_Woman6_6[] = INCBIN_U32("graphics/map_objects/pics/people/woman_6/6.4bpp");
-const u32 gMapObjectPic_Woman6_7[] = INCBIN_U32("graphics/map_objects/pics/people/woman_6/7.4bpp");
-const u32 gMapObjectPic_Woman6_8[] = INCBIN_U32("graphics/map_objects/pics/people/woman_6/8.4bpp");
-const u32 gMapObjectPic_OldMan2_0[] = INCBIN_U32("graphics/map_objects/pics/people/old_man_2/0.4bpp");
-const u32 gMapObjectPic_OldMan2_1[] = INCBIN_U32("graphics/map_objects/pics/people/old_man_2/1.4bpp");
-const u32 gMapObjectPic_OldMan2_2[] = INCBIN_U32("graphics/map_objects/pics/people/old_man_2/2.4bpp");
-const u32 gMapObjectPic_OldWoman2_0[] = INCBIN_U32("graphics/map_objects/pics/people/old_woman_2/0.4bpp");
-const u32 gMapObjectPic_OldWoman2_1[] = INCBIN_U32("graphics/map_objects/pics/people/old_woman_2/1.4bpp");
-const u32 gMapObjectPic_OldWoman2_2[] = INCBIN_U32("graphics/map_objects/pics/people/old_woman_2/2.4bpp");
-const u32 gMapObjectPic_Camper_0[] = INCBIN_U32("graphics/map_objects/pics/people/camper/0.4bpp");
-const u32 gMapObjectPic_Camper_1[] = INCBIN_U32("graphics/map_objects/pics/people/camper/1.4bpp");
-const u32 gMapObjectPic_Camper_2[] = INCBIN_U32("graphics/map_objects/pics/people/camper/2.4bpp");
-const u32 gMapObjectPic_Camper_3[] = INCBIN_U32("graphics/map_objects/pics/people/camper/3.4bpp");
-const u32 gMapObjectPic_Camper_4[] = INCBIN_U32("graphics/map_objects/pics/people/camper/4.4bpp");
-const u32 gMapObjectPic_Camper_5[] = INCBIN_U32("graphics/map_objects/pics/people/camper/5.4bpp");
-const u32 gMapObjectPic_Camper_6[] = INCBIN_U32("graphics/map_objects/pics/people/camper/6.4bpp");
-const u32 gMapObjectPic_Camper_7[] = INCBIN_U32("graphics/map_objects/pics/people/camper/7.4bpp");
-const u32 gMapObjectPic_Camper_8[] = INCBIN_U32("graphics/map_objects/pics/people/camper/8.4bpp");
-const u32 gMapObjectPic_Picnicker_0[] = INCBIN_U32("graphics/map_objects/pics/people/picnicker/0.4bpp");
-const u32 gMapObjectPic_Picnicker_1[] = INCBIN_U32("graphics/map_objects/pics/people/picnicker/1.4bpp");
-const u32 gMapObjectPic_Picnicker_2[] = INCBIN_U32("graphics/map_objects/pics/people/picnicker/2.4bpp");
-const u32 gMapObjectPic_Picnicker_3[] = INCBIN_U32("graphics/map_objects/pics/people/picnicker/3.4bpp");
-const u32 gMapObjectPic_Picnicker_4[] = INCBIN_U32("graphics/map_objects/pics/people/picnicker/4.4bpp");
-const u32 gMapObjectPic_Picnicker_5[] = INCBIN_U32("graphics/map_objects/pics/people/picnicker/5.4bpp");
-const u32 gMapObjectPic_Picnicker_6[] = INCBIN_U32("graphics/map_objects/pics/people/picnicker/6.4bpp");
-const u32 gMapObjectPic_Picnicker_7[] = INCBIN_U32("graphics/map_objects/pics/people/picnicker/7.4bpp");
-const u32 gMapObjectPic_Picnicker_8[] = INCBIN_U32("graphics/map_objects/pics/people/picnicker/8.4bpp");
-const u32 gMapObjectPic_Man4_0[] = INCBIN_U32("graphics/map_objects/pics/people/man_4/0.4bpp");
-const u32 gMapObjectPic_Man4_1[] = INCBIN_U32("graphics/map_objects/pics/people/man_4/1.4bpp");
-const u32 gMapObjectPic_Man4_2[] = INCBIN_U32("graphics/map_objects/pics/people/man_4/2.4bpp");
-const u32 gMapObjectPic_Man4_3[] = INCBIN_U32("graphics/map_objects/pics/people/man_4/3.4bpp");
-const u32 gMapObjectPic_Man4_4[] = INCBIN_U32("graphics/map_objects/pics/people/man_4/4.4bpp");
-const u32 gMapObjectPic_Man4_5[] = INCBIN_U32("graphics/map_objects/pics/people/man_4/5.4bpp");
-const u32 gMapObjectPic_Man4_6[] = INCBIN_U32("graphics/map_objects/pics/people/man_4/6.4bpp");
-const u32 gMapObjectPic_Man4_7[] = INCBIN_U32("graphics/map_objects/pics/people/man_4/7.4bpp");
-const u32 gMapObjectPic_Man4_8[] = INCBIN_U32("graphics/map_objects/pics/people/man_4/8.4bpp");
-const u32 gMapObjectPic_Woman7_0[] = INCBIN_U32("graphics/map_objects/pics/people/woman_7/0.4bpp");
-const u32 gMapObjectPic_Woman7_1[] = INCBIN_U32("graphics/map_objects/pics/people/woman_7/1.4bpp");
-const u32 gMapObjectPic_Woman7_2[] = INCBIN_U32("graphics/map_objects/pics/people/woman_7/2.4bpp");
-const u32 gMapObjectPic_Woman7_3[] = INCBIN_U32("graphics/map_objects/pics/people/woman_7/3.4bpp");
-const u32 gMapObjectPic_Woman7_4[] = INCBIN_U32("graphics/map_objects/pics/people/woman_7/4.4bpp");
-const u32 gMapObjectPic_Woman7_5[] = INCBIN_U32("graphics/map_objects/pics/people/woman_7/5.4bpp");
-const u32 gMapObjectPic_Woman7_6[] = INCBIN_U32("graphics/map_objects/pics/people/woman_7/6.4bpp");
-const u32 gMapObjectPic_Woman7_7[] = INCBIN_U32("graphics/map_objects/pics/people/woman_7/7.4bpp");
-const u32 gMapObjectPic_Woman7_8[] = INCBIN_U32("graphics/map_objects/pics/people/woman_7/8.4bpp");
-const u32 gMapObjectPic_Youngster_0[] = INCBIN_U32("graphics/map_objects/pics/people/youngster/0.4bpp");
-const u32 gMapObjectPic_Youngster_1[] = INCBIN_U32("graphics/map_objects/pics/people/youngster/1.4bpp");
-const u32 gMapObjectPic_Youngster_2[] = INCBIN_U32("graphics/map_objects/pics/people/youngster/2.4bpp");
-const u32 gMapObjectPic_Youngster_3[] = INCBIN_U32("graphics/map_objects/pics/people/youngster/3.4bpp");
-const u32 gMapObjectPic_Youngster_4[] = INCBIN_U32("graphics/map_objects/pics/people/youngster/4.4bpp");
-const u32 gMapObjectPic_Youngster_5[] = INCBIN_U32("graphics/map_objects/pics/people/youngster/5.4bpp");
-const u32 gMapObjectPic_Youngster_6[] = INCBIN_U32("graphics/map_objects/pics/people/youngster/6.4bpp");
-const u32 gMapObjectPic_Youngster_7[] = INCBIN_U32("graphics/map_objects/pics/people/youngster/7.4bpp");
-const u32 gMapObjectPic_Youngster_8[] = INCBIN_U32("graphics/map_objects/pics/people/youngster/8.4bpp");
-const u32 gMapObjectPic_BugCatcher_0[] = INCBIN_U32("graphics/map_objects/pics/people/bug_catcher/0.4bpp");
-const u32 gMapObjectPic_BugCatcher_1[] = INCBIN_U32("graphics/map_objects/pics/people/bug_catcher/1.4bpp");
-const u32 gMapObjectPic_BugCatcher_2[] = INCBIN_U32("graphics/map_objects/pics/people/bug_catcher/2.4bpp");
-const u32 gMapObjectPic_BugCatcher_3[] = INCBIN_U32("graphics/map_objects/pics/people/bug_catcher/3.4bpp");
-const u32 gMapObjectPic_BugCatcher_4[] = INCBIN_U32("graphics/map_objects/pics/people/bug_catcher/4.4bpp");
-const u32 gMapObjectPic_BugCatcher_5[] = INCBIN_U32("graphics/map_objects/pics/people/bug_catcher/5.4bpp");
-const u32 gMapObjectPic_BugCatcher_6[] = INCBIN_U32("graphics/map_objects/pics/people/bug_catcher/6.4bpp");
-const u32 gMapObjectPic_BugCatcher_7[] = INCBIN_U32("graphics/map_objects/pics/people/bug_catcher/7.4bpp");
-const u32 gMapObjectPic_BugCatcher_8[] = INCBIN_U32("graphics/map_objects/pics/people/bug_catcher/8.4bpp");
-const u32 gMapObjectPic_PsychicM_0[] = INCBIN_U32("graphics/map_objects/pics/people/psychic_m/0.4bpp");
-const u32 gMapObjectPic_PsychicM_1[] = INCBIN_U32("graphics/map_objects/pics/people/psychic_m/1.4bpp");
-const u32 gMapObjectPic_PsychicM_2[] = INCBIN_U32("graphics/map_objects/pics/people/psychic_m/2.4bpp");
-const u32 gMapObjectPic_PsychicM_3[] = INCBIN_U32("graphics/map_objects/pics/people/psychic_m/3.4bpp");
-const u32 gMapObjectPic_PsychicM_4[] = INCBIN_U32("graphics/map_objects/pics/people/psychic_m/4.4bpp");
-const u32 gMapObjectPic_PsychicM_5[] = INCBIN_U32("graphics/map_objects/pics/people/psychic_m/5.4bpp");
-const u32 gMapObjectPic_PsychicM_6[] = INCBIN_U32("graphics/map_objects/pics/people/psychic_m/6.4bpp");
-const u32 gMapObjectPic_PsychicM_7[] = INCBIN_U32("graphics/map_objects/pics/people/psychic_m/7.4bpp");
-const u32 gMapObjectPic_PsychicM_8[] = INCBIN_U32("graphics/map_objects/pics/people/psychic_m/8.4bpp");
-const u32 gMapObjectPic_SchoolKidM_0[] = INCBIN_U32("graphics/map_objects/pics/people/school_kid_m/0.4bpp");
-const u32 gMapObjectPic_SchoolKidM_1[] = INCBIN_U32("graphics/map_objects/pics/people/school_kid_m/1.4bpp");
-const u32 gMapObjectPic_SchoolKidM_2[] = INCBIN_U32("graphics/map_objects/pics/people/school_kid_m/2.4bpp");
-const u32 gMapObjectPic_SchoolKidM_3[] = INCBIN_U32("graphics/map_objects/pics/people/school_kid_m/3.4bpp");
-const u32 gMapObjectPic_SchoolKidM_4[] = INCBIN_U32("graphics/map_objects/pics/people/school_kid_m/4.4bpp");
-const u32 gMapObjectPic_SchoolKidM_5[] = INCBIN_U32("graphics/map_objects/pics/people/school_kid_m/5.4bpp");
-const u32 gMapObjectPic_SchoolKidM_6[] = INCBIN_U32("graphics/map_objects/pics/people/school_kid_m/6.4bpp");
-const u32 gMapObjectPic_SchoolKidM_7[] = INCBIN_U32("graphics/map_objects/pics/people/school_kid_m/7.4bpp");
-const u32 gMapObjectPic_SchoolKidM_8[] = INCBIN_U32("graphics/map_objects/pics/people/school_kid_m/8.4bpp");
-const u32 gMapObjectPic_Maniac_0[] = INCBIN_U32("graphics/map_objects/pics/people/maniac/0.4bpp");
-const u32 gMapObjectPic_Maniac_1[] = INCBIN_U32("graphics/map_objects/pics/people/maniac/1.4bpp");
-const u32 gMapObjectPic_Maniac_2[] = INCBIN_U32("graphics/map_objects/pics/people/maniac/2.4bpp");
-const u32 gMapObjectPic_Maniac_3[] = INCBIN_U32("graphics/map_objects/pics/people/maniac/3.4bpp");
-const u32 gMapObjectPic_Maniac_4[] = INCBIN_U32("graphics/map_objects/pics/people/maniac/4.4bpp");
-const u32 gMapObjectPic_Maniac_5[] = INCBIN_U32("graphics/map_objects/pics/people/maniac/5.4bpp");
-const u32 gMapObjectPic_Maniac_6[] = INCBIN_U32("graphics/map_objects/pics/people/maniac/6.4bpp");
-const u32 gMapObjectPic_Maniac_7[] = INCBIN_U32("graphics/map_objects/pics/people/maniac/7.4bpp");
-const u32 gMapObjectPic_Maniac_8[] = INCBIN_U32("graphics/map_objects/pics/people/maniac/8.4bpp");
-const u32 gMapObjectPic_HexManiac_0[] = INCBIN_U32("graphics/map_objects/pics/people/hex_maniac/0.4bpp");
-const u32 gMapObjectPic_HexManiac_1[] = INCBIN_U32("graphics/map_objects/pics/people/hex_maniac/1.4bpp");
-const u32 gMapObjectPic_HexManiac_2[] = INCBIN_U32("graphics/map_objects/pics/people/hex_maniac/2.4bpp");
-const u32 gMapObjectPic_HexManiac_3[] = INCBIN_U32("graphics/map_objects/pics/people/hex_maniac/3.4bpp");
-const u32 gMapObjectPic_HexManiac_4[] = INCBIN_U32("graphics/map_objects/pics/people/hex_maniac/4.4bpp");
-const u32 gMapObjectPic_HexManiac_5[] = INCBIN_U32("graphics/map_objects/pics/people/hex_maniac/5.4bpp");
-const u32 gMapObjectPic_HexManiac_6[] = INCBIN_U32("graphics/map_objects/pics/people/hex_maniac/6.4bpp");
-const u32 gMapObjectPic_HexManiac_7[] = INCBIN_U32("graphics/map_objects/pics/people/hex_maniac/7.4bpp");
-const u32 gMapObjectPic_HexManiac_8[] = INCBIN_U32("graphics/map_objects/pics/people/hex_maniac/8.4bpp");
-const u32 gMapObjectPic_Woman8_0[] = INCBIN_U32("graphics/map_objects/pics/people/woman_8/0.4bpp");
-const u32 gMapObjectPic_Woman8_1[] = INCBIN_U32("graphics/map_objects/pics/people/woman_8/1.4bpp");
-const u32 gMapObjectPic_Woman8_2[] = INCBIN_U32("graphics/map_objects/pics/people/woman_8/2.4bpp");
-const u32 gMapObjectPic_Woman8_3[] = INCBIN_U32("graphics/map_objects/pics/people/woman_8/3.4bpp");
-const u32 gMapObjectPic_Woman8_4[] = INCBIN_U32("graphics/map_objects/pics/people/woman_8/4.4bpp");
-const u32 gMapObjectPic_Woman8_5[] = INCBIN_U32("graphics/map_objects/pics/people/woman_8/5.4bpp");
-const u32 gMapObjectPic_Woman8_6[] = INCBIN_U32("graphics/map_objects/pics/people/woman_8/6.4bpp");
-const u32 gMapObjectPic_Woman8_7[] = INCBIN_U32("graphics/map_objects/pics/people/woman_8/7.4bpp");
-const u32 gMapObjectPic_Woman8_8[] = INCBIN_U32("graphics/map_objects/pics/people/woman_8/8.4bpp");
-const u32 gMapObjectPic_SwimmerM_0[] = INCBIN_U32("graphics/map_objects/pics/people/swimmer_m/0.4bpp");
-const u32 gMapObjectPic_SwimmerM_1[] = INCBIN_U32("graphics/map_objects/pics/people/swimmer_m/1.4bpp");
-const u32 gMapObjectPic_SwimmerM_2[] = INCBIN_U32("graphics/map_objects/pics/people/swimmer_m/2.4bpp");
-const u32 gMapObjectPic_SwimmerM_3[] = INCBIN_U32("graphics/map_objects/pics/people/swimmer_m/3.4bpp");
-const u32 gMapObjectPic_SwimmerM_4[] = INCBIN_U32("graphics/map_objects/pics/people/swimmer_m/4.4bpp");
-const u32 gMapObjectPic_SwimmerM_5[] = INCBIN_U32("graphics/map_objects/pics/people/swimmer_m/5.4bpp");
-const u32 gMapObjectPic_SwimmerM_6[] = INCBIN_U32("graphics/map_objects/pics/people/swimmer_m/6.4bpp");
-const u32 gMapObjectPic_SwimmerM_7[] = INCBIN_U32("graphics/map_objects/pics/people/swimmer_m/7.4bpp");
-const u32 gMapObjectPic_SwimmerM_8[] = INCBIN_U32("graphics/map_objects/pics/people/swimmer_m/8.4bpp");
-const u32 gMapObjectPic_SwimmerF_0[] = INCBIN_U32("graphics/map_objects/pics/people/swimmer_f/0.4bpp");
-const u32 gMapObjectPic_SwimmerF_1[] = INCBIN_U32("graphics/map_objects/pics/people/swimmer_f/1.4bpp");
-const u32 gMapObjectPic_SwimmerF_2[] = INCBIN_U32("graphics/map_objects/pics/people/swimmer_f/2.4bpp");
-const u32 gMapObjectPic_SwimmerF_3[] = INCBIN_U32("graphics/map_objects/pics/people/swimmer_f/3.4bpp");
-const u32 gMapObjectPic_SwimmerF_4[] = INCBIN_U32("graphics/map_objects/pics/people/swimmer_f/4.4bpp");
-const u32 gMapObjectPic_SwimmerF_5[] = INCBIN_U32("graphics/map_objects/pics/people/swimmer_f/5.4bpp");
-const u32 gMapObjectPic_SwimmerF_6[] = INCBIN_U32("graphics/map_objects/pics/people/swimmer_f/6.4bpp");
-const u32 gMapObjectPic_SwimmerF_7[] = INCBIN_U32("graphics/map_objects/pics/people/swimmer_f/7.4bpp");
-const u32 gMapObjectPic_SwimmerF_8[] = INCBIN_U32("graphics/map_objects/pics/people/swimmer_f/8.4bpp");
-const u32 gMapObjectPic_BlackBelt_0[] = INCBIN_U32("graphics/map_objects/pics/people/black_belt/0.4bpp");
-const u32 gMapObjectPic_BlackBelt_1[] = INCBIN_U32("graphics/map_objects/pics/people/black_belt/1.4bpp");
-const u32 gMapObjectPic_BlackBelt_2[] = INCBIN_U32("graphics/map_objects/pics/people/black_belt/2.4bpp");
-const u32 gMapObjectPic_BlackBelt_3[] = INCBIN_U32("graphics/map_objects/pics/people/black_belt/3.4bpp");
-const u32 gMapObjectPic_BlackBelt_4[] = INCBIN_U32("graphics/map_objects/pics/people/black_belt/4.4bpp");
-const u32 gMapObjectPic_BlackBelt_5[] = INCBIN_U32("graphics/map_objects/pics/people/black_belt/5.4bpp");
-const u32 gMapObjectPic_BlackBelt_6[] = INCBIN_U32("graphics/map_objects/pics/people/black_belt/6.4bpp");
-const u32 gMapObjectPic_BlackBelt_7[] = INCBIN_U32("graphics/map_objects/pics/people/black_belt/7.4bpp");
-const u32 gMapObjectPic_BlackBelt_8[] = INCBIN_U32("graphics/map_objects/pics/people/black_belt/8.4bpp");
-const u32 gMapObjectPic_Beauty_0[] = INCBIN_U32("graphics/map_objects/pics/people/beauty/0.4bpp");
-const u32 gMapObjectPic_Beauty_1[] = INCBIN_U32("graphics/map_objects/pics/people/beauty/1.4bpp");
-const u32 gMapObjectPic_Beauty_2[] = INCBIN_U32("graphics/map_objects/pics/people/beauty/2.4bpp");
-const u32 gMapObjectPic_Beauty_3[] = INCBIN_U32("graphics/map_objects/pics/people/beauty/3.4bpp");
-const u32 gMapObjectPic_Beauty_4[] = INCBIN_U32("graphics/map_objects/pics/people/beauty/4.4bpp");
-const u32 gMapObjectPic_Beauty_5[] = INCBIN_U32("graphics/map_objects/pics/people/beauty/5.4bpp");
-const u32 gMapObjectPic_Beauty_6[] = INCBIN_U32("graphics/map_objects/pics/people/beauty/6.4bpp");
-const u32 gMapObjectPic_Beauty_7[] = INCBIN_U32("graphics/map_objects/pics/people/beauty/7.4bpp");
-const u32 gMapObjectPic_Beauty_8[] = INCBIN_U32("graphics/map_objects/pics/people/beauty/8.4bpp");
-const u32 gMapObjectPic_Scientist1_0[] = INCBIN_U32("graphics/map_objects/pics/people/scientist_1/0.4bpp");
-const u32 gMapObjectPic_Scientist1_1[] = INCBIN_U32("graphics/map_objects/pics/people/scientist_1/1.4bpp");
-const u32 gMapObjectPic_Scientist1_2[] = INCBIN_U32("graphics/map_objects/pics/people/scientist_1/2.4bpp");
-const u32 gMapObjectPic_Scientist1_3[] = INCBIN_U32("graphics/map_objects/pics/people/scientist_1/3.4bpp");
-const u32 gMapObjectPic_Scientist1_4[] = INCBIN_U32("graphics/map_objects/pics/people/scientist_1/4.4bpp");
-const u32 gMapObjectPic_Scientist1_5[] = INCBIN_U32("graphics/map_objects/pics/people/scientist_1/5.4bpp");
-const u32 gMapObjectPic_Scientist1_6[] = INCBIN_U32("graphics/map_objects/pics/people/scientist_1/6.4bpp");
-const u32 gMapObjectPic_Scientist1_7[] = INCBIN_U32("graphics/map_objects/pics/people/scientist_1/7.4bpp");
-const u32 gMapObjectPic_Scientist1_8[] = INCBIN_U32("graphics/map_objects/pics/people/scientist_1/8.4bpp");
-const u32 gMapObjectPic_Lass_0[] = INCBIN_U32("graphics/map_objects/pics/people/lass/0.4bpp");
-const u32 gMapObjectPic_Lass_1[] = INCBIN_U32("graphics/map_objects/pics/people/lass/1.4bpp");
-const u32 gMapObjectPic_Lass_2[] = INCBIN_U32("graphics/map_objects/pics/people/lass/2.4bpp");
-const u32 gMapObjectPic_Lass_3[] = INCBIN_U32("graphics/map_objects/pics/people/lass/3.4bpp");
-const u32 gMapObjectPic_Lass_4[] = INCBIN_U32("graphics/map_objects/pics/people/lass/4.4bpp");
-const u32 gMapObjectPic_Lass_5[] = INCBIN_U32("graphics/map_objects/pics/people/lass/5.4bpp");
-const u32 gMapObjectPic_Lass_6[] = INCBIN_U32("graphics/map_objects/pics/people/lass/6.4bpp");
-const u32 gMapObjectPic_Lass_7[] = INCBIN_U32("graphics/map_objects/pics/people/lass/7.4bpp");
-const u32 gMapObjectPic_Lass_8[] = INCBIN_U32("graphics/map_objects/pics/people/lass/8.4bpp");
-const u32 gMapObjectPic_Gentleman_0[] = INCBIN_U32("graphics/map_objects/pics/people/gentleman/0.4bpp");
-const u32 gMapObjectPic_Gentleman_1[] = INCBIN_U32("graphics/map_objects/pics/people/gentleman/1.4bpp");
-const u32 gMapObjectPic_Gentleman_2[] = INCBIN_U32("graphics/map_objects/pics/people/gentleman/2.4bpp");
-const u32 gMapObjectPic_Gentleman_3[] = INCBIN_U32("graphics/map_objects/pics/people/gentleman/3.4bpp");
-const u32 gMapObjectPic_Gentleman_4[] = INCBIN_U32("graphics/map_objects/pics/people/gentleman/4.4bpp");
-const u32 gMapObjectPic_Gentleman_5[] = INCBIN_U32("graphics/map_objects/pics/people/gentleman/5.4bpp");
-const u32 gMapObjectPic_Gentleman_6[] = INCBIN_U32("graphics/map_objects/pics/people/gentleman/6.4bpp");
-const u32 gMapObjectPic_Gentleman_7[] = INCBIN_U32("graphics/map_objects/pics/people/gentleman/7.4bpp");
-const u32 gMapObjectPic_Gentleman_8[] = INCBIN_U32("graphics/map_objects/pics/people/gentleman/8.4bpp");
-const u32 gMapObjectPic_Sailor_0[] = INCBIN_U32("graphics/map_objects/pics/people/sailor/0.4bpp");
-const u32 gMapObjectPic_Sailor_1[] = INCBIN_U32("graphics/map_objects/pics/people/sailor/1.4bpp");
-const u32 gMapObjectPic_Sailor_2[] = INCBIN_U32("graphics/map_objects/pics/people/sailor/2.4bpp");
-const u32 gMapObjectPic_Sailor_3[] = INCBIN_U32("graphics/map_objects/pics/people/sailor/3.4bpp");
-const u32 gMapObjectPic_Sailor_4[] = INCBIN_U32("graphics/map_objects/pics/people/sailor/4.4bpp");
-const u32 gMapObjectPic_Sailor_5[] = INCBIN_U32("graphics/map_objects/pics/people/sailor/5.4bpp");
-const u32 gMapObjectPic_Sailor_6[] = INCBIN_U32("graphics/map_objects/pics/people/sailor/6.4bpp");
-const u32 gMapObjectPic_Sailor_7[] = INCBIN_U32("graphics/map_objects/pics/people/sailor/7.4bpp");
-const u32 gMapObjectPic_Sailor_8[] = INCBIN_U32("graphics/map_objects/pics/people/sailor/8.4bpp");
-const u32 gMapObjectPic_Fisherman_0[] = INCBIN_U32("graphics/map_objects/pics/people/fisherman/0.4bpp");
-const u32 gMapObjectPic_Fisherman_1[] = INCBIN_U32("graphics/map_objects/pics/people/fisherman/1.4bpp");
-const u32 gMapObjectPic_Fisherman_2[] = INCBIN_U32("graphics/map_objects/pics/people/fisherman/2.4bpp");
-const u32 gMapObjectPic_Fisherman_3[] = INCBIN_U32("graphics/map_objects/pics/people/fisherman/3.4bpp");
-const u32 gMapObjectPic_Fisherman_4[] = INCBIN_U32("graphics/map_objects/pics/people/fisherman/4.4bpp");
-const u32 gMapObjectPic_Fisherman_5[] = INCBIN_U32("graphics/map_objects/pics/people/fisherman/5.4bpp");
-const u32 gMapObjectPic_Fisherman_6[] = INCBIN_U32("graphics/map_objects/pics/people/fisherman/6.4bpp");
-const u32 gMapObjectPic_Fisherman_7[] = INCBIN_U32("graphics/map_objects/pics/people/fisherman/7.4bpp");
-const u32 gMapObjectPic_Fisherman_8[] = INCBIN_U32("graphics/map_objects/pics/people/fisherman/8.4bpp");
-const u32 gMapObjectPic_RunningTriathleteM_0[] = INCBIN_U32("graphics/map_objects/pics/people/running_triathlete_m/0.4bpp");
-const u32 gMapObjectPic_RunningTriathleteM_1[] = INCBIN_U32("graphics/map_objects/pics/people/running_triathlete_m/1.4bpp");
-const u32 gMapObjectPic_RunningTriathleteM_2[] = INCBIN_U32("graphics/map_objects/pics/people/running_triathlete_m/2.4bpp");
-const u32 gMapObjectPic_RunningTriathleteM_3[] = INCBIN_U32("graphics/map_objects/pics/people/running_triathlete_m/3.4bpp");
-const u32 gMapObjectPic_RunningTriathleteM_4[] = INCBIN_U32("graphics/map_objects/pics/people/running_triathlete_m/4.4bpp");
-const u32 gMapObjectPic_RunningTriathleteM_5[] = INCBIN_U32("graphics/map_objects/pics/people/running_triathlete_m/5.4bpp");
-const u32 gMapObjectPic_RunningTriathleteM_6[] = INCBIN_U32("graphics/map_objects/pics/people/running_triathlete_m/6.4bpp");
-const u32 gMapObjectPic_RunningTriathleteM_7[] = INCBIN_U32("graphics/map_objects/pics/people/running_triathlete_m/7.4bpp");
-const u32 gMapObjectPic_RunningTriathleteM_8[] = INCBIN_U32("graphics/map_objects/pics/people/running_triathlete_m/8.4bpp");
-const u32 gMapObjectPic_RunningTriathleteF_0[] = INCBIN_U32("graphics/map_objects/pics/people/running_triathlete_f/0.4bpp");
-const u32 gMapObjectPic_RunningTriathleteF_1[] = INCBIN_U32("graphics/map_objects/pics/people/running_triathlete_f/1.4bpp");
-const u32 gMapObjectPic_RunningTriathleteF_2[] = INCBIN_U32("graphics/map_objects/pics/people/running_triathlete_f/2.4bpp");
-const u32 gMapObjectPic_RunningTriathleteF_3[] = INCBIN_U32("graphics/map_objects/pics/people/running_triathlete_f/3.4bpp");
-const u32 gMapObjectPic_RunningTriathleteF_4[] = INCBIN_U32("graphics/map_objects/pics/people/running_triathlete_f/4.4bpp");
-const u32 gMapObjectPic_RunningTriathleteF_5[] = INCBIN_U32("graphics/map_objects/pics/people/running_triathlete_f/5.4bpp");
-const u32 gMapObjectPic_RunningTriathleteF_6[] = INCBIN_U32("graphics/map_objects/pics/people/running_triathlete_f/6.4bpp");
-const u32 gMapObjectPic_RunningTriathleteF_7[] = INCBIN_U32("graphics/map_objects/pics/people/running_triathlete_f/7.4bpp");
-const u32 gMapObjectPic_RunningTriathleteF_8[] = INCBIN_U32("graphics/map_objects/pics/people/running_triathlete_f/8.4bpp");
-const u32 gMapObjectPic_TuberF_0[] = INCBIN_U32("graphics/map_objects/pics/people/tuber_f/0.4bpp");
-const u32 gMapObjectPic_TuberF_1[] = INCBIN_U32("graphics/map_objects/pics/people/tuber_f/1.4bpp");
-const u32 gMapObjectPic_TuberF_2[] = INCBIN_U32("graphics/map_objects/pics/people/tuber_f/2.4bpp");
-const u32 gMapObjectPic_TuberF_3[] = INCBIN_U32("graphics/map_objects/pics/people/tuber_f/3.4bpp");
-const u32 gMapObjectPic_TuberF_4[] = INCBIN_U32("graphics/map_objects/pics/people/tuber_f/4.4bpp");
-const u32 gMapObjectPic_TuberF_5[] = INCBIN_U32("graphics/map_objects/pics/people/tuber_f/5.4bpp");
-const u32 gMapObjectPic_TuberF_6[] = INCBIN_U32("graphics/map_objects/pics/people/tuber_f/6.4bpp");
-const u32 gMapObjectPic_TuberF_7[] = INCBIN_U32("graphics/map_objects/pics/people/tuber_f/7.4bpp");
-const u32 gMapObjectPic_TuberF_8[] = INCBIN_U32("graphics/map_objects/pics/people/tuber_f/8.4bpp");
-const u32 gMapObjectPic_TuberM_0[] = INCBIN_U32("graphics/map_objects/pics/people/tuber_m/0.4bpp");
-const u32 gMapObjectPic_TuberM_1[] = INCBIN_U32("graphics/map_objects/pics/people/tuber_m/1.4bpp");
-const u32 gMapObjectPic_TuberM_2[] = INCBIN_U32("graphics/map_objects/pics/people/tuber_m/2.4bpp");
-const u32 gMapObjectPic_TuberM_3[] = INCBIN_U32("graphics/map_objects/pics/people/tuber_m/3.4bpp");
-const u32 gMapObjectPic_TuberM_4[] = INCBIN_U32("graphics/map_objects/pics/people/tuber_m/4.4bpp");
-const u32 gMapObjectPic_TuberM_5[] = INCBIN_U32("graphics/map_objects/pics/people/tuber_m/5.4bpp");
-const u32 gMapObjectPic_TuberM_6[] = INCBIN_U32("graphics/map_objects/pics/people/tuber_m/6.4bpp");
-const u32 gMapObjectPic_TuberM_7[] = INCBIN_U32("graphics/map_objects/pics/people/tuber_m/7.4bpp");
-const u32 gMapObjectPic_TuberM_8[] = INCBIN_U32("graphics/map_objects/pics/people/tuber_m/8.4bpp");
-const u32 gMapObjectPic_Hiker_0[] = INCBIN_U32("graphics/map_objects/pics/people/hiker/0.4bpp");
-const u32 gMapObjectPic_Hiker_1[] = INCBIN_U32("graphics/map_objects/pics/people/hiker/1.4bpp");
-const u32 gMapObjectPic_Hiker_2[] = INCBIN_U32("graphics/map_objects/pics/people/hiker/2.4bpp");
-const u32 gMapObjectPic_Hiker_3[] = INCBIN_U32("graphics/map_objects/pics/people/hiker/3.4bpp");
-const u32 gMapObjectPic_Hiker_4[] = INCBIN_U32("graphics/map_objects/pics/people/hiker/4.4bpp");
-const u32 gMapObjectPic_Hiker_5[] = INCBIN_U32("graphics/map_objects/pics/people/hiker/5.4bpp");
-const u32 gMapObjectPic_Hiker_6[] = INCBIN_U32("graphics/map_objects/pics/people/hiker/6.4bpp");
-const u32 gMapObjectPic_Hiker_7[] = INCBIN_U32("graphics/map_objects/pics/people/hiker/7.4bpp");
-const u32 gMapObjectPic_Hiker_8[] = INCBIN_U32("graphics/map_objects/pics/people/hiker/8.4bpp");
-const u32 gMapObjectPic_CyclingTriathleteM_0[] = INCBIN_U32("graphics/map_objects/pics/people/cycling_triathlete_m/0.4bpp");
-const u32 gMapObjectPic_CyclingTriathleteM_1[] = INCBIN_U32("graphics/map_objects/pics/people/cycling_triathlete_m/1.4bpp");
-const u32 gMapObjectPic_CyclingTriathleteM_2[] = INCBIN_U32("graphics/map_objects/pics/people/cycling_triathlete_m/2.4bpp");
-const u32 gMapObjectPic_CyclingTriathleteM_3[] = INCBIN_U32("graphics/map_objects/pics/people/cycling_triathlete_m/3.4bpp");
-const u32 gMapObjectPic_CyclingTriathleteM_4[] = INCBIN_U32("graphics/map_objects/pics/people/cycling_triathlete_m/4.4bpp");
-const u32 gMapObjectPic_CyclingTriathleteM_5[] = INCBIN_U32("graphics/map_objects/pics/people/cycling_triathlete_m/5.4bpp");
-const u32 gMapObjectPic_CyclingTriathleteM_6[] = INCBIN_U32("graphics/map_objects/pics/people/cycling_triathlete_m/6.4bpp");
-const u32 gMapObjectPic_CyclingTriathleteM_7[] = INCBIN_U32("graphics/map_objects/pics/people/cycling_triathlete_m/7.4bpp");
-const u32 gMapObjectPic_CyclingTriathleteM_8[] = INCBIN_U32("graphics/map_objects/pics/people/cycling_triathlete_m/8.4bpp");
-const u32 gMapObjectPic_CyclingTriathleteF_0[] = INCBIN_U32("graphics/map_objects/pics/people/cycling_triathlete_f/0.4bpp");
-const u32 gMapObjectPic_CyclingTriathleteF_1[] = INCBIN_U32("graphics/map_objects/pics/people/cycling_triathlete_f/1.4bpp");
-const u32 gMapObjectPic_CyclingTriathleteF_2[] = INCBIN_U32("graphics/map_objects/pics/people/cycling_triathlete_f/2.4bpp");
-const u32 gMapObjectPic_CyclingTriathleteF_3[] = INCBIN_U32("graphics/map_objects/pics/people/cycling_triathlete_f/3.4bpp");
-const u32 gMapObjectPic_CyclingTriathleteF_4[] = INCBIN_U32("graphics/map_objects/pics/people/cycling_triathlete_f/4.4bpp");
-const u32 gMapObjectPic_CyclingTriathleteF_5[] = INCBIN_U32("graphics/map_objects/pics/people/cycling_triathlete_f/5.4bpp");
-const u32 gMapObjectPic_CyclingTriathleteF_6[] = INCBIN_U32("graphics/map_objects/pics/people/cycling_triathlete_f/6.4bpp");
-const u32 gMapObjectPic_CyclingTriathleteF_7[] = INCBIN_U32("graphics/map_objects/pics/people/cycling_triathlete_f/7.4bpp");
-const u32 gMapObjectPic_CyclingTriathleteF_8[] = INCBIN_U32("graphics/map_objects/pics/people/cycling_triathlete_f/8.4bpp");
-const u32 gMapObjectPic_Man5_0[] = INCBIN_U32("graphics/map_objects/pics/people/man_5/0.4bpp");
-const u32 gMapObjectPic_Man5_1[] = INCBIN_U32("graphics/map_objects/pics/people/man_5/1.4bpp");
-const u32 gMapObjectPic_Man5_2[] = INCBIN_U32("graphics/map_objects/pics/people/man_5/2.4bpp");
-const u32 gMapObjectPic_Man5_3[] = INCBIN_U32("graphics/map_objects/pics/people/man_5/3.4bpp");
-const u32 gMapObjectPic_Man5_4[] = INCBIN_U32("graphics/map_objects/pics/people/man_5/4.4bpp");
-const u32 gMapObjectPic_Man5_5[] = INCBIN_U32("graphics/map_objects/pics/people/man_5/5.4bpp");
-const u32 gMapObjectPic_Man5_6[] = INCBIN_U32("graphics/map_objects/pics/people/man_5/6.4bpp");
-const u32 gMapObjectPic_Man5_7[] = INCBIN_U32("graphics/map_objects/pics/people/man_5/7.4bpp");
-const u32 gMapObjectPic_Man5_8[] = INCBIN_U32("graphics/map_objects/pics/people/man_5/8.4bpp");
-const u32 gMapObjectPic_Man6_0[] = INCBIN_U32("graphics/map_objects/pics/people/man_6/0.4bpp");
-const u32 gMapObjectPic_Man6_1[] = INCBIN_U32("graphics/map_objects/pics/people/man_6/1.4bpp");
-const u32 gMapObjectPic_Man6_2[] = INCBIN_U32("graphics/map_objects/pics/people/man_6/2.4bpp");
-const u32 gMapObjectPic_Man6_3[] = INCBIN_U32("graphics/map_objects/pics/people/man_6/3.4bpp");
-const u32 gMapObjectPic_Man6_4[] = INCBIN_U32("graphics/map_objects/pics/people/man_6/4.4bpp");
-const u32 gMapObjectPic_Man6_5[] = INCBIN_U32("graphics/map_objects/pics/people/man_6/5.4bpp");
-const u32 gMapObjectPic_Man6_6[] = INCBIN_U32("graphics/map_objects/pics/people/man_6/6.4bpp");
-const u32 gMapObjectPic_Man6_7[] = INCBIN_U32("graphics/map_objects/pics/people/man_6/7.4bpp");
-const u32 gMapObjectPic_Man6_8[] = INCBIN_U32("graphics/map_objects/pics/people/man_6/8.4bpp");
-const u32 gMapObjectPic_Nurse_0[] = INCBIN_U32("graphics/map_objects/pics/people/nurse/0.4bpp");
-const u32 gMapObjectPic_Nurse_1[] = INCBIN_U32("graphics/map_objects/pics/people/nurse/1.4bpp");
-const u32 gMapObjectPic_Nurse_2[] = INCBIN_U32("graphics/map_objects/pics/people/nurse/2.4bpp");
-const u32 gMapObjectPic_Nurse_3[] = INCBIN_U32("graphics/map_objects/pics/people/nurse/3.4bpp");
-const u32 gMapObjectPic_Nurse_4[] = INCBIN_U32("graphics/map_objects/pics/people/nurse/4.4bpp");
-const u32 gMapObjectPic_Nurse_5[] = INCBIN_U32("graphics/map_objects/pics/people/nurse/5.4bpp");
-const u32 gMapObjectPic_Nurse_6[] = INCBIN_U32("graphics/map_objects/pics/people/nurse/6.4bpp");
-const u32 gMapObjectPic_Nurse_7[] = INCBIN_U32("graphics/map_objects/pics/people/nurse/7.4bpp");
-const u32 gMapObjectPic_Nurse_8[] = INCBIN_U32("graphics/map_objects/pics/people/nurse/8.4bpp");
-const u32 gMapObjectPic_Nurse_9[] = INCBIN_U32("graphics/map_objects/pics/people/nurse/9.4bpp");
-const u32 gMapObjectPic_ItemBall[] = INCBIN_U32("graphics/map_objects/pics/misc/item_ball.4bpp");
-const u32 gMapObjectPic_ProfBirch_0[] = INCBIN_U32("graphics/map_objects/pics/people/prof_birch/0.4bpp");
-const u32 gMapObjectPic_ProfBirch_1[] = INCBIN_U32("graphics/map_objects/pics/people/prof_birch/1.4bpp");
-const u32 gMapObjectPic_ProfBirch_2[] = INCBIN_U32("graphics/map_objects/pics/people/prof_birch/2.4bpp");
-const u32 gMapObjectPic_ProfBirch_3[] = INCBIN_U32("graphics/map_objects/pics/people/prof_birch/3.4bpp");
-const u32 gMapObjectPic_ProfBirch_4[] = INCBIN_U32("graphics/map_objects/pics/people/prof_birch/4.4bpp");
-const u32 gMapObjectPic_ProfBirch_5[] = INCBIN_U32("graphics/map_objects/pics/people/prof_birch/5.4bpp");
-const u32 gMapObjectPic_ProfBirch_6[] = INCBIN_U32("graphics/map_objects/pics/people/prof_birch/6.4bpp");
-const u32 gMapObjectPic_ProfBirch_7[] = INCBIN_U32("graphics/map_objects/pics/people/prof_birch/7.4bpp");
-const u32 gMapObjectPic_ProfBirch_8[] = INCBIN_U32("graphics/map_objects/pics/people/prof_birch/8.4bpp");
-const u32 gMapObjectPic_ReporterM_0[] = INCBIN_U32("graphics/map_objects/pics/people/reporter_m/0.4bpp");
-const u32 gMapObjectPic_ReporterM_1[] = INCBIN_U32("graphics/map_objects/pics/people/reporter_m/1.4bpp");
-const u32 gMapObjectPic_ReporterM_2[] = INCBIN_U32("graphics/map_objects/pics/people/reporter_m/2.4bpp");
-const u32 gMapObjectPic_ReporterM_3[] = INCBIN_U32("graphics/map_objects/pics/people/reporter_m/3.4bpp");
-const u32 gMapObjectPic_ReporterM_4[] = INCBIN_U32("graphics/map_objects/pics/people/reporter_m/4.4bpp");
-const u32 gMapObjectPic_ReporterM_5[] = INCBIN_U32("graphics/map_objects/pics/people/reporter_m/5.4bpp");
-const u32 gMapObjectPic_ReporterM_6[] = INCBIN_U32("graphics/map_objects/pics/people/reporter_m/6.4bpp");
-const u32 gMapObjectPic_ReporterM_7[] = INCBIN_U32("graphics/map_objects/pics/people/reporter_m/7.4bpp");
-const u32 gMapObjectPic_ReporterM_8[] = INCBIN_U32("graphics/map_objects/pics/people/reporter_m/8.4bpp");
-const u32 gMapObjectPic_ReporterF_0[] = INCBIN_U32("graphics/map_objects/pics/people/reporter_f/0.4bpp");
-const u32 gMapObjectPic_ReporterF_1[] = INCBIN_U32("graphics/map_objects/pics/people/reporter_f/1.4bpp");
-const u32 gMapObjectPic_ReporterF_2[] = INCBIN_U32("graphics/map_objects/pics/people/reporter_f/2.4bpp");
-const u32 gMapObjectPic_ReporterF_3[] = INCBIN_U32("graphics/map_objects/pics/people/reporter_f/3.4bpp");
-const u32 gMapObjectPic_ReporterF_4[] = INCBIN_U32("graphics/map_objects/pics/people/reporter_f/4.4bpp");
-const u32 gMapObjectPic_ReporterF_5[] = INCBIN_U32("graphics/map_objects/pics/people/reporter_f/5.4bpp");
-const u32 gMapObjectPic_ReporterF_6[] = INCBIN_U32("graphics/map_objects/pics/people/reporter_f/6.4bpp");
-const u32 gMapObjectPic_ReporterF_7[] = INCBIN_U32("graphics/map_objects/pics/people/reporter_f/7.4bpp");
-const u32 gMapObjectPic_ReporterF_8[] = INCBIN_U32("graphics/map_objects/pics/people/reporter_f/8.4bpp");
-const u32 gMapObjectPic_MauvilleOldMan1_0[] = INCBIN_U32("graphics/map_objects/pics/people/mauville_old_man_1/0.4bpp");
-const u32 gMapObjectPic_MauvilleOldMan1_1[] = INCBIN_U32("graphics/map_objects/pics/people/mauville_old_man_1/1.4bpp");
-const u32 gMapObjectPic_MauvilleOldMan1_2[] = INCBIN_U32("graphics/map_objects/pics/people/mauville_old_man_1/2.4bpp");
-const u32 gMapObjectPic_MauvilleOldMan1_3[] = INCBIN_U32("graphics/map_objects/pics/people/mauville_old_man_1/3.4bpp");
-const u32 gMapObjectPic_MauvilleOldMan1_4[] = INCBIN_U32("graphics/map_objects/pics/people/mauville_old_man_1/4.4bpp");
-const u32 gMapObjectPic_MauvilleOldMan1_5[] = INCBIN_U32("graphics/map_objects/pics/people/mauville_old_man_1/5.4bpp");
-const u32 gMapObjectPic_MauvilleOldMan1_6[] = INCBIN_U32("graphics/map_objects/pics/people/mauville_old_man_1/6.4bpp");
-const u32 gMapObjectPic_MauvilleOldMan1_7[] = INCBIN_U32("graphics/map_objects/pics/people/mauville_old_man_1/7.4bpp");
-const u32 gMapObjectPic_MauvilleOldMan1_8[] = INCBIN_U32("graphics/map_objects/pics/people/mauville_old_man_1/8.4bpp");
-const u32 gMapObjectPic_MauvilleOldMan2_0[] = INCBIN_U32("graphics/map_objects/pics/people/mauville_old_man_2/0.4bpp");
-const u32 gMapObjectPic_MauvilleOldMan2_1[] = INCBIN_U32("graphics/map_objects/pics/people/mauville_old_man_2/1.4bpp");
-const u32 gMapObjectPic_MauvilleOldMan2_2[] = INCBIN_U32("graphics/map_objects/pics/people/mauville_old_man_2/2.4bpp");
-const u32 gMapObjectPic_MauvilleOldMan2_3[] = INCBIN_U32("graphics/map_objects/pics/people/mauville_old_man_2/3.4bpp");
-const u32 gMapObjectPic_MauvilleOldMan2_4[] = INCBIN_U32("graphics/map_objects/pics/people/mauville_old_man_2/4.4bpp");
-const u32 gMapObjectPic_MauvilleOldMan2_5[] = INCBIN_U32("graphics/map_objects/pics/people/mauville_old_man_2/5.4bpp");
-const u32 gMapObjectPic_MauvilleOldMan2_6[] = INCBIN_U32("graphics/map_objects/pics/people/mauville_old_man_2/6.4bpp");
-const u32 gMapObjectPic_MauvilleOldMan2_7[] = INCBIN_U32("graphics/map_objects/pics/people/mauville_old_man_2/7.4bpp");
-const u32 gMapObjectPic_MauvilleOldMan2_8[] = INCBIN_U32("graphics/map_objects/pics/people/mauville_old_man_2/8.4bpp");
-const u32 gMapObjectPic_MartEmployee_0[] = INCBIN_U32("graphics/map_objects/pics/people/mart_employee/0.4bpp");
-const u32 gMapObjectPic_MartEmployee_1[] = INCBIN_U32("graphics/map_objects/pics/people/mart_employee/1.4bpp");
-const u32 gMapObjectPic_MartEmployee_2[] = INCBIN_U32("graphics/map_objects/pics/people/mart_employee/2.4bpp");
-const u32 gMapObjectPic_MartEmployee_3[] = INCBIN_U32("graphics/map_objects/pics/people/mart_employee/3.4bpp");
-const u32 gMapObjectPic_MartEmployee_4[] = INCBIN_U32("graphics/map_objects/pics/people/mart_employee/4.4bpp");
-const u32 gMapObjectPic_MartEmployee_5[] = INCBIN_U32("graphics/map_objects/pics/people/mart_employee/5.4bpp");
-const u32 gMapObjectPic_MartEmployee_6[] = INCBIN_U32("graphics/map_objects/pics/people/mart_employee/6.4bpp");
-const u32 gMapObjectPic_MartEmployee_7[] = INCBIN_U32("graphics/map_objects/pics/people/mart_employee/7.4bpp");
-const u32 gMapObjectPic_MartEmployee_8[] = INCBIN_U32("graphics/map_objects/pics/people/mart_employee/8.4bpp");
-const u32 gMapObjectPic_RooftopSaleWoman_0[] = INCBIN_U32("graphics/map_objects/pics/people/rooftop_sale_woman/0.4bpp");
-const u32 gMapObjectPic_RooftopSaleWoman_1[] = INCBIN_U32("graphics/map_objects/pics/people/rooftop_sale_woman/1.4bpp");
-const u32 gMapObjectPic_RooftopSaleWoman_2[] = INCBIN_U32("graphics/map_objects/pics/people/rooftop_sale_woman/2.4bpp");
-const u32 gMapObjectPic_RooftopSaleWoman_3[] = INCBIN_U32("graphics/map_objects/pics/people/rooftop_sale_woman/3.4bpp");
-const u32 gMapObjectPic_RooftopSaleWoman_4[] = INCBIN_U32("graphics/map_objects/pics/people/rooftop_sale_woman/4.4bpp");
-const u32 gMapObjectPic_RooftopSaleWoman_5[] = INCBIN_U32("graphics/map_objects/pics/people/rooftop_sale_woman/5.4bpp");
-const u32 gMapObjectPic_RooftopSaleWoman_6[] = INCBIN_U32("graphics/map_objects/pics/people/rooftop_sale_woman/6.4bpp");
-const u32 gMapObjectPic_RooftopSaleWoman_7[] = INCBIN_U32("graphics/map_objects/pics/people/rooftop_sale_woman/7.4bpp");
-const u32 gMapObjectPic_RooftopSaleWoman_8[] = INCBIN_U32("graphics/map_objects/pics/people/rooftop_sale_woman/8.4bpp");
-const u32 gMapObjectPic_Teala_0[] = INCBIN_U32("graphics/map_objects/pics/people/teala/0.4bpp");
-const u32 gMapObjectPic_Teala_1[] = INCBIN_U32("graphics/map_objects/pics/people/teala/1.4bpp");
-const u32 gMapObjectPic_Teala_2[] = INCBIN_U32("graphics/map_objects/pics/people/teala/2.4bpp");
-const u32 gMapObjectPic_Teala_3[] = INCBIN_U32("graphics/map_objects/pics/people/teala/3.4bpp");
-const u32 gMapObjectPic_Teala_4[] = INCBIN_U32("graphics/map_objects/pics/people/teala/4.4bpp");
-const u32 gMapObjectPic_Teala_5[] = INCBIN_U32("graphics/map_objects/pics/people/teala/5.4bpp");
-const u32 gMapObjectPic_Teala_6[] = INCBIN_U32("graphics/map_objects/pics/people/teala/6.4bpp");
-const u32 gMapObjectPic_Teala_7[] = INCBIN_U32("graphics/map_objects/pics/people/teala/7.4bpp");
-const u32 gMapObjectPic_Teala_8[] = INCBIN_U32("graphics/map_objects/pics/people/teala/8.4bpp");
-const u32 gMapObjectPic_Artist_0[] = INCBIN_U32("graphics/map_objects/pics/people/artist/0.4bpp");
-const u32 gMapObjectPic_Artist_1[] = INCBIN_U32("graphics/map_objects/pics/people/artist/1.4bpp");
-const u32 gMapObjectPic_Artist_2[] = INCBIN_U32("graphics/map_objects/pics/people/artist/2.4bpp");
-const u32 gMapObjectPic_Artist_3[] = INCBIN_U32("graphics/map_objects/pics/people/artist/3.4bpp");
-const u32 gMapObjectPic_Artist_4[] = INCBIN_U32("graphics/map_objects/pics/people/artist/4.4bpp");
-const u32 gMapObjectPic_Artist_5[] = INCBIN_U32("graphics/map_objects/pics/people/artist/5.4bpp");
-const u32 gMapObjectPic_Artist_6[] = INCBIN_U32("graphics/map_objects/pics/people/artist/6.4bpp");
-const u32 gMapObjectPic_Artist_7[] = INCBIN_U32("graphics/map_objects/pics/people/artist/7.4bpp");
-const u32 gMapObjectPic_Artist_8[] = INCBIN_U32("graphics/map_objects/pics/people/artist/8.4bpp");
-const u32 gMapObjectPic_Cameraman_0[] = INCBIN_U32("graphics/map_objects/pics/people/cameraman/0.4bpp");
-const u32 gMapObjectPic_Cameraman_1[] = INCBIN_U32("graphics/map_objects/pics/people/cameraman/1.4bpp");
-const u32 gMapObjectPic_Cameraman_2[] = INCBIN_U32("graphics/map_objects/pics/people/cameraman/2.4bpp");
-const u32 gMapObjectPic_Cameraman_3[] = INCBIN_U32("graphics/map_objects/pics/people/cameraman/3.4bpp");
-const u32 gMapObjectPic_Cameraman_4[] = INCBIN_U32("graphics/map_objects/pics/people/cameraman/4.4bpp");
-const u32 gMapObjectPic_Cameraman_5[] = INCBIN_U32("graphics/map_objects/pics/people/cameraman/5.4bpp");
-const u32 gMapObjectPic_Cameraman_6[] = INCBIN_U32("graphics/map_objects/pics/people/cameraman/6.4bpp");
-const u32 gMapObjectPic_Cameraman_7[] = INCBIN_U32("graphics/map_objects/pics/people/cameraman/7.4bpp");
-const u32 gMapObjectPic_Cameraman_8[] = INCBIN_U32("graphics/map_objects/pics/people/cameraman/8.4bpp");
-const u32 gMapObjectPic_Scientist2_0[] = INCBIN_U32("graphics/map_objects/pics/people/scientist_2/0.4bpp");
-const u32 gMapObjectPic_Scientist2_1[] = INCBIN_U32("graphics/map_objects/pics/people/scientist_2/1.4bpp");
-const u32 gMapObjectPic_Scientist2_2[] = INCBIN_U32("graphics/map_objects/pics/people/scientist_2/2.4bpp");
-const u32 gMapObjectPic_Scientist2_3[] = INCBIN_U32("graphics/map_objects/pics/people/scientist_2/3.4bpp");
-const u32 gMapObjectPic_Scientist2_4[] = INCBIN_U32("graphics/map_objects/pics/people/scientist_2/4.4bpp");
-const u32 gMapObjectPic_Scientist2_5[] = INCBIN_U32("graphics/map_objects/pics/people/scientist_2/5.4bpp");
-const u32 gMapObjectPic_Scientist2_6[] = INCBIN_U32("graphics/map_objects/pics/people/scientist_2/6.4bpp");
-const u32 gMapObjectPic_Scientist2_7[] = INCBIN_U32("graphics/map_objects/pics/people/scientist_2/7.4bpp");
-const u32 gMapObjectPic_Scientist2_8[] = INCBIN_U32("graphics/map_objects/pics/people/scientist_2/8.4bpp");
-const u32 gMapObjectPic_Man7_0[] = INCBIN_U32("graphics/map_objects/pics/people/man_7/0.4bpp");
-const u32 gMapObjectPic_Man7_1[] = INCBIN_U32("graphics/map_objects/pics/people/man_7/1.4bpp");
-const u32 gMapObjectPic_Man7_2[] = INCBIN_U32("graphics/map_objects/pics/people/man_7/2.4bpp");
-const u32 gMapObjectPic_Man7_3[] = INCBIN_U32("graphics/map_objects/pics/people/man_7/3.4bpp");
-const u32 gMapObjectPic_Man7_4[] = INCBIN_U32("graphics/map_objects/pics/people/man_7/4.4bpp");
-const u32 gMapObjectPic_Man7_5[] = INCBIN_U32("graphics/map_objects/pics/people/man_7/5.4bpp");
-const u32 gMapObjectPic_Man7_6[] = INCBIN_U32("graphics/map_objects/pics/people/man_7/6.4bpp");
-const u32 gMapObjectPic_Man7_7[] = INCBIN_U32("graphics/map_objects/pics/people/man_7/7.4bpp");
-const u32 gMapObjectPic_Man7_8[] = INCBIN_U32("graphics/map_objects/pics/people/man_7/8.4bpp");
-const u32 gMapObjectPic_AquaMemberM_0[] = INCBIN_U32("graphics/map_objects/pics/people/aqua_member_m/0.4bpp");
-const u32 gMapObjectPic_AquaMemberM_1[] = INCBIN_U32("graphics/map_objects/pics/people/aqua_member_m/1.4bpp");
-const u32 gMapObjectPic_AquaMemberM_2[] = INCBIN_U32("graphics/map_objects/pics/people/aqua_member_m/2.4bpp");
-const u32 gMapObjectPic_AquaMemberM_3[] = INCBIN_U32("graphics/map_objects/pics/people/aqua_member_m/3.4bpp");
-const u32 gMapObjectPic_AquaMemberM_4[] = INCBIN_U32("graphics/map_objects/pics/people/aqua_member_m/4.4bpp");
-const u32 gMapObjectPic_AquaMemberM_5[] = INCBIN_U32("graphics/map_objects/pics/people/aqua_member_m/5.4bpp");
-const u32 gMapObjectPic_AquaMemberM_6[] = INCBIN_U32("graphics/map_objects/pics/people/aqua_member_m/6.4bpp");
-const u32 gMapObjectPic_AquaMemberM_7[] = INCBIN_U32("graphics/map_objects/pics/people/aqua_member_m/7.4bpp");
-const u32 gMapObjectPic_AquaMemberM_8[] = INCBIN_U32("graphics/map_objects/pics/people/aqua_member_m/8.4bpp");
-const u32 gMapObjectPic_AquaMemberF_0[] = INCBIN_U32("graphics/map_objects/pics/people/aqua_member_f/0.4bpp");
-const u32 gMapObjectPic_AquaMemberF_1[] = INCBIN_U32("graphics/map_objects/pics/people/aqua_member_f/1.4bpp");
-const u32 gMapObjectPic_AquaMemberF_2[] = INCBIN_U32("graphics/map_objects/pics/people/aqua_member_f/2.4bpp");
-const u32 gMapObjectPic_AquaMemberF_3[] = INCBIN_U32("graphics/map_objects/pics/people/aqua_member_f/3.4bpp");
-const u32 gMapObjectPic_AquaMemberF_4[] = INCBIN_U32("graphics/map_objects/pics/people/aqua_member_f/4.4bpp");
-const u32 gMapObjectPic_AquaMemberF_5[] = INCBIN_U32("graphics/map_objects/pics/people/aqua_member_f/5.4bpp");
-const u32 gMapObjectPic_AquaMemberF_6[] = INCBIN_U32("graphics/map_objects/pics/people/aqua_member_f/6.4bpp");
-const u32 gMapObjectPic_AquaMemberF_7[] = INCBIN_U32("graphics/map_objects/pics/people/aqua_member_f/7.4bpp");
-const u32 gMapObjectPic_AquaMemberF_8[] = INCBIN_U32("graphics/map_objects/pics/people/aqua_member_f/8.4bpp");
-const u32 gMapObjectPic_MagmaMemberM_0[] = INCBIN_U32("graphics/map_objects/pics/people/magma_member_m/0.4bpp");
-const u32 gMapObjectPic_MagmaMemberM_1[] = INCBIN_U32("graphics/map_objects/pics/people/magma_member_m/1.4bpp");
-const u32 gMapObjectPic_MagmaMemberM_2[] = INCBIN_U32("graphics/map_objects/pics/people/magma_member_m/2.4bpp");
-const u32 gMapObjectPic_MagmaMemberM_3[] = INCBIN_U32("graphics/map_objects/pics/people/magma_member_m/3.4bpp");
-const u32 gMapObjectPic_MagmaMemberM_4[] = INCBIN_U32("graphics/map_objects/pics/people/magma_member_m/4.4bpp");
-const u32 gMapObjectPic_MagmaMemberM_5[] = INCBIN_U32("graphics/map_objects/pics/people/magma_member_m/5.4bpp");
-const u32 gMapObjectPic_MagmaMemberM_6[] = INCBIN_U32("graphics/map_objects/pics/people/magma_member_m/6.4bpp");
-const u32 gMapObjectPic_MagmaMemberM_7[] = INCBIN_U32("graphics/map_objects/pics/people/magma_member_m/7.4bpp");
-const u32 gMapObjectPic_MagmaMemberM_8[] = INCBIN_U32("graphics/map_objects/pics/people/magma_member_m/8.4bpp");
-const u32 gMapObjectPic_MagmaMemberF_0[] = INCBIN_U32("graphics/map_objects/pics/people/magma_member_f/0.4bpp");
-const u32 gMapObjectPic_MagmaMemberF_1[] = INCBIN_U32("graphics/map_objects/pics/people/magma_member_f/1.4bpp");
-const u32 gMapObjectPic_MagmaMemberF_2[] = INCBIN_U32("graphics/map_objects/pics/people/magma_member_f/2.4bpp");
-const u32 gMapObjectPic_MagmaMemberF_3[] = INCBIN_U32("graphics/map_objects/pics/people/magma_member_f/3.4bpp");
-const u32 gMapObjectPic_MagmaMemberF_4[] = INCBIN_U32("graphics/map_objects/pics/people/magma_member_f/4.4bpp");
-const u32 gMapObjectPic_MagmaMemberF_5[] = INCBIN_U32("graphics/map_objects/pics/people/magma_member_f/5.4bpp");
-const u32 gMapObjectPic_MagmaMemberF_6[] = INCBIN_U32("graphics/map_objects/pics/people/magma_member_f/6.4bpp");
-const u32 gMapObjectPic_MagmaMemberF_7[] = INCBIN_U32("graphics/map_objects/pics/people/magma_member_f/7.4bpp");
-const u32 gMapObjectPic_MagmaMemberF_8[] = INCBIN_U32("graphics/map_objects/pics/people/magma_member_f/8.4bpp");
-const u32 gMapObjectPic_Sidney_0[] = INCBIN_U32("graphics/map_objects/pics/people/sidney/0.4bpp");
-const u32 gMapObjectPic_Sidney_1[] = INCBIN_U32("graphics/map_objects/pics/people/sidney/1.4bpp");
-const u32 gMapObjectPic_Sidney_2[] = INCBIN_U32("graphics/map_objects/pics/people/sidney/2.4bpp");
-const u32 gMapObjectPic_Phoebe_0[] = INCBIN_U32("graphics/map_objects/pics/people/phoebe/0.4bpp");
-const u32 gMapObjectPic_Phoebe_1[] = INCBIN_U32("graphics/map_objects/pics/people/phoebe/1.4bpp");
-const u32 gMapObjectPic_Phoebe_2[] = INCBIN_U32("graphics/map_objects/pics/people/phoebe/2.4bpp");
-const u32 gMapObjectPic_Glacia_0[] = INCBIN_U32("graphics/map_objects/pics/people/glacia/0.4bpp");
-const u32 gMapObjectPic_Glacia_1[] = INCBIN_U32("graphics/map_objects/pics/people/glacia/1.4bpp");
-const u32 gMapObjectPic_Glacia_2[] = INCBIN_U32("graphics/map_objects/pics/people/glacia/2.4bpp");
-const u32 gMapObjectPic_Drake_0[] = INCBIN_U32("graphics/map_objects/pics/people/drake/0.4bpp");
-const u32 gMapObjectPic_Drake_1[] = INCBIN_U32("graphics/map_objects/pics/people/drake/1.4bpp");
-const u32 gMapObjectPic_Drake_2[] = INCBIN_U32("graphics/map_objects/pics/people/drake/2.4bpp");
-const u32 gMapObjectPic_Roxanne_0[] = INCBIN_U32("graphics/map_objects/pics/people/roxanne/0.4bpp");
-const u32 gMapObjectPic_Roxanne_1[] = INCBIN_U32("graphics/map_objects/pics/people/roxanne/1.4bpp");
-const u32 gMapObjectPic_Roxanne_2[] = INCBIN_U32("graphics/map_objects/pics/people/roxanne/2.4bpp");
-const u32 gMapObjectPic_Brawly_0[] = INCBIN_U32("graphics/map_objects/pics/people/brawly/0.4bpp");
-const u32 gMapObjectPic_Brawly_1[] = INCBIN_U32("graphics/map_objects/pics/people/brawly/1.4bpp");
-const u32 gMapObjectPic_Brawly_2[] = INCBIN_U32("graphics/map_objects/pics/people/brawly/2.4bpp");
-const u32 gMapObjectPic_Wattson_0[] = INCBIN_U32("graphics/map_objects/pics/people/wattson/0.4bpp");
-const u32 gMapObjectPic_Wattson_1[] = INCBIN_U32("graphics/map_objects/pics/people/wattson/1.4bpp");
-const u32 gMapObjectPic_Wattson_2[] = INCBIN_U32("graphics/map_objects/pics/people/wattson/2.4bpp");
-const u32 gMapObjectPic_Flannery_0[] = INCBIN_U32("graphics/map_objects/pics/people/flannery/0.4bpp");
-const u32 gMapObjectPic_Flannery_1[] = INCBIN_U32("graphics/map_objects/pics/people/flannery/1.4bpp");
-const u32 gMapObjectPic_Flannery_2[] = INCBIN_U32("graphics/map_objects/pics/people/flannery/2.4bpp");
-const u32 gMapObjectPic_Norman_0[] = INCBIN_U32("graphics/map_objects/pics/people/norman/0.4bpp");
-const u32 gMapObjectPic_Norman_1[] = INCBIN_U32("graphics/map_objects/pics/people/norman/1.4bpp");
-const u32 gMapObjectPic_Norman_2[] = INCBIN_U32("graphics/map_objects/pics/people/norman/2.4bpp");
-const u32 gMapObjectPic_Norman_3[] = INCBIN_U32("graphics/map_objects/pics/people/norman/3.4bpp");
-const u32 gMapObjectPic_Norman_4[] = INCBIN_U32("graphics/map_objects/pics/people/norman/4.4bpp");
-const u32 gMapObjectPic_Norman_5[] = INCBIN_U32("graphics/map_objects/pics/people/norman/5.4bpp");
-const u32 gMapObjectPic_Norman_6[] = INCBIN_U32("graphics/map_objects/pics/people/norman/6.4bpp");
-const u32 gMapObjectPic_Norman_7[] = INCBIN_U32("graphics/map_objects/pics/people/norman/7.4bpp");
-const u32 gMapObjectPic_Norman_8[] = INCBIN_U32("graphics/map_objects/pics/people/norman/8.4bpp");
-const u32 gMapObjectPic_Winona_0[] = INCBIN_U32("graphics/map_objects/pics/people/winona/0.4bpp");
-const u32 gMapObjectPic_Winona_1[] = INCBIN_U32("graphics/map_objects/pics/people/winona/1.4bpp");
-const u32 gMapObjectPic_Winona_2[] = INCBIN_U32("graphics/map_objects/pics/people/winona/2.4bpp");
-const u32 gMapObjectPic_Liza_0[] = INCBIN_U32("graphics/map_objects/pics/people/liza/0.4bpp");
-const u32 gMapObjectPic_Liza_1[] = INCBIN_U32("graphics/map_objects/pics/people/liza/1.4bpp");
-const u32 gMapObjectPic_Liza_2[] = INCBIN_U32("graphics/map_objects/pics/people/liza/2.4bpp");
-const u32 gMapObjectPic_Tate_0[] = INCBIN_U32("graphics/map_objects/pics/people/tate/0.4bpp");
-const u32 gMapObjectPic_Tate_1[] = INCBIN_U32("graphics/map_objects/pics/people/tate/1.4bpp");
-const u32 gMapObjectPic_Tate_2[] = INCBIN_U32("graphics/map_objects/pics/people/tate/2.4bpp");
-const u32 gMapObjectPic_Wallace_0[] = INCBIN_U32("graphics/map_objects/pics/people/wallace/0.4bpp");
-const u32 gMapObjectPic_Wallace_1[] = INCBIN_U32("graphics/map_objects/pics/people/wallace/1.4bpp");
-const u32 gMapObjectPic_Wallace_2[] = INCBIN_U32("graphics/map_objects/pics/people/wallace/2.4bpp");
-const u32 gMapObjectPic_Wallace_3[] = INCBIN_U32("graphics/map_objects/pics/people/wallace/3.4bpp");
-const u32 gMapObjectPic_Wallace_4[] = INCBIN_U32("graphics/map_objects/pics/people/wallace/4.4bpp");
-const u32 gMapObjectPic_Wallace_5[] = INCBIN_U32("graphics/map_objects/pics/people/wallace/5.4bpp");
-const u32 gMapObjectPic_Wallace_6[] = INCBIN_U32("graphics/map_objects/pics/people/wallace/6.4bpp");
-const u32 gMapObjectPic_Wallace_7[] = INCBIN_U32("graphics/map_objects/pics/people/wallace/7.4bpp");
-const u32 gMapObjectPic_Wallace_8[] = INCBIN_U32("graphics/map_objects/pics/people/wallace/8.4bpp");
-const u32 gMapObjectPic_Steven_0[] = INCBIN_U32("graphics/map_objects/pics/people/steven/0.4bpp");
-const u32 gMapObjectPic_Steven_1[] = INCBIN_U32("graphics/map_objects/pics/people/steven/1.4bpp");
-const u32 gMapObjectPic_Steven_2[] = INCBIN_U32("graphics/map_objects/pics/people/steven/2.4bpp");
-const u32 gMapObjectPic_Steven_3[] = INCBIN_U32("graphics/map_objects/pics/people/steven/3.4bpp");
-const u32 gMapObjectPic_Steven_4[] = INCBIN_U32("graphics/map_objects/pics/people/steven/4.4bpp");
-const u32 gMapObjectPic_Steven_5[] = INCBIN_U32("graphics/map_objects/pics/people/steven/5.4bpp");
-const u32 gMapObjectPic_Steven_6[] = INCBIN_U32("graphics/map_objects/pics/people/steven/6.4bpp");
-const u32 gMapObjectPic_Steven_7[] = INCBIN_U32("graphics/map_objects/pics/people/steven/7.4bpp");
-const u32 gMapObjectPic_Steven_8[] = INCBIN_U32("graphics/map_objects/pics/people/steven/8.4bpp");
-const u32 gMapObjectPic_Wally_0[] = INCBIN_U32("graphics/map_objects/pics/people/wally/0.4bpp");
-const u32 gMapObjectPic_Wally_1[] = INCBIN_U32("graphics/map_objects/pics/people/wally/1.4bpp");
-const u32 gMapObjectPic_Wally_2[] = INCBIN_U32("graphics/map_objects/pics/people/wally/2.4bpp");
-const u32 gMapObjectPic_Wally_3[] = INCBIN_U32("graphics/map_objects/pics/people/wally/3.4bpp");
-const u32 gMapObjectPic_Wally_4[] = INCBIN_U32("graphics/map_objects/pics/people/wally/4.4bpp");
-const u32 gMapObjectPic_Wally_5[] = INCBIN_U32("graphics/map_objects/pics/people/wally/5.4bpp");
-const u32 gMapObjectPic_Wally_6[] = INCBIN_U32("graphics/map_objects/pics/people/wally/6.4bpp");
-const u32 gMapObjectPic_Wally_7[] = INCBIN_U32("graphics/map_objects/pics/people/wally/7.4bpp");
-const u32 gMapObjectPic_Wally_8[] = INCBIN_U32("graphics/map_objects/pics/people/wally/8.4bpp");
-const u32 gMapObjectPic_LittleBoy3_0[] = INCBIN_U32("graphics/map_objects/pics/people/little_boy_3/0.4bpp");
-const u32 gMapObjectPic_LittleBoy3_1[] = INCBIN_U32("graphics/map_objects/pics/people/little_boy_3/1.4bpp");
-const u32 gMapObjectPic_LittleBoy3_2[] = INCBIN_U32("graphics/map_objects/pics/people/little_boy_3/2.4bpp");
-const u32 gMapObjectPic_LittleBoy3_3[] = INCBIN_U32("graphics/map_objects/pics/people/little_boy_3/3.4bpp");
-const u32 gMapObjectPic_LittleBoy3_4[] = INCBIN_U32("graphics/map_objects/pics/people/little_boy_3/4.4bpp");
-const u32 gMapObjectPic_LittleBoy3_5[] = INCBIN_U32("graphics/map_objects/pics/people/little_boy_3/5.4bpp");
-const u32 gMapObjectPic_LittleBoy3_6[] = INCBIN_U32("graphics/map_objects/pics/people/little_boy_3/6.4bpp");
-const u32 gMapObjectPic_LittleBoy3_7[] = INCBIN_U32("graphics/map_objects/pics/people/little_boy_3/7.4bpp");
-const u32 gMapObjectPic_LittleBoy3_8[] = INCBIN_U32("graphics/map_objects/pics/people/little_boy_3/8.4bpp");
-const u32 gMapObjectPic_HotSpringsOldWoman_0[] = INCBIN_U32("graphics/map_objects/pics/people/hot_springs_old_woman/0.4bpp");
-const u32 gMapObjectPic_HotSpringsOldWoman_1[] = INCBIN_U32("graphics/map_objects/pics/people/hot_springs_old_woman/1.4bpp");
-const u32 gMapObjectPic_HotSpringsOldWoman_2[] = INCBIN_U32("graphics/map_objects/pics/people/hot_springs_old_woman/2.4bpp");
-const u32 gMapObjectPic_HotSpringsOldWoman_3[] = INCBIN_U32("graphics/map_objects/pics/people/hot_springs_old_woman/3.4bpp");
-const u32 gMapObjectPic_HotSpringsOldWoman_4[] = INCBIN_U32("graphics/map_objects/pics/people/hot_springs_old_woman/4.4bpp");
-const u32 gMapObjectPic_HotSpringsOldWoman_5[] = INCBIN_U32("graphics/map_objects/pics/people/hot_springs_old_woman/5.4bpp");
-const u32 gMapObjectPic_HotSpringsOldWoman_6[] = INCBIN_U32("graphics/map_objects/pics/people/hot_springs_old_woman/6.4bpp");
-const u32 gMapObjectPic_HotSpringsOldWoman_7[] = INCBIN_U32("graphics/map_objects/pics/people/hot_springs_old_woman/7.4bpp");
-const u32 gMapObjectPic_HotSpringsOldWoman_8[] = INCBIN_U32("graphics/map_objects/pics/people/hot_springs_old_woman/8.4bpp");
-const u32 gMapObjectPic_LatiasLatios_0[] = INCBIN_U32("graphics/map_objects/pics/pokemon/latias_latios/0.4bpp");
-const u32 gMapObjectPic_LatiasLatios_1[] = INCBIN_U32("graphics/map_objects/pics/pokemon/latias_latios/1.4bpp");
-const u32 gMapObjectPic_LatiasLatios_2[] = INCBIN_U32("graphics/map_objects/pics/pokemon/latias_latios/2.4bpp");
-const u32 gMapObjectPic_Boy5_0[] = INCBIN_U32("graphics/map_objects/pics/people/boy_5/0.4bpp");
-const u32 gMapObjectPic_Boy5_1[] = INCBIN_U32("graphics/map_objects/pics/people/boy_5/1.4bpp");
-const u32 gMapObjectPic_Boy5_2[] = INCBIN_U32("graphics/map_objects/pics/people/boy_5/2.4bpp");
-const u32 gMapObjectPic_ContestJudge_0[] = INCBIN_U32("graphics/map_objects/pics/people/contest_judge/0.4bpp");
-const u32 gMapObjectPic_ContestJudge_1[] = INCBIN_U32("graphics/map_objects/pics/people/contest_judge/1.4bpp");
-const u32 gMapObjectPic_ContestJudge_2[] = INCBIN_U32("graphics/map_objects/pics/people/contest_judge/2.4bpp");
-const u32 gMapObjectPic_ContestJudge_3[] = INCBIN_U32("graphics/map_objects/pics/people/contest_judge/3.4bpp");
-const u32 gMapObjectPic_ContestJudge_4[] = INCBIN_U32("graphics/map_objects/pics/people/contest_judge/4.4bpp");
-const u32 gMapObjectPic_ContestJudge_5[] = INCBIN_U32("graphics/map_objects/pics/people/contest_judge/5.4bpp");
-const u32 gMapObjectPic_ContestJudge_6[] = INCBIN_U32("graphics/map_objects/pics/people/contest_judge/6.4bpp");
-const u32 gMapObjectPic_ContestJudge_7[] = INCBIN_U32("graphics/map_objects/pics/people/contest_judge/7.4bpp");
-const u32 gMapObjectPic_ContestJudge_8[] = INCBIN_U32("graphics/map_objects/pics/people/contest_judge/8.4bpp");
-const u32 gMapObjectPic_Archie_0[] = INCBIN_U32("graphics/map_objects/pics/people/archie/0.4bpp");
-const u32 gMapObjectPic_Archie_1[] = INCBIN_U32("graphics/map_objects/pics/people/archie/1.4bpp");
-const u32 gMapObjectPic_Archie_2[] = INCBIN_U32("graphics/map_objects/pics/people/archie/2.4bpp");
-const u32 gMapObjectPic_Archie_3[] = INCBIN_U32("graphics/map_objects/pics/people/archie/3.4bpp");
-const u32 gMapObjectPic_Archie_4[] = INCBIN_U32("graphics/map_objects/pics/people/archie/4.4bpp");
-const u32 gMapObjectPic_Archie_5[] = INCBIN_U32("graphics/map_objects/pics/people/archie/5.4bpp");
-const u32 gMapObjectPic_Archie_6[] = INCBIN_U32("graphics/map_objects/pics/people/archie/6.4bpp");
-const u32 gMapObjectPic_Archie_7[] = INCBIN_U32("graphics/map_objects/pics/people/archie/7.4bpp");
-const u32 gMapObjectPic_Archie_8[] = INCBIN_U32("graphics/map_objects/pics/people/archie/8.4bpp");
-const u32 gMapObjectPic_Maxie_0[] = INCBIN_U32("graphics/map_objects/pics/people/maxie/0.4bpp");
-const u32 gMapObjectPic_Maxie_1[] = INCBIN_U32("graphics/map_objects/pics/people/maxie/1.4bpp");
-const u32 gMapObjectPic_Maxie_2[] = INCBIN_U32("graphics/map_objects/pics/people/maxie/2.4bpp");
-const u32 gMapObjectPic_Maxie_3[] = INCBIN_U32("graphics/map_objects/pics/people/maxie/3.4bpp");
-const u32 gMapObjectPic_Maxie_4[] = INCBIN_U32("graphics/map_objects/pics/people/maxie/4.4bpp");
-const u32 gMapObjectPic_Maxie_5[] = INCBIN_U32("graphics/map_objects/pics/people/maxie/5.4bpp");
-const u32 gMapObjectPic_Maxie_6[] = INCBIN_U32("graphics/map_objects/pics/people/maxie/6.4bpp");
-const u32 gMapObjectPic_Maxie_7[] = INCBIN_U32("graphics/map_objects/pics/people/maxie/7.4bpp");
-const u32 gMapObjectPic_Maxie_8[] = INCBIN_U32("graphics/map_objects/pics/people/maxie/8.4bpp");
-const u32 gMapObjectPic_Kyogre_0[] = INCBIN_U32("graphics/map_objects/pics/pokemon/kyogre/0.4bpp");
-const u32 gMapObjectPic_Kyogre_1[] = INCBIN_U32("graphics/map_objects/pics/pokemon/kyogre/1.4bpp");
-const u32 gMapObjectPic_Groudon_0[] = INCBIN_U32("graphics/map_objects/pics/pokemon/groudon/0.4bpp");
-const u32 gMapObjectPic_Groudon_1[] = INCBIN_U32("graphics/map_objects/pics/pokemon/groudon/1.4bpp");
-const u32 gMapObjectPic_Regi[] = INCBIN_U32("graphics/map_objects/pics/pokemon/regi.4bpp");
-const u32 gMapObjectPic_Skitty_0[] = INCBIN_U32("graphics/map_objects/pics/pokemon/skitty/0.4bpp");
-const u32 gMapObjectPic_Skitty_1[] = INCBIN_U32("graphics/map_objects/pics/pokemon/skitty/1.4bpp");
-const u32 gMapObjectPic_Skitty_2[] = INCBIN_U32("graphics/map_objects/pics/pokemon/skitty/2.4bpp");
-const u32 gMapObjectPic_Kecleon_0[] = INCBIN_U32("graphics/map_objects/pics/pokemon/kecleon/0.4bpp");
-const u32 gMapObjectPic_Kecleon_1[] = INCBIN_U32("graphics/map_objects/pics/pokemon/kecleon/1.4bpp");
-const u32 gMapObjectPic_Kecleon_2[] = INCBIN_U32("graphics/map_objects/pics/pokemon/kecleon/2.4bpp");
-const u32 gMapObjectPic_Rayquaza_0[] = INCBIN_U32("graphics/map_objects/pics/pokemon/rayquaza/0.4bpp");
-const u32 gMapObjectPic_Rayquaza_1[] = INCBIN_U32("graphics/map_objects/pics/pokemon/rayquaza/1.4bpp");
-const u32 gMapObjectPic_Zigzagoon_0[] = INCBIN_U32("graphics/map_objects/pics/pokemon/zigzagoon/0.4bpp");
-const u32 gMapObjectPic_Zigzagoon_1[] = INCBIN_U32("graphics/map_objects/pics/pokemon/zigzagoon/1.4bpp");
-const u32 gMapObjectPic_Zigzagoon_2[] = INCBIN_U32("graphics/map_objects/pics/pokemon/zigzagoon/2.4bpp");
-const u32 gMapObjectPic_Pikachu_0[] = INCBIN_U32("graphics/map_objects/pics/pokemon/pikachu/0.4bpp");
-const u32 gMapObjectPic_Pikachu_1[] = INCBIN_U32("graphics/map_objects/pics/pokemon/pikachu/1.4bpp");
-const u32 gMapObjectPic_Pikachu_2[] = INCBIN_U32("graphics/map_objects/pics/pokemon/pikachu/2.4bpp");
-const u32 gMapObjectPic_Azumarill_0[] = INCBIN_U32("graphics/map_objects/pics/pokemon/azumarill/0.4bpp");
-const u32 gMapObjectPic_Azumarill_1[] = INCBIN_U32("graphics/map_objects/pics/pokemon/azumarill/1.4bpp");
-const u32 gMapObjectPic_Azumarill_2[] = INCBIN_U32("graphics/map_objects/pics/pokemon/azumarill/2.4bpp");
-const u32 gMapObjectPic_Wingull_0[] = INCBIN_U32("graphics/map_objects/pics/pokemon/wingull/0.4bpp");
-const u32 gMapObjectPic_Wingull_3[] = INCBIN_U32("graphics/map_objects/pics/pokemon/wingull/3.4bpp");
-const u32 gMapObjectPic_Wingull_1[] = INCBIN_U32("graphics/map_objects/pics/pokemon/wingull/1.4bpp");
-const u32 gMapObjectPic_Wingull_4[] = INCBIN_U32("graphics/map_objects/pics/pokemon/wingull/4.4bpp");
-const u32 gMapObjectPic_Wingull_2[] = INCBIN_U32("graphics/map_objects/pics/pokemon/wingull/2.4bpp");
-const u32 gMapObjectPic_Wingull_5[] = INCBIN_U32("graphics/map_objects/pics/pokemon/wingull/5.4bpp");
-const u32 gMapObjectPic_TuberMSwimming_0[] = INCBIN_U32("graphics/map_objects/pics/people/tuber_m_swimming/0.4bpp");
-const u32 gMapObjectPic_TuberMSwimming_1[] = INCBIN_U32("graphics/map_objects/pics/people/tuber_m_swimming/1.4bpp");
-const u32 gMapObjectPic_TuberMSwimming_2[] = INCBIN_U32("graphics/map_objects/pics/people/tuber_m_swimming/2.4bpp");
-const u32 gMapObjectPic_TuberMSwimming_3[] = INCBIN_U32("graphics/map_objects/pics/people/tuber_m_swimming/3.4bpp");
-const u32 gMapObjectPic_TuberMSwimming_4[] = INCBIN_U32("graphics/map_objects/pics/people/tuber_m_swimming/4.4bpp");
-const u32 gMapObjectPic_TuberMSwimming_5[] = INCBIN_U32("graphics/map_objects/pics/people/tuber_m_swimming/5.4bpp");
-const u32 gMapObjectPic_TuberMSwimming_6[] = INCBIN_U32("graphics/map_objects/pics/people/tuber_m_swimming/6.4bpp");
-const u32 gMapObjectPic_TuberMSwimming_7[] = INCBIN_U32("graphics/map_objects/pics/people/tuber_m_swimming/7.4bpp");
-const u32 gMapObjectPic_TuberMSwimming_8[] = INCBIN_U32("graphics/map_objects/pics/people/tuber_m_swimming/8.4bpp");
-const u32 gMapObjectPic_Azurill_0[] = INCBIN_U32("graphics/map_objects/pics/pokemon/azurill/0.4bpp");
-const u32 gMapObjectPic_Azurill_1[] = INCBIN_U32("graphics/map_objects/pics/pokemon/azurill/1.4bpp");
-const u32 gMapObjectPic_Azurill_2[] = INCBIN_U32("graphics/map_objects/pics/pokemon/azurill/2.4bpp");
-const u32 gMapObjectPic_Mom_0[] = INCBIN_U32("graphics/map_objects/pics/people/mom/0.4bpp");
-const u32 gMapObjectPic_Mom_1[] = INCBIN_U32("graphics/map_objects/pics/people/mom/1.4bpp");
-const u32 gMapObjectPic_Mom_2[] = INCBIN_U32("graphics/map_objects/pics/people/mom/2.4bpp");
-const u32 gMapObjectPic_Mom_3[] = INCBIN_U32("graphics/map_objects/pics/people/mom/3.4bpp");
-const u32 gMapObjectPic_Mom_4[] = INCBIN_U32("graphics/map_objects/pics/people/mom/4.4bpp");
-const u32 gMapObjectPic_Mom_5[] = INCBIN_U32("graphics/map_objects/pics/people/mom/5.4bpp");
-const u32 gMapObjectPic_Mom_6[] = INCBIN_U32("graphics/map_objects/pics/people/mom/6.4bpp");
-const u32 gMapObjectPic_Mom_7[] = INCBIN_U32("graphics/map_objects/pics/people/mom/7.4bpp");
-const u32 gMapObjectPic_Mom_8[] = INCBIN_U32("graphics/map_objects/pics/people/mom/8.4bpp");
-const u16 gMapObjectPalette22[] = INCBIN_U16("graphics/map_objects/palettes/22.gbapal");
-const u16 gMapObjectPalette23[] = INCBIN_U16("graphics/map_objects/palettes/23.gbapal");
-const u16 gMapObjectPalette24[] = INCBIN_U16("graphics/map_objects/palettes/24.gbapal");
-const u16 gMapObjectPalette25[] = INCBIN_U16("graphics/map_objects/palettes/25.gbapal");
-const u32 gMapObjectPic_UnusedNatuDoll[] = INCBIN_U32("graphics/map_objects/pics/dolls/unused_natu_doll.4bpp");
-const u32 gMapObjectPic_UnusedMagnemiteDoll[] = INCBIN_U32("graphics/map_objects/pics/dolls/unused_magnemite_doll.4bpp");
-const u32 gMapObjectPic_UnusedSquirtleDoll[] = INCBIN_U32("graphics/map_objects/pics/dolls/unused_squirtle_doll.4bpp");
-const u32 gMapObjectPic_UnusedWooperDoll[] = INCBIN_U32("graphics/map_objects/pics/dolls/unused_wooper_doll.4bpp");
-const u32 gMapObjectPic_UnusedPikachuDoll[] = INCBIN_U32("graphics/map_objects/pics/dolls/unused_pikachu_doll.4bpp");
-const u32 gMapObjectPic_UnusedPorygon2Doll[] = INCBIN_U32("graphics/map_objects/pics/dolls/unused_porygon2_doll.4bpp");
-const u32 gMapObjectPic_PichuDoll[] = INCBIN_U32("graphics/map_objects/pics/dolls/pichu_doll.4bpp");
-const u32 gMapObjectPic_PikachuDoll[] = INCBIN_U32("graphics/map_objects/pics/dolls/pikachu_doll.4bpp");
-const u32 gMapObjectPic_MarillDoll[] = INCBIN_U32("graphics/map_objects/pics/dolls/marill_doll.4bpp");
-const u32 gMapObjectPic_TogepiDoll[] = INCBIN_U32("graphics/map_objects/pics/dolls/togepi_doll.4bpp");
-const u32 gMapObjectPic_CyndaquilDoll[] = INCBIN_U32("graphics/map_objects/pics/dolls/cyndaquil_doll.4bpp");
-const u32 gMapObjectPic_ChikoritaDoll[] = INCBIN_U32("graphics/map_objects/pics/dolls/chikorita_doll.4bpp");
-const u32 gMapObjectPic_TotodileDoll[] = INCBIN_U32("graphics/map_objects/pics/dolls/totodile_doll.4bpp");
-const u32 gMapObjectPic_JigglypuffDoll[] = INCBIN_U32("graphics/map_objects/pics/dolls/jigglypuff_doll.4bpp");
-const u32 gMapObjectPic_MeowthDoll[] = INCBIN_U32("graphics/map_objects/pics/dolls/meowth_doll.4bpp");
-const u32 gMapObjectPic_ClefairyDoll[] = INCBIN_U32("graphics/map_objects/pics/dolls/clefairy_doll.4bpp");
-const u32 gMapObjectPic_DittoDoll[] = INCBIN_U32("graphics/map_objects/pics/dolls/ditto_doll.4bpp");
-const u32 gMapObjectPic_SmoochumDoll[] = INCBIN_U32("graphics/map_objects/pics/dolls/smoochum_doll.4bpp");
-const u32 gMapObjectPic_TreeckoDoll[] = INCBIN_U32("graphics/map_objects/pics/dolls/treecko_doll.4bpp");
-const u32 gMapObjectPic_TorchicDoll[] = INCBIN_U32("graphics/map_objects/pics/dolls/torchic_doll.4bpp");
-const u32 gMapObjectPic_MudkipDoll[] = INCBIN_U32("graphics/map_objects/pics/dolls/mudkip_doll.4bpp");
-const u32 gMapObjectPic_DuskullDoll[] = INCBIN_U32("graphics/map_objects/pics/dolls/duskull_doll.4bpp");
-const u32 gMapObjectPic_WynautDoll[] = INCBIN_U32("graphics/map_objects/pics/dolls/wynaut_doll.4bpp");
-const u32 gMapObjectPic_BaltoyDoll[] = INCBIN_U32("graphics/map_objects/pics/dolls/baltoy_doll.4bpp");
-const u32 gMapObjectPic_KecleonDoll[] = INCBIN_U32("graphics/map_objects/pics/dolls/kecleon_doll.4bpp");
-const u32 gMapObjectPic_AzurillDoll[] = INCBIN_U32("graphics/map_objects/pics/dolls/azurill_doll.4bpp");
-const u32 gMapObjectPic_SkittyDoll[] = INCBIN_U32("graphics/map_objects/pics/dolls/skitty_doll.4bpp");
-const u32 gMapObjectPic_SwabluDoll[] = INCBIN_U32("graphics/map_objects/pics/dolls/swablu_doll.4bpp");
-const u32 gMapObjectPic_GulpinDoll[] = INCBIN_U32("graphics/map_objects/pics/dolls/gulpin_doll.4bpp");
-const u32 gMapObjectPic_LotadDoll[] = INCBIN_U32("graphics/map_objects/pics/dolls/lotad_doll.4bpp");
-const u32 gMapObjectPic_SeedotDoll[] = INCBIN_U32("graphics/map_objects/pics/dolls/seedot_doll.4bpp");
-const u32 gMapObjectPic_PikaCushion[] = INCBIN_U32("graphics/map_objects/pics/cushions/pika_cushion.4bpp");
-const u32 gMapObjectPic_RoundCushion[] = INCBIN_U32("graphics/map_objects/pics/cushions/round_cushion.4bpp");
-const u32 gMapObjectPic_KissCushion[] = INCBIN_U32("graphics/map_objects/pics/cushions/kiss_cushion.4bpp");
-const u32 gMapObjectPic_ZigzagCushion[] = INCBIN_U32("graphics/map_objects/pics/cushions/zigzag_cushion.4bpp");
-const u32 gMapObjectPic_SpinCushion[] = INCBIN_U32("graphics/map_objects/pics/cushions/spin_cushion.4bpp");
-const u32 gMapObjectPic_DiamondCushion[] = INCBIN_U32("graphics/map_objects/pics/cushions/diamond_cushion.4bpp");
-const u32 gMapObjectPic_BallCushion[] = INCBIN_U32("graphics/map_objects/pics/cushions/ball_cushion.4bpp");
-const u32 gMapObjectPic_GrassCushion[] = INCBIN_U32("graphics/map_objects/pics/cushions/grass_cushion.4bpp");
-const u32 gMapObjectPic_FireCushion[] = INCBIN_U32("graphics/map_objects/pics/cushions/fire_cushion.4bpp");
-const u32 gMapObjectPic_WaterCushion[] = INCBIN_U32("graphics/map_objects/pics/cushions/water_cushion.4bpp");
-const u32 gMapObjectPic_BigSnorlaxDoll[] = INCBIN_U32("graphics/map_objects/pics/dolls/big_snorlax_doll.4bpp");
-const u32 gMapObjectPic_BigRhydonDoll[] = INCBIN_U32("graphics/map_objects/pics/dolls/big_rhydon_doll.4bpp");
-const u32 gMapObjectPic_BigLaprasDoll[] = INCBIN_U32("graphics/map_objects/pics/dolls/big_lapras_doll.4bpp");
-const u32 gMapObjectPic_BigVenusaurDoll[] = INCBIN_U32("graphics/map_objects/pics/dolls/big_venusaur_doll.4bpp");
-const u32 gMapObjectPic_BigCharizardDoll[] = INCBIN_U32("graphics/map_objects/pics/dolls/big_charizard_doll.4bpp");
-const u32 gMapObjectPic_BigBlastoiseDoll[] = INCBIN_U32("graphics/map_objects/pics/dolls/big_blastoise_doll.4bpp");
-const u32 gMapObjectPic_BigWailmerDoll[] = INCBIN_U32("graphics/map_objects/pics/dolls/big_wailmer_doll.4bpp");
-const u32 gMapObjectPic_BigRegirockDoll[] = INCBIN_U32("graphics/map_objects/pics/dolls/big_regirock_doll.4bpp");
-const u32 gMapObjectPic_BigRegiceDoll[] = INCBIN_U32("graphics/map_objects/pics/dolls/big_regice_doll.4bpp");
-const u32 gMapObjectPic_BigRegisteelDoll[] = INCBIN_U32("graphics/map_objects/pics/dolls/big_registeel_doll.4bpp");
-const u32 gMapObjectPic_CuttableTree_0[] = INCBIN_U32("graphics/map_objects/pics/misc/cuttable_tree/0.4bpp");
-const u32 gMapObjectPic_CuttableTree_1[] = INCBIN_U32("graphics/map_objects/pics/misc/cuttable_tree/1.4bpp");
-const u32 gMapObjectPic_CuttableTree_2[] = INCBIN_U32("graphics/map_objects/pics/misc/cuttable_tree/2.4bpp");
-const u32 gMapObjectPic_CuttableTree_3[] = INCBIN_U32("graphics/map_objects/pics/misc/cuttable_tree/3.4bpp");
-const u32 gMapObjectPic_BreakableRock_0[] = INCBIN_U32("graphics/map_objects/pics/misc/breakable_rock/0.4bpp");
-const u32 gMapObjectPic_BreakableRock_1[] = INCBIN_U32("graphics/map_objects/pics/misc/breakable_rock/1.4bpp");
-const u32 gMapObjectPic_BreakableRock_2[] = INCBIN_U32("graphics/map_objects/pics/misc/breakable_rock/2.4bpp");
-const u32 gMapObjectPic_BreakableRock_3[] = INCBIN_U32("graphics/map_objects/pics/misc/breakable_rock/3.4bpp");
-const u32 gMapObjectPic_PushableBoulder[] = INCBIN_U32("graphics/map_objects/pics/misc/pushable_boulder.4bpp");
-const u32 gMapObjectPic_MrBrineysBoat_0[] = INCBIN_U32("graphics/map_objects/pics/misc/mr_brineys_boat/0.4bpp");
-const u32 gMapObjectPic_MrBrineysBoat_1[] = INCBIN_U32("graphics/map_objects/pics/misc/mr_brineys_boat/1.4bpp");
-const u32 gMapObjectPic_MrBrineysBoat_2[] = INCBIN_U32("graphics/map_objects/pics/misc/mr_brineys_boat/2.4bpp");
-const u32 gMapObjectPic_Fossil[] = INCBIN_U32("graphics/map_objects/pics/misc/fossil.4bpp");
-const u32 gMapObjectPic_SubmarineShadow[] = INCBIN_U32("graphics/map_objects/pics/misc/submarine_shadow.4bpp");
-const u16 gMapObjectPalette26[] = INCBIN_U16("graphics/map_objects/palettes/26.gbapal");
-const u32 gMapObjectPic_Truck[] = INCBIN_U32("graphics/map_objects/pics/misc/truck.4bpp");
-const u16 gMapObjectPalette14[] = INCBIN_U16("graphics/map_objects/palettes/14.gbapal");
-const u32 gMapObjectPic_MachokeCarryingBox_0[] = INCBIN_U32("graphics/map_objects/pics/pokemon/machoke_carrying_box/0.4bpp");
-const u32 gMapObjectPic_MachokeCarryingBox_1[] = INCBIN_U32("graphics/map_objects/pics/pokemon/machoke_carrying_box/1.4bpp");
-const u32 gMapObjectPic_MachokeCarryingBox_2[] = INCBIN_U32("graphics/map_objects/pics/pokemon/machoke_carrying_box/2.4bpp");
-const u32 gMapObjectPic_MachokeFacingAway_0[] = INCBIN_U32("graphics/map_objects/pics/pokemon/machoke_facing_away/0.4bpp");
-const u32 gMapObjectPic_MachokeFacingAway_1[] = INCBIN_U32("graphics/map_objects/pics/pokemon/machoke_facing_away/1.4bpp");
-const u16 gMapObjectPalette15[] = INCBIN_U16("graphics/map_objects/palettes/15.gbapal");
-const u32 gMapObjectPic_BirchsBag[] = INCBIN_U32("graphics/map_objects/pics/misc/birchs_bag.4bpp");
-const u32 gMapObjectPic_Poochyena_0[] = INCBIN_U32("graphics/map_objects/pics/pokemon/poochyena/0.4bpp");
-const u32 gMapObjectPic_Poochyena_1[] = INCBIN_U32("graphics/map_objects/pics/pokemon/poochyena/1.4bpp");
-const u32 gMapObjectPic_Poochyena_2[] = INCBIN_U32("graphics/map_objects/pics/pokemon/poochyena/2.4bpp");
-const u32 gMapObjectPic_Poochyena_3[] = INCBIN_U32("graphics/map_objects/pics/pokemon/poochyena/3.4bpp");
-const u32 gMapObjectPic_Poochyena_4[] = INCBIN_U32("graphics/map_objects/pics/pokemon/poochyena/4.4bpp");
-const u32 gMapObjectPic_Poochyena_5[] = INCBIN_U32("graphics/map_objects/pics/pokemon/poochyena/5.4bpp");
-const u32 gMapObjectPic_Poochyena_6[] = INCBIN_U32("graphics/map_objects/pics/pokemon/poochyena/6.4bpp");
-const u32 gMapObjectPic_Poochyena_7[] = INCBIN_U32("graphics/map_objects/pics/pokemon/poochyena/7.4bpp");
-const u32 gMapObjectPic_Poochyena_8[] = INCBIN_U32("graphics/map_objects/pics/pokemon/poochyena/8.4bpp");
-const u16 gMapObjectPalette16[] = INCBIN_U16("graphics/map_objects/palettes/16.gbapal");
-const u32 gMapObjectPic_CableCar[] = INCBIN_U32("graphics/map_objects/pics/misc/cable_car.4bpp");
-const u16 gMapObjectPalette20[] = INCBIN_U16("graphics/map_objects/palettes/20.gbapal");
-const u32 gMapObjectPic_SSTidal[] = INCBIN_U32("graphics/map_objects/pics/misc/ss_tidal.4bpp");
-const u16 gMapObjectPalette21[] = INCBIN_U16("graphics/map_objects/palettes/21.gbapal");
-const u32 gFieldEffectPic_BerryTreeGrowthSparkle_0[] = INCBIN_U32("graphics/field_effect_objects/pics/berry_tree_growth_sparkle/0.4bpp");
-const u32 gFieldEffectPic_BerryTreeGrowthSparkle_1[] = INCBIN_U32("graphics/field_effect_objects/pics/berry_tree_growth_sparkle/1.4bpp");
-const u32 gFieldEffectPic_BerryTreeGrowthSparkle_2[] = INCBIN_U32("graphics/field_effect_objects/pics/berry_tree_growth_sparkle/2.4bpp");
-const u32 gFieldEffectPic_BerryTreeGrowthSparkle_3[] = INCBIN_U32("graphics/field_effect_objects/pics/berry_tree_growth_sparkle/3.4bpp");
-const u32 gFieldEffectPic_BerryTreeGrowthSparkle_4[] = INCBIN_U32("graphics/field_effect_objects/pics/berry_tree_growth_sparkle/4.4bpp");
-const u32 gFieldEffectPic_BerryTreeGrowthSparkle_5[] = INCBIN_U32("graphics/field_effect_objects/pics/berry_tree_growth_sparkle/5.4bpp");
-const u32 gMapObjectPic_BerryTreeDirtPile[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/dirt_pile.4bpp");
-const u32 gMapObjectPic_BerryTreeSprout_0[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/sprout/0.4bpp");
-const u32 gMapObjectPic_BerryTreeSprout_1[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/sprout/1.4bpp");
-const u32 gMapObjectPic_PechaBerryTree_0[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/pecha/0.4bpp");
-const u32 gMapObjectPic_PechaBerryTree_1[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/pecha/1.4bpp");
-const u32 gMapObjectPic_PechaBerryTree_2[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/pecha/2.4bpp");
-const u32 gMapObjectPic_PechaBerryTree_3[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/pecha/3.4bpp");
-const u32 gMapObjectPic_PechaBerryTree_4[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/pecha/4.4bpp");
-const u32 gMapObjectPic_PechaBerryTree_5[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/pecha/5.4bpp");
-const u32 gMapObjectPic_KelpsyBerryTree_0[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/kelpsy/0.4bpp");
-const u32 gMapObjectPic_KelpsyBerryTree_1[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/kelpsy/1.4bpp");
-const u32 gMapObjectPic_KelpsyBerryTree_2[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/kelpsy/2.4bpp");
-const u32 gMapObjectPic_KelpsyBerryTree_3[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/kelpsy/3.4bpp");
-const u32 gMapObjectPic_KelpsyBerryTree_4[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/kelpsy/4.4bpp");
-const u32 gMapObjectPic_KelpsyBerryTree_5[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/kelpsy/5.4bpp");
-const u32 gMapObjectPic_WepearBerryTree_0[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/wepear/0.4bpp");
-const u32 gMapObjectPic_WepearBerryTree_1[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/wepear/1.4bpp");
-const u32 gMapObjectPic_WepearBerryTree_2[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/wepear/2.4bpp");
-const u32 gMapObjectPic_WepearBerryTree_3[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/wepear/3.4bpp");
-const u32 gMapObjectPic_WepearBerryTree_4[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/wepear/4.4bpp");
-const u32 gMapObjectPic_WepearBerryTree_5[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/wepear/5.4bpp");
-const u32 gMapObjectPic_IapapaBerryTree_0[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/iapapa/0.4bpp");
-const u32 gMapObjectPic_IapapaBerryTree_1[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/iapapa/1.4bpp");
-const u32 gMapObjectPic_IapapaBerryTree_2[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/iapapa/2.4bpp");
-const u32 gMapObjectPic_IapapaBerryTree_3[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/iapapa/3.4bpp");
-const u32 gMapObjectPic_IapapaBerryTree_4[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/iapapa/4.4bpp");
-const u32 gMapObjectPic_IapapaBerryTree_5[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/iapapa/5.4bpp");
-const u32 gMapObjectPic_CheriBerryTree_0[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/cheri/0.4bpp");
-const u32 gMapObjectPic_CheriBerryTree_1[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/cheri/1.4bpp");
-const u32 gMapObjectPic_CheriBerryTree_2[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/cheri/2.4bpp");
-const u32 gMapObjectPic_CheriBerryTree_3[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/cheri/3.4bpp");
-const u32 gMapObjectPic_CheriBerryTree_4[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/cheri/4.4bpp");
-const u32 gMapObjectPic_CheriBerryTree_5[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/cheri/5.4bpp");
-const u32 gMapObjectPic_FigyBerryTree_0[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/figy/0.4bpp");
-const u32 gMapObjectPic_FigyBerryTree_1[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/figy/1.4bpp");
-const u32 gMapObjectPic_FigyBerryTree_2[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/figy/2.4bpp");
-const u32 gMapObjectPic_FigyBerryTree_3[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/figy/3.4bpp");
-const u32 gMapObjectPic_FigyBerryTree_4[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/figy/4.4bpp");
-const u32 gMapObjectPic_FigyBerryTree_5[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/figy/5.4bpp");
-const u32 gMapObjectPic_MagoBerryTree_0[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/mago/0.4bpp");
-const u32 gMapObjectPic_MagoBerryTree_1[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/mago/1.4bpp");
-const u32 gMapObjectPic_MagoBerryTree_2[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/mago/2.4bpp");
-const u32 gMapObjectPic_MagoBerryTree_3[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/mago/3.4bpp");
-const u32 gMapObjectPic_MagoBerryTree_4[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/mago/4.4bpp");
-const u32 gMapObjectPic_MagoBerryTree_5[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/mago/5.4bpp");
-const u32 gMapObjectPic_LumBerryTree_0[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/lum/0.4bpp");
-const u32 gMapObjectPic_LumBerryTree_1[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/lum/1.4bpp");
-const u32 gMapObjectPic_LumBerryTree_2[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/lum/2.4bpp");
-const u32 gMapObjectPic_LumBerryTree_3[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/lum/3.4bpp");
-const u32 gMapObjectPic_LumBerryTree_4[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/lum/4.4bpp");
-const u32 gMapObjectPic_LumBerryTree_5[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/lum/5.4bpp");
-const u32 gMapObjectPic_RazzBerryTree_0[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/razz/0.4bpp");
-const u32 gMapObjectPic_RazzBerryTree_1[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/razz/1.4bpp");
-const u32 gMapObjectPic_RazzBerryTree_2[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/razz/2.4bpp");
-const u32 gMapObjectPic_RazzBerryTree_3[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/razz/3.4bpp");
-const u32 gMapObjectPic_RazzBerryTree_4[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/razz/4.4bpp");
-const u32 gMapObjectPic_RazzBerryTree_5[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/razz/5.4bpp");
-const u32 gMapObjectPic_GrepaBerryTree_0[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/grepa/0.4bpp");
-const u32 gMapObjectPic_GrepaBerryTree_1[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/grepa/1.4bpp");
-const u32 gMapObjectPic_GrepaBerryTree_2[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/grepa/2.4bpp");
-const u32 gMapObjectPic_GrepaBerryTree_3[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/grepa/3.4bpp");
-const u32 gMapObjectPic_GrepaBerryTree_4[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/grepa/4.4bpp");
-const u32 gMapObjectPic_GrepaBerryTree_5[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/grepa/5.4bpp");
-const u32 gMapObjectPic_RabutaBerryTree_0[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/rabuta/0.4bpp");
-const u32 gMapObjectPic_RabutaBerryTree_1[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/rabuta/1.4bpp");
-const u32 gMapObjectPic_RabutaBerryTree_2[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/rabuta/2.4bpp");
-const u32 gMapObjectPic_RabutaBerryTree_3[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/rabuta/3.4bpp");
-const u32 gMapObjectPic_RabutaBerryTree_4[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/rabuta/4.4bpp");
-const u32 gMapObjectPic_RabutaBerryTree_5[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/rabuta/5.4bpp");
-const u32 gMapObjectPic_NomelBerryTree_0[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/nomel/0.4bpp");
-const u32 gMapObjectPic_NomelBerryTree_1[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/nomel/1.4bpp");
-const u32 gMapObjectPic_NomelBerryTree_2[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/nomel/2.4bpp");
-const u32 gMapObjectPic_NomelBerryTree_3[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/nomel/3.4bpp");
-const u32 gMapObjectPic_NomelBerryTree_4[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/nomel/4.4bpp");
-const u32 gMapObjectPic_NomelBerryTree_5[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/nomel/5.4bpp");
-const u32 gMapObjectPic_LeppaBerryTree_0[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/leppa/0.4bpp");
-const u32 gMapObjectPic_LeppaBerryTree_1[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/leppa/1.4bpp");
-const u32 gMapObjectPic_LeppaBerryTree_2[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/leppa/2.4bpp");
-const u32 gMapObjectPic_LeppaBerryTree_3[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/leppa/3.4bpp");
-const u32 gMapObjectPic_LeppaBerryTree_4[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/leppa/4.4bpp");
-const u32 gMapObjectPic_LeppaBerryTree_5[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/leppa/5.4bpp");
-const u32 gMapObjectPic_LiechiBerryTree_0[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/liechi/0.4bpp");
-const u32 gMapObjectPic_LiechiBerryTree_1[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/liechi/1.4bpp");
-const u32 gMapObjectPic_LiechiBerryTree_2[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/liechi/2.4bpp");
-const u32 gMapObjectPic_LiechiBerryTree_3[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/liechi/3.4bpp");
-const u32 gMapObjectPic_LiechiBerryTree_4[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/liechi/4.4bpp");
-const u32 gMapObjectPic_LiechiBerryTree_5[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/liechi/5.4bpp");
-const u32 gMapObjectPic_HondewBerryTree_0[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/hondew/0.4bpp");
-const u32 gMapObjectPic_HondewBerryTree_1[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/hondew/1.4bpp");
-const u32 gMapObjectPic_HondewBerryTree_2[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/hondew/2.4bpp");
-const u32 gMapObjectPic_HondewBerryTree_3[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/hondew/3.4bpp");
-const u32 gMapObjectPic_HondewBerryTree_4[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/hondew/4.4bpp");
-const u32 gMapObjectPic_HondewBerryTree_5[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/hondew/5.4bpp");
-const u32 gMapObjectPic_AguavBerryTree_0[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/aguav/0.4bpp");
-const u32 gMapObjectPic_AguavBerryTree_1[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/aguav/1.4bpp");
-const u32 gMapObjectPic_AguavBerryTree_2[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/aguav/2.4bpp");
-const u32 gMapObjectPic_AguavBerryTree_3[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/aguav/3.4bpp");
-const u32 gMapObjectPic_AguavBerryTree_4[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/aguav/4.4bpp");
-const u32 gMapObjectPic_AguavBerryTree_5[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/aguav/5.4bpp");
-const u32 gMapObjectPic_WikiBerryTree_0[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/wiki/0.4bpp");
-const u32 gMapObjectPic_WikiBerryTree_1[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/wiki/1.4bpp");
-const u32 gMapObjectPic_WikiBerryTree_2[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/wiki/2.4bpp");
-const u32 gMapObjectPic_WikiBerryTree_3[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/wiki/3.4bpp");
-const u32 gMapObjectPic_WikiBerryTree_4[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/wiki/4.4bpp");
-const u32 gMapObjectPic_WikiBerryTree_5[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/wiki/5.4bpp");
-const u32 gMapObjectPic_PomegBerryTree_0[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/pomeg/0.4bpp");
-const u32 gMapObjectPic_PomegBerryTree_1[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/pomeg/1.4bpp");
-const u32 gMapObjectPic_PomegBerryTree_2[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/pomeg/2.4bpp");
-const u32 gMapObjectPic_PomegBerryTree_3[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/pomeg/3.4bpp");
-const u32 gMapObjectPic_PomegBerryTree_4[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/pomeg/4.4bpp");
-const u32 gMapObjectPic_PomegBerryTree_5[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/pomeg/5.4bpp");
-const u32 gMapObjectPic_RawstBerryTree_0[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/rawst/0.4bpp");
-const u32 gMapObjectPic_RawstBerryTree_1[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/rawst/1.4bpp");
-const u32 gMapObjectPic_RawstBerryTree_2[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/rawst/2.4bpp");
-const u32 gMapObjectPic_RawstBerryTree_3[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/rawst/3.4bpp");
-const u32 gMapObjectPic_RawstBerryTree_4[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/rawst/4.4bpp");
-const u32 gMapObjectPic_RawstBerryTree_5[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/rawst/5.4bpp");
-const u32 gMapObjectPic_SpelonBerryTree_0[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/spelon/0.4bpp");
-const u32 gMapObjectPic_SpelonBerryTree_1[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/spelon/1.4bpp");
-const u32 gMapObjectPic_SpelonBerryTree_2[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/spelon/2.4bpp");
-const u32 gMapObjectPic_SpelonBerryTree_3[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/spelon/3.4bpp");
-const u32 gMapObjectPic_SpelonBerryTree_4[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/spelon/4.4bpp");
-const u32 gMapObjectPic_SpelonBerryTree_5[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/spelon/5.4bpp");
-const u32 gMapObjectPic_ChestoBerryTree_0[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/chesto/0.4bpp");
-const u32 gMapObjectPic_ChestoBerryTree_1[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/chesto/1.4bpp");
-const u32 gMapObjectPic_ChestoBerryTree_2[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/chesto/2.4bpp");
-const u32 gMapObjectPic_ChestoBerryTree_3[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/chesto/3.4bpp");
-const u32 gMapObjectPic_ChestoBerryTree_4[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/chesto/4.4bpp");
-const u32 gMapObjectPic_ChestoBerryTree_5[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/chesto/5.4bpp");
-const u32 gMapObjectPic_OranBerryTree_0[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/oran/0.4bpp");
-const u32 gMapObjectPic_OranBerryTree_1[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/oran/1.4bpp");
-const u32 gMapObjectPic_OranBerryTree_2[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/oran/2.4bpp");
-const u32 gMapObjectPic_OranBerryTree_3[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/oran/3.4bpp");
-const u32 gMapObjectPic_OranBerryTree_4[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/oran/4.4bpp");
-const u32 gMapObjectPic_OranBerryTree_5[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/oran/5.4bpp");
-const u32 gMapObjectPic_PersimBerryTree_0[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/persim/0.4bpp");
-const u32 gMapObjectPic_PersimBerryTree_1[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/persim/1.4bpp");
-const u32 gMapObjectPic_PersimBerryTree_2[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/persim/2.4bpp");
-const u32 gMapObjectPic_PersimBerryTree_3[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/persim/3.4bpp");
-const u32 gMapObjectPic_PersimBerryTree_4[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/persim/4.4bpp");
-const u32 gMapObjectPic_PersimBerryTree_5[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/persim/5.4bpp");
-const u32 gMapObjectPic_SitrusBerryTree_0[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/sitrus/0.4bpp");
-const u32 gMapObjectPic_SitrusBerryTree_1[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/sitrus/1.4bpp");
-const u32 gMapObjectPic_SitrusBerryTree_2[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/sitrus/2.4bpp");
-const u32 gMapObjectPic_SitrusBerryTree_3[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/sitrus/3.4bpp");
-const u32 gMapObjectPic_SitrusBerryTree_4[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/sitrus/4.4bpp");
-const u32 gMapObjectPic_SitrusBerryTree_5[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/sitrus/5.4bpp");
-const u32 gMapObjectPic_AspearBerryTree_0[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/aspear/0.4bpp");
-const u32 gMapObjectPic_AspearBerryTree_1[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/aspear/1.4bpp");
-const u32 gMapObjectPic_AspearBerryTree_2[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/aspear/2.4bpp");
-const u32 gMapObjectPic_AspearBerryTree_3[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/aspear/3.4bpp");
-const u32 gMapObjectPic_AspearBerryTree_4[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/aspear/4.4bpp");
-const u32 gMapObjectPic_AspearBerryTree_5[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/aspear/5.4bpp");
-const u32 gMapObjectPic_PamtreBerryTree_0[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/pamtre/0.4bpp");
-const u32 gMapObjectPic_PamtreBerryTree_1[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/pamtre/1.4bpp");
-const u32 gMapObjectPic_PamtreBerryTree_2[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/pamtre/2.4bpp");
-const u32 gMapObjectPic_PamtreBerryTree_3[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/pamtre/3.4bpp");
-const u32 gMapObjectPic_PamtreBerryTree_4[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/pamtre/4.4bpp");
-const u32 gMapObjectPic_PamtreBerryTree_5[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/pamtre/5.4bpp");
-const u32 gMapObjectPic_CornnBerryTree_0[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/cornn/0.4bpp");
-const u32 gMapObjectPic_CornnBerryTree_1[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/cornn/1.4bpp");
-const u32 gMapObjectPic_CornnBerryTree_2[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/cornn/2.4bpp");
-const u32 gMapObjectPic_CornnBerryTree_3[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/cornn/3.4bpp");
-const u32 gMapObjectPic_CornnBerryTree_4[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/cornn/4.4bpp");
-const u32 gMapObjectPic_CornnBerryTree_5[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/cornn/5.4bpp");
-const u32 gMapObjectPic_LansatBerryTree_0[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/lansat/0.4bpp");
-const u32 gMapObjectPic_LansatBerryTree_1[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/lansat/1.4bpp");
-const u32 gMapObjectPic_LansatBerryTree_2[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/lansat/2.4bpp");
-const u32 gMapObjectPic_LansatBerryTree_3[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/lansat/3.4bpp");
-const u32 gMapObjectPic_LansatBerryTree_4[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/lansat/4.4bpp");
-const u32 gMapObjectPic_LansatBerryTree_5[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/lansat/5.4bpp");
-const u32 gMapObjectPic_DurinBerryTree_0[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/durin/0.4bpp");
-const u32 gMapObjectPic_DurinBerryTree_1[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/durin/1.4bpp");
-const u32 gMapObjectPic_DurinBerryTree_2[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/durin/2.4bpp");
-const u32 gMapObjectPic_DurinBerryTree_3[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/durin/3.4bpp");
-const u32 gMapObjectPic_DurinBerryTree_4[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/durin/4.4bpp");
-const u32 gMapObjectPic_DurinBerryTree_5[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/durin/5.4bpp");
-const u32 gMapObjectPic_TamatoBerryTree_0[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/tamato/0.4bpp");
-const u32 gMapObjectPic_TamatoBerryTree_1[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/tamato/1.4bpp");
-const u32 gMapObjectPic_TamatoBerryTree_2[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/tamato/2.4bpp");
-const u32 gMapObjectPic_TamatoBerryTree_3[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/tamato/3.4bpp");
-const u32 gMapObjectPic_TamatoBerryTree_4[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/tamato/4.4bpp");
-const u32 gMapObjectPic_TamatoBerryTree_5[] = INCBIN_U32("graphics/map_objects/pics/berry_trees/tamato/5.4bpp");
-const u32 gFieldEffectPic_SurfBlob_0[] = INCBIN_U32("graphics/field_effect_objects/pics/surf_blob/0.4bpp");
-const u32 gFieldEffectPic_SurfBlob_1[] = INCBIN_U32("graphics/field_effect_objects/pics/surf_blob/1.4bpp");
-const u32 gFieldEffectPic_SurfBlob_2[] = INCBIN_U32("graphics/field_effect_objects/pics/surf_blob/2.4bpp");
-const u32 gMapObjectPic_QuintyPlump_0[] = INCBIN_U32("graphics/map_objects/pics/people/quinty_plump/0.4bpp");
-const u32 gMapObjectPic_QuintyPlump_1[] = INCBIN_U32("graphics/map_objects/pics/people/quinty_plump/1.4bpp");
-const u32 gMapObjectPic_QuintyPlump_2[] = INCBIN_U32("graphics/map_objects/pics/people/quinty_plump/2.4bpp");
-const u32 gMapObjectPic_QuintyPlump_3[] = INCBIN_U32("graphics/map_objects/pics/people/quinty_plump/3.4bpp");
-const u32 gMapObjectPic_QuintyPlump_4[] = INCBIN_U32("graphics/map_objects/pics/people/quinty_plump/4.4bpp");
-const u32 gMapObjectPic_QuintyPlump_5[] = INCBIN_U32("graphics/map_objects/pics/people/quinty_plump/5.4bpp");
-const u32 gMapObjectPic_QuintyPlump_6[] = INCBIN_U32("graphics/map_objects/pics/people/quinty_plump/6.4bpp");
-const u16 gMapObjectPalette12[] = INCBIN_U16("graphics/map_objects/palettes/12.gbapal");
-const u16 gMapObjectPalette13[] = INCBIN_U16("graphics/map_objects/palettes/13.gbapal");
-
-const u32 gFieldEffectPic_ShadowSmall[] = INCBIN_U32("graphics/field_effect_objects/pics/shadow_small.4bpp");
-const u32 gFieldEffectPic_ShadowMedium[] = INCBIN_U32("graphics/field_effect_objects/pics/shadow_medium.4bpp");
-const u32 gFieldEffectPic_ShadowLarge[] = INCBIN_U32("graphics/field_effect_objects/pics/shadow_large.4bpp");
-const u32 gFieldEffectPic_ShadowExtraLarge[] = INCBIN_U32("graphics/field_effect_objects/pics/shadow_extra_large.4bpp");
-const u32 filler_8368A08[0x48] = {};
-const u8 gFieldEffectPic_CutGrass[] = INCBIN_U8("graphics/field_effect_objects/pics/cut_grass.4bpp");
-const u32 FieldEffectPic_CutGrass_Copy[] = INCBIN_U32("graphics/field_effect_objects/pics/cut_grass.4bpp");
-const u16 gFieldEffectObjectPalette6[] = INCBIN_U16("graphics/field_effect_objects/palettes/06.gbapal");
-const u32 gFieldEffectPic_Ripple_0[] = INCBIN_U32("graphics/field_effect_objects/pics/ripple/0.4bpp");
-const u32 gFieldEffectPic_Ripple_1[] = INCBIN_U32("graphics/field_effect_objects/pics/ripple/1.4bpp");
-const u32 gFieldEffectPic_Ripple_2[] = INCBIN_U32("graphics/field_effect_objects/pics/ripple/2.4bpp");
-const u32 gFieldEffectPic_Ripple_3[] = INCBIN_U32("graphics/field_effect_objects/pics/ripple/3.4bpp");
-const u32 gFieldEffectPic_Ripple_4[] = INCBIN_U32("graphics/field_effect_objects/pics/ripple/4.4bpp");
-const u32 gFieldEffectPic_Ash_0[] = INCBIN_U32("graphics/field_effect_objects/pics/ash/0.4bpp");
-const u32 gFieldEffectPic_Ash_1[] = INCBIN_U32("graphics/field_effect_objects/pics/ash/1.4bpp");
-const u32 gFieldEffectPic_Ash_2[] = INCBIN_U32("graphics/field_effect_objects/pics/ash/2.4bpp");
-const u32 gFieldEffectPic_Ash_3[] = INCBIN_U32("graphics/field_effect_objects/pics/ash/3.4bpp");
-const u32 gFieldEffectPic_Ash_4[] = INCBIN_U32("graphics/field_effect_objects/pics/ash/4.4bpp");
-const u32 gFieldEffectPic_Arrow_0[] = INCBIN_U32("graphics/field_effect_objects/pics/arrow/0.4bpp");
-const u32 gFieldEffectPic_Arrow_1[] = INCBIN_U32("graphics/field_effect_objects/pics/arrow/1.4bpp");
-const u32 gFieldEffectPic_Arrow_2[] = INCBIN_U32("graphics/field_effect_objects/pics/arrow/2.4bpp");
-const u32 gFieldEffectPic_Arrow_3[] = INCBIN_U32("graphics/field_effect_objects/pics/arrow/3.4bpp");
-const u32 gFieldEffectPic_Arrow_4[] = INCBIN_U32("graphics/field_effect_objects/pics/arrow/4.4bpp");
-const u32 gFieldEffectPic_Arrow_5[] = INCBIN_U32("graphics/field_effect_objects/pics/arrow/5.4bpp");
-const u32 gFieldEffectPic_Arrow_6[] = INCBIN_U32("graphics/field_effect_objects/pics/arrow/6.4bpp");
-const u32 gFieldEffectPic_Arrow_7[] = INCBIN_U32("graphics/field_effect_objects/pics/arrow/7.4bpp");
-const u16 gFieldEffectObjectPalette0[] = INCBIN_U16("graphics/field_effect_objects/palettes/00.gbapal");
-const u16 gFieldEffectObjectPalette1[] = INCBIN_U16("graphics/field_effect_objects/palettes/01.gbapal");
-const u32 gFieldEffectPic_Dust_0[] = INCBIN_U32("graphics/field_effect_objects/pics/dust/0.4bpp");
-const u32 gFieldEffectPic_Dust_1[] = INCBIN_U32("graphics/field_effect_objects/pics/dust/1.4bpp");
-const u32 gFieldEffectPic_Dust_2[] = INCBIN_U32("graphics/field_effect_objects/pics/dust/2.4bpp");
-const u32 unknown_8369588[] = INCBIN_U32("graphics/field_effect_objects/unknown.bin");
-const u32 gFieldEffectPic_JumpTallGrass_0[] = INCBIN_U32("graphics/field_effect_objects/pics/jump_tall_grass/0.4bpp");
-const u32 gFieldEffectPic_JumpTallGrass_1[] = INCBIN_U32("graphics/field_effect_objects/pics/jump_tall_grass/1.4bpp");
-const u32 gFieldEffectPic_JumpTallGrass_2[] = INCBIN_U32("graphics/field_effect_objects/pics/jump_tall_grass/2.4bpp");
-const u32 gFieldEffectPic_JumpTallGrass_3[] = INCBIN_U32("graphics/field_effect_objects/pics/jump_tall_grass/3.4bpp");
-const u32 UnusedGrass0[] = INCBIN_U32("graphics/field_effect_objects/pics/unused_grass/0.4bpp");
-const u32 UnusedGrass1[] = INCBIN_U32("graphics/field_effect_objects/pics/unused_grass/1.4bpp");
-const u32 UnusedGrass2[] = INCBIN_U32("graphics/field_effect_objects/pics/unused_grass/2.4bpp");
-const u32 UnusedGrass3[] = INCBIN_U32("graphics/field_effect_objects/pics/unused_grass/3.4bpp");
-const u32 gFieldEffectPic_JumpLongGrass_0[] = INCBIN_U32("graphics/field_effect_objects/pics/jump_long_grass/0.4bpp");
-const u32 gFieldEffectPic_JumpLongGrass_1[] = INCBIN_U32("graphics/field_effect_objects/pics/jump_long_grass/1.4bpp");
-const u32 gFieldEffectPic_JumpLongGrass_2[] = INCBIN_U32("graphics/field_effect_objects/pics/jump_long_grass/2.4bpp");
-const u32 gFieldEffectPic_JumpLongGrass_3[] = INCBIN_U32("graphics/field_effect_objects/pics/jump_long_grass/3.4bpp");
-const u32 gFieldEffectPic_JumpLongGrass_4[] = INCBIN_U32("graphics/field_effect_objects/pics/jump_long_grass/4.4bpp");
-const u32 UnusedGrassLong[] = INCBIN_U32("graphics/field_effect_objects/pics/jump_long_grass/unused.4bpp");
-const u32 gFieldEffectPic_JumpLongGrass_5[] = INCBIN_U32("graphics/field_effect_objects/pics/jump_long_grass/5.4bpp");
-const u32 gFieldEffectPic_Unknown17_0[] = INCBIN_U32("graphics/field_effect_objects/pics/unknown_17/0.4bpp");
-const u32 gFieldEffectPic_Unknown17_1[] = INCBIN_U32("graphics/field_effect_objects/pics/unknown_17/1.4bpp");
-const u32 gFieldEffectPic_Unknown17_2[] = INCBIN_U32("graphics/field_effect_objects/pics/unknown_17/2.4bpp");
-const u32 gFieldEffectPic_Unknown17_3[] = INCBIN_U32("graphics/field_effect_objects/pics/unknown_17/3.4bpp");
-const u32 gFieldEffectPic_Unknown17_4[] = INCBIN_U32("graphics/field_effect_objects/pics/unknown_17/4.4bpp");
-const u32 gFieldEffectPic_Unknown17_5[] = INCBIN_U32("graphics/field_effect_objects/pics/unknown_17/5.4bpp");
-const u32 gFieldEffectPic_Unknown17_6[] = INCBIN_U32("graphics/field_effect_objects/pics/unknown_17/6.4bpp");
-const u32 gFieldEffectPic_Unknown17_7[] = INCBIN_U32("graphics/field_effect_objects/pics/unknown_17/7.4bpp");
-const u32 gFieldEffectPic_Unknown18_0[] = INCBIN_U32("graphics/field_effect_objects/pics/unknown_18/0.4bpp");
-const u32 gFieldEffectPic_Unknown18_1[] = INCBIN_U32("graphics/field_effect_objects/pics/unknown_18/1.4bpp");
-const u32 gFieldEffectPic_Unknown18_2[] = INCBIN_U32("graphics/field_effect_objects/pics/unknown_18/2.4bpp");
-const u32 gFieldEffectPic_Unknown18_3[] = INCBIN_U32("graphics/field_effect_objects/pics/unknown_18/3.4bpp");
-const u32 gFieldEffectPic_LongGrass_0[] = INCBIN_U32("graphics/field_effect_objects/pics/long_grass/0.4bpp");
-const u32 gFieldEffectPic_LongGrass_1[] = INCBIN_U32("graphics/field_effect_objects/pics/long_grass/1.4bpp");
-const u32 gFieldEffectPic_LongGrass_2[] = INCBIN_U32("graphics/field_effect_objects/pics/long_grass/2.4bpp");
-const u32 gFieldEffectPic_LongGrass_3[] = INCBIN_U32("graphics/field_effect_objects/pics/long_grass/3.4bpp");
-const u32 gFieldEffectPic_TallGrass_0[] = INCBIN_U32("graphics/field_effect_objects/pics/tall_grass/0.4bpp");
-const u32 gFieldEffectPic_TallGrass_1[] = INCBIN_U32("graphics/field_effect_objects/pics/tall_grass/1.4bpp");
-const u32 gFieldEffectPic_TallGrass_2[] = INCBIN_U32("graphics/field_effect_objects/pics/tall_grass/2.4bpp");
-const u32 gFieldEffectPic_TallGrass_3[] = INCBIN_U32("graphics/field_effect_objects/pics/tall_grass/3.4bpp");
-const u32 gFieldEffectPic_TallGrass_4[] = INCBIN_U32("graphics/field_effect_objects/pics/tall_grass/4.4bpp");
-const u32 gFieldEffectPic_ShortGrass_0[] = INCBIN_U32("graphics/field_effect_objects/pics/short_grass/0.4bpp");
-const u32 gFieldEffectPic_ShortGrass_1[] = INCBIN_U32("graphics/field_effect_objects/pics/short_grass/1.4bpp");
-const u32 gFieldEffectPic_SandFootprints_0[] = INCBIN_U32("graphics/field_effect_objects/pics/sand_footprints/0.4bpp");
-const u32 gFieldEffectPic_SandFootprints_1[] = INCBIN_U32("graphics/field_effect_objects/pics/sand_footprints/1.4bpp");
-const u32 gFieldEffectPic_DeepSandFootprints_0[] = INCBIN_U32("graphics/field_effect_objects/pics/deep_sand_footprints/0.4bpp");
-const u32 gFieldEffectPic_DeepSandFootprints_1[] = INCBIN_U32("graphics/field_effect_objects/pics/deep_sand_footprints/1.4bpp");
-const u32 gFieldEffectPic_BikeTireTracks_0[] = INCBIN_U32("graphics/field_effect_objects/pics/bike_tire_tracks/0.4bpp");
-const u32 gFieldEffectPic_BikeTireTracks_1[] = INCBIN_U32("graphics/field_effect_objects/pics/bike_tire_tracks/1.4bpp");
-const u32 gFieldEffectPic_BikeTireTracks_2[] = INCBIN_U32("graphics/field_effect_objects/pics/bike_tire_tracks/2.4bpp");
-const u32 gFieldEffectPic_BikeTireTracks_3[] = INCBIN_U32("graphics/field_effect_objects/pics/bike_tire_tracks/3.4bpp");
-const u32 gFieldEffectPic_Unknown19_0[] = INCBIN_U32("graphics/field_effect_objects/pics/unknown_19/0.4bpp");
-const u32 gFieldEffectPic_Unknown19_1[] = INCBIN_U32("graphics/field_effect_objects/pics/unknown_19/1.4bpp");
-const u32 gFieldEffectPic_Unknown19_2[] = INCBIN_U32("graphics/field_effect_objects/pics/unknown_19/2.4bpp");
-const u32 gFieldEffectPic_Unknown19_3[] = INCBIN_U32("graphics/field_effect_objects/pics/unknown_19/3.4bpp");
-const u32 gFieldEffectPic_SandPile_0[] = INCBIN_U32("graphics/field_effect_objects/pics/sand_pile/0.4bpp");
-const u32 gFieldEffectPic_SandPile_1[] = INCBIN_U32("graphics/field_effect_objects/pics/sand_pile/1.4bpp");
-const u32 gFieldEffectPic_SandPile_2[] = INCBIN_U32("graphics/field_effect_objects/pics/sand_pile/2.4bpp");
-const u32 gFieldEffectPic_JumpBigSplash_0[] = INCBIN_U32("graphics/field_effect_objects/pics/jump_big_splash/0.4bpp");
-const u32 gFieldEffectPic_JumpBigSplash_1[] = INCBIN_U32("graphics/field_effect_objects/pics/jump_big_splash/1.4bpp");
-const u32 gFieldEffectPic_JumpBigSplash_2[] = INCBIN_U32("graphics/field_effect_objects/pics/jump_big_splash/2.4bpp");
-const u32 gFieldEffectPic_JumpBigSplash_3[] = INCBIN_U32("graphics/field_effect_objects/pics/jump_big_splash/3.4bpp");
-const u32 gFieldEffectPic_Splash_0[] = INCBIN_U32("graphics/field_effect_objects/pics/splash/0.4bpp");
-const u32 gFieldEffectPic_Splash_1[] = INCBIN_U32("graphics/field_effect_objects/pics/splash/1.4bpp");
-const u32 gFieldEffectPic_JumpSmallSplash_0[] = INCBIN_U32("graphics/field_effect_objects/pics/jump_small_splash/0.4bpp");
-const u32 gFieldEffectPic_JumpSmallSplash_1[] = INCBIN_U32("graphics/field_effect_objects/pics/jump_small_splash/1.4bpp");
-const u32 gFieldEffectPic_JumpSmallSplash_2[] = INCBIN_U32("graphics/field_effect_objects/pics/jump_small_splash/2.4bpp");
-const u32 gFieldEffectPic_Unknown20_0[] = INCBIN_U32("graphics/field_effect_objects/pics/unknown_20/0.4bpp");
-const u32 gFieldEffectPic_Unknown20_1[] = INCBIN_U32("graphics/field_effect_objects/pics/unknown_20/1.4bpp");
-const u32 gFieldEffectPic_Unknown20_2[] = INCBIN_U32("graphics/field_effect_objects/pics/unknown_20/2.4bpp");
-const u32 gFieldEffectPic_Unknown20_3[] = INCBIN_U32("graphics/field_effect_objects/pics/unknown_20/3.4bpp");
-const u32 gFieldEffectPic_Unknown20_4[] = INCBIN_U32("graphics/field_effect_objects/pics/unknown_20/4.4bpp");
-const u32 gFieldEffectPic_TreeDisguise_0[] = INCBIN_U32("graphics/field_effect_objects/pics/tree_disguise/0.4bpp");
-const u32 gFieldEffectPic_TreeDisguise_1[] = INCBIN_U32("graphics/field_effect_objects/pics/tree_disguise/1.4bpp");
-const u32 gFieldEffectPic_TreeDisguise_2[] = INCBIN_U32("graphics/field_effect_objects/pics/tree_disguise/2.4bpp");
-const u32 gFieldEffectPic_TreeDisguise_3[] = INCBIN_U32("graphics/field_effect_objects/pics/tree_disguise/3.4bpp");
-const u32 gFieldEffectPic_TreeDisguise_4[] = INCBIN_U32("graphics/field_effect_objects/pics/tree_disguise/4.4bpp");
-const u32 gFieldEffectPic_TreeDisguise_5[] = INCBIN_U32("graphics/field_effect_objects/pics/tree_disguise/5.4bpp");
-const u32 gFieldEffectPic_TreeDisguise_6[] = INCBIN_U32("graphics/field_effect_objects/pics/tree_disguise/6.4bpp");
-const u32 gFieldEffectPic_MountainDisguise_0[] = INCBIN_U32("graphics/field_effect_objects/pics/mountain_disguise/0.4bpp");
-const u32 gFieldEffectPic_MountainDisguise_1[] = INCBIN_U32("graphics/field_effect_objects/pics/mountain_disguise/1.4bpp");
-const u32 gFieldEffectPic_MountainDisguise_2[] = INCBIN_U32("graphics/field_effect_objects/pics/mountain_disguise/2.4bpp");
-const u32 gFieldEffectPic_MountainDisguise_3[] = INCBIN_U32("graphics/field_effect_objects/pics/mountain_disguise/3.4bpp");
-const u32 gFieldEffectPic_MountainDisguise_4[] = INCBIN_U32("graphics/field_effect_objects/pics/mountain_disguise/4.4bpp");
-const u32 gFieldEffectPic_MountainDisguise_5[] = INCBIN_U32("graphics/field_effect_objects/pics/mountain_disguise/5.4bpp");
-const u32 gFieldEffectPic_MountainDisguise_6[] = INCBIN_U32("graphics/field_effect_objects/pics/mountain_disguise/6.4bpp");
-const u32 gFieldEffectPic_SandDisguise_0[] = INCBIN_U32("graphics/field_effect_objects/pics/sand_disguise/0.4bpp");
-const u32 gFieldEffectPic_SandDisguise_1[] = INCBIN_U32("graphics/field_effect_objects/pics/sand_disguise/1.4bpp");
-const u32 gFieldEffectPic_SandDisguise_2[] = INCBIN_U32("graphics/field_effect_objects/pics/sand_disguise/2.4bpp");
-const u32 gFieldEffectPic_SandDisguise_3[] = INCBIN_U32("graphics/field_effect_objects/pics/sand_disguise/3.4bpp");
-const u32 gFieldEffectPic_SandDisguise_4[] = INCBIN_U32("graphics/field_effect_objects/pics/sand_disguise/4.4bpp");
-const u32 gFieldEffectPic_SandDisguise_5[] = INCBIN_U32("graphics/field_effect_objects/pics/sand_disguise/5.4bpp");
-const u32 gFieldEffectPic_SandDisguise_6[] = INCBIN_U32("graphics/field_effect_objects/pics/sand_disguise/6.4bpp");
-const u32 gFieldEffectPic_HotSpringsWater[] = INCBIN_U32("graphics/field_effect_objects/pics/hot_springs_water.4bpp");
-const u16 gFieldEffectObjectPalette2[] = INCBIN_U16("graphics/field_effect_objects/palettes/02.gbapal");
-const u32 gFieldEffectPic_PopOutOfAsh_0[] = INCBIN_U32("graphics/field_effect_objects/pics/pop_out_of_ash/0.4bpp");
-const u32 gFieldEffectPic_PopOutOfAsh_1[] = INCBIN_U32("graphics/field_effect_objects/pics/pop_out_of_ash/1.4bpp");
-const u32 gFieldEffectPic_PopOutOfAsh_2[] = INCBIN_U32("graphics/field_effect_objects/pics/pop_out_of_ash/2.4bpp");
-const u32 gFieldEffectPic_PopOutOfAsh_3[] = INCBIN_U32("graphics/field_effect_objects/pics/pop_out_of_ash/3.4bpp");
-const u32 gFieldEffectPic_PopOutOfAsh_4[] = INCBIN_U32("graphics/field_effect_objects/pics/pop_out_of_ash/4.4bpp");
-const u32 gFieldEffectPic_LavaridgeGymWarp_0[] = INCBIN_U32("graphics/field_effect_objects/pics/lavaridge_gym_warp/0.4bpp");
-const u32 gFieldEffectPic_LavaridgeGymWarp_1[] = INCBIN_U32("graphics/field_effect_objects/pics/lavaridge_gym_warp/1.4bpp");
-const u32 gFieldEffectPic_LavaridgeGymWarp_2[] = INCBIN_U32("graphics/field_effect_objects/pics/lavaridge_gym_warp/2.4bpp");
-const u32 gFieldEffectPic_LavaridgeGymWarp_3[] = INCBIN_U32("graphics/field_effect_objects/pics/lavaridge_gym_warp/3.4bpp");
-const u32 gFieldEffectPic_LavaridgeGymWarp_4[] = INCBIN_U32("graphics/field_effect_objects/pics/lavaridge_gym_warp/4.4bpp");
-const u32 gFieldEffectPic_Bubbles_0[] = INCBIN_U32("graphics/field_effect_objects/pics/bubbles/0.4bpp");
-const u32 gFieldEffectPic_Bubbles_1[] = INCBIN_U32("graphics/field_effect_objects/pics/bubbles/1.4bpp");
-const u32 gFieldEffectPic_Bubbles_2[] = INCBIN_U32("graphics/field_effect_objects/pics/bubbles/2.4bpp");
-const u32 gFieldEffectPic_Bubbles_3[] = INCBIN_U32("graphics/field_effect_objects/pics/bubbles/3.4bpp");
-const u32 gFieldEffectPic_Bubbles_4[] = INCBIN_U32("graphics/field_effect_objects/pics/bubbles/4.4bpp");
-const u32 gFieldEffectPic_Bubbles_5[] = INCBIN_U32("graphics/field_effect_objects/pics/bubbles/5.4bpp");
-const u32 gFieldEffectPic_Bubbles_6[] = INCBIN_U32("graphics/field_effect_objects/pics/bubbles/6.4bpp");
-const u32 gFieldEffectPic_Bubbles_7[] = INCBIN_U32("graphics/field_effect_objects/pics/bubbles/7.4bpp");
-const u32 gFieldEffectPic_Sparkle_0[] = INCBIN_U32("graphics/field_effect_objects/pics/sparkle/0.4bpp");
-const u32 gFieldEffectPic_Sparkle_1[] = INCBIN_U32("graphics/field_effect_objects/pics/sparkle/1.4bpp");
-const u16 gFieldEffectObjectPalette3[] = INCBIN_U16("graphics/field_effect_objects/palettes/03.gbapal");
-const u32 gFieldEffectPic_Bird[] = INCBIN_U32("graphics/field_effect_objects/pics/bird.4bpp");
-
-void (*const gUnknown_0836DA88[])(struct Sprite *) =
-{
- sub_805C884,
- sub_805CDE8,
- sub_805C8AC,
- sub_805CF28,
- sub_805CF28,
- sub_805D0AC,
- sub_805D0AC,
- sub_805D230,
- sub_805D230,
- sub_805D230,
- sub_805D230,
- sub_80587B4,
- FieldObjectCB_BerryTree,
- sub_805D4F4,
- sub_805D634,
- sub_805D774,
- sub_805D8B4,
- sub_805D9F4,
- sub_805DB34,
- sub_805DC74,
- sub_805DDB4,
- sub_805DEF4,
- sub_805E034,
- sub_805E174,
- sub_805E278,
- sub_805E37C,
- sub_805E37C,
- sub_805E37C,
- sub_805E37C,
- sub_805E5DC,
- sub_805E668,
- sub_805E6F4,
- sub_805E780,
- sub_805E80C,
- sub_805E898,
- sub_805E924,
- sub_805E9B0,
- sub_805EA3C,
- sub_805EAC8,
- sub_805EB54,
- sub_805EBE0,
- sub_805EC6C,
- sub_805ECF8,
- sub_805ED84,
- sub_805EE10,
- sub_805EE9C,
- sub_805EF28,
- sub_805EFB4,
- sub_805F040,
- sub_805F0CC,
- sub_805F158,
- sub_805F1E4,
- sub_805F270,
- sub_805F2FC,
- sub_805F2FC,
- sub_805F2FC,
- sub_805F2FC,
- FieldObjectCB_TreeDisguise,
- FieldObjectCB_MountainDisguise,
- sub_805F8E0,
- sub_805F8E0,
- sub_805F8E0,
- sub_805F8E0,
- FieldObjectCB_Hidden1,
- sub_805FB20,
- sub_805FB20,
- sub_805FB20,
- sub_805FB20,
- sub_805FB90,
- sub_805FB90,
- sub_805FB90,
- sub_805FB90,
- sub_805FC00,
- sub_805FC00,
- sub_805FC00,
- sub_805FC00,
- sub_805FC70
+#include "data/field_event_obj/event_object_graphics.h"
+#include "data/field_event_obj/field_effect_object_graphics.h"
+
+// movement type callbacks
+static void (*const sMovementTypeCallbacks[])(struct Sprite *) =
+{
+ MovementType_None, // MOVEMENT_TYPE_NONE
+ MovementType_LookAround, // MOVEMENT_TYPE_LOOK_AROUND
+ MovementType_WanderAround, // MOVEMENT_TYPE_WANDER_AROUND
+ MovementType_WanderUpAndDown, // MOVEMENT_TYPE_WANDER_UP_AND_DOWN
+ MovementType_WanderUpAndDown, // MOVEMENT_TYPE_WANDER_DOWN_AND_UP
+ MovementType_WanderLeftAndRight, // MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT
+ MovementType_WanderLeftAndRight, // MOVEMENT_TYPE_WANDER_RIGHT_AND_LEFT
+ MovementType_FaceDirection, // MOVEMENT_TYPE_FACE_UP
+ MovementType_FaceDirection, // MOVEMENT_TYPE_FACE_DOWN
+ MovementType_FaceDirection, // MOVEMENT_TYPE_FACE_LEFT
+ MovementType_FaceDirection, // MOVEMENT_TYPE_FACE_RIGHT
+ MovementType_Player, // MOVEMENT_TYPE_PLAYER
+ MovementType_BerryTreeGrowth, // MOVEMENT_TYPE_BERRY_TREE_GROWTH
+ MovementType_FaceDownAndUp, // MOVEMENT_TYPE_FACE_DOWN_AND_UP
+ MovementType_FaceLeftAndRight, // MOVEMENT_TYPE_FACE_LEFT_AND_RIGHT
+ MovementType_FaceUpAndLeft, // MOVEMENT_TYPE_FACE_UP_AND_LEFT
+ MovementType_FaceUpAndRight, // MOVEMENT_TYPE_FACE_UP_AND_RIGHT
+ MovementType_FaceDownAndLeft, // MOVEMENT_TYPE_FACE_DOWN_AND_LEFT
+ MovementType_FaceDownAndRight, // MOVEMENT_TYPE_FACE_DOWN_AND_RIGHT
+ MovementType_FaceDownUpAndLeft, // MOVEMENT_TYPE_FACE_DOWN_UP_AND_LEFT
+ MovementType_FaceDownUpAndRight, // MOVEMENT_TYPE_FACE_DOWN_UP_AND_RIGHT
+ MovementType_FaceUpLeftAndRight, // MOVEMENT_TYPE_FACE_UP_LEFT_AND_RIGHT
+ MovementType_FaceDownLeftAndRight, // MOVEMENT_TYPE_FACE_DOWN_LEFT_AND_RIGHT
+ MovementType_RotateCounterclockwise, // MOVEMENT_TYPE_ROTATE_COUNTERCLOCKWISE
+ MovementType_RotateClockwise, // MOVEMENT_TYPE_ROTATE_CLOCKWISE
+ MovementType_WalkBackAndForth, // MOVEMENT_TYPE_WALK_UP_AND_DOWN
+ MovementType_WalkBackAndForth, // MOVEMENT_TYPE_WALK_DOWN_AND_UP
+ MovementType_WalkBackAndForth, // MOVEMENT_TYPE_WALK_LEFT_AND_RIGHT
+ MovementType_WalkBackAndForth, // MOVEMENT_TYPE_WALK_RIGHT_AND_LEFT
+ MovementType_WalkSequenceUpRightLeftDown, // MOVEMENT_TYPE_WALK_SEQUENCE_UP_RIGHT_LEFT_DOWN
+ MovementType_WalkSequenceRightLeftDownUp, // MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_LEFT_DOWN_UP
+ MovementType_WalkSequenceDownUpRightLeft, // MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_UP_RIGHT_LEFT
+ MovementType_WalkSequenceLeftDownUpRight, // MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_DOWN_UP_RIGHT
+ MovementType_WalkSequenceUpLeftRightDown, // MOVEMENT_TYPE_WALK_SEQUENCE_UP_LEFT_RIGHT_DOWN
+ MovementType_WalkSequenceLeftRightDownUp, // MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_RIGHT_DOWN_UP
+ MovementType_WalkSequenceDownUpLeftRight, // MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_UP_LEFT_RIGHT
+ MovementType_WalkSequenceRightDownUpLeft, // MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_DOWN_UP_LEFT
+ MovementType_WalkSequenceLeftUpDownRight, // MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_UP_DOWN_RIGHT
+ MovementType_WalkSequenceUpDownRightLeft, // MOVEMENT_TYPE_WALK_SEQUENCE_UP_DOWN_RIGHT_LEFT
+ MovementType_WalkSequenceRightLeftUpDown, // MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_LEFT_UP_DOWN
+ MovementType_WalkSequenceDownRightLeftUp, // MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_RIGHT_LEFT_UP
+ MovementType_WalkSequenceRightUpDownLeft, // MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_UP_DOWN_LEFT
+ MovementType_WalkSequenceUpDownLeftRight, // MOVEMENT_TYPE_WALK_SEQUENCE_UP_DOWN_LEFT_RIGHT
+ MovementType_WalkSequenceLeftRightUpDown, // MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_RIGHT_UP_DOWN
+ MovementType_WalkSequenceDownLeftRightUp, // MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_LEFT_RIGHT_UP
+ MovementType_WalkSequenceUpLeftDownRight, // MOVEMENT_TYPE_WALK_SEQUENCE_UP_LEFT_DOWN_RIGHT
+ MovementType_WalkSequenceDownRightUpLeft, // MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_RIGHT_UP_LEFT
+ MovementType_WalkSequenceLeftDownRightUp, // MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_DOWN_RIGHT_UP
+ MovementType_WalkSequenceRightUpLeftDown, // MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_UP_LEFT_DOWN
+ MovementType_WalkSequenceUpRightDownLeft, // MOVEMENT_TYPE_WALK_SEQUENCE_UP_RIGHT_DOWN_LEFT
+ MovementType_WalkSequenceDownLeftUpRight, // MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_LEFT_UP_RIGHT
+ MovementType_WalkSequenceLeftUpRightDown, // MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_UP_RIGHT_DOWN
+ MovementType_WalkSequenceRightDownLeftUp, // MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_DOWN_LEFT_UP
+ MovementType_CopyPlayer, // MOVEMENT_TYPE_COPY_PLAYER
+ MovementType_CopyPlayer, // MOVEMENT_TYPE_COPY_PLAYER_OPPOSITE
+ MovementType_CopyPlayer, // MOVEMENT_TYPE_COPY_PLAYER_COUNTERCLOCKWISE
+ MovementType_CopyPlayer, // MOVEMENT_TYPE_COPY_PLAYER_CLOCKWISE
+ MovementType_TreeDisguise, // MOVEMENT_TYPE_TREE_DISGUISE
+ MovementType_MountainDisguise, // MOVEMENT_TYPE_MOUNTAIN_DISGUISE
+ MovementType_CopyPlayerInGrass, // MOVEMENT_TYPE_COPY_PLAYER_IN_GRASS
+ MovementType_CopyPlayerInGrass, // MOVEMENT_TYPE_COPY_PLAYER_OPPOSITE_IN_GRASS
+ MovementType_CopyPlayerInGrass, // MOVEMENT_TYPE_COPY_PLAYER_COUNTERCLOCKWISE_IN_GRASS
+ MovementType_CopyPlayerInGrass, // MOVEMENT_TYPE_COPY_PLAYER_CLOCKWISE_IN_GRASS
+ MovementType_Hidden, // MOVEMENT_TYPE_HIDDEN
+ MovementType_WalkInPlace, // MOVEMENT_TYPE_WALK_IN_PLACE_DOWN
+ MovementType_WalkInPlace, // MOVEMENT_TYPE_WALK_IN_PLACE_UP
+ MovementType_WalkInPlace, // MOVEMENT_TYPE_WALK_IN_PLACE_LEFT
+ MovementType_WalkInPlace, // MOVEMENT_TYPE_WALK_IN_PLACE_RIGHT
+ MovementType_JogInPlace, // MOVEMENT_TYPE_JOG_IN_PLACE_DOWN
+ MovementType_JogInPlace, // MOVEMENT_TYPE_JOG_IN_PLACE_UP
+ MovementType_JogInPlace, // MOVEMENT_TYPE_JOG_IN_PLACE_LEFT
+ MovementType_JogInPlace, // MOVEMENT_TYPE_JOG_IN_PLACE_RIGHT
+ MovementType_RunInPlace, // MOVEMENT_TYPE_RUN_IN_PLACE_DOWN
+ MovementType_RunInPlace, // MOVEMENT_TYPE_RUN_IN_PLACE_UP
+ MovementType_RunInPlace, // MOVEMENT_TYPE_RUN_IN_PLACE_LEFT
+ MovementType_RunInPlace, // MOVEMENT_TYPE_RUN_IN_PLACE_RIGHT
+ MovementType_Invisible, // MOVEMENT_TYPE_INVISIBLE
+};
+
+const u8 gRangedMovementTypes[] = {
+ 0, // MOVEMENT_TYPE_NONE
+ 0, // MOVEMENT_TYPE_LOOK_AROUND
+ 1, // MOVEMENT_TYPE_WANDER_AROUND
+ 1, // MOVEMENT_TYPE_WANDER_UP_AND_DOWN
+ 1, // MOVEMENT_TYPE_WANDER_DOWN_AND_UP
+ 1, // MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT
+ 1, // MOVEMENT_TYPE_WANDER_RIGHT_AND_LEFT
+ 0, // MOVEMENT_TYPE_FACE_UP
+ 0, // MOVEMENT_TYPE_FACE_DOWN
+ 0, // MOVEMENT_TYPE_FACE_LEFT
+ 0, // MOVEMENT_TYPE_FACE_RIGHT
+ 0, // MOVEMENT_TYPE_PLAYER
+ 0, // MOVEMENT_TYPE_BERRY_TREE_GROWTH
+ 0, // MOVEMENT_TYPE_FACE_DOWN_AND_UP
+ 0, // MOVEMENT_TYPE_FACE_LEFT_AND_RIGHT
+ 0, // MOVEMENT_TYPE_FACE_UP_AND_LEFT
+ 0, // MOVEMENT_TYPE_FACE_UP_AND_RIGHT
+ 0, // MOVEMENT_TYPE_FACE_DOWN_AND_LEFT
+ 0, // MOVEMENT_TYPE_FACE_DOWN_AND_RIGHT
+ 0, // MOVEMENT_TYPE_FACE_DOWN_UP_AND_LEFT
+ 0, // MOVEMENT_TYPE_FACE_DOWN_UP_AND_RIGHT
+ 0, // MOVEMENT_TYPE_FACE_UP_LEFT_AND_RIGHT
+ 0, // MOVEMENT_TYPE_FACE_DOWN_LEFT_AND_RIGHT
+ 0, // MOVEMENT_TYPE_ROTATE_COUNTERCLOCKWISE
+ 0, // MOVEMENT_TYPE_ROTATE_CLOCKWISE
+ 1, // MOVEMENT_TYPE_WALK_UP_AND_DOWN
+ 1, // MOVEMENT_TYPE_WALK_DOWN_AND_UP
+ 1, // MOVEMENT_TYPE_WALK_LEFT_AND_RIGHT
+ 1, // MOVEMENT_TYPE_WALK_RIGHT_AND_LEFT
+ 1, // MOVEMENT_TYPE_WALK_SEQUENCE_UP_RIGHT_LEFT_DOWN
+ 1, // MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_LEFT_DOWN_UP
+ 1, // MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_UP_RIGHT_LEFT
+ 1, // MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_DOWN_UP_RIGHT
+ 1, // MOVEMENT_TYPE_WALK_SEQUENCE_UP_LEFT_RIGHT_DOWN
+ 1, // MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_RIGHT_DOWN_UP
+ 1, // MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_UP_LEFT_RIGHT
+ 1, // MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_DOWN_UP_LEFT
+ 1, // MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_UP_DOWN_RIGHT
+ 1, // MOVEMENT_TYPE_WALK_SEQUENCE_UP_DOWN_RIGHT_LEFT
+ 1, // MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_LEFT_UP_DOWN
+ 1, // MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_RIGHT_LEFT_UP
+ 1, // MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_UP_DOWN_LEFT
+ 1, // MOVEMENT_TYPE_WALK_SEQUENCE_UP_DOWN_LEFT_RIGHT
+ 1, // MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_RIGHT_UP_DOWN
+ 1, // MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_LEFT_RIGHT_UP
+ 1, // MOVEMENT_TYPE_WALK_SEQUENCE_UP_LEFT_DOWN_RIGHT
+ 1, // MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_RIGHT_UP_LEFT
+ 1, // MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_DOWN_RIGHT_UP
+ 1, // MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_UP_LEFT_DOWN
+ 1, // MOVEMENT_TYPE_WALK_SEQUENCE_UP_RIGHT_DOWN_LEFT
+ 1, // MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_LEFT_UP_RIGHT
+ 1, // MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_UP_RIGHT_DOWN
+ 1, // MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_DOWN_LEFT_UP
+ 1, // MOVEMENT_TYPE_COPY_PLAYER
+ 1, // MOVEMENT_TYPE_COPY_PLAYER_OPPOSITE
+ 1, // MOVEMENT_TYPE_COPY_PLAYER_COUNTERCLOCKWISE
+ 1, // MOVEMENT_TYPE_COPY_PLAYER_CLOCKWISE
+ 0, // MOVEMENT_TYPE_TREE_DISGUISE
+ 0, // MOVEMENT_TYPE_MOUNTAIN_DISGUISE
+ 1, // MOVEMENT_TYPE_COPY_PLAYER_IN_GRASS
+ 1, // MOVEMENT_TYPE_COPY_PLAYER_OPPOSITE_IN_GRASS
+ 1, // MOVEMENT_TYPE_COPY_PLAYER_COUNTERCLOCKWISE_IN_GRASS
+ 1, // MOVEMENT_TYPE_COPY_PLAYER_CLOCKWISE_IN_GRASS
+ 0, // MOVEMENT_TYPE_HIDDEN
+ 0, // MOVEMENT_TYPE_WALK_IN_PLACE_DOWN
+ 0, // MOVEMENT_TYPE_WALK_IN_PLACE_UP
+ 0, // MOVEMENT_TYPE_WALK_IN_PLACE_LEFT
+ 0, // MOVEMENT_TYPE_WALK_IN_PLACE_RIGHT
+ 0, // MOVEMENT_TYPE_JOG_IN_PLACE_DOWN
+ 0, // MOVEMENT_TYPE_JOG_IN_PLACE_UP
+ 0, // MOVEMENT_TYPE_JOG_IN_PLACE_LEFT
+ 0, // MOVEMENT_TYPE_JOG_IN_PLACE_RIGHT
+ 0, // MOVEMENT_TYPE_RUN_IN_PLACE_DOWN
+ 0, // MOVEMENT_TYPE_RUN_IN_PLACE_UP
+ 0, // MOVEMENT_TYPE_RUN_IN_PLACE_LEFT
+ 0, // MOVEMENT_TYPE_RUN_IN_PLACE_RIGHT
+ 0, // MOVEMENT_TYPE_INVISIBLE
};
-const u8 gUnknown_0836DBBC[] = {0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-const u8 gUnknown_0836DC09[] = {DIR_SOUTH, DIR_SOUTH, DIR_SOUTH, DIR_NORTH, DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_NORTH, DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_SOUTH, DIR_SOUTH, DIR_SOUTH, DIR_WEST, DIR_NORTH, DIR_NORTH, DIR_SOUTH, DIR_SOUTH, DIR_SOUTH, DIR_SOUTH, DIR_NORTH, DIR_SOUTH, DIR_SOUTH, DIR_SOUTH, DIR_NORTH, DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_NORTH, DIR_EAST, DIR_SOUTH, DIR_WEST, DIR_NORTH, DIR_WEST, DIR_SOUTH, DIR_EAST, DIR_WEST, DIR_NORTH, DIR_EAST, DIR_SOUTH, DIR_EAST, DIR_NORTH, DIR_WEST, DIR_SOUTH, DIR_NORTH, DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_NORTH, DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_NORTH, DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_SOUTH, DIR_SOUTH, DIR_NORTH, DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_SOUTH, DIR_SOUTH, DIR_NORTH, DIR_WEST, DIR_EAST, DIR_SOUTH, DIR_NORTH, DIR_WEST, DIR_EAST, DIR_SOUTH, DIR_NORTH, DIR_WEST, DIR_EAST, DIR_SOUTH};
-
-#include "data/field_map_obj/map_object_graphics_info_pointers.h"
-#include "data/field_map_obj/field_effect_object_template_pointers.h"
-#include "data/field_map_obj/map_object_pic_tables.h"
-#include "data/field_map_obj/map_object_anims.h"
-#include "data/field_map_obj/base_oam.h"
-#include "data/field_map_obj/map_object_subsprites.h"
-#include "data/field_map_obj/map_object_graphics_info.h"
-
-const struct SpritePalette gUnknown_0837377C[] = {
- {gMapObjectPalette0, 0x1103},
- {gMapObjectPalette1, 0x1104},
- {gMapObjectPalette2, 0x1105},
- {gMapObjectPalette3, 0x1106},
- {gMapObjectPalette4, 0x1107},
- {gMapObjectPalette5, 0x1108},
- {gMapObjectPalette6, 0x1109},
- {gMapObjectPalette7, 0x110A},
- {gMapObjectPalette8, 0x1100},
- {gMapObjectPalette9, 0x1101},
- {gMapObjectPalette10, 0x1102},
- {gMapObjectPalette11, 0x1115},
- {gMapObjectPalette12, 0x110B},
- {gMapObjectPalette13, 0x110C},
- {gMapObjectPalette14, 0x110D},
- {gMapObjectPalette15, 0x110E},
- {gMapObjectPalette16, 0x110F},
- {gMapObjectPalette17, 0x1110},
- {gMapObjectPalette18, 0x1111},
- {gMapObjectPalette19, 0x1112},
- {gMapObjectPalette20, 0x1113},
- {gMapObjectPalette21, 0x1114},
- {gMapObjectPalette22, 0x1116},
- {gMapObjectPalette23, 0x1117},
- {gMapObjectPalette24, 0x1118},
- {gMapObjectPalette25, 0x1119},
- {gMapObjectPalette26, 0x111A},
+const u8 gInitialMovementTypeFacingDirections[] = {
+ DIR_SOUTH, // MOVEMENT_TYPE_NONE
+ DIR_SOUTH, // MOVEMENT_TYPE_LOOK_AROUND
+ DIR_SOUTH, // MOVEMENT_TYPE_WANDER_AROUND
+ DIR_NORTH, // MOVEMENT_TYPE_WANDER_UP_AND_DOWN
+ DIR_SOUTH, // MOVEMENT_TYPE_WANDER_DOWN_AND_UP
+ DIR_WEST, // MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT
+ DIR_EAST, // MOVEMENT_TYPE_WANDER_RIGHT_AND_LEFT
+ DIR_NORTH, // MOVEMENT_TYPE_FACE_UP
+ DIR_SOUTH, // MOVEMENT_TYPE_FACE_DOWN
+ DIR_WEST, // MOVEMENT_TYPE_FACE_LEFT
+ DIR_EAST, // MOVEMENT_TYPE_FACE_RIGHT
+ DIR_SOUTH, // MOVEMENT_TYPE_PLAYER
+ DIR_SOUTH, // MOVEMENT_TYPE_BERRY_TREE_GROWTH
+ DIR_SOUTH, // MOVEMENT_TYPE_FACE_DOWN_AND_UP
+ DIR_WEST, // MOVEMENT_TYPE_FACE_LEFT_AND_RIGHT
+ DIR_NORTH, // MOVEMENT_TYPE_FACE_UP_AND_LEFT
+ DIR_NORTH, // MOVEMENT_TYPE_FACE_UP_AND_RIGHT
+ DIR_SOUTH, // MOVEMENT_TYPE_FACE_DOWN_AND_LEFT
+ DIR_SOUTH, // MOVEMENT_TYPE_FACE_DOWN_AND_RIGHT
+ DIR_SOUTH, // MOVEMENT_TYPE_FACE_DOWN_UP_AND_LEFT
+ DIR_SOUTH, // MOVEMENT_TYPE_FACE_DOWN_UP_AND_RIGHT
+ DIR_NORTH, // MOVEMENT_TYPE_FACE_UP_LEFT_AND_RIGHT
+ DIR_SOUTH, // MOVEMENT_TYPE_FACE_DOWN_LEFT_AND_RIGHT
+ DIR_SOUTH, // MOVEMENT_TYPE_ROTATE_COUNTERCLOCKWISE
+ DIR_SOUTH, // MOVEMENT_TYPE_ROTATE_CLOCKWISE
+ DIR_NORTH, // MOVEMENT_TYPE_WALK_UP_AND_DOWN
+ DIR_SOUTH, // MOVEMENT_TYPE_WALK_DOWN_AND_UP
+ DIR_WEST, // MOVEMENT_TYPE_WALK_LEFT_AND_RIGHT
+ DIR_EAST, // MOVEMENT_TYPE_WALK_RIGHT_AND_LEFT
+ DIR_NORTH, // MOVEMENT_TYPE_WALK_SEQUENCE_UP_RIGHT_LEFT_DOWN
+ DIR_EAST, // MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_LEFT_DOWN_UP
+ DIR_SOUTH, // MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_UP_RIGHT_LEFT
+ DIR_WEST, // MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_DOWN_UP_RIGHT
+ DIR_NORTH, // MOVEMENT_TYPE_WALK_SEQUENCE_UP_LEFT_RIGHT_DOWN
+ DIR_WEST, // MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_RIGHT_DOWN_UP
+ DIR_SOUTH, // MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_UP_LEFT_RIGHT
+ DIR_EAST, // MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_DOWN_UP_LEFT
+ DIR_WEST, // MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_UP_DOWN_RIGHT
+ DIR_NORTH, // MOVEMENT_TYPE_WALK_SEQUENCE_UP_DOWN_RIGHT_LEFT
+ DIR_EAST, // MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_LEFT_UP_DOWN
+ DIR_SOUTH, // MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_RIGHT_LEFT_UP
+ DIR_EAST, // MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_UP_DOWN_LEFT
+ DIR_NORTH, // MOVEMENT_TYPE_WALK_SEQUENCE_UP_DOWN_LEFT_RIGHT
+ DIR_WEST, // MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_RIGHT_UP_DOWN
+ DIR_SOUTH, // MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_LEFT_RIGHT_UP
+ DIR_NORTH, // MOVEMENT_TYPE_WALK_SEQUENCE_UP_LEFT_DOWN_RIGHT
+ DIR_SOUTH, // MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_RIGHT_UP_LEFT
+ DIR_WEST, // MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_DOWN_RIGHT_UP
+ DIR_EAST, // MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_UP_LEFT_DOWN
+ DIR_NORTH, // MOVEMENT_TYPE_WALK_SEQUENCE_UP_RIGHT_DOWN_LEFT
+ DIR_SOUTH, // MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_LEFT_UP_RIGHT
+ DIR_WEST, // MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_UP_RIGHT_DOWN
+ DIR_EAST, // MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_DOWN_LEFT_UP
+ DIR_NORTH, // MOVEMENT_TYPE_COPY_PLAYER
+ DIR_SOUTH, // MOVEMENT_TYPE_COPY_PLAYER_OPPOSITE
+ DIR_WEST, // MOVEMENT_TYPE_COPY_PLAYER_COUNTERCLOCKWISE
+ DIR_EAST, // MOVEMENT_TYPE_COPY_PLAYER_CLOCKWISE
+ DIR_SOUTH, // MOVEMENT_TYPE_TREE_DISGUISE
+ DIR_SOUTH, // MOVEMENT_TYPE_MOUNTAIN_DISGUISE
+ DIR_NORTH, // MOVEMENT_TYPE_COPY_PLAYER_IN_GRASS
+ DIR_SOUTH, // MOVEMENT_TYPE_COPY_PLAYER_OPPOSITE_IN_GRASS
+ DIR_WEST, // MOVEMENT_TYPE_COPY_PLAYER_COUNTERCLOCKWISE_IN_GRASS
+ DIR_EAST, // MOVEMENT_TYPE_COPY_PLAYER_CLOCKWISE_IN_GRASS
+ DIR_SOUTH, // MOVEMENT_TYPE_HIDDEN
+ DIR_SOUTH, // MOVEMENT_TYPE_WALK_IN_PLACE_DOWN
+ DIR_NORTH, // MOVEMENT_TYPE_WALK_IN_PLACE_UP
+ DIR_WEST, // MOVEMENT_TYPE_WALK_IN_PLACE_LEFT
+ DIR_EAST, // MOVEMENT_TYPE_WALK_IN_PLACE_RIGHT
+ DIR_SOUTH, // MOVEMENT_TYPE_JOG_IN_PLACE_DOWN
+ DIR_NORTH, // MOVEMENT_TYPE_JOG_IN_PLACE_UP
+ DIR_WEST, // MOVEMENT_TYPE_JOG_IN_PLACE_LEFT
+ DIR_EAST, // MOVEMENT_TYPE_JOG_IN_PLACE_RIGHT
+ DIR_SOUTH, // MOVEMENT_TYPE_RUN_IN_PLACE_DOWN
+ DIR_NORTH, // MOVEMENT_TYPE_RUN_IN_PLACE_UP
+ DIR_WEST, // MOVEMENT_TYPE_RUN_IN_PLACE_LEFT
+ DIR_EAST, // MOVEMENT_TYPE_RUN_IN_PLACE_RIGHT
+ DIR_SOUTH, // MOVEMENT_TYPE_INVISIBLE
+};
+
+#include "data/field_event_obj/event_object_graphics_info_pointers.h"
+#include "data/field_event_obj/field_effect_object_template_pointers.h"
+#include "data/field_event_obj/event_object_pic_tables.h"
+#include "data/field_event_obj/event_object_anims.h"
+#include "data/field_event_obj/base_oam.h"
+#include "data/field_event_obj/event_object_subsprites.h"
+#include "data/field_event_obj/event_object_graphics_info.h"
+
+const struct SpritePalette sEventObjectSpritePalettes[] = {
+ {gEventObjectPalette0, 0x1103},
+ {gEventObjectPalette1, 0x1104},
+ {gEventObjectPalette2, 0x1105},
+ {gEventObjectPalette3, 0x1106},
+ {gEventObjectPalette4, 0x1107},
+ {gEventObjectPalette5, 0x1108},
+ {gEventObjectPalette6, 0x1109},
+ {gEventObjectPalette7, 0x110A},
+ {gEventObjectPalette8, 0x1100},
+ {gEventObjectPalette9, 0x1101},
+ {gEventObjectPalette10, 0x1102},
+ {gEventObjectPalette11, 0x1115},
+ {gEventObjectPalette12, 0x110B},
+ {gEventObjectPalette13, 0x110C},
+ {gEventObjectPalette14, 0x110D},
+ {gEventObjectPalette15, 0x110E},
+ {gEventObjectPalette16, 0x110F},
+ {gEventObjectPalette17, 0x1110},
+ {gEventObjectPalette18, 0x1111},
+ {gEventObjectPalette19, 0x1112},
+ {gEventObjectPalette20, 0x1113},
+ {gEventObjectPalette21, 0x1114},
+ {gEventObjectPalette22, 0x1116},
+ {gEventObjectPalette23, 0x1117},
+ {gEventObjectPalette24, 0x1118},
+ {gEventObjectPalette25, 0x1119},
+ {gEventObjectPalette26, 0x111A},
{NULL, 0x0000}
};
-const u16 Palettes_837385C[] = {
+const u16 gPlayerReflectionPaletteTags[] = {
0x1101,
0x1101,
0x1101,
0x1101
};
-const u16 Palettes_8373864[] = {
+// These were probably intended to be used for the female player's reflection.
+const u16 gUnusedPlayerReflectionPaletteTags[] = {
0x1111,
0x1111,
0x1111,
0x1111
};
-const u16 Palettes_837386C[] = {
+const u16 gPlayerUnderwaterReflectionPaletteTags[] = {
0x1115,
0x1115,
0x1115,
0x1115
};
-const struct PairedPalettes gUnknown_08373874[] = {
- {0x1100, Palettes_837385C},
- {0x1110, Palettes_837385C},
- {0x1115, Palettes_837386C},
+const struct ReflectionPaletteSet gPlayerReflectionPaletteSets[] = {
+ {0x1100, gPlayerReflectionPaletteTags},
+ {0x1110, gPlayerReflectionPaletteTags},
+ {0x1115, gPlayerUnderwaterReflectionPaletteTags},
{0x11FF, NULL}
};
-const u16 Palettes_8373894[] = {
+const u16 gQuintyPlumpReflectionPaletteTags[] = {
0x110C,
0x110C,
0x110C,
0x110C
};
-const u16 Palettes_837389C[] = {
+const u16 gTruckReflectionPaletteTags[] = {
0x110D,
0x110D,
0x110D,
0x110D
};
-const u16 Palettes_83738A4[] = {
+const u16 gMachokeMoverReflectionPaletteTags[] = {
0x110E,
0x110E,
0x110E,
0x110E
};
-const u16 Palettes_83738AC[] = {
+const u16 gMovingBoxReflectionPaletteTags[] = {
0x1112,
0x1112,
0x1112,
0x1112
};
-const u16 Palettes_83738B4[] = {
+const u16 gCableCarReflectionPaletteTags[] = {
0x1113,
0x1113,
0x1113,
0x1113
};
-const u16 Palettes_83738BC[] = {
+const u16 gSSTidalReflectionPaletteTags[] = {
0x1114,
0x1114,
0x1114,
0x1114
};
-const u16 Palettes_83738C4[] = {
+const u16 gSubmarineShadowReflectionPaletteTags[] = {
0x111A,
0x111A,
0x111A,
0x111A
};
-const u16 Palettes_83738CC[] = {
+const u16 gKyogre2ReflectionPaletteTags[] = {
0x1117,
0x1117,
0x1117,
0x1117
};
-const u16 Palettes_83738D4[] = {
+const u16 gGroudon2ReflectionPaletteTags[] = {
0x1119,
0x1119,
0x1119,
0x1119
};
-const u16 Palettes_83738DC[] = {
+const u16 gInvisibleKecleonReflectionPaletteTags[] = {
0x1109,
0x1109,
0x1109,
0x1109
};
-const struct PairedPalettes gUnknown_083738E4[] = {
- {0x1100, Palettes_837385C},
- {0x1110, Palettes_837385C},
- {0x110B, Palettes_8373894},
- {0x110D, Palettes_837389C},
- {0x110E, Palettes_83738A4},
- {0x1112, Palettes_83738AC},
- {0x1113, Palettes_83738B4},
- {0x1114, Palettes_83738BC},
- {0x1116, Palettes_83738CC},
- {0x1118, Palettes_83738D4},
- {0x1105, Palettes_83738DC},
- {0x111A, Palettes_83738C4},
+const struct ReflectionPaletteSet gSpecialObjectReflectionPaletteSets[] = {
+ {0x1100, gPlayerReflectionPaletteTags},
+ {0x1110, gPlayerReflectionPaletteTags},
+ {0x110B, gQuintyPlumpReflectionPaletteTags},
+ {0x110D, gTruckReflectionPaletteTags},
+ {0x110E, gMachokeMoverReflectionPaletteTags},
+ {0x1112, gMovingBoxReflectionPaletteTags},
+ {0x1113, gCableCarReflectionPaletteTags},
+ {0x1114, gSSTidalReflectionPaletteTags},
+ {0x1116, gKyogre2ReflectionPaletteTags},
+ {0x1118, gGroudon2ReflectionPaletteTags},
+ {0x1105, gInvisibleKecleonReflectionPaletteTags},
+ {0x111A, gSubmarineShadowReflectionPaletteTags},
{0x11FF, NULL}
};
-const u16 Unknown_837394C[] = {
+const u16 gObjectPaletteTags0[] = {
0x1100,
0x1101,
0x1103,
@@ -1744,7 +484,7 @@ const u16 Unknown_837394C[] = {
0x110A
};
-const u16 Unknown_8373960[] = {
+const u16 gObjectPaletteTags1[] = {
0x1100,
0x1101,
0x1103,
@@ -1757,7 +497,7 @@ const u16 Unknown_8373960[] = {
0x110A
};
-const u16 Unknown_8373974[] = {
+const u16 gObjectPaletteTags2[] = {
0x1100,
0x1101,
0x1103,
@@ -1770,7 +510,7 @@ const u16 Unknown_8373974[] = {
0x110A
};
-const u16 Unknown_8373988[] = {
+const u16 gObjectPaletteTags3[] = {
0x1100,
0x1101,
0x1103,
@@ -1783,54 +523,215 @@ const u16 Unknown_8373988[] = {
0x110A
};
-const u16 *const gUnknown_0837399C[] = {
- Unknown_837394C,
- Unknown_8373960,
- Unknown_8373974,
- Unknown_8373988
+const u16 *const gObjectPaletteTagSets[] = {
+ gObjectPaletteTags0,
+ gObjectPaletteTags1,
+ gObjectPaletteTags2,
+ gObjectPaletteTags3
+};
+
+#include "data/field_event_obj/berry_tree_graphics_tables.h"
+#include "data/field_event_obj/field_effect_objects.h"
+
+const s16 gMovementDelaysMedium[] = {32, 64, 96, 128};
+const s16 gMovementDelaysLong[] = {32, 64, 128, 192};
+const s16 gMovementDelaysShort[] = {32, 48, 64, 80};
+
+#include "data/field_event_obj/movement_type_func_tables.h"
+
+const u8 gFaceDirectionAnimNums[] = {
+ 0, // DIR_NONE
+ 0, // DIR_SOUTH
+ 1, // DIR_NORTH
+ 2, // DIR_WEST
+ 3, // DIR_EAST
+ 0, // DIR_SOUTHWEST
+ 0, // DIR_SOUTHEAST
+ 1, // DIR_NORTHWEST
+ 1, // DIR_NORTHEAST
+};
+const u8 gMoveDirectionAnimNums[] = {
+ 4, // DIR_NONE
+ 4, // DIR_SOUTH
+ 5, // DIR_NORTH
+ 6, // DIR_WEST
+ 7, // DIR_EAST
+ 4, // DIR_SOUTHWEST
+ 4, // DIR_SOUTHEAST
+ 5, // DIR_NORTHWEST
+ 5, // DIR_NORTHEAST
+};
+const u8 gMoveDirectionFastAnimNums[] = {
+ 8, // DIR_NONE
+ 8, // DIR_SOUTH
+ 9, // DIR_NORTH
+ 10, // DIR_WEST
+ 11, // DIR_EAST
+ 8, // DIR_SOUTHWEST
+ 8, // DIR_SOUTHEAST
+ 9, // DIR_NORTHWEST
+ 9, // DIR_NORTHEAST
+};
+const u8 gMoveDirectionFasterAnimNums[] = {
+ 12, // DIR_NONE
+ 12, // DIR_SOUTH
+ 13, // DIR_NORTH
+ 14, // DIR_WEST
+ 15, // DIR_EAST
+ 12, // DIR_SOUTHWEST
+ 12, // DIR_SOUTHEAST
+ 13, // DIR_NORTHWEST
+ 13, // DIR_NORTHEAST
+};
+const u8 gMoveDirectionFastestAnimNums[] = {
+ 16, // DIR_NONE
+ 16, // DIR_SOUTH
+ 17, // DIR_NORTH
+ 18, // DIR_WEST
+ 19, // DIR_EAST
+ 16, // DIR_SOUTHWEST
+ 16, // DIR_SOUTHEAST
+ 17, // DIR_NORTHWEST
+ 17, // DIR_NORTHEAST
+};
+const u8 gJumpSpecialDirectionAnimNums[] = { // used for jumping onto surf mon
+ 20, // DIR_NONE
+ 20, // DIR_SOUTH
+ 21, // DIR_NORTH
+ 22, // DIR_WEST
+ 23, // DIR_EAST
+ 20, // DIR_SOUTHWEST
+ 20, // DIR_SOUTHEAST
+ 21, // DIR_NORTHWEST
+ 21, // DIR_NORTHEAST
+};
+const u8 gAcroWheelieDirectionAnimNums[] = {
+ 20, // DIR_NONE
+ 20, // DIR_SOUTH
+ 21, // DIR_NORTH
+ 22, // DIR_WEST
+ 23, // DIR_EAST
+ 20, // DIR_SOUTHWEST
+ 20, // DIR_SOUTHEAST
+ 21, // DIR_NORTHWEST
+ 21, // DIR_NORTHEAST
+};
+const u8 gUnrefAnimNums_08375633[] = {
+ 24, // DIR_NONE
+ 24, // DIR_SOUTH
+ 25, // DIR_NORTH
+ 26, // DIR_WEST
+ 27, // DIR_EAST
+ 24, // DIR_SOUTHWEST
+ 24, // DIR_SOUTHEAST
+ 25, // DIR_NORTHWEST
+ 25, // DIR_NORTHEAST
+};
+const u8 gAcroEndWheelieDirectionAnimNums[] = {
+ 28, // DIR_NONE
+ 28, // DIR_SOUTH
+ 29, // DIR_NORTH
+ 30, // DIR_WEST
+ 31, // DIR_EAST
+ 28, // DIR_SOUTHWEST
+ 28, // DIR_SOUTHEAST
+ 29, // DIR_NORTHWEST
+ 29, // DIR_NORTHEAST
+};
+const u8 gAcroUnusedActionDirectionAnimNums[] = {
+ 32, // DIR_NONE
+ 32, // DIR_SOUTH
+ 33, // DIR_NORTH
+ 34, // DIR_WEST
+ 35, // DIR_EAST
+ 32, // DIR_SOUTHWEST
+ 32, // DIR_SOUTHEAST
+ 33, // DIR_NORTHWEST
+ 33, // DIR_NORTHEAST
+};
+const u8 gAcroWheeliePedalDirectionAnimNums[] = {
+ 36, // DIR_NONE
+ 36, // DIR_SOUTH
+ 37, // DIR_NORTH
+ 38, // DIR_WEST
+ 39, // DIR_EAST
+ 36, // DIR_SOUTHWEST
+ 36, // DIR_SOUTHEAST
+ 37, // DIR_NORTHWEST
+ 37, // DIR_NORTHEAST
+};
+const u8 gFishingDirectionAnimNums[] = {
+ 0, // DIR_NONE
+ 0, // DIR_SOUTH
+ 1, // DIR_NORTH
+ 2, // DIR_WEST
+ 3, // DIR_EAST
+ 0, // DIR_SOUTHWEST
+ 0, // DIR_SOUTHEAST
+ 1, // DIR_NORTHWEST
+ 1, // DIR_NORTHEAST
+};
+const u8 gFishingNoCatchDirectionAnimNums[] = {
+ 4, // DIR_NONE
+ 4, // DIR_SOUTH
+ 5, // DIR_NORTH
+ 6, // DIR_WEST
+ 7, // DIR_EAST
+ 4, // DIR_SOUTHWEST
+ 4, // DIR_SOUTHEAST
+ 5, // DIR_NORTHWEST
+ 5, // DIR_NORTHEAST
+};
+const u8 gFishingBiteDirectionAnimNums[] = {
+ 8, // DIR_NONE
+ 8, // DIR_SOUTH
+ 9, // DIR_NORTH
+ 10, // DIR_WEST
+ 11, // DIR_EAST
+ 8, // DIR_SOUTHWEST
+ 8, // DIR_SOUTHEAST
+ 9, // DIR_NORTHWEST
+ 9, // DIR_NORTHEAST
+};
+const u8 gRunningDirectionAnimNums[] = {
+ 20, // DIR_NONE
+ 20, // DIR_SOUTH
+ 21, // DIR_NORTH
+ 22, // DIR_WEST
+ 23, // DIR_EAST
+ 20, // DIR_SOUTHWEST
+ 20, // DIR_SOUTHEAST
+ 21, // DIR_NORTHWEST
+ 21, // DIR_NORTHEAST
+};
+
+const u8 gTrainerFacingDirectionMovementTypes[] = {
+ MOVEMENT_TYPE_FACE_DOWN, // DIR_NONE
+ MOVEMENT_TYPE_FACE_DOWN, // DIR_SOUTH
+ MOVEMENT_TYPE_FACE_UP, // DIR_NORTH
+ MOVEMENT_TYPE_FACE_LEFT, // DIR_WEST
+ MOVEMENT_TYPE_FACE_RIGHT, // DIR_EAST
+ MOVEMENT_TYPE_FACE_DOWN, // DIR_SOUTHWEST
+ MOVEMENT_TYPE_FACE_DOWN, // DIR_SOUTHEAST
+ MOVEMENT_TYPE_FACE_UP, // DIR_NORTHWEST
+ MOVEMENT_TYPE_FACE_UP, // DIR_NORTHEAST
};
-#include "data/field_map_obj/berry_tree_graphics_tables.h"
-#include "data/field_map_obj/field_effect_objects.h"
-
-const s16 gUnknown_0837520C[] = {0x20, 0x40, 0x60, 0x80};
-const s16 gUnknown_08375204[] = {0x20, 0x40, 0x80, 0xc0};
-const s16 gUnknown_0837521C[] = {0x20, 0x30, 0x40, 0x50};
-
-#include "data/field_map_obj/callback_subroutine_pointers.h"
-
-const u8 gUnknown_083755F4[] = {0x00, 0x00, 0x01, 0x02, 0x03, 0x00, 0x00, 0x01, 0x01};
-const u8 gUnknown_083755FD[] = {0x04, 0x04, 0x05, 0x06, 0x07, 0x04, 0x04, 0x05, 0x05};
-const u8 gUnknown_08375606[] = {0x08, 0x08, 0x09, 0x0A, 0x0B, 0x08, 0x08, 0x09, 0x09};
-const u8 gUnknown_0837560F[] = {0x0C, 0x0C, 0x0D, 0x0E, 0x0F, 0x0C, 0x0C, 0x0D, 0x0D};
-const u8 gUnknown_08375618[] = {0x10, 0x10, 0x11, 0x12, 0x13, 0x10, 0x10, 0x11, 0x11};
-const u8 gUnknown_08375621[] = {0x14, 0x14, 0x15, 0x16, 0x17, 0x14, 0x14, 0x15, 0x15};
-const u8 gUnknown_0837562A[] = {0x14, 0x14, 0x15, 0x16, 0x17, 0x14, 0x14, 0x15, 0x15};
-const u8 gUnknown_08375633[] = {0x18, 0x18, 0x19, 0x1A, 0x1B, 0x18, 0x18, 0x19, 0x19};
-const u8 gUnknown_0837563C[] = {0x1C, 0x1C, 0x1D, 0x1E, 0x1F, 0x1C, 0x1C, 0x1D, 0x1D};
-const u8 gUnknown_08375645[] = {0x20, 0x20, 0x21, 0x22, 0x23, 0x20, 0x20, 0x21, 0x21};
-const u8 gUnknown_0837564E[] = {0x24, 0x24, 0x25, 0x26, 0x27, 0x24, 0x24, 0x25, 0x25};
-const u8 gUnknown_08375657[] = {0x00, 0x00, 0x01, 0x02, 0x03, 0x00, 0x00, 0x01, 0x01};
-const u8 gUnknown_08375660[] = {0x04, 0x04, 0x05, 0x06, 0x07, 0x04, 0x04, 0x05, 0x05};
-const u8 gUnknown_08375669[] = {0x08, 0x08, 0x09, 0x0A, 0x0B, 0x08, 0x08, 0x09, 0x09};
-const u8 gUnknown_08375672[] = {0x14, 0x14, 0x15, 0x16, 0x17, 0x14, 0x14, 0x15, 0x15};
-const u8 gUnknown_0837567B[] = {0x08, 0x08, 0x07, 0x09, 0x0A, 0x08, 0x08, 0x07, 0x07};
-
-bool8 (*const gUnknown_08375684[])(u8) = {
+bool8 (*const gOppositeDirectionBlockedMetatileFuncs[])(u8) = {
MetatileBehavior_IsSouthBlocked,
MetatileBehavior_IsNorthBlocked,
MetatileBehavior_IsWestBlocked,
MetatileBehavior_IsEastBlocked
};
-bool8 (*const gUnknown_08375694[])(u8) = {
+bool8 (*const gDirectionBlockedMetatileFuncs[])(u8) = {
MetatileBehavior_IsNorthBlocked,
MetatileBehavior_IsSouthBlocked,
MetatileBehavior_IsEastBlocked,
MetatileBehavior_IsWestBlocked
};
-const struct Coords16 gDirectionToVector[] = {
+static const struct Coords16 sDirectionToVectors[] = {
{ 0, 0},
{ 0, 1},
{ 0, -1},
@@ -1842,35 +743,206 @@ const struct Coords16 gDirectionToVector[] = {
{ 1, -1}
};
-const u8 gUnknown_083756C8[] = {0x00, 0x00, 0x01, 0x02, 0x03};
-const u8 gUnknown_083756CD[] = {0x04, 0x04, 0x05, 0x06, 0x07};
-const u8 gUnknown_083756D2[] = {0x08, 0x08, 0x09, 0x0A, 0x0B};
-const u8 gUnknown_083756D7[] = {0x15, 0x15, 0x16, 0x17, 0x18};
-const u8 gUnknown_083756DC[] = {0x29, 0x29, 0x2A, 0x2B, 0x2C};
-const u8 gUnknown_083756E1[] = {0x2D, 0x2D, 0x2E, 0x2F, 0x30};
-const u8 gUnknown_083756E6[] = {0x31, 0x31, 0x32, 0x33, 0x34};
-const u8 gUnknown_083756EB[] = {0x35, 0x35, 0x36, 0x37, 0x38};
-const u8 gUnknown_083756F0[] = {0x0C, 0x0C, 0x0D, 0x0E, 0x0F};
-const u8 gUnknown_083756F5[] = {0x46, 0x46, 0x47, 0x48, 0x49};
-const u8 gUnknown_083756FA[] = {0x4B, 0x4B, 0x4A, 0x4D, 0x4C};
-const u8 gUnknown_083756FF[] = {0x42, 0x42, 0x43, 0x44, 0x45};
-const u8 gUnknown_08375704[] = {0x3A, 0x3A, 0x3B, 0x3C, 0x3D};
-const u8 gUnknown_08375709[] = {0x19, 0x19, 0x1A, 0x1B, 0x1C};
-const u8 gUnknown_0837570E[] = {0x1D, 0x1D, 0x1E, 0x1F, 0x20};
-const u8 gUnknown_08375713[] = {0x21, 0x21, 0x22, 0x23, 0x24};
-const u8 gUnknown_08375718[] = {0x25, 0x25, 0x26, 0x27, 0x28};
-const u8 gUnknown_0837571D[] = {0x62, 0x62, 0x63, 0x64, 0x65};
-const u8 gUnknown_08375722[] = {0x66, 0x66, 0x67, 0x68, 0x69};
-const u8 gUnknown_08375727[] = {0x6A, 0x6A, 0x6B, 0x6C, 0x6D};
-const u8 gUnknown_0837572C[] = {0x6E, 0x6E, 0x6F, 0x70, 0x71};
-const u8 gUnknown_08375731[] = {0x72, 0x72, 0x73, 0x74, 0x75};
-const u8 gUnknown_08375736[] = {0x76, 0x76, 0x77, 0x78, 0x79};
-const u8 gUnknown_0837573B[] = {0x7A, 0x7A, 0x7B, 0x7C, 0x7D};
-const u8 gUnknown_08375740[] = {0x7E, 0x7E, 0x7F, 0x80, 0x81};
-const u8 gUnknown_08375745[] = {0x82, 0x82, 0x83, 0x84, 0x85};
-const u8 gUnknown_0837574A[] = {0x86, 0x86, 0x87, 0x88, 0x89};
-
-const u8 gUnknown_0837574F[] = {2, 1, 4, 3, 8, 7, 6, 5};
+const u8 gFaceDirectionMovementActions[] = {
+ MOVEMENT_ACTION_FACE_DOWN,
+ MOVEMENT_ACTION_FACE_DOWN,
+ MOVEMENT_ACTION_FACE_UP,
+ MOVEMENT_ACTION_FACE_LEFT,
+ MOVEMENT_ACTION_FACE_RIGHT,
+};
+const u8 gWalkSlowMovementActions[] = {
+ MOVEMENT_ACTION_WALK_SLOW_DOWN,
+ MOVEMENT_ACTION_WALK_SLOW_DOWN,
+ MOVEMENT_ACTION_WALK_SLOW_UP,
+ MOVEMENT_ACTION_WALK_SLOW_LEFT,
+ MOVEMENT_ACTION_WALK_SLOW_RIGHT,
+};
+const u8 gWalkNormalMovementActions[] = {
+ MOVEMENT_ACTION_WALK_NORMAL_DOWN,
+ MOVEMENT_ACTION_WALK_NORMAL_DOWN,
+ MOVEMENT_ACTION_WALK_NORMAL_UP,
+ MOVEMENT_ACTION_WALK_NORMAL_LEFT,
+ MOVEMENT_ACTION_WALK_NORMAL_RIGHT,
+};
+const u8 gWalkFastMovementActions[] = {
+ MOVEMENT_ACTION_WALK_FAST_DOWN,
+ MOVEMENT_ACTION_WALK_FAST_DOWN,
+ MOVEMENT_ACTION_WALK_FAST_UP,
+ MOVEMENT_ACTION_WALK_FAST_LEFT,
+ MOVEMENT_ACTION_WALK_FAST_RIGHT,
+};
+const u8 gRideWaterCurrentMovementActions[] = {
+ MOVEMENT_ACTION_RIDE_WATER_CURRENT_DOWN,
+ MOVEMENT_ACTION_RIDE_WATER_CURRENT_DOWN,
+ MOVEMENT_ACTION_RIDE_WATER_CURRENT_UP,
+ MOVEMENT_ACTION_RIDE_WATER_CURRENT_LEFT,
+ MOVEMENT_ACTION_RIDE_WATER_CURRENT_RIGHT,
+};
+const u8 gWalkFastestMovementActions[] = {
+ MOVEMENT_ACTION_WALK_FASTEST_DOWN,
+ MOVEMENT_ACTION_WALK_FASTEST_DOWN,
+ MOVEMENT_ACTION_WALK_FASTEST_UP,
+ MOVEMENT_ACTION_WALK_FASTEST_LEFT,
+ MOVEMENT_ACTION_WALK_FASTEST_RIGHT,
+};
+const u8 gSlideMovementActions[] = {
+ MOVEMENT_ACTION_SLIDE_DOWN,
+ MOVEMENT_ACTION_SLIDE_DOWN,
+ MOVEMENT_ACTION_SLIDE_UP,
+ MOVEMENT_ACTION_SLIDE_LEFT,
+ MOVEMENT_ACTION_SLIDE_RIGHT,
+};
+const u8 gPlayerRunMovementActions[] = {
+ MOVEMENT_ACTION_PLAYER_RUN_DOWN,
+ MOVEMENT_ACTION_PLAYER_RUN_DOWN,
+ MOVEMENT_ACTION_PLAYER_RUN_UP,
+ MOVEMENT_ACTION_PLAYER_RUN_LEFT,
+ MOVEMENT_ACTION_PLAYER_RUN_RIGHT,
+};
+const u8 gJump2MovementActions[] = {
+ MOVEMENT_ACTION_JUMP_2_DOWN,
+ MOVEMENT_ACTION_JUMP_2_DOWN,
+ MOVEMENT_ACTION_JUMP_2_UP,
+ MOVEMENT_ACTION_JUMP_2_LEFT,
+ MOVEMENT_ACTION_JUMP_2_RIGHT,
+};
+const u8 gJumpInPlaceMovementActions[] = {
+ MOVEMENT_ACTION_JUMP_IN_PLACE_DOWN,
+ MOVEMENT_ACTION_JUMP_IN_PLACE_DOWN,
+ MOVEMENT_ACTION_JUMP_IN_PLACE_UP,
+ MOVEMENT_ACTION_JUMP_IN_PLACE_LEFT,
+ MOVEMENT_ACTION_JUMP_IN_PLACE_RIGHT,
+};
+const u8 gJumpInPlaceTurnAroundMovementActions[] = {
+ MOVEMENT_ACTION_JUMP_IN_PLACE_UP_DOWN,
+ MOVEMENT_ACTION_JUMP_IN_PLACE_UP_DOWN,
+ MOVEMENT_ACTION_JUMP_IN_PLACE_DOWN_UP,
+ MOVEMENT_ACTION_JUMP_IN_PLACE_RIGHT_LEFT,
+ MOVEMENT_ACTION_JUMP_IN_PLACE_LEFT_RIGHT,
+};
+const u8 gJumpMovementActions[] = {
+ MOVEMENT_ACTION_JUMP_DOWN,
+ MOVEMENT_ACTION_JUMP_DOWN,
+ MOVEMENT_ACTION_JUMP_UP,
+ MOVEMENT_ACTION_JUMP_LEFT,
+ MOVEMENT_ACTION_JUMP_RIGHT,
+};
+const u8 gJumpSpecialMovementActions[] = {
+ MOVEMENT_ACTION_JUMP_SPECIAL_DOWN,
+ MOVEMENT_ACTION_JUMP_SPECIAL_DOWN,
+ MOVEMENT_ACTION_JUMP_SPECIAL_UP,
+ MOVEMENT_ACTION_JUMP_SPECIAL_LEFT,
+ MOVEMENT_ACTION_JUMP_SPECIAL_RIGHT,
+};
+const u8 gWalkInPlaceSlowMovementActions[] = {
+ MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_DOWN,
+ MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_DOWN,
+ MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_UP,
+ MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_LEFT,
+ MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_RIGHT,
+};
+const u8 gWalkInPlaceNormalMovementActions[] = {
+ MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_DOWN,
+ MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_DOWN,
+ MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_UP,
+ MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_LEFT,
+ MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_RIGHT,
+};
+const u8 gWalkInPlaceFastMovementActions[] = {
+ MOVEMENT_ACTION_WALK_IN_PLACE_FAST_DOWN,
+ MOVEMENT_ACTION_WALK_IN_PLACE_FAST_DOWN,
+ MOVEMENT_ACTION_WALK_IN_PLACE_FAST_UP,
+ MOVEMENT_ACTION_WALK_IN_PLACE_FAST_LEFT,
+ MOVEMENT_ACTION_WALK_IN_PLACE_FAST_RIGHT,
+};
+const u8 gWalkInPlaceFastestMovementActions[] = {
+ MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_DOWN,
+ MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_DOWN,
+ MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_UP,
+ MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_LEFT,
+ MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_RIGHT,
+};
+const u8 gAcroWheelieFaceDirectionMovementActions[] = {
+ MOVEMENT_ACTION_ACRO_WHEELIE_FACE_DOWN,
+ MOVEMENT_ACTION_ACRO_WHEELIE_FACE_DOWN,
+ MOVEMENT_ACTION_ACRO_WHEELIE_FACE_UP,
+ MOVEMENT_ACTION_ACRO_WHEELIE_FACE_LEFT,
+ MOVEMENT_ACTION_ACRO_WHEELIE_FACE_RIGHT,
+};
+const u8 gAcroPopWheelieFaceDirectionMovementActions[] = {
+ MOVEMENT_ACTION_ACRO_POP_WHEELIE_DOWN,
+ MOVEMENT_ACTION_ACRO_POP_WHEELIE_DOWN,
+ MOVEMENT_ACTION_ACRO_POP_WHEELIE_UP,
+ MOVEMENT_ACTION_ACRO_POP_WHEELIE_LEFT,
+ MOVEMENT_ACTION_ACRO_POP_WHEELIE_RIGHT,
+};
+const u8 gAcroEndWheelieFaceDirectionMovementActions[] = {
+ MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_DOWN,
+ MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_DOWN,
+ MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_UP,
+ MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_LEFT,
+ MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_RIGHT,
+};
+const u8 gAcroWheelieHopFaceDirectionMovementActions[] = {
+ MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_DOWN,
+ MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_DOWN,
+ MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_UP,
+ MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_LEFT,
+ MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_RIGHT,
+};
+const u8 gAcroWheelieHopDirectionMovementActions[] = {
+ MOVEMENT_ACTION_ACRO_WHEELIE_HOP_DOWN,
+ MOVEMENT_ACTION_ACRO_WHEELIE_HOP_DOWN,
+ MOVEMENT_ACTION_ACRO_WHEELIE_HOP_UP,
+ MOVEMENT_ACTION_ACRO_WHEELIE_HOP_LEFT,
+ MOVEMENT_ACTION_ACRO_WHEELIE_HOP_RIGHT,
+};
+const u8 gAcroWheelieJumpDirectionMovementActions[] = {
+ MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_DOWN,
+ MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_DOWN,
+ MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_UP,
+ MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_LEFT,
+ MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_RIGHT,
+};
+const u8 gAcroWheelieInPlaceDirectionMovementActions[] = {
+ MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_DOWN,
+ MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_DOWN,
+ MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_UP,
+ MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_LEFT,
+ MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_RIGHT,
+};
+const u8 gAcroPopWheelieMoveDirectionMovementActions[] = {
+ MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_DOWN,
+ MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_DOWN,
+ MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_UP,
+ MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_LEFT,
+ MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_RIGHT,
+};
+const u8 gAcroWheelieMoveDirectionMovementActions[] = {
+ MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_DOWN,
+ MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_DOWN,
+ MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_UP,
+ MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_LEFT,
+ MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_RIGHT,
+};
+const u8 gAcroEndWheelieMoveDirectionMovementActions[] = {
+ MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_DOWN,
+ MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_DOWN,
+ MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_UP,
+ MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_LEFT,
+ MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_RIGHT,
+};
+
+const u8 gOppositeDirections[] = {
+ DIR_NORTH,
+ DIR_SOUTH,
+ DIR_EAST,
+ DIR_WEST,
+ DIR_NORTHEAST,
+ DIR_NORTHWEST,
+ DIR_SOUTHEAST,
+ DIR_SOUTHWEST
+};
const u8 gUnknown_08375757[][4] = {
{2, 1, 4, 3},
@@ -1886,354 +958,287 @@ const u8 gUnknown_08375767[][4] = {
{3, 4, 2, 1}
};
-#include "data/field_map_obj/anim_func_ptrs.h"
+#include "data/field_event_obj/movement_action_func_tables.h"
-// text
+// There is code supporing multiple sets of player reflection palettes, but
+// the data for each is identical. Perhaps non-water/ice reflections were planned.
+static u8 sCurrentReflectionType;
-extern void strange_npc_table_clear(void);
-extern void ClearPlayerAvatarInfo(void);
-extern void npc_load_two_palettes__no_record(u16, u8);
-extern void npc_load_two_palettes__and_record(u16, u8);
-extern void sub_8060388(s16, s16, s16 *, s16 *);
-void sub_80634D0(struct MapObject *, struct Sprite *);
-extern void pal_patch_for_npc(u16, u16);
-extern void CameraObjectReset1(void);
+static u16 sCurrentSpecialObjectPaletteTag;
-extern struct LinkPlayerMapObject gLinkPlayerMapObjects[];
+extern struct LinkPlayerEventObject gLinkPlayerEventObjects[];
extern u8 gReservedSpritePaletteCount;
extern struct Camera gCamera;
-
-static u8 gUnknown_030005A4;
-static u16 gUnknown_030005A6;
-
-struct MapObject gMapObjects[16];
+extern struct EventObject gEventObjects[16];
#if DEBUG
u8 gUnknown_Debug_03004BC0;
#endif
-void npc_clear_ids_and_state(struct MapObject *mapObj)
+static void ClearEventObject(struct EventObject *eventObj)
{
- memset(mapObj, 0, sizeof(struct MapObject));
- mapObj->localId = 0xFF;
- mapObj->mapNum = 0xFF;
- mapObj->mapGroup = 0xFF;
- mapObj->mapobj_unk_1C = 0xFF;
+ memset(eventObj, 0, sizeof(struct EventObject));
+ eventObj->localId = 0xFF;
+ eventObj->mapNum = 0xFF;
+ eventObj->mapGroup = 0xFF;
+ eventObj->movementActionId = 0xFF;
}
-void npcs_clear_ids_and_state(void)
+static void ClearAllEventObjects(void)
{
u8 i;
for (i = 0; i < 16; i++)
- npc_clear_ids_and_state(&gMapObjects[i]);
+ ClearEventObject(&gEventObjects[i]);
#if DEBUG
- gUnknown_Debug_03004BC0 = 0;
+ gUnknown_Debug_03004BC0 = 0;
#endif
}
-void sub_805AA98(void)
+void ResetEventObjects(void)
{
- strange_npc_table_clear();
- npcs_clear_ids_and_state();
+ ClearLinkPlayerEventObjects();
+ ClearAllEventObjects();
ClearPlayerAvatarInfo();
- sub_805AAB0();
+ CreateReflectionEffectSprites();
}
-void sub_805AAB0(void)
+static void CreateReflectionEffectSprites(void)
{
- u8 spriteId;
-
- spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[21], 0, 0, 0x1F);
-
+ // The reflection effect when an event object is standing over water or ice
+ // is driven by these two invisible sprites' callback functions. The callback
+ // continuously updates OAM rot/scale matrices using affine animations that scale
+ // the sprite up and down horizontally. The second one is needed to handle the inverted
+ // effect when the object is facing to the east. (The sprite has h-flip enabled).
+ u8 spriteId = spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[21], 0, 0, 0x1F);
gSprites[spriteId].oam.affineMode = 1;
InitSpriteAffineAnim(&gSprites[spriteId]);
StartSpriteAffineAnim(&gSprites[spriteId], 0);
gSprites[spriteId].invisible = 1;
spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[21], 0, 0, 0x1F);
-
gSprites[spriteId].oam.affineMode = 1;
InitSpriteAffineAnim(&gSprites[spriteId]);
StartSpriteAffineAnim(&gSprites[spriteId], 1);
gSprites[spriteId].invisible = 1;
}
-u8 sub_805AB54(void)
+u8 GetFirstInactiveEventObjectId(void)
{
u8 i;
-
for (i = 0; i < 16; i++)
{
- if (!gMapObjects[i].active)
+ if (!gEventObjects[i].active)
break;
}
+
return i;
}
-u8 GetFieldObjectIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup)
+u8 GetEventObjectIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup)
{
if (localId < 255)
- return GetFieldObjectIdByLocalIdAndMapInternal(localId, mapNum, mapGroup);
+ return GetEventObjectIdByLocalIdAndMapInternal(localId, mapNum, mapGroup);
else
- return GetFieldObjectIdByLocalId(localId);
+ return GetEventObjectIdByLocalId(localId);
}
-bool8 TryGetFieldObjectIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup, u8 *mapObjectId)
+bool8 TryGetEventObjectIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup, u8 *eventObjectId)
{
- *mapObjectId = GetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup);
- if (*mapObjectId == 16)
+ *eventObjectId = GetEventObjectIdByLocalIdAndMap(localId, mapNum, mapGroup);
+ if (*eventObjectId == 16)
return TRUE;
else
return FALSE;
}
-u8 GetFieldObjectIdByXY(s16 x, s16 y)
+u8 GetEventObjectIdByXY(s16 x, s16 y)
{
u8 i;
-
for (i = 0; i < 16; i++)
{
- if (gMapObjects[i].active && gMapObjects[i].coords2.x == x && gMapObjects[i].coords2.y == y)
+ if (gEventObjects[i].active && gEventObjects[i].currentCoords.x == x && gEventObjects[i].currentCoords.y == y)
break;
}
+
return i;
}
-u8 GetFieldObjectIdByLocalIdAndMapInternal(u8 localId, u8 mapNum, u8 mapGroup)
+u8 GetEventObjectIdByLocalIdAndMapInternal(u8 localId, u8 mapNum, u8 mapGroup)
{
u8 i;
-
for (i = 0; i < 16; i++)
{
- if (gMapObjects[i].active && gMapObjects[i].localId == localId && gMapObjects[i].mapNum == mapNum && gMapObjects[i].mapGroup == mapGroup)
+ if (gEventObjects[i].active && gEventObjects[i].localId == localId && gEventObjects[i].mapNum == mapNum && gEventObjects[i].mapGroup == mapGroup)
return i;
}
+
return 16;
}
-u8 GetFieldObjectIdByLocalId(u8 localId)
+u8 GetEventObjectIdByLocalId(u8 localId)
{
u8 i;
-
for (i = 0; i < 16; i++)
{
- if (gMapObjects[i].active && gMapObjects[i].localId == localId)
+ if (gEventObjects[i].active && gEventObjects[i].localId == localId)
return i;
}
+
return 16;
}
-// The bitfield at 0x18 needs to be u16 for this function to match
-struct MapObjectAlt
-{
- /*0x00*/ u32 active:1;
- u32 mapobj_bit_1:1;
- u32 mapobj_bit_2:1;
- u32 mapobj_bit_3:1;
- u32 mapobj_bit_4:1;
- u32 mapobj_bit_5:1;
- u32 mapobj_bit_6:1;
- u32 mapobj_bit_7:1;
- /*0x01*/ u32 mapobj_bit_8:1;
- u32 mapobj_bit_9:1;
- u32 mapobj_bit_10:1;
- u32 mapobj_bit_11:1;
- u32 mapobj_bit_12:1;
- u32 mapobj_bit_13:1;
- u32 mapobj_bit_14:1;
- u32 mapobj_bit_15:1;
- /*0x02*/ u32 mapobj_bit_16:1;
- u32 mapobj_bit_17:1;
- u32 mapobj_bit_18:1;
- u32 mapobj_bit_19:1;
- u32 mapobj_bit_20:1;
- u32 mapobj_bit_21:1;
- u32 mapobj_bit_22:1;
- u32 mapobj_bit_23:1;
- /*0x03*/ u32 mapobj_bit_24:1;
- u32 mapobj_bit_25:1;
- u32 mapobj_bit_26:1;
- u32 mapobj_bit_27:1;
- u32 mapobj_bit_28:1;
- u32 mapobj_bit_29:1;
- u32 mapobj_bit_30:1;
- u32 mapobj_bit_31:1;
- /*0x04*/ u8 spriteId;
- /*0x05*/ u8 graphicsId;
- /*0x06*/ u8 animPattern;
- /*0x07*/ u8 trainerType;
- /*0x08*/ u8 localId;
- /*0x09*/ u8 mapNum;
- /*0x0A*/ u8 mapGroup;
- /*0x0B*/ u8 mapobj_unk_0B_0:4;
- u8 elevation:4;
- /*0x0C*/ struct Coords16 coords1;
- /*0x10*/ struct Coords16 coords2;
- /*0x14*/ struct Coords16 coords3;
- /*0x18*/ u16 mapobj_unk_18:4; //current direction?
- /*0x18*/ u16 placeholder18:4;
- /*0x19*/ u16 rangeX:4;
- /*0x19*/ u16 rangeY:4;
- /*0x1A*/ u8 mapobj_unk_1A;
- /*0x1B*/ u8 mapobj_unk_1B;
- /*0x1C*/ u8 mapobj_unk_1C;
- /*0x1D*/ u8 trainerRange_berryTreeId;
- /*0x1E*/ u8 mapobj_unk_1E;
- /*0x1F*/ u8 mapobj_unk_1F;
- /*0x20*/ u8 mapobj_unk_20;
- /*0x21*/ u8 mapobj_unk_21;
- /*0x22*/ u8 animId;
- /*size = 0x24*/
-};
-
-u8 InitFieldObjectStateFromTemplate(struct MapObjectTemplate *template, u8 b, u8 c)
+u8 TryInitEventObjectStateFromTemplate(struct EventObjectTemplate *template, u8 mapNum, u8 mapGroup)
{
- struct MapObjectAlt *mapObj; //TODO: resolve the mapobj_unk_19b weirdness
- u8 var;
- s16 r3;
- s16 r2;
+ struct EventObject *eventObj;
+ u8 eventObjectId;
+ s16 initialX;
+ s16 initialY;
- if (GetAvailableFieldObjectSlot(template->localId, b, c, &var) != 0)
+ if (GetAvailableEventObjectId(template->localId, mapNum, mapGroup, &eventObjectId) != 0)
return 16;
- mapObj = (void *)&gMapObjects[var];
- npc_clear_ids_and_state((struct MapObject *)mapObj);
- r3 = template->x + 7;
- r2 = template->y + 7;
- mapObj->active = TRUE;
- mapObj->mapobj_bit_2 = TRUE;
- mapObj->graphicsId = template->graphicsId;
- mapObj->animPattern = template->movementType;
- mapObj->localId = template->localId;
- mapObj->mapNum = b;
- asm("":::"r6");
- mapObj->mapGroup = c;
- mapObj->coords1.x = r3;
- mapObj->coords1.y = r2;
- mapObj->coords2.x = r3;
- mapObj->coords2.y = r2;
- mapObj->coords3.x = r3;
- mapObj->coords3.y = r2;
- mapObj->mapobj_unk_0B_0 = template->elevation;
- mapObj->elevation = template->elevation;
- mapObj->rangeX = template->unkA_0;
- mapObj->rangeY = template->unkA_4;
- mapObj->trainerType = template->unkC;
- mapObj->trainerRange_berryTreeId = template->unkE;
- mapObj->mapobj_unk_20 = gUnknown_0836DC09[template->movementType];
- FieldObjectSetDirection((struct MapObject *)mapObj, mapObj->mapobj_unk_20);
+
+ eventObj = (void *)&gEventObjects[eventObjectId];
+ ClearEventObject((struct EventObject *)eventObj);
+ initialX = template->x + 7;
+ initialY = template->y + 7;
+ eventObj->active = TRUE;
+ eventObj->triggerGroundEffectsOnMove = TRUE;
+ eventObj->graphicsId = template->graphicsId;
+ eventObj->movementType = template->movementType;
+ eventObj->localId = template->localId;
+ eventObj->mapNum = mapNum;
+ asm("":::"r6");
+ eventObj->mapGroup = mapGroup;
+ eventObj->initialCoords.x = initialX;
+ eventObj->initialCoords.y = initialY;
+ eventObj->currentCoords.x = initialX;
+ eventObj->currentCoords.y = initialY;
+ eventObj->previousCoords.x = initialX;
+ eventObj->previousCoords.y = initialY;
+ eventObj->currentElevation = template->elevation;
+ eventObj->previousElevation = template->elevation;
+ eventObj->range.as_nybbles.x = template->movementRangeX;
+ eventObj->range.as_nybbles.y = template->movementRangeY;
+ eventObj->trainerType = template->trainerType;
+ eventObj->trainerRange_berryTreeId = template->trainerRange_berryTreeId;
+ eventObj->previousMovementDirection = gInitialMovementTypeFacingDirections[template->movementType];
+ SetEventObjectDirection((struct EventObject *)eventObj, eventObj->previousMovementDirection);
asm("":::"r5","r6");
- FieldObjectHandleDynamicGraphicsId((struct MapObject *)mapObj);
- if (gUnknown_0836DBBC[mapObj->animPattern] != 0)
+ SetEventObjectDynamicGraphicsId((struct EventObject *)eventObj);
+
+ if (gRangedMovementTypes[eventObj->movementType])
{
- if (mapObj->rangeX == 0)
- mapObj->rangeX++;
- if (mapObj->rangeY == 0)
- mapObj->rangeY++;
+ // Ensure a ranged movement type has at least 1 tile of room to move.
+ if (eventObj->range.as_nybbles.x == 0)
+ eventObj->range.as_nybbles.x++;
+ if (eventObj->range.as_nybbles.y == 0)
+ eventObj->range.as_nybbles.y++;
}
+
#if DEBUG
- gUnknown_Debug_03004BC0++;
+ gUnknown_Debug_03004BC0++;
#endif
- return var;
+ return eventObjectId;
}
-u8 sub_805ADDC(u8 localId)
+u8 TryInitLocalEventObject(u8 localId)
{
- u8 objectCount;
+ u8 eventObjectCount;
u8 i;
if (gMapHeader.events == NULL)
return 16;
- objectCount = gMapHeader.events->mapObjectCount;
- for (i = 0; i < objectCount; i++)
- {
- struct MapObjectTemplate *template = &gSaveBlock1.mapObjectTemplates[i];
+ eventObjectCount = gMapHeader.events->eventObjectCount;
+ for (i = 0; i < eventObjectCount; i++)
+ {
+ struct EventObjectTemplate *template = &gSaveBlock1.eventObjectTemplates[i];
if (template->localId == localId && !FlagGet(template->flagId))
- return InitFieldObjectStateFromTemplate(template, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup);
+ return TryInitEventObjectStateFromTemplate(template, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup);
}
+
return 16;
}
-u8 GetAvailableFieldObjectSlot(u16 a, u8 b, u8 c, u8 *d)
+u8 GetAvailableEventObjectId(u16 localId, u8 mapNum, u8 mapGroup, u8 *eventObjectId)
{
u8 i = 0;
- for (i = 0; i < 16 && gMapObjects[i].active; i++)
+ for (i = 0; i < 16 && gEventObjects[i].active; i++)
{
- if (gMapObjects[i].localId == a && gMapObjects[i].mapNum == b && gMapObjects[i].mapGroup == c)
+ if (gEventObjects[i].localId == localId && gEventObjects[i].mapNum == mapNum && gEventObjects[i].mapGroup == mapGroup)
return 1;
}
if (i >= 16)
return 1;
- *d = i;
+ *eventObjectId = i;
for (; i < 16; i++)
{
- if (gMapObjects[i].active && gMapObjects[i].localId == a && gMapObjects[i].mapNum == b && gMapObjects[i].mapGroup == c)
+ if (gEventObjects[i].active && gEventObjects[i].localId == localId && gEventObjects[i].mapNum == mapNum && gEventObjects[i].mapGroup == mapGroup)
return 1;
}
return 0;
}
-void RemoveFieldObject(struct MapObject *mapObject)
+void RemoveEventObject(struct EventObject *eventObject)
{
- mapObject->active = FALSE;
- RemoveFieldObjectInternal(mapObject);
+ eventObject->active = FALSE;
+ RemoveEventObjectInternal(eventObject);
#if DEBUG
- gUnknown_Debug_03004BC0--;
+ gUnknown_Debug_03004BC0--;
#endif
}
-void RemoveFieldObjectByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup)
+void RemoveEventObjectByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup)
{
- u8 mapObjectId;
-
- if (TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId))
- return;
- FlagSet(GetFieldObjectFlagIdByFieldObjectId(mapObjectId));
- RemoveFieldObject(&gMapObjects[mapObjectId]);
+ u8 eventObjectId;
+ if (!TryGetEventObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &eventObjectId))
+ {
+ FlagSet(GetEventObjectFlagIdByEventObjectId(eventObjectId));
+ RemoveEventObject(&gEventObjects[eventObjectId]);
+ }
}
-void RemoveFieldObjectInternal(struct MapObject *mapObject)
+void RemoveEventObjectInternal(struct EventObject *eventObject)
{
struct SpriteFrameImage image;
- const struct MapObjectGraphicsInfo *gfxInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId);
-
- image.size = gfxInfo->size;
- gSprites[mapObject->spriteId].images = &image;
- DestroySprite(&gSprites[mapObject->spriteId]);
+ image.size = GetEventObjectGraphicsInfo(eventObject->graphicsId)->size;
+ gSprites[eventObject->spriteId].images = &image;
+ DestroySprite(&gSprites[eventObject->spriteId]);
}
-void npc_hide_all_but_player(void)
+void RemoveAllEventObjectsExceptPlayer(void)
{
u8 i;
for (i = 0; i < 16; i++)
{
- if (i != gPlayerAvatar.mapObjectId)
- RemoveFieldObject(&gMapObjects[i]);
+ if (i != gPlayerAvatar.eventObjectId)
+ RemoveEventObject(&gEventObjects[i]);
}
}
-u8 sub_805AFCC(struct MapObjectTemplate *mapObjTemplate, struct SpriteTemplate *sprTemplate, u8 c, u8 d, s16 e, s16 f)
+static u8 TrySetupEventObjectSprite(struct EventObjectTemplate *eventObjTemplate, struct SpriteTemplate *sprTemplate, u8 mapNum, u8 mapGroup, s16 cameraDeltaX, s16 cameraDeltaY)
{
- u8 mapObjectId;
+ u8 eventObjectId;
u8 spriteId;
- const struct MapObjectGraphicsInfo *gfxInfo;
- struct MapObject *mapObject;
+ const struct EventObjectGraphicsInfo *gfxInfo;
+ struct EventObject *eventObject;
struct Sprite *sprite;
- mapObjectId = InitFieldObjectStateFromTemplate(mapObjTemplate, c, d);
- if (mapObjectId == 16)
+ eventObjectId = TryInitEventObjectStateFromTemplate(eventObjTemplate, mapNum, mapGroup);
+ if (eventObjectId == 16)
return 16;
- mapObject = &gMapObjects[mapObjectId];
- gfxInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId);
+ eventObject = &gEventObjects[eventObjectId];
+ gfxInfo = GetEventObjectGraphicsInfo(eventObject->graphicsId);
if (gfxInfo->paletteSlot == 0)
- npc_load_two_palettes__no_record(gfxInfo->paletteTag1, gfxInfo->paletteSlot);
+ LoadPlayerObjectReflectionPalette(gfxInfo->paletteTag, gfxInfo->paletteSlot);
else if (gfxInfo->paletteSlot == 10)
- npc_load_two_palettes__and_record(gfxInfo->paletteTag1, gfxInfo->paletteSlot);
- if (mapObject->animPattern == 0x4C)
- mapObject->mapobj_bit_13 = TRUE;
+ LoadSpecialObjectReflectionPalette(gfxInfo->paletteTag, gfxInfo->paletteSlot);
+
+ if (eventObject->movementType == MOVEMENT_TYPE_INVISIBLE)
+ eventObject->invisible = TRUE;
#ifdef NONMATCHING
sprTemplate->paletteTag = 0xFFFF;
@@ -2241,101 +1246,101 @@ u8 sub_805AFCC(struct MapObjectTemplate *mapObjTemplate, struct SpriteTemplate *
*(u16 *)&sprTemplate->paletteTag = 0xFFFF;
#endif
spriteId = CreateSprite(sprTemplate, 0, 0, 0);
- if (spriteId == 64)
+ if (spriteId == MAX_SPRITES)
{
#if DEBUG
gUnknown_Debug_03004BC0--;
#endif
- gMapObjects[mapObjectId].active = FALSE;
+ gEventObjects[eventObjectId].active = FALSE;
return 16;
}
sprite = &gSprites[spriteId];
- sub_8060388(e + mapObject->coords2.x, f + mapObject->coords2.y, &sprite->pos1.x, &sprite->pos1.y);
+ sub_8060388(cameraDeltaX + eventObject->currentCoords.x, cameraDeltaY + eventObject->currentCoords.y, &sprite->pos1.x, &sprite->pos1.y);
sprite->centerToCornerVecX = -(gfxInfo->width >> 1);
sprite->centerToCornerVecY = -(gfxInfo->height >> 1);
sprite->pos1.x += 8;
sprite->pos1.y += 16 + sprite->centerToCornerVecY;
sprite->oam.paletteNum = gfxInfo->paletteSlot;
sprite->coordOffsetEnabled = TRUE;
- sprite->data[0] = mapObjectId;
- mapObject->spriteId = spriteId;
- mapObject->mapobj_bit_12 = gfxInfo->inanimate;
- if (!mapObject->mapobj_bit_12)
- StartSpriteAnim(sprite, FieldObjectDirectionToImageAnimId(mapObject->mapobj_unk_18));
- SetObjectSubpriorityByZCoord(mapObject->elevation, sprite, 1);
- sub_80634D0(mapObject, sprite);
- return mapObjectId;
+ sprite->data[0] = eventObjectId;
+ eventObject->spriteId = spriteId;
+ eventObject->inanimate = gfxInfo->inanimate;
+ if (!eventObject->inanimate)
+ StartSpriteAnim(sprite, GetFaceDirectionAnimNum(eventObject->facingDirection));
+ SetObjectSubpriorityByZCoord(eventObject->previousElevation, sprite, 1);
+ UpdateEventObjectVisibility(eventObject, sprite);
+ return eventObjectId;
}
-u8 SpawnFieldObject(struct MapObjectTemplate *mapObjTemplate, u8 b, u8 c, s16 d, s16 e)
+u8 TrySpawnEventObject(struct EventObjectTemplate *eventObjTemplate, u8 mapNum, u8 mapGroup, s16 cameraDeltaX, s16 cameraDeltaY)
{
struct SpriteTemplate spriteTemplate;
const struct SubspriteTable *subspriteTables = NULL;
struct SpriteFrameImage spriteFrameImage;
- const struct MapObjectGraphicsInfo *gfxInfo;
- u8 mapObjectId;
+ const struct EventObjectGraphicsInfo *gfxInfo;
+ u8 eventObjectId;
- gfxInfo = GetFieldObjectGraphicsInfo(mapObjTemplate->graphicsId);
- MakeObjectTemplateFromFieldObjectTemplate(mapObjTemplate, &spriteTemplate, &subspriteTables);
+ gfxInfo = GetEventObjectGraphicsInfo(eventObjTemplate->graphicsId);
+ MakeObjectTemplateFromEventObjectTemplate(eventObjTemplate, &spriteTemplate, &subspriteTables);
spriteFrameImage.size = gfxInfo->size;
spriteTemplate.images = &spriteFrameImage;
- mapObjectId = sub_805AFCC(mapObjTemplate, &spriteTemplate, b, c, d, e);
- if (mapObjectId == 16)
+ eventObjectId = TrySetupEventObjectSprite(eventObjTemplate, &spriteTemplate, mapNum, mapGroup, cameraDeltaX, cameraDeltaY);
+ if (eventObjectId == 16)
return 16;
- gSprites[gMapObjects[mapObjectId].spriteId].images = gfxInfo->images;
+ gSprites[gEventObjects[eventObjectId].spriteId].images = gfxInfo->images;
if (subspriteTables != NULL)
- SetSubspriteTables(&gSprites[gMapObjects[mapObjectId].spriteId], subspriteTables);
- return mapObjectId;
+ SetSubspriteTables(&gSprites[gEventObjects[eventObjectId].spriteId], subspriteTables);
+ return eventObjectId;
}
-u8 SpawnSpecialFieldObject(struct MapObjectTemplate *mapObjTemplate)
+u8 SpawnSpecialEventObject(struct EventObjectTemplate *eventObjTemplate)
{
s16 x;
s16 y;
- GetFieldObjectMovingCameraOffset(&x, &y);
- return SpawnFieldObject(mapObjTemplate, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, x, y);
+ GetEventObjectMovingCameraOffset(&x, &y);
+ return TrySpawnEventObject(eventObjTemplate, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, x, y);
}
-u8 SpawnSpecialFieldObjectParametrized(u8 a, u8 b, u8 c, s16 d, s16 e, u8 f)
+u8 SpawnSpecialEventObjectParametrized(u8 graphicsId, u8 movementType, u8 localId, s16 x, s16 y, u8 elevation)
{
- struct MapObjectTemplate mapObjTemplate;
+ struct EventObjectTemplate eventObjTemplate;
- d -= 7;
- e -= 7;
- mapObjTemplate.localId = c;
- mapObjTemplate.graphicsId = a;
- mapObjTemplate.unk2 = 0;
- mapObjTemplate.x = d;
- mapObjTemplate.y = e;
- mapObjTemplate.elevation = f;
- mapObjTemplate.movementType = b;
- mapObjTemplate.unkA_0 = 0;
- mapObjTemplate.unkA_4 = 0;
- mapObjTemplate.unkC = 0;
- mapObjTemplate.unkE = 0;
- return SpawnSpecialFieldObject(&mapObjTemplate);
+ x -= 7;
+ y -= 7;
+ eventObjTemplate.localId = localId;
+ eventObjTemplate.graphicsId = graphicsId;
+ eventObjTemplate.unk2 = 0;
+ eventObjTemplate.x = x;
+ eventObjTemplate.y = y;
+ eventObjTemplate.elevation = elevation;
+ eventObjTemplate.movementType = movementType;
+ eventObjTemplate.movementRangeX = 0;
+ eventObjTemplate.movementRangeY = 0;
+ eventObjTemplate.trainerType = 0;
+ eventObjTemplate.trainerRange_berryTreeId = 0;
+ return SpawnSpecialEventObject(&eventObjTemplate);
}
u8 show_sprite(u8 a, u8 b, u8 c)
{
- struct MapObjectTemplate *r5;
+ struct EventObjectTemplate *r5;
s16 x;
s16 y;
- r5 = GetFieldObjectTemplateByLocalIdAndMap(a, b, c);
+ r5 = GetEventObjectTemplateByLocalIdAndMap(a, b, c);
if (r5 == NULL)
return 16;
- GetFieldObjectMovingCameraOffset(&x, &y);
- return SpawnFieldObject(r5, b, c, x, y);
+ GetEventObjectMovingCameraOffset(&x, &y);
+ return TrySpawnEventObject(r5, b, c, x, y);
}
-void MakeObjectTemplateFromFieldObjectGraphicsInfo(u16 graphicsId, void (*callback)(struct Sprite *), struct SpriteTemplate *sprTemplate, const struct SubspriteTable **subspriteTables)
+void MakeObjectTemplateFromEventObjectGraphicsInfo(u16 graphicsId, void (*callback)(struct Sprite *), struct SpriteTemplate *sprTemplate, const struct SubspriteTable **subspriteTables)
{
- const struct MapObjectGraphicsInfo *gfxInfo = GetFieldObjectGraphicsInfo(graphicsId);
+ const struct EventObjectGraphicsInfo *gfxInfo = GetEventObjectGraphicsInfo(graphicsId);
sprTemplate->tileTag = gfxInfo->tileTag;
- sprTemplate->paletteTag = gfxInfo->paletteTag1;
+ sprTemplate->paletteTag = gfxInfo->paletteTag;
sprTemplate->oam = gfxInfo->oam;
sprTemplate->anims = gfxInfo->anims;
sprTemplate->images = gfxInfo->images;
@@ -2344,23 +1349,23 @@ void MakeObjectTemplateFromFieldObjectGraphicsInfo(u16 graphicsId, void (*callba
*subspriteTables = gfxInfo->subspriteTables;
}
-void MakeObjectTemplateFromFieldObjectGraphicsInfoWithCallbackIndex(u16 graphicsId, u16 callbackIndex, struct SpriteTemplate *sprTemplate, const struct SubspriteTable **subspriteTables)
+void MakeObjectTemplateFromEventObjectGraphicsInfoWithCallbackIndex(u16 graphicsId, u16 movementType, struct SpriteTemplate *sprTemplate, const struct SubspriteTable **subspriteTables)
{
- MakeObjectTemplateFromFieldObjectGraphicsInfo(graphicsId, gUnknown_0836DA88[callbackIndex], sprTemplate, subspriteTables);
+ MakeObjectTemplateFromEventObjectGraphicsInfo(graphicsId, sMovementTypeCallbacks[movementType], sprTemplate, subspriteTables);
}
-void MakeObjectTemplateFromFieldObjectTemplate(struct MapObjectTemplate *mapObjTemplate, struct SpriteTemplate *sprTemplate, const struct SubspriteTable **subspriteTables)
+void MakeObjectTemplateFromEventObjectTemplate(struct EventObjectTemplate *eventObjTemplate, struct SpriteTemplate *sprTemplate, const struct SubspriteTable **subspriteTables)
{
- MakeObjectTemplateFromFieldObjectGraphicsInfoWithCallbackIndex(mapObjTemplate->graphicsId, mapObjTemplate->movementType, sprTemplate, subspriteTables);
+ MakeObjectTemplateFromEventObjectGraphicsInfoWithCallbackIndex(eventObjTemplate->graphicsId, eventObjTemplate->movementType, sprTemplate, subspriteTables);
}
-u8 AddPseudoFieldObject(u16 graphicsId, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority)
+u8 AddPseudoEventObject(u16 graphicsId, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority)
{
struct SpriteTemplate spriteTemplate;
const struct SubspriteTable *subspriteTables;
u8 spriteId;
- MakeObjectTemplateFromFieldObjectGraphicsInfo(graphicsId, callback, &spriteTemplate, &subspriteTables);
+ MakeObjectTemplateFromEventObjectGraphicsInfo(graphicsId, callback, &spriteTemplate, &subspriteTables);
if (spriteTemplate.paletteTag != 0xFFFF)
sub_805BDF8(spriteTemplate.paletteTag);
spriteId = CreateSprite(&spriteTemplate, x, y, subpriority);
@@ -2372,19 +1377,15 @@ u8 AddPseudoFieldObject(u16 graphicsId, void (*callback)(struct Sprite *), s16 x
return spriteId;
}
-extern void sub_8064970(struct Sprite *);
-extern void sub_8060470(s16 *, s16 *, s16, s16);
-void InitObjectPriorityByZCoord(struct Sprite *sprite, u8 z);
-
u8 sub_805B410(u8 graphicsId, u8 b, s16 x, s16 y, u8 elevation, u8 direction)
{
- const struct MapObjectGraphicsInfo *gfxInfo;
+ const struct EventObjectGraphicsInfo *gfxInfo;
struct SpriteTemplate spriteTemplate;
const struct SubspriteTable *subspriteTables;
u8 spriteId;
- gfxInfo = GetFieldObjectGraphicsInfo(graphicsId);
- MakeObjectTemplateFromFieldObjectGraphicsInfo(graphicsId, sub_8064970, &spriteTemplate, &subspriteTables);
+ gfxInfo = GetEventObjectGraphicsInfo(graphicsId);
+ MakeObjectTemplateFromEventObjectGraphicsInfo(graphicsId, UpdateEventObjectSpriteSubpriorityAndVisibility, &spriteTemplate, &subspriteTables);
#ifdef NONMATCHING
spriteTemplate.paletteTag = 0xFFFF;
#else
@@ -2406,7 +1407,7 @@ u8 sub_805B410(u8 graphicsId, u8 b, s16 x, s16 y, u8 elevation, u8 direction)
sprite->data[0] = b;
sprite->data[1] = elevation;
if (gfxInfo->paletteSlot == 10)
- npc_load_two_palettes__and_record(gfxInfo->paletteTag1, gfxInfo->paletteSlot);
+ LoadSpecialObjectReflectionPalette(gfxInfo->paletteTag, gfxInfo->paletteSlot);
if (subspriteTables != NULL)
{
SetSubspriteTables(sprite, subspriteTables);
@@ -2414,12 +1415,12 @@ u8 sub_805B410(u8 graphicsId, u8 b, s16 x, s16 y, u8 elevation, u8 direction)
}
InitObjectPriorityByZCoord(sprite, elevation);
SetObjectSubpriorityByZCoord(elevation, sprite, 1);
- StartSpriteAnim(sprite, FieldObjectDirectionToImageAnimId(direction));
+ StartSpriteAnim(sprite, GetFaceDirectionAnimNum(direction));
}
return spriteId;
}
-void sub_805B55C(s16 a, s16 b)
+void TrySpawnEventObjects(s16 cameraDeltaX, s16 cameraDeltaY)
{
u8 i;
@@ -2429,24 +1430,24 @@ void sub_805B55C(s16 a, s16 b)
s16 sp8 = gSaveBlock1.pos.x + 17;
s16 r10 = gSaveBlock1.pos.y;
s16 spC = gSaveBlock1.pos.y + 16;
- u8 objectCount = gMapHeader.events->mapObjectCount;
+ u8 objectCount = gMapHeader.events->eventObjectCount;
for (i = 0; i < objectCount; i++)
{
- struct MapObjectTemplate *template = &gSaveBlock1.mapObjectTemplates[i];
+ struct EventObjectTemplate *template = &gSaveBlock1.eventObjectTemplates[i];
s16 foo = template->x + 7;
s16 bar = template->y + 7;
if (r10 <= bar && spC >= bar && r9 <= foo && sp8 >= foo
&& !FlagGet(template->flagId))
- SpawnFieldObject(template, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, a, b);
+ TrySpawnEventObject(template, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, cameraDeltaX, cameraDeltaY);
}
}
}
-void RemoveFieldObjectIfOutsideView(struct MapObject *mapObject);
+void RemoveEventObjectIfOutsideView(struct EventObject *eventObject);
-void RemoveFieldObjectsOutsideView(void)
+void RemoveEventObjectsOutsideView(void)
{
u8 i;
u8 j;
@@ -2457,33 +1458,33 @@ void RemoveFieldObjectsOutsideView(void)
for (j = 0, isActiveLinkPlayer = 0; j < 4; j++)
{
- if (gLinkPlayerMapObjects[j].active && i == gLinkPlayerMapObjects[j].mapObjId)
+ if (gLinkPlayerEventObjects[j].active && i == gLinkPlayerEventObjects[j].eventObjId)
isActiveLinkPlayer = TRUE;
}
if (!isActiveLinkPlayer)
{
- struct MapObject *mapObject = &gMapObjects[i];
+ struct EventObject *eventObject = &gEventObjects[i];
- if (mapObject->active && !mapObject->mapobj_bit_16)
- RemoveFieldObjectIfOutsideView(mapObject);
+ if (eventObject->active && !eventObject->isPlayer)
+ RemoveEventObjectIfOutsideView(eventObject);
}
}
}
-void RemoveFieldObjectIfOutsideView(struct MapObject *mapObject)
+void RemoveEventObjectIfOutsideView(struct EventObject *eventObject)
{
s16 r7 = gSaveBlock1.pos.x - 2;
s16 r5 = gSaveBlock1.pos.x + 17;
s16 r4 = gSaveBlock1.pos.y;
s16 r6 = gSaveBlock1.pos.y + 16;
- if (mapObject->coords2.x >= r7 && mapObject->coords2.x <= r5
- && mapObject->coords2.y >= r4 && mapObject->coords2.y <= r6)
+ if (eventObject->currentCoords.x >= r7 && eventObject->currentCoords.x <= r5
+ && eventObject->currentCoords.y >= r4 && eventObject->currentCoords.y <= r6)
return;
- if (mapObject->coords1.x >= r7 && mapObject->coords1.x <= r5
- && mapObject->coords1.y >= r4 && mapObject->coords1.y <= r6)
+ if (eventObject->initialCoords.x >= r7 && eventObject->initialCoords.x <= r5
+ && eventObject->initialCoords.y >= r4 && eventObject->initialCoords.y <= r6)
return;
- RemoveFieldObject(mapObject);
+ RemoveEventObject(eventObject);
}
void sub_805B75C(u8, s16, s16);
@@ -2498,7 +1499,7 @@ void sub_805B710(u16 a, u16 b)
ClearPlayerAvatarInfo();
for (i = 0; i < 16; i++)
{
- if (gMapObjects[i].active)
+ if (gEventObjects[i].active)
{
sub_805B75C(i, a, b);
#if DEBUG
@@ -2506,259 +1507,259 @@ void sub_805B710(u16 a, u16 b)
#endif
}
}
- sub_805AAB0();
+ CreateReflectionEffectSprites();
}
-extern void SetPlayerAvatarFieldObjectIdAndObjectId(u8, u8);
-extern void sub_805B914(struct MapObject *);
+extern void SetPlayerAvatarEventObjectIdAndObjectId(u8, u8);
+extern void sub_805B914(struct EventObject *);
-void sub_805B75C(u8 a, s16 b, s16 c)
+void sub_805B75C(u8 eventObjectId, s16 b, s16 c)
{
struct SpriteTemplate sp0;
struct SpriteFrameImage sp18;
const struct SubspriteTable *subspriteTables;
- const struct MapObjectGraphicsInfo *gfxInfo;
- struct MapObject *mapObject;
+ const struct EventObjectGraphicsInfo *gfxInfo;
+ struct EventObject *eventObject;
u8 spriteId;
#define i spriteId
for (i = 0; i < 4; i++)
{
- if (gLinkPlayerMapObjects[i].active && a == gLinkPlayerMapObjects[i].mapObjId)
+ if (gLinkPlayerEventObjects[i].active && eventObjectId == gLinkPlayerEventObjects[i].eventObjId)
return;
}
#undef i
- mapObject = &gMapObjects[a];
+ eventObject = &gEventObjects[eventObjectId];
asm("":::"r5");
subspriteTables = NULL;
- gfxInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId);
+ gfxInfo = GetEventObjectGraphicsInfo(eventObject->graphicsId);
sp18.size = gfxInfo->size;
- MakeObjectTemplateFromFieldObjectGraphicsInfoWithCallbackIndex(mapObject->graphicsId, mapObject->animPattern, &sp0, &subspriteTables);
+ MakeObjectTemplateFromEventObjectGraphicsInfoWithCallbackIndex(eventObject->graphicsId, eventObject->movementType, &sp0, &subspriteTables);
sp0.images = &sp18;
*(u16 *)&sp0.paletteTag = 0xFFFF;
if (gfxInfo->paletteSlot == 0)
- npc_load_two_palettes__no_record(gfxInfo->paletteTag1, gfxInfo->paletteSlot);
+ LoadPlayerObjectReflectionPalette(gfxInfo->paletteTag, gfxInfo->paletteSlot);
if (gfxInfo->paletteSlot > 9)
- npc_load_two_palettes__and_record(gfxInfo->paletteTag1, gfxInfo->paletteSlot);
+ LoadSpecialObjectReflectionPalette(gfxInfo->paletteTag, gfxInfo->paletteSlot);
*(u16 *)&sp0.paletteTag = 0xFFFF;
spriteId = CreateSprite(&sp0, 0, 0, 0);
if (spriteId != 64)
{
struct Sprite *sprite = &gSprites[spriteId];
- sub_8060388(b + mapObject->coords2.x, c + mapObject->coords2.y, &sprite->pos1.x, &sprite->pos1.y);
+ sub_8060388(b + eventObject->currentCoords.x, c + eventObject->currentCoords.y, &sprite->pos1.x, &sprite->pos1.y);
sprite->centerToCornerVecX = -(gfxInfo->width >> 1);
sprite->centerToCornerVecY = -(gfxInfo->height >> 1);
sprite->pos1.x += 8;
sprite->pos1.y += 16 + sprite->centerToCornerVecY;
sprite->images = gfxInfo->images;
- if (mapObject->animPattern == 11)
+ if (eventObject->movementType == MOVEMENT_TYPE_PLAYER)
{
- SetPlayerAvatarFieldObjectIdAndObjectId(a, spriteId);
- mapObject->mapobj_unk_1B = sub_8126B54();
+ SetPlayerAvatarEventObjectIdAndObjectId(eventObjectId, spriteId);
+ eventObject->warpArrowSpriteId = CreateWarpArrowSprite();
}
if (subspriteTables != NULL)
SetSubspriteTables(sprite, subspriteTables);
sprite->oam.paletteNum = gfxInfo->paletteSlot;
sprite->coordOffsetEnabled = TRUE;
- sprite->data[0] = a;
- mapObject->spriteId = spriteId;
- if (!mapObject->mapobj_bit_12 && mapObject->animPattern != 11)
- StartSpriteAnim(sprite, FieldObjectDirectionToImageAnimId(mapObject->mapobj_unk_18));
- sub_805B914(mapObject);
- SetObjectSubpriorityByZCoord(mapObject->elevation, sprite, 1);
+ sprite->data[0] = eventObjectId;
+ eventObject->spriteId = spriteId;
+ if (!eventObject->inanimate && eventObject->movementType != MOVEMENT_TYPE_PLAYER)
+ StartSpriteAnim(sprite, GetFaceDirectionAnimNum(eventObject->facingDirection));
+ sub_805B914(eventObject);
+ SetObjectSubpriorityByZCoord(eventObject->previousElevation, sprite, 1);
}
}
-void sub_805B914(struct MapObject *mapObject)
+void sub_805B914(struct EventObject *eventObject)
{
- mapObject->mapobj_bit_1 = FALSE;
- mapObject->mapobj_bit_2 = TRUE;
- mapObject->mapobj_bit_22 = FALSE;
- mapObject->mapobj_bit_17 = FALSE;
- mapObject->mapobj_bit_18 = FALSE;
- mapObject->mapobj_bit_19 = FALSE;
- mapObject->mapobj_bit_20 = FALSE;
- mapObject->mapobj_bit_21 = FALSE;
- FieldObjectClearAnim(mapObject);
+ eventObject->singleMovementActive = FALSE;
+ eventObject->triggerGroundEffectsOnMove = TRUE;
+ eventObject->hasShadow = FALSE;
+ eventObject->hasReflection = FALSE;
+ eventObject->inShortGrass = FALSE;
+ eventObject->inShallowFlowingWater = FALSE;
+ eventObject->inSandPile = FALSE;
+ eventObject->inHotSprings = FALSE;
+ EventObjectClearHeldMovement(eventObject);
}
-void SetPlayerAvatarFieldObjectIdAndObjectId(u8 mapObjectId, u8 spriteId)
+void SetPlayerAvatarEventObjectIdAndObjectId(u8 eventObjectId, u8 spriteId)
{
- gPlayerAvatar.mapObjectId = mapObjectId;
+ gPlayerAvatar.eventObjectId = eventObjectId;
gPlayerAvatar.spriteId = spriteId;
- gPlayerAvatar.gender = GetPlayerAvatarGenderByGraphicsId(gMapObjects[mapObjectId].graphicsId);
- SetPlayerAvatarExtraStateTransition(gMapObjects[mapObjectId].graphicsId, 0x20);
+ gPlayerAvatar.gender = GetPlayerAvatarGenderByGraphicsId(gEventObjects[eventObjectId].graphicsId);
+ SetPlayerAvatarExtraStateTransition(gEventObjects[eventObjectId].graphicsId, 0x20);
}
-void sub_805B980(struct MapObject *mapObject, u8 graphicsId)
+void sub_805B980(struct EventObject *eventObject, u8 graphicsId)
{
- const struct MapObjectGraphicsInfo *gfxInfo;
+ const struct EventObjectGraphicsInfo *gfxInfo;
struct Sprite *sprite;
- gfxInfo = GetFieldObjectGraphicsInfo(graphicsId);
- sprite = &gSprites[mapObject->spriteId];
+ gfxInfo = GetEventObjectGraphicsInfo(graphicsId);
+ sprite = &gSprites[eventObject->spriteId];
if (gfxInfo->paletteSlot == 0)
- pal_patch_for_npc(gfxInfo->paletteTag1, gfxInfo->paletteSlot);
+ PatchObjectPalette(gfxInfo->paletteTag, gfxInfo->paletteSlot);
if (gfxInfo->paletteSlot == 10)
- npc_load_two_palettes__and_record(gfxInfo->paletteTag1, gfxInfo->paletteSlot);
+ LoadSpecialObjectReflectionPalette(gfxInfo->paletteTag, gfxInfo->paletteSlot);
sprite->oam.shape = gfxInfo->oam->shape;
sprite->oam.size = gfxInfo->oam->size;
sprite->images = gfxInfo->images;
sprite->anims = gfxInfo->anims;
sprite->subspriteTables = gfxInfo->subspriteTables;
sprite->oam.paletteNum = gfxInfo->paletteSlot;
- mapObject->mapobj_bit_12 = gfxInfo->inanimate;
- mapObject->graphicsId = graphicsId;
- sub_80603CC(mapObject->coords2.x, mapObject->coords2.y, &sprite->pos1.x, &sprite->pos1.y);
+ eventObject->inanimate = gfxInfo->inanimate;
+ eventObject->graphicsId = graphicsId;
+ sub_80603CC(eventObject->currentCoords.x, eventObject->currentCoords.y, &sprite->pos1.x, &sprite->pos1.y);
sprite->centerToCornerVecX = -(gfxInfo->width >> 1);
sprite->centerToCornerVecY = -(gfxInfo->height >> 1);
sprite->pos1.x += 8;
sprite->pos1.y += 16 + sprite->centerToCornerVecY;
- if (mapObject->mapobj_bit_15)
+ if (eventObject->trackedByCamera)
CameraObjectReset1();
}
void unref_sub_805BA80(u8 localId, u8 mapNum, u8 mapGroup, u8 graphicsId)
{
- u8 mapObjectId;
+ u8 eventObjectId;
- if (!TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId))
- sub_805B980(&gMapObjects[mapObjectId], graphicsId);
+ if (!TryGetEventObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &eventObjectId))
+ sub_805B980(&gEventObjects[eventObjectId], graphicsId);
}
-void FieldObjectTurn(struct MapObject *mapObject, u8 direction)
+void EventObjectTurn(struct EventObject *eventObject, u8 direction)
{
- FieldObjectSetDirection(mapObject, direction);
- if (!mapObject->mapobj_bit_12)
+ SetEventObjectDirection(eventObject, direction);
+ if (!eventObject->inanimate)
{
- StartSpriteAnim(&gSprites[mapObject->spriteId], FieldObjectDirectionToImageAnimId(mapObject->mapobj_unk_18));
- SeekSpriteAnim(&gSprites[mapObject->spriteId], 0);
+ StartSpriteAnim(&gSprites[eventObject->spriteId], GetFaceDirectionAnimNum(eventObject->facingDirection));
+ SeekSpriteAnim(&gSprites[eventObject->spriteId], 0);
}
}
-void FieldObjectTurnByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup, u8 direction)
+void EventObjectTurnByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup, u8 direction)
{
- u8 mapObjectId;
+ u8 eventObjectId;
- if (!TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId))
- FieldObjectTurn(&gMapObjects[mapObjectId], direction);
+ if (!TryGetEventObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &eventObjectId))
+ EventObjectTurn(&gEventObjects[eventObjectId], direction);
}
void unref_TurnPlayer(struct PlayerAvatar *player, u8 direction)
{
- FieldObjectTurn(&gMapObjects[player->mapObjectId], direction);
+ EventObjectTurn(&gEventObjects[player->eventObjectId], direction);
}
-void get_berry_tree_graphics(struct MapObject *mapObject, struct Sprite *sprite)
+void get_berry_tree_graphics(struct EventObject *eventObject, struct Sprite *sprite)
{
u8 treeStage;
u8 treeId;
- mapObject->mapobj_bit_13 = TRUE;
+ eventObject->invisible = TRUE;
sprite->invisible = TRUE;
- treeStage = GetStageByBerryTreeId(mapObject->trainerRange_berryTreeId);
+ treeStage = GetStageByBerryTreeId(eventObject->trainerRange_berryTreeId);
if (treeStage != 0)
{
- mapObject->mapobj_bit_13 = FALSE;
+ eventObject->invisible = FALSE;
sprite->invisible = FALSE;
- treeId = GetBerryTypeByBerryTreeId(mapObject->trainerRange_berryTreeId) - 1;
+ treeId = GetBerryTypeByBerryTreeId(eventObject->trainerRange_berryTreeId) - 1;
treeStage--;
if (treeId > 0x2B)
treeId = 0;
- sub_805B980(mapObject, gBerryTreeGraphicsIdTablePointers[treeId][treeStage]);
+ sub_805B980(eventObject, gBerryTreeGraphicsIdTablePointers[treeId][treeStage]);
sprite->images = gBerryTreePicTablePointers[treeId];
sprite->oam.paletteNum = gBerryTreePaletteSlotTablePointers[treeId][treeStage];
StartSpriteAnim(sprite, treeStage);
}
}
-const struct MapObjectGraphicsInfo *GetFieldObjectGraphicsInfo(u8 graphicsId)
+const struct EventObjectGraphicsInfo *GetEventObjectGraphicsInfo(u8 graphicsId)
{
if (graphicsId > 0xEF)
- graphicsId = VarGetFieldObjectGraphicsId(graphicsId + 16);
+ graphicsId = VarGetEventObjectGraphicsId(graphicsId + 16);
if (graphicsId > 0xD9)
graphicsId = 5;
- return gMapObjectGraphicsInfoPointers[graphicsId];
+ return gEventObjectGraphicsInfoPointers[graphicsId];
}
-void FieldObjectHandleDynamicGraphicsId(struct MapObject *mapObject)
+void SetEventObjectDynamicGraphicsId(struct EventObject *eventObject)
{
- if (mapObject->graphicsId > 0xEF)
- mapObject->graphicsId = VarGetFieldObjectGraphicsId(mapObject->graphicsId + 16);
+ if (eventObject->graphicsId > 0xEF)
+ eventObject->graphicsId = VarGetEventObjectGraphicsId(eventObject->graphicsId + 16);
}
void npc_by_local_id_and_map_set_field_1_bit_x20(u8 localId, u8 mapNum, u8 mapGroup, u8 d)
{
- u8 mapObjectId;
+ u8 eventObjectId;
- if (!TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId))
- gMapObjects[mapObjectId].mapobj_bit_13 = d;
+ if (!TryGetEventObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &eventObjectId))
+ gEventObjects[eventObjectId].invisible = d;
}
-void FieldObjectGetLocalIdAndMap(struct MapObject *mapObject, void *localId, void *mapNum, void *mapGroup)
+void EventObjectGetLocalIdAndMap(struct EventObject *eventObject, void *localId, void *mapNum, void *mapGroup)
{
- *(u8 *)localId = mapObject->localId;
- *(u8 *)mapNum = mapObject->mapNum;
- *(u8 *)mapGroup = mapObject->mapGroup;
+ *(u8 *)localId = eventObject->localId;
+ *(u8 *)mapNum = eventObject->mapNum;
+ *(u8 *)mapGroup = eventObject->mapGroup;
}
void sub_805BCC0(s16 x, s16 y)
{
- u8 mapObjectId;
- struct MapObject *mapObject;
+ u8 eventObjectId;
+ struct EventObject *eventObject;
- mapObjectId = GetFieldObjectIdByXY(x, y);
- if (mapObjectId != 16)
+ eventObjectId = GetEventObjectIdByXY(x, y);
+ if (eventObjectId != 16)
{
- mapObject = &gMapObjects[mapObjectId];
- mapObject->mapobj_bit_2 = TRUE;
+ eventObject = &gEventObjects[eventObjectId];
+ eventObject->triggerGroundEffectsOnMove = TRUE;
}
}
void sub_805BCF0(u8 localId, u8 mapNum, u8 mapGroup, u8 subpriority)
{
- u8 mapObjectId;
- struct MapObject *mapObject;
+ u8 eventObjectId;
+ struct EventObject *eventObject;
struct Sprite *sprite;
- if (!TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId))
+ if (!TryGetEventObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &eventObjectId))
{
- mapObject = &gMapObjects[mapObjectId];
- sprite = &gSprites[mapObject->spriteId];
- mapObject->mapobj_bit_26 = TRUE;
+ eventObject = &gEventObjects[eventObjectId];
+ sprite = &gSprites[eventObject->spriteId];
+ eventObject->fixedPriority = TRUE;
sprite->subpriority = subpriority;
}
}
void sub_805BD48(u8 localId, u8 mapNum, u8 mapGroup)
{
- u8 mapObjectId;
- struct MapObject *mapObject;
+ u8 eventObjectId;
+ struct EventObject *eventObject;
- if (!TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId))
+ if (!TryGetEventObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &eventObjectId))
{
- mapObject = &gMapObjects[mapObjectId];
- mapObject->mapobj_bit_26 = FALSE;
- mapObject->mapobj_bit_2 = TRUE;
+ eventObject = &gEventObjects[eventObjectId];
+ eventObject->fixedPriority = FALSE;
+ eventObject->triggerGroundEffectsOnMove = TRUE;
}
}
void sub_805BD90(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y)
{
- u8 mapObjectId;
+ u8 eventObjectId;
struct Sprite *sprite;
- if (!TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId))
+ if (!TryGetEventObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &eventObjectId))
{
- sprite = &gSprites[gMapObjects[mapObjectId].spriteId];
+ sprite = &gSprites[gEventObjects[eventObjectId].spriteId];
sprite->pos2.x = x;
sprite->pos2.y = y;
}
}
-void gpu_pal_allocator_reset__manage_upper_four(void)
+void FreeAndReserveObjectSpritePalettes(void)
{
FreeAllSpritePalettes();
gReservedSpritePaletteCount = 12;
@@ -2766,10 +1767,10 @@ void gpu_pal_allocator_reset__manage_upper_four(void)
void sub_805BDF8(u16 tag)
{
- u16 paletteIndex = FindFieldObjectPaletteIndexByTag(tag);
+ u16 paletteIndex = FindEventObjectPaletteIndexByTag(tag);
- if (paletteIndex != 0x11FF) //always happens. FindFieldObjectPaletteIndexByTag returns u8
- sub_805BE58(&gUnknown_0837377C[paletteIndex]);
+ if (paletteIndex != 0x11FF) //always happens. FindEventObjectPaletteIndexByTag returns u8
+ sub_805BE58(&sEventObjectSpritePalettes[paletteIndex]);
}
void unref_sub_805BE24(u16 *arr)
@@ -2788,121 +1789,121 @@ u8 sub_805BE58(const struct SpritePalette *palette)
return LoadSpritePalette(palette);
}
-void pal_patch_for_npc(u16 a, u16 b)
+void PatchObjectPalette(u16 paletteTag, u16 paletteIndex)
{
- u8 var = b;
- u8 paletteIndex = FindFieldObjectPaletteIndexByTag(a);
+ u8 index = paletteIndex;
+ u8 tagPaletteIndex = FindEventObjectPaletteIndexByTag(paletteTag);
- LoadPalette(gUnknown_0837377C[paletteIndex].data, var * 16 + 0x100, 0x20);
+ LoadPalette(sEventObjectSpritePalettes[tagPaletteIndex].data, index * 16 + 0x100, 0x20);
}
-void pal_patch_for_npc_range(const u16 *arr, u8 b, u8 c)
+static void PatchObjectPalettes(const u16 *paletteTags, u8 paletteIndex, u8 maxPaletteIndex)
{
- for (; b < c; arr++, b++)
- pal_patch_for_npc(*arr, b);
+ for (; paletteIndex < maxPaletteIndex; paletteTags++, paletteIndex++)
+ PatchObjectPalette(*paletteTags, paletteIndex);
}
-u8 FindFieldObjectPaletteIndexByTag(u16 tag)
+u8 FindEventObjectPaletteIndexByTag(u16 tag)
{
u8 i;
- for (i = 0; gUnknown_0837377C[i].tag != 0x11FF; i++)
+ for (i = 0; sEventObjectSpritePalettes[i].tag != 0x11FF; i++)
{
- if (gUnknown_0837377C[i].tag == tag)
+ if (sEventObjectSpritePalettes[i].tag == tag)
return i;
}
return 0xFF;
}
-void npc_load_two_palettes__no_record(u16 a, u8 b)
+void LoadPlayerObjectReflectionPalette(u16 paletteTag, u8 paletteIndex)
{
u8 i;
- pal_patch_for_npc(a, b);
- for (i = 0; gUnknown_08373874[i].tag != 0x11FF; i++)
+ PatchObjectPalette(paletteTag, paletteIndex);
+ for (i = 0; gPlayerReflectionPaletteSets[i].mainPaletteTag != 0x11FF; i++)
{
- if (gUnknown_08373874[i].tag == a)
+ if (gPlayerReflectionPaletteSets[i].mainPaletteTag == paletteTag)
{
- pal_patch_for_npc(gUnknown_08373874[i].data[gUnknown_030005A4], gUnknown_0830FD14[b]);
+ PatchObjectPalette(gPlayerReflectionPaletteSets[i].reflectionPaletteTags[sCurrentReflectionType], gReflectionEffectPaletteMap[paletteIndex]);
break;
}
}
}
-void npc_load_two_palettes__and_record(u16 a, u8 b)
+void LoadSpecialObjectReflectionPalette(u16 paletteTag, u8 paletteIndex)
{
u8 i;
- gUnknown_030005A6 = a;
- pal_patch_for_npc(a, b);
- for (i = 0; gUnknown_083738E4[i].tag != 0x11FF; i++)
+ sCurrentSpecialObjectPaletteTag = paletteTag;
+ PatchObjectPalette(paletteTag, paletteIndex);
+ for (i = 0; gSpecialObjectReflectionPaletteSets[i].mainPaletteTag != 0x11FF; i++)
{
- if (gUnknown_083738E4[i].tag == a)
+ if (gSpecialObjectReflectionPaletteSets[i].mainPaletteTag == paletteTag)
{
- pal_patch_for_npc(gUnknown_083738E4[i].data[gUnknown_030005A4], gUnknown_0830FD14[b]);
+ PatchObjectPalette(gSpecialObjectReflectionPaletteSets[i].reflectionPaletteTags[sCurrentReflectionType], gReflectionEffectPaletteMap[paletteIndex]);
break;
}
}
}
-void unref_sub_805C014(struct MapObject *mapObject, s16 x, s16 y)
+void unref_sub_805C014(struct EventObject *eventObject, s16 x, s16 y)
{
- mapObject->coords3.x = mapObject->coords2.x;
- mapObject->coords3.y = mapObject->coords2.y;
- mapObject->coords2.x += x;
- mapObject->coords2.y += y;
+ eventObject->previousCoords.x = eventObject->currentCoords.x;
+ eventObject->previousCoords.y = eventObject->currentCoords.y;
+ eventObject->currentCoords.x += x;
+ eventObject->currentCoords.y += y;
}
-void npc_coords_shift(struct MapObject *mapObject, s16 x, s16 y)
+void ShiftEventObjectCoords(struct EventObject *eventObject, s16 x, s16 y)
{
- mapObject->coords3.x = mapObject->coords2.x;
- mapObject->coords3.y = mapObject->coords2.y;
- mapObject->coords2.x = x;
- mapObject->coords2.y = y;
+ eventObject->previousCoords.x = eventObject->currentCoords.x;
+ eventObject->previousCoords.y = eventObject->currentCoords.y;
+ eventObject->currentCoords.x = x;
+ eventObject->currentCoords.y = y;
}
-void npc_coords_set(struct MapObject *mapObject, s16 x, s16 y)
+void SetEventObjectCoords(struct EventObject *eventObject, s16 x, s16 y)
{
- mapObject->coords3.x = x;
- mapObject->coords3.y = y;
- mapObject->coords2.x = x;
- mapObject->coords2.y = y;
+ eventObject->previousCoords.x = x;
+ eventObject->previousCoords.y = y;
+ eventObject->currentCoords.x = x;
+ eventObject->currentCoords.y = y;
}
-void sub_805C058(struct MapObject *mapObject, s16 x, s16 y)
+void sub_805C058(struct EventObject *eventObject, s16 x, s16 y)
{
- struct Sprite *sprite = &gSprites[mapObject->spriteId];
- const struct MapObjectGraphicsInfo *gfxInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId);
+ struct Sprite *sprite = &gSprites[eventObject->spriteId];
+ const struct EventObjectGraphicsInfo *gfxInfo = GetEventObjectGraphicsInfo(eventObject->graphicsId);
- npc_coords_set(mapObject, x, y);
- sub_80603CC(mapObject->coords2.x, mapObject->coords2.y, &sprite->pos1.x, &sprite->pos1.y);
+ SetEventObjectCoords(eventObject, x, y);
+ sub_80603CC(eventObject->currentCoords.x, eventObject->currentCoords.y, &sprite->pos1.x, &sprite->pos1.y);
sprite->centerToCornerVecX = -(gfxInfo->width >> 1);
sprite->centerToCornerVecY = -(gfxInfo->height >> 1);
sprite->pos1.x += 8;
sprite->pos1.y += 16 + sprite->centerToCornerVecY;
- sub_805B914(mapObject);
- if (mapObject->mapobj_bit_15)
+ sub_805B914(eventObject);
+ if (eventObject->trackedByCamera)
CameraObjectReset1();
}
void sub_805C0F8(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y)
{
- u8 mapObjectId;
+ u8 eventObjectId;
- if (!TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId))
+ if (!TryGetEventObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &eventObjectId))
{
x += 7;
y += 7;
- sub_805C058(&gMapObjects[mapObjectId], x, y);
+ sub_805C058(&gEventObjects[eventObjectId], x, y);
}
}
-void npc_coords_shift_still(struct MapObject *mapObject)
+void ShiftStillEventObjectCoords(struct EventObject *eventObject)
{
- npc_coords_shift(mapObject, mapObject->coords2.x, mapObject->coords2.y);
+ ShiftEventObjectCoords(eventObject, eventObject->currentCoords.x, eventObject->currentCoords.y);
}
-void UpdateFieldObjectCoordsForCameraUpdate(void)
+void UpdateEventObjectCoordsForCameraUpdate(void)
{
u8 i;
s16 deltaX;
@@ -2914,68 +1915,65 @@ void UpdateFieldObjectCoordsForCameraUpdate(void)
deltaY = gCamera.y;
for (i = 0; i < 16; i++)
{
-
- if (gMapObjects[i].active)
+ if (gEventObjects[i].active)
{
- gMapObjects[i].coords1.x -= deltaX;
- gMapObjects[i].coords1.y -= deltaY;
- gMapObjects[i].coords2.x -= deltaX;
- gMapObjects[i].coords2.y -= deltaY;
- gMapObjects[i].coords3.x -= deltaX;
- gMapObjects[i].coords3.y -= deltaY;
+ gEventObjects[i].initialCoords.x -= deltaX;
+ gEventObjects[i].initialCoords.y -= deltaY;
+ gEventObjects[i].currentCoords.x -= deltaX;
+ gEventObjects[i].currentCoords.y -= deltaY;
+ gEventObjects[i].previousCoords.x -= deltaX;
+ gEventObjects[i].previousCoords.y -= deltaY;
}
}
}
}
-bool8 FieldObjectDoesZCoordMatch(struct MapObject *, u8);
-
-u8 GetFieldObjectIdByXYZ(u16 x, u16 y, u8 z)
+u8 GetEventObjectIdByXYZ(u16 x, u16 y, u8 z)
{
u8 i;
for (i = 0; i < 16; i++)
{
- if (gMapObjects[i].active && gMapObjects[i].coords2.x == x && gMapObjects[i].coords2.y == y
- && FieldObjectDoesZCoordMatch(&gMapObjects[i], z))
+ if (gEventObjects[i].active && gEventObjects[i].currentCoords.x == x && gEventObjects[i].currentCoords.y == y
+ && EventObjectZCoordIsCompatible(&gEventObjects[i], z))
return i;
}
return 16;
}
-bool8 FieldObjectDoesZCoordMatch(struct MapObject *mapObject, u8 z)
+static bool8 EventObjectZCoordIsCompatible(struct EventObject *eventObject, u8 z)
{
- if (mapObject->mapobj_unk_0B_0 != 0 && z != 0
- && mapObject->mapobj_unk_0B_0 != z)
+ if (eventObject->currentElevation != 0 && z != 0
+ && eventObject->currentElevation != z)
return FALSE;
else
return TRUE;
}
-void UpdateFieldObjectsForCameraUpdate(s16 x, s16 y)
+void UpdateEventObjectsForCameraUpdate(s16 cameraDeltaX, s16 cameraDeltaY)
{
- UpdateFieldObjectCoordsForCameraUpdate();
- sub_805B55C(x, y);
- RemoveFieldObjectsOutsideView();
+ UpdateEventObjectCoordsForCameraUpdate();
+ TrySpawnEventObjects(cameraDeltaX, cameraDeltaY);
+ RemoveEventObjectsOutsideView();
}
-u8 AddCameraObject(u8 a)
+u8 AddCameraObject(u8 trackedSpriteId)
{
- u8 spriteId = CreateSprite(&gSpriteTemplate_830FD24, 0, 0, 4);
+ u8 spriteId = CreateSprite(&gCameraSpriteTemplate, 0, 0, 4);
gSprites[spriteId].invisible = TRUE;
- gSprites[spriteId].data[0] = a;
+ gSprites[spriteId].data[0] = trackedSpriteId;
return spriteId;
}
-void ObjectCB_CameraObject(struct Sprite *sprite)
+static void ObjectCB_CameraObject(struct Sprite *sprite)
{
void (*cameraObjectFuncs[3])(struct Sprite *);
- memcpy(cameraObjectFuncs, gCameraObjectFuncs, sizeof gCameraObjectFuncs);
+ memcpy(cameraObjectFuncs, gCameraObjectFuncs, sizeof(gCameraObjectFuncs));
cameraObjectFuncs[sprite->data[1]](sprite);
}
-void CameraObject_0(struct Sprite *sprite)
+static void CameraObject_0(struct Sprite *sprite)
{
sprite->pos1.x = gSprites[sprite->data[0]].pos1.x;
sprite->pos1.y = gSprites[sprite->data[0]].pos1.y;
@@ -2984,7 +1982,7 @@ void CameraObject_0(struct Sprite *sprite)
CameraObject_1(sprite);
}
-void CameraObject_1(struct Sprite *sprite)
+static void CameraObject_1(struct Sprite *sprite)
{
s16 x = gSprites[sprite->data[0]].pos1.x;
s16 y = gSprites[sprite->data[0]].pos1.y;
@@ -2995,7 +1993,7 @@ void CameraObject_1(struct Sprite *sprite)
sprite->pos1.y = y;
}
-void CameraObject_2(struct Sprite *sprite)
+static void CameraObject_2(struct Sprite *sprite)
{
sprite->pos1.x = gSprites[sprite->data[0]].pos1.x;
sprite->pos1.y = gSprites[sprite->data[0]].pos1.y;
@@ -3007,7 +2005,7 @@ struct Sprite *FindCameraObject(void)
{
u8 i;
- for (i = 0; i < 64; i++)
+ for (i = 0; i < MAX_SPRITES; i++)
{
if (gSprites[i].inUse && gSprites[i].callback == ObjectCB_CameraObject)
return &gSprites[i];
@@ -3058,7 +2056,7 @@ u8 unref_sub_805C43C(struct Sprite *src, s16 x, s16 y, u8 subpriority)
{
u8 i;
- for (i = 0; i < 64; i++)
+ for (i = 0; i < MAX_SPRITES; i++)
{
if (!gSprites[i].inUse)
{
@@ -3072,11 +2070,11 @@ u8 unref_sub_805C43C(struct Sprite *src, s16 x, s16 y, u8 subpriority)
return i;
}
-u8 obj_unfreeze(struct Sprite *src, s16 x, s16 y, u8 subpriority)
+u8 CreateCopySpriteAt(struct Sprite *src, s16 x, s16 y, u8 subpriority)
{
s16 i;
- for (i = 63; i > -1; i--)
+ for (i = MAX_SPRITES - 1; i > -1; i--)
{
if (!gSprites[i].inUse)
{
@@ -3087,89 +2085,88 @@ u8 obj_unfreeze(struct Sprite *src, s16 x, s16 y, u8 subpriority)
return i;
}
}
- return 64;
+
+ return MAX_SPRITES;
}
-void FieldObjectSetDirection(struct MapObject *mapObject, u8 direction)
+void SetEventObjectDirection(struct EventObject *eventObject, u8 direction)
{
- mapObject->mapobj_unk_20 = mapObject->mapobj_unk_18;
- if (!mapObject->mapobj_bit_9)
+ eventObject->previousMovementDirection = eventObject->facingDirection;
+ if (!eventObject->facingDirectionLocked)
{
s8 _direction = direction; //needed for the asm to match
- mapObject->mapobj_unk_18 = _direction;
+ eventObject->facingDirection = _direction;
}
- mapObject->placeholder18 = direction;
+ eventObject->movementDirection = direction;
}
-u8 *GetFieldObjectScriptPointerByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup)
+u8 *GetEventObjectScriptPointerByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup)
{
- struct MapObjectTemplate *template = GetFieldObjectTemplateByLocalIdAndMap(localId, mapNum, mapGroup);
+ struct EventObjectTemplate *template = GetEventObjectTemplateByLocalIdAndMap(localId, mapNum, mapGroup);
return template->script;
}
-u8 *GetFieldObjectScriptPointerByFieldObjectId(u8 mapObjectId)
+u8 *GetEventObjectScriptPointerByEventObjectId(u8 eventObjectId)
{
- return GetFieldObjectScriptPointerByLocalIdAndMap(gMapObjects[mapObjectId].localId, gMapObjects[mapObjectId].mapNum, gMapObjects[mapObjectId].mapGroup);
+ return GetEventObjectScriptPointerByLocalIdAndMap(gEventObjects[eventObjectId].localId, gEventObjects[eventObjectId].mapNum, gEventObjects[eventObjectId].mapGroup);
}
-u16 GetFieldObjectFlagIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup)
+u16 GetEventObjectFlagIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup)
{
- struct MapObjectTemplate *template = GetFieldObjectTemplateByLocalIdAndMap(localId, mapNum, mapGroup);
+ struct EventObjectTemplate *template = GetEventObjectTemplateByLocalIdAndMap(localId, mapNum, mapGroup);
return template->flagId;
}
-u16 GetFieldObjectFlagIdByFieldObjectId(u8 mapObjectId)
+u16 GetEventObjectFlagIdByEventObjectId(u8 eventObjectId)
{
- return GetFieldObjectFlagIdByLocalIdAndMap(gMapObjects[mapObjectId].localId, gMapObjects[mapObjectId].mapNum, gMapObjects[mapObjectId].mapGroup);
+ return GetEventObjectFlagIdByLocalIdAndMap(gEventObjects[eventObjectId].localId, gEventObjects[eventObjectId].mapNum, gEventObjects[eventObjectId].mapGroup);
}
u8 unref_sub_805C5D0(u8 localId, u8 mapNum, u8 mapGroup)
{
- u8 mapObjectId;
+ u8 eventObjectId;
- if (TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId))
+ if (TryGetEventObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &eventObjectId))
return 0xFF;
else
- return gMapObjects[mapObjectId].trainerType;
+ return gEventObjects[eventObjectId].trainerType;
}
-u8 unref_sub_805C60C(u8 mapObjectId)
+u8 unref_sub_805C60C(u8 eventObjectId)
{
- return gMapObjects[mapObjectId].trainerType;
+ return gEventObjects[eventObjectId].trainerType;
}
u8 unref_sub_805C624(u8 localId, u8 mapNum, u8 mapGroup)
{
- u8 mapObjectId;
+ u8 eventObjectId;
- if (TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId))
+ if (TryGetEventObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &eventObjectId))
return 0xFF;
else
- return gMapObjects[mapObjectId].trainerRange_berryTreeId;
+ return gEventObjects[eventObjectId].trainerRange_berryTreeId;
}
-u8 FieldObjectGetBerryTreeId(u8 mapObjectId)
+u8 EventObjectGetBerryTreeId(u8 eventObjectId)
{
- return gMapObjects[mapObjectId].trainerRange_berryTreeId;
+ return gEventObjects[eventObjectId].trainerRange_berryTreeId;
}
-struct MapObjectTemplate *FindFieldObjectTemplateInArrayByLocalId(u8, struct MapObjectTemplate *, u8);
-
-struct MapObjectTemplate *GetFieldObjectTemplateByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup)
+struct EventObjectTemplate *GetEventObjectTemplateByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup)
{
if (gSaveBlock1.location.mapNum == mapNum && gSaveBlock1.location.mapGroup == mapGroup)
- return FindFieldObjectTemplateInArrayByLocalId(localId, gSaveBlock1.mapObjectTemplates, gMapHeader.events->mapObjectCount);
+ return FindEventObjectTemplateByLocalId(localId, gSaveBlock1.eventObjectTemplates, gMapHeader.events->eventObjectCount);
else
{
struct MapHeader *mapHeader = Overworld_GetMapHeaderByGroupAndId(mapGroup, mapNum);
- return FindFieldObjectTemplateInArrayByLocalId(localId, mapHeader->events->mapObjects, mapHeader->events->mapObjectCount);
+ return FindEventObjectTemplateByLocalId(localId, mapHeader->events->eventObjects, mapHeader->events->eventObjectCount);
}
}
-struct MapObjectTemplate *FindFieldObjectTemplateInArrayByLocalId(u8 localId, struct MapObjectTemplate *templates, u8 count)
+static struct EventObjectTemplate *FindEventObjectTemplateByLocalId(u8 localId, struct EventObjectTemplate *templates, u8 count)
{
u8 i;
@@ -3181,112 +2178,108 @@ struct MapObjectTemplate *FindFieldObjectTemplateInArrayByLocalId(u8 localId, st
return NULL;
}
-struct MapObjectTemplate *sub_805C700(struct MapObject *mapObject)
+static struct EventObjectTemplate *GetBaseTemplateForEventObject(struct EventObject *eventObject)
{
s32 i;
- if (mapObject->mapNum != gSaveBlock1.location.mapNum
- || mapObject->mapGroup != gSaveBlock1.location.mapGroup)
+ if (eventObject->mapNum != gSaveBlock1.location.mapNum
+ || eventObject->mapGroup != gSaveBlock1.location.mapGroup)
return NULL;
for (i = 0; i < 64; i++)
{
- if (mapObject->localId == gSaveBlock1.mapObjectTemplates[i].localId)
- return &gSaveBlock1.mapObjectTemplates[i];
+ if (eventObject->localId == gSaveBlock1.eventObjectTemplates[i].localId)
+ return &gSaveBlock1.eventObjectTemplates[i];
}
return NULL;
}
-void sub_805C754(struct MapObject *mapObject)
+void OverrideTemplateCoordsForEventObject(struct EventObject *eventObject)
{
- struct MapObjectTemplate *template = sub_805C700(mapObject);
+ struct EventObjectTemplate *template = GetBaseTemplateForEventObject(eventObject);
if (template != NULL)
{
- template->x = mapObject->coords2.x - 7;
- template->y = mapObject->coords2.y - 7;
+ template->x = eventObject->currentCoords.x - 7;
+ template->y = eventObject->currentCoords.y - 7;
}
}
-void sub_805C774(struct MapObject *mapObject, u8 movementType)
+void OverrideMovementTypeForEventObject(struct EventObject *eventObject, u8 movementType)
{
- struct MapObjectTemplate *template = sub_805C700(mapObject);
+ struct EventObjectTemplate *template = GetBaseTemplateForEventObject(eventObject);
if (template != NULL)
template->movementType = movementType;
}
-void sub_805C78C(u8 localId, u8 mapNum, u8 mapGroup)
+void TryOverrideTemplateCoordsForEventObject(u8 localId, u8 mapNum, u8 mapGroup)
{
- u8 mapObjectId;
+ u8 eventObjectId;
- if (!TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId))
- sub_805C754(&gMapObjects[mapObjectId]);
+ if (!TryGetEventObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &eventObjectId))
+ OverrideTemplateCoordsForEventObject(&gEventObjects[eventObjectId]);
}
-void sub_805C7C4(u8 a)
+void InitEventObjectPalettes(u8 reflectionType)
{
- gpu_pal_allocator_reset__manage_upper_four();
- gUnknown_030005A6 = 0x11FF;
- gUnknown_030005A4 = a;
- pal_patch_for_npc_range(gUnknown_0837399C[gUnknown_030005A4], 0, 10);
+ FreeAndReserveObjectSpritePalettes();
+ sCurrentSpecialObjectPaletteTag = 0x11FF;
+ sCurrentReflectionType = reflectionType;
+ PatchObjectPalettes(gObjectPaletteTagSets[sCurrentReflectionType], 0, 10);
}
-u16 npc_paltag_by_palslot(u8 a)
+u16 GetObjectPaletteTag(u8 paletteIndex)
{
u8 i;
- if (a < 10)
- return gUnknown_0837399C[gUnknown_030005A4][a];
+ // Regular objects and the player occupy the first 10 palettes.
+ if (paletteIndex < 10)
+ return gObjectPaletteTagSets[sCurrentReflectionType][paletteIndex];
- for (i = 0; gUnknown_083738E4[i].tag != 0x11FF; i++)
+ // Palette slots 10 and 11 belong to the special object.
+ for (i = 0; gSpecialObjectReflectionPaletteSets[i].mainPaletteTag != 0x11FF; i++)
{
- if (gUnknown_083738E4[i].tag == gUnknown_030005A6)
+ if (gSpecialObjectReflectionPaletteSets[i].mainPaletteTag == sCurrentSpecialObjectPaletteTag)
{
- return gUnknown_083738E4[i].data[gUnknown_030005A4];
+ return gSpecialObjectReflectionPaletteSets[i].reflectionPaletteTags[sCurrentReflectionType];
}
}
+
return 0x11FF;
}
-fieldmap_object_null_cb(sub_805C884, sub_805C8A8);
-fieldmap_object_cb(sub_805C8AC, sub_805C8D0, gUnknown_08375224);
+movement_type_empty_callback(MovementType_None);
+movement_type_def(MovementType_WanderAround, gMovementTypeFuncs_WanderAround);
-u8 sub_805C8F0(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_WanderAround_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- npc_reset(mapObject, sprite);
+ ClearEventObjectMovement(eventObject, sprite);
sprite->data[1] = 1;
return 1;
}
-extern void FieldObjectSetRegularAnim(struct MapObject *, struct Sprite *, u8);
-
-u8 sub_805C904(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_WanderAround_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
+ EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(eventObject->facingDirection));
sprite->data[1] = 2;
return 1;
}
-extern u8 FieldObjectExecRegularAnim(struct MapObject *, struct Sprite *);
-void sub_8064820(struct Sprite *, s16);
-
-u8 sub_805C930(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_WanderAround_Step2(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (FieldObjectExecRegularAnim(mapObject, sprite) == 0)
+ if (EventObjectExecSingleMovementAction(eventObject, sprite) == 0)
{
return 0;
}
- sub_8064820(sprite, gUnknown_0837520C[Random() & 3]);
+ SetMovementDelay(sprite, gMovementDelaysMedium[Random() & 3]);
sprite->data[1] = 3;
return 1;
}
-extern u8 sub_8064824(struct Sprite *);
-
-u8 sub_805C96C(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_WanderAround_Step3(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (sub_8064824(sprite) != 0)
+ if (WaitForMovementDelay(sprite))
{
sprite->data[1] = 4;
return 1;
@@ -3294,42 +2287,40 @@ u8 sub_805C96C(struct MapObject *mapObject, struct Sprite *sprite)
return 0;
}
-extern u8 sub_805FF20(struct MapObject *, u8);
-
-u8 sub_805C98C(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_WanderAround_Step4(struct EventObject *eventObject, struct Sprite *sprite)
{
u8 direction;
u8 directions[4];
- memcpy(directions, gUnknown_08375240, 4);
+ memcpy(directions, gStandardDirections, 4);
direction = directions[Random() & 3];
- FieldObjectSetDirection(mapObject, direction);
+ SetEventObjectDirection(eventObject, direction);
sprite->data[1] = 5;
- if (sub_805FF20(mapObject, direction) != 0)
+ if (GetCollisionInDirection(eventObject, direction) != 0)
{
sprite->data[1] = 1;
}
return 1;
}
-u8 sub_805C9D8(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_WanderAround_Step5(struct EventObject *eventObject, struct Sprite *sprite)
{
- FieldObjectSetRegularAnim(mapObject, sprite, GetGoSpeed0AnimId(mapObject->placeholder18));
- mapObject->mapobj_bit_1 = 1;
+ EventObjectSetSingleMovement(eventObject, sprite, GetWalkNormalMovementAction(eventObject->movementDirection));
+ eventObject->singleMovementActive = 1;
sprite->data[1] = 6;
return 1;
}
-u8 sub_805CA08(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_WanderAround_Step6(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (FieldObjectExecRegularAnim(mapObject, sprite) != 0)
+ if (EventObjectExecSingleMovementAction(eventObject, sprite) != 0)
{
- mapObject->mapobj_bit_1 = 0;
+ eventObject->singleMovementActive = 0;
sprite->data[1] = 1;
}
return 0;
}
-u8 FieldObjectIsTrainerAndCloseToPlayer(struct MapObject *mapObject)
+u8 EventObjectIsTrainerAndCloseToPlayer(struct EventObject *eventObject)
{
s16 x;
s16 y;
@@ -3343,17 +2334,17 @@ u8 FieldObjectIsTrainerAndCloseToPlayer(struct MapObject *mapObject)
{
return 0;
}
- if (mapObject->trainerType != 1 && mapObject->trainerType != 3)
+ if (eventObject->trainerType != 1 && eventObject->trainerType != 3)
{
return 0;
}
PlayerGetDestCoords(&x, &y);
- objx = mapObject->coords2.x;
- objy = mapObject->coords2.y;
- minx = objx - mapObject->trainerRange_berryTreeId;
- miny = objy - mapObject->trainerRange_berryTreeId;
- maxx = objx + mapObject->trainerRange_berryTreeId;
- maxy = objy + mapObject->trainerRange_berryTreeId;
+ objx = eventObject->currentCoords.x;
+ objy = eventObject->currentCoords.y;
+ minx = objx - eventObject->trainerRange_berryTreeId;
+ miny = objy - eventObject->trainerRange_berryTreeId;
+ maxx = objx + eventObject->trainerRange_berryTreeId;
+ maxy = objy + eventObject->trainerRange_berryTreeId;
if (minx > x || maxx < x || miny > y || maxy < y)
{
return 0;
@@ -3361,241 +2352,236 @@ u8 FieldObjectIsTrainerAndCloseToPlayer(struct MapObject *mapObject)
return 1;
}
-u8 sub_805CAAC(s16 a0, s16 a1, s16 a2, s16 a3)
+u8 GetVectorDirection(s16 x, s16 y, s16 xAbs, s16 yAbs)
{
- u8 dirn;
- if (a2 > a3)
+ u8 direction;
+ if (xAbs > yAbs)
{
- dirn = DIR_EAST;
- if (a0 < 0)
+ direction = DIR_EAST;
+ if (x < 0)
{
- dirn = DIR_WEST;
+ direction = DIR_WEST;
}
}
else
{
- dirn = DIR_SOUTH;
- if (a1 < 0)
+ direction = DIR_SOUTH;
+ if (y < 0)
{
- dirn = DIR_NORTH;
+ direction = DIR_NORTH;
}
}
- return dirn;
+ return direction;
}
-u8 sub_805CADC(s16 a0, s16 a1, s16 a2, s16 a3)
+u8 GetLimitedVectorDirection_SouthNorth(s16 x, s16 y, s16 xAbs, s16 yAbs)
{
- u8 dirn;
- dirn = DIR_SOUTH;
- if (a1 < 0)
+ u8 direction;
+ direction = DIR_SOUTH;
+ if (y < 0)
{
- dirn = DIR_NORTH;
+ direction = DIR_NORTH;
}
- return dirn;
+ return direction;
}
-u8 sub_805CAEC(s16 a0, s16 a1, s16 a2, s16 a3)
+u8 GetLimitedVectorDirection_WestEast(s16 x, s16 y, s16 xAbs, s16 yAbs)
{
- u8 dirn;
- dirn = DIR_EAST;
- if (a0 < 0)
+ u8 direction;
+ direction = DIR_EAST;
+ if (x < 0)
{
- dirn = DIR_WEST;
+ direction = DIR_WEST;
}
- return dirn;
+ return direction;
}
-u8 sub_805CB00(s16 a0, s16 a1, s16 a2, s16 a3)
+u8 GetLimitedVectorDirection_WestNorth(s16 x, s16 y, s16 xAbs, s16 yAbs)
{
- u8 dirn;
- dirn = sub_805CAAC(a0, a1, a2, a3);
- if (dirn == DIR_SOUTH)
+ u8 direction;
+ direction = GetVectorDirection(x, y, xAbs, yAbs);
+ if (direction == DIR_SOUTH)
{
- dirn = sub_805CAEC(a0, a1, a2, a3);
- if (dirn == DIR_EAST)
+ direction = GetLimitedVectorDirection_WestEast(x, y, xAbs, yAbs);
+ if (direction == DIR_EAST)
{
- dirn = DIR_NORTH;
+ direction = DIR_NORTH;
}
}
- else if (dirn == DIR_EAST)
+ else if (direction == DIR_EAST)
{
- dirn = sub_805CADC(a0, a1, a2, a3);
- if (dirn == DIR_SOUTH)
+ direction = GetLimitedVectorDirection_SouthNorth(x, y, xAbs, yAbs);
+ if (direction == DIR_SOUTH)
{
- dirn = DIR_NORTH;
+ direction = DIR_NORTH;
}
}
- return dirn;
+ return direction;
}
-u8 sub_805CB5C(s16 a0, s16 a1, s16 a2, s16 a3)
+u8 GetLimitedVectorDirection_EastNorth(s16 x, s16 y, s16 xAbs, s16 yAbs)
{
- u8 dirn;
- dirn = sub_805CAAC(a0, a1, a2, a3);
- if (dirn == DIR_SOUTH)
+ u8 direction;
+ direction = GetVectorDirection(x, y, xAbs, yAbs);
+ if (direction == DIR_SOUTH)
{
- dirn = sub_805CAEC(a0, a1, a2, a3);
- if (dirn == DIR_WEST)
+ direction = GetLimitedVectorDirection_WestEast(x, y, xAbs, yAbs);
+ if (direction == DIR_WEST)
{
- dirn = DIR_NORTH;
+ direction = DIR_NORTH;
}
}
- else if (dirn == DIR_WEST)
+ else if (direction == DIR_WEST)
{
- dirn = sub_805CADC(a0, a1, a2, a3);
- if (dirn == DIR_SOUTH)
+ direction = GetLimitedVectorDirection_SouthNorth(x, y, xAbs, yAbs);
+ if (direction == DIR_SOUTH)
{
- dirn = DIR_NORTH;
+ direction = DIR_NORTH;
}
}
- return dirn;
+ return direction;
}
-u8 sub_805CBB8(s16 a0, s16 a1, s16 a2, s16 a3)
+u8 GetLimitedVectorDirection_WestSouth(s16 x, s16 y, s16 xAbs, s16 yAbs)
{
- u8 dirn;
- dirn = sub_805CAAC(a0, a1, a2, a3);
- if (dirn == DIR_NORTH)
+ u8 direction;
+ direction = GetVectorDirection(x, y, xAbs, yAbs);
+ if (direction == DIR_NORTH)
{
- dirn = sub_805CAEC(a0, a1, a2, a3);
- if (dirn == DIR_EAST)
+ direction = GetLimitedVectorDirection_WestEast(x, y, xAbs, yAbs);
+ if (direction == DIR_EAST)
{
- dirn = DIR_SOUTH;
+ direction = DIR_SOUTH;
}
}
- else if (dirn == DIR_EAST)
+ else if (direction == DIR_EAST)
{
- dirn = sub_805CADC(a0, a1, a2, a3);
- if (dirn == DIR_NORTH)
+ direction = GetLimitedVectorDirection_SouthNorth(x, y, xAbs, yAbs);
+ if (direction == DIR_NORTH)
{
- dirn = DIR_SOUTH;
+ direction = DIR_SOUTH;
}
}
- return dirn;
+ return direction;
}
-u8 sub_805CC14(s16 a0, s16 a1, s16 a2, s16 a3) {
- u8 dirn;
- dirn = sub_805CAAC(a0, a1, a2, a3);
- if (dirn == DIR_NORTH)
+u8 GetLimitedVectorDirection_EastSouth(s16 x, s16 y, s16 xAbs, s16 yAbs) {
+ u8 direction;
+ direction = GetVectorDirection(x, y, xAbs, yAbs);
+ if (direction == DIR_NORTH)
{
- dirn = sub_805CAEC(a0, a1, a2, a3);
- if (dirn == DIR_WEST)
+ direction = GetLimitedVectorDirection_WestEast(x, y, xAbs, yAbs);
+ if (direction == DIR_WEST)
{
- dirn = DIR_SOUTH;
+ direction = DIR_SOUTH;
}
}
- else if (dirn == DIR_WEST)
+ else if (direction == DIR_WEST)
{
- dirn = sub_805CADC(a0, a1, a2, a3);
- if (dirn == DIR_NORTH)
+ direction = GetLimitedVectorDirection_SouthNorth(x, y, xAbs, yAbs);
+ if (direction == DIR_NORTH)
{
- dirn = DIR_SOUTH;
+ direction = DIR_SOUTH;
}
}
- return dirn;
+ return direction;
}
-u8 sub_805CC70(s16 a0, s16 a1, s16 a2, s16 a3)
+u8 GetLimitedVectorDirection_SouthNorthWest(s16 x, s16 y, s16 xAbs, s16 yAbs)
{
- u8 dirn;
- dirn = sub_805CAAC(a0, a1, a2, a3);
- if (dirn == DIR_EAST)
+ u8 direction;
+ direction = GetVectorDirection(x, y, xAbs, yAbs);
+ if (direction == DIR_EAST)
{
- dirn = sub_805CADC(a0, a1, a2, a3);
+ direction = GetLimitedVectorDirection_SouthNorth(x, y, xAbs, yAbs);
}
- return dirn;
+ return direction;
}
-u8 sub_805CCAC(s16 a0, s16 a1, s16 a2, s16 a3)
+u8 GetLimitedVectorDirection_SouthNorthEast(s16 x, s16 y, s16 xAbs, s16 yAbs)
{
- u8 dirn;
- dirn = sub_805CAAC(a0, a1, a2, a3);
- if (dirn == DIR_WEST)
+ u8 direction;
+ direction = GetVectorDirection(x, y, xAbs, yAbs);
+ if (direction == DIR_WEST)
{
- dirn = sub_805CADC(a0, a1, a2, a3);
+ direction = GetLimitedVectorDirection_SouthNorth(x, y, xAbs, yAbs);
}
- return dirn;
+ return direction;
}
-u8 sub_805CCE8(s16 a0, s16 a1, s16 a2, s16 a3)
+u8 GetLimitedVectorDirection_NorthWestEast(s16 x, s16 y, s16 xAbs, s16 yAbs)
{
- u8 dirn;
- dirn = sub_805CAAC(a0, a1, a2, a3);
- if (dirn == DIR_SOUTH)
+ u8 direction;
+ direction = GetVectorDirection(x, y, xAbs, yAbs);
+ if (direction == DIR_SOUTH)
{
- dirn = sub_805CAEC(a0, a1, a2, a3);
+ direction = GetLimitedVectorDirection_WestEast(x, y, xAbs, yAbs);
}
- return dirn;
+ return direction;
}
-u8 sub_805CD24(s16 a0, s16 a1, s16 a2, s16 a3)
+u8 GetLimitedVectorDirection_SouthWestEast(s16 x, s16 y, s16 xAbs, s16 yAbs)
{
- u8 dirn;
- dirn = sub_805CAAC(a0, a1, a2, a3);
- if (dirn == DIR_NORTH)
+ u8 direction;
+ direction = GetVectorDirection(x, y, xAbs, yAbs);
+ if (direction == DIR_NORTH)
{
- dirn = sub_805CAEC(a0, a1, a2, a3);
+ direction = GetLimitedVectorDirection_WestEast(x, y, xAbs, yAbs);
}
- return dirn;
+ return direction;
}
-u8 sub_805CD60(struct MapObject *mapObject, u8 a1)
+u8 TryGetTrainerEncounterDirection(struct EventObject *eventObject, u8 directionFuncIndex)
{
- s16 x;
- s16 y;
- s16 x2;
- s16 y2;
- if (!FieldObjectIsTrainerAndCloseToPlayer(mapObject))
+ s16 x, y;
+ s16 xAbs, yAbs;
+ if (!EventObjectIsTrainerAndCloseToPlayer(eventObject))
{
return 0;
}
PlayerGetDestCoords(&x, &y);
- x -= mapObject->coords2.x;
- y -= mapObject->coords2.y;
- x2 = x;
- y2 = y;
- if (x2 < 0)
- {
- x2 = -x2;
- }
- if (y2 < 0)
- {
- y2 = -y2;
- }
- return gUnknown_08375244[a1](x, y, x2, y2);
+ x -= eventObject->currentCoords.x;
+ y -= eventObject->currentCoords.y;
+ xAbs = x;
+ yAbs = y;
+ if (xAbs < 0)
+ xAbs = -xAbs;
+ if (yAbs < 0)
+ yAbs = -yAbs;
+
+ return gGetVectorDirectionFuncs[directionFuncIndex](x, y, xAbs, yAbs);
}
-fieldmap_object_cb(sub_805CDE8, sub_805CE0c, gUnknown_08375270);
+movement_type_def(MovementType_LookAround, gMovementTypeFuncs_LookAround);
-u8 sub_805CE2C(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_LookAround_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- npc_reset(mapObject, sprite);
+ ClearEventObjectMovement(eventObject, sprite);
sprite->data[1] = 1;
return 1;
}
-u8 sub_805CE40(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_LookAround_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
+ EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(eventObject->facingDirection));
sprite->data[1] = 2;
return 1;
}
-u8 sub_805CE6C(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_LookAround_Step2(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (FieldObjectExecRegularAnim(mapObject, sprite) != 0)
+ if (EventObjectExecSingleMovementAction(eventObject, sprite))
{
- sub_8064820(sprite, gUnknown_0837520C[Random() & 3]);
- mapObject->mapobj_bit_1 = 0;
+ SetMovementDelay(sprite, gMovementDelaysMedium[Random() & 3]);
+ eventObject->singleMovementActive = 0;
sprite->data[1] = 3;
}
return 0;
}
-u8 sub_805CEB0(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_LookAround_Step3(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
+ if (WaitForMovementDelay(sprite) || EventObjectIsTrainerAndCloseToPlayer(eventObject))
{
sprite->data[1] = 4;
return 1;
@@ -3603,51 +2589,50 @@ u8 sub_805CEB0(struct MapObject *mapObject, struct Sprite *sprite)
return 0;
}
-u8 sub_805CEE0(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_LookAround_Step4(struct EventObject *eventObject, struct Sprite *sprite)
{
u8 direction;
u8 directions[4];
- memcpy(directions, gUnknown_08375240, 4);
- direction = sub_805CD60(mapObject, 0);
- if (direction == 0)
- {
+ memcpy(directions, gStandardDirections, 4);
+ direction = TryGetTrainerEncounterDirection(eventObject, 0);
+ if (direction == DIR_NONE)
direction = directions[Random() & 3];
- }
- FieldObjectSetDirection(mapObject, direction);
+
+ SetEventObjectDirection(eventObject, direction);
sprite->data[1] = 1;
return 1;
}
-fieldmap_object_cb(sub_805CF28, sub_805CF4C, gUnknown_08375284);
+movement_type_def(MovementType_WanderUpAndDown, gMovementTypeFuncs_WanderUpAndDown);
-u8 sub_805CF6C(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_WanderUpAndDown_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- npc_reset(mapObject, sprite);
+ ClearEventObjectMovement(eventObject, sprite);
sprite->data[1] = 1;
return 1;
}
-u8 sub_805CF80(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_WanderUpAndDown_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
+ EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(eventObject->facingDirection));
sprite->data[1] = 2;
return 1;
}
-u8 sub_805CFAC(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_WanderUpAndDown_Step2(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (FieldObjectExecRegularAnim(mapObject, sprite) == 0)
+ if (EventObjectExecSingleMovementAction(eventObject, sprite) == 0)
{
return 0;
}
- sub_8064820(sprite, gUnknown_0837520C[Random() & 3]);
+ SetMovementDelay(sprite, gMovementDelaysMedium[Random() & 3]);
sprite->data[1] = 3;
return 1;
}
-u8 sub_805CFE8(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_WanderUpAndDown_Step3(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (sub_8064824(sprite) != 0)
+ if (WaitForMovementDelay(sprite))
{
sprite->data[1] = 4;
return 1;
@@ -3655,69 +2640,69 @@ u8 sub_805CFE8(struct MapObject *mapObject, struct Sprite *sprite)
return 0;
}
-u8 sub_805D008(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_WanderUpAndDown_Step4(struct EventObject *eventObject, struct Sprite *sprite)
{
u8 direction;
u8 directions[2];
- memcpy(directions, gUnknown_083752A0, 2);
+ memcpy(directions, gUpAndDownDirections, 2);
direction = directions[Random() & 1];
- FieldObjectSetDirection(mapObject, direction);
+ SetEventObjectDirection(eventObject, direction);
sprite->data[1] = 5;
- if (sub_805FF20(mapObject, direction) != 0)
+ if (GetCollisionInDirection(eventObject, direction) != 0)
{
sprite->data[1] = 1;
}
return 1;
}
-u8 sub_805D054(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_WanderUpAndDown_Step5(struct EventObject *eventObject, struct Sprite *sprite)
{
- FieldObjectSetRegularAnim(mapObject, sprite, GetGoSpeed0AnimId(mapObject->placeholder18));
- mapObject->mapobj_bit_1 = 1;
+ EventObjectSetSingleMovement(eventObject, sprite, GetWalkNormalMovementAction(eventObject->movementDirection));
+ eventObject->singleMovementActive = 1;
sprite->data[1] = 6;
return 1;
}
-u8 sub_805D084(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_WanderUpAndDown_Step6(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (FieldObjectExecRegularAnim(mapObject, sprite) != 0)
+ if (EventObjectExecSingleMovementAction(eventObject, sprite) != 0)
{
- mapObject->mapobj_bit_1 = 0;
+ eventObject->singleMovementActive = 0;
sprite->data[1] = 1;
}
return 0;
}
-fieldmap_object_cb(sub_805D0AC, sub_805D0D0, gUnknown_083752A4);
+movement_type_def(MovementType_WanderLeftAndRight, gMovementTypeFuncs_WanderLeftAndRight);
-u8 sub_805D0F0(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_WanderLeftAndRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- npc_reset(mapObject, sprite);
+ ClearEventObjectMovement(eventObject, sprite);
sprite->data[1] = 1;
return 1;
}
-u8 sub_805D104(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_WanderLeftAndRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
+ EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(eventObject->facingDirection));
sprite->data[1] = 2;
return 1;
}
-u8 sub_805D130(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_WanderLeftAndRight_Step2(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (FieldObjectExecRegularAnim(mapObject, sprite) == 0)
+ if (EventObjectExecSingleMovementAction(eventObject, sprite) == 0)
{
return 0;
}
- sub_8064820(sprite, gUnknown_0837520C[Random() & 3]);
+ SetMovementDelay(sprite, gMovementDelaysMedium[Random() & 3]);
sprite->data[1] = 3;
return 1;
}
-u8 sub_805D16C(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_WanderLeftAndRight_Step3(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (sub_8064824(sprite) != 0)
+ if (WaitForMovementDelay(sprite))
{
sprite->data[1] = 4;
return 1;
@@ -3725,52 +2710,52 @@ u8 sub_805D16C(struct MapObject *mapObject, struct Sprite *sprite)
return 0;
}
-u8 sub_805D18C(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_WanderLeftAndRight_Step4(struct EventObject *eventObject, struct Sprite *sprite)
{
u8 direction;
u8 directions[2];
- memcpy(directions, gUnknown_083752C0, 2);
+ memcpy(directions, gLeftAndRightDirections, 2);
direction = directions[Random() & 1];
- FieldObjectSetDirection(mapObject, direction);
+ SetEventObjectDirection(eventObject, direction);
sprite->data[1] = 5;
- if (sub_805FF20(mapObject, direction) != 0)
+ if (GetCollisionInDirection(eventObject, direction) != 0)
{
sprite->data[1] = 1;
}
return 1;
}
-u8 sub_805D1D8(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_WanderLeftAndRight_Step5(struct EventObject *eventObject, struct Sprite *sprite)
{
- FieldObjectSetRegularAnim(mapObject, sprite, GetGoSpeed0AnimId(mapObject->placeholder18));
- mapObject->mapobj_bit_1 = 1;
+ EventObjectSetSingleMovement(eventObject, sprite, GetWalkNormalMovementAction(eventObject->movementDirection));
+ eventObject->singleMovementActive = 1;
sprite->data[1] = 6;
return 1;
}
-u8 sub_805D208(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_WanderLeftAndRight_Step6(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (FieldObjectExecRegularAnim(mapObject, sprite) != 0)
+ if (EventObjectExecSingleMovementAction(eventObject, sprite) != 0)
{
- mapObject->mapobj_bit_1 = 0;
+ eventObject->singleMovementActive = 0;
sprite->data[1] = 1;
}
return 0;
}
-fieldmap_object_cb(sub_805D230, sub_805D254, gUnknown_083752C4);
+movement_type_def(MovementType_FaceDirection, gMovementTypeFuncs_FaceDirection);
-u8 sub_805D274(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_FaceDirection_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- npc_reset(mapObject, sprite);
- FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
+ ClearEventObjectMovement(eventObject, sprite);
+ EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(eventObject->facingDirection));
sprite->data[1] = 1;
return 1;
}
-u8 sub_805D2A0(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_FaceDirection_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (FieldObjectExecRegularAnim(mapObject, sprite) != 0)
+ if (EventObjectExecSingleMovementAction(eventObject, sprite) != 0)
{
sprite->data[1] = 2;
return 1;
@@ -3778,44 +2763,42 @@ u8 sub_805D2A0(struct MapObject *mapObject, struct Sprite *sprite)
return 0;
}
-u8 sub_805D2C0(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_FaceDirection_Step2(struct EventObject *eventObject, struct Sprite *sprite)
{
- mapObject->mapobj_bit_1 = 0;
+ eventObject->singleMovementActive = 0;
return 0;
}
-u8 sub_805D314(struct MapObject *mapObject, struct Sprite *sprite);
-
-void FieldObjectCB_BerryTree(struct Sprite *sprite)
+void MovementType_BerryTreeGrowth(struct Sprite *sprite)
{
- struct MapObject *mapObject;
- mapObject = &gMapObjects[sprite->data[0]];
+ struct EventObject *eventObject;
+ eventObject = &gEventObjects[sprite->data[0]];
if (!(sprite->data[7] & 1))
{
- get_berry_tree_graphics(mapObject, sprite);
+ get_berry_tree_graphics(eventObject, sprite);
sprite->data[7] |= 1;
}
- meta_step(mapObject, sprite, sub_805D314);
+ UpdateEventObjectCurrentMovement(eventObject, sprite, MovementType_BerryTreeGrowth_Callback);
}
-u8 sub_805D314(struct MapObject *mapObject, struct Sprite *sprite)
+static u8 MovementType_BerryTreeGrowth_Callback(struct EventObject *eventObject, struct Sprite *sprite)
{
- return gUnknown_083752D0[sprite->data[1]](mapObject, sprite);
+ return gMovementTypeFuncs_BerryTreeGrowth[sprite->data[1]](eventObject, sprite);
}
-u8 do_berry_tree_growth_sparkle_1(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_BerryTreeGrowth_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
u8 berryTreeStage;
- npc_reset(mapObject, sprite);
- mapObject->mapobj_bit_13 = 1;
+ ClearEventObjectMovement(eventObject, sprite);
+ eventObject->invisible = 1;
sprite->invisible = 1;
- berryTreeStage = GetStageByBerryTreeId(mapObject->trainerRange_berryTreeId);
+ berryTreeStage = GetStageByBerryTreeId(eventObject->trainerRange_berryTreeId);
if (!berryTreeStage)
{
if (!(sprite->data[7] & 4) && sprite->animNum == 4)
{
- gFieldEffectArguments[0] = mapObject->coords2.x;
- gFieldEffectArguments[1] = mapObject->coords2.y;
+ gFieldEffectArguments[0] = eventObject->currentCoords.x;
+ gFieldEffectArguments[1] = eventObject->currentCoords.y;
gFieldEffectArguments[2] = sprite->subpriority - 1;
gFieldEffectArguments[3] = sprite->oam.priority;
FieldEffectStart(FLDEFF_BERRY_TREE_GROWTH_SPARKLE);
@@ -3823,7 +2806,7 @@ u8 do_berry_tree_growth_sparkle_1(struct MapObject *mapObject, struct Sprite *sp
}
return 0;
}
- mapObject->mapobj_bit_13 = 0;
+ eventObject->invisible = 0;
sprite->invisible = 0;
berryTreeStage--;
if (sprite->animNum != berryTreeStage)
@@ -3831,15 +2814,15 @@ u8 do_berry_tree_growth_sparkle_1(struct MapObject *mapObject, struct Sprite *sp
sprite->data[1] = 2;
return 1;
}
- get_berry_tree_graphics(mapObject, sprite);
- FieldObjectSetRegularAnim(mapObject, sprite, 0x39);
+ get_berry_tree_graphics(eventObject, sprite);
+ EventObjectSetSingleMovement(eventObject, sprite, MOVEMENT_ACTION_START_ANIM_IN_DIRECTION);
sprite->data[1] = 1;
return 1;
}
-u8 sub_805D3EC(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_BerryTreeGrowth_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (FieldObjectExecRegularAnim(mapObject, sprite))
+ if (EventObjectExecSingleMovementAction(eventObject, sprite))
{
sprite->data[1] = 0;
return 1;
@@ -3847,28 +2830,28 @@ u8 sub_805D3EC(struct MapObject *mapObject, struct Sprite *sprite)
return 0;
}
-u8 do_berry_tree_growth_sparkle_2(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_BerryTreeGrowth_Step2(struct EventObject *eventObject, struct Sprite *sprite)
{
- mapObject->mapobj_bit_1 = 1;
+ eventObject->singleMovementActive = 1;
sprite->data[1] = 3;
sprite->data[2] = 0;
sprite->data[7] |= 2;
- gFieldEffectArguments[0] = mapObject->coords2.x;
- gFieldEffectArguments[1] = mapObject->coords2.y;
+ gFieldEffectArguments[0] = eventObject->currentCoords.x;
+ gFieldEffectArguments[1] = eventObject->currentCoords.y;
gFieldEffectArguments[2] = sprite->subpriority - 1;
gFieldEffectArguments[3] = sprite->oam.priority;
FieldEffectStart(FLDEFF_BERRY_TREE_GROWTH_SPARKLE);
return 1;
}
-u8 sub_805D458(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_BerryTreeGrowth_Step3(struct EventObject *eventObject, struct Sprite *sprite)
{
sprite->data[2]++;
- mapObject->mapobj_bit_13 = ((sprite->data[2] & 0x2) >> 1);
+ eventObject->invisible = ((sprite->data[2] & 0x2) >> 1);
sprite->animPaused = 1;
if (sprite->data[2] > 64)
{
- get_berry_tree_graphics(mapObject, sprite);
+ get_berry_tree_graphics(eventObject, sprite);
sprite->data[1] = 4;
sprite->data[2] = 0;
return 1;
@@ -3876,10 +2859,10 @@ u8 sub_805D458(struct MapObject *mapObject, struct Sprite *sprite)
return 0;
}
-u8 sub_805D4A8(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_BerryTreeGrowth_Step4(struct EventObject *eventObject, struct Sprite *sprite)
{
sprite->data[2]++;
- mapObject->mapobj_bit_13 = ((sprite->data[2] & 0x2) >> 1);
+ eventObject->invisible = ((sprite->data[2] & 0x2) >> 1);
sprite->animPaused = 1;
if (sprite->data[2] > 64)
{
@@ -3890,36 +2873,36 @@ u8 sub_805D4A8(struct MapObject *mapObject, struct Sprite *sprite)
return 0;
}
-fieldmap_object_cb(sub_805D4F4, sub_805D518, gUnknown_083752E4);
+movement_type_def(MovementType_FaceDownAndUp, gMovementTypeFuncs_FaceDownAndUp);
-u8 sub_805D538(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_FaceDownAndUp_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- npc_reset(mapObject, sprite);
+ ClearEventObjectMovement(eventObject, sprite);
sprite->data[1] = 1;
return 1;
}
-u8 sub_805D54C(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_FaceDownAndUp_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
+ EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(eventObject->facingDirection));
sprite->data[1] = 2;
return 1;
}
-u8 sub_805D578(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_FaceDownAndUp_Step2(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (FieldObjectExecRegularAnim(mapObject, sprite))
+ if (EventObjectExecSingleMovementAction(eventObject, sprite))
{
- sub_8064820(sprite, gUnknown_0837520C[Random() & 3]);
- mapObject->mapobj_bit_1 = 0;
+ SetMovementDelay(sprite, gMovementDelaysMedium[Random() & 3]);
+ eventObject->singleMovementActive = 0;
sprite->data[1] = 3;
}
return 0;
}
-u8 sub_805D5BC(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_FaceDownAndUp_Step3(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
+ if (WaitForMovementDelay(sprite) || EventObjectIsTrainerAndCloseToPlayer(eventObject))
{
sprite->data[1] = 4;
return 1;
@@ -3927,51 +2910,51 @@ u8 sub_805D5BC(struct MapObject *mapObject, struct Sprite *sprite)
return 0;
}
-u8 sub_805D5EC(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_FaceDownAndUp_Step4(struct EventObject *eventObject, struct Sprite *sprite)
{
u8 direction;
u8 directions[2];
- memcpy(directions, gUnknown_083752A0, 2);
- direction = sub_805CD60(mapObject, 1);
- if (direction == 0)
+ memcpy(directions, gUpAndDownDirections, 2);
+ direction = TryGetTrainerEncounterDirection(eventObject, 1);
+ if (direction == DIR_NONE)
{
direction = directions[Random() & 1];
}
- FieldObjectSetDirection(mapObject, direction);
+ SetEventObjectDirection(eventObject, direction);
sprite->data[1] = 1;
return 1;
}
-fieldmap_object_cb(sub_805D634, sub_805D658, gUnknown_083752F8);
+movement_type_def(MovementType_FaceLeftAndRight, gMovementTypeFuncs_FaceLeftAndRight);
-u8 sub_805D678(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_FaceLeftAndRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- npc_reset(mapObject, sprite);
+ ClearEventObjectMovement(eventObject, sprite);
sprite->data[1] = 1;
return 1;
}
-u8 sub_805D68C(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_FaceLeftAndRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
+ EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(eventObject->facingDirection));
sprite->data[1] = 2;
return 1;
}
-u8 sub_805D6B8(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_FaceLeftAndRight_Step2(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (FieldObjectExecRegularAnim(mapObject, sprite))
+ if (EventObjectExecSingleMovementAction(eventObject, sprite))
{
- sub_8064820(sprite, gUnknown_0837520C[Random() & 3]);
- mapObject->mapobj_bit_1 = 0;
+ SetMovementDelay(sprite, gMovementDelaysMedium[Random() & 3]);
+ eventObject->singleMovementActive = 0;
sprite->data[1] = 3;
}
return 0;
}
-u8 sub_805D6FC(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_FaceLeftAndRight_Step3(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
+ if (WaitForMovementDelay(sprite) || EventObjectIsTrainerAndCloseToPlayer(eventObject))
{
sprite->data[1] = 4;
return 1;
@@ -3979,51 +2962,51 @@ u8 sub_805D6FC(struct MapObject *mapObject, struct Sprite *sprite)
return 0;
}
-u8 sub_805D72C(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_FaceLeftAndRight_Step4(struct EventObject *eventObject, struct Sprite *sprite)
{
u8 direction;
u8 directions[2];
- memcpy(directions, gUnknown_083752C0, 2);
- direction = sub_805CD60(mapObject, 2);
- if (direction == 0)
+ memcpy(directions, gLeftAndRightDirections, 2);
+ direction = TryGetTrainerEncounterDirection(eventObject, 2);
+ if (direction == DIR_NONE)
{
direction = directions[Random() & 1];
}
- FieldObjectSetDirection(mapObject, direction);
+ SetEventObjectDirection(eventObject, direction);
sprite->data[1] = 1;
return 1;
}
-fieldmap_object_cb(sub_805D774, sub_805D798, gUnknown_0837530C);
+movement_type_def(MovementType_FaceUpAndLeft, gMovementTypeFuncs_FaceUpAndLeft);
-u8 sub_805D7B8(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_FaceUpAndLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- npc_reset(mapObject, sprite);
+ ClearEventObjectMovement(eventObject, sprite);
sprite->data[1] = 1;
return 1;
}
-u8 sub_805D7CC(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_FaceUpAndLeft_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
+ EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(eventObject->facingDirection));
sprite->data[1] = 2;
return 1;
}
-u8 sub_805D7F8(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_FaceUpAndLeft_Step2(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (FieldObjectExecRegularAnim(mapObject, sprite))
+ if (EventObjectExecSingleMovementAction(eventObject, sprite))
{
- sub_8064820(sprite, gUnknown_0837521C[Random() & 3]);
- mapObject->mapobj_bit_1 = 0;
+ SetMovementDelay(sprite, gMovementDelaysShort[Random() & 3]);
+ eventObject->singleMovementActive = 0;
sprite->data[1] = 3;
}
return 0;
}
-u8 sub_805D83C(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_FaceUpAndLeft_Step3(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
+ if (WaitForMovementDelay(sprite) || EventObjectIsTrainerAndCloseToPlayer(eventObject))
{
sprite->data[1] = 4;
return 1;
@@ -4031,51 +3014,51 @@ u8 sub_805D83C(struct MapObject *mapObject, struct Sprite *sprite)
return 0;
}
-u8 sub_805D86C(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_FaceUpAndLeft_Step4(struct EventObject *eventObject, struct Sprite *sprite)
{
u8 direction;
u8 directions[2];
- memcpy(directions, gUnknown_08375320, 2);
- direction = sub_805CD60(mapObject, 3);
- if (direction == 0)
+ memcpy(directions, gUpAndLeftDirections, 2);
+ direction = TryGetTrainerEncounterDirection(eventObject, 3);
+ if (direction == DIR_NONE)
{
direction = directions[Random() & 1];
}
- FieldObjectSetDirection(mapObject, direction);
+ SetEventObjectDirection(eventObject, direction);
sprite->data[1] = 1;
return 1;
}
-fieldmap_object_cb(sub_805D8B4, sub_805D8D8, gUnknown_08375324);
+movement_type_def(MovementType_FaceUpAndRight, gMovementTypeFuncs_FaceUpAndRight);
-u8 sub_805D8F8(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_FaceUpAndRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- npc_reset(mapObject, sprite);
+ ClearEventObjectMovement(eventObject, sprite);
sprite->data[1] = 1;
return 1;
}
-u8 sub_805D90C(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_FaceUpAndRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
+ EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(eventObject->facingDirection));
sprite->data[1] = 2;
return 1;
}
-u8 sub_805D938(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_FaceUpAndRight_Step2(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (FieldObjectExecRegularAnim(mapObject, sprite))
+ if (EventObjectExecSingleMovementAction(eventObject, sprite))
{
- sub_8064820(sprite, gUnknown_0837521C[Random() & 3]);
- mapObject->mapobj_bit_1 = 0;
+ SetMovementDelay(sprite, gMovementDelaysShort[Random() & 3]);
+ eventObject->singleMovementActive = 0;
sprite->data[1] = 3;
}
return 0;
}
-u8 sub_805D97C(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_FaceUpAndRight_Step3(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
+ if (WaitForMovementDelay(sprite) || EventObjectIsTrainerAndCloseToPlayer(eventObject))
{
sprite->data[1] = 4;
return 1;
@@ -4083,51 +3066,51 @@ u8 sub_805D97C(struct MapObject *mapObject, struct Sprite *sprite)
return 0;
}
-u8 sub_805D9AC(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_FaceUpAndRight_Step4(struct EventObject *eventObject, struct Sprite *sprite)
{
u8 direction;
u8 directions[2];
- memcpy(directions, gUnknown_08375338, 2);
- direction = sub_805CD60(mapObject, 4);
- if (direction == 0)
+ memcpy(directions, gUpAndRightDirections, 2);
+ direction = TryGetTrainerEncounterDirection(eventObject, 4);
+ if (direction == DIR_NONE)
{
direction = directions[Random() & 1];
}
- FieldObjectSetDirection(mapObject, direction);
+ SetEventObjectDirection(eventObject, direction);
sprite->data[1] = 1;
return 1;
}
-fieldmap_object_cb(sub_805D9F4, sub_805DA18, gUnknown_0837533C);
+movement_type_def(MovementType_FaceDownAndLeft, gMovementTypeFuncs_FaceDownAndLeft);
-u8 sub_805DA38(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_FaceDownAndLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- npc_reset(mapObject, sprite);
+ ClearEventObjectMovement(eventObject, sprite);
sprite->data[1] = 1;
return 1;
}
-u8 sub_805DA4C(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_FaceDownAndLeft_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
+ EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(eventObject->facingDirection));
sprite->data[1] = 2;
return 1;
}
-u8 sub_805DA78(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_FaceDownAndLeft_Step2(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (FieldObjectExecRegularAnim(mapObject, sprite))
+ if (EventObjectExecSingleMovementAction(eventObject, sprite))
{
- sub_8064820(sprite, gUnknown_0837521C[Random() & 3]);
- mapObject->mapobj_bit_1 = 0;
+ SetMovementDelay(sprite, gMovementDelaysShort[Random() & 3]);
+ eventObject->singleMovementActive = 0;
sprite->data[1] = 3;
}
return 0;
}
-u8 sub_805DABC(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_FaceDownAndLeft_Step3(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
+ if (WaitForMovementDelay(sprite) || EventObjectIsTrainerAndCloseToPlayer(eventObject))
{
sprite->data[1] = 4;
return 1;
@@ -4135,51 +3118,51 @@ u8 sub_805DABC(struct MapObject *mapObject, struct Sprite *sprite)
return 0;
}
-u8 sub_805DAEC(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_FaceDownAndLeft_Step4(struct EventObject *eventObject, struct Sprite *sprite)
{
u8 direction;
u8 directions[2];
- memcpy(directions, gUnknown_08375350, 2);
- direction = sub_805CD60(mapObject, 5);
- if (direction == 0)
+ memcpy(directions, gDownAndLeftDirections, 2);
+ direction = TryGetTrainerEncounterDirection(eventObject, 5);
+ if (direction == DIR_NONE)
{
direction = directions[Random() & 1];
}
- FieldObjectSetDirection(mapObject, direction);
+ SetEventObjectDirection(eventObject, direction);
sprite->data[1] = 1;
return 1;
}
-fieldmap_object_cb(sub_805DB34, sub_805DB58, gUnknown_08375354);
+movement_type_def(MovementType_FaceDownAndRight, gMovementTypeFuncs_FaceDownAndRight);
-u8 sub_805DB78(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_FaceDownAndRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- npc_reset(mapObject, sprite);
+ ClearEventObjectMovement(eventObject, sprite);
sprite->data[1] = 1;
return 1;
}
-u8 sub_805DB8C(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_FaceDownAndRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
+ EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(eventObject->facingDirection));
sprite->data[1] = 2;
return 1;
}
-u8 sub_805DBB8(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_FaceDownAndRight_Step2(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (FieldObjectExecRegularAnim(mapObject, sprite))
+ if (EventObjectExecSingleMovementAction(eventObject, sprite))
{
- sub_8064820(sprite, gUnknown_0837521C[Random() & 3]);
- mapObject->mapobj_bit_1 = 0;
+ SetMovementDelay(sprite, gMovementDelaysShort[Random() & 3]);
+ eventObject->singleMovementActive = 0;
sprite->data[1] = 3;
}
return 0;
}
-u8 sub_805DBFC(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_FaceDownAndRight_Step3(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
+ if (WaitForMovementDelay(sprite) || EventObjectIsTrainerAndCloseToPlayer(eventObject))
{
sprite->data[1] = 4;
return 1;
@@ -4187,51 +3170,51 @@ u8 sub_805DBFC(struct MapObject *mapObject, struct Sprite *sprite)
return 0;
}
-u8 sub_805DC2C(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_FaceDownAndRight_Step4(struct EventObject *eventObject, struct Sprite *sprite)
{
u8 direction;
u8 directions[2];
- memcpy(directions, gUnknown_08375368, 2);
- direction = sub_805CD60(mapObject, 6);
- if (direction == 0)
+ memcpy(directions, gDownAndRightDirections, 2);
+ direction = TryGetTrainerEncounterDirection(eventObject, 6);
+ if (direction == DIR_NONE)
{
direction = directions[Random() & 1];
}
- FieldObjectSetDirection(mapObject, direction);
+ SetEventObjectDirection(eventObject, direction);
sprite->data[1] = 1;
return 1;
}
-fieldmap_object_cb(sub_805DC74, sub_805DC98, gUnknown_0837536C);
+movement_type_def(MovementType_FaceDownUpAndLeft, gMovementTypeFuncs_FaceDownUpAndLeft);
-u8 sub_805DCB8(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_FaceDownUpAndLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- npc_reset(mapObject, sprite);
+ ClearEventObjectMovement(eventObject, sprite);
sprite->data[1] = 1;
return 1;
}
-u8 sub_805DCCC(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_FaceDownUpAndLeft_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
+ EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(eventObject->facingDirection));
sprite->data[1] = 2;
return 1;
}
-u8 sub_805DCF8(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_FaceDownUpAndLeft_Step2(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (FieldObjectExecRegularAnim(mapObject, sprite))
+ if (EventObjectExecSingleMovementAction(eventObject, sprite))
{
- sub_8064820(sprite, gUnknown_0837521C[Random() & 3]);
- mapObject->mapobj_bit_1 = 0;
+ SetMovementDelay(sprite, gMovementDelaysShort[Random() & 3]);
+ eventObject->singleMovementActive = 0;
sprite->data[1] = 3;
}
return 0;
}
-u8 sub_805DD3C(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_FaceDownUpAndLeft_Step3(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
+ if (WaitForMovementDelay(sprite) || EventObjectIsTrainerAndCloseToPlayer(eventObject))
{
sprite->data[1] = 4;
return 1;
@@ -4239,51 +3222,51 @@ u8 sub_805DD3C(struct MapObject *mapObject, struct Sprite *sprite)
return 0;
}
-u8 sub_805DD6C(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_FaceDownUpAndLeft_Step4(struct EventObject *eventObject, struct Sprite *sprite)
{
u8 direction;
u8 directions[4];
- memcpy(directions, gUnknown_08375380, 4);
- direction = sub_805CD60(mapObject, 7);
- if (direction == 0)
+ memcpy(directions, gDownUpAndLeftDirections, 4);
+ direction = TryGetTrainerEncounterDirection(eventObject, 7);
+ if (direction == DIR_NONE)
{
direction = directions[Random() & 3];
}
- FieldObjectSetDirection(mapObject, direction);
+ SetEventObjectDirection(eventObject, direction);
sprite->data[1] = 1;
return 1;
}
-fieldmap_object_cb(sub_805DDB4, sub_805DDD8, gUnknown_08375384);
+movement_type_def(MovementType_FaceDownUpAndRight, gMovementTypeFuncs_FaceDownUpAndRight);
-u8 sub_805DDF8(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_FaceDownUpAndRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- npc_reset(mapObject, sprite);
+ ClearEventObjectMovement(eventObject, sprite);
sprite->data[1] = 1;
return 1;
}
-u8 sub_805DE0C(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_FaceDownUpAndRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
+ EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(eventObject->facingDirection));
sprite->data[1] = 2;
return 1;
}
-u8 sub_805DE38(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_FaceDownUpAndRight_Step2(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (FieldObjectExecRegularAnim(mapObject, sprite))
+ if (EventObjectExecSingleMovementAction(eventObject, sprite))
{
- sub_8064820(sprite, gUnknown_0837521C[Random() & 3]);
- mapObject->mapobj_bit_1 = 0;
+ SetMovementDelay(sprite, gMovementDelaysShort[Random() & 3]);
+ eventObject->singleMovementActive = 0;
sprite->data[1] = 3;
}
return 0;
}
-u8 sub_805DE7C(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_FaceDownUpAndRight_Step3(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
+ if (WaitForMovementDelay(sprite) || EventObjectIsTrainerAndCloseToPlayer(eventObject))
{
sprite->data[1] = 4;
return 1;
@@ -4291,51 +3274,51 @@ u8 sub_805DE7C(struct MapObject *mapObject, struct Sprite *sprite)
return 0;
}
-u8 sub_805DEAC(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_FaceDownUpAndRight_Step4(struct EventObject *eventObject, struct Sprite *sprite)
{
u8 direction;
u8 directions[4];
- memcpy(directions, gUnknown_08375398, 4);
- direction = sub_805CD60(mapObject, 8);
- if (direction == 0)
+ memcpy(directions, gDownUpAndRightDirections, 4);
+ direction = TryGetTrainerEncounterDirection(eventObject, 8);
+ if (direction == DIR_NONE)
{
direction = directions[Random() & 3];
}
- FieldObjectSetDirection(mapObject, direction);
+ SetEventObjectDirection(eventObject, direction);
sprite->data[1] = 1;
return 1;
}
-fieldmap_object_cb(sub_805DEF4, sub_805DF18, gUnknown_0837539C);
+movement_type_def(MovementType_FaceUpLeftAndRight, gMovementTypeFuncs_FaceUpLeftAndRight);
-u8 sub_805DF38(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_FaceUpLeftAndRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- npc_reset(mapObject, sprite);
+ ClearEventObjectMovement(eventObject, sprite);
sprite->data[1] = 1;
return 1;
}
-u8 sub_805DF4C(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_FaceUpLeftAndRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
+ EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(eventObject->facingDirection));
sprite->data[1] = 2;
return 1;
}
-u8 sub_805DF78(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_FaceUpLeftAndRight_Step2(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (FieldObjectExecRegularAnim(mapObject, sprite))
+ if (EventObjectExecSingleMovementAction(eventObject, sprite))
{
- sub_8064820(sprite, gUnknown_0837521C[Random() & 3]);
- mapObject->mapobj_bit_1 = 0;
+ SetMovementDelay(sprite, gMovementDelaysShort[Random() & 3]);
+ eventObject->singleMovementActive = 0;
sprite->data[1] = 3;
}
return 0;
}
-u8 sub_805DFBC(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_FaceUpLeftAndRight_Step3(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
+ if (WaitForMovementDelay(sprite) || EventObjectIsTrainerAndCloseToPlayer(eventObject))
{
sprite->data[1] = 4;
return 1;
@@ -4343,51 +3326,51 @@ u8 sub_805DFBC(struct MapObject *mapObject, struct Sprite *sprite)
return 0;
}
-u8 sub_805DFEC(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_FaceUpLeftAndRight_Step4(struct EventObject *eventObject, struct Sprite *sprite)
{
u8 direction;
u8 directions[4];
- memcpy(directions, gUnknown_083753B0, 4);
- direction = sub_805CD60(mapObject, 9);
- if (direction == 0)
+ memcpy(directions, gUpLeftAndRightDirections, 4);
+ direction = TryGetTrainerEncounterDirection(eventObject, 9);
+ if (direction == DIR_NONE)
{
direction = directions[Random() & 3];
}
- FieldObjectSetDirection(mapObject, direction);
+ SetEventObjectDirection(eventObject, direction);
sprite->data[1] = 1;
return 1;
}
-fieldmap_object_cb(sub_805E034, sub_805E058, gUnknown_083753B4);
+movement_type_def(MovementType_FaceDownLeftAndRight, gMovementTypeFuncs_FaceDownLeftAndRight);
-u8 sub_805E078(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_FaceDownLeftAndRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- npc_reset(mapObject, sprite);
+ ClearEventObjectMovement(eventObject, sprite);
sprite->data[1] = 1;
return 1;
}
-u8 sub_805E08C(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_FaceDownLeftAndRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
+ EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(eventObject->facingDirection));
sprite->data[1] = 2;
return 1;
}
-u8 sub_805E0B8(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_FaceDownLeftAndRight_Step2(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (FieldObjectExecRegularAnim(mapObject, sprite))
+ if (EventObjectExecSingleMovementAction(eventObject, sprite))
{
- sub_8064820(sprite, gUnknown_0837521C[Random() & 3]);
- mapObject->mapobj_bit_1 = 0;
+ SetMovementDelay(sprite, gMovementDelaysShort[Random() & 3]);
+ eventObject->singleMovementActive = 0;
sprite->data[1] = 3;
}
return 0;
}
-u8 sub_805E0FC(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_FaceDownLeftAndRight_Step3(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
+ if (WaitForMovementDelay(sprite) || EventObjectIsTrainerAndCloseToPlayer(eventObject))
{
sprite->data[1] = 4;
return 1;
@@ -4395,826 +3378,820 @@ u8 sub_805E0FC(struct MapObject *mapObject, struct Sprite *sprite)
return 0;
}
-u8 sub_805E12C(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_FaceDownLeftAndRight_Step4(struct EventObject *eventObject, struct Sprite *sprite)
{
u8 direction;
u8 directions[4];
- memcpy(directions, gUnknown_083753C8, 4);
- direction = sub_805CD60(mapObject, 10);
- if (direction == 0)
+ memcpy(directions, gDownLeftAndRightDirections, 4);
+ direction = TryGetTrainerEncounterDirection(eventObject, 10);
+ if (direction == DIR_NONE)
{
direction = directions[Random() & 3];
}
- FieldObjectSetDirection(mapObject, direction);
+ SetEventObjectDirection(eventObject, direction);
sprite->data[1] = 1;
return 1;
}
-fieldmap_object_cb(sub_805E174, sub_805E198, gUnknown_083753CC);
+movement_type_def(MovementType_RotateCounterclockwise, gMovementTypeFuncs_RotateCounterclockwise);
-u8 sub_805E1B8(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_RotateCounterclockwise_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- npc_reset(mapObject, sprite);
- FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
+ ClearEventObjectMovement(eventObject, sprite);
+ EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(eventObject->facingDirection));
sprite->data[1] = 1;
return 1;
}
-u8 sub_805E1E4(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_RotateCounterclockwise_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (FieldObjectExecRegularAnim(mapObject, sprite))
+ if (EventObjectExecSingleMovementAction(eventObject, sprite))
{
- sub_8064820(sprite, 0x30);
+ SetMovementDelay(sprite, 48);
sprite->data[1] = 2;
}
return 0;
}
-u8 sub_805E208(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_RotateCounterclockwise_Step2(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
+ if (WaitForMovementDelay(sprite) || EventObjectIsTrainerAndCloseToPlayer(eventObject))
{
sprite->data[1] = 3;
}
return 0;
}
-u8 sub_805E234(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_RotateCounterclockwise_Step3(struct EventObject *eventObject, struct Sprite *sprite)
{
u8 direction;
u8 directions[5];
- memcpy(directions, gUnknown_083753DC, 5);
- direction = sub_805CD60(mapObject, 0);
- if (direction == 0)
+ memcpy(directions, gCounterclockwiseDirections, 5);
+ direction = TryGetTrainerEncounterDirection(eventObject, 0);
+ if (direction == DIR_NONE)
{
- direction = directions[mapObject->mapobj_unk_18];
+ direction = directions[eventObject->facingDirection];
}
- FieldObjectSetDirection(mapObject, direction);
+ SetEventObjectDirection(eventObject, direction);
sprite->data[1] = 0;
return 1;
}
-fieldmap_object_cb(sub_805E278, sub_803E29C, gUnknown_083753E4);
+movement_type_def(MovementType_RotateClockwise, gMovementTypeFuncs_RotateClockwise);
-u8 sub_805E2BC(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_RotateClockwise_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- npc_reset(mapObject, sprite);
- FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
+ ClearEventObjectMovement(eventObject, sprite);
+ EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(eventObject->facingDirection));
sprite->data[1] = 1;
return 1;
}
-u8 sub_805E2E8(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_RotateClockwise_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (FieldObjectExecRegularAnim(mapObject, sprite))
+ if (EventObjectExecSingleMovementAction(eventObject, sprite))
{
- sub_8064820(sprite, 0x30);
+ SetMovementDelay(sprite, 0x30);
sprite->data[1] = 2;
}
return 0;
}
-u8 sub_805E30C(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_RotateClockwise_Step2(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
+ if (WaitForMovementDelay(sprite) || EventObjectIsTrainerAndCloseToPlayer(eventObject))
{
sprite->data[1] = 3;
}
return 0;
}
-u8 sub_805E338(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_RotateClockwise_Step3(struct EventObject *eventObject, struct Sprite *sprite)
{
u8 direction;
u8 directions[5];
- memcpy(directions, gUnknown_083753F4, 5);
- direction = sub_805CD60(mapObject, 0);
- if (direction == 0)
+ memcpy(directions, gClockwiseDirections, 5);
+ direction = TryGetTrainerEncounterDirection(eventObject, 0);
+ if (direction == DIR_NONE)
{
- direction = directions[mapObject->mapobj_unk_18];
+ direction = directions[eventObject->facingDirection];
}
- FieldObjectSetDirection(mapObject, direction);
+ SetEventObjectDirection(eventObject, direction);
sprite->data[1] = 0;
return 1;
}
-fieldmap_object_cb(sub_805E37C, sub_805E3A0, gUnknown_083753FC);
+movement_type_def(MovementType_WalkBackAndForth, gMovementTypeFuncs_WalkBackAndForth);
-u8 sub_805E3C0(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_WalkBackAndForth_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- npc_reset(mapObject, sprite);
+ ClearEventObjectMovement(eventObject, sprite);
sprite->data[1] = 1;
return 1;
}
-u8 sub_805E3D4(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_WalkBackAndForth_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
u8 direction;
- direction = gUnknown_0836DC09[mapObject->animPattern];
- if (mapObject->mapobj_unk_21 != 0)
+ direction = gInitialMovementTypeFacingDirections[eventObject->movementType];
+ if (eventObject->directionSequenceIndex != 0)
{
direction = GetOppositeDirection(direction);
}
- FieldObjectSetDirection(mapObject, direction);
+ SetEventObjectDirection(eventObject, direction);
sprite->data[1] = 2;
return 1;
}
-u8 sub_805E40C(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_WalkBackAndForth_Step2(struct EventObject *eventObject, struct Sprite *sprite)
{
- u8 v0;
- u8 goSpeed0AnimId;
- if (mapObject->mapobj_unk_21 && mapObject->coords1.x == mapObject->coords2.x && mapObject->coords1.y == mapObject->coords2.y)
+ u8 collisionState;
+ u8 movementActionId;
+ if (eventObject->directionSequenceIndex && eventObject->initialCoords.x == eventObject->currentCoords.x && eventObject->initialCoords.y == eventObject->currentCoords.y)
{
- mapObject->mapobj_unk_21 = 0;
- FieldObjectSetDirection(mapObject, GetOppositeDirection(mapObject->placeholder18));
+ eventObject->directionSequenceIndex = 0;
+ SetEventObjectDirection(eventObject, GetOppositeDirection(eventObject->movementDirection));
}
- v0 = sub_805FF20(mapObject, mapObject->placeholder18);
- goSpeed0AnimId = GetGoSpeed0AnimId(mapObject->placeholder18);
- if (v0 == 1)
+ collisionState = GetCollisionInDirection(eventObject, eventObject->movementDirection);
+ movementActionId = GetWalkNormalMovementAction(eventObject->movementDirection);
+ if (collisionState == 1)
{
- mapObject->mapobj_unk_21 ++;
- FieldObjectSetDirection(mapObject, GetOppositeDirection(mapObject->placeholder18));
- goSpeed0AnimId = GetGoSpeed0AnimId(mapObject->placeholder18);
- v0 = sub_805FF20(mapObject, mapObject->placeholder18);
+ eventObject->directionSequenceIndex++;
+ SetEventObjectDirection(eventObject, GetOppositeDirection(eventObject->movementDirection));
+ movementActionId = GetWalkNormalMovementAction(eventObject->movementDirection);
+ collisionState = GetCollisionInDirection(eventObject, eventObject->movementDirection);
}
- if (v0 != 0)
+ if (collisionState != 0)
{
- goSpeed0AnimId = GetStepInPlaceDelay16AnimId(mapObject->mapobj_unk_18);
+ movementActionId = GetWalkInPlaceNormalMovementAction(eventObject->facingDirection);
}
- FieldObjectSetRegularAnim(mapObject, sprite, goSpeed0AnimId);
- mapObject->mapobj_bit_1 = 1;
+ EventObjectSetSingleMovement(eventObject, sprite, movementActionId);
+ eventObject->singleMovementActive = 1;
sprite->data[1] = 3;
return 1;
}
-u8 sub_805E4C4(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_WalkBackAndForth_Step3(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (FieldObjectExecRegularAnim(mapObject, sprite))
+ if (EventObjectExecSingleMovementAction(eventObject, sprite))
{
- mapObject->mapobj_bit_1 = 0;
+ eventObject->singleMovementActive = 0;
sprite->data[1] = 1;
}
return 0;
}
-u8 sub_805E4EC(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_WalkSequence_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- npc_reset(mapObject, sprite);
+ ClearEventObjectMovement(eventObject, sprite);
sprite->data[1] = 1;
return 1;
}
-u8 MoveFieldObjectInNextDirectionInSequence(struct MapObject *mapObject, struct Sprite *sprite, u8 *directionSequence)
+u8 MoveNextDirectionInSequence(struct EventObject *eventObject, struct Sprite *sprite, u8 *directionSequence)
{
- u8 v0;
- u8 goSpeed0AnimId;
- if (mapObject->mapobj_unk_21 == 3 && mapObject->coords1.x == mapObject->coords2.x && mapObject->coords1.y == mapObject->coords2.y)
+ u8 collisionState;
+ u8 movementActionId;
+ if (eventObject->directionSequenceIndex == 3 && eventObject->initialCoords.x == eventObject->currentCoords.x && eventObject->initialCoords.y == eventObject->currentCoords.y)
{
- mapObject->mapobj_unk_21 = 0;
+ eventObject->directionSequenceIndex = 0;
}
- FieldObjectSetDirection(mapObject, directionSequence[mapObject->mapobj_unk_21]);
- goSpeed0AnimId = GetGoSpeed0AnimId(mapObject->placeholder18);
- v0 = sub_805FF20(mapObject, mapObject->placeholder18);
- if (v0 == 1)
+ SetEventObjectDirection(eventObject, directionSequence[eventObject->directionSequenceIndex]);
+ movementActionId = GetWalkNormalMovementAction(eventObject->movementDirection);
+ collisionState = GetCollisionInDirection(eventObject, eventObject->movementDirection);
+ if (collisionState == 1)
{
- mapObject->mapobj_unk_21 ++;
- FieldObjectSetDirection(mapObject, directionSequence[mapObject->mapobj_unk_21]);
- goSpeed0AnimId = GetGoSpeed0AnimId(mapObject->placeholder18);
- v0 = sub_805FF20(mapObject, mapObject->placeholder18);
+ eventObject->directionSequenceIndex++;
+ SetEventObjectDirection(eventObject, directionSequence[eventObject->directionSequenceIndex]);
+ movementActionId = GetWalkNormalMovementAction(eventObject->movementDirection);
+ collisionState = GetCollisionInDirection(eventObject, eventObject->movementDirection);
}
- if (v0 != 0)
+ if (collisionState != 0)
{
- goSpeed0AnimId = GetStepInPlaceDelay16AnimId(mapObject->mapobj_unk_18);
+ movementActionId = GetWalkInPlaceNormalMovementAction(eventObject->facingDirection);
}
- FieldObjectSetRegularAnim(mapObject, sprite, goSpeed0AnimId);
- mapObject->mapobj_bit_1 = 1;
+ EventObjectSetSingleMovement(eventObject, sprite, movementActionId);
+ eventObject->singleMovementActive = 1;
sprite->data[1] = 2;
return 1;
}
-u8 sub_805E5B4(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_WalkSequence_Step2(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (FieldObjectExecRegularAnim(mapObject, sprite))
+ if (EventObjectExecSingleMovementAction(eventObject, sprite))
{
- mapObject->mapobj_bit_1 = 0;
+ eventObject->singleMovementActive = 0;
sprite->data[1] = 1;
}
return 0;
}
-fieldmap_object_cb(sub_805E5DC, sub_805E600, gUnknown_0837540C);
+movement_type_def(MovementType_WalkSequenceUpRightLeftDown, gMovementTypeFuncs_WalkSequenceUpRightLeftDown);
-u8 sub_805E620(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_WalkSequenceUpRightLeftDown_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
u8 directions[4];
- memcpy(directions, gUnknown_08375418, 4);
- if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.x == mapObject->coords2.x)
+ memcpy(directions, gUpRightLeftDownDirections, 4);
+ if (eventObject->directionSequenceIndex == 2 && eventObject->initialCoords.x == eventObject->currentCoords.x)
{
- mapObject->mapobj_unk_21 = 3;
+ eventObject->directionSequenceIndex = 3;
}
- return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+ return MoveNextDirectionInSequence(eventObject, sprite, directions);
}
-fieldmap_object_cb(sub_805E668, sub_805E68C, gUnknown_0837541C);
+movement_type_def(MovementType_WalkSequenceRightLeftDownUp, gMovementTypeFuncs_WalkSequenceRightLeftDownUp);
-u8 sub_805E6AC(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_WalkSequenceRightLeftDownUp_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
u8 directions[4];
- memcpy(directions, gUnknown_08375428, 4);
- if (mapObject->mapobj_unk_21 == 1 && mapObject->coords1.x == mapObject->coords2.x)
+ memcpy(directions, gRightLeftDownUpDirections, 4);
+ if (eventObject->directionSequenceIndex == 1 && eventObject->initialCoords.x == eventObject->currentCoords.x)
{
- mapObject->mapobj_unk_21 = 2;
+ eventObject->directionSequenceIndex = 2;
}
- return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+ return MoveNextDirectionInSequence(eventObject, sprite, directions);
}
-fieldmap_object_cb(sub_805E6F4, sub_805E718, gUnknown_0837542C);
+movement_type_def(MovementType_WalkSequenceDownUpRightLeft, gMovementTypeFuncs_WalkSequenceDownUpRightLeft);
-u8 sub_805E738(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_WalkSequenceDownUpRightLeft_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
u8 directions[4];
- memcpy(directions, gUnknown_08375438, 4);
- if (mapObject->mapobj_unk_21 == 1 && mapObject->coords1.y == mapObject->coords2.y)
+ memcpy(directions, gDownUpRightLeftDirections, 4);
+ if (eventObject->directionSequenceIndex == 1 && eventObject->initialCoords.y == eventObject->currentCoords.y)
{
- mapObject->mapobj_unk_21 = 2;
+ eventObject->directionSequenceIndex = 2;
}
- return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+ return MoveNextDirectionInSequence(eventObject, sprite, directions);
}
-fieldmap_object_cb(sub_805E780, sub_805E7A4, gUnknown_0837543C);
+movement_type_def(MovementType_WalkSequenceLeftDownUpRight, gMovementTypeFuncs_WalkSequenceLeftDownUpRight);
-u8 sub_805E7C4(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_WalkSequenceLeftDownUpRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
u8 directions[4];
- memcpy(directions, gUnknown_08375448, 4);
- if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.y == mapObject->coords2.y)
+ memcpy(directions, gLeftDownUpRightDirections, 4);
+ if (eventObject->directionSequenceIndex == 2 && eventObject->initialCoords.y == eventObject->currentCoords.y)
{
- mapObject->mapobj_unk_21 = 3;
+ eventObject->directionSequenceIndex = 3;
}
- return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+ return MoveNextDirectionInSequence(eventObject, sprite, directions);
}
+movement_type_def(MovementType_WalkSequenceUpLeftRightDown, gMovementTypeFuncs_WalkSequenceUpLeftRightDown);
-
-fieldmap_object_cb(sub_805E80C, sub_805E830, gUnknown_0837544C);
-
-u8 sub_805E850(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_WalkSequenceUpLeftRightDown_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
u8 directions[4];
- memcpy(directions, gUnknown_08375458, 4);
- if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.x == mapObject->coords2.x)
+ memcpy(directions, gUpLeftRightDownDirections, 4);
+ if (eventObject->directionSequenceIndex == 2 && eventObject->initialCoords.x == eventObject->currentCoords.x)
{
- mapObject->mapobj_unk_21 = 3;
+ eventObject->directionSequenceIndex = 3;
}
- return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+ return MoveNextDirectionInSequence(eventObject, sprite, directions);
}
-fieldmap_object_cb(sub_805E898, sub_805E8BC, gUnknown_0837545C);
+movement_type_def(MovementType_WalkSequenceLeftRightDownUp, gMovementTypeFuncs_WalkSequenceLeftRightDownUp);
-u8 sub_805E8DC(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_WalkSequenceLeftRightDownUp_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
u8 directions[4];
- memcpy(directions, gUnknown_08375468, 4);
- if (mapObject->mapobj_unk_21 == 1 && mapObject->coords1.x == mapObject->coords2.x)
+ memcpy(directions, gLeftRightDownUpDirections, 4);
+ if (eventObject->directionSequenceIndex == 1 && eventObject->initialCoords.x == eventObject->currentCoords.x)
{
- mapObject->mapobj_unk_21 = 2;
+ eventObject->directionSequenceIndex = 2;
}
- return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+ return MoveNextDirectionInSequence(eventObject, sprite, directions);
}
-fieldmap_object_cb(sub_805E924, sub_805E948, gUnknown_0837546C);
+movement_type_def(MovementType_WalkSequenceDownUpLeftRight, gMovementTypeFuncs_WalkSequenceDownUpLeftRight);
-u8 sub_805E968(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_WalkSequenceDownUpLeftRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
u8 directions[4];
- memcpy(directions, gUnknown_08375240, 4);
- if (mapObject->mapobj_unk_21 == 1 && mapObject->coords1.y == mapObject->coords2.y)
+ memcpy(directions, gStandardDirections, 4);
+ if (eventObject->directionSequenceIndex == 1 && eventObject->initialCoords.y == eventObject->currentCoords.y)
{
- mapObject->mapobj_unk_21 = 2;
+ eventObject->directionSequenceIndex = 2;
}
- return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+ return MoveNextDirectionInSequence(eventObject, sprite, directions);
}
-fieldmap_object_cb(sub_805E9B0, sub_805E9D4, gUnknown_08375478);
+movement_type_def(MovementType_WalkSequenceRightDownUpLeft, gMovementTypeFuncs_WalkSequenceRightDownUpLeft);
-u8 sub_805E9F4(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_WalkSequenceRightDownUpLeft_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
u8 directions[4];
- memcpy(directions, gUnknown_08375484, 4);
- if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.y == mapObject->coords2.y)
+ memcpy(directions, gRightDownUpLeftDirections, 4);
+ if (eventObject->directionSequenceIndex == 2 && eventObject->initialCoords.y == eventObject->currentCoords.y)
{
- mapObject->mapobj_unk_21 = 3;
+ eventObject->directionSequenceIndex = 3;
}
- return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+ return MoveNextDirectionInSequence(eventObject, sprite, directions);
}
-fieldmap_object_cb(sub_805EA3C, sub_805EA60, gUnknown_08375488);
+movement_type_def(MovementType_WalkSequenceLeftUpDownRight, gMovementTypeFuncs_WalkSequenceLeftUpDownRight);
-u8 sub_805EA80(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_WalkSequenceLeftUpDownRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
u8 directions[4];
- memcpy(directions, gUnknown_08375494, 4);
- if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.y == mapObject->coords2.y)
+ memcpy(directions, gLeftUpDownRightDirections, 4);
+ if (eventObject->directionSequenceIndex == 2 && eventObject->initialCoords.y == eventObject->currentCoords.y)
{
- mapObject->mapobj_unk_21 = 3;
+ eventObject->directionSequenceIndex = 3;
}
- return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+ return MoveNextDirectionInSequence(eventObject, sprite, directions);
}
-fieldmap_object_cb(sub_805EAC8, sub_805EAEC, gUnknown_08375498);
+movement_type_def(MovementType_WalkSequenceUpDownRightLeft, gMovementTypeFuncs_WalkSequenceUpDownRightLeft);
-u8 sub_805EB0C(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_WalkSequenceUpDownRightLeft_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
u8 directions[4];
- memcpy(directions, gUnknown_083754A4, 4);
- if (mapObject->mapobj_unk_21 == 1 && mapObject->coords1.y == mapObject->coords2.y)
+ memcpy(directions, gUpDownRightLeftDirections, 4);
+ if (eventObject->directionSequenceIndex == 1 && eventObject->initialCoords.y == eventObject->currentCoords.y)
{
- mapObject->mapobj_unk_21 = 2;
+ eventObject->directionSequenceIndex = 2;
}
- return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+ return MoveNextDirectionInSequence(eventObject, sprite, directions);
}
-fieldmap_object_cb(sub_805EB54, sub_805EB78, gUnknown_083754A8);
+movement_type_def(MovementType_WalkSequenceRightLeftUpDown, gMovementTypeFuncs_WalkSequenceRightLeftUpDown);
-u8 sub_805EB98(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_WalkSequenceRightLeftUpDown_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
u8 directions[4];
- memcpy(directions, gUnknown_083754B4, 4);
- if (mapObject->mapobj_unk_21 == 1 && mapObject->coords1.x == mapObject->coords2.x)
+ memcpy(directions, gRightLeftUpDownDirections, 4);
+ if (eventObject->directionSequenceIndex == 1 && eventObject->initialCoords.x == eventObject->currentCoords.x)
{
- mapObject->mapobj_unk_21 = 2;
+ eventObject->directionSequenceIndex = 2;
}
- return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+ return MoveNextDirectionInSequence(eventObject, sprite, directions);
}
-fieldmap_object_cb(sub_805EBE0, sub_805EC04, gUnknown_083754B8);
+movement_type_def(MovementType_WalkSequenceDownRightLeftUp, gMovementTypeFuncs_WalkSequenceDownRightLeftUp);
-u8 sub_805EC24(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_WalkSequenceDownRightLeftUp_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
u8 directions[4];
- memcpy(directions, gUnknown_083754C4, 4);
- if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.x == mapObject->coords2.x)
+ memcpy(directions, gDownRightLeftUpDirections, 4);
+ if (eventObject->directionSequenceIndex == 2 && eventObject->initialCoords.x == eventObject->currentCoords.x)
{
- mapObject->mapobj_unk_21 = 3;
+ eventObject->directionSequenceIndex = 3;
}
- return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+ return MoveNextDirectionInSequence(eventObject, sprite, directions);
}
-fieldmap_object_cb(sub_805EC6C, sub_805EC90, gUnknown_083754C8);
+movement_type_def(MovementType_WalkSequenceRightUpDownLeft, gMovementTypeFuncs_WalkSequenceRightUpDownLeft);
-u8 sub_805ECB0(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_WalkSequenceRightUpDownLeft_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
u8 directions[4];
- memcpy(directions, gUnknown_083754D4, 4);
- if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.y == mapObject->coords2.y)
+ memcpy(directions, gRightUpDownLeftDirections, 4);
+ if (eventObject->directionSequenceIndex == 2 && eventObject->initialCoords.y == eventObject->currentCoords.y)
{
- mapObject->mapobj_unk_21 = 3;
+ eventObject->directionSequenceIndex = 3;
}
- return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+ return MoveNextDirectionInSequence(eventObject, sprite, directions);
}
-fieldmap_object_cb(sub_805ECF8, sub_805ED1C, gUnknown_083754D8);
+movement_type_def(MovementType_WalkSequenceUpDownLeftRight, gMovementTypeFuncs_WalkSequenceUpDownLeftRight);
-u8 sub_805ED3C(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_WalkSequenceUpDownLeftRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
u8 directions[4];
- memcpy(directions, gUnknown_083754E4, 4);
- if (mapObject->mapobj_unk_21 == 1 && mapObject->coords1.y == mapObject->coords2.y)
+ memcpy(directions, gUpDownLeftRightDirections, 4);
+ if (eventObject->directionSequenceIndex == 1 && eventObject->initialCoords.y == eventObject->currentCoords.y)
{
- mapObject->mapobj_unk_21 = 2;
+ eventObject->directionSequenceIndex = 2;
}
- return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+ return MoveNextDirectionInSequence(eventObject, sprite, directions);
}
-fieldmap_object_cb(sub_805ED84, sub_805EDA8, gUnknown_083754E8);
+movement_type_def(MovementType_WalkSequenceLeftRightUpDown, gMovementTypeFuncs_WalkSequenceLeftRightUpDown);
-u8 sub_805EDC8(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_WalkSequenceLeftRightUpDown_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
u8 directions[4];
- memcpy(directions, gUnknown_083754F4, 4);
- if (mapObject->mapobj_unk_21 == 1 && mapObject->coords1.x == mapObject->coords2.x)
+ memcpy(directions, gLeftRightUpDownDirections, 4);
+ if (eventObject->directionSequenceIndex == 1 && eventObject->initialCoords.x == eventObject->currentCoords.x)
{
- mapObject->mapobj_unk_21 = 2;
+ eventObject->directionSequenceIndex = 2;
}
- return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+ return MoveNextDirectionInSequence(eventObject, sprite, directions);
}
-fieldmap_object_cb(sub_805EE10, sub_805EE34, gUnknown_083754F8);
+movement_type_def(MovementType_WalkSequenceDownLeftRightUp, gMovementTypeFuncs_WalkSequenceDownLeftRightUp);
-u8 sub_805EE54(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_WalkSequenceDownLeftRightUp_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
u8 directions[4];
- memcpy(directions, gUnknown_08375504, 4);
- if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.x == mapObject->coords2.x)
+ memcpy(directions, gDownLeftRightUpDirections, 4);
+ if (eventObject->directionSequenceIndex == 2 && eventObject->initialCoords.x == eventObject->currentCoords.x)
{
- mapObject->mapobj_unk_21 = 3;
+ eventObject->directionSequenceIndex = 3;
}
- return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+ return MoveNextDirectionInSequence(eventObject, sprite, directions);
}
-fieldmap_object_cb(sub_805EE9C, sub_805EEC0, gUnknown_08375508);
+movement_type_def(MovementType_WalkSequenceUpLeftDownRight, gMovementTypeFuncs_WalkSequenceUpLeftDownRight);
-u8 sub_805EEE0(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_WalkSequenceUpLeftDownRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
u8 directions[4];
- memcpy(directions, gUnknown_08375514, 4);
- if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.y == mapObject->coords2.y)
+ memcpy(directions, gUpLeftDownRightDirections, 4);
+ if (eventObject->directionSequenceIndex == 2 && eventObject->initialCoords.y == eventObject->currentCoords.y)
{
- mapObject->mapobj_unk_21 = 3;
+ eventObject->directionSequenceIndex = 3;
}
- return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+ return MoveNextDirectionInSequence(eventObject, sprite, directions);
}
-fieldmap_object_cb(sub_805EF28, sub_805EF4C, gUnknown_08375518);
+movement_type_def(MovementType_WalkSequenceDownRightUpLeft, gMovementTypeFuncs_WalkSequenceDownRightUpLeft);
-u8 sub_805EF6C(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_WalkSequenceDownRightUpLeft_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
u8 directions[4];
- memcpy(directions, gUnknown_08375524, 4);
- if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.y == mapObject->coords2.y)
+ memcpy(directions, gDownRightUpLeftDirections, 4);
+ if (eventObject->directionSequenceIndex == 2 && eventObject->initialCoords.y == eventObject->currentCoords.y)
{
- mapObject->mapobj_unk_21 = 3;
+ eventObject->directionSequenceIndex = 3;
}
- return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+ return MoveNextDirectionInSequence(eventObject, sprite, directions);
}
-fieldmap_object_cb(sub_805EFB4, sub_805EFD8, gUnknown_08375528);
+movement_type_def(MovementType_WalkSequenceLeftDownRightUp, gMovementTypeFuncs_WalkSequenceLeftDownRightUp);
-u8 sub_805EFF8(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_WalkSequenceLeftDownRightUp_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
u8 directions[4];
- memcpy(directions, gUnknown_08375534, 4);
- if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.x == mapObject->coords2.x)
+ memcpy(directions, gLeftDownRightUpDirections, 4);
+ if (eventObject->directionSequenceIndex == 2 && eventObject->initialCoords.x == eventObject->currentCoords.x)
{
- mapObject->mapobj_unk_21 = 3;
+ eventObject->directionSequenceIndex = 3;
}
- return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+ return MoveNextDirectionInSequence(eventObject, sprite, directions);
}
-fieldmap_object_cb(sub_805F040, sub_805F064, gUnknown_08375538);
+movement_type_def(MovementType_WalkSequenceRightUpLeftDown, gMovementTypeFuncs_WalkSequenceRightUpLeftDown);
-u8 sub_805F084(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_WalkSequenceRightUpLeftDown_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
u8 directions[4];
- memcpy(directions, gUnknown_08375544, 4);
- if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.x == mapObject->coords2.x)
+ memcpy(directions, gRightUpLeftDownDirections, 4);
+ if (eventObject->directionSequenceIndex == 2 && eventObject->initialCoords.x == eventObject->currentCoords.x)
{
- mapObject->mapobj_unk_21 = 3;
+ eventObject->directionSequenceIndex = 3;
}
- return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+ return MoveNextDirectionInSequence(eventObject, sprite, directions);
}
-fieldmap_object_cb(sub_805F0CC, sub_805F0F0, gUnknown_08375548);
+movement_type_def(MovementType_WalkSequenceUpRightDownLeft, gMovementTypeFuncs_WalkSequenceUpRightDownLeft);
-u8 sub_805F110(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_WalkSequenceUpRightDownLeft_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
u8 directions[4];
- memcpy(directions, gUnknown_08375554, 4);
- if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.y == mapObject->coords2.y)
+ memcpy(directions, gUpRightDownLeftDirections, 4);
+ if (eventObject->directionSequenceIndex == 2 && eventObject->initialCoords.y == eventObject->currentCoords.y)
{
- mapObject->mapobj_unk_21 = 3;
+ eventObject->directionSequenceIndex = 3;
}
- return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+ return MoveNextDirectionInSequence(eventObject, sprite, directions);
}
-fieldmap_object_cb(sub_805F158, sub_805F17C, gUnknown_08375558);
+movement_type_def(MovementType_WalkSequenceDownLeftUpRight, gMovementTypeFuncs_WalkSequenceDownLeftUpRight);
-u8 sub_805F19C(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_WalkSequenceDownLeftUpRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
u8 directions[4];
- memcpy(directions, gUnknown_08375564, 4);
- if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.y == mapObject->coords2.y)
+ memcpy(directions, gDownLeftUpRightDirections, 4);
+ if (eventObject->directionSequenceIndex == 2 && eventObject->initialCoords.y == eventObject->currentCoords.y)
{
- mapObject->mapobj_unk_21 = 3;
+ eventObject->directionSequenceIndex = 3;
}
- return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+ return MoveNextDirectionInSequence(eventObject, sprite, directions);
}
-fieldmap_object_cb(sub_805F1E4, sub_805F208, gUnknown_08375568);
+movement_type_def(MovementType_WalkSequenceLeftUpRightDown, gMovementTypeFuncs_WalkSequenceLeftUpRightDown);
-u8 sub_805F228(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_WalkSequenceLeftUpRightDown_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
u8 directions[4];
- memcpy(directions, gUnknown_08375574, 4);
- if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.x == mapObject->coords2.x)
+ memcpy(directions, gLeftUpRightDownDirections, 4);
+ if (eventObject->directionSequenceIndex == 2 && eventObject->initialCoords.x == eventObject->currentCoords.x)
{
- mapObject->mapobj_unk_21 = 3;
+ eventObject->directionSequenceIndex = 3;
}
- return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+ return MoveNextDirectionInSequence(eventObject, sprite, directions);
}
-fieldmap_object_cb(sub_805F270, sub_805F294, gUnknown_08375578);
+movement_type_def(MovementType_WalkSequenceRightDownLeftUp, gMovementTypeFuncs_WalkSequenceRightDownLeftUp);
-u8 sub_805F2B4(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_WalkSequenceRightDownLeftUp_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
u8 directions[4];
- memcpy(directions, gUnknown_08375584, 4);
- if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.x == mapObject->coords2.x)
+ memcpy(directions, gRightDownLeftUpDirections, 4);
+ if (eventObject->directionSequenceIndex == 2 && eventObject->initialCoords.x == eventObject->currentCoords.x)
{
- mapObject->mapobj_unk_21 = 3;
+ eventObject->directionSequenceIndex = 3;
}
- return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+ return MoveNextDirectionInSequence(eventObject, sprite, directions);
};
-fieldmap_object_cb(sub_805F2FC, sub_805F320, gUnknown_08375588);
+movement_type_def(MovementType_CopyPlayer, gMovementTypeFuncs_CopyPlayer);
-u8 mss_npc_reset_oampriv3_1_unk2_unk3(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_CopyPlayer_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- npc_reset(mapObject, sprite);
- if (mapObject->mapobj_unk_21 == 0)
+ ClearEventObjectMovement(eventObject, sprite);
+ if (eventObject->directionSequenceIndex == 0)
{
- mapObject->mapobj_unk_21 = player_get_direction_lower_nybble();
+ eventObject->directionSequenceIndex = GetPlayerFacingDirection();
}
sprite->data[1] = 1;
return 1;
}
-u8 sub_805F364(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_CopyPlayer_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_1C == 0xFF || gPlayerAvatar.tileTransitionState == T_TILE_CENTER)
+ if (gEventObjects[gPlayerAvatar.eventObjectId].movementActionId == 0xFF || gPlayerAvatar.tileTransitionState == T_TILE_CENTER)
{
return 0;
}
- return gUnknown_08375594[player_get_x22()](mapObject, sprite, player_get_direction_upper_nybble(), NULL);
+ return gCopyPlayerMovementFuncs[PlayerGetCopyableMovement()](eventObject, sprite, GetPlayerMovementDirection(), NULL);
}
-u8 sub_805F3C4(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_CopyPlayer_Step2(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (FieldObjectExecRegularAnim(mapObject, sprite))
+ if (EventObjectExecSingleMovementAction(eventObject, sprite))
{
- mapObject->mapobj_bit_1 = 0;
+ eventObject->singleMovementActive = 0;
sprite->data[1] = 1;
}
return 0;
}
-bool8 sub_805F3EC(struct MapObject *mapObject, struct Sprite *sprite, u8 a2, bool8 a3(u8))
+bool8 CopyablePlayerMovement_None(struct EventObject *eventObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8))
{
return 0;
}
-bool8 sub_805F3F0(struct MapObject *mapObject, struct Sprite *sprite, u8 a2, bool8 a3(u8))
+bool8 CopyablePlayerMovement_FaceDirection(struct EventObject *eventObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8))
{
- FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(state_to_direction(gUnknown_0836DC09[mapObject->animPattern], mapObject->mapobj_unk_21, a2)));
- mapObject->mapobj_bit_1 = 1;
+ EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(state_to_direction(gInitialMovementTypeFacingDirections[eventObject->movementType], eventObject->directionSequenceIndex, playerDirection)));
+ eventObject->singleMovementActive = 1;
sprite->data[1] = 2;
return 1;
}
-bool8 sub_805F438(struct MapObject *mapObject, struct Sprite *sprite, u8 a2, bool8 a3(u8))
+bool8 CopyablePlayerMovement_GoSpeed0(struct EventObject *eventObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8))
{
u32 direction;
s16 x;
s16 y;
- direction = a2;
- direction = state_to_direction(gUnknown_0836DC09[mapObject->animPattern], mapObject->mapobj_unk_21, direction);
- FieldObjectMoveDestCoords(mapObject, direction, &x, &y);
- FieldObjectSetRegularAnim(mapObject, sprite, GetGoSpeed0AnimId(direction));
- if (npc_block_way(mapObject, x, y, direction) || (a3 != NULL && !a3(MapGridGetMetatileBehaviorAt(x, y))))
+ direction = playerDirection;
+ direction = state_to_direction(gInitialMovementTypeFacingDirections[eventObject->movementType], eventObject->directionSequenceIndex, direction);
+ EventObjectMoveDestCoords(eventObject, direction, &x, &y);
+ EventObjectSetSingleMovement(eventObject, sprite, GetWalkNormalMovementAction(direction));
+ if (GetCollisionAtCoords(eventObject, x, y, direction) || (tileCallback != NULL && !tileCallback(MapGridGetMetatileBehaviorAt(x, y))))
{
- FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction));
+ EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(direction));
}
- mapObject->mapobj_bit_1 = 1;
+ eventObject->singleMovementActive = 1;
sprite->data[1] = 2;
return 1;
}
-bool8 sub_805F4F0(struct MapObject *mapObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCB(u8))
+bool8 CopyablePlayerMovement_GoSpeed1(struct EventObject *eventObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8))
{
u32 direction;
s16 x;
s16 y;
direction = playerDirection;
- direction = state_to_direction(gUnknown_0836DC09[mapObject->animPattern], mapObject->mapobj_unk_21, direction);
- FieldObjectMoveDestCoords(mapObject, direction, &x, &y);
- FieldObjectSetRegularAnim(mapObject, sprite, sub_8060744(direction));
- if (npc_block_way(mapObject, x, y, direction) || (tileCB != NULL && !tileCB(MapGridGetMetatileBehaviorAt(x, y))))
+ direction = state_to_direction(gInitialMovementTypeFacingDirections[eventObject->movementType], eventObject->directionSequenceIndex, direction);
+ EventObjectMoveDestCoords(eventObject, direction, &x, &y);
+ EventObjectSetSingleMovement(eventObject, sprite, GetWalkFastMovementAction(direction));
+ if (GetCollisionAtCoords(eventObject, x, y, direction) || (tileCallback != NULL && !tileCallback(MapGridGetMetatileBehaviorAt(x, y))))
{
- FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction));
+ EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(direction));
}
- mapObject->mapobj_bit_1 = TRUE;
+ eventObject->singleMovementActive = TRUE;
sprite->data[1] = 2;
return TRUE;
}
-bool8 sub_805F5A8(struct MapObject *mapObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCB(u8))
+bool8 CopyablePlayerMovement_GoSpeed2(struct EventObject *eventObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8))
{
u32 direction;
s16 x;
s16 y;
direction = playerDirection;
- direction = state_to_direction(gUnknown_0836DC09[mapObject->animPattern], mapObject->mapobj_unk_21, direction);
- FieldObjectMoveDestCoords(mapObject, direction, &x, &y);
- FieldObjectSetRegularAnim(mapObject, sprite, sub_806079C(direction));
- if (npc_block_way(mapObject, x, y, direction) || (tileCB != NULL && !tileCB(MapGridGetMetatileBehaviorAt(x, y))))
+ direction = state_to_direction(gInitialMovementTypeFacingDirections[eventObject->movementType], eventObject->directionSequenceIndex, direction);
+ EventObjectMoveDestCoords(eventObject, direction, &x, &y);
+ EventObjectSetSingleMovement(eventObject, sprite, GetWalkFastestMovementAction(direction));
+ if (GetCollisionAtCoords(eventObject, x, y, direction) || (tileCallback != NULL && !tileCallback(MapGridGetMetatileBehaviorAt(x, y))))
{
- FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction));
+ EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(direction));
}
- mapObject->mapobj_bit_1 = TRUE;
+ eventObject->singleMovementActive = TRUE;
sprite->data[1] = 2;
return TRUE;
}
-bool8 sub_805F660(struct MapObject *mapObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCB(u8))
+bool8 CopyablePlayerMovement_Slide(struct EventObject *eventObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8))
{
u32 direction;
s16 x;
s16 y;
direction = playerDirection;
- direction = state_to_direction(gUnknown_0836DC09[mapObject->animPattern], mapObject->mapobj_unk_21, direction);
- FieldObjectMoveDestCoords(mapObject, direction, &x, &y);
- FieldObjectSetRegularAnim(mapObject, sprite, sub_80607C8(direction));
- if (npc_block_way(mapObject, x, y, direction) || (tileCB != NULL && !tileCB(MapGridGetMetatileBehaviorAt(x, y))))
+ direction = state_to_direction(gInitialMovementTypeFacingDirections[eventObject->movementType], eventObject->directionSequenceIndex, direction);
+ EventObjectMoveDestCoords(eventObject, direction, &x, &y);
+ EventObjectSetSingleMovement(eventObject, sprite, GetSlideMovementAction(direction));
+ if (GetCollisionAtCoords(eventObject, x, y, direction) || (tileCallback != NULL && !tileCallback(MapGridGetMetatileBehaviorAt(x, y))))
{
- FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction));
+ EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(direction));
}
- mapObject->mapobj_bit_1 = TRUE;
+ eventObject->singleMovementActive = TRUE;
sprite->data[1] = 2;
return TRUE;
}
-bool8 cph_IM_DIFFERENT(struct MapObject *mapObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCB(u8))
+bool8 cph_IM_DIFFERENT(struct EventObject *eventObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8))
{
u32 direction;
direction = playerDirection;
- direction = state_to_direction(gUnknown_0836DC09[mapObject->animPattern], mapObject->mapobj_unk_21, direction);
- FieldObjectSetRegularAnim(mapObject, sprite, sub_806084C(direction));
- mapObject->mapobj_bit_1 = TRUE;
+ direction = state_to_direction(gInitialMovementTypeFacingDirections[eventObject->movementType], eventObject->directionSequenceIndex, direction);
+ EventObjectSetSingleMovement(eventObject, sprite, GetJumpInPlaceMovementAction(direction));
+ eventObject->singleMovementActive = TRUE;
sprite->data[1] = 2;
return TRUE;
}
-bool8 sub_805F760(struct MapObject *mapObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCB(u8))
+bool8 CopyablePlayerMovement_GoSpeed4(struct EventObject *eventObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8))
{
u32 direction;
s16 x;
s16 y;
direction = playerDirection;
- direction = state_to_direction(gUnknown_0836DC09[mapObject->animPattern], mapObject->mapobj_unk_21, direction);
- FieldObjectMoveDestCoords(mapObject, direction, &x, &y);
- FieldObjectSetRegularAnim(mapObject, sprite, sub_80608A4(direction));
- if (npc_block_way(mapObject, x, y, direction) || (tileCB != NULL && !tileCB(MapGridGetMetatileBehaviorAt(x, y))))
+ direction = state_to_direction(gInitialMovementTypeFacingDirections[eventObject->movementType], eventObject->directionSequenceIndex, direction);
+ EventObjectMoveDestCoords(eventObject, direction, &x, &y);
+ EventObjectSetSingleMovement(eventObject, sprite, GetJumpMovementAction(direction));
+ if (GetCollisionAtCoords(eventObject, x, y, direction) || (tileCallback != NULL && !tileCallback(MapGridGetMetatileBehaviorAt(x, y))))
{
- FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction));
+ EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(direction));
}
- mapObject->mapobj_bit_1 = TRUE;
+ eventObject->singleMovementActive = TRUE;
sprite->data[1] = 2;
return TRUE;
}
-bool8 oac_hopping(struct MapObject *mapObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCB(u8))
+bool8 CopyablePlayerMovement_Jump(struct EventObject *eventObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8))
{
u32 direction;
s16 x;
s16 y;
direction = playerDirection;
- direction = state_to_direction(gUnknown_0836DC09[mapObject->animPattern], mapObject->mapobj_unk_21, direction);
- x = mapObject->coords2.x;
- y = mapObject->coords2.y;
- sub_8060320(direction, &x, &y, 2, 2);
- FieldObjectSetRegularAnim(mapObject, sprite, GetJumpLedgeAnimId(direction));
- if (npc_block_way(mapObject, x, y, direction) || (tileCB != NULL && !tileCB(MapGridGetMetatileBehaviorAt(x, y))))
+ direction = state_to_direction(gInitialMovementTypeFacingDirections[eventObject->movementType], eventObject->directionSequenceIndex, direction);
+ x = eventObject->currentCoords.x;
+ y = eventObject->currentCoords.y;
+ MoveCoordsInDirection(direction, &x, &y, 2, 2);
+ EventObjectSetSingleMovement(eventObject, sprite, GetJump2MovementAction(direction));
+ if (GetCollisionAtCoords(eventObject, x, y, direction) || (tileCallback != NULL && !tileCallback(MapGridGetMetatileBehaviorAt(x, y))))
{
- FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction));
+ EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(direction));
}
- mapObject->mapobj_bit_1 = TRUE;
+ eventObject->singleMovementActive = TRUE;
sprite->data[1] = 2;
return TRUE;
}
-fieldmap_object_cb(sub_805F8E0, sub_805F904, gUnknown_083755C0);
+movement_type_def(MovementType_CopyPlayerInGrass, gMovementTypeFuncs_CopyPlayerInGrass);
-u8 mss_08062EA4(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_CopyPlayerInGrass_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_1C == 0xFF || gPlayerAvatar.tileTransitionState == T_TILE_CENTER)
+ if (gEventObjects[gPlayerAvatar.eventObjectId].movementActionId == 0xFF || gPlayerAvatar.tileTransitionState == T_TILE_CENTER)
{
return 0;
}
- return gUnknown_08375594[player_get_x22()](mapObject, sprite, player_get_direction_upper_nybble(), MetatileBehavior_IsPokeGrass);
+ return gCopyPlayerMovementFuncs[PlayerGetCopyableMovement()](eventObject, sprite, GetPlayerMovementDirection(), MetatileBehavior_IsPokeGrass);
}
-u8 sub_805F9F8(struct MapObject *, struct Sprite *);
-
-void FieldObjectCB_TreeDisguise(struct Sprite *sprite)
+void MovementType_TreeDisguise(struct Sprite *sprite)
{
- struct MapObject *mapObject;
- mapObject = &gMapObjects[sprite->data[0]];
- if (mapObject->mapobj_unk_21 == 0 || (mapObject->mapobj_unk_21 == 1 && sprite->data[7] == 0))
+ struct EventObject *eventObject;
+ eventObject = &gEventObjects[sprite->data[0]];
+ if (eventObject->directionSequenceIndex == 0 || (eventObject->directionSequenceIndex == 1 && sprite->data[7] == 0))
{
- FieldObjectGetLocalIdAndMap(mapObject, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]);
- mapObject->mapobj_unk_1A = FieldEffectStart(FLDEFF_TREE_DISGUISE);
- mapObject->mapobj_unk_21 = 1;
- sprite->data[7] ++;
+ EventObjectGetLocalIdAndMap(eventObject, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]);
+ eventObject->fieldEffectSpriteId = FieldEffectStart(FLDEFF_TREE_DISGUISE);
+ eventObject->directionSequenceIndex = 1;
+ sprite->data[7]++;
}
- meta_step(&gMapObjects[sprite->data[0]], sprite, sub_805F9F8);
+ UpdateEventObjectCurrentMovement(&gEventObjects[sprite->data[0]], sprite, MovementType_Disguise_Callback);
}
-u8 sub_805F9F8(struct MapObject *mapObject, struct Sprite *sprite)
+static u8 MovementType_Disguise_Callback(struct EventObject *eventObject, struct Sprite *sprite)
{
- npc_reset(mapObject, sprite);
+ ClearEventObjectMovement(eventObject, sprite);
return 0;
}
-void FieldObjectCB_MountainDisguise(struct Sprite *sprite)
+void MovementType_MountainDisguise(struct Sprite *sprite)
{
- struct MapObject *mapObject;
- mapObject = &gMapObjects[sprite->data[0]];
- if (mapObject->mapobj_unk_21 == 0 || (mapObject->mapobj_unk_21 == 1 && sprite->data[7] == 0))
+ struct EventObject *eventObject;
+ eventObject = &gEventObjects[sprite->data[0]];
+ if (eventObject->directionSequenceIndex == 0 || (eventObject->directionSequenceIndex == 1 && sprite->data[7] == 0))
{
- FieldObjectGetLocalIdAndMap(mapObject, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]);
- mapObject->mapobj_unk_1A = FieldEffectStart(FLDEFF_MOUNTAIN_DISGUISE);
- mapObject->mapobj_unk_21 = 1;
- sprite->data[7] ++;
+ EventObjectGetLocalIdAndMap(eventObject, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]);
+ eventObject->fieldEffectSpriteId = FieldEffectStart(FLDEFF_MOUNTAIN_DISGUISE);
+ eventObject->directionSequenceIndex = 1;
+ sprite->data[7]++;
}
- meta_step(&gMapObjects[sprite->data[0]], sprite, sub_805F9F8);
+ UpdateEventObjectCurrentMovement(&gEventObjects[sprite->data[0]], sprite, MovementType_Disguise_Callback);
}
-u8 sub_805FAD8(struct MapObject *mapObject, struct Sprite *sprite);
-
-void FieldObjectCB_Hidden1(struct Sprite *sprite)
+void MovementType_Hidden(struct Sprite *sprite)
{
if (sprite->data[7] == 0)
{
- gMapObjects[sprite->data[0]].mapobj_bit_26 = 1;
+ gEventObjects[sprite->data[0]].fixedPriority = 1;
sprite->subspriteMode = 2;
sprite->oam.priority = 3;
- sprite->data[7] ++;
+ sprite->data[7]++;
}
- meta_step(&gMapObjects[sprite->data[0]], sprite, sub_805FAD8);
+ UpdateEventObjectCurrentMovement(&gEventObjects[sprite->data[0]], sprite, MovementType_Hidden_Callback);
}
-u8 sub_805FAD8(struct MapObject *mapObject, struct Sprite *sprite)
+static u8 MovementType_Hidden_Callback(struct EventObject *eventObject, struct Sprite *sprite)
{
- return gUnknown_083755CC[sprite->data[1]](mapObject, sprite);
+ return gMovementTypeFuncs_Hidden[sprite->data[1]](eventObject, sprite);
}
-u8 sub_805FAF8(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_Hidden_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- npc_reset(mapObject, sprite);
+ ClearEventObjectMovement(eventObject, sprite);
return 0;
}
-u8 sub_805FB04(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_MoveInPlace_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (FieldObjectExecRegularAnim(mapObject, sprite))
+ if (EventObjectExecSingleMovementAction(eventObject, sprite))
{
sprite->data[1] = 0;
}
return 0;
}
-fieldmap_object_cb(sub_805FB20, sub_805FB44, gUnknown_083755D0);
+movement_type_def(MovementType_WalkInPlace, gMovementTypeFuncs_WalkInPlace);
-u8 sub_805FB64(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_WalkInPlace_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- npc_reset(mapObject, sprite);
- FieldObjectSetRegularAnim(mapObject, sprite, GetStepInPlaceDelay16AnimId(mapObject->mapobj_unk_18));
+ ClearEventObjectMovement(eventObject, sprite);
+ EventObjectSetSingleMovement(eventObject, sprite, GetWalkInPlaceNormalMovementAction(eventObject->facingDirection));
sprite->data[1] = 1;
return 1;
}
-fieldmap_object_cb(sub_805FB90, sub_805FBB4, gUnknown_083755D8);
+movement_type_def(MovementType_JogInPlace, gMovementTypeFuncs_JogInPlace);
-u8 sub_805FBD4(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_JogInPlace_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- npc_reset(mapObject, sprite);
- FieldObjectSetRegularAnim(mapObject, sprite, GetStepInPlaceDelay8AnimId(mapObject->mapobj_unk_18));
+ ClearEventObjectMovement(eventObject, sprite);
+ EventObjectSetSingleMovement(eventObject, sprite, GetWalkInPlaceFastMovementAction(eventObject->facingDirection));
sprite->data[1] = 1;
return 1;
}
-fieldmap_object_cb(sub_805FC00, sub_805FC24, gUnknown_083755E0);
+movement_type_def(MovementType_RunInPlace, gMovementTypeFuncs_RunInPlace);
-u8 sub_805FC44(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_RunInPlace_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- npc_reset(mapObject, sprite);
- FieldObjectSetRegularAnim(mapObject, sprite, GetStepInPlaceDelay4AnimId(mapObject->mapobj_unk_18));
+ ClearEventObjectMovement(eventObject, sprite);
+ EventObjectSetSingleMovement(eventObject, sprite, GetWalkInPlaceFastestMovementAction(eventObject->facingDirection));
sprite->data[1] = 1;
return 1;
}
-fieldmap_object_cb(sub_805FC70, sub_805FC94, gUnknown_083755E8);
+movement_type_def(MovementType_Invisible, gMovementTypeFuncs_Invisible);
-u8 sub_805FCB4(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_Invisible_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- npc_reset(mapObject, sprite);
- FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
- mapObject->mapobj_bit_13 = 1;
+ ClearEventObjectMovement(eventObject, sprite);
+ EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(eventObject->facingDirection));
+ eventObject->invisible = 1;
sprite->data[1] = 1;
return 1;
}
-u8 sub_805FCE8(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_Invisible_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (FieldObjectExecRegularAnim(mapObject, sprite))
+ if (EventObjectExecSingleMovementAction(eventObject, sprite))
{
sprite->data[1] = 2;
return 1;
@@ -5222,101 +4199,99 @@ u8 sub_805FCE8(struct MapObject *mapObject, struct Sprite *sprite)
return 0;
}
-u8 sub_805FD08(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementType_Invisible_Step2(struct EventObject *eventObject, struct Sprite *sprite)
{
- mapObject->mapobj_bit_1 = 0;
+ eventObject->singleMovementActive = 0;
return 0;
}
-void sub_805FC70(struct Sprite *sprite);
-
-void npc_reset(struct MapObject *mapObject, struct Sprite *sprite)
+static void ClearEventObjectMovement(struct EventObject *eventObject, struct Sprite *sprite)
{
- mapObject->mapobj_bit_1 = 0;
- mapObject->mapobj_bit_6 = 0;
- mapObject->mapobj_bit_7 = 0;
- mapObject->mapobj_unk_1C = 0xff;
+ eventObject->singleMovementActive = 0;
+ eventObject->heldMovementActive = 0;
+ eventObject->heldMovementFinished = 0;
+ eventObject->movementActionId = 0xff;
sprite->data[1] = 0;
}
-u8 FieldObjectDirectionToImageAnimId(u8 direction)
+u8 GetFaceDirectionAnimNum(u8 direction)
{
- return gUnknown_083755F4[direction];
+ return gFaceDirectionAnimNums[direction];
}
-u8 get_go_image_anim_num(u8 direction)
+u8 GetMoveDirectionAnimNum(u8 direction)
{
- return gUnknown_083755FD[direction];
+ return gMoveDirectionAnimNums[direction];
}
-u8 get_go_fast_image_anim_num(u8 direction)
+u8 GetMoveDirectionFastAnimNum(u8 direction)
{
- return gUnknown_08375606[direction];
+ return gMoveDirectionFastAnimNums[direction];
}
-u8 get_go_faster_image_anim_num(u8 direction)
+u8 GetMoveDirectionFasterAnimNum(u8 direction)
{
- return gUnknown_0837560F[direction];
+ return gMoveDirectionFasterAnimNums[direction];
}
-u8 sub_805FD78(u8 direction)
+u8 GetMoveDirectionFastestAnimNum(u8 direction)
{
- return gUnknown_08375618[direction];
+ return gMoveDirectionFastestAnimNums[direction];
}
-u8 sub_805FD88(u8 direction)
+u8 GetJumpSpecialDirectionAnimNum(u8 direction)
{
- return gUnknown_08375621[direction];
+ return gJumpSpecialDirectionAnimNums[direction];
}
-u8 sub_805FD98(u8 direction)
+u8 GetAcroWheelieDirectionAnimNum(u8 direction)
{
- return gUnknown_0837562A[direction];
+ return gAcroWheelieDirectionAnimNums[direction];
}
-u8 unref_sub_805FDA8(u8 direction)
+u8 Unref_GetAnimNums_08375633(u8 direction)
{
- return gUnknown_08375633[direction];
+ return gUnrefAnimNums_08375633[direction];
}
-u8 sub_805FDB8(u8 direction)
+u8 GetAcroEndWheelieDirectionAnimNum(u8 direction)
{
- return gUnknown_0837563C[direction];
+ return gAcroEndWheelieDirectionAnimNums[direction];
}
-u8 sub_805FDC8(u8 direction)
+u8 GetAcroUnusedActionDirectionAnimNum(u8 direction)
{
- return gUnknown_08375645[direction];
+ return gAcroUnusedActionDirectionAnimNums[direction];
}
-u8 sub_805FDD8(u8 direction)
+u8 GetAcroWheeliePedalDirectionAnimNum(u8 direction)
{
- return gUnknown_0837564E[direction];
+ return gAcroWheeliePedalDirectionAnimNums[direction];
}
-u8 sub_805FDE8(u8 direction)
+u8 GetFishingDirectionAnimNum(u8 direction)
{
- return gUnknown_08375657[direction];
+ return gFishingDirectionAnimNums[direction];
}
-u8 sub_805FDF8(u8 direction)
+u8 GetFishingNoCatchDirectionAnimNum(u8 direction)
{
- return gUnknown_08375660[direction];
+ return gFishingNoCatchDirectionAnimNums[direction];
}
-u8 sub_805FE08(u8 direction)
+u8 GetFishingBiteDirectionAnimNum(u8 direction)
{
- return gUnknown_08375669[direction];
+ return gFishingBiteDirectionAnimNums[direction];
}
-u8 get_run_image_anim_num(u8 direction)
+u8 GetRunningDirectionAnimNum(u8 direction)
{
- return gUnknown_08375672[direction];
+ return gRunningDirectionAnimNums[direction];
}
-void sub_805FE28(struct MapObject *mapObject, struct Sprite *sprite, u8 animNum)
+void sub_805FE28(struct EventObject *eventObject, struct Sprite *sprite, u8 animNum)
{
- if (!mapObject->mapobj_bit_12)
+ if (!eventObject->inanimate)
{
sprite->animNum = animNum;
if (sprite->animCmdIndex == 1)
@@ -5330,10 +4305,10 @@ void sub_805FE28(struct MapObject *mapObject, struct Sprite *sprite, u8 animNum)
}
}
-void sub_805FE64(struct MapObject *mapObject, struct Sprite *sprite, u8 animNum)
+void sub_805FE64(struct EventObject *eventObject, struct Sprite *sprite, u8 animNum)
{
u8 animCmdIndex;
- if (!mapObject->mapobj_bit_12)
+ if (!eventObject->inanimate)
{
sprite->animNum = animNum;
animCmdIndex = 3;
@@ -5345,139 +4320,129 @@ void sub_805FE64(struct MapObject *mapObject, struct Sprite *sprite, u8 animNum)
}
}
-u8 sub_805FE90(s16 a0, s16 a1, s16 a2, s16 a3)
+static u8 GetDirectionToFace(s16 x1, s16 y1, s16 x2, s16 y2)
{
- if (a0 > a2)
- {
+ if (x1 > x2)
return DIR_WEST;
- } else if (a0 < a2)
- {
+ if (x1 < x2)
return DIR_EAST;
- } else if (a1 > a3)
- {
+ if (y1 > y2)
return DIR_NORTH;
- } else
- {
- return DIR_SOUTH;
- }
+ return DIR_SOUTH;
}
-void npc_set_running_behaviour_etc(struct MapObject *mapObject, u8 animPattern)
+void SetTrainerMovementType(struct EventObject *eventObject, u8 movementType)
{
- mapObject->animPattern = animPattern;
- mapObject->mapobj_unk_21 = 0;
- mapObject->animId = 0;
- gSprites[mapObject->spriteId].callback = gUnknown_0836DA88[animPattern];
- gSprites[mapObject->spriteId].data[1] = 0;
+ eventObject->movementType = movementType;
+ eventObject->directionSequenceIndex = 0;
+ eventObject->playerCopyableMovement = 0;
+ gSprites[eventObject->spriteId].callback = sMovementTypeCallbacks[movementType];
+ gSprites[eventObject->spriteId].data[1] = 0;
}
-u8 npc_running_behaviour_by_direction(u8 direction)
+u8 GetTrainerFacingDirectionMovementType(u8 direction)
{
- return gUnknown_0837567B[direction];
+ return gTrainerFacingDirectionMovementTypes[direction];
}
-u8 sub_805FF20(struct MapObject *mapObject, u8 direction)
+static u8 GetCollisionInDirection(struct EventObject *eventObject, u8 direction)
{
s16 x;
s16 y;
- x = mapObject->coords2.x;
- y = mapObject->coords2.y;
+ x = eventObject->currentCoords.x;
+ y = eventObject->currentCoords.y;
MoveCoords(direction, &x, &y);
- return npc_block_way(mapObject, x, y, direction);
+ return GetCollisionAtCoords(eventObject, x, y, direction);
}
-bool8 IsCoordOutsideFieldObjectMovementRect(struct MapObject *mapObject, s16 x, s16 y);
-static bool8 DoesObjectCollideWithObjectAt(struct MapObject *mapObject, s16 x, s16 y);
-bool8 IsMetatileDirectionallyImpassable(struct MapObject *mapObject, s16 x, s16 y, u8 direction);
-
-u8 npc_block_way(struct MapObject *mapObject, s16 x, s16 y, u32 dirn)
+u8 GetCollisionAtCoords(struct EventObject *eventObject, s16 x, s16 y, u32 dirn)
{
u8 direction;
direction = dirn;
- if (IsCoordOutsideFieldObjectMovementRect(mapObject, x, y))
+ if (IsCoordOutsideEventObjectMovementRange(eventObject, x, y))
return 1;
- else if (MapGridIsImpassableAt(x, y) || GetMapBorderIdAt(x, y) == -1 || IsMetatileDirectionallyImpassable(mapObject, x, y, direction))
+ else if (MapGridIsImpassableAt(x, y) || GetMapBorderIdAt(x, y) == -1 || IsMetatileDirectionallyImpassable(eventObject, x, y, direction))
return 2;
- else if (mapObject->mapobj_bit_15 && !CanCameraMoveInDirection(direction))
+ else if (eventObject->trackedByCamera && !CanCameraMoveInDirection(direction))
return 2;
- else if (IsZCoordMismatchAt(mapObject->mapobj_unk_0B_0, x, y))
+ else if (IsZCoordMismatchAt(eventObject->currentElevation, x, y))
return 3;
- else if (DoesObjectCollideWithObjectAt(mapObject, x, y))
+ else if (DoesObjectCollideWithObjectAt(eventObject, x, y))
return 4;
return 0;
}
-u8 sub_8060024(struct MapObject *mapObject, s16 x, s16 y, u8 direction)
+u8 GetCollisionFlagsAtCoords(struct EventObject *eventObject, s16 x, s16 y, u8 direction)
{
u8 flags = 0;
- if (IsCoordOutsideFieldObjectMovementRect(mapObject, x, y))
+ if (IsCoordOutsideEventObjectMovementRange(eventObject, x, y))
flags |= 1;
- if (MapGridIsImpassableAt(x, y) || GetMapBorderIdAt(x, y) == -1 || IsMetatileDirectionallyImpassable(mapObject, x, y, direction) || (mapObject->mapobj_bit_15 && !CanCameraMoveInDirection(direction)))
+ if (MapGridIsImpassableAt(x, y) || GetMapBorderIdAt(x, y) == -1 || IsMetatileDirectionallyImpassable(eventObject, x, y, direction) || (eventObject->trackedByCamera && !CanCameraMoveInDirection(direction)))
flags |= 2;
- if (IsZCoordMismatchAt(mapObject->mapobj_unk_0B_0, x, y))
+ if (IsZCoordMismatchAt(eventObject->currentElevation, x, y))
flags |= 4;
- if (DoesObjectCollideWithObjectAt(mapObject, x, y))
+ if (DoesObjectCollideWithObjectAt(eventObject, x, y))
flags |= 8;
return flags;
}
-bool8 IsCoordOutsideFieldObjectMovementRect(struct MapObject *mapObject, s16 x, s16 y)
+static bool8 IsCoordOutsideEventObjectMovementRange(struct EventObject *eventObject, s16 x, s16 y)
{
s16 minv;
s16 maxv;
- if (mapObject->range.as_nybbles.x != 0)
+ if (eventObject->range.as_nybbles.x != 0)
{
- minv = mapObject->coords1.x - (mapObject->range.as_nybbles.x);
- maxv = mapObject->coords1.x + (mapObject->range.as_nybbles.x);
+ minv = eventObject->initialCoords.x - (eventObject->range.as_nybbles.x);
+ maxv = eventObject->initialCoords.x + (eventObject->range.as_nybbles.x);
if (minv > x || maxv < x)
return TRUE;
}
- if (mapObject->range.as_nybbles.y != 0)
+ if (eventObject->range.as_nybbles.y != 0)
{
- minv = mapObject->coords1.y - (mapObject->range.as_nybbles.y);
- maxv = mapObject->coords1.y + (mapObject->range.as_nybbles.y);
+ minv = eventObject->initialCoords.y - (eventObject->range.as_nybbles.y);
+ maxv = eventObject->initialCoords.y + (eventObject->range.as_nybbles.y);
if (minv > y || maxv < y)
return TRUE;
}
return FALSE;
}
-bool8 IsMetatileDirectionallyImpassable(struct MapObject *mapObject, s16 x, s16 y, u8 direction)
+static bool8 IsMetatileDirectionallyImpassable(struct EventObject *eventObject, s16 x, s16 y, u8 direction)
{
- if (gUnknown_08375684[direction - 1](mapObject->mapobj_unk_1E) || gUnknown_08375694[direction - 1](MapGridGetMetatileBehaviorAt(x, y)))
+ if (gOppositeDirectionBlockedMetatileFuncs[direction - 1](eventObject->currentMetatileBehavior)
+ || gDirectionBlockedMetatileFuncs[direction - 1](MapGridGetMetatileBehaviorAt(x, y)))
{
return 1;
}
return 0;
}
-static bool8 DoesObjectCollideWithObjectAt(struct MapObject *mapObject, s16 x, s16 y)
+static bool8 DoesObjectCollideWithObjectAt(struct EventObject *eventObject, s16 x, s16 y)
{
u8 i;
for (i = 0; i < 16; i++)
{
- struct MapObject *mapObject2 = &gMapObjects[i];
+ struct EventObject *eventObject2 = &gEventObjects[i];
- if (mapObject2->active && mapObject2 != mapObject)
+ if (eventObject2->active && eventObject2 != eventObject)
{
- if (((mapObject2->coords2.x == x && mapObject2->coords2.y == y) || (mapObject2->coords3.x == x && mapObject2->coords3.y == y))
- && AreZCoordsCompatible(mapObject->mapobj_unk_0B_0, mapObject2->mapobj_unk_0B_0))
+ if (((eventObject2->currentCoords.x == x && eventObject2->currentCoords.y == y) || (eventObject2->previousCoords.x == x && eventObject2->previousCoords.y == y))
+ && AreZCoordsCompatible(eventObject->currentElevation, eventObject2->currentElevation))
return TRUE;
}
}
return 0;
}
-// this function is only used in berry.c, but its unknown whether its intended context is the berry tree check or if its checking for the flickering.
bool8 IsBerryTreeSparkling(u8 localId, u8 mapNum, u8 mapGroup)
{
- u8 mapObjectId;
+ u8 eventObjectId;
- if (!TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId))
- if (gSprites[gMapObjects[mapObjectId].spriteId].data[7] & 2)
+ if (!TryGetEventObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &eventObjectId))
+ if (gSprites[gEventObjects[eventObjectId].spriteId].data[7] & 2)
return TRUE;
return FALSE;
@@ -5485,75 +4450,67 @@ bool8 IsBerryTreeSparkling(u8 localId, u8 mapNum, u8 mapGroup)
void sub_8060288(u8 localId, u8 mapNum, u8 mapGroup)
{
- u8 mapObjectId;
- if (!TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId))
+ u8 eventObjectId;
+ if (!TryGetEventObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &eventObjectId))
{
- gSprites[gMapObjects[mapObjectId].spriteId].data[7] |= 4;
+ gSprites[gEventObjects[eventObjectId].spriteId].data[7] |= 4;
}
}
void MoveCoords(u8 direction, s16 *x, s16 *y)
{
- *x += gDirectionToVector[direction].x;
- *y += gDirectionToVector[direction].y;
+ *x += sDirectionToVectors[direction].x;
+ *y += sDirectionToVectors[direction].y;
}
-void unref_sub_80602F8(u8 direction, s16 *x, s16 *y)
+void Unref_MovePixelCoords(u8 direction, s16 *x, s16 *y)
{
- *x += gDirectionToVector[direction].x << 4;
- *y += gDirectionToVector[direction].y << 4;
+ *x += sDirectionToVectors[direction].x << 4;
+ *y += sDirectionToVectors[direction].y << 4;
}
-void sub_8060320(u32 dirn, s16 *x, s16 *y, s16 deltaX, s16 deltaY)
+static void MoveCoordsInDirection(u32 dir, s16 *x, s16 *y, s16 deltaX, s16 deltaY)
{
- u8 direction = dirn;
- s16 dx2 = deltaX;
- s16 dy2 = deltaY;
- if (gDirectionToVector[direction].x > 0)
- {
+ u8 direction = dir;
+ s16 dx2 = (u16)deltaX;
+ s16 dy2 = (u16)deltaY;
+ if (sDirectionToVectors[direction].x > 0)
*x += dx2;
- }
- if (gDirectionToVector[direction].x < 0)
- {
+ if (sDirectionToVectors[direction].x < 0)
*x -= dx2;
- }
- if (gDirectionToVector[direction].y > 0)
- {
+ if (sDirectionToVectors[direction].y > 0)
*y += dy2;
- }
- if (gDirectionToVector[direction].y < 0)
- {
+ if (sDirectionToVectors[direction].y < 0)
*y -= dy2;
- }
}
void sub_8060388(s16 x1, s16 y1, s16 *x2, s16 *y2)
{
*x2 = (x1 - gSaveBlock1.pos.x) << 4;
*y2 = (y1 - gSaveBlock1.pos.y) << 4;
- *x2 -= gUnknown_0300489C;
- *y2 -= gUnknown_03004898;
+ *x2 -= gTotalCameraPixelOffsetX;
+ *y2 -= gTotalCameraPixelOffsetY;
}
void sub_80603CC(s16 x1, s16 y1, s16 *x2, s16 *y2)
{
s16 x3;
s16 y3;
- x3 = -gUnknown_0300489C - gUnknown_03004880.unk10;
- y3 = -gUnknown_03004898 - gUnknown_03004880.unk14;
- if (gUnknown_03004880.unk10 > 0)
+ x3 = -gTotalCameraPixelOffsetX - gFieldCamera.curMovementOffsetX;
+ y3 = -gTotalCameraPixelOffsetY - gFieldCamera.curMovementOffsetY;
+ if (gFieldCamera.curMovementOffsetX > 0)
{
x3 += 0x10;
}
- if (gUnknown_03004880.unk10 < 0)
+ if (gFieldCamera.curMovementOffsetX < 0)
{
x3 -= 0x10;
}
- if (gUnknown_03004880.unk14 > 0)
+ if (gFieldCamera.curMovementOffsetY > 0)
{
y3 += 0x10;
}
- if (gUnknown_03004880.unk14 < 0)
+ if (gFieldCamera.curMovementOffsetY < 0)
{
y3 -= 0x10;
}
@@ -5568,145 +4525,129 @@ void sub_8060470(s16 *x, s16 *y, s16 dx, s16 dy)
*y += dy;
}
-void GetFieldObjectMovingCameraOffset(s16 *x, s16 *y)
+void GetEventObjectMovingCameraOffset(s16 *x, s16 *y)
{
*x = 0;
*y = 0;
- if (gUnknown_03004880.unk10 > 0)
+ if (gFieldCamera.curMovementOffsetX > 0)
{
(*x)++;
}
- if (gUnknown_03004880.unk10 < 0)
+ if (gFieldCamera.curMovementOffsetX < 0)
{
(*x)--;
}
- if (gUnknown_03004880.unk14 > 0)
+ if (gFieldCamera.curMovementOffsetY > 0)
{
(*y)++;
}
- if (gUnknown_03004880.unk14 < 0)
+ if (gFieldCamera.curMovementOffsetY < 0)
{
(*y)--;
}
}
-void FieldObjectMoveDestCoords(struct MapObject *mapObject, u32 direction, s16 *x, s16 *y)
+void EventObjectMoveDestCoords(struct EventObject *eventObject, u32 direction, s16 *x, s16 *y)
{
u8 newDirn = direction;
- *x = mapObject->coords2.x;
- *y = mapObject->coords2.y;
+ *x = eventObject->currentCoords.x;
+ *y = eventObject->currentCoords.y;
MoveCoords(newDirn, x, y);
}
-bool8 FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(struct MapObject *mapObject)
+bool8 EventObjectIsMovementOverridden(struct EventObject *eventObject)
{
- if (mapObject->mapobj_bit_1 || mapObject->mapobj_bit_6)
- {
+ if (eventObject->singleMovementActive || eventObject->heldMovementActive)
return TRUE;
- }
+
return FALSE;
}
-bool8 FieldObjectIsSpecialAnimActive(struct MapObject *mapObject)
+bool8 EventObjectIsHeldMovementActive(struct EventObject *eventObject)
{
- if (mapObject->mapobj_bit_6 && mapObject->mapobj_unk_1C != 0xff)
- {
+ if (eventObject->heldMovementActive && eventObject->movementActionId != 0xff)
return TRUE;
- }
+
return FALSE;
}
-bool8 FieldObjectSetSpecialAnim(struct MapObject *mapObject, u8 specialAnimId)
+bool8 EventObjectSetHeldMovement(struct EventObject *eventObject, u8 movementActionId)
{
- if (FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(mapObject))
- {
+ if (EventObjectIsMovementOverridden(eventObject))
return TRUE;
- }
- UnfreezeMapObject(mapObject);
- mapObject->mapobj_unk_1C = specialAnimId;
- mapObject->mapobj_bit_6 = 1;
- mapObject->mapobj_bit_7 = 0;
- gSprites[mapObject->spriteId].data[2] = 0;
+
+ UnfreezeEventObject(eventObject);
+ eventObject->movementActionId = movementActionId;
+ eventObject->heldMovementActive = 1;
+ eventObject->heldMovementFinished = 0;
+ gSprites[eventObject->spriteId].data[2] = 0;
return FALSE;
}
-void FieldObjectForceSetSpecialAnim(struct MapObject *mapObject, u8 specialAnimId)
+void EventObjectForceSetHeldMovement(struct EventObject *eventObject, u8 movementActionId)
{
- FieldObjectClearAnimIfSpecialAnimActive(mapObject);
- FieldObjectSetSpecialAnim(mapObject, specialAnimId);
+ EventObjectClearHeldMovementIfActive(eventObject);
+ EventObjectSetHeldMovement(eventObject, movementActionId);
}
-void FieldObjectClearAnimIfSpecialAnimActive(struct MapObject *mapObject)
+void EventObjectClearHeldMovementIfActive(struct EventObject *eventObject)
{
- if (mapObject->mapobj_bit_6)
- {
- FieldObjectClearAnim(mapObject);
- }
+ if (eventObject->heldMovementActive)
+ EventObjectClearHeldMovement(eventObject);
}
-void FieldObjectClearAnim(struct MapObject *mapObject)
+void EventObjectClearHeldMovement(struct EventObject *eventObject)
{
- mapObject->mapobj_unk_1C = 0xFF;
- mapObject->mapobj_bit_6 = 0;
- mapObject->mapobj_bit_7 = 0;
- gSprites[mapObject->spriteId].data[1] = 0;
- gSprites[mapObject->spriteId].data[2] = 0;
+ eventObject->movementActionId = 0xFF;
+ eventObject->heldMovementActive = 0;
+ eventObject->heldMovementFinished = 0;
+ gSprites[eventObject->spriteId].data[1] = 0;
+ gSprites[eventObject->spriteId].data[2] = 0;
}
-bool8 FieldObjectCheckIfSpecialAnimFinishedOrInactive(struct MapObject *mapObject)
+bool8 EventObjectCheckHeldMovementStatus(struct EventObject *eventObject)
{
- if (mapObject->mapobj_bit_6)
- return mapObject->mapobj_bit_7;
- return 0x10;
+ if (eventObject->heldMovementActive)
+ return eventObject->heldMovementFinished;
+
+ return 16;
}
-bool8 FieldObjectClearAnimIfSpecialAnimFinished(struct MapObject *mapObject)
+bool8 EventObjectClearHeldMovementIfFinished(struct EventObject *eventObject)
{
- u8 specialAnimStatus;
- specialAnimStatus = FieldObjectCheckIfSpecialAnimFinishedOrInactive(mapObject);
- if (specialAnimStatus != 0 && specialAnimStatus != 0x10)
- {
- FieldObjectClearAnimIfSpecialAnimActive(mapObject);
- }
- return specialAnimStatus;
+ u8 heldMovementStatus = EventObjectCheckHeldMovementStatus(eventObject);
+ if (heldMovementStatus != 0 && heldMovementStatus != 16)
+ EventObjectClearHeldMovementIfActive(eventObject);
+
+ return heldMovementStatus;
}
-u8 FieldObjectGetSpecialAnim(struct MapObject *mapObject)
+u8 EventObjectGetHeldMovementActionId(struct EventObject *eventObject)
{
- if (mapObject->mapobj_bit_6)
- {
- return mapObject->mapobj_unk_1C;
- }
+ if (eventObject->heldMovementActive)
+ return eventObject->movementActionId;
+
return 0xFF;
}
-extern void DoGroundEffects_OnSpawn(struct MapObject *mapObject, struct Sprite *sprite);
-extern void DoGroundEffects_OnBeginStep(struct MapObject *mapObject, struct Sprite *sprite);
-extern void DoGroundEffects_OnFinishStep(struct MapObject *mapObject, struct Sprite *sprite);
-void npc_obj_transfer_image_anim_pause_flag(struct MapObject *mapObject, struct Sprite *sprite);
-void sub_80634A0(struct MapObject *mapObject, struct Sprite *sprite);
-void FieldObjectExecSpecialAnim(struct MapObject *mapObject, struct Sprite *sprite);
-void FieldObjectUpdateSubpriority(struct MapObject *mapObject, struct Sprite *sprite);
-
-void meta_step(struct MapObject *mapObject, struct Sprite *sprite, u8 (*callback)(struct MapObject *, struct Sprite *))
+void UpdateEventObjectCurrentMovement(struct EventObject *eventObject, struct Sprite *sprite, u8 (*callback)(struct EventObject *, struct Sprite *))
{
- DoGroundEffects_OnSpawn(mapObject, sprite);
- sub_80634A0(mapObject, sprite);
- if (FieldObjectIsSpecialAnimActive(mapObject))
+ DoGroundEffects_OnSpawn(eventObject, sprite);
+ TryEnableEventObjectAnim(eventObject, sprite);
+ if (EventObjectIsHeldMovementActive(eventObject))
{
- FieldObjectExecSpecialAnim(mapObject, sprite);
- } else
+ EventObjectExecHeldMovementAction(eventObject, sprite);
+ }
+ else if (!eventObject->frozen)
{
- if (!mapObject->mapobj_bit_8)
- {
- while (callback(mapObject, sprite));
- }
+ while (callback(eventObject, sprite));
}
- DoGroundEffects_OnBeginStep(mapObject, sprite);
- DoGroundEffects_OnFinishStep(mapObject, sprite);
- npc_obj_transfer_image_anim_pause_flag(mapObject, sprite);
- sub_80634D0(mapObject, sprite);
- FieldObjectUpdateSubpriority(mapObject, sprite);
+
+ DoGroundEffects_OnBeginStep(eventObject, sprite);
+ DoGroundEffects_OnFinishStep(eventObject, sprite);
+ UpdateEventObjectSpriteAnimPause(eventObject, sprite);
+ UpdateEventObjectVisibility(eventObject, sprite);
+ EventObjectUpdateSubpriority(eventObject, sprite);
}
#define dirn_to_anim(name, table)\
@@ -5720,148 +4661,148 @@ u8 name(u32 idx)\
return animIds[direction];\
}
-dirn_to_anim(GetFaceDirectionAnimId, gUnknown_083756C8)
-dirn_to_anim(GetSimpleGoAnimId, gUnknown_083756CD)
-dirn_to_anim(GetGoSpeed0AnimId, gUnknown_083756D2)
-dirn_to_anim(sub_8060744, gUnknown_083756D7)
-dirn_to_anim(d2s_08064034, gUnknown_083756DC)
-dirn_to_anim(sub_806079C, gUnknown_083756E1)
-dirn_to_anim(sub_80607C8, gUnknown_083756E6)
-dirn_to_anim(sub_80607F4, gUnknown_083756EB)
-dirn_to_anim(GetJumpLedgeAnimId, gUnknown_083756F0)
-dirn_to_anim(sub_806084C, gUnknown_083756F5)
-dirn_to_anim(sub_8060878, gUnknown_083756FA)
-dirn_to_anim(sub_80608A4, gUnknown_083756FF)
-dirn_to_anim(sub_80608D0, gUnknown_08375704)
-dirn_to_anim(GetStepInPlaceDelay32AnimId, gUnknown_08375709)
-dirn_to_anim(GetStepInPlaceDelay16AnimId, gUnknown_0837570E)
-dirn_to_anim(GetStepInPlaceDelay8AnimId, gUnknown_08375713)
-dirn_to_anim(GetStepInPlaceDelay4AnimId, gUnknown_08375718)
+dirn_to_anim(GetFaceDirectionMovementAction, gFaceDirectionMovementActions)
+dirn_to_anim(GetWalkSlowMovementAction, gWalkSlowMovementActions)
+dirn_to_anim(GetWalkNormalMovementAction, gWalkNormalMovementActions)
+dirn_to_anim(GetWalkFastMovementAction, gWalkFastMovementActions)
+dirn_to_anim(GetRideWaterCurrentMovementAction, gRideWaterCurrentMovementActions)
+dirn_to_anim(GetWalkFastestMovementAction, gWalkFastestMovementActions)
+dirn_to_anim(GetSlideMovementAction, gSlideMovementActions)
+dirn_to_anim(GetPlayerRunMovementAction, gPlayerRunMovementActions)
+dirn_to_anim(GetJump2MovementAction, gJump2MovementActions)
+dirn_to_anim(GetJumpInPlaceMovementAction, gJumpInPlaceMovementActions)
+dirn_to_anim(GetJumpInPlaceTurnAroundMovementAction, gJumpInPlaceTurnAroundMovementActions)
+dirn_to_anim(GetJumpMovementAction, gJumpMovementActions)
+dirn_to_anim(GetJumpSpecialMovementAction, gJumpSpecialMovementActions)
+dirn_to_anim(GetWalkInPlaceSlowMovementAction, gWalkInPlaceSlowMovementActions)
+dirn_to_anim(GetWalkInPlaceNormalMovementAction, gWalkInPlaceNormalMovementActions)
+dirn_to_anim(GetWalkInPlaceFastMovementAction, gWalkInPlaceFastMovementActions)
+dirn_to_anim(GetWalkInPlaceFastestMovementAction, gWalkInPlaceFastestMovementActions)
-u8 FieldObjectFaceOppositeDirection(struct MapObject *mapObject, u8 direction)
+u8 EventObjectFaceOppositeDirection(struct EventObject *eventObject, u8 direction)
{
- return FieldObjectSetSpecialAnim(mapObject, GetFaceDirectionAnimId(GetOppositeDirection(direction)));
+ return EventObjectSetHeldMovement(eventObject, GetFaceDirectionMovementAction(GetOppositeDirection(direction)));
}
-u8 sub_80609D8(u8 index)
+u8 GetAcroWheelieFaceDirectionMovementAction(u8 direction)
{
- u8 directions[5];
- memcpy(directions, gUnknown_0837571D, 5);
- if (index >= 5)
+ u8 movementActions[5];
+ memcpy(movementActions, gAcroWheelieFaceDirectionMovementActions, 5);
+ if (direction >= 5)
{
- index = 0;
+ direction = 0;
}
- return directions[index];
+ return movementActions[direction];
}
-u8 sub_8060A04(u8 index)
+u8 GetAcroPopWheelieFaceDirectionMovementAction(u8 direction)
{
- u8 directions[5];
- memcpy(directions, gUnknown_08375722, 5);
- if (index >= 5)
+ u8 movementActions[5];
+ memcpy(movementActions, gAcroPopWheelieFaceDirectionMovementActions, 5);
+ if (direction >= 5)
{
- index = 0;
+ direction = 0;
}
- return directions[index];
+ return movementActions[direction];
}
-u8 sub_8060A30(u8 index)
+u8 GetAcroEndWheelieFaceDirectionMovementAction(u8 direction)
{
- u8 directions[5];
- memcpy(directions, gUnknown_08375727, 5);
- if (index >= 5)
+ u8 movementActions[5];
+ memcpy(movementActions, gAcroEndWheelieFaceDirectionMovementActions, 5);
+ if (direction >= 5)
{
- index = 0;
+ direction = 0;
}
- return directions[index];
+ return movementActions[direction];
}
-u8 sub_8060A5C(u8 index)
+u8 GetAcroWheelieHopFaceDirectionMovementAction(u8 direction)
{
- u8 directions[5];
- memcpy(directions, gUnknown_0837572C, 5);
- if (index >= 5)
+ u8 movementActions[5];
+ memcpy(movementActions, gAcroWheelieHopFaceDirectionMovementActions, 5);
+ if (direction >= 5)
{
- index = 0;
+ direction = 0;
}
- return directions[index];
+ return movementActions[direction];
}
-u8 sub_8060A88(u8 index)
+u8 GetAcroWheelieHopDirectionMovementAction(u8 direction)
{
- u8 directions[5];
- memcpy(directions, gUnknown_08375731, 5);
- if (index >= 5)
+ u8 movementActions[5];
+ memcpy(movementActions, gAcroWheelieHopDirectionMovementActions, 5);
+ if (direction >= 5)
{
- index = 0;
+ direction = 0;
}
- return directions[index];
+ return movementActions[direction];
}
-u8 sub_8060AB4(u8 index)
+u8 GetAcroWheelieJumpDirectionMovementAction(u8 direction)
{
- u8 directions[5];
- memcpy(directions, gUnknown_08375736, 5);
- if (index >= 5)
+ u8 movementActions[5];
+ memcpy(movementActions, gAcroWheelieJumpDirectionMovementActions, 5);
+ if (direction >= 5)
{
- index = 0;
+ direction = 0;
}
- return directions[index];
+ return movementActions[direction];
}
-u8 sub_8060AE0(u8 index)
+u8 GetAcroWheelieInPlaceDirectionMovementAction(u8 direction)
{
- u8 directions[5];
- memcpy(directions, gUnknown_0837573B, 5);
- if (index >= 5)
+ u8 movementActions[5];
+ memcpy(movementActions, gAcroWheelieInPlaceDirectionMovementActions, 5);
+ if (direction >= 5)
{
- index = 0;
+ direction = 0;
}
- return directions[index];
+ return movementActions[direction];
}
-u8 sub_8060B0C(u8 index)
+u8 GetAcroPopWheelieMoveDirectionMovementAction(u8 direction)
{
- u8 directions[5];
- memcpy(directions, gUnknown_08375740, 5);
- if (index >= 5)
+ u8 movementActions[5];
+ memcpy(movementActions, gAcroPopWheelieMoveDirectionMovementActions, 5);
+ if (direction >= 5)
{
- index = 0;
+ direction = 0;
}
- return directions[index];
+ return movementActions[direction];
}
-u8 sub_8060B38(u8 index)
+u8 GetAcroWheelieMoveDirectionMovementAction(u8 direction)
{
- u8 directions[5];
- memcpy(directions, gUnknown_08375745, 5);
- if (index >= 5)
+ u8 movementActions[5];
+ memcpy(movementActions, gAcroWheelieMoveDirectionMovementActions, 5);
+ if (direction >= 5)
{
- index = 0;
+ direction = 0;
}
- return directions[index];
+ return movementActions[direction];
}
-u8 sub_8060B64(u8 index)
+u8 GetAcroEndWheelieMoveDirectionMovementAction(u8 direction)
{
- u8 directions[5];
- memcpy(directions, gUnknown_0837574A, 5);
- if (index >= 5)
+ u8 movementActions[5];
+ memcpy(movementActions, gAcroEndWheelieMoveDirectionMovementActions, 5);
+ if (direction >= 5)
{
- index = 0;
+ direction = 0;
}
- return directions[index];
+ return movementActions[direction];
}
u8 GetOppositeDirection(u8 direction)
{
- u8 directions[8];
- memcpy(directions, gUnknown_0837574F, 8);
- if (direction == 0 || direction > 8)
+ u8 oppositeDirections[8];
+ memcpy(oppositeDirections, gOppositeDirections, 8);
+ if (direction == DIR_NONE || direction > 8)
{
return direction;
}
- return directions[direction - 1];
+ return oppositeDirections[direction - 1];
}
u32 zffu_offset_calc(u8 a0, u8 a1)
@@ -5882,153 +4823,154 @@ u32 state_to_direction(u8 a0, u32 a1, u32 a2)
return gUnknown_08375767[a0 - 1][zffuOffset - 1];
}
-void FieldObjectExecSpecialAnim(struct MapObject *mapObject, struct Sprite *sprite)
+static void EventObjectExecHeldMovementAction(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (gUnknown_08375778[mapObject->mapobj_unk_1C][sprite->data[2]](mapObject, sprite))
+ if (gMovementActionFuncs[eventObject->movementActionId][sprite->data[2]](eventObject, sprite))
{
- mapObject->mapobj_bit_7 = 1;
+ eventObject->heldMovementFinished = 1;
}
}
-bool8 FieldObjectExecRegularAnim(struct MapObject *mapObject, struct Sprite *sprite)
+static bool8 EventObjectExecSingleMovementAction(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (gUnknown_08375778[mapObject->mapobj_unk_1C][sprite->data[2]](mapObject, sprite))
+ if (gMovementActionFuncs[eventObject->movementActionId][sprite->data[2]](eventObject, sprite))
{
- mapObject->mapobj_unk_1C = 0xFF;
+ eventObject->movementActionId = 0xFF;
sprite->data[2] = 0;
return 1;
}
+
return 0;
}
-void FieldObjectSetRegularAnim(struct MapObject *mapObject, struct Sprite *sprite, u8 animId)
+static void EventObjectSetSingleMovement(struct EventObject *eventObject, struct Sprite *sprite, u8 movementActionId)
{
- mapObject->mapobj_unk_1C = animId;
+ eventObject->movementActionId = movementActionId;
sprite->data[2] = 0;
}
-void an_look_any(struct MapObject *mapObject, struct Sprite *sprite, u8 direction)
+void FaceDirection(struct EventObject *eventObject, struct Sprite *sprite, u8 direction)
{
- FieldObjectSetDirection(mapObject, direction);
- npc_coords_shift_still(mapObject);
- sub_805FE64(mapObject, sprite, get_go_image_anim_num(mapObject->mapobj_unk_18));
+ SetEventObjectDirection(eventObject, direction);
+ ShiftStillEventObjectCoords(eventObject);
+ sub_805FE64(eventObject, sprite, GetMoveDirectionAnimNum(eventObject->facingDirection));
sprite->animPaused = 1;
sprite->data[2] = 1;
}
-u8 sub_8060CE0(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementAction_FaceDown_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- an_look_any(mapObject, sprite, DIR_SOUTH);
+ FaceDirection(eventObject, sprite, DIR_SOUTH);
return 1;
}
-u8 sub_8060CF0(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementAction_FaceUp_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- an_look_any(mapObject, sprite, DIR_NORTH);
+ FaceDirection(eventObject, sprite, DIR_NORTH);
return 1;
}
-u8 sub_8060D00(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementAction_FaceLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- an_look_any(mapObject, sprite, DIR_WEST);
+ FaceDirection(eventObject, sprite, DIR_WEST);
return 1;
}
-u8 sub_8060D10(struct MapObject *mapObject, struct Sprite *sprite)
+u8 MovementAction_FaceRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- an_look_any(mapObject, sprite, DIR_EAST);
+ FaceDirection(eventObject, sprite, DIR_EAST);
return 1;
}
-void sub_8060D20(struct MapObject *mapObject, struct Sprite *sprite, u8 direction, u8 a3)
+void sub_8060D20(struct EventObject *eventObject, struct Sprite *sprite, u8 direction, u8 a3)
{
s16 x;
s16 y;
- x = mapObject->coords2.x;
- y = mapObject->coords2.y;
- FieldObjectSetDirection(mapObject, direction);
+ x = eventObject->currentCoords.x;
+ y = eventObject->currentCoords.y;
+ SetEventObjectDirection(eventObject, direction);
MoveCoords(direction, &x, &y);
- npc_coords_shift(mapObject, x, y);
+ ShiftEventObjectCoords(eventObject, x, y);
oamt_npc_ministep_reset(sprite, direction, a3);
sprite->animPaused = 0;
- mapObject->mapobj_bit_2 = 1;
+ eventObject->triggerGroundEffectsOnMove = 1;
sprite->data[2] = 1;
}
extern u8 (*const gUnknown_083759C0[5])(u8);
-void do_go_anim(struct MapObject *mapObject, struct Sprite *sprite, u8 direction, u8 a3)
+void do_go_anim(struct EventObject *eventObject, struct Sprite *sprite, u8 direction, u8 a3)
{
u8 (*const functions[5])(u8);
memcpy((void *)functions, gUnknown_083759C0, sizeof(gUnknown_083759C0));
- sub_8060D20(mapObject, sprite, direction, a3);
- sub_805FE28(mapObject, sprite, functions[a3](mapObject->mapobj_unk_18));
+ sub_8060D20(eventObject, sprite, direction, a3);
+ sub_805FE28(eventObject, sprite, functions[a3](eventObject->facingDirection));
}
-void do_run_anim(struct MapObject *mapObject, struct Sprite *sprite, u8 direction)
+void StartRunningAnim(struct EventObject *eventObject, struct Sprite *sprite, u8 direction)
{
- sub_8060D20(mapObject, sprite, direction, 1);
- sub_805FE28(mapObject, sprite, get_run_image_anim_num(mapObject->mapobj_unk_18));
+ sub_8060D20(eventObject, sprite, direction, 1);
+ sub_805FE28(eventObject, sprite, GetRunningDirectionAnimNum(eventObject->facingDirection));
}
bool8 obj_npc_ministep(struct Sprite *);
-bool8 npc_obj_ministep_stop_on_arrival(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 npc_obj_ministep_stop_on_arrival(struct EventObject *eventObject, struct Sprite *sprite)
{
if (obj_npc_ministep(sprite))
{
- npc_coords_shift_still(mapObject);
- mapObject->mapobj_bit_3 = 1;
+ ShiftStillEventObjectCoords(eventObject);
+ eventObject->triggerGroundEffectsOnStop = 1;
sprite->animPaused = 1;
return 1;
}
return 0;
}
-void sub_8060E68(struct MapObject *mapObject, struct Sprite *sprite, u8 direction)
+void sub_8060E68(struct EventObject *eventObject, struct Sprite *sprite, u8 direction)
{
s16 x;
s16 y;
- x = mapObject->coords2.x;
- y = mapObject->coords2.y;
- FieldObjectSetDirection(mapObject, direction);
+ x = eventObject->currentCoords.x;
+ y = eventObject->currentCoords.y;
+ SetEventObjectDirection(eventObject, direction);
MoveCoords(direction, &x, &y);
- npc_coords_shift(mapObject, x, y);
+ ShiftEventObjectCoords(eventObject, x, y);
sub_806467C(sprite, direction);
sprite->animPaused = 0;
- mapObject->mapobj_bit_2 = 1;
+ eventObject->triggerGroundEffectsOnMove = 1;
sprite->data[2] = 1;
}
-void sub_8060ED8(struct MapObject *mapObject, struct Sprite *sprite, u8 direction)
+void sub_8060ED8(struct EventObject *eventObject, struct Sprite *sprite, u8 direction)
{
- sub_8060E68(mapObject, sprite, direction);
- sub_805FE28(mapObject, sprite, get_go_image_anim_num(mapObject->mapobj_unk_18));
+ sub_8060E68(eventObject, sprite, direction);
+ sub_805FE28(eventObject, sprite, GetMoveDirectionAnimNum(eventObject->facingDirection));
}
-bool8 an_walk_any_2(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 an_walk_any_2(struct EventObject *eventObject, struct Sprite *sprite)
{
if (sub_806468C(sprite))
{
- npc_coords_shift_still(mapObject);
- mapObject->mapobj_bit_3 = 1;
+ ShiftStillEventObjectCoords(eventObject);
+ eventObject->triggerGroundEffectsOnStop = 1;
sprite->animPaused = 1;
return TRUE;
}
return FALSE;
}
-bool8 sub_8060F5C(struct MapObject *, struct Sprite *);
+bool8 MovementAction_WalkSlowDown_Step1(struct EventObject *, struct Sprite *);
-bool8 sub_8060F3C(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_WalkSlowDown_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_8060ED8(mapObject, sprite, DIR_SOUTH);
- return sub_8060F5C(mapObject, sprite);
+ sub_8060ED8(eventObject, sprite, DIR_SOUTH);
+ return MovementAction_WalkSlowDown_Step1(eventObject, sprite);
}
-bool8 sub_8060F5C(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_WalkSlowDown_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (an_walk_any_2(mapObject, sprite))
+ if (an_walk_any_2(eventObject, sprite))
{
sprite->data[2] = 2;
return TRUE;
@@ -6036,17 +4978,17 @@ bool8 sub_8060F5C(struct MapObject *mapObject, struct Sprite *sprite)
return FALSE;
}
-bool8 sub_8060F9C(struct MapObject *, struct Sprite *);
+bool8 MovementAction_WalkSlowUp_Step1(struct EventObject *, struct Sprite *);
-bool8 sub_8060F7C(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_WalkSlowUp_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_8060ED8(mapObject, sprite, DIR_NORTH);
- return sub_8060F9C(mapObject, sprite);
+ sub_8060ED8(eventObject, sprite, DIR_NORTH);
+ return MovementAction_WalkSlowUp_Step1(eventObject, sprite);
}
-bool8 sub_8060F9C(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_WalkSlowUp_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (an_walk_any_2(mapObject, sprite))
+ if (an_walk_any_2(eventObject, sprite))
{
sprite->data[2] = 2;
return TRUE;
@@ -6054,17 +4996,17 @@ bool8 sub_8060F9C(struct MapObject *mapObject, struct Sprite *sprite)
return FALSE;
}
-bool8 sub_8060FDC(struct MapObject *, struct Sprite *);
+bool8 MovementAction_WalkSlowLeft_Step1(struct EventObject *, struct Sprite *);
-bool8 sub_8060FBC(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_WalkSlowLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_8060ED8(mapObject, sprite, DIR_WEST);
- return sub_8060FDC(mapObject, sprite);
+ sub_8060ED8(eventObject, sprite, DIR_WEST);
+ return MovementAction_WalkSlowLeft_Step1(eventObject, sprite);
}
-bool8 sub_8060FDC(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_WalkSlowLeft_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (an_walk_any_2(mapObject, sprite))
+ if (an_walk_any_2(eventObject, sprite))
{
sprite->data[2] = 2;
return TRUE;
@@ -6072,17 +5014,17 @@ bool8 sub_8060FDC(struct MapObject *mapObject, struct Sprite *sprite)
return FALSE;
}
-bool8 sub_806101C(struct MapObject *, struct Sprite *);
+bool8 MovementAction_WalkSlowRight_Step1(struct EventObject *, struct Sprite *);
-bool8 sub_8060FFC(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_WalkSlowRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_8060ED8(mapObject, sprite, DIR_EAST);
- return sub_806101C(mapObject, sprite);
+ sub_8060ED8(eventObject, sprite, DIR_EAST);
+ return MovementAction_WalkSlowRight_Step1(eventObject, sprite);
}
-bool8 sub_806101C(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_WalkSlowRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (an_walk_any_2(mapObject, sprite))
+ if (an_walk_any_2(eventObject, sprite))
{
sprite->data[2] = 2;
return TRUE;
@@ -6090,17 +5032,17 @@ bool8 sub_806101C(struct MapObject *mapObject, struct Sprite *sprite)
return FALSE;
}
-bool8 sub_806105C(struct MapObject *, struct Sprite *);
+bool8 MovementAction_WalkNormalDown_Step1(struct EventObject *, struct Sprite *);
-bool8 sub_806103C(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_WalkNormalDown_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- do_go_anim(mapObject, sprite, DIR_SOUTH, 0);
- return sub_806105C(mapObject, sprite);
+ do_go_anim(eventObject, sprite, DIR_SOUTH, 0);
+ return MovementAction_WalkNormalDown_Step1(eventObject, sprite);
}
-bool8 sub_806105C(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_WalkNormalDown_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(mapObject, sprite))
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
{
sprite->data[2] = 2;
return TRUE;
@@ -6108,17 +5050,17 @@ bool8 sub_806105C(struct MapObject *mapObject, struct Sprite *sprite)
return FALSE;
}
-bool8 sub_806109C(struct MapObject *, struct Sprite *);
+bool8 MovementAction_WalkNormalUp_Step1(struct EventObject *, struct Sprite *);
-bool8 sub_806107C(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_WalkNormalUp_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- do_go_anim(mapObject, sprite, DIR_NORTH, 0);
- return sub_806109C(mapObject, sprite);
+ do_go_anim(eventObject, sprite, DIR_NORTH, 0);
+ return MovementAction_WalkNormalUp_Step1(eventObject, sprite);
}
-bool8 sub_806109C(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_WalkNormalUp_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(mapObject, sprite))
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
{
sprite->data[2] = 2;
return TRUE;
@@ -6126,17 +5068,17 @@ bool8 sub_806109C(struct MapObject *mapObject, struct Sprite *sprite)
return FALSE;
}
-bool8 sub_80610DC(struct MapObject *, struct Sprite *);
+bool8 MovementAction_WalkNormalLeft_Step1(struct EventObject *, struct Sprite *);
-bool8 sub_80610BC(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_WalkNormalLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- do_go_anim(mapObject, sprite, DIR_WEST, 0);
- return sub_80610DC(mapObject, sprite);
+ do_go_anim(eventObject, sprite, DIR_WEST, 0);
+ return MovementAction_WalkNormalLeft_Step1(eventObject, sprite);
}
-bool8 sub_80610DC(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_WalkNormalLeft_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(mapObject, sprite))
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
{
sprite->data[2] = 2;
return TRUE;
@@ -6144,17 +5086,17 @@ bool8 sub_80610DC(struct MapObject *mapObject, struct Sprite *sprite)
return FALSE;
}
-bool8 sub_806111C(struct MapObject *, struct Sprite *);
+bool8 MovementAction_WalkNormalRight_Step1(struct EventObject *, struct Sprite *);
-bool8 sub_80610FC(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_WalkNormalRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- do_go_anim(mapObject, sprite, DIR_EAST, 0);
- return sub_806111C(mapObject, sprite);
+ do_go_anim(eventObject, sprite, DIR_EAST, 0);
+ return MovementAction_WalkNormalRight_Step1(eventObject, sprite);
}
-bool8 sub_806111C(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_WalkNormalRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(mapObject, sprite))
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
{
sprite->data[2] = 2;
return TRUE;
@@ -6162,7 +5104,7 @@ bool8 sub_806111C(struct MapObject *mapObject, struct Sprite *sprite)
return FALSE;
}
-void sub_806113C(struct MapObject *mapObject, struct Sprite *sprite, u8 direction, u8 a4, u8 a5)
+void sub_806113C(struct EventObject *eventObject, struct Sprite *sprite, u8 direction, u8 a4, u8 a5)
{
s16 vSPp4[3];
s16 x;
@@ -6170,24 +5112,24 @@ void sub_806113C(struct MapObject *mapObject, struct Sprite *sprite, u8 directio
memcpy(vSPp4, gUnknown_08375A34, sizeof gUnknown_08375A34);
x = 0;
y = 0;
- FieldObjectSetDirection(mapObject, direction);
- sub_8060320(direction, &x, &y, vSPp4[a4], vSPp4[a4]);
- npc_coords_shift(mapObject, mapObject->coords2.x + x, mapObject->coords2.y + y);
+ SetEventObjectDirection(eventObject, direction);
+ MoveCoordsInDirection(direction, &x, &y, vSPp4[a4], vSPp4[a4]);
+ ShiftEventObjectCoords(eventObject, eventObject->currentCoords.x + x, eventObject->currentCoords.y + y);
sub_80646E4(sprite, direction, a4, a5);
sprite->data[2] = 1;
sprite->animPaused = 0;
- mapObject->mapobj_bit_2 = 1;
- mapObject->mapobj_bit_4 = 1;
+ eventObject->triggerGroundEffectsOnMove = 1;
+ eventObject->disableCoveringGroundEffects = 1;
}
-void maybe_shadow_1(struct MapObject *mapObject, struct Sprite *sprite, u8 direction, u8 a4, u8 a5)
+void maybe_shadow_1(struct EventObject *eventObject, struct Sprite *sprite, u8 direction, u8 a4, u8 a5)
{
- sub_806113C(mapObject, sprite, direction, a4, a5);
- sub_805FE28(mapObject, sprite, get_go_image_anim_num(mapObject->mapobj_unk_18));
- DoShadowFieldEffect(mapObject);
+ sub_806113C(eventObject, sprite, direction, a4, a5);
+ sub_805FE28(eventObject, sprite, GetMoveDirectionAnimNum(eventObject->facingDirection));
+ DoShadowFieldEffect(eventObject);
}
-u8 sub_806123C(struct MapObject *mapObject, struct Sprite *sprite, u8 (*const callback)(struct Sprite *))
+u8 sub_806123C(struct EventObject *eventObject, struct Sprite *sprite, u8 (*const callback)(struct Sprite *))
{
s16 vSPp4[3];
s16 x;
@@ -6199,53 +5141,53 @@ u8 sub_806123C(struct MapObject *mapObject, struct Sprite *sprite, u8 (*const ca
{
x = 0;
y = 0;
- sub_8060320(mapObject->placeholder18, &x, &y, vSPp4[sprite->data[4]], vSPp4[sprite->data[4]]);
- npc_coords_shift(mapObject, mapObject->coords2.x + x, mapObject->coords2.y + y);
- mapObject->mapobj_bit_2 = 1;
- mapObject->mapobj_bit_4 = 1;
+ MoveCoordsInDirection(eventObject->movementDirection, &x, &y, vSPp4[sprite->data[4]], vSPp4[sprite->data[4]]);
+ ShiftEventObjectCoords(eventObject, eventObject->currentCoords.x + x, eventObject->currentCoords.y + y);
+ eventObject->triggerGroundEffectsOnMove = 1;
+ eventObject->disableCoveringGroundEffects = 1;
} else if (retval == 0xff)
{
- npc_coords_shift_still(mapObject);
- mapObject->mapobj_bit_3 = 1;
- mapObject->mapobj_bit_5 = 1;
+ ShiftStillEventObjectCoords(eventObject);
+ eventObject->triggerGroundEffectsOnStop = 1;
+ eventObject->landingJump = 1;
sprite->animPaused = 1;
}
return retval;
}
-u8 sub_8061300(struct MapObject *mapObject, struct Sprite *sprite)
+u8 sub_8061300(struct EventObject *eventObject, struct Sprite *sprite)
{
- return sub_806123C(mapObject, sprite, sub_8064704);
+ return sub_806123C(eventObject, sprite, sub_8064704);
}
-u8 sub_8061314(struct MapObject *mapObject, struct Sprite *sprite)
+u8 sub_8061314(struct EventObject *eventObject, struct Sprite *sprite)
{
- return sub_806123C(mapObject, sprite, sub_806478C);
+ return sub_806123C(eventObject, sprite, sub_806478C);
}
-bool8 sub_8061328(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 sub_8061328(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (sub_8061300(mapObject, sprite) == 0xFF)
+ if (sub_8061300(eventObject, sprite) == 0xFF)
{
return TRUE;
}
return FALSE;
}
-bool8 sub_8061340(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 sub_8061340(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (sub_8061314(mapObject, sprite) == 0xFF)
+ if (sub_8061314(eventObject, sprite) == 0xFF)
{
return TRUE;
}
return FALSE;
}
-bool8 sub_8061358(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 sub_8061358(struct EventObject *eventObject, struct Sprite *sprite)
{
u8 retval;
- retval = sub_8061300(mapObject, sprite);
+ retval = sub_8061300(eventObject, sprite);
if (retval != 1)
{
if (retval == 0xFF)
@@ -6254,78 +5196,78 @@ bool8 sub_8061358(struct MapObject *mapObject, struct Sprite *sprite)
}
return FALSE;
}
- FieldObjectSetDirection(mapObject, GetOppositeDirection(mapObject->placeholder18));
- sub_805FE64(mapObject, sprite, get_go_image_anim_num(mapObject->mapobj_unk_18));
+ SetEventObjectDirection(eventObject, GetOppositeDirection(eventObject->movementDirection));
+ sub_805FE64(eventObject, sprite, GetMoveDirectionAnimNum(eventObject->facingDirection));
return FALSE;
}
-bool8 sub_80613D4(struct MapObject *, struct Sprite *);
-bool8 sub_806142C(struct MapObject *, struct Sprite *);
-bool8 sub_8061484(struct MapObject *, struct Sprite *);
-bool8 sub_80614DC(struct MapObject *, struct Sprite *);
+bool8 MovementAction_Jump2Down_Step1(struct EventObject *, struct Sprite *);
+bool8 MovementAction_Jump2Up_Step1(struct EventObject *, struct Sprite *);
+bool8 MovementAction_Jump2Left_Step1(struct EventObject *, struct Sprite *);
+bool8 MovementAction_Jump2Right_Step1(struct EventObject *, struct Sprite *);
-bool8 sub_80613A8(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_Jump2Down_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- maybe_shadow_1(mapObject, sprite, DIR_SOUTH, 2, 0);
- return sub_80613D4(mapObject, sprite);
+ maybe_shadow_1(eventObject, sprite, DIR_SOUTH, 2, 0);
+ return MovementAction_Jump2Down_Step1(eventObject, sprite);
}
-bool8 sub_80613D4(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_Jump2Down_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (sub_8061328(mapObject, sprite))
+ if (sub_8061328(eventObject, sprite))
{
- mapObject->mapobj_bit_22 = 0;
+ eventObject->hasShadow = 0;
sprite->data[2] = 2;
return TRUE;
}
return FALSE;
}
-bool8 sub_8061400(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_Jump2Up_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- maybe_shadow_1(mapObject, sprite, DIR_NORTH, 2, 0);
- return sub_806142C(mapObject, sprite);
+ maybe_shadow_1(eventObject, sprite, DIR_NORTH, 2, 0);
+ return MovementAction_Jump2Up_Step1(eventObject, sprite);
}
-bool8 sub_806142C(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_Jump2Up_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (sub_8061328(mapObject, sprite))
+ if (sub_8061328(eventObject, sprite))
{
- mapObject->mapobj_bit_22 = 0;
+ eventObject->hasShadow = 0;
sprite->data[2] = 2;
return TRUE;
}
return FALSE;
}
-bool8 sub_8061458(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_Jump2Left_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- maybe_shadow_1(mapObject, sprite, DIR_WEST, 2, 0);
- return sub_8061484(mapObject, sprite);
+ maybe_shadow_1(eventObject, sprite, DIR_WEST, 2, 0);
+ return MovementAction_Jump2Left_Step1(eventObject, sprite);
}
-bool8 sub_8061484(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_Jump2Left_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (sub_8061328(mapObject, sprite))
+ if (sub_8061328(eventObject, sprite))
{
- mapObject->mapobj_bit_22 = 0;
+ eventObject->hasShadow = 0;
sprite->data[2] = 2;
return TRUE;
}
return FALSE;
}
-bool8 sub_80614B0(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_Jump2Right_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- maybe_shadow_1(mapObject, sprite, DIR_EAST, 2, 0);
- return sub_80614DC(mapObject, sprite);
+ maybe_shadow_1(eventObject, sprite, DIR_EAST, 2, 0);
+ return MovementAction_Jump2Right_Step1(eventObject, sprite);
}
-bool8 sub_80614DC(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_Jump2Right_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (sub_8061328(mapObject, sprite))
+ if (sub_8061328(eventObject, sprite))
{
- mapObject->mapobj_bit_22 = 0;
+ eventObject->hasShadow = 0;
sprite->data[2] = 2;
return TRUE;
}
@@ -6338,7 +5280,7 @@ void sub_8061508(struct Sprite *sprite, u16 duration)
sprite->data[3] = duration;
}
-bool8 sub_8061510(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_Delay_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
sprite->data[3]--;
if (!sprite->data[3])
@@ -6349,95 +5291,95 @@ bool8 sub_8061510(struct MapObject *mapObject, struct Sprite *sprite)
return FALSE;
}
-bool8 sub_806152C(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_Delay1_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
sub_8061508(sprite, 1);
- return sub_8061510(mapObject, sprite);
+ return MovementAction_Delay_Step1(eventObject, sprite);
}
-bool8 sub_806154C(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_Delay2_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
sub_8061508(sprite, 2);
- return sub_8061510(mapObject, sprite);
+ return MovementAction_Delay_Step1(eventObject, sprite);
}
-bool8 sub_806156C(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_Delay4_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
sub_8061508(sprite, 4);
- return sub_8061510(mapObject, sprite);
+ return MovementAction_Delay_Step1(eventObject, sprite);
}
-bool8 sub_806158C(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_Delay8_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
sub_8061508(sprite, 8);
- return sub_8061510(mapObject, sprite);
+ return MovementAction_Delay_Step1(eventObject, sprite);
}
-bool8 sub_80615AC(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_Delay16_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
sub_8061508(sprite, 16);
- return sub_8061510(mapObject, sprite);
+ return MovementAction_Delay_Step1(eventObject, sprite);
}
-bool8 sub_80615EC(struct MapObject *mapObject, struct Sprite *sprite);
-bool8 sub_806162C(struct MapObject *mapObject, struct Sprite *sprite);
-bool8 sub_806166C(struct MapObject *mapObject, struct Sprite *sprite);
-bool8 sub_80616AC(struct MapObject *mapObject, struct Sprite *sprite);
+bool8 MovementAction_WalkFastDown_Step1(struct EventObject *eventObject, struct Sprite *sprite);
+bool8 MovementAction_WalkFastUp_Step1(struct EventObject *eventObject, struct Sprite *sprite);
+bool8 MovementAction_WalkFastLeft_Step1(struct EventObject *eventObject, struct Sprite *sprite);
+bool8 MovementAction_WalkFastRight_Step1(struct EventObject *eventObject, struct Sprite *sprite);
-bool8 sub_80615CC(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_WalkFastDown_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- do_go_anim(mapObject, sprite, DIR_SOUTH, 1);
- return sub_80615EC(mapObject, sprite);
+ do_go_anim(eventObject, sprite, DIR_SOUTH, 1);
+ return MovementAction_WalkFastDown_Step1(eventObject, sprite);
}
-bool8 sub_80615EC(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_WalkFastDown_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(mapObject, sprite))
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
{
sprite->data[2] = 2;
return TRUE;
}
return FALSE;
}
-bool8 sub_806160C(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_WalkFastUp_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- do_go_anim(mapObject, sprite, DIR_NORTH, 1);
- return sub_806162C(mapObject, sprite);
+ do_go_anim(eventObject, sprite, DIR_NORTH, 1);
+ return MovementAction_WalkFastUp_Step1(eventObject, sprite);
}
-bool8 sub_806162C(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_WalkFastUp_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(mapObject, sprite))
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
{
sprite->data[2] = 2;
return TRUE;
}
return FALSE;
}
-bool8 sub_806164C(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_WalkFastLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- do_go_anim(mapObject, sprite, DIR_WEST, 1);
- return sub_806166C(mapObject, sprite);
+ do_go_anim(eventObject, sprite, DIR_WEST, 1);
+ return MovementAction_WalkFastLeft_Step1(eventObject, sprite);
}
-bool8 sub_806166C(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_WalkFastLeft_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(mapObject, sprite))
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
{
sprite->data[2] = 2;
return TRUE;
}
return FALSE;
}
-bool8 sub_806168C(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_WalkFastRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- do_go_anim(mapObject, sprite, DIR_EAST, 1);
- return sub_80616AC(mapObject, sprite);
+ do_go_anim(eventObject, sprite, DIR_EAST, 1);
+ return MovementAction_WalkFastRight_Step1(eventObject, sprite);
}
-bool8 sub_80616AC(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_WalkFastRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(mapObject, sprite))
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
{
sprite->data[2] = 2;
return TRUE;
@@ -6445,16 +5387,16 @@ bool8 sub_80616AC(struct MapObject *mapObject, struct Sprite *sprite)
return FALSE;
}
-void sub_80616CC(struct MapObject *mapObject, struct Sprite *sprite, u8 direction, u8 animId, u16 duration)
+void sub_80616CC(struct EventObject *eventObject, struct Sprite *sprite, u8 direction, u8 animNum, u16 duration)
{
- FieldObjectSetDirection(mapObject, direction);
- sub_805FE28(mapObject, sprite, animId);
+ SetEventObjectDirection(eventObject, direction);
+ sub_805FE28(eventObject, sprite, animNum);
sprite->animPaused = 0;
sprite->data[2] = 1;
sprite->data[3] = duration;
}
-bool8 sub_8061714(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_WalkInPlace_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
sprite->data[3]--;
if (sprite->data[3] == 0)
@@ -6466,122 +5408,122 @@ bool8 sub_8061714(struct MapObject *mapObject, struct Sprite *sprite)
return FALSE;
}
-bool8 sub_806173C(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_WalkInPlaceSlow_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
if (sprite->data[3] & 1)
{
sprite->animDelayCounter++;
}
- return sub_8061714(mapObject, sprite);
+ return MovementAction_WalkInPlace_Step1(eventObject, sprite);
}
-bool8 sub_8061778(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_WalkInPlaceSlowDown_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_80616CC(mapObject, sprite, DIR_SOUTH, get_go_image_anim_num(DIR_SOUTH), 32);
- return sub_806173C(mapObject, sprite);
+ sub_80616CC(eventObject, sprite, DIR_SOUTH, GetMoveDirectionAnimNum(DIR_SOUTH), 32);
+ return MovementAction_WalkInPlaceSlow_Step1(eventObject, sprite);
}
-bool8 sub_80617B0(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_WalkInPlaceSlowUp_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_80616CC(mapObject, sprite, DIR_NORTH, get_go_image_anim_num(DIR_NORTH), 32);
- return sub_806173C(mapObject, sprite);
+ sub_80616CC(eventObject, sprite, DIR_NORTH, GetMoveDirectionAnimNum(DIR_NORTH), 32);
+ return MovementAction_WalkInPlaceSlow_Step1(eventObject, sprite);
}
-bool8 sub_80617E8(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_WalkInPlaceSlowLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_80616CC(mapObject, sprite, DIR_WEST, get_go_image_anim_num(DIR_WEST), 32);
- return sub_806173C(mapObject, sprite);
+ sub_80616CC(eventObject, sprite, DIR_WEST, GetMoveDirectionAnimNum(DIR_WEST), 32);
+ return MovementAction_WalkInPlaceSlow_Step1(eventObject, sprite);
}
-bool8 sub_8061820(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_WalkInPlaceSlowRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_80616CC(mapObject, sprite, DIR_EAST, get_go_image_anim_num(DIR_EAST), 32);
- return sub_806173C(mapObject, sprite);
+ sub_80616CC(eventObject, sprite, DIR_EAST, GetMoveDirectionAnimNum(DIR_EAST), 32);
+ return MovementAction_WalkInPlaceSlow_Step1(eventObject, sprite);
}
-bool8 sub_8061858(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_WalkInPlaceNormalDown_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_80616CC(mapObject, sprite, DIR_SOUTH, get_go_image_anim_num(DIR_SOUTH), 16);
- return sub_8061714(mapObject, sprite);
+ sub_80616CC(eventObject, sprite, DIR_SOUTH, GetMoveDirectionAnimNum(DIR_SOUTH), 16);
+ return MovementAction_WalkInPlace_Step1(eventObject, sprite);
}
-bool8 sub_8061890(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_WalkInPlaceNormalUp_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_80616CC(mapObject, sprite, DIR_NORTH, get_go_image_anim_num(DIR_NORTH), 16);
- return sub_8061714(mapObject, sprite);
+ sub_80616CC(eventObject, sprite, DIR_NORTH, GetMoveDirectionAnimNum(DIR_NORTH), 16);
+ return MovementAction_WalkInPlace_Step1(eventObject, sprite);
}
-bool8 sub_80618C8(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_WalkInPlaceNormalLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_80616CC(mapObject, sprite, DIR_WEST, get_go_image_anim_num(DIR_WEST), 16);
- return sub_8061714(mapObject, sprite);
+ sub_80616CC(eventObject, sprite, DIR_WEST, GetMoveDirectionAnimNum(DIR_WEST), 16);
+ return MovementAction_WalkInPlace_Step1(eventObject, sprite);
}
-bool8 sub_8061900(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_WalkInPlaceNormalRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_80616CC(mapObject, sprite, DIR_EAST, get_go_image_anim_num(DIR_EAST), 16);
- return sub_8061714(mapObject, sprite);
+ sub_80616CC(eventObject, sprite, DIR_EAST, GetMoveDirectionAnimNum(DIR_EAST), 16);
+ return MovementAction_WalkInPlace_Step1(eventObject, sprite);
}
-bool8 sub_8061938(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_WalkInPlaceFastDown_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_80616CC(mapObject, sprite, DIR_SOUTH, get_go_fast_image_anim_num(DIR_SOUTH), 8);
- return sub_8061714(mapObject, sprite);
+ sub_80616CC(eventObject, sprite, DIR_SOUTH, GetMoveDirectionFastAnimNum(DIR_SOUTH), 8);
+ return MovementAction_WalkInPlace_Step1(eventObject, sprite);
}
-bool8 sub_8061970(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_WalkInPlaceFastUp_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_80616CC(mapObject, sprite, DIR_NORTH, get_go_fast_image_anim_num(DIR_NORTH), 8);
- return sub_8061714(mapObject, sprite);
+ sub_80616CC(eventObject, sprite, DIR_NORTH, GetMoveDirectionFastAnimNum(DIR_NORTH), 8);
+ return MovementAction_WalkInPlace_Step1(eventObject, sprite);
}
-bool8 sub_80619A8(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_WalkInPlaceFastLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_80616CC(mapObject, sprite, DIR_WEST, get_go_fast_image_anim_num(DIR_WEST), 8);
- return sub_8061714(mapObject, sprite);
+ sub_80616CC(eventObject, sprite, DIR_WEST, GetMoveDirectionFastAnimNum(DIR_WEST), 8);
+ return MovementAction_WalkInPlace_Step1(eventObject, sprite);
}
-bool8 sub_80619E0(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_WalkInPlaceFastRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_80616CC(mapObject, sprite, DIR_EAST, get_go_fast_image_anim_num(DIR_EAST), 8);
- return sub_8061714(mapObject, sprite);
+ sub_80616CC(eventObject, sprite, DIR_EAST, GetMoveDirectionFastAnimNum(DIR_EAST), 8);
+ return MovementAction_WalkInPlace_Step1(eventObject, sprite);
}
-bool8 sub_8061A18(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_WalkInPlaceFastestDown_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_80616CC(mapObject, sprite, DIR_SOUTH, get_go_faster_image_anim_num(DIR_SOUTH), 4);
- return sub_8061714(mapObject, sprite);
+ sub_80616CC(eventObject, sprite, DIR_SOUTH, GetMoveDirectionFasterAnimNum(DIR_SOUTH), 4);
+ return MovementAction_WalkInPlace_Step1(eventObject, sprite);
}
-bool8 sub_8061A50(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_WalkInPlaceFastestUp_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_80616CC(mapObject, sprite, DIR_NORTH, get_go_faster_image_anim_num(DIR_NORTH), 4);
- return sub_8061714(mapObject, sprite);
+ sub_80616CC(eventObject, sprite, DIR_NORTH, GetMoveDirectionFasterAnimNum(DIR_NORTH), 4);
+ return MovementAction_WalkInPlace_Step1(eventObject, sprite);
}
-bool8 sub_8061A88(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_WalkInPlaceFastestLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_80616CC(mapObject, sprite, DIR_WEST, get_go_faster_image_anim_num(DIR_WEST), 4);
- return sub_8061714(mapObject, sprite);
+ sub_80616CC(eventObject, sprite, DIR_WEST, GetMoveDirectionFasterAnimNum(DIR_WEST), 4);
+ return MovementAction_WalkInPlace_Step1(eventObject, sprite);
}
-bool8 sub_8061AC0(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_WalkInPlaceFastestRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_80616CC(mapObject, sprite, DIR_EAST, get_go_faster_image_anim_num(DIR_EAST), 4);
- return sub_8061714(mapObject, sprite);
+ sub_80616CC(eventObject, sprite, DIR_EAST, GetMoveDirectionFasterAnimNum(DIR_EAST), 4);
+ return MovementAction_WalkInPlace_Step1(eventObject, sprite);
}
-bool8 sub_8061B18(struct MapObject *, struct Sprite *);
+bool8 MovementAction_RideWaterCurrentDown_Step1(struct EventObject *, struct Sprite *);
-bool8 sub_8061AF8(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_RideWaterCurrentDown_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- do_go_anim(mapObject, sprite, DIR_SOUTH, 2);
- return sub_8061B18(mapObject, sprite);
+ do_go_anim(eventObject, sprite, DIR_SOUTH, 2);
+ return MovementAction_RideWaterCurrentDown_Step1(eventObject, sprite);
}
-bool8 sub_8061B18(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_RideWaterCurrentDown_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(mapObject, sprite))
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
{
sprite->data[2] = 2;
return TRUE;
@@ -6590,17 +5532,17 @@ bool8 sub_8061B18(struct MapObject *mapObject, struct Sprite *sprite)
}
-bool8 sub_8061B58(struct MapObject *, struct Sprite *);
+bool8 MovementAction_RideWaterCurrentUp_Step1(struct EventObject *, struct Sprite *);
-bool8 sub_8061B38(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_RideWaterCurrentUp_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- do_go_anim(mapObject, sprite, DIR_NORTH, 2);
- return sub_8061B58(mapObject, sprite);
+ do_go_anim(eventObject, sprite, DIR_NORTH, 2);
+ return MovementAction_RideWaterCurrentUp_Step1(eventObject, sprite);
}
-bool8 sub_8061B58(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_RideWaterCurrentUp_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(mapObject, sprite))
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
{
sprite->data[2] = 2;
return TRUE;
@@ -6609,17 +5551,17 @@ bool8 sub_8061B58(struct MapObject *mapObject, struct Sprite *sprite)
}
-bool8 sub_8061B98(struct MapObject *, struct Sprite *);
+bool8 MovementAction_RideWaterCurrentLeft_Step1(struct EventObject *, struct Sprite *);
-bool8 sub_8061B78(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_RideWaterCurrentLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- do_go_anim(mapObject, sprite, DIR_WEST, 2);
- return sub_8061B98(mapObject, sprite);
+ do_go_anim(eventObject, sprite, DIR_WEST, 2);
+ return MovementAction_RideWaterCurrentLeft_Step1(eventObject, sprite);
}
-bool8 sub_8061B98(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_RideWaterCurrentLeft_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(mapObject, sprite))
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
{
sprite->data[2] = 2;
return TRUE;
@@ -6628,17 +5570,17 @@ bool8 sub_8061B98(struct MapObject *mapObject, struct Sprite *sprite)
}
-bool8 sub_8061BD8(struct MapObject *, struct Sprite *);
+bool8 MovementAction_RideWaterCurrentRight_Step1(struct EventObject *, struct Sprite *);
-bool8 sub_8061BB8(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_RideWaterCurrentRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- do_go_anim(mapObject, sprite, DIR_EAST, 2);
- return sub_8061BD8(mapObject, sprite);
+ do_go_anim(eventObject, sprite, DIR_EAST, 2);
+ return MovementAction_RideWaterCurrentRight_Step1(eventObject, sprite);
}
-bool8 sub_8061BD8(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_RideWaterCurrentRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(mapObject, sprite))
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
{
sprite->data[2] = 2;
return TRUE;
@@ -6646,17 +5588,17 @@ bool8 sub_8061BD8(struct MapObject *mapObject, struct Sprite *sprite)
return FALSE;
}
-bool8 sub_8061C18(struct MapObject *, struct Sprite *);
+bool8 MovementAction_WalkFastestDown_Step1(struct EventObject *, struct Sprite *);
-bool8 sub_8061BF8(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_WalkFastestDown_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- do_go_anim(mapObject, sprite, DIR_SOUTH, 3);
- return sub_8061C18(mapObject, sprite);
+ do_go_anim(eventObject, sprite, DIR_SOUTH, 3);
+ return MovementAction_WalkFastestDown_Step1(eventObject, sprite);
}
-bool8 sub_8061C18(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_WalkFastestDown_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(mapObject, sprite))
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
{
sprite->data[2] = 2;
return TRUE;
@@ -6664,17 +5606,17 @@ bool8 sub_8061C18(struct MapObject *mapObject, struct Sprite *sprite)
return FALSE;
}
-bool8 sub_8061C58(struct MapObject *, struct Sprite *);
+bool8 MovementAction_WalkFastestUp_Step1(struct EventObject *, struct Sprite *);
-bool8 sub_8061C38(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_WalkFastestUp_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- do_go_anim(mapObject, sprite, DIR_NORTH, 3);
- return sub_8061C58(mapObject, sprite);
+ do_go_anim(eventObject, sprite, DIR_NORTH, 3);
+ return MovementAction_WalkFastestUp_Step1(eventObject, sprite);
}
-bool8 sub_8061C58(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_WalkFastestUp_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(mapObject, sprite))
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
{
sprite->data[2] = 2;
return TRUE;
@@ -6683,17 +5625,17 @@ bool8 sub_8061C58(struct MapObject *mapObject, struct Sprite *sprite)
}
-bool8 sub_8061C98(struct MapObject *, struct Sprite *);
+bool8 MovementAction_WalkFastestLeft_Step1(struct EventObject *, struct Sprite *);
-bool8 sub_8061C78(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_WalkFastestLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- do_go_anim(mapObject, sprite, DIR_WEST, 3);
- return sub_8061C98(mapObject, sprite);
+ do_go_anim(eventObject, sprite, DIR_WEST, 3);
+ return MovementAction_WalkFastestLeft_Step1(eventObject, sprite);
}
-bool8 sub_8061C98(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_WalkFastestLeft_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(mapObject, sprite))
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
{
sprite->data[2] = 2;
return TRUE;
@@ -6702,17 +5644,17 @@ bool8 sub_8061C98(struct MapObject *mapObject, struct Sprite *sprite)
}
-bool8 sub_8061CD8(struct MapObject *, struct Sprite *);
+bool8 MovementAction_WalkFastestRight_Step1(struct EventObject *, struct Sprite *);
-bool8 sub_8061CB8(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_WalkFastestRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- do_go_anim(mapObject, sprite, DIR_EAST, 3);
- return sub_8061CD8(mapObject, sprite);
+ do_go_anim(eventObject, sprite, DIR_EAST, 3);
+ return MovementAction_WalkFastestRight_Step1(eventObject, sprite);
}
-bool8 sub_8061CD8(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_WalkFastestRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(mapObject, sprite))
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
{
sprite->data[2] = 2;
return TRUE;
@@ -6720,17 +5662,17 @@ bool8 sub_8061CD8(struct MapObject *mapObject, struct Sprite *sprite)
return FALSE;
}
-bool8 sub_8061D18(struct MapObject *, struct Sprite *);
+bool8 MovementAction_SlideDown_Step1(struct EventObject *, struct Sprite *);
-bool8 sub_8061CF8(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_SlideDown_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- do_go_anim(mapObject, sprite, DIR_SOUTH, 4);
- return sub_8061D18(mapObject, sprite);
+ do_go_anim(eventObject, sprite, DIR_SOUTH, 4);
+ return MovementAction_SlideDown_Step1(eventObject, sprite);
}
-bool8 sub_8061D18(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_SlideDown_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(mapObject, sprite))
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
{
sprite->data[2] = 2;
return TRUE;
@@ -6738,17 +5680,17 @@ bool8 sub_8061D18(struct MapObject *mapObject, struct Sprite *sprite)
return FALSE;
}
-bool8 sub_8061D58(struct MapObject *, struct Sprite *);
+bool8 MovementAction_SlideUp_Step1(struct EventObject *, struct Sprite *);
-bool8 sub_8061D38(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_SlideUp_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- do_go_anim(mapObject, sprite, DIR_NORTH, 4);
- return sub_8061D58(mapObject, sprite);
+ do_go_anim(eventObject, sprite, DIR_NORTH, 4);
+ return MovementAction_SlideUp_Step1(eventObject, sprite);
}
-bool8 sub_8061D58(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_SlideUp_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(mapObject, sprite))
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
{
sprite->data[2] = 2;
return TRUE;
@@ -6757,17 +5699,17 @@ bool8 sub_8061D58(struct MapObject *mapObject, struct Sprite *sprite)
}
-bool8 sub_8061D98(struct MapObject *, struct Sprite *);
+bool8 MovementAction_SlideLeft_Step1(struct EventObject *, struct Sprite *);
-bool8 sub_8061D78(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_SlideLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- do_go_anim(mapObject, sprite, DIR_WEST, 4);
- return sub_8061D98(mapObject, sprite);
+ do_go_anim(eventObject, sprite, DIR_WEST, 4);
+ return MovementAction_SlideLeft_Step1(eventObject, sprite);
}
-bool8 sub_8061D98(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_SlideLeft_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(mapObject, sprite))
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
{
sprite->data[2] = 2;
return TRUE;
@@ -6776,17 +5718,17 @@ bool8 sub_8061D98(struct MapObject *mapObject, struct Sprite *sprite)
}
-bool8 sub_8061DD8(struct MapObject *, struct Sprite *);
+bool8 MovementAction_SlideRight_Step1(struct EventObject *, struct Sprite *);
-bool8 sub_8061DB8(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_SlideRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- do_go_anim(mapObject, sprite, DIR_EAST, 4);
- return sub_8061DD8(mapObject, sprite);
+ do_go_anim(eventObject, sprite, DIR_EAST, 4);
+ return MovementAction_SlideRight_Step1(eventObject, sprite);
}
-bool8 sub_8061DD8(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_SlideRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(mapObject, sprite))
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
{
sprite->data[2] = 2;
return TRUE;
@@ -6794,17 +5736,17 @@ bool8 sub_8061DD8(struct MapObject *mapObject, struct Sprite *sprite)
return FALSE;
}
-bool8 sub_8061E18(struct MapObject *, struct Sprite *);
+bool8 MovementAction_PlayerRunDown_Step1(struct EventObject *, struct Sprite *);
-bool8 do_run_south_anim(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_PlayerRunDown_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- do_run_anim(mapObject, sprite, DIR_SOUTH);
- return sub_8061E18(mapObject, sprite);
+ StartRunningAnim(eventObject, sprite, DIR_SOUTH);
+ return MovementAction_PlayerRunDown_Step1(eventObject, sprite);
}
-bool8 sub_8061E18(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_PlayerRunDown_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(mapObject, sprite))
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
{
sprite->data[2] = 2;
return TRUE;
@@ -6812,17 +5754,17 @@ bool8 sub_8061E18(struct MapObject *mapObject, struct Sprite *sprite)
return FALSE;
}
-bool8 sub_8061E58(struct MapObject *, struct Sprite *);
+bool8 MovementAction_PlayerRunUp_Step1(struct EventObject *, struct Sprite *);
-bool8 do_run_north_anim(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_PlayerRunUp_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- do_run_anim(mapObject, sprite, DIR_NORTH);
- return sub_8061E58(mapObject, sprite);
+ StartRunningAnim(eventObject, sprite, DIR_NORTH);
+ return MovementAction_PlayerRunUp_Step1(eventObject, sprite);
}
-bool8 sub_8061E58(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_PlayerRunUp_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(mapObject, sprite))
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
{
sprite->data[2] = 2;
return TRUE;
@@ -6830,17 +5772,17 @@ bool8 sub_8061E58(struct MapObject *mapObject, struct Sprite *sprite)
return FALSE;
}
-bool8 sub_8061E98(struct MapObject *, struct Sprite *);
+bool8 MovementAction_PlayerRunLeft_Step1(struct EventObject *, struct Sprite *);
-bool8 do_run_west_anim(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_PlayerRunLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- do_run_anim(mapObject, sprite, DIR_WEST);
- return sub_8061E98(mapObject, sprite);
+ StartRunningAnim(eventObject, sprite, DIR_WEST);
+ return MovementAction_PlayerRunLeft_Step1(eventObject, sprite);
}
-bool8 sub_8061E98(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_PlayerRunLeft_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(mapObject, sprite))
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
{
sprite->data[2] = 2;
return TRUE;
@@ -6848,17 +5790,17 @@ bool8 sub_8061E98(struct MapObject *mapObject, struct Sprite *sprite)
return FALSE;
}
-bool8 sub_8061ED8(struct MapObject *, struct Sprite *);
+bool8 MovementAction_PlayerRunRight_Step1(struct EventObject *, struct Sprite *);
-bool8 do_run_east_anim(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_PlayerRunRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- do_run_anim(mapObject, sprite, DIR_EAST);
- return sub_8061ED8(mapObject, sprite);
+ StartRunningAnim(eventObject, sprite, DIR_EAST);
+ return MovementAction_PlayerRunRight_Step1(eventObject, sprite);
}
-bool8 sub_8061ED8(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_PlayerRunRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(mapObject, sprite))
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
{
sprite->data[2] = 2;
return TRUE;
@@ -6866,24 +5808,24 @@ bool8 sub_8061ED8(struct MapObject *mapObject, struct Sprite *sprite)
return FALSE;
}
-void npc_set_direction_and_anim__an_proceed(struct MapObject *mapObject, struct Sprite *sprite, u8 direction, u8 animNum)
+void StartSpriteAnimInDirection(struct EventObject *eventObject, struct Sprite *sprite, u8 direction, u8 animNum)
{
- obj_anim_image_set_and_seek(sprite, animNum, 0);
- FieldObjectSetDirection(mapObject, direction);
+ SetAndStartSpriteAnim(sprite, animNum, 0);
+ SetEventObjectDirection(eventObject, direction);
sprite->data[2] = 1;
}
-bool8 sub_8061F24(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_StartAnimInDirection_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- npc_set_direction_and_anim__an_proceed(mapObject, sprite, mapObject->placeholder18, sprite->animNum);
+ StartSpriteAnimInDirection(eventObject, sprite, eventObject->movementDirection, sprite->animNum);
return FALSE;
}
-bool8 sub_8064864(struct Sprite *);
+bool8 SpriteAnimEnded(struct Sprite *);
-bool8 sub_8061F3C(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_WaitSpriteAnim(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (sub_8064864(sprite))
+ if (SpriteAnimEnded(sprite))
{
sprite->data[2] = 2;
return TRUE;
@@ -6891,455 +5833,455 @@ bool8 sub_8061F3C(struct MapObject *mapObject, struct Sprite *sprite)
return FALSE;
}
-void sub_8061F5C(struct MapObject *mapObject, struct Sprite *sprite, u8 direction)
+void sub_8061F5C(struct EventObject *eventObject, struct Sprite *sprite, u8 direction)
{
- sub_806113C(mapObject, sprite, direction, 1, 0);
- StartSpriteAnim(sprite, sub_805FD88(direction));
+ sub_806113C(eventObject, sprite, direction, 1, 0);
+ StartSpriteAnim(sprite, GetJumpSpecialDirectionAnimNum(direction));
}
-bool8 sub_8061FB0(struct MapObject *, struct Sprite *);
+bool8 MovementAction_JumpSpecialDown_Step1(struct EventObject *, struct Sprite *);
-bool8 sub_8061F90(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_JumpSpecialDown_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_8061F5C(mapObject, sprite, DIR_SOUTH);
- return sub_8061FB0(mapObject, sprite);
+ sub_8061F5C(eventObject, sprite, DIR_SOUTH);
+ return MovementAction_JumpSpecialDown_Step1(eventObject, sprite);
}
-bool8 sub_8061FB0(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_JumpSpecialDown_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (sub_8061340(mapObject, sprite))
+ if (sub_8061340(eventObject, sprite))
{
sprite->data[2] = 2;
- mapObject->mapobj_bit_5 = 0;
+ eventObject->landingJump = 0;
return TRUE;
}
return FALSE;
}
-bool8 sub_8061FF8(struct MapObject *, struct Sprite *);
+bool8 MovementAction_JumpSpecialUp_Step1(struct EventObject *, struct Sprite *);
-bool8 sub_8061FD8(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_JumpSpecialUp_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_8061F5C(mapObject, sprite, DIR_NORTH);
- return sub_8061FF8(mapObject, sprite);
+ sub_8061F5C(eventObject, sprite, DIR_NORTH);
+ return MovementAction_JumpSpecialUp_Step1(eventObject, sprite);
}
-bool8 sub_8061FF8(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_JumpSpecialUp_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (sub_8061340(mapObject, sprite))
+ if (sub_8061340(eventObject, sprite))
{
sprite->data[2] = 2;
- mapObject->mapobj_bit_5 = 0;
+ eventObject->landingJump = 0;
return TRUE;
}
return FALSE;
}
-bool8 sub_8062040(struct MapObject *, struct Sprite *);
+bool8 MovementAction_JumpSpecialLeft_Step1(struct EventObject *, struct Sprite *);
-bool8 sub_8062020(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_JumpSpecialLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_8061F5C(mapObject, sprite, DIR_WEST);
- return sub_8062040(mapObject, sprite);
+ sub_8061F5C(eventObject, sprite, DIR_WEST);
+ return MovementAction_JumpSpecialLeft_Step1(eventObject, sprite);
}
-bool8 sub_8062040(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_JumpSpecialLeft_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (sub_8061340(mapObject, sprite))
+ if (sub_8061340(eventObject, sprite))
{
sprite->data[2] = 2;
- mapObject->mapobj_bit_5 = 0;
+ eventObject->landingJump = 0;
return TRUE;
}
return FALSE;
}
-bool8 sub_8062088(struct MapObject *, struct Sprite *);
+bool8 MovementAction_JumpSpecialRight_Step1(struct EventObject *, struct Sprite *);
-bool8 sub_8062068(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_JumpSpecialRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_8061F5C(mapObject, sprite, DIR_EAST);
- return sub_8062088(mapObject, sprite);
+ sub_8061F5C(eventObject, sprite, DIR_EAST);
+ return MovementAction_JumpSpecialRight_Step1(eventObject, sprite);
}
-bool8 sub_8062088(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_JumpSpecialRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (sub_8061340(mapObject, sprite))
+ if (sub_8061340(eventObject, sprite))
{
sprite->data[2] = 2;
- mapObject->mapobj_bit_5 = 0;
+ eventObject->landingJump = 0;
return TRUE;
}
return FALSE;
}
-bool8 sub_80620B0(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_FacePlayer_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- u8 objectId;
- if (!TryGetFieldObjectIdByLocalIdAndMap(0xFF, MAP_GROUP(PETALBURG_CITY), MAP_NUM(PETALBURG_CITY), &objectId))
+ u8 playerObjectId;
+ if (!TryGetEventObjectIdByLocalIdAndMap(0xFF, 0, 0, &playerObjectId))
{
- an_look_any(mapObject, sprite, sub_805FE90(mapObject->coords2.x, mapObject->coords2.y, gMapObjects[objectId].coords2.x, gMapObjects[objectId].coords2.y));
+ FaceDirection(eventObject, sprite, GetDirectionToFace(eventObject->currentCoords.x, eventObject->currentCoords.y, gEventObjects[playerObjectId].currentCoords.x, gEventObjects[playerObjectId].currentCoords.y));
}
sprite->data[2] = 1;
return TRUE;
}
-bool8 sub_806210C(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_FaceAwayPlayer_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- u8 objectId;
- if (!TryGetFieldObjectIdByLocalIdAndMap(0xFF, MAP_GROUP(PETALBURG_CITY), MAP_NUM(PETALBURG_CITY), &objectId))
+ u8 playerObjectId;
+ if (!TryGetEventObjectIdByLocalIdAndMap(0xFF, 0, 0, &playerObjectId))
{
- an_look_any(mapObject, sprite, GetOppositeDirection(sub_805FE90(mapObject->coords2.x, mapObject->coords2.y, gMapObjects[objectId].coords2.x, gMapObjects[objectId].coords2.y)));
+ FaceDirection(eventObject, sprite, GetOppositeDirection(GetDirectionToFace(eventObject->currentCoords.x, eventObject->currentCoords.y, gEventObjects[playerObjectId].currentCoords.x, gEventObjects[playerObjectId].currentCoords.y)));
}
sprite->data[2] = 1;
return TRUE;
}
-bool8 sub_8062170(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_LockFacingDirection_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- mapObject->mapobj_bit_9 = 1;
+ eventObject->facingDirectionLocked = 1;
sprite->data[2] = 1;
return TRUE;
}
-bool8 sub_8062180(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_UnlockFacingDirection_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- mapObject->mapobj_bit_9 = 0;
+ eventObject->facingDirectionLocked = 0;
sprite->data[2] = 1;
return TRUE;
}
-bool8 sub_80621BC(struct MapObject *mapObject, struct Sprite *sprite);
+bool8 MovementAction_JumpDown_Step1(struct EventObject *eventObject, struct Sprite *sprite);
-bool8 sub_8062190(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_JumpDown_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- maybe_shadow_1(mapObject, sprite, DIR_SOUTH, 1, 2);
- return sub_80621BC(mapObject, sprite);
+ maybe_shadow_1(eventObject, sprite, DIR_SOUTH, 1, 2);
+ return MovementAction_JumpDown_Step1(eventObject, sprite);
}
-bool8 sub_80621BC(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_JumpDown_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (sub_8061328(mapObject, sprite))
+ if (sub_8061328(eventObject, sprite))
{
- mapObject->mapobj_bit_22 = 0;
+ eventObject->hasShadow = 0;
sprite->data[2] = 2;
return TRUE;
}
return FALSE;
}
-bool8 sub_8062214(struct MapObject *mapObject, struct Sprite *sprite);
+bool8 MovementAction_JumpUp_Step1(struct EventObject *eventObject, struct Sprite *sprite);
-bool8 sub_80621E8(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_JumpUp_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- maybe_shadow_1(mapObject, sprite, DIR_NORTH, 1, 2);
- return sub_8062214(mapObject, sprite);
+ maybe_shadow_1(eventObject, sprite, DIR_NORTH, 1, 2);
+ return MovementAction_JumpUp_Step1(eventObject, sprite);
}
-bool8 sub_8062214(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_JumpUp_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (sub_8061328(mapObject, sprite))
+ if (sub_8061328(eventObject, sprite))
{
- mapObject->mapobj_bit_22 = 0;
+ eventObject->hasShadow = 0;
sprite->data[2] = 2;
return TRUE;
}
return FALSE;
}
-bool8 sub_806226C(struct MapObject *mapObject, struct Sprite *sprite);
+bool8 MovementAction_JumpLeft_Step1(struct EventObject *eventObject, struct Sprite *sprite);
-bool8 sub_8062240(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_JumpLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- maybe_shadow_1(mapObject, sprite, DIR_WEST, 1, 2);
- return sub_806226C(mapObject, sprite);
+ maybe_shadow_1(eventObject, sprite, DIR_WEST, 1, 2);
+ return MovementAction_JumpLeft_Step1(eventObject, sprite);
}
-bool8 sub_806226C(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_JumpLeft_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (sub_8061328(mapObject, sprite))
+ if (sub_8061328(eventObject, sprite))
{
- mapObject->mapobj_bit_22 = 0;
+ eventObject->hasShadow = 0;
sprite->data[2] = 2;
return TRUE;
}
return FALSE;
}
-bool8 sub_80622C4(struct MapObject *mapObject, struct Sprite *sprite);
+bool8 MovementAction_JumpRight_Step1(struct EventObject *eventObject, struct Sprite *sprite);
-bool8 sub_8062298(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_JumpRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- maybe_shadow_1(mapObject, sprite, DIR_EAST, 1, 2);
- return sub_80622C4(mapObject, sprite);
+ maybe_shadow_1(eventObject, sprite, DIR_EAST, 1, 2);
+ return MovementAction_JumpRight_Step1(eventObject, sprite);
}
-bool8 sub_80622C4(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_JumpRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (sub_8061328(mapObject, sprite))
+ if (sub_8061328(eventObject, sprite))
{
- mapObject->mapobj_bit_22 = 0;
+ eventObject->hasShadow = 0;
sprite->data[2] = 2;
return TRUE;
}
return FALSE;
}
-bool8 sub_806231C(struct MapObject *mapObject, struct Sprite *sprite);
+bool8 MovementAction_JumpInPlaceDown_Step1(struct EventObject *eventObject, struct Sprite *sprite);
-bool8 sub_80622F0(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_JumpInPlaceDown_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- maybe_shadow_1(mapObject, sprite, DIR_SOUTH, 0, 0);
- return sub_806231C(mapObject, sprite);
+ maybe_shadow_1(eventObject, sprite, DIR_SOUTH, 0, 0);
+ return MovementAction_JumpInPlaceDown_Step1(eventObject, sprite);
}
-bool8 sub_806231C(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_JumpInPlaceDown_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (sub_8061328(mapObject, sprite))
+ if (sub_8061328(eventObject, sprite))
{
- mapObject->mapobj_bit_22 = 0;
+ eventObject->hasShadow = 0;
sprite->data[2] = 2;
return TRUE;
}
return FALSE;
}
-bool8 sub_8062374(struct MapObject *mapObject, struct Sprite *sprite);
+bool8 MovementAction_JumpInPlaceUp_Step1(struct EventObject *eventObject, struct Sprite *sprite);
-bool8 sub_8062348(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_JumpInPlaceUp_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- maybe_shadow_1(mapObject, sprite, DIR_NORTH, 0, 0);
- return sub_8062374(mapObject, sprite);
+ maybe_shadow_1(eventObject, sprite, DIR_NORTH, 0, 0);
+ return MovementAction_JumpInPlaceUp_Step1(eventObject, sprite);
}
-bool8 sub_8062374(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_JumpInPlaceUp_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (sub_8061328(mapObject, sprite))
+ if (sub_8061328(eventObject, sprite))
{
- mapObject->mapobj_bit_22 = 0;
+ eventObject->hasShadow = 0;
sprite->data[2] = 2;
return TRUE;
}
return FALSE;
}
-bool8 sub_80623CC(struct MapObject *mapObject, struct Sprite *sprite);
+bool8 MovementAction_JumpInPlaceLeft_Step1(struct EventObject *eventObject, struct Sprite *sprite);
-bool8 sub_80623A0(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_JumpInPlaceLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- maybe_shadow_1(mapObject, sprite, DIR_WEST, 0, 0);
- return sub_80623CC(mapObject, sprite);
+ maybe_shadow_1(eventObject, sprite, DIR_WEST, 0, 0);
+ return MovementAction_JumpInPlaceLeft_Step1(eventObject, sprite);
}
-bool8 sub_80623CC(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_JumpInPlaceLeft_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (sub_8061328(mapObject, sprite))
+ if (sub_8061328(eventObject, sprite))
{
- mapObject->mapobj_bit_22 = 0;
+ eventObject->hasShadow = 0;
sprite->data[2] = 2;
return TRUE;
}
return FALSE;
}
-bool8 sub_8062424(struct MapObject *mapObject, struct Sprite *sprite);
+bool8 MovementAction_JumpInPlaceRight_Step1(struct EventObject *eventObject, struct Sprite *sprite);
-bool8 sub_80623F8(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_JumpInPlaceRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- maybe_shadow_1(mapObject, sprite, DIR_EAST, 0, 0);
- return sub_8062424(mapObject, sprite);
+ maybe_shadow_1(eventObject, sprite, DIR_EAST, 0, 0);
+ return MovementAction_JumpInPlaceRight_Step1(eventObject, sprite);
}
-bool8 sub_8062424(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_JumpInPlaceRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (sub_8061328(mapObject, sprite))
+ if (sub_8061328(eventObject, sprite))
{
- mapObject->mapobj_bit_22 = 0;
+ eventObject->hasShadow = 0;
sprite->data[2] = 2;
return TRUE;
}
return FALSE;
}
-bool8 sub_806247C(struct MapObject *mapObject, struct Sprite *sprite);
+bool8 MovementAction_JumpInPlaceDownUp_Step1(struct EventObject *eventObject, struct Sprite *sprite);
-bool8 sub_8062450(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_JumpInPlaceDownUp_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- maybe_shadow_1(mapObject, sprite, DIR_SOUTH, 0, 2);
- return sub_806247C(mapObject, sprite);
+ maybe_shadow_1(eventObject, sprite, DIR_SOUTH, 0, 2);
+ return MovementAction_JumpInPlaceDownUp_Step1(eventObject, sprite);
}
-bool8 sub_806247C(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_JumpInPlaceDownUp_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (sub_8061358(mapObject, sprite))
+ if (sub_8061358(eventObject, sprite))
{
- mapObject->mapobj_bit_22 = 0;
+ eventObject->hasShadow = 0;
sprite->data[2] = 2;
return TRUE;
}
return FALSE;
}
-bool8 sub_80624D4(struct MapObject *mapObject, struct Sprite *sprite);
+bool8 MovementAction_JumpInPlaceUpDown_Step1(struct EventObject *eventObject, struct Sprite *sprite);
-bool8 sub_80624A8(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_JumpInPlaceUpDown_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- maybe_shadow_1(mapObject, sprite, DIR_NORTH, 0, 2);
- return sub_80624D4(mapObject, sprite);
+ maybe_shadow_1(eventObject, sprite, DIR_NORTH, 0, 2);
+ return MovementAction_JumpInPlaceUpDown_Step1(eventObject, sprite);
}
-bool8 sub_80624D4(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_JumpInPlaceUpDown_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (sub_8061358(mapObject, sprite))
+ if (sub_8061358(eventObject, sprite))
{
- mapObject->mapobj_bit_22 = 0;
+ eventObject->hasShadow = 0;
sprite->data[2] = 2;
return TRUE;
}
return FALSE;
}
-bool8 sub_806252C(struct MapObject *mapObject, struct Sprite *sprite);
+bool8 MovementAction_JumpInPlaceLeftRight_Step1(struct EventObject *eventObject, struct Sprite *sprite);
-bool8 sub_8062500(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_JumpInPlaceLeftRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- maybe_shadow_1(mapObject, sprite, DIR_WEST, 0, 2);
- return sub_806252C(mapObject, sprite);
+ maybe_shadow_1(eventObject, sprite, DIR_WEST, 0, 2);
+ return MovementAction_JumpInPlaceLeftRight_Step1(eventObject, sprite);
}
-bool8 sub_806252C(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_JumpInPlaceLeftRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (sub_8061358(mapObject, sprite))
+ if (sub_8061358(eventObject, sprite))
{
- mapObject->mapobj_bit_22 = 0;
+ eventObject->hasShadow = 0;
sprite->data[2] = 2;
return TRUE;
}
return FALSE;
}
-bool8 sub_8062584(struct MapObject *mapObject, struct Sprite *sprite);
+bool8 MovementAction_JumpInPlaceRightLeft_Step1(struct EventObject *eventObject, struct Sprite *sprite);
-bool8 sub_8062558(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_JumpInPlaceRightLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- maybe_shadow_1(mapObject, sprite, DIR_EAST, 0, 2);
- return sub_8062584(mapObject, sprite);
+ maybe_shadow_1(eventObject, sprite, DIR_EAST, 0, 2);
+ return MovementAction_JumpInPlaceRightLeft_Step1(eventObject, sprite);
}
-bool8 sub_8062584(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_JumpInPlaceRightLeft_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (sub_8061358(mapObject, sprite))
+ if (sub_8061358(eventObject, sprite))
{
- mapObject->mapobj_bit_22 = 0;
+ eventObject->hasShadow = 0;
sprite->data[2] = 2;
return TRUE;
}
return FALSE;
}
-bool8 sub_80625B0(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_FaceOriginalDirection_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- an_look_any(mapObject, sprite, gUnknown_0836DC09[mapObject->animPattern]);
+ FaceDirection(eventObject, sprite, gInitialMovementTypeFacingDirections[eventObject->movementType]);
return TRUE;
}
-bool8 sub_80625C8(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_NurseJoyBowDown_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- npc_set_direction_and_anim__an_proceed(mapObject, sprite, DIR_SOUTH, 0x14);
+ StartSpriteAnimInDirection(eventObject, sprite, DIR_SOUTH, 0x14);
return FALSE;
}
-bool8 sub_80625D8(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_EnableJumpLandingGroundEffect_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- mapObject->mapobj_bit_25 = 0;
+ eventObject->disableJumpLandingGroundEffect = 0;
sprite->data[2] = 1;
return TRUE;
}
-bool8 sub_80625E8(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_DisableJumpLandingGroundEffect_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- mapObject->mapobj_bit_25 = 1;
+ eventObject->disableJumpLandingGroundEffect = 1;
sprite->data[2] = 1;
return TRUE;
}
-bool8 sub_80625F8(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_DisableAnimation_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- mapObject->mapobj_bit_12 = 1;
+ eventObject->inanimate = 1;
sprite->data[2] = 1;
return TRUE;
}
-bool8 sub_8062608(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_RestoreAnimation_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- mapObject->mapobj_bit_12 = GetFieldObjectGraphicsInfo(mapObject->graphicsId)->inanimate;
+ eventObject->inanimate = GetEventObjectGraphicsInfo(eventObject->graphicsId)->inanimate;
sprite->data[2] = 1;
return TRUE;
}
-bool8 sub_8062634(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_SetInvisible_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- mapObject->mapobj_bit_13 = 1;
+ eventObject->invisible = 1;
sprite->data[2] = 1;
return TRUE;
}
-bool8 sub_8062644(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_SetVisible_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- mapObject->mapobj_bit_13 = 0;
+ eventObject->invisible = 0;
sprite->data[2] = 1;
return TRUE;
}
-bool8 do_exclamation_mark_bubble_1(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_EmoteExclamationMark_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- FieldObjectGetLocalIdAndMap(mapObject, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]);
- FieldEffectStart(FLDEFF_EXCLAMATION_MARK_ICON_1);
+ EventObjectGetLocalIdAndMap(eventObject, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]);
+ FieldEffectStart(FLDEFF_EXCLAMATION_MARK_ICON);
sprite->data[2] = 1;
return TRUE;
}
-bool8 do_exclamation_mark_bubble_2(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_EmoteQuestionMark_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- FieldObjectGetLocalIdAndMap(mapObject, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]);
- FieldEffectStart(FLDEFF_EXCLAMATION_MARK_ICON_2);
+ EventObjectGetLocalIdAndMap(eventObject, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]);
+ FieldEffectStart(FLDEFF_QUESTION_MARK_ICON);
sprite->data[2] = 1;
return TRUE;
}
-bool8 do_heart_bubble(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_EmoteHeart_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- FieldObjectGetLocalIdAndMap(mapObject, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]);
+ EventObjectGetLocalIdAndMap(eventObject, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]);
FieldEffectStart(FLDEFF_HEART_ICON);
sprite->data[2] = 1;
return TRUE;
}
-bool8 sub_8062704(struct MapObject *, struct Sprite *);
+bool8 MovementAction_RevealTrainer_Step1(struct EventObject *, struct Sprite *);
-bool8 sub_80626C0(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_RevealTrainer_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (mapObject->animPattern == 0x3F)
+ if (eventObject->movementType == MOVEMENT_TYPE_HIDDEN)
{
- sub_8084794(mapObject);
+ sub_8084794(eventObject);
return FALSE;
}
- else if (mapObject->animPattern != 0x39 && mapObject->animPattern != 0x3A)
+ else if (eventObject->movementType != MOVEMENT_TYPE_TREE_DISGUISE && eventObject->movementType != MOVEMENT_TYPE_MOUNTAIN_DISGUISE)
{
sprite->data[2] = 2;
return TRUE;
}
else
{
- sub_812869C(mapObject);
+ sub_812869C(eventObject);
sprite->data[2] = 1;
- return sub_8062704(mapObject, sprite);
+ return MovementAction_RevealTrainer_Step1(eventObject, sprite);
}
}
-bool8 sub_8062704(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_RevealTrainer_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (sub_81286C4(mapObject))
+ if (sub_81286C4(eventObject))
{
sprite->data[2] = 2;
return TRUE;
@@ -7347,106 +6289,106 @@ bool8 sub_8062704(struct MapObject *mapObject, struct Sprite *sprite)
return FALSE;
}
-bool8 sub_8062724(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_RockSmashBreak_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- obj_anim_image_set_and_seek(sprite, 1, 0);
+ SetAndStartSpriteAnim(sprite, 1, 0);
sprite->data[2] = 1;
return FALSE;
}
-bool8 sub_8062740(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_RockSmashBreak_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (sub_8064864(sprite))
+ if (SpriteAnimEnded(sprite))
{
- sub_8064820(sprite, 0x20);
+ SetMovementDelay(sprite, 0x20);
sprite->data[2] = 2;
}
return FALSE;
}
-bool8 sub_8062764(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_RockSmashBreak_Step2(struct EventObject *eventObject, struct Sprite *sprite)
{
- mapObject->mapobj_bit_13 ^= 1;
- if (sub_8064824(sprite))
+ eventObject->invisible ^= 1;
+ if (WaitForMovementDelay(sprite))
{
- mapObject->mapobj_bit_13 = 1;
+ eventObject->invisible = 1;
sprite->data[2] = 3;
}
return FALSE;
}
-bool8 sub_80627A0(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_CutTree_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- obj_anim_image_set_and_seek(sprite, 1, 0);
+ SetAndStartSpriteAnim(sprite, 1, 0);
sprite->data[2] = 1;
return FALSE;
}
-bool8 sub_80627BC(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_CutTree_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (sub_8064864(sprite))
+ if (SpriteAnimEnded(sprite))
{
- sub_8064820(sprite, 0x20);
+ SetMovementDelay(sprite, 0x20);
sprite->data[2] = 2;
}
return FALSE;
}
-bool8 sub_80627E0(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_CutTree_Step2(struct EventObject *eventObject, struct Sprite *sprite)
{
- mapObject->mapobj_bit_13 ^= 1;
- if (sub_8064824(sprite))
+ eventObject->invisible ^= 1;
+ if (WaitForMovementDelay(sprite))
{
- mapObject->mapobj_bit_13 = 1;
+ eventObject->invisible = 1;
sprite->data[2] = 3;
}
return FALSE;
}
-bool8 sub_806281C(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_SetFixedPriority_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- mapObject->mapobj_bit_26 = 1;
+ eventObject->fixedPriority = 1;
sprite->data[2] = 1;
return TRUE;
}
-bool8 sub_806282C(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_ClearFixedPriority_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- mapObject->mapobj_bit_26 = 0;
+ eventObject->fixedPriority = 0;
sprite->data[2] = 1;
return TRUE;
}
-bool8 sub_806283C(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_InitAffineAnim_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- sprite->oam.affineMode = 3;
+ sprite->oam.affineMode = ST_OAM_AFFINE_DOUBLE;
InitSpriteAffineAnim(sprite);
sprite->affineAnimPaused = 1;
sprite->subspriteMode = 0;
return TRUE;
}
-bool8 sub_806286C(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_ClearAffineAnim_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
FreeOamMatrix(sprite->oam.matrixNum);
- sprite->oam.affineMode = 0;
+ sprite->oam.affineMode = ST_OAM_AFFINE_OFF;
CalcCenterToCornerVec(sprite, sprite->oam.shape, sprite->oam.size, sprite->oam.affineMode);
return TRUE;
}
-bool8 sub_80628D0(struct MapObject *, struct Sprite *);
+bool8 MovementAction_WalkDownStartAffine_Step1(struct EventObject *, struct Sprite *);
-bool8 sub_806289C(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_WalkDownStartAffine_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_8060ED8(mapObject, sprite, DIR_SOUTH);
+ sub_8060ED8(eventObject, sprite, DIR_SOUTH);
sprite->affineAnimPaused = 0;
StartSpriteAffineAnimIfDifferent(sprite, 0);
- return sub_80628D0(mapObject, sprite);
+ return MovementAction_WalkDownStartAffine_Step1(eventObject, sprite);
}
-bool8 sub_80628D0(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_WalkDownStartAffine_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (an_walk_any_2(mapObject, sprite))
+ if (an_walk_any_2(eventObject, sprite))
{
sprite->affineAnimPaused = 1;
sprite->data[2] = 2;
@@ -7455,19 +6397,19 @@ bool8 sub_80628D0(struct MapObject *mapObject, struct Sprite *sprite)
return FALSE;
}
-bool8 sub_8062930(struct MapObject *, struct Sprite *);
+bool8 MovementAction_WalkDownAffine_Step1(struct EventObject *, struct Sprite *);
-bool8 sub_80628FC(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_WalkDownAffine_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_8060ED8(mapObject, sprite, DIR_SOUTH);
+ sub_8060ED8(eventObject, sprite, DIR_SOUTH);
sprite->affineAnimPaused = 0;
ChangeSpriteAffineAnimIfDifferent(sprite, 1);
- return sub_8062930(mapObject, sprite);
+ return MovementAction_WalkDownAffine_Step1(eventObject, sprite);
}
-bool8 sub_8062930(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_WalkDownAffine_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (an_walk_any_2(mapObject, sprite))
+ if (an_walk_any_2(eventObject, sprite))
{
sprite->affineAnimPaused = 1;
sprite->data[2] = 2;
@@ -7476,388 +6418,388 @@ bool8 sub_8062930(struct MapObject *mapObject, struct Sprite *sprite)
return FALSE;
}
-void sub_806295C(struct MapObject *mapObject, struct Sprite *sprite, u8 direction)
+void sub_806295C(struct EventObject *eventObject, struct Sprite *sprite, u8 direction)
{
- FieldObjectSetDirection(mapObject, direction);
- npc_coords_shift_still(mapObject);
- sub_805FE64(mapObject, sprite, sub_805FDD8(direction));
+ SetEventObjectDirection(eventObject, direction);
+ ShiftStillEventObjectCoords(eventObject);
+ sub_805FE64(eventObject, sprite, GetAcroWheeliePedalDirectionAnimNum(direction));
sprite->animPaused = 1;
sprite->data[2] = 1;
}
-bool8 sub_806299C(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroWheelieFaceDown_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_806295C(mapObject, sprite, DIR_SOUTH);
+ sub_806295C(eventObject, sprite, DIR_SOUTH);
return TRUE;
}
-bool8 sub_80629AC(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroWheelieFaceUp_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_806295C(mapObject, sprite, DIR_NORTH);
+ sub_806295C(eventObject, sprite, DIR_NORTH);
return TRUE;
}
-bool8 sub_80629BC(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroWheelieFaceLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_806295C(mapObject, sprite, DIR_WEST);
+ sub_806295C(eventObject, sprite, DIR_WEST);
return TRUE;
}
-bool8 sub_80629CC(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroWheelieFaceRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_806295C(mapObject, sprite, DIR_EAST);
+ sub_806295C(eventObject, sprite, DIR_EAST);
return TRUE;
}
-bool8 sub_80629DC(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroPopWheelieDown_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- npc_set_direction_and_anim__an_proceed(mapObject, sprite, DIR_SOUTH, sub_805FD98(DIR_SOUTH));
+ StartSpriteAnimInDirection(eventObject, sprite, DIR_SOUTH, GetAcroWheelieDirectionAnimNum(DIR_SOUTH));
return FALSE;
}
-bool8 sub_8062A00(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroPopWheelieUp_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- npc_set_direction_and_anim__an_proceed(mapObject, sprite, DIR_NORTH, sub_805FD98(DIR_NORTH));
+ StartSpriteAnimInDirection(eventObject, sprite, DIR_NORTH, GetAcroWheelieDirectionAnimNum(DIR_NORTH));
return FALSE;
}
-bool8 sub_8062A24(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroPopWheelieLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- npc_set_direction_and_anim__an_proceed(mapObject, sprite, DIR_WEST, sub_805FD98(DIR_WEST));
+ StartSpriteAnimInDirection(eventObject, sprite, DIR_WEST, GetAcroWheelieDirectionAnimNum(DIR_WEST));
return FALSE;
}
-bool8 sub_8062A48(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroPopWheelieRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- npc_set_direction_and_anim__an_proceed(mapObject, sprite, DIR_EAST, sub_805FD98(DIR_EAST));
+ StartSpriteAnimInDirection(eventObject, sprite, DIR_EAST, GetAcroWheelieDirectionAnimNum(DIR_EAST));
return FALSE;
}
-bool8 sub_8062A6C(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroEndWheelieFaceDown_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- npc_set_direction_and_anim__an_proceed(mapObject, sprite, DIR_SOUTH, sub_805FDB8(DIR_SOUTH));
+ StartSpriteAnimInDirection(eventObject, sprite, DIR_SOUTH, GetAcroEndWheelieDirectionAnimNum(DIR_SOUTH));
return FALSE;
}
-bool8 sub_8062A90(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroEndWheelieFaceUp_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- npc_set_direction_and_anim__an_proceed(mapObject, sprite, DIR_NORTH, sub_805FDB8(DIR_NORTH));
+ StartSpriteAnimInDirection(eventObject, sprite, DIR_NORTH, GetAcroEndWheelieDirectionAnimNum(DIR_NORTH));
return FALSE;
}
-bool8 sub_8062AB4(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroEndWheelieFaceLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- npc_set_direction_and_anim__an_proceed(mapObject, sprite, DIR_WEST, sub_805FDB8(DIR_WEST));
+ StartSpriteAnimInDirection(eventObject, sprite, DIR_WEST, GetAcroEndWheelieDirectionAnimNum(DIR_WEST));
return FALSE;
}
-bool8 sub_8062AD8(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroEndWheelieFaceRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- npc_set_direction_and_anim__an_proceed(mapObject, sprite, DIR_EAST, sub_805FDB8(DIR_EAST));
+ StartSpriteAnimInDirection(eventObject, sprite, DIR_EAST, GetAcroEndWheelieDirectionAnimNum(DIR_EAST));
return FALSE;
}
-bool8 sub_8062AFC(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_UnusedAcroActionDown_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- npc_set_direction_and_anim__an_proceed(mapObject, sprite, DIR_SOUTH, sub_805FDC8(DIR_SOUTH));
+ StartSpriteAnimInDirection(eventObject, sprite, DIR_SOUTH, GetAcroUnusedActionDirectionAnimNum(DIR_SOUTH));
return FALSE;
}
-bool8 sub_8062B20(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_UnusedAcroActionUp_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- npc_set_direction_and_anim__an_proceed(mapObject, sprite, DIR_NORTH, sub_805FDC8(DIR_NORTH));
+ StartSpriteAnimInDirection(eventObject, sprite, DIR_NORTH, GetAcroUnusedActionDirectionAnimNum(DIR_NORTH));
return FALSE;
}
-bool8 sub_8062B44(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_UnusedAcroActionLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- npc_set_direction_and_anim__an_proceed(mapObject, sprite, DIR_WEST, sub_805FDC8(DIR_WEST));
+ StartSpriteAnimInDirection(eventObject, sprite, DIR_WEST, GetAcroUnusedActionDirectionAnimNum(DIR_WEST));
return FALSE;
}
-bool8 sub_8062B68(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_UnusedAcroActionRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- npc_set_direction_and_anim__an_proceed(mapObject, sprite, DIR_EAST, sub_805FDC8(DIR_EAST));
+ StartSpriteAnimInDirection(eventObject, sprite, DIR_EAST, GetAcroUnusedActionDirectionAnimNum(DIR_EAST));
return FALSE;
}
-void sub_8062B8C(struct MapObject *mapObject, struct Sprite *sprite, u8 direction, u8 a3, u8 a4)
+void sub_8062B8C(struct EventObject *eventObject, struct Sprite *sprite, u8 direction, u8 a3, u8 a4)
{
- sub_806113C(mapObject, sprite, direction, a3, a4);
- StartSpriteAnimIfDifferent(sprite, sub_805FD98(direction));
- DoShadowFieldEffect(mapObject);
+ sub_806113C(eventObject, sprite, direction, a3, a4);
+ StartSpriteAnimIfDifferent(sprite, GetAcroWheelieDirectionAnimNum(direction));
+ DoShadowFieldEffect(eventObject);
}
-bool8 sub_8062BFC(struct MapObject *, struct Sprite *);
+bool8 MovementAction_AcroWheelieHopFaceDown_Step1(struct EventObject *, struct Sprite *);
-bool8 sub_8062BD0(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroWheelieHopFaceDown_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_8062B8C(mapObject, sprite, DIR_SOUTH, 0, 1);
- return sub_8062BFC(mapObject, sprite);
+ sub_8062B8C(eventObject, sprite, DIR_SOUTH, 0, 1);
+ return MovementAction_AcroWheelieHopFaceDown_Step1(eventObject, sprite);
}
-bool8 sub_8062BFC(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroWheelieHopFaceDown_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (sub_8061328(mapObject, sprite))
+ if (sub_8061328(eventObject, sprite))
{
- mapObject->mapobj_bit_22 = 0;
+ eventObject->hasShadow = 0;
sprite->data[2] = 2;
return TRUE;
}
return FALSE;
}
-bool8 sub_8062C54(struct MapObject *, struct Sprite *);
+bool8 MovementAction_AcroWheelieHopFaceUp_Step1(struct EventObject *, struct Sprite *);
-bool8 sub_8062C28(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroWheelieHopFaceUp_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_8062B8C(mapObject, sprite, DIR_NORTH, 0, 1);
- return sub_8062C54(mapObject, sprite);
+ sub_8062B8C(eventObject, sprite, DIR_NORTH, 0, 1);
+ return MovementAction_AcroWheelieHopFaceUp_Step1(eventObject, sprite);
}
-bool8 sub_8062C54(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroWheelieHopFaceUp_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (sub_8061328(mapObject, sprite))
+ if (sub_8061328(eventObject, sprite))
{
- mapObject->mapobj_bit_22 = 0;
+ eventObject->hasShadow = 0;
sprite->data[2] = 2;
return TRUE;
}
return FALSE;
}
-bool8 sub_8062CAC(struct MapObject *, struct Sprite *);
+bool8 MovementAction_AcroWheelieHopFaceLeft_Step1(struct EventObject *, struct Sprite *);
-bool8 sub_8062C80(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroWheelieHopFaceLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_8062B8C(mapObject, sprite, DIR_WEST, 0, 1);
- return sub_8062CAC(mapObject, sprite);
+ sub_8062B8C(eventObject, sprite, DIR_WEST, 0, 1);
+ return MovementAction_AcroWheelieHopFaceLeft_Step1(eventObject, sprite);
}
-bool8 sub_8062CAC(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroWheelieHopFaceLeft_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (sub_8061328(mapObject, sprite))
+ if (sub_8061328(eventObject, sprite))
{
- mapObject->mapobj_bit_22 = 0;
+ eventObject->hasShadow = 0;
sprite->data[2] = 2;
return TRUE;
}
return FALSE;
}
-bool8 sub_8062D04(struct MapObject *, struct Sprite *);
+bool8 MovementAction_AcroWheelieHopFaceRight_Step1(struct EventObject *, struct Sprite *);
-bool8 sub_8062CD8(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroWheelieHopFaceRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_8062B8C(mapObject, sprite, DIR_EAST, 0, 1);
- return sub_8062D04(mapObject, sprite);
+ sub_8062B8C(eventObject, sprite, DIR_EAST, 0, 1);
+ return MovementAction_AcroWheelieHopFaceRight_Step1(eventObject, sprite);
}
-bool8 sub_8062D04(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroWheelieHopFaceRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (sub_8061328(mapObject, sprite))
+ if (sub_8061328(eventObject, sprite))
{
- mapObject->mapobj_bit_22 = 0;
+ eventObject->hasShadow = 0;
sprite->data[2] = 2;
return TRUE;
}
return FALSE;
}
-bool8 sub_8062D5C(struct MapObject *, struct Sprite *);
+bool8 MovementAction_AcroWheelieHopDown_Step1(struct EventObject *, struct Sprite *);
-bool8 sub_8062D30(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroWheelieHopDown_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_8062B8C(mapObject, sprite, DIR_SOUTH, 1, 1);
- return sub_8062D5C(mapObject, sprite);
+ sub_8062B8C(eventObject, sprite, DIR_SOUTH, 1, 1);
+ return MovementAction_AcroWheelieHopDown_Step1(eventObject, sprite);
}
-bool8 sub_8062D5C(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroWheelieHopDown_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (sub_8061328(mapObject, sprite))
+ if (sub_8061328(eventObject, sprite))
{
- mapObject->mapobj_bit_22 = 0;
+ eventObject->hasShadow = 0;
sprite->data[2] = 2;
return TRUE;
}
return FALSE;
}
-bool8 sub_8062DB4(struct MapObject *, struct Sprite *);
+bool8 MovementAction_AcroWheelieHopUp_Step1(struct EventObject *, struct Sprite *);
-bool8 sub_8062D88(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroWheelieHopUp_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_8062B8C(mapObject, sprite, DIR_NORTH, 1, 1);
- return sub_8062DB4(mapObject, sprite);
+ sub_8062B8C(eventObject, sprite, DIR_NORTH, 1, 1);
+ return MovementAction_AcroWheelieHopUp_Step1(eventObject, sprite);
}
-bool8 sub_8062DB4(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroWheelieHopUp_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (sub_8061328(mapObject, sprite))
+ if (sub_8061328(eventObject, sprite))
{
- mapObject->mapobj_bit_22 = 0;
+ eventObject->hasShadow = 0;
sprite->data[2] = 2;
return TRUE;
}
return FALSE;
}
-bool8 sub_8062E0C(struct MapObject *, struct Sprite *);
+bool8 MovementAction_AcroWheelieHopLeft_Step1(struct EventObject *, struct Sprite *);
-bool8 sub_8062DE0(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroWheelieHopLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_8062B8C(mapObject, sprite, DIR_WEST, 1, 1);
- return sub_8062E0C(mapObject, sprite);
+ sub_8062B8C(eventObject, sprite, DIR_WEST, 1, 1);
+ return MovementAction_AcroWheelieHopLeft_Step1(eventObject, sprite);
}
-bool8 sub_8062E0C(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroWheelieHopLeft_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (sub_8061328(mapObject, sprite))
+ if (sub_8061328(eventObject, sprite))
{
- mapObject->mapobj_bit_22 = 0;
+ eventObject->hasShadow = 0;
sprite->data[2] = 2;
return TRUE;
}
return FALSE;
}
-bool8 sub_8062E64(struct MapObject *, struct Sprite *);
+bool8 MovementAction_AcroWheelieHopRight_Step1(struct EventObject *, struct Sprite *);
-bool8 sub_8062E38(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroWheelieHopRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_8062B8C(mapObject, sprite, DIR_EAST, 1, 1);
- return sub_8062E64(mapObject, sprite);
+ sub_8062B8C(eventObject, sprite, DIR_EAST, 1, 1);
+ return MovementAction_AcroWheelieHopRight_Step1(eventObject, sprite);
}
-bool8 sub_8062E64(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroWheelieHopRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (sub_8061328(mapObject, sprite))
+ if (sub_8061328(eventObject, sprite))
{
- mapObject->mapobj_bit_22 = 0;
+ eventObject->hasShadow = 0;
sprite->data[2] = 2;
return TRUE;
}
return FALSE;
}
-bool8 sub_8062EBC(struct MapObject *, struct Sprite *);
+bool8 MovementAction_AcroWheelieJumpDown_Step1(struct EventObject *, struct Sprite *);
-bool8 sub_8062E90(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroWheelieJumpDown_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_8062B8C(mapObject, sprite, DIR_SOUTH, 2, 0);
- return sub_8062EBC(mapObject, sprite);
+ sub_8062B8C(eventObject, sprite, DIR_SOUTH, 2, 0);
+ return MovementAction_AcroWheelieJumpDown_Step1(eventObject, sprite);
}
-bool8 sub_8062EBC(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroWheelieJumpDown_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (sub_8061328(mapObject, sprite))
+ if (sub_8061328(eventObject, sprite))
{
- mapObject->mapobj_bit_22 = 0;
+ eventObject->hasShadow = 0;
sprite->data[2] = 2;
return TRUE;
}
return FALSE;
}
-bool8 sub_8062F14(struct MapObject *, struct Sprite *);
+bool8 MovementAction_AcroWheelieJumpUp_Step1(struct EventObject *, struct Sprite *);
-bool8 sub_8062EE8(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroWheelieJumpUp_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_8062B8C(mapObject, sprite, DIR_NORTH, 2, 0);
- return sub_8062F14(mapObject, sprite);
+ sub_8062B8C(eventObject, sprite, DIR_NORTH, 2, 0);
+ return MovementAction_AcroWheelieJumpUp_Step1(eventObject, sprite);
}
-bool8 sub_8062F14(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroWheelieJumpUp_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (sub_8061328(mapObject, sprite))
+ if (sub_8061328(eventObject, sprite))
{
- mapObject->mapobj_bit_22 = 0;
+ eventObject->hasShadow = 0;
sprite->data[2] = 2;
return TRUE;
}
return FALSE;
}
-bool8 sub_8062F6C(struct MapObject *, struct Sprite *);
+bool8 MovementAction_AcroWheelieJumpLeft_Step1(struct EventObject *, struct Sprite *);
-bool8 sub_8062F40(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroWheelieJumpLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_8062B8C(mapObject, sprite, DIR_WEST, 2, 0);
- return sub_8062F6C(mapObject, sprite);
+ sub_8062B8C(eventObject, sprite, DIR_WEST, 2, 0);
+ return MovementAction_AcroWheelieJumpLeft_Step1(eventObject, sprite);
}
-bool8 sub_8062F6C(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroWheelieJumpLeft_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (sub_8061328(mapObject, sprite))
+ if (sub_8061328(eventObject, sprite))
{
- mapObject->mapobj_bit_22 = 0;
+ eventObject->hasShadow = 0;
sprite->data[2] = 2;
return TRUE;
}
return FALSE;
}
-bool8 sub_8062FC4(struct MapObject *, struct Sprite *);
+bool8 MovementAction_AcroWheelieJumpRight_Step1(struct EventObject *, struct Sprite *);
-bool8 sub_8062F98(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroWheelieJumpRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_8062B8C(mapObject, sprite, DIR_EAST, 2, 0);
- return sub_8062FC4(mapObject, sprite);
+ sub_8062B8C(eventObject, sprite, DIR_EAST, 2, 0);
+ return MovementAction_AcroWheelieJumpRight_Step1(eventObject, sprite);
}
-bool8 sub_8062FC4(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroWheelieJumpRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (sub_8061328(mapObject, sprite))
+ if (sub_8061328(eventObject, sprite))
{
- mapObject->mapobj_bit_22 = 0;
+ eventObject->hasShadow = 0;
sprite->data[2] = 2;
return TRUE;
}
return FALSE;
}
-bool8 sub_8062FF0(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroWheelieInPlaceDown_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_80616CC(mapObject, sprite, DIR_SOUTH, sub_805FDD8(DIR_SOUTH), 8);
- return sub_8061714(mapObject, sprite);
+ sub_80616CC(eventObject, sprite, DIR_SOUTH, GetAcroWheeliePedalDirectionAnimNum(DIR_SOUTH), 8);
+ return MovementAction_WalkInPlace_Step1(eventObject, sprite);
}
-bool8 sub_8063028(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroWheelieInPlaceUp_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_80616CC(mapObject, sprite, DIR_NORTH, sub_805FDD8(DIR_NORTH), 8);
- return sub_8061714(mapObject, sprite);
+ sub_80616CC(eventObject, sprite, DIR_NORTH, GetAcroWheeliePedalDirectionAnimNum(DIR_NORTH), 8);
+ return MovementAction_WalkInPlace_Step1(eventObject, sprite);
}
-bool8 sub_8063060(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroWheelieInPlaceLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_80616CC(mapObject, sprite, DIR_WEST, sub_805FDD8(DIR_WEST), 8);
- return sub_8061714(mapObject, sprite);
+ sub_80616CC(eventObject, sprite, DIR_WEST, GetAcroWheeliePedalDirectionAnimNum(DIR_WEST), 8);
+ return MovementAction_WalkInPlace_Step1(eventObject, sprite);
}
-bool8 sub_8063098(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroWheelieInPlaceRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_80616CC(mapObject, sprite, DIR_EAST, sub_805FDD8(DIR_EAST), 8);
- return sub_8061714(mapObject, sprite);
+ sub_80616CC(eventObject, sprite, DIR_EAST, GetAcroWheeliePedalDirectionAnimNum(DIR_EAST), 8);
+ return MovementAction_WalkInPlace_Step1(eventObject, sprite);
}
-void sub_80630D0(struct MapObject *mapObject, struct Sprite *sprite, u8 direction, u8 a3)
+void sub_80630D0(struct EventObject *eventObject, struct Sprite *sprite, u8 direction, u8 a3)
{
- sub_8060D20(mapObject, sprite, direction, a3);
- StartSpriteAnim(sprite, sub_805FD98(mapObject->mapobj_unk_18));
+ sub_8060D20(eventObject, sprite, direction, a3);
+ StartSpriteAnim(sprite, GetAcroWheelieDirectionAnimNum(eventObject->facingDirection));
SeekSpriteAnim(sprite, 0);
}
-bool8 sub_8063128(struct MapObject *, struct Sprite *);
+bool8 MovementAction_AcroPopWheelieMoveDown_Step1(struct EventObject *, struct Sprite *);
-bool8 sub_8063108(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroPopWheelieMoveDown_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_80630D0(mapObject, sprite, DIR_SOUTH, 1);
- return sub_8063128(mapObject, sprite);
+ sub_80630D0(eventObject, sprite, DIR_SOUTH, 1);
+ return MovementAction_AcroPopWheelieMoveDown_Step1(eventObject, sprite);
}
-bool8 sub_8063128(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroPopWheelieMoveDown_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(mapObject, sprite))
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
{
sprite->data[2] = 2;
return TRUE;
@@ -7865,17 +6807,17 @@ bool8 sub_8063128(struct MapObject *mapObject, struct Sprite *sprite)
return FALSE;
}
-bool8 sub_8063168(struct MapObject *, struct Sprite *);
+bool8 MovementAction_AcroPopWheelieMoveUp_Step1(struct EventObject *, struct Sprite *);
-bool8 sub_8063148(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroPopWheelieMoveUp_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_80630D0(mapObject, sprite, DIR_NORTH, 1);
- return sub_8063168(mapObject, sprite);
+ sub_80630D0(eventObject, sprite, DIR_NORTH, 1);
+ return MovementAction_AcroPopWheelieMoveUp_Step1(eventObject, sprite);
}
-bool8 sub_8063168(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroPopWheelieMoveUp_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(mapObject, sprite))
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
{
sprite->data[2] = 2;
return TRUE;
@@ -7883,17 +6825,17 @@ bool8 sub_8063168(struct MapObject *mapObject, struct Sprite *sprite)
return FALSE;
}
-bool8 sub_80631A8(struct MapObject *, struct Sprite *);
+bool8 MovementAction_AcroPopWheelieMoveLeft_Step1(struct EventObject *, struct Sprite *);
-bool8 sub_8063188(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroPopWheelieMoveLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_80630D0(mapObject, sprite, DIR_WEST, 1);
- return sub_80631A8(mapObject, sprite);
+ sub_80630D0(eventObject, sprite, DIR_WEST, 1);
+ return MovementAction_AcroPopWheelieMoveLeft_Step1(eventObject, sprite);
}
-bool8 sub_80631A8(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroPopWheelieMoveLeft_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(mapObject, sprite))
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
{
sprite->data[2] = 2;
return TRUE;
@@ -7901,17 +6843,17 @@ bool8 sub_80631A8(struct MapObject *mapObject, struct Sprite *sprite)
return FALSE;
}
-bool8 sub_80631E8(struct MapObject *, struct Sprite *);
+bool8 MovementAction_AcroPopWheelieMoveRight_Step1(struct EventObject *, struct Sprite *);
-bool8 sub_80631C8(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroPopWheelieMoveRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_80630D0(mapObject, sprite, DIR_EAST, 1);
- return sub_80631E8(mapObject, sprite);
+ sub_80630D0(eventObject, sprite, DIR_EAST, 1);
+ return MovementAction_AcroPopWheelieMoveRight_Step1(eventObject, sprite);
}
-bool8 sub_80631E8(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroPopWheelieMoveRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(mapObject, sprite))
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
{
sprite->data[2] = 2;
return TRUE;
@@ -7919,23 +6861,23 @@ bool8 sub_80631E8(struct MapObject *mapObject, struct Sprite *sprite)
return FALSE;
}
-void sub_8063208(struct MapObject *mapObject, struct Sprite *sprite, u8 direction, u8 a3)
+void sub_8063208(struct EventObject *eventObject, struct Sprite *sprite, u8 direction, u8 a3)
{
- sub_8060D20(mapObject, sprite, direction, a3);
- sub_805FE28(mapObject, sprite, sub_805FDD8(mapObject->mapobj_unk_18));
+ sub_8060D20(eventObject, sprite, direction, a3);
+ sub_805FE28(eventObject, sprite, GetAcroWheeliePedalDirectionAnimNum(eventObject->facingDirection));
}
-bool8 sub_8063258(struct MapObject *, struct Sprite *);
+bool8 MovementAction_AcroWheelieMoveDown_Step1(struct EventObject *, struct Sprite *);
-bool8 sub_8063238(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroWheelieMoveDown_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_8063208(mapObject, sprite, DIR_SOUTH, 1);
- return sub_8063258(mapObject, sprite);
+ sub_8063208(eventObject, sprite, DIR_SOUTH, 1);
+ return MovementAction_AcroWheelieMoveDown_Step1(eventObject, sprite);
}
-bool8 sub_8063258(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroWheelieMoveDown_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(mapObject, sprite))
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
{
sprite->data[2] = 2;
return TRUE;
@@ -7943,17 +6885,17 @@ bool8 sub_8063258(struct MapObject *mapObject, struct Sprite *sprite)
return FALSE;
}
-bool8 sub_8063298(struct MapObject *, struct Sprite *);
+bool8 MovementAction_AcroWheelieMoveUp_Step1(struct EventObject *, struct Sprite *);
-bool8 sub_8063278(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroWheelieMoveUp_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_8063208(mapObject, sprite, DIR_NORTH, 1);
- return sub_8063298(mapObject, sprite);
+ sub_8063208(eventObject, sprite, DIR_NORTH, 1);
+ return MovementAction_AcroWheelieMoveUp_Step1(eventObject, sprite);
}
-bool8 sub_8063298(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroWheelieMoveUp_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(mapObject, sprite))
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
{
sprite->data[2] = 2;
return TRUE;
@@ -7961,17 +6903,17 @@ bool8 sub_8063298(struct MapObject *mapObject, struct Sprite *sprite)
return FALSE;
}
-bool8 sub_80632D8(struct MapObject *, struct Sprite *);
+bool8 MovementAction_AcroWheelieMoveLeft_Step1(struct EventObject *, struct Sprite *);
-bool8 sub_80632B8(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroWheelieMoveLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_8063208(mapObject, sprite, DIR_WEST, 1);
- return sub_80632D8(mapObject, sprite);
+ sub_8063208(eventObject, sprite, DIR_WEST, 1);
+ return MovementAction_AcroWheelieMoveLeft_Step1(eventObject, sprite);
}
-bool8 sub_80632D8(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroWheelieMoveLeft_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(mapObject, sprite))
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
{
sprite->data[2] = 2;
return TRUE;
@@ -7979,17 +6921,17 @@ bool8 sub_80632D8(struct MapObject *mapObject, struct Sprite *sprite)
return FALSE;
}
-bool8 sub_8063318(struct MapObject *, struct Sprite *);
+bool8 MovementAction_AcroWheelieMoveRight_Step1(struct EventObject *, struct Sprite *);
-bool8 sub_80632F8(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroWheelieMoveRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_8063208(mapObject, sprite, DIR_EAST, 1);
- return sub_8063318(mapObject, sprite);
+ sub_8063208(eventObject, sprite, DIR_EAST, 1);
+ return MovementAction_AcroWheelieMoveRight_Step1(eventObject, sprite);
}
-bool8 sub_8063318(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroWheelieMoveRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(mapObject, sprite))
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
{
sprite->data[2] = 2;
return TRUE;
@@ -7997,24 +6939,24 @@ bool8 sub_8063318(struct MapObject *mapObject, struct Sprite *sprite)
return FALSE;
}
-void sub_8063338(struct MapObject *mapObject, struct Sprite *sprite, u8 direction, u8 a3)
+void sub_8063338(struct EventObject *eventObject, struct Sprite *sprite, u8 direction, u8 a3)
{
- sub_8060D20(mapObject, sprite, direction, a3);
- StartSpriteAnim(sprite, sub_805FDB8(mapObject->mapobj_unk_18));
+ sub_8060D20(eventObject, sprite, direction, a3);
+ StartSpriteAnim(sprite, GetAcroEndWheelieDirectionAnimNum(eventObject->facingDirection));
SeekSpriteAnim(sprite, 0);
}
-bool8 sub_8063390(struct MapObject *, struct Sprite *);
+bool8 MovementAction_AcroEndWheelieMoveDown_Step1(struct EventObject *, struct Sprite *);
-bool8 sub_8063370(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroEndWheelieMoveDown_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_8063338(mapObject, sprite, DIR_SOUTH, 1);
- return sub_8063390(mapObject, sprite);
+ sub_8063338(eventObject, sprite, DIR_SOUTH, 1);
+ return MovementAction_AcroEndWheelieMoveDown_Step1(eventObject, sprite);
}
-bool8 sub_8063390(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroEndWheelieMoveDown_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(mapObject, sprite))
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
{
sprite->data[2] = 2;
return TRUE;
@@ -8022,17 +6964,17 @@ bool8 sub_8063390(struct MapObject *mapObject, struct Sprite *sprite)
return FALSE;
}
-bool8 sub_80633D0(struct MapObject *, struct Sprite *);
+bool8 MovementAction_AcroEndWheelieMoveUp_Step1(struct EventObject *, struct Sprite *);
-bool8 sub_80633B0(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroEndWheelieMoveUp_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_8063338(mapObject, sprite, DIR_NORTH, 1);
- return sub_80633D0(mapObject, sprite);
+ sub_8063338(eventObject, sprite, DIR_NORTH, 1);
+ return MovementAction_AcroEndWheelieMoveUp_Step1(eventObject, sprite);
}
-bool8 sub_80633D0(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroEndWheelieMoveUp_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(mapObject, sprite))
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
{
sprite->data[2] = 2;
return TRUE;
@@ -8040,17 +6982,17 @@ bool8 sub_80633D0(struct MapObject *mapObject, struct Sprite *sprite)
return FALSE;
}
-bool8 sub_8063410(struct MapObject *, struct Sprite *);
+bool8 MovementAction_AcroEndWheelieMoveLeft_Step1(struct EventObject *, struct Sprite *);
-bool8 sub_80633F0(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroEndWheelieMoveLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_8063338(mapObject, sprite, DIR_WEST, 1);
- return sub_8063410(mapObject, sprite);
+ sub_8063338(eventObject, sprite, DIR_WEST, 1);
+ return MovementAction_AcroEndWheelieMoveLeft_Step1(eventObject, sprite);
}
-bool8 sub_8063410(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroEndWheelieMoveLeft_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(mapObject, sprite))
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
{
sprite->data[2] = 2;
return TRUE;
@@ -8058,17 +7000,17 @@ bool8 sub_8063410(struct MapObject *mapObject, struct Sprite *sprite)
return FALSE;
}
-bool8 sub_8063450(struct MapObject *, struct Sprite *);
+bool8 MovementAction_AcroEndWheelieMoveRight_Step1(struct EventObject *, struct Sprite *);
-bool8 sub_8063430(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroEndWheelieMoveRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_8063338(mapObject, sprite, DIR_EAST, 1);
- return sub_8063450(mapObject, sprite);
+ sub_8063338(eventObject, sprite, DIR_EAST, 1);
+ return MovementAction_AcroEndWheelieMoveRight_Step1(eventObject, sprite);
}
-bool8 sub_8063450(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_AcroEndWheelieMoveRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(mapObject, sprite))
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
{
sprite->data[2] = 2;
return TRUE;
@@ -8076,430 +7018,276 @@ bool8 sub_8063450(struct MapObject *mapObject, struct Sprite *sprite)
return FALSE;
}
-bool8 sub_8063470(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_Finish(struct EventObject *eventObject, struct Sprite *sprite)
{
return TRUE;
}
-bool8 sub_8063474(struct MapObject *mapObject, struct Sprite *sprite)
+bool8 MovementAction_PauseSpriteAnim(struct EventObject *eventObject, struct Sprite *sprite)
{
sprite->animPaused = 1;
return TRUE;
}
-void npc_obj_transfer_image_anim_pause_flag(struct MapObject *mapObject, struct Sprite *sprite)
+static void UpdateEventObjectSpriteAnimPause(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (mapObject->mapobj_bit_10)
- {
+ if (eventObject->disableAnim)
sprite->animPaused = 1;
- }
}
-void sub_80634A0(struct MapObject *mapObject, struct Sprite *sprite)
+static void TryEnableEventObjectAnim(struct EventObject *eventObject, struct Sprite *sprite)
{
- if (mapObject->mapobj_bit_11)
+ if (eventObject->enableAnim)
{
sprite->animPaused = 0;
- mapObject->mapobj_bit_10 = 0;
- mapObject->mapobj_bit_11 = 0;
+ eventObject->disableAnim = 0;
+ eventObject->enableAnim = 0;
}
}
-void sub_80634E8(struct MapObject *, struct Sprite *);
-static void UpdateMapObjSpriteVisibility(struct MapObject *, struct Sprite *);
-
-void sub_80634D0(struct MapObject *mapObject, struct Sprite *sprite)
+static void UpdateEventObjectVisibility(struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_80634E8(mapObject, sprite);
- UpdateMapObjSpriteVisibility(mapObject, sprite);
+ UpdateEventObjectIsOffscreen(eventObject, sprite);
+ UpdateEventObjSpriteVisibility(eventObject, sprite);
}
-#ifdef NONMATCHING
-void sub_80634E8(struct MapObject *mapObject, struct Sprite *sprite)
-{
- u16 x;
- u16 y;
- s16 x2;
- s16 y2;
- const struct MapObjectGraphicsInfo *graphicsInfo;
- mapObject->mapobj_bit_14 = 0;
- graphicsInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId);
+static void UpdateEventObjectIsOffscreen(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ u16 x, y;
+ s16 x2, y2;
+ const struct EventObjectGraphicsInfo *graphicsInfo;
+ eventObject->offScreen = 0;
+ graphicsInfo = GetEventObjectGraphicsInfo(eventObject->graphicsId);
if (sprite->coordOffsetEnabled)
{
x = sprite->pos1.x + sprite->pos2.x + sprite->centerToCornerVecX + gSpriteCoordOffsetX;
y = sprite->pos1.y + sprite->pos2.y + sprite->centerToCornerVecY + gSpriteCoordOffsetY;
- } else
+ }
+ else
{
x = sprite->pos1.x + sprite->pos2.x + sprite->centerToCornerVecX;
y = sprite->pos1.y + sprite->pos2.y + sprite->centerToCornerVecY;
}
- x2 = graphicsInfo->width + x; // offending line
- y2 = graphicsInfo->height + y; // similarly offending line
+
+ x2 = graphicsInfo->width + (s16)x;
+ y2 = graphicsInfo->height + (s16)y;
if ((s16)x >= 0x100 || x2 < -0x10)
{
- mapObject->mapobj_bit_14 = 1;
+ eventObject->offScreen = 1;
}
if ((s16)y >= 0xB0 || y2 < -0x10)
{
- mapObject->mapobj_bit_14 = 1;
+ eventObject->offScreen = 1;
}
}
-#else
-__attribute__((naked))
-void sub_80634E8(struct MapObject *mapObject, struct Sprite *sprite) {
- asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- adds r5, r0, 0\n\
- adds r4, r1, 0\n\
- ldrb r1, [r5, 0x1]\n\
- movs r0, 0x41\n\
- negs r0, r0\n\
- ands r0, r1\n\
- strb r0, [r5, 0x1]\n\
- ldrb r0, [r5, 0x5]\n\
- bl GetFieldObjectGraphicsInfo\n\
- adds r6, r0, 0\n\
- adds r0, r4, 0\n\
- adds r0, 0x3E\n\
- ldrb r1, [r0]\n\
- movs r0, 0x2\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0806354C\n\
- ldrh r1, [r4, 0x24]\n\
- ldrh r0, [r4, 0x20]\n\
- adds r1, r0\n\
- adds r0, r4, 0\n\
- adds r0, 0x28\n\
- ldrb r0, [r0]\n\
- lsls r0, 24\n\
- asrs r0, 24\n\
- ldr r2, _08063544 @ =gSpriteCoordOffsetX\n\
- adds r0, r1\n\
- ldrh r2, [r2]\n\
- adds r0, r2\n\
- lsls r0, 16\n\
- lsrs r3, r0, 16\n\
- ldrh r1, [r4, 0x26]\n\
- ldrh r0, [r4, 0x22]\n\
- adds r1, r0\n\
- adds r0, r4, 0\n\
- adds r0, 0x29\n\
- ldrb r0, [r0]\n\
- lsls r0, 24\n\
- asrs r0, 24\n\
- ldr r2, _08063548 @ =gSpriteCoordOffsetY\n\
- adds r0, r1\n\
- ldrh r2, [r2]\n\
- adds r0, r2\n\
- b _08063574\n\
- .align 2, 0\n\
-_08063544: .4byte gSpriteCoordOffsetX\n\
-_08063548: .4byte gSpriteCoordOffsetY\n\
-_0806354C:\n\
- ldrh r1, [r4, 0x24]\n\
- ldrh r0, [r4, 0x20]\n\
- adds r1, r0\n\
- adds r0, r4, 0\n\
- adds r0, 0x28\n\
- ldrb r0, [r0]\n\
- lsls r0, 24\n\
- asrs r0, 24\n\
- adds r0, r1\n\
- lsls r0, 16\n\
- lsrs r3, r0, 16\n\
- ldrh r1, [r4, 0x26]\n\
- ldrh r0, [r4, 0x22]\n\
- adds r1, r0\n\
- adds r0, r4, 0\n\
- adds r0, 0x29\n\
- ldrb r0, [r0]\n\
- lsls r0, 24\n\
- asrs r0, 24\n\
- adds r0, r1\n\
-_08063574:\n\
- lsls r0, 16\n\
- lsrs r2, r0, 16\n\
- ldrh r0, [r6, 0x8]\n\
- adds r0, r3\n\
- lsls r0, 16\n\
- lsrs r1, r0, 16\n\
- ldrh r0, [r6, 0xA]\n\
- adds r0, r2\n\
- lsls r0, 16\n\
- lsrs r4, r0, 16\n\
- lsls r0, r3, 16\n\
- asrs r0, 16\n\
- cmp r0, 0xFF\n\
- bgt _0806359C\n\
- lsls r0, r1, 16\n\
- asrs r0, 16\n\
- movs r1, 0x10\n\
- negs r1, r1\n\
- cmp r0, r1\n\
- bge _080635A4\n\
-_0806359C:\n\
- ldrb r0, [r5, 0x1]\n\
- movs r1, 0x40\n\
- orrs r0, r1\n\
- strb r0, [r5, 0x1]\n\
-_080635A4:\n\
- lsls r0, r2, 16\n\
- asrs r0, 16\n\
- cmp r0, 0xAF\n\
- bgt _080635B8\n\
- lsls r0, r4, 16\n\
- asrs r0, 16\n\
- movs r1, 0x10\n\
- negs r1, r1\n\
- cmp r0, r1\n\
- bge _080635C0\n\
-_080635B8:\n\
- ldrb r0, [r5, 0x1]\n\
- movs r1, 0x40\n\
- orrs r0, r1\n\
- strb r0, [r5, 0x1]\n\
-_080635C0:\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
-.syntax divided\n");
-}
-#endif
-void UpdateMapObjSpriteVisibility(struct MapObject *mapObject, struct Sprite *sprite)
+static void UpdateEventObjSpriteVisibility(struct EventObject *eventObject, struct Sprite *sprite)
{
sprite->invisible = 0;
- if (mapObject->mapobj_bit_13 || mapObject->mapobj_bit_14)
+ if (eventObject->invisible || eventObject->offScreen)
{
sprite->invisible = 1;
}
}
-static void nullsub(struct MapObject *mapObj, struct Sprite *sprite, u8);
-static void DoTracksGroundEffect_Footprints(struct MapObject *mapObj, struct Sprite *sprite, u8);
-static void DoTracksGroundEffect_BikeTireTracks(
-struct MapObject *mapObj, struct Sprite *sprite, u8);
-void GroundEffect_SpawnOnTallGrass(struct MapObject *mapObj, struct Sprite *sprite);
-void sub_8063E94(struct MapObject *mapObj, struct Sprite *sprite);
-void sub_8063EE0(struct MapObject *mapObj, struct Sprite *sprite);
-void sub_8063F2C(struct MapObject *mapObj, struct Sprite *sprite);
-void GroundEffect_WaterReflection(struct MapObject *mapObj, struct Sprite *sprite);
-void GroundEffect_IceReflection(struct MapObject *mapObj, struct Sprite *sprite);
-void GroundEffect_FlowingWater(struct MapObject *mapObj, struct Sprite *sprite);
-void sub_8063FA0(struct MapObject *mapObj, struct Sprite *sprite);
-void sub_8063FCC(struct MapObject *mapObj, struct Sprite *sprite);
-void GroundEffect_Ripple(struct MapObject *mapObj, struct Sprite *sprite);
-void GroundEffect_StepOnPuddle(struct MapObject *mapObj, struct Sprite *sprite);
-void GroundEffect_SandPile(struct MapObject *mapObj, struct Sprite *sprite);
-void GroundEffect_JumpOnTallGrass(struct MapObject *mapObj, struct Sprite *sprite);
-void GroundEffect_JumpOnLongGrass(struct MapObject *mapObj, struct Sprite *sprite);
-void GroundEffect_JumpOnShallowWater(struct MapObject *mapObj, struct Sprite *sprite);
-void GroundEffect_JumpOnWater(struct MapObject *mapObj, struct Sprite *sprite);
-void GroundEffect_JumpLandingDust(struct MapObject *mapObj, struct Sprite *sprite);
-void GroundEffect_ShortGrass(struct MapObject *mapObj, struct Sprite *sprite);
-void GroundEffect_HotSprings(struct MapObject *mapObj, struct Sprite *sprite);
-void GroundEffect_Seaweed(struct MapObject *mapObj, struct Sprite *sprite);
-u8 GetReflectionTypeByMetatileBehavior(u32 behavior);
-
-static void GetAllGroundEffectFlags_OnSpawn(struct MapObject *mapObj, u32 *flags)
-{
- FieldObjectUpdateMetatileBehaviors(mapObj);
- GetGroundEffectFlags_Reflection(mapObj, flags);
- GetGroundEffectFlags_TallGrassOnSpawn(mapObj, flags);
- GetGroundEffectFlags_LongGrassOnSpawn(mapObj, flags);
- GetGroundEffectFlags_SandPile(mapObj, flags);
- GetGroundEffectFlags_ShallowFlowingWater(mapObj, flags);
- GetGroundEffectFlags_ShortGrass(mapObj, flags);
- GetGroundEffectFlags_HotSprings(mapObj, flags);
-}
-
-static void GetAllGroundEffectFlags_OnBeginStep(struct MapObject *mapObj, u32 *flags)
-{
- FieldObjectUpdateMetatileBehaviors(mapObj);
- GetGroundEffectFlags_Reflection(mapObj, flags);
- GetGroundEffectFlags_TallGrassOnBeginStep(mapObj, flags);
- GetGroundEffectFlags_LongGrassOnBeginStep(mapObj, flags);
- GetGroundEffectFlags_Tracks(mapObj, flags);
- GetGroundEffectFlags_SandPile(mapObj, flags);
- GetGroundEffectFlags_ShallowFlowingWater(mapObj, flags);
- GetGroundEffectFlags_Puddle(mapObj, flags);
- GetGroundEffectFlags_ShortGrass(mapObj, flags);
- GetGroundEffectFlags_HotSprings(mapObj, flags);
-}
-
-static void GetAllGroundEffectFlags_OnFinishStep(struct MapObject *mapObj, u32 *flags)
-{
- FieldObjectUpdateMetatileBehaviors(mapObj);
- GetGroundEffectFlags_ShallowFlowingWater(mapObj, flags);
- GetGroundEffectFlags_SandPile(mapObj, flags);
- GetGroundEffectFlags_Puddle(mapObj, flags);
- GetGroundEffectFlags_Ripple(mapObj, flags);
- GetGroundEffectFlags_ShortGrass(mapObj, flags);
- GetGroundEffectFlags_HotSprings(mapObj, flags);
- GetGroundEffectFlags_Seaweed(mapObj, flags);
- GetGroundEffectFlags_JumpLanding(mapObj, flags);
-}
-
-void FieldObjectUpdateMetatileBehaviors(struct MapObject *mapObj)
-{
- mapObj->mapobj_unk_1F = MapGridGetMetatileBehaviorAt(mapObj->coords3.x, mapObj->coords3.y);
- mapObj->mapobj_unk_1E = MapGridGetMetatileBehaviorAt(mapObj->coords2.x, mapObj->coords2.y);
-}
-
-void GetGroundEffectFlags_Reflection(struct MapObject *mapObj, u32 *flags)
-{
- u32 reflectionFlags[2] = { 0x00000020, 0x00000010 };
- u8 type = FieldObjectCheckForReflectiveSurface(mapObj);
+static void GetAllGroundEffectFlags_OnSpawn(struct EventObject *eventObj, u32 *flags)
+{
+ EventObjectUpdateMetatileBehaviors(eventObj);
+ GetGroundEffectFlags_Reflection(eventObj, flags);
+ GetGroundEffectFlags_TallGrassOnSpawn(eventObj, flags);
+ GetGroundEffectFlags_LongGrassOnSpawn(eventObj, flags);
+ GetGroundEffectFlags_SandPile(eventObj, flags);
+ GetGroundEffectFlags_ShallowFlowingWater(eventObj, flags);
+ GetGroundEffectFlags_ShortGrass(eventObj, flags);
+ GetGroundEffectFlags_HotSprings(eventObj, flags);
+}
+
+static void GetAllGroundEffectFlags_OnBeginStep(struct EventObject *eventObj, u32 *flags)
+{
+ EventObjectUpdateMetatileBehaviors(eventObj);
+ GetGroundEffectFlags_Reflection(eventObj, flags);
+ GetGroundEffectFlags_TallGrassOnBeginStep(eventObj, flags);
+ GetGroundEffectFlags_LongGrassOnBeginStep(eventObj, flags);
+ GetGroundEffectFlags_Tracks(eventObj, flags);
+ GetGroundEffectFlags_SandPile(eventObj, flags);
+ GetGroundEffectFlags_ShallowFlowingWater(eventObj, flags);
+ GetGroundEffectFlags_Puddle(eventObj, flags);
+ GetGroundEffectFlags_ShortGrass(eventObj, flags);
+ GetGroundEffectFlags_HotSprings(eventObj, flags);
+}
+
+static void GetAllGroundEffectFlags_OnFinishStep(struct EventObject *eventObj, u32 *flags)
+{
+ EventObjectUpdateMetatileBehaviors(eventObj);
+ GetGroundEffectFlags_ShallowFlowingWater(eventObj, flags);
+ GetGroundEffectFlags_SandPile(eventObj, flags);
+ GetGroundEffectFlags_Puddle(eventObj, flags);
+ GetGroundEffectFlags_Ripple(eventObj, flags);
+ GetGroundEffectFlags_ShortGrass(eventObj, flags);
+ GetGroundEffectFlags_HotSprings(eventObj, flags);
+ GetGroundEffectFlags_Seaweed(eventObj, flags);
+ GetGroundEffectFlags_JumpLanding(eventObj, flags);
+}
+
+void EventObjectUpdateMetatileBehaviors(struct EventObject *eventObj)
+{
+ eventObj->previousMetatileBehavior = MapGridGetMetatileBehaviorAt(eventObj->previousCoords.x, eventObj->previousCoords.y);
+ eventObj->currentMetatileBehavior = MapGridGetMetatileBehaviorAt(eventObj->currentCoords.x, eventObj->currentCoords.y);
+}
+
+void GetGroundEffectFlags_Reflection(struct EventObject *eventObj, u32 *flags)
+{
+ u32 reflectionFlags[2] = { GROUND_EFFECT_FLAG_REFLECTION, GROUND_EFFECT_FLAG_ICE_REFLECTION };
+ u8 type = EventObjectCheckForReflectiveSurface(eventObj);
if (type)
{
- if (!mapObj->mapobj_bit_17)
+ if (!eventObj->hasReflection)
{
- mapObj->mapobj_bit_17 = 0;
- mapObj->mapobj_bit_17 = 1;
+ eventObj->hasReflection = 0;
+ eventObj->hasReflection = 1;
*flags |= reflectionFlags[type - 1];
}
}
else
{
- mapObj->mapobj_bit_17 = 0;
+ eventObj->hasReflection = 0;
}
}
-void GetGroundEffectFlags_TallGrassOnSpawn(struct MapObject *mapObj, u32 *flags)
+void GetGroundEffectFlags_TallGrassOnSpawn(struct EventObject *eventObj, u32 *flags)
{
- if (MetatileBehavior_IsTallGrass(mapObj->mapobj_unk_1E))
- *flags |= 0x1;
+ if (MetatileBehavior_IsTallGrass(eventObj->currentMetatileBehavior))
+ *flags |= GROUND_EFFECT_FLAG_TALL_GRASS_ON_SPAWN;
}
-void GetGroundEffectFlags_TallGrassOnBeginStep(struct MapObject *mapObj, u32 *flags)
+void GetGroundEffectFlags_TallGrassOnBeginStep(struct EventObject *eventObj, u32 *flags)
{
- if (MetatileBehavior_IsTallGrass(mapObj->mapobj_unk_1E))
- *flags |= 0x2;
+ if (MetatileBehavior_IsTallGrass(eventObj->currentMetatileBehavior))
+ *flags |= GROUND_EFFECT_FLAG_TALL_GRASS_ON_MOVE;
}
-void GetGroundEffectFlags_LongGrassOnSpawn(struct MapObject *mapObj, u32 *flags)
+void GetGroundEffectFlags_LongGrassOnSpawn(struct EventObject *eventObj, u32 *flags)
{
- if (MetatileBehavior_IsLongGrass(mapObj->mapobj_unk_1E))
- *flags |= 0x4;
+ if (MetatileBehavior_IsLongGrass(eventObj->currentMetatileBehavior))
+ *flags |= GROUND_EFFECT_FLAG_LONG_GRASS_ON_SPAWN;
}
-void GetGroundEffectFlags_LongGrassOnBeginStep(struct MapObject *mapObj, u32 *flags)
+void GetGroundEffectFlags_LongGrassOnBeginStep(struct EventObject *eventObj, u32 *flags)
{
- if (MetatileBehavior_IsLongGrass(mapObj->mapobj_unk_1E))
- *flags |= 0x8;
+ if (MetatileBehavior_IsLongGrass(eventObj->currentMetatileBehavior))
+ *flags |= GROUND_EFFECT_FLAG_LONG_GRASS_ON_MOVE;
}
-void GetGroundEffectFlags_Tracks(struct MapObject *mapObj, u32 *flags)
+void GetGroundEffectFlags_Tracks(struct EventObject *eventObj, u32 *flags)
{
- if (MetatileBehavior_IsDeepSand(mapObj->mapobj_unk_1F))
+ if (MetatileBehavior_IsDeepSand(eventObj->previousMetatileBehavior))
{
- *flags |= 0x100;
+ *flags |= GROUND_EFFECT_FLAG_DEEP_SAND;
}
- else if (MetatileBehavior_IsSandOrDeepSand(mapObj->mapobj_unk_1F)
- || MetatileBehavior_IsUnusedFootprintMetatile(mapObj->mapobj_unk_1F))
+ else if (MetatileBehavior_IsSandOrDeepSand(eventObj->previousMetatileBehavior)
+ || MetatileBehavior_IsFootprints(eventObj->previousMetatileBehavior))
{
- *flags |= 0x80;
+ *flags |= GROUND_EFFECT_FLAG_SAND;
}
}
-void GetGroundEffectFlags_SandPile(struct MapObject *mapObj, u32 *flags)
+void GetGroundEffectFlags_SandPile(struct EventObject *eventObj, u32 *flags)
{
- if (MetatileBehavior_IsDeepSand(mapObj->mapobj_unk_1E)
- && MetatileBehavior_IsDeepSand(mapObj->mapobj_unk_1F))
+ if (MetatileBehavior_IsDeepSand(eventObj->currentMetatileBehavior)
+ && MetatileBehavior_IsDeepSand(eventObj->previousMetatileBehavior))
{
- if (!mapObj->mapobj_bit_20)
+ if (!eventObj->inSandPile)
{
- mapObj->mapobj_bit_20 = 0;
- mapObj->mapobj_bit_20 = 1;
- *flags |= 0x800;
+ eventObj->inSandPile = 0;
+ eventObj->inSandPile = 1;
+ *flags |= GROUND_EFFECT_FLAG_SAND_PILE;
}
}
else
{
- mapObj->mapobj_bit_20 = 0;
+ eventObj->inSandPile = 0;
}
}
-void GetGroundEffectFlags_ShallowFlowingWater(struct MapObject *mapObj, u32 *flags)
+void GetGroundEffectFlags_ShallowFlowingWater(struct EventObject *eventObj, u32 *flags)
{
- if ((MetatileBehavior_IsShallowFlowingWater(mapObj->mapobj_unk_1E)
- && MetatileBehavior_IsShallowFlowingWater(mapObj->mapobj_unk_1F))
- || (MetatileBehavior_IsPacifidlogLog(mapObj->mapobj_unk_1E)
- && MetatileBehavior_IsPacifidlogLog(mapObj->mapobj_unk_1F)))
+ if ((MetatileBehavior_IsShallowFlowingWater(eventObj->currentMetatileBehavior)
+ && MetatileBehavior_IsShallowFlowingWater(eventObj->previousMetatileBehavior))
+ || (MetatileBehavior_IsPacifidlogLog(eventObj->currentMetatileBehavior)
+ && MetatileBehavior_IsPacifidlogLog(eventObj->previousMetatileBehavior)))
{
- if (!mapObj->mapobj_bit_19)
+ if (!eventObj->inShallowFlowingWater)
{
- mapObj->mapobj_bit_19 = 0;
- mapObj->mapobj_bit_19 = 1;
- *flags |= 0x40;
+ eventObj->inShallowFlowingWater = 0;
+ eventObj->inShallowFlowingWater = 1;
+ *flags |= GROUND_EFFECT_FLAG_SHALLOW_FLOWING_WATER;
}
}
else
{
- mapObj->mapobj_bit_19 = 0;
+ eventObj->inShallowFlowingWater = 0;
}
}
-void GetGroundEffectFlags_Puddle(struct MapObject *mapObj, u32 *flags)
+void GetGroundEffectFlags_Puddle(struct EventObject *eventObj, u32 *flags)
{
- if (MetatileBehavior_IsPuddle(mapObj->mapobj_unk_1E)
- && MetatileBehavior_IsPuddle(mapObj->mapobj_unk_1F))
+ if (MetatileBehavior_IsPuddle(eventObj->currentMetatileBehavior)
+ && MetatileBehavior_IsPuddle(eventObj->previousMetatileBehavior))
{
- *flags |= 0x400;
+ *flags |= GROUND_EFFECT_FLAG_PUDDLE;
}
}
-void GetGroundEffectFlags_Ripple(struct MapObject *mapObj, u32 *flags)
+void GetGroundEffectFlags_Ripple(struct EventObject *eventObj, u32 *flags)
{
- if (MetatileBehavior_HasRipples(mapObj->mapobj_unk_1E))
- *flags |= 0x200;
+ if (MetatileBehavior_HasRipples(eventObj->currentMetatileBehavior))
+ *flags |= GROUND_EFFECT_FLAG_RIPPLES;
}
-void GetGroundEffectFlags_ShortGrass(struct MapObject *mapObj, u32 *flags)
+void GetGroundEffectFlags_ShortGrass(struct EventObject *eventObj, u32 *flags)
{
- if (MetatileBehavior_IsShortGrass(mapObj->mapobj_unk_1E)
- && MetatileBehavior_IsShortGrass(mapObj->mapobj_unk_1F))
+ if (MetatileBehavior_IsShortGrass(eventObj->currentMetatileBehavior)
+ && MetatileBehavior_IsShortGrass(eventObj->previousMetatileBehavior))
{
- if (!mapObj->mapobj_bit_18)
+ if (!eventObj->inShortGrass)
{
- mapObj->mapobj_bit_18 = 0;
- mapObj->mapobj_bit_18 = 1;
- *flags |= 0x20000;
+ eventObj->inShortGrass = 0;
+ eventObj->inShortGrass = 1;
+ *flags |= GROUND_EFFECT_FLAG_SHORT_GRASS;
}
}
else
{
- mapObj->mapobj_bit_18 = 0;
+ eventObj->inShortGrass = 0;
}
}
-void GetGroundEffectFlags_HotSprings(struct MapObject *mapObj, u32 *flags)
+void GetGroundEffectFlags_HotSprings(struct EventObject *eventObj, u32 *flags)
{
- if (MetatileBehavior_IsHotSprings(mapObj->mapobj_unk_1E)
- && MetatileBehavior_IsHotSprings(mapObj->mapobj_unk_1F))
+ if (MetatileBehavior_IsHotSprings(eventObj->currentMetatileBehavior)
+ && MetatileBehavior_IsHotSprings(eventObj->previousMetatileBehavior))
{
- if (!mapObj->mapobj_bit_21)
+ if (!eventObj->inHotSprings)
{
- mapObj->mapobj_bit_21 = 0;
- mapObj->mapobj_bit_21 = 1;
- *flags |= 0x40000;
+ eventObj->inHotSprings = 0;
+ eventObj->inHotSprings = 1;
+ *flags |= GROUND_EFFECT_FLAG_HOT_SPRINGS;
}
}
else
{
- mapObj->mapobj_bit_21 = 0;
+ eventObj->inHotSprings = 0;
}
}
-void GetGroundEffectFlags_Seaweed(struct MapObject *mapObj, u32 *flags)
+void GetGroundEffectFlags_Seaweed(struct EventObject *eventObj, u32 *flags)
{
- if (MetatileBehavior_IsSeaweed(mapObj->mapobj_unk_1E))
- *flags |= 0x80000;
+ if (MetatileBehavior_IsSeaweed(eventObj->currentMetatileBehavior))
+ *flags |= GROUND_EFFECT_FLAG_SEAWEED;
}
-void GetGroundEffectFlags_JumpLanding(struct MapObject *mapObj, u32 *flags)
+void GetGroundEffectFlags_JumpLanding(struct EventObject *eventObj, u32 *flags)
{
typedef bool8 (*MetatileFunc)(u8);
@@ -8513,21 +7301,21 @@ void GetGroundEffectFlags_JumpLanding(struct MapObject *mapObj, u32 *flags)
};
static const u32 jumpLandingFlags[] = {
- 0x00001000, // Landing in tall grass
- 0x00002000, // Landing in long grass
- 0x00004000, // Landing on puddle
- 0x00008000, // Landing on surfable water or underwater
- 0x00004000, // Landing on shallow flowing water
- 0x00010000, // Landing on any other type of ground
+ GROUND_EFFECT_FLAG_LAND_IN_TALL_GRASS,
+ GROUND_EFFECT_FLAG_LAND_IN_LONG_GRASS,
+ GROUND_EFFECT_FLAG_LAND_IN_SHALLOW_WATER,
+ GROUND_EFFECT_FLAG_LAND_IN_DEEP_WATER,
+ GROUND_EFFECT_FLAG_LAND_IN_SHALLOW_WATER,
+ GROUND_EFFECT_FLAG_LAND_ON_NORMAL_GROUND,
};
- if (mapObj->mapobj_bit_5 && !mapObj->mapobj_bit_25)
+ if (eventObj->landingJump && !eventObj->disableJumpLandingGroundEffect)
{
u8 i;
- for (i = 0; i < 6; i++)
+ for (i = 0; i < ARRAY_COUNT(metatileFuncs); i++)
{
- if (metatileFuncs[i](mapObj->mapobj_unk_1E))
+ if (metatileFuncs[i](eventObj->currentMetatileBehavior))
{
*flags |= jumpLandingFlags[i];
return;
@@ -8536,9 +7324,9 @@ void GetGroundEffectFlags_JumpLanding(struct MapObject *mapObj, u32 *flags)
}
}
-u8 FieldObjectCheckForReflectiveSurface(struct MapObject *mapObj)
+u8 EventObjectCheckForReflectiveSurface(struct EventObject *eventObj)
{
- const struct MapObjectGraphicsInfo *info = GetFieldObjectGraphicsInfo(mapObj->graphicsId);
+ const struct EventObjectGraphicsInfo *info = GetEventObjectGraphicsInfo(eventObj->graphicsId);
// ceil div by tile width?
s16 width = (info->width + 8) >> 4;
@@ -8557,14 +7345,14 @@ u8 FieldObjectCheckForReflectiveSurface(struct MapObject *mapObj)
for (i = 0, one = 1; i < height; i++)
{
- RETURN_REFLECTION_TYPE_AT(mapObj->coords2.x, mapObj->coords2.y + one + i)
- RETURN_REFLECTION_TYPE_AT(mapObj->coords3.x, mapObj->coords3.y + one + i)
+ RETURN_REFLECTION_TYPE_AT(eventObj->currentCoords.x, eventObj->currentCoords.y + one + i)
+ RETURN_REFLECTION_TYPE_AT(eventObj->previousCoords.x, eventObj->previousCoords.y + one + i)
for (j = 1; j < width; j++)
{
- RETURN_REFLECTION_TYPE_AT(mapObj->coords2.x + j, mapObj->coords2.y + one + i)
- RETURN_REFLECTION_TYPE_AT(mapObj->coords2.x - j, mapObj->coords2.y + one + i)
- RETURN_REFLECTION_TYPE_AT(mapObj->coords3.x + j, mapObj->coords3.y + one + i)
- RETURN_REFLECTION_TYPE_AT(mapObj->coords3.x - j, mapObj->coords3.y + one + i)
+ RETURN_REFLECTION_TYPE_AT(eventObj->currentCoords.x + j, eventObj->currentCoords.y + one + i)
+ RETURN_REFLECTION_TYPE_AT(eventObj->currentCoords.x - j, eventObj->currentCoords.y + one + i)
+ RETURN_REFLECTION_TYPE_AT(eventObj->previousCoords.x + j, eventObj->previousCoords.y + one + i)
+ RETURN_REFLECTION_TYPE_AT(eventObj->previousCoords.x - j, eventObj->previousCoords.y + one + i)
}
}
return 0;
@@ -8572,7 +7360,7 @@ u8 FieldObjectCheckForReflectiveSurface(struct MapObject *mapObj)
#undef RETURN_REFLECTION_TYPE_AT
}
-u8 GetReflectionTypeByMetatileBehavior(u32 behavior)
+static u8 GetReflectionTypeByMetatileBehavior(u32 behavior)
{
if (MetatileBehavior_IsIce(behavior))
return 1;
@@ -8608,20 +7396,20 @@ u8 GetLedgeJumpDirection(s16 x, s16 y, u8 z)
return 0;
}
-void FieldObjectSetSpriteOamTableForLongGrass(struct MapObject *mapObj, struct Sprite *sprite)
+void SetEventObjectSpriteOamTableForLongGrass(struct EventObject *eventObj, struct Sprite *sprite)
{
- if (mapObj->mapobj_bit_4)
+ if (eventObj->disableCoveringGroundEffects)
return;
- if (!MetatileBehavior_IsLongGrass(mapObj->mapobj_unk_1E))
+ if (!MetatileBehavior_IsLongGrass(eventObj->currentMetatileBehavior))
return;
- if (!MetatileBehavior_IsLongGrass(mapObj->mapobj_unk_1F))
+ if (!MetatileBehavior_IsLongGrass(eventObj->previousMetatileBehavior))
return;
sprite->subspriteTableNum = 4;
- if (ZCoordToPriority(mapObj->elevation) == 1)
+ if (ZCoordToPriority(eventObj->previousElevation) == 1)
sprite->subspriteTableNum = 5;
}
@@ -8647,54 +7435,54 @@ static const u8 sUnknown_08376050[] = {
0x73, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x00, 0x00, 0x73
};
-// Each byte corresponds to a sprite priority for a field object.
-// This is directly the inverse of gFieldObjectPriorities_08376070.
-static const u8 sFieldObjectPriorities_08376060[] = {
+// Each byte corresponds to a sprite priority for an event object.
+// This is directly the inverse of gEventObjectPriorities_08376070.
+static const u8 sEventObjectPriorities_08376060[] = {
2, 2, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 0, 0, 2
};
-// Each byte corresponds to a sprite priority for a field object.
-// This is the inverse of gFieldObjectPriorities_08376060.
+// Each byte corresponds to a sprite priority for an event object.
+// This is the inverse of gEventObjectPriorities_08376060.
// 1 = Above player sprite
// 2 = Below player sprite
-static const u8 sFieldObjectPriorities_08376070[] = {
+static const u8 sEventObjectPriorities_08376070[] = {
1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 1,
};
-void FieldObjectUpdateZCoordAndPriority(struct MapObject *mapObj, struct Sprite *sprite)
+void UpdateEventObjectZCoordAndPriority(struct EventObject *eventObj, struct Sprite *sprite)
{
- if (mapObj->mapobj_bit_26)
+ if (eventObj->fixedPriority)
return;
- FieldObjectUpdateZCoord(mapObj);
+ EventObjectUpdateZCoord(eventObj);
- sprite->subspriteTableNum = sFieldObjectPriorities_08376070[mapObj->elevation];
- sprite->oam.priority = sFieldObjectPriorities_08376060[mapObj->elevation];
+ sprite->subspriteTableNum = sEventObjectPriorities_08376070[eventObj->previousElevation];
+ sprite->oam.priority = sEventObjectPriorities_08376060[eventObj->previousElevation];
}
-void InitObjectPriorityByZCoord(struct Sprite *sprite, u8 z)
+static void InitObjectPriorityByZCoord(struct Sprite *sprite, u8 z)
{
- sprite->subspriteTableNum = sFieldObjectPriorities_08376070[z];
- sprite->oam.priority = sFieldObjectPriorities_08376060[z];
+ sprite->subspriteTableNum = sEventObjectPriorities_08376070[z];
+ sprite->oam.priority = sEventObjectPriorities_08376060[z];
}
u8 ZCoordToPriority(u8 z)
{
- return sFieldObjectPriorities_08376060[z];
+ return sEventObjectPriorities_08376060[z];
}
-void FieldObjectUpdateZCoord(struct MapObject *mapObj)
+void EventObjectUpdateZCoord(struct EventObject *eventObj)
{
- u8 z = MapGridGetZCoordAt(mapObj->coords2.x, mapObj->coords2.y);
- u8 z2 = MapGridGetZCoordAt(mapObj->coords3.x, mapObj->coords3.y);
+ u8 z = MapGridGetZCoordAt(eventObj->currentCoords.x, eventObj->currentCoords.y);
+ u8 z2 = MapGridGetZCoordAt(eventObj->previousCoords.x, eventObj->previousCoords.y);
if (z == 0xF || z2 == 0xF)
return;
- mapObj->mapobj_unk_0B_0 = z;
+ eventObj->currentElevation = z;
if (z != 0 && z != 0xF)
- mapObj->elevation = z;
+ eventObj->previousElevation = z;
}
void SetObjectSubpriorityByZCoord(u8 a, struct Sprite *sprite, u8 b)
@@ -8707,12 +7495,12 @@ void SetObjectSubpriorityByZCoord(u8 a, struct Sprite *sprite, u8 b)
sprite->subpriority = tmp3 + sUnknown_08376050[a] + b;
}
-void FieldObjectUpdateSubpriority(struct MapObject *mapObj, struct Sprite *sprite)
+static void EventObjectUpdateSubpriority(struct EventObject *eventObj, struct Sprite *sprite)
{
- if (mapObj->mapobj_bit_26)
+ if (eventObj->fixedPriority)
return;
- SetObjectSubpriorityByZCoord(mapObj->elevation, sprite, 1);
+ SetObjectSubpriorityByZCoord(eventObj->previousElevation, sprite, 1);
}
bool8 AreZCoordsCompatible(u8 a, u8 b)
@@ -8726,111 +7514,110 @@ bool8 AreZCoordsCompatible(u8 a, u8 b)
return TRUE;
}
-void GroundEffect_SpawnOnTallGrass(struct MapObject *mapObj, struct Sprite *sprite)
+void GroundEffect_SpawnOnTallGrass(struct EventObject *eventObj, struct Sprite *sprite)
{
- gFieldEffectArguments[0] = mapObj->coords2.x;
- gFieldEffectArguments[1] = mapObj->coords2.y;
- gFieldEffectArguments[2] = mapObj->elevation;
+ gFieldEffectArguments[0] = eventObj->currentCoords.x;
+ gFieldEffectArguments[1] = eventObj->currentCoords.y;
+ gFieldEffectArguments[2] = eventObj->previousElevation;
gFieldEffectArguments[3] = 2;
- gFieldEffectArguments[4] = mapObj->localId << 8 | mapObj->mapNum;
- gFieldEffectArguments[5] = mapObj->mapGroup;
+ gFieldEffectArguments[4] = eventObj->localId << 8 | eventObj->mapNum;
+ gFieldEffectArguments[5] = eventObj->mapGroup;
gFieldEffectArguments[6] = (u8)gSaveBlock1.location.mapNum << 8 | (u8)gSaveBlock1.location.mapGroup;
gFieldEffectArguments[7] = 1;
FieldEffectStart(FLDEFF_TALL_GRASS);
}
-void sub_8063E94(struct MapObject *mapObj, struct Sprite *sprite)
+void GroundEffect_MoveOnTallGrass(struct EventObject *eventObj, struct Sprite *sprite)
{
- gFieldEffectArguments[0] = mapObj->coords2.x;
- gFieldEffectArguments[1] = mapObj->coords2.y;
- gFieldEffectArguments[2] = mapObj->elevation;
+ gFieldEffectArguments[0] = eventObj->currentCoords.x;
+ gFieldEffectArguments[1] = eventObj->currentCoords.y;
+ gFieldEffectArguments[2] = eventObj->previousElevation;
gFieldEffectArguments[3] = 2;
- gFieldEffectArguments[4] = mapObj->localId << 8 | mapObj->mapNum;
- gFieldEffectArguments[5] = mapObj->mapGroup;
+ gFieldEffectArguments[4] = eventObj->localId << 8 | eventObj->mapNum;
+ gFieldEffectArguments[5] = eventObj->mapGroup;
gFieldEffectArguments[6] = (u8)gSaveBlock1.location.mapNum << 8 | (u8)gSaveBlock1.location.mapGroup;
gFieldEffectArguments[7] = 0;
FieldEffectStart(FLDEFF_TALL_GRASS);
}
-void sub_8063EE0(struct MapObject *mapObj, struct Sprite *sprite)
+void GroundEffect_SpawnOnLongGrass(struct EventObject *eventObj, struct Sprite *sprite)
{
- gFieldEffectArguments[0] = mapObj->coords2.x;
- gFieldEffectArguments[1] = mapObj->coords2.y;
- gFieldEffectArguments[2] = mapObj->elevation;
+ gFieldEffectArguments[0] = eventObj->currentCoords.x;
+ gFieldEffectArguments[1] = eventObj->currentCoords.y;
+ gFieldEffectArguments[2] = eventObj->previousElevation;
gFieldEffectArguments[3] = 2;
- gFieldEffectArguments[4] = mapObj->localId << 8 | mapObj->mapNum;
- gFieldEffectArguments[5] = mapObj->mapGroup;
+ gFieldEffectArguments[4] = eventObj->localId << 8 | eventObj->mapNum;
+ gFieldEffectArguments[5] = eventObj->mapGroup;
gFieldEffectArguments[6] = (u8)gSaveBlock1.location.mapNum << 8 | (u8)gSaveBlock1.location.mapGroup;
gFieldEffectArguments[7] = 1;
FieldEffectStart(FLDEFF_LONG_GRASS);
}
-void sub_8063F2C(struct MapObject *mapObj, struct Sprite *sprite)
+void GroundEffect_MoveOnLongGrass(struct EventObject *eventObj, struct Sprite *sprite)
{
- gFieldEffectArguments[0] = mapObj->coords2.x;
- gFieldEffectArguments[1] = mapObj->coords2.y;
- gFieldEffectArguments[2] = mapObj->elevation;
+ gFieldEffectArguments[0] = eventObj->currentCoords.x;
+ gFieldEffectArguments[1] = eventObj->currentCoords.y;
+ gFieldEffectArguments[2] = eventObj->previousElevation;
gFieldEffectArguments[3] = 2;
- gFieldEffectArguments[4] = (mapObj->localId << 8) | mapObj->mapNum;
- gFieldEffectArguments[5] = mapObj->mapGroup;
+ gFieldEffectArguments[4] = (eventObj->localId << 8) | eventObj->mapNum;
+ gFieldEffectArguments[5] = eventObj->mapGroup;
gFieldEffectArguments[6] = (u8)gSaveBlock1.location.mapNum << 8 | (u8)gSaveBlock1.location.mapGroup;
gFieldEffectArguments[7] = 0;
FieldEffectStart(FLDEFF_LONG_GRASS);
}
-void GroundEffect_WaterReflection(struct MapObject *mapObj, struct Sprite *sprite)
+void GroundEffect_WaterReflection(struct EventObject *eventObj, struct Sprite *sprite)
{
- SetUpReflection(mapObj, sprite, 0);
+ InitObjectReflectionSprite(eventObj, sprite, 0);
}
-void GroundEffect_IceReflection(struct MapObject *mapObj, struct Sprite *sprite)
+void GroundEffect_IceReflection(struct EventObject *eventObj, struct Sprite *sprite)
{
- SetUpReflection(mapObj, sprite, 1);
+ InitObjectReflectionSprite(eventObj, sprite, 1);
}
-void GroundEffect_FlowingWater(struct MapObject *mapObj, struct Sprite *sprite)
+void GroundEffect_FlowingWater(struct EventObject *eventObj, struct Sprite *sprite)
{
- oe_exec_and_other_stuff(FLDEFF_FEET_IN_FLOWING_WATER, mapObj);
+ StartFieldEffectForEventObject(FLDEFF_FEET_IN_FLOWING_WATER, eventObj);
}
-static void (*const gUnknown_08376080[])(struct MapObject *mapObj, struct Sprite *sprite, u8 a) = {
+static void (*const sGroundEffectTracksFuncs[])(struct EventObject *eventObj, struct Sprite *sprite, u8 a) = {
nullsub, DoTracksGroundEffect_Footprints, DoTracksGroundEffect_BikeTireTracks,
};
-void sub_8063FA0(struct MapObject *mapObj, struct Sprite *sprite)
+void GroundEffect_SandTracks(struct EventObject *eventObj, struct Sprite *sprite)
{
- const struct MapObjectGraphicsInfo *info = GetFieldObjectGraphicsInfo(mapObj->graphicsId);
- gUnknown_08376080[info->tracks](mapObj, sprite, 0);
+ const struct EventObjectGraphicsInfo *info = GetEventObjectGraphicsInfo(eventObj->graphicsId);
+ sGroundEffectTracksFuncs[info->tracks](eventObj, sprite, 0);
}
-void sub_8063FCC(struct MapObject *mapObj, struct Sprite *sprite)
+void GroundEffect_DeepSandTracks(struct EventObject *eventObj, struct Sprite *sprite)
{
- const struct MapObjectGraphicsInfo *info = GetFieldObjectGraphicsInfo(mapObj->graphicsId);
- gUnknown_08376080[info->tracks](mapObj, sprite, 1);
+ const struct EventObjectGraphicsInfo *info = GetEventObjectGraphicsInfo(eventObj->graphicsId);
+ sGroundEffectTracksFuncs[info->tracks](eventObj, sprite, 1);
}
-static void nullsub(struct MapObject *mapObj, struct Sprite *sprite, u8 a)
+static void nullsub(struct EventObject *eventObj, struct Sprite *sprite, u8 a)
{
}
-static void DoTracksGroundEffect_Footprints(struct MapObject *mapObj, struct Sprite *sprite, u8 a)
+static void DoTracksGroundEffect_Footprints(struct EventObject *eventObj, struct Sprite *sprite, u8 a)
{
// First half-word is a Field Effect script id. (gFieldEffectScriptPointers)
u16 sandFootprints_FieldEffectData[2] = {
- FLDEFF_SAND_FOOTPRINTS,
- FLDEFF_DEEP_SAND_FOOTPRINTS
+ FLDEFF_SAND_FOOTPRINTS,
+ FLDEFF_DEEP_SAND_FOOTPRINTS
};
- gFieldEffectArguments[0] = mapObj->coords3.x;
- gFieldEffectArguments[1] = mapObj->coords3.y;
+ gFieldEffectArguments[0] = eventObj->previousCoords.x;
+ gFieldEffectArguments[1] = eventObj->previousCoords.y;
gFieldEffectArguments[2] = 149;
gFieldEffectArguments[3] = 2;
- gFieldEffectArguments[4] = mapObj->mapobj_unk_18;
+ gFieldEffectArguments[4] = eventObj->facingDirection;
FieldEffectStart(sandFootprints_FieldEffectData[a]);
}
-static void DoTracksGroundEffect_BikeTireTracks(
- struct MapObject *mapObj, struct Sprite *sprite, u8 a)
+static void DoTracksGroundEffect_BikeTireTracks(struct EventObject *eventObj, struct Sprite *sprite, u8 a)
{
// Specifies which bike track shape to show next.
// For example, when the bike turns from up to right, it will show
@@ -8845,113 +7632,117 @@ static void DoTracksGroundEffect_BikeTireTracks(
6, 7, 3, 4,
};
- if (mapObj->coords2.x != mapObj->coords3.x || mapObj->coords2.y != mapObj->coords3.y)
+ if (eventObj->currentCoords.x != eventObj->previousCoords.x || eventObj->currentCoords.y != eventObj->previousCoords.y)
{
- gFieldEffectArguments[0] = mapObj->coords3.x;
- gFieldEffectArguments[1] = mapObj->coords3.y;
+ gFieldEffectArguments[0] = eventObj->previousCoords.x;
+ gFieldEffectArguments[1] = eventObj->previousCoords.y;
gFieldEffectArguments[2] = 149;
gFieldEffectArguments[3] = 2;
gFieldEffectArguments[4] =
- bikeTireTracks_Transitions[mapObj->mapobj_unk_20][mapObj->mapobj_unk_18 - 5];
+ bikeTireTracks_Transitions[eventObj->previousMovementDirection][eventObj->facingDirection - 5];
FieldEffectStart(FLDEFF_BIKE_TIRE_TRACKS);
}
}
-void GroundEffect_Ripple(struct MapObject *mapObj, struct Sprite *sprite)
+void GroundEffect_Ripple(struct EventObject *eventObj, struct Sprite *sprite)
{
- DoRippleFieldEffect(mapObj, sprite);
+ DoRippleFieldEffect(eventObj, sprite);
}
-void GroundEffect_StepOnPuddle(struct MapObject *mapObj, struct Sprite *sprite)
+void GroundEffect_StepOnPuddle(struct EventObject *eventObj, struct Sprite *sprite)
{
- oe_exec_and_other_stuff(FLDEFF_SPLASH, mapObj);
+ StartFieldEffectForEventObject(FLDEFF_SPLASH, eventObj);
}
-void GroundEffect_SandPile(struct MapObject *mapObj, struct Sprite *sprite)
+void GroundEffect_SandPile(struct EventObject *eventObj, struct Sprite *sprite)
{
- oe_exec_and_other_stuff(FLDEFF_SAND_PILE, mapObj);
+ StartFieldEffectForEventObject(FLDEFF_SAND_PILE, eventObj);
}
-void GroundEffect_JumpOnTallGrass(struct MapObject *mapObj, struct Sprite *sprite)
+void GroundEffect_JumpOnTallGrass(struct EventObject *eventObj, struct Sprite *sprite)
{
u8 spriteId;
- gFieldEffectArguments[0] = mapObj->coords2.x;
- gFieldEffectArguments[1] = mapObj->coords2.y;
- gFieldEffectArguments[2] = mapObj->elevation;
+ gFieldEffectArguments[0] = eventObj->currentCoords.x;
+ gFieldEffectArguments[1] = eventObj->currentCoords.y;
+ gFieldEffectArguments[2] = eventObj->previousElevation;
gFieldEffectArguments[3] = 2;
FieldEffectStart(FLDEFF_JUMP_TALL_GRASS);
- spriteId = sub_8126FF0(
- mapObj->localId, mapObj->mapNum, mapObj->mapGroup, mapObj->coords2.x, mapObj->coords2.y);
+ spriteId = FindTallGrassFieldEffectSpriteId(
+ eventObj->localId,
+ eventObj->mapNum,
+ eventObj->mapGroup,
+ eventObj->currentCoords.x,
+ eventObj->currentCoords.y);
if (spriteId == MAX_SPRITES)
- GroundEffect_SpawnOnTallGrass(mapObj, sprite);
+ GroundEffect_SpawnOnTallGrass(eventObj, sprite);
}
-void GroundEffect_JumpOnLongGrass(struct MapObject *mapObj, struct Sprite *sprite)
+void GroundEffect_JumpOnLongGrass(struct EventObject *eventObj, struct Sprite *sprite)
{
- gFieldEffectArguments[0] = mapObj->coords2.x;
- gFieldEffectArguments[1] = mapObj->coords2.y;
- gFieldEffectArguments[2] = mapObj->elevation;
+ gFieldEffectArguments[0] = eventObj->currentCoords.x;
+ gFieldEffectArguments[1] = eventObj->currentCoords.y;
+ gFieldEffectArguments[2] = eventObj->previousElevation;
gFieldEffectArguments[3] = 2;
FieldEffectStart(FLDEFF_JUMP_LONG_GRASS);
}
-void GroundEffect_JumpOnShallowWater(struct MapObject *mapObj, struct Sprite *sprite)
+void GroundEffect_JumpOnShallowWater(struct EventObject *eventObj, struct Sprite *sprite)
{
- gFieldEffectArguments[0] = mapObj->coords2.x;
- gFieldEffectArguments[1] = mapObj->coords2.y;
- gFieldEffectArguments[2] = mapObj->elevation;
+ gFieldEffectArguments[0] = eventObj->currentCoords.x;
+ gFieldEffectArguments[1] = eventObj->currentCoords.y;
+ gFieldEffectArguments[2] = eventObj->previousElevation;
gFieldEffectArguments[3] = sprite->oam.priority;
FieldEffectStart(FLDEFF_JUMP_SMALL_SPLASH);
}
-void GroundEffect_JumpOnWater(struct MapObject *mapObj, struct Sprite *sprite)
+void GroundEffect_JumpOnWater(struct EventObject *eventObj, struct Sprite *sprite)
{
- gFieldEffectArguments[0] = mapObj->coords2.x;
- gFieldEffectArguments[1] = mapObj->coords2.y;
- gFieldEffectArguments[2] = mapObj->elevation;
+ gFieldEffectArguments[0] = eventObj->currentCoords.x;
+ gFieldEffectArguments[1] = eventObj->currentCoords.y;
+ gFieldEffectArguments[2] = eventObj->previousElevation;
gFieldEffectArguments[3] = sprite->oam.priority;
FieldEffectStart(FLDEFF_JUMP_BIG_SPLASH);
}
-void GroundEffect_JumpLandingDust(struct MapObject *mapObj, struct Sprite *sprite)
+void GroundEffect_JumpLandingDust(struct EventObject *eventObj, struct Sprite *sprite)
{
- gFieldEffectArguments[0] = mapObj->coords2.x;
- gFieldEffectArguments[1] = mapObj->coords2.y;
- gFieldEffectArguments[2] = mapObj->elevation;
+ gFieldEffectArguments[0] = eventObj->currentCoords.x;
+ gFieldEffectArguments[1] = eventObj->currentCoords.y;
+ gFieldEffectArguments[2] = eventObj->previousElevation;
gFieldEffectArguments[3] = sprite->oam.priority;
FieldEffectStart(FLDEFF_DUST);
}
-void GroundEffect_ShortGrass(struct MapObject *mapObj, struct Sprite *sprite)
+void GroundEffect_ShortGrass(struct EventObject *eventObj, struct Sprite *sprite)
{
- oe_exec_and_other_stuff(FLDEFF_SHORT_GRASS, mapObj);
+ StartFieldEffectForEventObject(FLDEFF_SHORT_GRASS, eventObj);
}
-void GroundEffect_HotSprings(struct MapObject *mapObj, struct Sprite *sprite)
+void GroundEffect_HotSprings(struct EventObject *eventObj, struct Sprite *sprite)
{
- oe_exec_and_other_stuff(FLDEFF_HOT_SPRINGS_WATER, mapObj);
+ StartFieldEffectForEventObject(FLDEFF_HOT_SPRINGS_WATER, eventObj);
}
-void GroundEffect_Seaweed(struct MapObject *mapObj, struct Sprite *sprite)
+void GroundEffect_Seaweed(struct EventObject *eventObj, struct Sprite *sprite)
{
- gFieldEffectArguments[0] = mapObj->coords2.x;
- gFieldEffectArguments[1] = mapObj->coords2.y;
+ gFieldEffectArguments[0] = eventObj->currentCoords.x;
+ gFieldEffectArguments[1] = eventObj->currentCoords.y;
FieldEffectStart(FLDEFF_BUBBLES);
}
-static void (*const gUnknown_083760A0[])(struct MapObject *mapObj, struct Sprite *sprite) = {
+static void (*const sGroundEffectFuncs[])(struct EventObject *eventObj, struct Sprite *sprite) = {
GroundEffect_SpawnOnTallGrass,
- sub_8063E94,
- sub_8063EE0,
- sub_8063F2C,
+ GroundEffect_MoveOnTallGrass,
+ GroundEffect_SpawnOnLongGrass,
+ GroundEffect_MoveOnLongGrass,
GroundEffect_WaterReflection,
GroundEffect_IceReflection,
GroundEffect_FlowingWater,
- sub_8063FA0,
- sub_8063FCC,
+ GroundEffect_SandTracks,
+ GroundEffect_DeepSandTracks,
GroundEffect_Ripple,
GroundEffect_StepOnPuddle,
GroundEffect_SandPile,
@@ -8965,91 +7756,177 @@ static void (*const gUnknown_083760A0[])(struct MapObject *mapObj, struct Sprite
GroundEffect_Seaweed
};
-void sub_8064218(struct MapObject *mapObj, struct Sprite *sprite, u32 flags)
+static void StartTriggeredGroundEffects(struct EventObject *eventObj, struct Sprite *sprite, u32 flags)
{
u8 i;
- for (i = 0; i < ARRAY_COUNT(gUnknown_083760A0); i++, flags >>= 1)
+ for (i = 0; i < ARRAY_COUNT(sGroundEffectFuncs); i++, flags >>= 1)
if (flags & 1)
- gUnknown_083760A0[i](mapObj, sprite);
+ sGroundEffectFuncs[i](eventObj, sprite);
}
-void filters_out_some_ground_effects(struct MapObject *mapObj, u32 *flags)
+void FilterOutDisabledCoveringGroundEffects(struct EventObject *eventObj, u32 *flags)
{
- if (mapObj->mapobj_bit_4)
+ if (eventObj->disableCoveringGroundEffects)
{
- mapObj->mapobj_bit_18 = 0;
- mapObj->mapobj_bit_20 = 0;
- mapObj->mapobj_bit_19 = 0;
- mapObj->mapobj_bit_21 = 0;
- *flags &= 0xFFF9F7BD;
+ eventObj->inShortGrass = 0;
+ eventObj->inSandPile = 0;
+ eventObj->inShallowFlowingWater = 0;
+ eventObj->inHotSprings = 0;
+ *flags &= ~(GROUND_EFFECT_FLAG_HOT_SPRINGS
+ | GROUND_EFFECT_FLAG_SHORT_GRASS
+ | GROUND_EFFECT_FLAG_SAND_PILE
+ | GROUND_EFFECT_FLAG_SHALLOW_FLOWING_WATER
+ | GROUND_EFFECT_FLAG_TALL_GRASS_ON_MOVE);
}
}
-void FilterOutStepOnPuddleGroundEffectIfJumping(struct MapObject *mapObj, u32 *flags)
+void FilterOutStepOnPuddleGroundEffectIfJumping(struct EventObject *eventObj, u32 *flags)
{
- if (mapObj->mapobj_bit_5)
- *flags &= 0xFFFFFBFF;
+ if (eventObj->landingJump)
+ *flags &= ~GROUND_EFFECT_FLAG_PUDDLE;
}
-void DoGroundEffects_OnSpawn(struct MapObject *mapObj, struct Sprite *sprite)
+static void DoGroundEffects_OnSpawn(struct EventObject *eventObj, struct Sprite *sprite)
{
u32 flags;
- if (mapObj->mapobj_bit_2)
+ if (eventObj->triggerGroundEffectsOnMove)
{
flags = 0;
- FieldObjectUpdateZCoordAndPriority(mapObj, sprite);
- GetAllGroundEffectFlags_OnSpawn(mapObj, &flags);
- FieldObjectSetSpriteOamTableForLongGrass(mapObj, sprite);
- sub_8064218(mapObj, sprite, flags);
- mapObj->mapobj_bit_2 = 0;
- mapObj->mapobj_bit_4 = 0;
+ UpdateEventObjectZCoordAndPriority(eventObj, sprite);
+ GetAllGroundEffectFlags_OnSpawn(eventObj, &flags);
+ SetEventObjectSpriteOamTableForLongGrass(eventObj, sprite);
+ StartTriggeredGroundEffects(eventObj, sprite, flags);
+ eventObj->triggerGroundEffectsOnMove = 0;
+ eventObj->disableCoveringGroundEffects = 0;
}
}
-void DoGroundEffects_OnBeginStep(struct MapObject *mapObj, struct Sprite *sprite)
+static void DoGroundEffects_OnBeginStep(struct EventObject *eventObj, struct Sprite *sprite)
{
u32 flags;
- if (mapObj->mapobj_bit_2)
+ if (eventObj->triggerGroundEffectsOnMove)
{
flags = 0;
- FieldObjectUpdateZCoordAndPriority(mapObj, sprite);
- GetAllGroundEffectFlags_OnBeginStep(mapObj, &flags);
- FieldObjectSetSpriteOamTableForLongGrass(mapObj, sprite);
- filters_out_some_ground_effects(mapObj, &flags);
- sub_8064218(mapObj, sprite, flags);
- mapObj->mapobj_bit_2 = 0;
- mapObj->mapobj_bit_4 = 0;
+ UpdateEventObjectZCoordAndPriority(eventObj, sprite);
+ GetAllGroundEffectFlags_OnBeginStep(eventObj, &flags);
+ SetEventObjectSpriteOamTableForLongGrass(eventObj, sprite);
+ FilterOutDisabledCoveringGroundEffects(eventObj, &flags);
+ StartTriggeredGroundEffects(eventObj, sprite, flags);
+ eventObj->triggerGroundEffectsOnMove = 0;
+ eventObj->disableCoveringGroundEffects = 0;
}
}
-void DoGroundEffects_OnFinishStep(struct MapObject *mapObj, struct Sprite *sprite)
+static void DoGroundEffects_OnFinishStep(struct EventObject *eventObj, struct Sprite *sprite)
{
u32 flags;
- if (mapObj->mapobj_bit_3)
+ if (eventObj->triggerGroundEffectsOnStop)
{
flags = 0;
- FieldObjectUpdateZCoordAndPriority(mapObj, sprite);
- GetAllGroundEffectFlags_OnFinishStep(mapObj, &flags);
- FieldObjectSetSpriteOamTableForLongGrass(mapObj, sprite);
- FilterOutStepOnPuddleGroundEffectIfJumping(mapObj, &flags);
- sub_8064218(mapObj, sprite, flags);
- mapObj->mapobj_bit_3 = 0;
- mapObj->mapobj_bit_5 = 0;
+ UpdateEventObjectZCoordAndPriority(eventObj, sprite);
+ GetAllGroundEffectFlags_OnFinishStep(eventObj, &flags);
+ SetEventObjectSpriteOamTableForLongGrass(eventObj, sprite);
+ FilterOutStepOnPuddleGroundEffectIfJumping(eventObj, &flags);
+ StartTriggeredGroundEffects(eventObj, sprite, flags);
+ eventObj->triggerGroundEffectsOnStop = 0;
+ eventObj->landingJump = 0;
+ }
+}
+
+bool8 FreezeEventObject(struct EventObject *eventObject)
+{
+ if (eventObject->heldMovementActive || eventObject->frozen)
+ {
+ return TRUE;
}
+ else
+ {
+ eventObject->frozen = 1;
+ eventObject->spriteAnimPausedBackup = gSprites[eventObject->spriteId].animPaused;
+ eventObject->spriteAffineAnimPausedBackup = gSprites[eventObject->spriteId].affineAnimPaused;
+ gSprites[eventObject->spriteId].animPaused = 1;
+ gSprites[eventObject->spriteId].affineAnimPaused = 1;
+ return FALSE;
+ }
+}
+
+void FreezeEventObjects(void)
+{
+ u8 i;
+ for (i = 0; i < 16; i++)
+ if (gEventObjects[i].active && i != gPlayerAvatar.eventObjectId)
+ FreezeEventObject(&gEventObjects[i]);
+}
+
+void FreezeEventObjectsExceptOne(u8 eventObjectId)
+{
+ u8 i;
+ for (i = 0; i < 16; i++)
+ if (i != eventObjectId && gEventObjects[i].active && i != gPlayerAvatar.eventObjectId)
+ FreezeEventObject(&gEventObjects[i]);
+}
+
+void UnfreezeEventObject(struct EventObject *eventObject)
+{
+ if (eventObject->active && eventObject->frozen)
+ {
+ eventObject->frozen = 0;
+ gSprites[eventObject->spriteId].animPaused = eventObject->spriteAnimPausedBackup;
+ gSprites[eventObject->spriteId].affineAnimPaused = eventObject->spriteAffineAnimPausedBackup;
+ }
+}
+
+void UnfreezeEventObjects(void)
+{
+ u8 i;
+ for (i = 0; i < 16; i++)
+ if (gEventObjects[i].active)
+ UnfreezeEventObject(&gEventObjects[i]);
+}
+
+static void Step1(struct Sprite *sprite, u8 dir)
+{
+ sprite->pos1.x += sDirectionToVectors[dir].x;
+ sprite->pos1.y += sDirectionToVectors[dir].y;
}
-typedef void (*SpriteStepFunc)(struct Sprite *sprite, u8 dir);
+static void Step2(struct Sprite *sprite, u8 dir)
+{
+ sprite->pos1.x += 2 * (u16) sDirectionToVectors[dir].x;
+ sprite->pos1.y += 2 * (u16) sDirectionToVectors[dir].y;
+}
+
+static void Step3(struct Sprite *sprite, u8 dir)
+{
+ sprite->pos1.x += 2 * (u16) sDirectionToVectors[dir].x + (u16) sDirectionToVectors[dir].x;
+ sprite->pos1.y += 2 * (u16) sDirectionToVectors[dir].y + (u16) sDirectionToVectors[dir].y;
+}
-void Step1(struct Sprite *sprite, u8 dir);
-void Step2(struct Sprite *sprite, u8 dir);
-void Step3(struct Sprite *sprite, u8 dir);
-void Step4(struct Sprite *sprite, u8 dir);
-void Step8(struct Sprite *sprite, u8 dir);
+static void Step4(struct Sprite *sprite, u8 dir)
+{
+ sprite->pos1.x += 4 * (u16) sDirectionToVectors[dir].x;
+ sprite->pos1.y += 4 * (u16) sDirectionToVectors[dir].y;
+}
+
+static void Step8(struct Sprite *sprite, u8 dir)
+{
+ sprite->pos1.x += 8 * (u16) sDirectionToVectors[dir].x;
+ sprite->pos1.y += 8 * (u16) sDirectionToVectors[dir].y;
+}
+
+static void oamt_npc_ministep_reset(struct Sprite *sprite, u8 direction, u8 a3)
+{
+ sprite->data[3] = direction;
+ sprite->data[4] = a3;
+ sprite->data[5] = 0;
+}
-const SpriteStepFunc Unknown_83760F0[] = {
+typedef void (*SpriteStepFunc)(struct Sprite *sprite, u8 direction);
+
+static const SpriteStepFunc Unknown_83760F0[] = {
Step1,
Step1,
Step1,
@@ -9068,7 +7945,7 @@ const SpriteStepFunc Unknown_83760F0[] = {
Step1
};
-const SpriteStepFunc Unknown_8376130[] = {
+static const SpriteStepFunc Unknown_8376130[] = {
Step2,
Step2,
Step2,
@@ -9079,7 +7956,7 @@ const SpriteStepFunc Unknown_8376130[] = {
Step2
};
-const SpriteStepFunc Unknown_8376150[] = {
+static const SpriteStepFunc Unknown_8376150[] = {
Step2,
Step3,
Step3,
@@ -9088,19 +7965,19 @@ const SpriteStepFunc Unknown_8376150[] = {
Step3
};
-const SpriteStepFunc Unknown_8376168[] = {
+static const SpriteStepFunc Unknown_8376168[] = {
Step4,
Step4,
Step4,
Step4
};
-const SpriteStepFunc Unknown_8376178[] = {
+static const SpriteStepFunc Unknown_8376178[] = {
Step8,
Step8
};
-const SpriteStepFunc *const gUnknown_08376180[] = {
+static const SpriteStepFunc *const gUnknown_08376180[] = {
Unknown_83760F0,
Unknown_8376130,
Unknown_8376150,
@@ -9108,116 +7985,10 @@ const SpriteStepFunc *const gUnknown_08376180[] = {
Unknown_8376178
};
-const s16 gUnknown_08376194[] = {
+static const s16 gUnknown_08376194[] = {
16, 8, 6, 4, 2
};
-const s8 Unknown_837619E[] = {
- -4, -6, -8, -10, -11, -12, -12, -12, -11, -10, -9, -8, -6, -4, 0, 0
-};
-
-const s8 Unknown_83761AE[] = {
- 0, -2, -3, -4, -5, -6, -6, -6, -5, -5, -4, -3, -2, 0, 0, 0
-};
-
-const s8 Unknown_83761BE[] = {
- -2, -4, -6, -8, -9, -10, -10, -10, -9, -8, -6, -5, -3, -2, 0, 0
-};
-
-const s8 *const gUnknown_083761D0[] = {
- Unknown_837619E,
- Unknown_83761AE,
- Unknown_83761BE
-};
-
-bool8 FreezeMapObject(struct MapObject *mapObject)
-{
- if (mapObject->mapobj_bit_6 || mapObject->mapobj_bit_8)
- {
- return TRUE;
- }
- else
- {
- mapObject->mapobj_bit_8 = 1;
- mapObject->mapobj_bit_23 = gSprites[mapObject->spriteId].animPaused;
- mapObject->mapobj_bit_24 = gSprites[mapObject->spriteId].affineAnimPaused;
- gSprites[mapObject->spriteId].animPaused = 1;
- gSprites[mapObject->spriteId].affineAnimPaused = 1;
- return FALSE;
- }
-}
-
-void FreezeMapObjects(void)
-{
- u8 i;
- for (i = 0; i < 16; i++)
- if (gMapObjects[i].active && i != gPlayerAvatar.mapObjectId)
- FreezeMapObject(&gMapObjects[i]);
-}
-
-void FreezeMapObjectsExceptOne(u8 a1)
-{
- u8 i;
- for (i = 0; i < 16; i++)
- if (i != a1 && gMapObjects[i].active && i != gPlayerAvatar.mapObjectId)
- FreezeMapObject(&gMapObjects[i]);
-}
-
-void UnfreezeMapObject(struct MapObject *mapObject)
-{
- if (mapObject->active && mapObject->mapobj_bit_8)
- {
- mapObject->mapobj_bit_8 = 0;
- gSprites[mapObject->spriteId].animPaused = mapObject->mapobj_bit_23;
- gSprites[mapObject->spriteId].affineAnimPaused = mapObject->mapobj_bit_24;
- }
-}
-
-void UnfreezeMapObjects(void)
-{
- u8 i;
- for (i = 0; i < 16; i++)
- if (gMapObjects[i].active)
- UnfreezeMapObject(&gMapObjects[i]);
-}
-
-void Step1(struct Sprite *sprite, u8 dir)
-{
- sprite->pos1.x += gDirectionToVector[dir].x;
- sprite->pos1.y += gDirectionToVector[dir].y;
-}
-
-void Step2(struct Sprite *sprite, u8 dir)
-{
- sprite->pos1.x += 2 * (u16) gDirectionToVector[dir].x;
- sprite->pos1.y += 2 * (u16) gDirectionToVector[dir].y;
-}
-
-void Step3(struct Sprite *sprite, u8 dir)
-{
- sprite->pos1.x += 2 * (u16) gDirectionToVector[dir].x + (u16) gDirectionToVector[dir].x;
- sprite->pos1.y += 2 * (u16) gDirectionToVector[dir].y + (u16) gDirectionToVector[dir].y;
-}
-
-void Step4(struct Sprite *sprite, u8 dir)
-{
- sprite->pos1.x += 4 * (u16) gDirectionToVector[dir].x;
- sprite->pos1.y += 4 * (u16) gDirectionToVector[dir].y;
-}
-
-void Step8(struct Sprite *sprite, u8 dir)
-{
- sprite->pos1.x += 8 * (u16) gDirectionToVector[dir].x;
- sprite->pos1.y += 8 * (u16) gDirectionToVector[dir].y;
-}
-
-void oamt_npc_ministep_reset(struct Sprite *sprite, u8 a2, u8 a3)
-{
- sprite->data[3] = a2;
- sprite->data[4] = a3;
- sprite->data[5] = 0;
-}
-
bool8 obj_npc_ministep(struct Sprite *sprite)
{
if (sprite->data[5] >= gUnknown_08376194[sprite->data[4]])
@@ -9233,9 +8004,9 @@ bool8 obj_npc_ministep(struct Sprite *sprite)
return TRUE;
}
-void sub_806467C(struct Sprite *sprite, u8 a2)
+void sub_806467C(struct Sprite *sprite, u8 direction)
{
- sprite->data[3] = a2;
+ sprite->data[3] = direction;
sprite->data[4] = 0;
sprite->data[5] = 0;
}
@@ -9256,6 +8027,24 @@ bool8 sub_806468C(struct Sprite *sprite)
return FALSE;
}
+static const s8 Unknown_837619E[] = {
+ -4, -6, -8, -10, -11, -12, -12, -12, -11, -10, -9, -8, -6, -4, 0, 0
+};
+
+static const s8 Unknown_83761AE[] = {
+ 0, -2, -3, -4, -5, -6, -6, -6, -5, -5, -4, -3, -2, 0, 0, 0
+};
+
+static const s8 Unknown_83761BE[] = {
+ -2, -4, -6, -8, -9, -10, -10, -10, -9, -8, -6, -5, -3, -2, 0, 0
+};
+
+static const s8 *const gUnknown_083761D0[] = {
+ Unknown_837619E,
+ Unknown_83761AE,
+ Unknown_83761BE
+};
+
s16 sub_80646C8(s16 a1, u8 a2)
{
return gUnknown_083761D0[a2][a1];
@@ -9319,12 +8108,12 @@ u8 sub_806478C(struct Sprite *sprite)
return v2;
}
-void sub_8064820(struct Sprite *sprite, s16 a2)
+static void SetMovementDelay(struct Sprite *sprite, s16 delay)
{
- sprite->data[3] = a2;
+ sprite->data[3] = delay;
}
-bool8 sub_8064824(struct Sprite *sprite)
+static bool8 WaitForMovementDelay(struct Sprite *sprite)
{
sprite->data[3]--;
@@ -9334,14 +8123,14 @@ bool8 sub_8064824(struct Sprite *sprite)
return FALSE;
}
-void obj_anim_image_set_and_seek(struct Sprite *sprite, u8 a2, u8 a3)
+void SetAndStartSpriteAnim(struct Sprite *sprite, u8 animNum, u8 animCmdIndex)
{
- sprite->animNum = a2;
- sprite->animPaused = 0 ;
- SeekSpriteAnim(sprite, a3);
+ sprite->animNum = animNum;
+ sprite->animPaused = 0;
+ SeekSpriteAnim(sprite, animCmdIndex);
}
-bool8 sub_8064864(struct Sprite *sprite)
+bool8 SpriteAnimEnded(struct Sprite *sprite)
{
if (sprite->animEnded)
return TRUE;
@@ -9349,7 +8138,7 @@ bool8 sub_8064864(struct Sprite *sprite)
return FALSE;
}
-void sub_806487C(struct Sprite *sprite, bool8 invisible)
+void UpdateEventObjectSpriteVisibility(struct Sprite *sprite, bool8 invisible)
{
u16 x, y;
s16 x2, y2;
@@ -9376,45 +8165,45 @@ void sub_806487C(struct Sprite *sprite, bool8 invisible)
sprite->invisible = 1;
}
-void sub_8064970(struct Sprite *sprite)
+static void UpdateEventObjectSpriteSubpriorityAndVisibility(struct Sprite *sprite)
{
SetObjectSubpriorityByZCoord(sprite->data[1], sprite, 1);
- sub_806487C(sprite, 0);
+ UpdateEventObjectSpriteVisibility(sprite, 0);
}
-void sub_8064990(u8 a1, u8 dir)
+void TurnEventObject(u8 eventObjectId, u8 direction)
{
u8 i;
for (i = 0; i < MAX_SPRITES; i++)
{
struct Sprite *sprite = &gSprites[i];
- if (sprite->inUse && sprite->callback == sub_8064970 && (u8)sprite->data[0] == a1)
+ if (sprite->inUse && sprite->callback == UpdateEventObjectSpriteSubpriorityAndVisibility && (u8)sprite->data[0] == eventObjectId)
{
- u8 animNum = FieldObjectDirectionToImageAnimId(dir);
+ u8 animNum = GetFaceDirectionAnimNum(direction);
StartSpriteAnim(sprite, animNum);
break;
}
}
}
-u32 oe_exec_and_other_stuff(u8 fieldEffectId, struct MapObject *mapObject)
+u32 StartFieldEffectForEventObject(u8 fieldEffectId, struct EventObject *eventObject)
{
- FieldObjectGetLocalIdAndMap(mapObject, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]);
+ EventObjectGetLocalIdAndMap(eventObject, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]);
return FieldEffectStart(fieldEffectId);
}
-void DoShadowFieldEffect(struct MapObject *mapObject)
+void DoShadowFieldEffect(struct EventObject *eventObject)
{
- if (!mapObject->mapobj_bit_22)
+ if (!eventObject->hasShadow)
{
- mapObject->mapobj_bit_22 = 1;
- oe_exec_and_other_stuff(FLDEFF_SHADOW, mapObject);
+ eventObject->hasShadow = 1;
+ StartFieldEffectForEventObject(FLDEFF_SHADOW, eventObject);
}
}
-void DoRippleFieldEffect(struct MapObject *mapObject, struct Sprite *sprite)
+void DoRippleFieldEffect(struct EventObject *eventObject, struct Sprite *sprite)
{
- const struct MapObjectGraphicsInfo *gfxInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId);
+ const struct EventObjectGraphicsInfo *gfxInfo = GetEventObjectGraphicsInfo(eventObject->graphicsId);
gFieldEffectArguments[0] = sprite->pos1.x;
gFieldEffectArguments[1] = sprite->pos1.y + (gfxInfo->height >> 1) - 2;
gFieldEffectArguments[2] = 151;
diff --git a/src/evolution_graphics.c b/src/evolution_graphics.c
index b9ef5b402..f585b2bee 100644
--- a/src/evolution_graphics.c
+++ b/src/evolution_graphics.c
@@ -271,7 +271,7 @@ static void EvoTask_BeginPreSet1_FadeAndPlaySE(u8 taskID)
{
SetEvoSparklesMatrices();
gTasks[taskID].tFrameCounter = 0;
- BeginNormalPaletteFade(3 << gTasks[taskID].data[1], 0xA, 0, 0x10, 0x7FFF);
+ BeginNormalPaletteFade(3 << gTasks[taskID].data[1], 10, 0, 16, RGB(31, 31, 31));
gTasks[taskID].func = EvoTask_CreatePreEvoSparkleSet1;
PlaySE(SE_W025);
}
@@ -389,7 +389,7 @@ static void EvoTask_BeginPostSparklesSet2_AndFlash(u8 taskID)
SetEvoSparklesMatrices();
gTasks[taskID].tFrameCounter = 0;
CpuSet(&gPlttBufferFaded[0x20], &gPlttBufferUnfaded[0x20], 0x30);
- BeginNormalPaletteFade(0xFFF9001C, 0, 0, 0x10, 0x7FFF);
+ BeginNormalPaletteFade(0xFFF9001C, 0, 0, 16, RGB(31, 31, 31));
gTasks[taskID].func = EvoTask_CreatePostEvoSparklesSet2_AndFlash;
PlaySE(SE_W080);
}
@@ -410,7 +410,7 @@ static void EvoTask_CreatePostEvoSparklesSet2_AndFlash(u8 taskID)
CreatePostEvoSparkleSet2(i);
break;
case 32:
- BeginNormalPaletteFade(0xFFFF001C, 0x10, 0x10, 0, 0x7FFF);
+ BeginNormalPaletteFade(0xFFFF001C, 16, 16, 0, RGB(31, 31, 31));
break;
}
gTasks[taskID].tFrameCounter++;
@@ -437,7 +437,7 @@ static void EvoTask_BeginPostSparklesSet2_AndFlash_Trade(u8 taskID)
SetEvoSparklesMatrices();
gTasks[taskID].tFrameCounter = 0;
CpuSet(&gPlttBufferFaded[0x20], &gPlttBufferUnfaded[0x20], 0x30);
- BeginNormalPaletteFade(0xFFF90001, 0, 0, 0x10, 0x7FFF);
+ BeginNormalPaletteFade(0xFFF90001, 0, 0, 16, RGB(31, 31, 31));
gTasks[taskID].func = EvoTask_CreatePostEvoSparklesSet2_AndFlash_Trade;
PlaySE(SE_W080);
}
@@ -458,7 +458,7 @@ static void EvoTask_CreatePostEvoSparklesSet2_AndFlash_Trade(u8 taskID)
CreatePostEvoSparkleSet2(i);
break;
case 32:
- BeginNormalPaletteFade(0xFFFF0001, 0x10, 0x10, 0, 0x7FFF);
+ BeginNormalPaletteFade(0xFFFF0001, 16, 16, 0, RGB(31, 31, 31));
break;
}
gTasks[taskID].tFrameCounter++;
diff --git a/src/evolution_scene.c b/src/evolution_scene.c
index 4d9c8be02..a855efb1b 100644
--- a/src/evolution_scene.c
+++ b/src/evolution_scene.c
@@ -135,7 +135,7 @@ static void Task_BeginEvolutionScene(u8 taskID)
switch (gTasks[taskID].tState)
{
case 0:
- BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gTasks[taskID].tState++;
break;
case 1:
@@ -204,7 +204,7 @@ void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo,
gBattleTerrain = BATTLE_TERRAIN_PLAIN;
sub_800D6D4();
- sub_800DAB8();
+ LoadBattleTextboxAndBackground();
ResetSpriteData();
ScanlineEffect_Stop();
ResetTasks();
@@ -312,7 +312,7 @@ static void CB2_EvolutionSceneLoadGraphics(void)
gBattleTerrain = BATTLE_TERRAIN_PLAIN;
sub_800D6D4();
- sub_800DAB8();
+ LoadBattleTextboxAndBackground();
ResetSpriteData();
FreeAllSpritePalettes();
gReservedSpritePaletteCount = 4;
@@ -336,7 +336,7 @@ static void CB2_EvolutionSceneLoadGraphics(void)
SetHBlankCallback(EvoDummyFunc);
SetVBlankCallback(VBlankCB_EvolutionScene);
SetMainCallback2(CB2_EvolutionSceneUpdate);
- BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
}
static void CB2_TradeEvolutionSceneLoadGraphics(void)
@@ -411,7 +411,7 @@ static void CB2_TradeEvolutionSceneLoadGraphics(void)
}
break;
case 6:
- BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
SetMainCallback2(CB2_TradeEvolutionSceneUpdate);
REG_DISPCNT = DISPCNT_OBJ_ON | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_OBJ_1D_MAP;
break;
@@ -537,7 +537,7 @@ static void Task_EvolutionScene(u8 taskID)
switch (gTasks[taskID].tState)
{
case 0:
- BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
gSprites[sEvoInfo.preEvoSpriteID].invisible = 0;
gTasks[taskID].tState++;
break;
@@ -559,16 +559,16 @@ static void Task_EvolutionScene(u8 taskID)
case 3: // wait for cry, play tu du SE
if (IsCryFinished())
{
- PlaySE(BGM_ME_SHINKA);
+ PlaySE(MUS_ME_SHINKA);
gTasks[taskID].tState++;
}
break;
case 4: // play evolution music and fade screen black
if (!IsSEPlaying())
{
- PlayNewMapMusic(BGM_SHINKA);
+ PlayNewMapMusic(MUS_SHINKA);
gTasks[taskID].tState++;
- BeginNormalPaletteFade(0x1C, 4, 0, 0x10, 0);
+ BeginNormalPaletteFade(0x1C, 4, 0, 16, RGB(0, 0, 0));
}
break;
case 5: // after screen fade, preapre evo sparkles
@@ -625,7 +625,7 @@ static void Task_EvolutionScene(u8 taskID)
m4aMPlayAllStop();
PlayCry1(gTasks[taskID].tPostEvoSpecies, 0);
memcpy(&gPlttBufferUnfaded[0x20], ewram9000_hack, 0x60);
- BeginNormalPaletteFade(0x1C, 0, 0x10, 0, 0);
+ BeginNormalPaletteFade(0x1C, 0, 16, 0, RGB(0, 0, 0));
gTasks[taskID].tState++;
}
break;
@@ -634,7 +634,7 @@ static void Task_EvolutionScene(u8 taskID)
{
StringExpandPlaceholders(gStringVar4, BattleText_FinishEvo);
Text_InitWindow8002EB0(&gUnknown_03004210, gStringVar4, 144, 2, 15);
- PlayBGM(BGM_FANFA5);
+ PlayBGM(MUS_FANFA5);
gTasks[taskID].tState++;
SetMonData(mon, MON_DATA_SPECIES, (void*)(&gTasks[taskID].tPostEvoSpecies));
CalculateMonStats(mon);
@@ -667,7 +667,7 @@ static void Task_EvolutionScene(u8 taskID)
}
else // no move to learn
{
- BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gTasks[taskID].tState++;
}
}
@@ -687,7 +687,7 @@ static void Task_EvolutionScene(u8 taskID)
if (!gTasks[sEvoGraphicsTaskID].isActive)
{
m4aMPlayAllStop();
- BeginNormalPaletteFade(0x6001C, 0, 0x10, 0, 0x7FFF);
+ BeginNormalPaletteFade(0x6001C, 0, 16, 0, RGB(31, 31, 31));
gTasks[taskID].tState++;
}
break;
@@ -711,7 +711,7 @@ static void Task_EvolutionScene(u8 taskID)
if (gUnknown_03004210.state == 0 && !IsSEPlaying())
{
sub_8024CEC();
- PlayFanfare(BGM_FANFA1);
+ PlayFanfare(MUS_FANFA1);
StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[3]);
Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
gTasks[taskID].tLearnsFirstMove = 0x40; // re-used as a counter
@@ -789,7 +789,7 @@ static void Task_EvolutionScene(u8 taskID)
{
gTasks[taskID].tLearnMoveState = gTasks[taskID].tData9;
if (gTasks[taskID].tLearnMoveState == 5)
- BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
}
}
if (gMain.newKeys & B_BUTTON)
@@ -900,17 +900,17 @@ static void Task_TradeEvolutionScene(u8 taskID)
case 2:
if (IsCryFinished())
{
- m4aSongNumStop(BGM_SHINKA);
- PlaySE(BGM_ME_SHINKA);
+ m4aSongNumStop(MUS_SHINKA);
+ PlaySE(MUS_ME_SHINKA);
gTasks[taskID].tState++;
}
break;
case 3:
if (!IsSEPlaying())
{
- PlayBGM(BGM_SHINKA);
+ PlayBGM(MUS_SHINKA);
gTasks[taskID].tState++;
- BeginNormalPaletteFade(0x1C, 4, 0, 0x10, 0);
+ BeginNormalPaletteFade(0x1C, 4, 0, 16, RGB(0, 0, 0));
}
break;
case 4:
@@ -967,7 +967,7 @@ static void Task_TradeEvolutionScene(u8 taskID)
{
PlayCry1(gTasks[taskID].tPostEvoSpecies, 0);
memcpy(&gPlttBufferUnfaded[0x20], ewram9000_hack, 0x60);
- BeginNormalPaletteFade(1, 0, 0x10, 0, 0);
+ BeginNormalPaletteFade(0x1, 0, 16, 0, RGB(0, 0, 0));
gTasks[taskID].tState++;
}
break;
@@ -976,7 +976,7 @@ static void Task_TradeEvolutionScene(u8 taskID)
{
StringExpandPlaceholders(gStringVar4, BattleText_FinishEvo);
Text_InitWindow8002EB0(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15);
- PlayFanfare(BGM_FANFA5);
+ PlayFanfare(MUS_FANFA5);
gTasks[taskID].tState++;
SetMonData(mon, MON_DATA_SPECIES, (void*)(&gTasks[taskID].tPostEvoSpecies));
CalculateMonStats(mon);
@@ -1008,7 +1008,7 @@ static void Task_TradeEvolutionScene(u8 taskID)
}
else
{
- PlayBGM(BGM_SHINKA);
+ PlayBGM(MUS_SHINKA);
Text_InitWindow8002EB0(&gUnknown_03004828->window, gOtherText_LinkStandby2, gUnknown_03004828->textWindowBaseTileNum, 2, 15);
gTasks[taskID].tState++;
}
@@ -1025,7 +1025,7 @@ static void Task_TradeEvolutionScene(u8 taskID)
if (gUnknown_03004828->window.state == 0 && !IsSEPlaying())
{
sub_8024CEC();
- PlayFanfare(BGM_FANFA1);
+ PlayFanfare(MUS_FANFA1);
StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[3]);
Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15);
gTasks[taskID].tLearnsFirstMove = 0x40; // re-used as a counter
@@ -1108,7 +1108,7 @@ static void Task_TradeEvolutionScene(u8 taskID)
{
gTasks[taskID].tLearnMoveState = gTasks[taskID].tData9;
if (gTasks[taskID].tLearnMoveState == 5)
- BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
}
}
if (gMain.newKeys & B_BUTTON)
@@ -1503,7 +1503,7 @@ void unref_sub_8113B50(u8 *a, u8 *b)
#undef sp4
}
*/
-__attribute__((naked))
+NAKED
void unref_sub_8113B50()
{
asm(".syntax unified\n\
@@ -2428,7 +2428,7 @@ void sub_811430C(u32 a, u32 b)
sEvoInfo.unk90C4[b][a] = r7 * 16;
}
-__attribute__((naked))
+NAKED
void unref_sub_81143CC()
{
asm(".syntax unified\n\
@@ -3680,7 +3680,7 @@ void sub_8114DF0(u32 a, u8 b)
}
}
-__attribute__((naked))
+NAKED
void sub_8114E48()
{
asm(".syntax unified\n\
diff --git a/src/field_camera.c b/src/field_camera.c
index 8384ad8d1..29cdf0496 100644
--- a/src/field_camera.c
+++ b/src/field_camera.c
@@ -9,62 +9,62 @@
EWRAM_DATA bool8 gUnusedBikeCameraAheadPanback = FALSE;
-struct UnknownStruct
+struct FieldCameraOffset
{
- u8 unk0;
- u8 unk1;
- u8 unk2;
- u8 unk3;
- bool8 unk4;
+ u8 xPixelOffset;
+ u8 yPixelOffset;
+ u8 xTileOffset;
+ u8 yTileOffset;
+ bool8 copyBGToVRAM;
};
-static struct UnknownStruct gUnknown_03000590;
-static u16 gUnknown_03000598;
-static s16 gUnknown_0300059A;
+static struct FieldCameraOffset sFieldCameraOffset;
+static u16 sHorizontalCameraPan;
+static s16 sVerticalCameraPan;
static u8 gUnknown_0300059C;
-static void (*gUnknown_030005A0)(void);
+static void (*sFieldCameraPanningCallback)(void);
-struct CameraSomething gUnknown_03004880;
-u16 gUnknown_03004898;
-u16 gUnknown_0300489C;
+extern struct FieldCamera gFieldCamera;
+extern u16 gTotalCameraPixelOffsetY;
+extern u16 gTotalCameraPixelOffsetX;
-static void RedrawMapSliceNorth(struct UnknownStruct *a, struct MapData *mapData);
-static void RedrawMapSliceSouth(struct UnknownStruct *a, struct MapData *mapData);
-static void RedrawMapSliceEast(struct UnknownStruct *a, struct MapData *mapData);
-static void RedrawMapSliceWest(struct UnknownStruct *a, struct MapData *mapData);
-static s32 MapPosToBgTilemapOffset(struct UnknownStruct *a, s32 x, s32 y);
+static void RedrawMapSliceNorth(struct FieldCameraOffset*, struct MapLayout*);
+static void RedrawMapSliceSouth(struct FieldCameraOffset*, struct MapLayout*);
+static void RedrawMapSliceEast(struct FieldCameraOffset*, struct MapLayout*);
+static void RedrawMapSliceWest(struct FieldCameraOffset*, struct MapLayout*);
+static s32 MapPosToBgTilemapOffset(struct FieldCameraOffset*, s32, s32);
-static void DrawWholeMapViewInternal(int x, int y, struct MapData *mapData);
-static void DrawMetatileAt(struct MapData *mapData, u16, int, int);
-static void DrawMetatile(s32 a, u16 *b, u16 c);
+static void DrawWholeMapViewInternal(int x, int y, struct MapLayout*);
+static void DrawMetatileAt(struct MapLayout*, u16, int, int);
+static void DrawMetatile(s32, u16*, u16);
static void CameraPanningCB_PanAhead(void);
-static void move_tilemap_camera_to_upper_left_corner_(struct UnknownStruct *a)
+static void move_tilemap_camera_to_upper_left_corner_(struct FieldCameraOffset *cameraOffset)
{
- a->unk2 = 0;
- a->unk3 = 0;
- a->unk0 = 0;
- a->unk1 = 0;
- a->unk4 = TRUE;
+ cameraOffset->xTileOffset = 0;
+ cameraOffset->yTileOffset = 0;
+ cameraOffset->xPixelOffset = 0;
+ cameraOffset->yPixelOffset = 0;
+ cameraOffset->copyBGToVRAM = TRUE;
}
-static void tilemap_move_something(struct UnknownStruct *a, u32 b, u32 c)
+static void tilemap_move_something(struct FieldCameraOffset *cameraOffset, u32 b, u32 c)
{
- a->unk2 += b;
- a->unk2 %= 32;
- a->unk3 += c;
- a->unk3 %= 32;
+ cameraOffset->xTileOffset += b;
+ cameraOffset->xTileOffset %= 32;
+ cameraOffset->yTileOffset += c;
+ cameraOffset->yTileOffset %= 32;
}
-static void coords8_add(struct UnknownStruct *a, u32 b, u32 c)
+static void coords8_add(struct FieldCameraOffset *cameraOffset, u32 b, u32 c)
{
- a->unk0 += b;
- a->unk1 += c;
+ cameraOffset->xPixelOffset += b;
+ cameraOffset->yPixelOffset += c;
}
void move_tilemap_camera_to_upper_left_corner(void)
{
- move_tilemap_camera_to_upper_left_corner_(&gUnknown_03000590);
+ move_tilemap_camera_to_upper_left_corner_(&sFieldCameraOffset);
CpuFill16(0, gBGTilemapBuffers[2], 0x800);
CpuFill16(0, gBGTilemapBuffers[1], 0x800);
CpuFill16(0x3014, gBGTilemapBuffers[3], 0x800);
@@ -72,35 +72,35 @@ void move_tilemap_camera_to_upper_left_corner(void)
void sub_8057A58(void)
{
- *gBGHOffsetRegs[1] = gUnknown_03000590.unk0 + gUnknown_03000598;
- *gBGVOffsetRegs[1] = gUnknown_03000590.unk1 + gUnknown_0300059A + 8;
- *gBGHOffsetRegs[2] = gUnknown_03000590.unk0 + gUnknown_03000598;
- *gBGVOffsetRegs[2] = gUnknown_03000590.unk1 + gUnknown_0300059A + 8;
- *gBGHOffsetRegs[3] = gUnknown_03000590.unk0 + gUnknown_03000598;
- *gBGVOffsetRegs[3] = gUnknown_03000590.unk1 + gUnknown_0300059A + 8;
-
- if (gUnknown_03000590.unk4)
+ *gBGHOffsetRegs[1] = sFieldCameraOffset.xPixelOffset + sHorizontalCameraPan;
+ *gBGVOffsetRegs[1] = sFieldCameraOffset.yPixelOffset + sVerticalCameraPan + 8;
+ *gBGHOffsetRegs[2] = sFieldCameraOffset.xPixelOffset + sHorizontalCameraPan;
+ *gBGVOffsetRegs[2] = sFieldCameraOffset.yPixelOffset + sVerticalCameraPan + 8;
+ *gBGHOffsetRegs[3] = sFieldCameraOffset.xPixelOffset + sHorizontalCameraPan;
+ *gBGVOffsetRegs[3] = sFieldCameraOffset.yPixelOffset + sVerticalCameraPan + 8;
+
+ if (sFieldCameraOffset.copyBGToVRAM)
{
DmaCopy16(3, gBGTilemapBuffers[1], (void *)(VRAM + 0xE800), 0x800);
DmaCopy16(3, gBGTilemapBuffers[2], (void *)(VRAM + 0xE000), 0x800);
DmaCopy16(3, gBGTilemapBuffers[3], (void *)(VRAM + 0xF000), 0x800);
- gUnknown_03000590.unk4 = FALSE;
+ sFieldCameraOffset.copyBGToVRAM = FALSE;
}
}
void sub_8057B14(u16 *a, u16 *b)
{
- *a = gUnknown_03000590.unk0 + gUnknown_03000598;
- *b = gUnknown_03000590.unk1 + gUnknown_0300059A + 8;
+ *a = sFieldCameraOffset.xPixelOffset + sHorizontalCameraPan;
+ *b = sFieldCameraOffset.yPixelOffset + sVerticalCameraPan + 8;
}
void DrawWholeMapView(void)
{
- DrawWholeMapViewInternal(gSaveBlock1.pos.x, gSaveBlock1.pos.y, gMapHeader.mapData);
- gUnknown_03000590.unk4 = TRUE;
+ DrawWholeMapViewInternal(gSaveBlock1.pos.x, gSaveBlock1.pos.y, gMapHeader.mapLayout);
+ sFieldCameraOffset.copyBGToVRAM = TRUE;
}
-static void DrawWholeMapViewInternal(int x, int y, struct MapData *mapData)
+static void DrawWholeMapViewInternal(int x, int y, struct MapLayout *mapLayout)
{
u8 i;
u8 j;
@@ -109,240 +109,254 @@ static void DrawWholeMapViewInternal(int x, int y, struct MapData *mapData)
for (i = 0; i < 32; i += 2)
{
- temp = gUnknown_03000590.unk3 + i;
+ temp = sFieldCameraOffset.yTileOffset + i;
if (temp >= 32)
temp -= 32;
r6 = temp * 32;
for (j = 0; j < 32; j += 2)
{
- temp = gUnknown_03000590.unk2 + j;
+ temp = sFieldCameraOffset.xTileOffset + j;
if (temp >= 32)
temp -= 32;
- DrawMetatileAt(mapData, r6 + temp, x + j / 2, y + i / 2);
+ DrawMetatileAt(mapLayout, r6 + temp, x + j / 2, y + i / 2);
}
}
}
-static void RedrawMapSlicesForCameraUpdate(struct UnknownStruct *a, int x, int y)
+static void RedrawMapSlicesForCameraUpdate(struct FieldCameraOffset *cameraOffset, int x, int y)
{
- struct MapData *mapData = gMapHeader.mapData;
+ struct MapLayout *mapLayout = gMapHeader.mapLayout;
if (x > 0)
- RedrawMapSliceWest(a, mapData);
+ RedrawMapSliceWest(cameraOffset, mapLayout);
if (x < 0)
- RedrawMapSliceEast(a, mapData);
+ RedrawMapSliceEast(cameraOffset, mapLayout);
if (y > 0)
- RedrawMapSliceNorth(a, mapData);
+ RedrawMapSliceNorth(cameraOffset, mapLayout);
if (y < 0)
- RedrawMapSliceSouth(a, mapData);
- a->unk4 = TRUE;
+ RedrawMapSliceSouth(cameraOffset, mapLayout);
+ cameraOffset->copyBGToVRAM = TRUE;
}
-static void RedrawMapSliceNorth(struct UnknownStruct *a, struct MapData *mapData)
+static void RedrawMapSliceNorth(struct FieldCameraOffset *cameraOffset, struct MapLayout *mapLayout)
{
u8 i;
u8 temp;
u32 r7;
- temp = a->unk3 + 28;
+ temp = cameraOffset->yTileOffset + 28;
if (temp >= 32)
temp -= 32;
r7 = temp * 32;
for (i = 0; i < 32; i += 2)
{
- temp = a->unk2 + i;
+ temp = cameraOffset->xTileOffset + i;
if (temp >= 32)
temp -= 32;
- DrawMetatileAt(mapData, r7 + temp, gSaveBlock1.pos.x + i / 2, gSaveBlock1.pos.y + 14);
+ DrawMetatileAt(mapLayout, r7 + temp, gSaveBlock1.pos.x + i / 2, gSaveBlock1.pos.y + 14);
}
}
-static void RedrawMapSliceSouth(struct UnknownStruct *a, struct MapData *mapData)
+static void RedrawMapSliceSouth(struct FieldCameraOffset *cameraOffset, struct MapLayout *mapLayout)
{
u8 i;
u8 temp;
- u32 r7 = a->unk3 * 32;
+ u32 r7 = cameraOffset->yTileOffset * 32;
for (i = 0; i < 32; i += 2)
{
- temp = a->unk2 + i;
+ temp = cameraOffset->xTileOffset + i;
if (temp >= 32)
temp -= 32;
- DrawMetatileAt(mapData, r7 + temp, gSaveBlock1.pos.x + i / 2, gSaveBlock1.pos.y);
+ DrawMetatileAt(mapLayout, r7 + temp, gSaveBlock1.pos.x + i / 2, gSaveBlock1.pos.y);
}
}
-static void RedrawMapSliceEast(struct UnknownStruct *a, struct MapData *mapData)
+static void RedrawMapSliceEast(struct FieldCameraOffset *cameraOffset, struct MapLayout *mapLayout)
{
u8 i;
u8 temp;
- u32 r6 = a->unk2;
+ u32 r6 = cameraOffset->xTileOffset;
for (i = 0; i < 32; i += 2)
{
- temp = a->unk3 + i;
+ temp = cameraOffset->yTileOffset + i;
if (temp >= 32)
temp -= 32;
- DrawMetatileAt(mapData, temp * 32 + r6, gSaveBlock1.pos.x, gSaveBlock1.pos.y + i / 2);
+ DrawMetatileAt(mapLayout, temp * 32 + r6, gSaveBlock1.pos.x, gSaveBlock1.pos.y + i / 2);
}
}
-static void RedrawMapSliceWest(struct UnknownStruct *a, struct MapData *mapData)
+static void RedrawMapSliceWest(struct FieldCameraOffset *cameraOffset, struct MapLayout *mapLayout)
{
u8 i;
u8 temp;
- u8 r5 = a->unk2 + 28;
+ u8 r5 = cameraOffset->xTileOffset + 28;
if (r5 >= 32)
r5 -= 32;
for (i = 0; i < 32; i += 2)
{
- temp = a->unk3 + i;
+ temp = cameraOffset->yTileOffset + i;
if (temp >= 32)
temp -= 32;
- DrawMetatileAt(mapData, temp * 32 + r5, gSaveBlock1.pos.x + 14, gSaveBlock1.pos.y + i / 2);
+ DrawMetatileAt(mapLayout, temp * 32 + r5, gSaveBlock1.pos.x + 14, gSaveBlock1.pos.y + i / 2);
}
}
-void CurrentMapDrawMetatileAt(int a, int b)
+void CurrentMapDrawMetatileAt(int x, int y)
{
- int offset = MapPosToBgTilemapOffset(&gUnknown_03000590, a, b);
+ int offset = MapPosToBgTilemapOffset(&sFieldCameraOffset, x, y);
if (offset >= 0)
{
- DrawMetatileAt(gMapHeader.mapData, offset, a, b);
- gUnknown_03000590.unk4 = TRUE;
+ DrawMetatileAt(gMapHeader.mapLayout, offset, x, y);
+ sFieldCameraOffset.copyBGToVRAM = TRUE;
}
}
void DrawDoorMetatileAt(int x, int y, u16 *arr)
{
- int offset = MapPosToBgTilemapOffset(&gUnknown_03000590, x, y);
+ int offset = MapPosToBgTilemapOffset(&sFieldCameraOffset, x, y);
if (offset >= 0)
{
DrawMetatile(1, arr, offset);
- gUnknown_03000590.unk4 = TRUE;
+ sFieldCameraOffset.copyBGToVRAM = TRUE;
}
}
-static void DrawMetatileAt(struct MapData *mapData, u16 b, int c, int d)
+static void DrawMetatileAt(struct MapLayout *mapLayout, u16 offset, int x, int y)
{
- u16 metatileId = MapGridGetMetatileIdAt(c, d);
u16 *metatiles;
+ u16 metatileId = MapGridGetMetatileIdAt(x, y);
- if (metatileId > 1024)
+ if (metatileId > 0x400)
metatileId = 0;
- if (metatileId < 512)
- metatiles = mapData->primaryTileset->metatiles;
+
+ if (metatileId < 0x200)
+ {
+ metatiles = mapLayout->primaryTileset->metatiles;
+ }
else
{
- metatiles = mapData->secondaryTileset->metatiles;
- metatileId -= 512;
+ metatiles = mapLayout->secondaryTileset->metatiles;
+ metatileId -= 0x200;
}
- DrawMetatile(MapGridGetMetatileLayerTypeAt(c, d), metatiles + metatileId * 8, b);
+
+ DrawMetatile(MapGridGetMetatileLayerTypeAt(x, y), metatiles + metatileId * 8, offset);
}
-static void DrawMetatile(s32 a, u16 *b, u16 c)
+static void DrawMetatile(s32 metatileLayerType, u16 *metatiles, u16 offset)
{
- switch (a)
+ switch (metatileLayerType)
{
- case 2:
- gBGTilemapBuffers[3][c] = b[0];
- gBGTilemapBuffers[3][c + 1] = b[1];
- gBGTilemapBuffers[3][c + 0x20] = b[2];
- gBGTilemapBuffers[3][c + 0x21] = b[3];
-
- gBGTilemapBuffers[2][c] = 0;
- gBGTilemapBuffers[2][c + 1] = 0;
- gBGTilemapBuffers[2][c + 0x20] = 0;
- gBGTilemapBuffers[2][c + 0x21] = 0;
-
- gBGTilemapBuffers[1][c] = b[4];
- gBGTilemapBuffers[1][c + 1] = b[5];
- gBGTilemapBuffers[1][c + 0x20] = b[6];
- gBGTilemapBuffers[1][c + 0x21] = b[7];
+ case 2: // LAYER_TYPE_
+ // Draw metatile's bottom layer to the bottom background layer.
+ gBGTilemapBuffers[3][offset] = metatiles[0];
+ gBGTilemapBuffers[3][offset + 1] = metatiles[1];
+ gBGTilemapBuffers[3][offset + 0x20] = metatiles[2];
+ gBGTilemapBuffers[3][offset + 0x21] = metatiles[3];
+
+ // Draw transparent tiles to the middle background layer.
+ gBGTilemapBuffers[2][offset] = 0;
+ gBGTilemapBuffers[2][offset + 1] = 0;
+ gBGTilemapBuffers[2][offset + 0x20] = 0;
+ gBGTilemapBuffers[2][offset + 0x21] = 0;
+
+ // Draw metatile's top layer to the top background layer.
+ gBGTilemapBuffers[1][offset] = metatiles[4];
+ gBGTilemapBuffers[1][offset + 1] = metatiles[5];
+ gBGTilemapBuffers[1][offset + 0x20] = metatiles[6];
+ gBGTilemapBuffers[1][offset + 0x21] = metatiles[7];
break;
- case 1:
- gBGTilemapBuffers[3][c] = b[0];
- gBGTilemapBuffers[3][c + 1] = b[1];
- gBGTilemapBuffers[3][c + 0x20] = b[2];
- gBGTilemapBuffers[3][c + 0x21] = b[3];
-
- gBGTilemapBuffers[2][c] = b[4];
- gBGTilemapBuffers[2][c + 1] = b[5];
- gBGTilemapBuffers[2][c + 0x20] = b[6];
- gBGTilemapBuffers[2][c + 0x21] = b[7];
-
- gBGTilemapBuffers[1][c] = 0;
- gBGTilemapBuffers[1][c + 1] = 0;
- gBGTilemapBuffers[1][c + 0x20] = 0;
- gBGTilemapBuffers[1][c + 0x21] = 0;
+ case 1: // LAYER_TYPE_COVERED_BY_OBJECTS
+ // Draw metatile's bottom layer to the bottom background layer.
+ gBGTilemapBuffers[3][offset] = metatiles[0];
+ gBGTilemapBuffers[3][offset + 1] = metatiles[1];
+ gBGTilemapBuffers[3][offset + 0x20] = metatiles[2];
+ gBGTilemapBuffers[3][offset + 0x21] = metatiles[3];
+
+ // Draw metatile's top layer to the middle background layer.
+ gBGTilemapBuffers[2][offset] = metatiles[4];
+ gBGTilemapBuffers[2][offset + 1] = metatiles[5];
+ gBGTilemapBuffers[2][offset + 0x20] = metatiles[6];
+ gBGTilemapBuffers[2][offset + 0x21] = metatiles[7];
+
+ // Draw transparent tiles to the top background layer.
+ gBGTilemapBuffers[1][offset] = 0;
+ gBGTilemapBuffers[1][offset + 1] = 0;
+ gBGTilemapBuffers[1][offset + 0x20] = 0;
+ gBGTilemapBuffers[1][offset + 0x21] = 0;
break;
- case 0:
- gBGTilemapBuffers[3][c] = 0x3014;
- gBGTilemapBuffers[3][c + 1] = 0x3014;
- gBGTilemapBuffers[3][c + 0x20] = 0x3014;
- gBGTilemapBuffers[3][c + 0x21] = 0x3014;
-
- gBGTilemapBuffers[2][c] = b[0];
- gBGTilemapBuffers[2][c + 1] = b[1];
- gBGTilemapBuffers[2][c + 0x20] = b[2];
- gBGTilemapBuffers[2][c + 0x21] = b[3];
-
- gBGTilemapBuffers[1][c] = b[4];
- gBGTilemapBuffers[1][c + 1] = b[5];
- gBGTilemapBuffers[1][c + 0x20] = b[6];
- gBGTilemapBuffers[1][c + 0x21] = b[7];
+ case 0: // LAYER_TYPE_NORMAL
+ // Draw garbage to the bottom background layer.
+ gBGTilemapBuffers[3][offset] = 0x3014;
+ gBGTilemapBuffers[3][offset + 1] = 0x3014;
+ gBGTilemapBuffers[3][offset + 0x20] = 0x3014;
+ gBGTilemapBuffers[3][offset + 0x21] = 0x3014;
+
+ // Draw metatile's bottom layer to the middle background layer.
+ gBGTilemapBuffers[2][offset] = metatiles[0];
+ gBGTilemapBuffers[2][offset + 1] = metatiles[1];
+ gBGTilemapBuffers[2][offset + 0x20] = metatiles[2];
+ gBGTilemapBuffers[2][offset + 0x21] = metatiles[3];
+
+ // Draw metatile's top layer to the top background layer, which covers event object sprites.
+ gBGTilemapBuffers[1][offset] = metatiles[4];
+ gBGTilemapBuffers[1][offset + 1] = metatiles[5];
+ gBGTilemapBuffers[1][offset + 0x20] = metatiles[6];
+ gBGTilemapBuffers[1][offset + 0x21] = metatiles[7];
break;
}
}
-static s32 MapPosToBgTilemapOffset(struct UnknownStruct *a, s32 x, s32 y)
+static s32 MapPosToBgTilemapOffset(struct FieldCameraOffset *cameraOffset, s32 x, s32 y)
{
x -= gSaveBlock1.pos.x;
x *= 2;
if (x >= 32 || x < 0)
return -1;
- x = x + a->unk2;
+ x = x + cameraOffset->xTileOffset;
if (x >= 32)
x -= 32;
y = (y - gSaveBlock1.pos.y) * 2;
if (y >= 32 || y < 0)
return -1;
- y = y + a->unk3;
+ y = y + cameraOffset->yTileOffset;
if (y >= 32)
y -= 32;
return y * 32 + x;
}
-static void CameraUpdateCallback(struct CameraSomething *a)
+static void CameraUpdateCallback(struct FieldCamera *fieldCamera)
{
- if (a->unk4 != 0)
+ if (fieldCamera->trackedSpriteId != 0)
{
- a->unk8 = gSprites[a->unk4].data[2];
- a->unkC = gSprites[a->unk4].data[3];
+ fieldCamera->movementSpeedX = gSprites[fieldCamera->trackedSpriteId].data[2];
+ fieldCamera->movementSpeedY = gSprites[fieldCamera->trackedSpriteId].data[3];
}
}
void ResetCameraUpdateInfo(void)
{
- gUnknown_03004880.unk8 = 0;
- gUnknown_03004880.unkC = 0;
- gUnknown_03004880.unk10 = 0;
- gUnknown_03004880.unk14 = 0;
- gUnknown_03004880.unk4 = 0;
- gUnknown_03004880.callback = NULL;
+ gFieldCamera.movementSpeedX = 0;
+ gFieldCamera.movementSpeedY = 0;
+ gFieldCamera.curMovementOffsetX = 0;
+ gFieldCamera.curMovementOffsetY = 0;
+ gFieldCamera.trackedSpriteId = 0;
+ gFieldCamera.callback = NULL;
}
-u32 InitCameraUpdateCallback(u8 a)
+u32 InitCameraUpdateCallback(u8 trackedSpriteId)
{
- if (gUnknown_03004880.unk4 != 0)
- DestroySprite(&gSprites[gUnknown_03004880.unk4]);
- gUnknown_03004880.unk4 = AddCameraObject(a);
- gUnknown_03004880.callback = CameraUpdateCallback;
+ if (gFieldCamera.trackedSpriteId != 0)
+ DestroySprite(&gSprites[gFieldCamera.trackedSpriteId]);
+
+ gFieldCamera.trackedSpriteId = AddCameraObject(trackedSpriteId);
+ gFieldCamera.callback = CameraUpdateCallback;
return 0;
}
@@ -350,105 +364,105 @@ void CameraUpdate(void)
{
int deltaX;
int deltaY;
- int r0;
- int r1;
- int r7;
- int r8;
-
- if (gUnknown_03004880.callback != NULL)
- gUnknown_03004880.callback(&gUnknown_03004880);
- r7 = gUnknown_03004880.unk8;
- r8 = gUnknown_03004880.unkC;
+ int curMovementOffsetY;
+ int curMovementOffsetX;
+ int movementSpeedX;
+ int movementSpeedY;
+
+ if (gFieldCamera.callback != NULL)
+ gFieldCamera.callback(&gFieldCamera);
+ movementSpeedX = gFieldCamera.movementSpeedX;
+ movementSpeedY = gFieldCamera.movementSpeedY;
deltaX = 0;
deltaY = 0;
- r1 = gUnknown_03004880.unk10;
- r0 = gUnknown_03004880.unk14;
+ curMovementOffsetX = gFieldCamera.curMovementOffsetX;
+ curMovementOffsetY = gFieldCamera.curMovementOffsetY;
- if (r1 == 0 && r7 != 0)
+ if (curMovementOffsetX == 0 && movementSpeedX != 0)
{
- if (r7 > 0)
+ if (movementSpeedX > 0)
deltaX = 1;
else
deltaX = -1;
}
- if (r0 == 0 && r8 != 0)
+ if (curMovementOffsetY == 0 && movementSpeedY != 0)
{
- if (r8 > 0)
+ if (movementSpeedY > 0)
deltaY = 1;
else
deltaY = -1;
}
- if (r1 != 0 && r1 == -r7)
+ if (curMovementOffsetX != 0 && curMovementOffsetX == -movementSpeedX)
{
- if (r7 > 0)
+ if (movementSpeedX > 0)
deltaX = 1;
else
deltaX = -1;
}
- if (r0 != 0 && r0 == -r8)
+ if (curMovementOffsetY != 0 && curMovementOffsetY == -movementSpeedY)
{
- if (r8 > 0)
+ if (movementSpeedY > 0)
deltaX = 1;
else
deltaX = -1;
}
- gUnknown_03004880.unk10 += r7;
- gUnknown_03004880.unk10 = gUnknown_03004880.unk10 - 16 * (gUnknown_03004880.unk10 / 16);
- gUnknown_03004880.unk14 += r8;
- gUnknown_03004880.unk14 = gUnknown_03004880.unk14 - 16 * (gUnknown_03004880.unk14 / 16);
+ gFieldCamera.curMovementOffsetX += movementSpeedX;
+ gFieldCamera.curMovementOffsetX = gFieldCamera.curMovementOffsetX - 16 * (gFieldCamera.curMovementOffsetX / 16);
+ gFieldCamera.curMovementOffsetY += movementSpeedY;
+ gFieldCamera.curMovementOffsetY = gFieldCamera.curMovementOffsetY - 16 * (gFieldCamera.curMovementOffsetY / 16);
if (deltaX != 0 || deltaY != 0)
{
CameraMove(deltaX, deltaY);
- UpdateFieldObjectsForCameraUpdate(deltaX, deltaY);
+ UpdateEventObjectsForCameraUpdate(deltaX, deltaY);
RotatingGatePuzzleCameraUpdate(deltaX, deltaY);
ResetBerryTreeSparkleFlags();
- tilemap_move_something(&gUnknown_03000590, deltaX * 2, deltaY * 2);
- RedrawMapSlicesForCameraUpdate(&gUnknown_03000590, deltaX * 2, deltaY * 2);
+ tilemap_move_something(&sFieldCameraOffset, deltaX * 2, deltaY * 2);
+ RedrawMapSlicesForCameraUpdate(&sFieldCameraOffset, deltaX * 2, deltaY * 2);
}
- coords8_add(&gUnknown_03000590, r7, r8);
- gUnknown_0300489C -= r7;
- gUnknown_03004898 -= r8;
+ coords8_add(&sFieldCameraOffset, movementSpeedX, movementSpeedY);
+ gTotalCameraPixelOffsetX -= movementSpeedX;
+ gTotalCameraPixelOffsetY -= movementSpeedY;
}
-void camera_move_and_redraw(int a, int b)
+void MoveCameraAndRedrawMap(int deltaX, int deltaY)
{
- CameraMove(a, b);
- UpdateFieldObjectsForCameraUpdate(a, b);
+ CameraMove(deltaX, deltaY);
+ UpdateEventObjectsForCameraUpdate(deltaX, deltaY);
DrawWholeMapView();
- gUnknown_0300489C -= a * 16;
- gUnknown_03004898 -= b * 16;
+ gTotalCameraPixelOffsetX -= deltaX * 16;
+ gTotalCameraPixelOffsetY -= deltaY * 16;
}
-void SetCameraPanningCallback(void (*a)(void))
+void SetCameraPanningCallback(void (*callback)(void))
{
- gUnknown_030005A0 = a;
+ sFieldCameraPanningCallback = callback;
}
void SetCameraPanning(s16 a, s16 b)
{
- gUnknown_03000598 = a;
- gUnknown_0300059A = b + 32;
+ sHorizontalCameraPan = a;
+ sVerticalCameraPan = b + 32;
}
void InstallCameraPanAheadCallback(void)
{
- gUnknown_030005A0 = CameraPanningCB_PanAhead;
+ sFieldCameraPanningCallback = CameraPanningCB_PanAhead;
gUnknown_0300059C = 0;
- gUnknown_03000598 = 0;
- gUnknown_0300059A = 32;
+ sHorizontalCameraPan = 0;
+ sVerticalCameraPan = 32;
}
void UpdateCameraPanning(void)
{
- if (gUnknown_030005A0 != NULL)
- gUnknown_030005A0();
+ if (sFieldCameraPanningCallback != NULL)
+ sFieldCameraPanningCallback();
//Update sprite offset of overworld objects
- gSpriteCoordOffsetX = gUnknown_0300489C - gUnknown_03000598;
- gSpriteCoordOffsetY = gUnknown_03004898 - gUnknown_0300059A - 8;
+ gSpriteCoordOffsetX = gTotalCameraPixelOffsetX - sHorizontalCameraPan;
+ gSpriteCoordOffsetY = gTotalCameraPixelOffsetY - sVerticalCameraPan - 8;
}
static void CameraPanningCB_PanAhead(void)
@@ -473,24 +487,24 @@ static void CameraPanningCB_PanAhead(void)
gUnknown_0300059C = 0;
}
- var = player_get_direction_upper_nybble();
+ var = GetPlayerMovementDirection();
if (var == 2)
{
- if (gUnknown_0300059A > -8)
- gUnknown_0300059A -= 2;
+ if (sVerticalCameraPan > -8)
+ sVerticalCameraPan -= 2;
}
else if (var == 1)
{
- if (gUnknown_0300059A < 72)
- gUnknown_0300059A += 2;
+ if (sVerticalCameraPan < 72)
+ sVerticalCameraPan += 2;
}
- else if (gUnknown_0300059A < 32)
+ else if (sVerticalCameraPan < 32)
{
- gUnknown_0300059A += 2;
+ sVerticalCameraPan += 2;
}
- else if (gUnknown_0300059A > 32)
+ else if (sVerticalCameraPan > 32)
{
- gUnknown_0300059A -= 2;
+ sVerticalCameraPan -= 2;
}
}
}
diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c
index 3ae422512..a973b80ca 100644
--- a/src/field_control_avatar.c
+++ b/src/field_control_avatar.c
@@ -33,15 +33,15 @@ struct Coords32
extern u16 gSpecialVar_LastTalked;
extern u16 gSpecialVar_Facing;
-extern struct LinkPlayerMapObject gLinkPlayerMapObjects[];
+extern struct LinkPlayerEventObject gLinkPlayerEventObjects[];
extern u16 gSpecialVar_0x8004;
extern u16 gSpecialVar_0x8005;
extern u8 gUnknown_020297ED;
-static EWRAM_DATA u8 gUnknown_0202E8C0 = 0;
-static EWRAM_DATA u16 gUnknown_0202E8C2 = 0;
+static EWRAM_DATA u8 sWildEncounterImmunitySteps = 0;
+static EWRAM_DATA u16 sPreviousPlayerMetatileBehavior = 0;
-u8 gSelectedMapObject;
+u8 gSelectedEventObject;
//scripts
extern u8 gUnknown_081A2C51[];
@@ -54,7 +54,7 @@ extern u8 gUnknown_081C6C02[];
extern u8 HiddenItemScript[];
extern u8 Event_TV[];
extern u8 gUnknown_081A0009[];
-extern u8 ClosedSootopolisGymDoorScript[];
+extern u8 ClosedSootopolisDoorScript[];
extern u8 gUnknown_081A4363[];
extern u8 gUnknown_081C346A[];
extern u8 gUnknown_081616E1[];
@@ -82,40 +82,44 @@ extern u8 S_EggHatch[];
extern u8 gUnknown_0815FD0D[];
extern u8 gUnknown_081C6BDE[];
-static void player_get_pos_to_and_height(struct MapPosition *);
-static void player_get_next_pos_and_height(struct MapPosition *);
-static u16 cur_mapdata_block_role_at_player_pos(int);
-static bool8 sub_80681F0(struct MapPosition *position, u16 b, u8 c);
-static u8 *TryGetScriptOnPressingA(struct MapPosition *position, u8 b, u8 c);
-static u8 *sub_8068364(struct MapPosition *, u8, u8);
-static u8 *TryGetInvisibleMapObjectScript(struct MapPosition *, u8, u8 c);
-static u8 *sub_8068500(struct MapPosition *, u8, u8);
-static u8 *TryGetFieldMoveScript(struct MapPosition *, u8, u8);
-static bool32 sub_8068770(void);
-static bool32 sub_80687A4(void);
-static bool8 sub_80687E4(struct MapPosition *, u16, u16);
-static void happiness_algorithm_step(void);
-static bool8 overworld_poison_step(void);
-static bool8 is_it_battle_time_3(u16);
+static void GetPlayerPosition(struct MapPosition *);
+static void GetInFrontOfPlayerPosition(struct MapPosition *);
+static u16 GetPlayerCurMetatileBehavior(int);
+static bool8 TryStartInteractionScript(struct MapPosition*, u16, u8);
+static u8 *GetInteractionScript(struct MapPosition*, u8, u8);
+static u8 *GetInteractedEventObjectScript(struct MapPosition *, u8, u8);
+static u8 *GetInteractedBackgroundEventScript(struct MapPosition *, u8, u8);
+static u8 *GetInteractedMetatileScript(struct MapPosition *, u8, u8);
+static u8 *GetInteractedWaterScript(struct MapPosition *, u8, u8);
+static bool32 TrySetupDiveDownScript(void);
+static bool32 TrySetupDiveEmergeScript(void);
+static bool8 TryStartStepBasedScript(struct MapPosition *, u16, u16);
+static void UpdateHappinessStep(void);
+static bool8 UpdatePoisonStepCounter(void);
+static bool8 CheckStandardWildEncounter(u16);
static bool8 mapheader_run_first_tag2_script_list_match_conditionally(struct MapPosition *, u16, u8);
-static bool8 sub_8068B30(u16);
-static bool8 is_non_stair_warp_tile(u16, u8);
-static s8 map_warp_check_packed(struct MapHeader *, struct MapPosition *);
+static bool8 IsWarpMetatileBehavior(u16);
+static bool8 IsArrowWarpMetatileBehavior(u16, u8);
+static s8 FindWarpEventByPosition(struct MapHeader *, struct MapPosition *);
static void sub_8068C30(struct MapHeader *, s8, struct MapPosition *);
static bool8 map_warp_consider_2_to_inside(struct MapPosition *, u16, u8);
-static s8 map_warp_check(struct MapHeader *, u16, u16, u8);
-static u8 *mapheader_trigger_activate_at(struct MapHeader *, u16, u16, u8);
-static struct BgEvent *FindInvisibleMapObjectByPosition(struct MapHeader *, u16, u16, u8);;
+static s8 FindWarpEventByCoordsAndId(struct MapHeader *, u16, u16, u8);
+static u8 *GetCoordEventScriptAtPosition(struct MapHeader *, u16, u16, u8);
+static struct BgEvent *FindBackgroundEventByPosition(struct MapHeader *, u16, u16, u8);
+static bool8 TryStartCoordEventScript(struct MapPosition *);
+static bool8 TryStartWarpEventScript(struct MapPosition *, u16);
+static bool8 TryStartCrackedFloorHoleScript(u16);
+static bool8 TryStartStepCountScript(void);
-void FieldClearPlayerInput(struct FieldInput *input)
+void ClearPlayerFieldInput(struct FieldInput *input)
{
input->pressedAButton = 0;
- input->input_field_0_1 = 0;
+ input->checkStandardWildEncounter = 0;
input->pressedStartButton = 0;
input->pressedSelectButton = 0;
input->input_field_0_4 = 0;
input->input_field_0_5 = 0;
- input->input_field_0_6 = 0;
+ input->tookStep = 0;
input->pressedBButton = 0;
input->input_field_1_0 = 0;
input->input_field_1_1 = 0;
@@ -124,13 +128,13 @@ void FieldClearPlayerInput(struct FieldInput *input)
input->dpadDirection = 0;
}
-void FieldGetPlayerInput(struct FieldInput *input, u16 newKeys, u16 heldKeys)
+void GetPlayerFieldInput(struct FieldInput *input, u16 newKeys, u16 heldKeys)
{
- u8 r6 = gPlayerAvatar.tileTransitionState;
- u8 r9 = gPlayerAvatar.runningState;
- bool8 forcedMove = MetatileBehavior_IsMoveTile(cur_mapdata_block_role_at_player_pos(r9));
+ u8 tileTransitionState = gPlayerAvatar.tileTransitionState;
+ u8 runningState = gPlayerAvatar.runningState;
+ bool8 forcedMove = MetatileBehavior_IsForcedMovementTile(GetPlayerCurMetatileBehavior(runningState));
- if ((r6 == 2 && forcedMove == FALSE) || r6 == 0)
+ if ((tileTransitionState == T_TILE_CENTER && forcedMove == FALSE) || tileTransitionState == T_NOT_MOVING)
{
if (GetPlayerSpeed() != 4)
{
@@ -143,19 +147,22 @@ void FieldGetPlayerInput(struct FieldInput *input, u16 newKeys, u16 heldKeys)
if (newKeys & B_BUTTON)
input->pressedBButton = TRUE;
}
+
if (heldKeys & (DPAD_UP | DPAD_DOWN | DPAD_LEFT | DPAD_RIGHT))
{
input->input_field_0_4 = TRUE;
input->input_field_0_5 = TRUE;
}
}
+
if (forcedMove == FALSE)
{
- if (r6 == 2 && r9 == 2)
- input->input_field_0_6 = TRUE;
- if (forcedMove == FALSE && r6 == 2)
- input->input_field_0_1 = TRUE;
+ if (tileTransitionState == T_TILE_CENTER && runningState == MOVING)
+ input->tookStep = TRUE;
+ if (forcedMove == FALSE && tileTransitionState == T_TILE_CENTER)
+ input->checkStandardWildEncounter = TRUE;
}
+
if (heldKeys & DPAD_UP)
input->dpadDirection = DIR_NORTH;
else if (heldKeys & DPAD_DOWN)
@@ -164,19 +171,21 @@ void FieldGetPlayerInput(struct FieldInput *input, u16 newKeys, u16 heldKeys)
input->dpadDirection = DIR_WEST;
else if (heldKeys & DPAD_RIGHT)
input->dpadDirection = DIR_EAST;
+
#if DEBUG
if ((heldKeys & R_BUTTON) && input->pressedStartButton)
{
input->input_field_1_2 = TRUE;
input->pressedStartButton = FALSE;
}
+
if (gUnknown_020297ED)
{
if (heldKeys & R_BUTTON)
{
input->input_field_1_1 = TRUE;
- input->input_field_0_6 = FALSE;
- input->input_field_0_1 = FALSE;
+ input->tookStep = FALSE;
+ input->checkStandardWildEncounter = FALSE;
input->input_field_0_4 = FALSE;
input->input_field_0_5 = FALSE;
if (newKeys & SELECT_BUTTON)
@@ -185,23 +194,24 @@ void FieldGetPlayerInput(struct FieldInput *input, u16 newKeys, u16 heldKeys)
input->pressedSelectButton = FALSE;
}
}
+
if (heldKeys & L_BUTTON)
input->input_field_1_3 = TRUE;
}
#endif
}
-int sub_8068024(struct FieldInput *input)
+int ProcessPlayerFieldInput(struct FieldInput *input)
{
struct MapPosition position;
- u8 r6;
- u16 r4;
+ u8 playerDirection;
+ u16 metatileBehavior;
- r6 = player_get_direction_lower_nybble();
- player_get_pos_to_and_height(&position);
- r4 = MapGridGetMetatileBehaviorAt(position.x, position.y);
+ playerDirection = GetPlayerFacingDirection();
+ GetPlayerPosition(&position);
+ metatileBehavior = MapGridGetMetatileBehaviorAt(position.x, position.y);
#if DEBUG
- if (input->input_field_1_3 && dive_warp(&position, r4) == TRUE)
+ if (input->input_field_1_3 && dive_warp(&position, metatileBehavior) == TRUE)
return TRUE;
#endif
@@ -219,31 +229,33 @@ int sub_8068024(struct FieldInput *input)
mapheader_run_first_tag2_script_list_match() == 1)
return TRUE;
- if (input->pressedBButton && sub_80687A4() == 1)
+ if (input->pressedBButton && TrySetupDiveEmergeScript() == TRUE)
return TRUE;
- if (input->input_field_0_6)
+ if (input->tookStep)
{
IncrementGameStat(GAME_STAT_STEPS);
- if (sub_80687E4(&position, r4, r6) == 1)
+ if (TryStartStepBasedScript(&position, metatileBehavior, playerDirection) == TRUE)
return TRUE;
}
- if (input->input_field_0_1 && is_it_battle_time_3(r4) == 1)
+ if (input->checkStandardWildEncounter && CheckStandardWildEncounter(metatileBehavior) == TRUE)
return TRUE;
- if (input->input_field_0_4 && input->dpadDirection == r6)
+ if (input->input_field_0_4 && input->dpadDirection == playerDirection)
{
- if (mapheader_run_first_tag2_script_list_match_conditionally(&position, r4, r6) == 1)
+ if (mapheader_run_first_tag2_script_list_match_conditionally(&position, metatileBehavior, playerDirection) == TRUE)
return TRUE;
}
- player_get_next_pos_and_height(&position);
- r4 = MapGridGetMetatileBehaviorAt(position.x, position.y);
- if (input->pressedAButton && sub_80681F0(&position, r4, r6) == 1)
+
+ GetInFrontOfPlayerPosition(&position);
+ metatileBehavior = MapGridGetMetatileBehaviorAt(position.x, position.y);
+ if (input->pressedAButton && TryStartInteractionScript(&position, metatileBehavior, playerDirection) == TRUE)
return TRUE;
- if (input->input_field_0_5 && input->dpadDirection == r6)
+
+ if (input->input_field_0_5 && input->dpadDirection == playerDirection)
{
- if (map_warp_consider_2_to_inside(&position, r4, r6) == 1)
+ if (map_warp_consider_2_to_inside(&position, metatileBehavior, playerDirection) == TRUE)
return TRUE;
}
- if (input->pressedAButton && sub_8068770() == 1)
+ if (input->pressedAButton && TrySetupDiveDownScript() == TRUE)
return TRUE;
if (input->pressedStartButton)
{
@@ -251,7 +263,7 @@ int sub_8068024(struct FieldInput *input)
sub_8071310();
return TRUE;
}
- if (input->pressedSelectButton && sub_80A6D1C() == TRUE)
+ if (input->pressedSelectButton && UseRegisteredKeyItem() == TRUE)
return TRUE;
#if DEBUG
@@ -271,13 +283,13 @@ int sub_8068024(struct FieldInput *input)
return FALSE;
}
-static void player_get_pos_to_and_height(struct MapPosition *position)
+static void GetPlayerPosition(struct MapPosition *position)
{
PlayerGetDestCoords(&position->x, &position->y);
position->height = PlayerGetZCoord();
}
-static void player_get_next_pos_and_height(struct MapPosition *position)
+static void GetInFrontOfPlayerPosition(struct MapPosition *position)
{
s16 x, y;
@@ -289,7 +301,7 @@ static void player_get_next_pos_and_height(struct MapPosition *position)
position->height = 0;
}
-static u16 cur_mapdata_block_role_at_player_pos(int unused)
+static u16 GetPlayerCurMetatileBehavior(int runningState)
{
s16 x, y;
@@ -297,13 +309,13 @@ static u16 cur_mapdata_block_role_at_player_pos(int unused)
return MapGridGetMetatileBehaviorAt(x, y);
}
-static bool8 sub_80681F0(struct MapPosition *position, u16 b, u8 c)
+static bool8 TryStartInteractionScript(struct MapPosition *position, u16 metatileBehavior, u8 direction)
{
- u8 *script = TryGetScriptOnPressingA(position, b, c);
-
+ u8 *script = GetInteractionScript(position, metatileBehavior, direction);
if (script == NULL)
return FALSE;
+ // Play computer noise for PC-related scripts.
if (script != gUnknown_0815281E
&& script != gUnknown_08152C39
&& script != gUnknown_0815F36C
@@ -315,98 +327,105 @@ static bool8 sub_80681F0(struct MapPosition *position, u16 b, u8 c)
return TRUE;
}
-static u8 *TryGetScriptOnPressingA(struct MapPosition *position, u8 b, u8 c)
+static u8 *GetInteractionScript(struct MapPosition *position, u8 metatileBehavior, u8 direction)
{
- u8 *script;
-
- script = sub_8068364(position, b, c);
+ u8 *script = GetInteractedEventObjectScript(position, metatileBehavior, direction);
if (script != NULL)
return script;
- script = TryGetInvisibleMapObjectScript(position, b, c);
+
+ script = GetInteractedBackgroundEventScript(position, metatileBehavior, direction);
if (script != NULL)
return script;
- script = sub_8068500(position, b, c);
+
+ script = GetInteractedMetatileScript(position, metatileBehavior, direction);
if (script != NULL)
return script;
- script = TryGetFieldMoveScript(position, b, c);
+
+ script = GetInteractedWaterScript(position, metatileBehavior, direction);
if (script != NULL)
return script;
return NULL;
}
-u8 *sub_80682A8(struct MapPosition *position, u8 unused, u8 c)
+u8 *GetInteractedLinkPlayerScript(struct MapPosition *position, u8 metatileBehavior, u8 direction)
{
- u8 r3;
+ u8 eventObjectId;
s32 i;
if (!MetatileBehavior_IsCounter(MapGridGetMetatileBehaviorAt(position->x, position->y)))
- r3 = GetFieldObjectIdByXYZ(position->x, position->y, position->height);
+ eventObjectId = GetEventObjectIdByXYZ(position->x, position->y, position->height);
else
- r3 = GetFieldObjectIdByXYZ(position->x + gUnknown_0821664C[c].x, position->y + gUnknown_0821664C[c].y, position->height);
- if (r3 == 16 || gMapObjects[r3].localId == 0xFF)
+ eventObjectId = GetEventObjectIdByXYZ(position->x + gDirectionToVectors[direction].x, position->y + gDirectionToVectors[direction].y, position->height);
+
+ if (eventObjectId == 16 || gEventObjects[eventObjectId].localId == 0xFF)
return NULL;
+
for (i = 0; i < 4; i++)
{
- if (gLinkPlayerMapObjects[i].active == TRUE && gLinkPlayerMapObjects[i].mapObjId == r3)
+ if (gLinkPlayerEventObjects[i].active == TRUE && gLinkPlayerEventObjects[i].eventObjId == eventObjectId)
return NULL;
}
- gSelectedMapObject = r3;
- gSpecialVar_LastTalked = gMapObjects[r3].localId;
- gSpecialVar_Facing = c;
- return GetFieldObjectScriptPointerByFieldObjectId(r3);
+
+ gSelectedEventObject = eventObjectId;
+ gSpecialVar_LastTalked = gEventObjects[eventObjectId].localId;
+ gSpecialVar_Facing = direction;
+ return GetEventObjectScriptPointerByEventObjectId(eventObjectId);
}
-static u8 *sub_8068364(struct MapPosition *position, u8 b, u8 c)
+static u8 *GetInteractedEventObjectScript(struct MapPosition *position, u8 metatileBehavior, u8 direction)
{
- u8 r3;
+ u8 eventObjectId;
u8 *script;
- r3 = GetFieldObjectIdByXYZ(position->x, position->y, position->height);
- if (r3 == 16 || gMapObjects[r3].localId == 0xFF)
+ eventObjectId = GetEventObjectIdByXYZ(position->x, position->y, position->height);
+ if (eventObjectId == 16 || gEventObjects[eventObjectId].localId == 0xFF)
{
- if (MetatileBehavior_IsCounter(b) != TRUE)
+ if (MetatileBehavior_IsCounter(metatileBehavior) != TRUE)
return NULL;
- r3 = GetFieldObjectIdByXYZ(position->x + gUnknown_0821664C[c].x, position->y + gUnknown_0821664C[c].y, position->height);
- if (r3 == 16 || gMapObjects[r3].localId == 0xFF)
+
+ // Look for an event object on the other side of the counter.
+ eventObjectId = GetEventObjectIdByXYZ(position->x + gDirectionToVectors[direction].x, position->y + gDirectionToVectors[direction].y, position->height);
+ if (eventObjectId == 16 || gEventObjects[eventObjectId].localId == 0xFF)
return NULL;
}
- //_080683E8
- gSelectedMapObject = r3;
- gSpecialVar_LastTalked = gMapObjects[r3].localId;
- gSpecialVar_Facing = c;
- script = GetFieldObjectScriptPointerByFieldObjectId(r3);
+
+ gSelectedEventObject = eventObjectId;
+ gSpecialVar_LastTalked = gEventObjects[eventObjectId].localId;
+ gSpecialVar_Facing = direction;
+ script = GetEventObjectScriptPointerByEventObjectId(eventObjectId);
script = GetRamScript(gSpecialVar_LastTalked, script);
return script;
}
-static u8 *TryGetInvisibleMapObjectScript(struct MapPosition *position, u8 unused, u8 c)
+static u8 *GetInteractedBackgroundEventScript(struct MapPosition *position, u8 metatileBehavior, u8 direction)
{
- struct BgEvent *bgEvent = FindInvisibleMapObjectByPosition(&gMapHeader, position->x - 7, position->y - 7, position->height);
+ struct BgEvent *bgEvent = FindBackgroundEventByPosition(&gMapHeader, position->x - 7, position->y - 7, position->height);
if (bgEvent == NULL)
return NULL;
if (bgEvent->bgUnion.script == NULL)
return gUnknown_081C6C02;
+
switch (bgEvent->kind)
{
case 0:
default:
return bgEvent->bgUnion.script;
case 1:
- if (c != 2)
+ if (direction != DIR_NORTH)
return NULL;
break;
case 2:
- if (c != 1)
+ if (direction != DIR_SOUTH)
return NULL;
break;
case 3:
- if (c != 4)
+ if (direction != DIR_EAST)
return NULL;
break;
case 4:
- if (c != 3)
+ if (direction != DIR_WEST)
return NULL;
break;
case 5:
@@ -418,7 +437,7 @@ static u8 *TryGetInvisibleMapObjectScript(struct MapPosition *position, u8 unuse
return NULL;
return HiddenItemScript;
case 8:
- if (c == 2)
+ if (direction == DIR_NORTH)
{
gSpecialVar_0x8004 = bgEvent->bgUnion.secretBaseId;
if (sub_80BC050())
@@ -426,63 +445,67 @@ static u8 *TryGetInvisibleMapObjectScript(struct MapPosition *position, u8 unuse
}
return NULL;
}
+
return bgEvent->bgUnion.script;
}
-static u8 *sub_8068500(struct MapPosition *position, u8 b, u8 c)
+static u8 *GetInteractedMetatileScript(struct MapPosition *position, u8 metatileBehavior, u8 direction)
{
s8 height;
- if (MetatileBehavior_IsPlayerFacingTVScreen(b, c) == TRUE)
+ if (MetatileBehavior_IsPlayerFacingTVScreen(metatileBehavior, direction) == TRUE)
return Event_TV;
- if (MetatileBehavior_IsPC(b) == TRUE)
+ if (MetatileBehavior_IsPC(metatileBehavior) == TRUE)
return gUnknown_081A0009;
- if (MetatileBehavior_IsClosedSootopolisGymDoor(b) == TRUE)
- return ClosedSootopolisGymDoorScript;
- if (is_tile_x84(b) == TRUE)
+ if (MetatileBehavior_IsClosedSootopolisDoor(metatileBehavior) == TRUE)
+ return ClosedSootopolisDoorScript;
+ if (MetatileBehavior_IsLinkBattleRecords(metatileBehavior) == TRUE)
return gUnknown_081A4363;
- if (MetatileBehavior_IsPokeblockFeeder(b) == TRUE)
+ if (MetatileBehavior_IsPokeblockFeeder(metatileBehavior) == TRUE)
return gUnknown_081C346A;
- if (MetatileBehavior_IsTrickHousePuzzleDoor(b) == TRUE)
+ if (MetatileBehavior_IsTrickHousePuzzleDoor(metatileBehavior) == TRUE)
return gUnknown_081616E1;
- if (MetatileBehavior_IsRegionMap(b) == TRUE)
+ if (MetatileBehavior_IsRegionMap(metatileBehavior) == TRUE)
return Event_WorldMap;
- if (sub_805791C(b) == TRUE)
+ if (MetatileBehavior_IsRunningShoesManual(metatileBehavior) == TRUE)
return S_RunningShoesManual;
- if (MetatileBehavior_IsPictureBookShelf(b) == TRUE)
+ if (MetatileBehavior_IsPictureBookShelf(metatileBehavior) == TRUE)
return PictureBookShelfScript;
- if (MetatileBehavior_IsBookShelf(b) == TRUE)
+ if (MetatileBehavior_IsBookShelf(metatileBehavior) == TRUE)
return BookshelfScript;
- if (MetatileBehavior_IsPokeCenterBookShelf(b) == TRUE)
+ if (MetatileBehavior_IsPokeCenterBookShelf(metatileBehavior) == TRUE)
return PokemonCenterBookshelfScript;
- if (MetatileBehavior_IsVase(b) == TRUE)
+ if (MetatileBehavior_IsVase(metatileBehavior) == TRUE)
return VaseScript;
- if (MetatileBehavior_IsTrashCan(b) == TRUE)
+ if (MetatileBehavior_IsTrashCan(metatileBehavior) == TRUE)
return TrashCanScript;
- if (MetatileBehavior_IsShopShelf(b) == TRUE)
+ if (MetatileBehavior_IsShopShelf(metatileBehavior) == TRUE)
return ShopShelfScript;
- if (MetatileBehavior_IsBlueprint(b) == TRUE)
+ if (MetatileBehavior_IsBlueprint(metatileBehavior) == TRUE)
return BlueprintScript;
+
height = position->height;
if (height == MapGridGetZCoordAt(position->x, position->y))
{
- if (MetatileBehavior_IsSecretBasePC(b) == TRUE)
+ if (MetatileBehavior_IsSecretBasePC(metatileBehavior) == TRUE)
return gUnknown_0815F36C;
- if (sub_805724C(b) == TRUE)
+ if (MetatileBehavior_IsRecordMixingSecretBasePC(metatileBehavior) == TRUE)
return gUnknown_0815F43A;
- if (sub_8057364(b) == TRUE)
+ if (MetatileBehavior_IsSecretBaseSandOrnament(metatileBehavior) == TRUE)
return gUnknown_0815F523;
- if (sub_8057378(b) == TRUE)
+ if (MetatileBehavior_IsSecretBaseShieldOrToyTV(metatileBehavior) == TRUE)
return gUnknown_0815F528;
}
+
return NULL;
}
-static u8 *TryGetFieldMoveScript(struct MapPosition *unused1, u8 b, u8 unused2)
+static u8 *GetInteractedWaterScript(struct MapPosition *unused1, u8 metatileBehavior, u8 direction)
{
if (FlagGet(FLAG_BADGE05_GET) == TRUE && PartyHasMonWithSurf() == TRUE && IsPlayerFacingSurfableFishableWater() == TRUE)
return UseSurfScript;
- if (MetatileBehavior_IsWaterfall(b) == TRUE)
+
+ if (MetatileBehavior_IsWaterfall(metatileBehavior) == TRUE)
{
if (FlagGet(FLAG_BADGE08_GET) == TRUE && IsPlayerSurfingNorth() == TRUE)
return S_UseWaterfall;
@@ -492,9 +515,9 @@ static u8 *TryGetFieldMoveScript(struct MapPosition *unused1, u8 b, u8 unused2)
return NULL;
}
-static bool32 sub_8068770(void)
+static bool32 TrySetupDiveDownScript(void)
{
- if (FlagGet(FLAG_BADGE07_GET) && sub_8068F18() == 2)
+ if (FlagGet(FLAG_BADGE07_GET) && TrySetDiveWarp() == 2)
{
ScriptContext1_SetupScript(UseDiveScript);
return TRUE;
@@ -502,9 +525,9 @@ static bool32 sub_8068770(void)
return FALSE;
}
-static bool32 sub_80687A4(void)
+static bool32 TrySetupDiveEmergeScript(void)
{
- if (FlagGet(FLAG_BADGE07_GET) && gMapHeader.mapType == MAP_TYPE_UNDERWATER && sub_8068F18() == 1)
+ if (FlagGet(FLAG_BADGE07_GET) && gMapHeader.mapType == MAP_TYPE_UNDERWATER && TrySetDiveWarp() == 1)
{
ScriptContext1_SetupScript(S_UseDiveUnderwater);
return TRUE;
@@ -512,24 +535,24 @@ static bool32 sub_80687A4(void)
return FALSE;
}
-static bool8 sub_80687E4(struct MapPosition *position, u16 b, u16 unused)
+static bool8 TryStartStepBasedScript(struct MapPosition *position, u16 metatileBehavior, u16 direction)
{
- if (mapheader_trigger_activate_at__run_now(position) == TRUE)
+ if (TryStartCoordEventScript(position) == TRUE)
return TRUE;
- if (sub_8068A64(position, b) == TRUE)
+ if (TryStartWarpEventScript(position, metatileBehavior) == TRUE)
return TRUE;
- if (sub_8068870(b) == TRUE)
+ if (TryStartCrackedFloorHoleScript(metatileBehavior) == TRUE)
return TRUE;
- if (sub_8068894() == TRUE)
+ if (TryStartStepCountScript() == TRUE)
return TRUE;
if (UpdateRepelCounter() == TRUE)
return TRUE;
return FALSE;
}
-bool8 mapheader_trigger_activate_at__run_now(struct MapPosition *position)
+bool8 TryStartCoordEventScript(struct MapPosition *position)
{
- u8 *script = mapheader_trigger_activate_at(&gMapHeader, position->x - 7, position->y - 7, position->height);
+ u8 *script = GetCoordEventScriptAtPosition(&gMapHeader, position->x - 7, position->y - 7, position->height);
if (script == NULL)
return FALSE;
@@ -537,10 +560,9 @@ bool8 mapheader_trigger_activate_at__run_now(struct MapPosition *position)
return TRUE;
}
-//can be u8, u16, or u32
-bool8 sub_8068870(u16 a)
+bool8 TryStartCrackedFloorHoleScript(u16 metatileBehavior)
{
- if (MetatileBehavior_IsCrackedFloorHole(a))
+ if (MetatileBehavior_IsCrackedFloorHole(metatileBehavior))
{
ScriptContext1_SetupScript(S_FallDownHole);
return TRUE;
@@ -548,11 +570,11 @@ bool8 sub_8068870(u16 a)
return FALSE;
}
-bool8 sub_8068894(void)
+bool8 TryStartStepCountScript(void)
{
IncrementRematchStepCounter();
- happiness_algorithm_step();
- if (overworld_poison_step() == TRUE)
+ UpdateHappinessStep();
+ if (UpdatePoisonStepCounter() == TRUE)
{
ScriptContext1_SetupScript(gUnknown_081A14B8);
return TRUE;
@@ -573,12 +595,12 @@ bool8 sub_8068894(void)
return FALSE;
}
-void unref_sub_80688F8(void)
+void Unref_ClearHappinessStepCounter(void)
{
VarSet(VAR_HAPPINESS_STEP_COUNTER, 0);
}
-static void happiness_algorithm_step(void)
+static void UpdateHappinessStep(void)
{
u16 *ptr = GetVarPointer(VAR_HAPPINESS_STEP_COUNTER);
int i;
@@ -587,22 +609,21 @@ static void happiness_algorithm_step(void)
(*ptr) %= 128;
if (*ptr == 0)
{
- struct Pokemon *pkmn = gPlayerParty;
-
- for (i = 0; i < 6; i++)
+ struct Pokemon *mon = gPlayerParty;
+ for (i = 0; i < PARTY_SIZE; i++)
{
- AdjustFriendship(pkmn, 5);
- pkmn++;
+ AdjustFriendship(mon, FRIENDSHIP_EVENT_WALKING);
+ mon++;
}
}
}
-void overworld_poison_timer_set(void)
+void ClearPoisonStepCounter(void)
{
VarSet(VAR_POISON_STEP_COUNTER, 0);
}
-static bool8 overworld_poison_step(void)
+static bool8 UpdatePoisonStepCounter(void)
{
u16 *ptr;
@@ -627,75 +648,75 @@ static bool8 overworld_poison_step(void)
return FALSE;
}
-void prev_quest_postbuffer_cursor_backup_reset(void)
+void RestartWildEncounterImmunitySteps(void)
{
- gUnknown_0202E8C0 = 0;
+ // Starts at 0 and counts up to 4 steps.
+ sWildEncounterImmunitySteps = 0;
}
-static bool8 is_it_battle_time_3(u16 a)
+static bool8 CheckStandardWildEncounter(u16 metatileBehavior)
{
- if (gUnknown_0202E8C0 < 4)
+ if (sWildEncounterImmunitySteps < 4)
{
- gUnknown_0202E8C0++;
- gUnknown_0202E8C2 = a;
+ sWildEncounterImmunitySteps++;
+ sPreviousPlayerMetatileBehavior = metatileBehavior;
return FALSE;
}
- if (StandardWildEncounter(a, gUnknown_0202E8C2) == TRUE)
+
+ if (StandardWildEncounter(metatileBehavior, sPreviousPlayerMetatileBehavior) == TRUE)
{
- gUnknown_0202E8C0 = 0;
- gUnknown_0202E8C2 = a;
+ sWildEncounterImmunitySteps = 0;
+ sPreviousPlayerMetatileBehavior = metatileBehavior;
return TRUE;
}
- else
- {
- gUnknown_0202E8C2 = a;
- return FALSE;
- }
+
+ sPreviousPlayerMetatileBehavior = metatileBehavior;
+ return FALSE;
}
-static bool8 mapheader_run_first_tag2_script_list_match_conditionally(struct MapPosition *position, u16 b, u8 c)
+static bool8 mapheader_run_first_tag2_script_list_match_conditionally(struct MapPosition *position, u16 metatileBehavior, u8 direction)
{
- s8 r6 = map_warp_check_packed(&gMapHeader, position);
+ s8 warpEventId = FindWarpEventByPosition(&gMapHeader, position);
- if (is_non_stair_warp_tile(b, c) == TRUE && r6 != -1)
+ if (IsArrowWarpMetatileBehavior(metatileBehavior, direction) == TRUE && warpEventId != -1)
{
- walkrun_find_lowest_active_bit_in_bitfield();
- sub_8068C30(&gMapHeader, r6, position);
+ StoreInitialPlayerAvatarState();
+ sub_8068C30(&gMapHeader, warpEventId, position);
sub_8080E88();
return TRUE;
}
return FALSE;
}
-bool8 sub_8068A64(struct MapPosition *position, u16 b)
+bool8 TryStartWarpEventScript(struct MapPosition *position, u16 metatileBehavior)
{
- s8 r4 = map_warp_check_packed(&gMapHeader, position);
+ s8 warpEventId = FindWarpEventByPosition(&gMapHeader, position);
- if (r4 != -1 && sub_8068B30(b) == TRUE)
+ if (warpEventId != -1 && IsWarpMetatileBehavior(metatileBehavior) == TRUE)
{
- walkrun_find_lowest_active_bit_in_bitfield();
- sub_8068C30(&gMapHeader, r4, position);
- if (MetatileBehavior_IsEscalator(b) == TRUE)
+ StoreInitialPlayerAvatarState();
+ sub_8068C30(&gMapHeader, warpEventId, position);
+ if (MetatileBehavior_IsEscalator(metatileBehavior) == TRUE)
{
- sub_8080F2C(b);
+ sub_8080F2C(metatileBehavior);
return TRUE;
}
- if (MetatileBehavior_IsLavaridgeB1FWarp(b) == TRUE)
+ if (MetatileBehavior_IsLavaridgeB1FWarp(metatileBehavior) == TRUE)
{
sub_8080F48();
return TRUE;
}
- if (MetatileBehavior_IsLavaridge1FWarp(b) == TRUE)
+ if (MetatileBehavior_IsLavaridge1FWarp(metatileBehavior) == TRUE)
{
sub_8080F58();
return TRUE;
}
- if (MetatileBehavior_IsAquaHideoutWarp(b) == TRUE)
+ if (MetatileBehavior_IsAquaHideoutWarp(metatileBehavior) == TRUE)
{
sub_8080F68();
return TRUE;
}
- if (MetatileBehavior_IsMtPyreHole(b) == TRUE)
+ if (MetatileBehavior_IsMtPyreHole(metatileBehavior) == TRUE)
{
ScriptContext1_SetupScript(gUnknown_081C6BDE);
return TRUE;
@@ -706,44 +727,44 @@ bool8 sub_8068A64(struct MapPosition *position, u16 b)
return FALSE;
}
-static bool8 sub_8068B30(u16 a)
+static bool8 IsWarpMetatileBehavior(u16 metatileBehavior)
{
- if (MetatileBehavior_IsWarpDoor(a) != TRUE
- && MetatileBehavior_IsLadder(a) != TRUE
- && MetatileBehavior_IsEscalator(a) != TRUE
- && MetatileBehavior_IsNonAnimDoor(a) != TRUE
- && MetatileBehavior_IsLavaridgeB1FWarp(a) != TRUE
- && MetatileBehavior_IsLavaridge1FWarp(a) != TRUE
- && MetatileBehavior_IsAquaHideoutWarp(a) != TRUE
- && MetatileBehavior_IsMtPyreHole(a) != TRUE)
+ if (MetatileBehavior_IsWarpDoor(metatileBehavior) != TRUE
+ && MetatileBehavior_IsLadder(metatileBehavior) != TRUE
+ && MetatileBehavior_IsEscalator(metatileBehavior) != TRUE
+ && MetatileBehavior_IsNonAnimDoor(metatileBehavior) != TRUE
+ && MetatileBehavior_IsLavaridgeB1FWarp(metatileBehavior) != TRUE
+ && MetatileBehavior_IsLavaridge1FWarp(metatileBehavior) != TRUE
+ && MetatileBehavior_IsAquaHideoutWarp(metatileBehavior) != TRUE
+ && MetatileBehavior_IsMtPyreHole(metatileBehavior) != TRUE)
return FALSE;
return TRUE;
}
-static bool8 is_non_stair_warp_tile(u16 a, u8 b)
+static bool8 IsArrowWarpMetatileBehavior(u16 metatileBehavior, u8 direction)
{
- switch (b)
+ switch (direction)
{
- case 2:
- return MetatileBehavior_IsNorthArrowWarp(a);
- case 1:
- return MetatileBehavior_IsSouthArrowWarp(a);
- case 3:
- return MetatileBehavior_IsWestArrowWarp(a);
- case 4:
- return MetatileBehavior_IsEastArrowWarp(a);
+ case DIR_NORTH:
+ return MetatileBehavior_IsNorthArrowWarp(metatileBehavior);
+ case DIR_SOUTH:
+ return MetatileBehavior_IsSouthArrowWarp(metatileBehavior);
+ case DIR_WEST:
+ return MetatileBehavior_IsWestArrowWarp(metatileBehavior);
+ case DIR_EAST:
+ return MetatileBehavior_IsEastArrowWarp(metatileBehavior);
}
return FALSE;
}
-static s8 map_warp_check_packed(struct MapHeader *mapHeader, struct MapPosition *position)
+static s8 FindWarpEventByPosition(struct MapHeader *mapHeader, struct MapPosition *position)
{
- return map_warp_check(mapHeader, position->x - 7, position->y - 7, position->height);
+ return FindWarpEventByCoordsAndId(mapHeader, position->x - 7, position->y - 7, position->height);
}
-static void sub_8068C30(struct MapHeader *unused, s8 b, struct MapPosition *position)
+static void sub_8068C30(struct MapHeader *unused, s8 warpEventId, struct MapPosition *position)
{
- struct WarpEvent *warpEvent = &gMapHeader.events->warps[b];
+ struct WarpEvent *warpEvent = &gMapHeader.events->warps[warpEventId];
if (warpEvent->mapNum == 0x7F)
{
@@ -757,28 +778,28 @@ static void sub_8068C30(struct MapHeader *unused, s8 b, struct MapPosition *posi
sub_80535C4(position->x, position->y);
mapHeader = Overworld_GetMapHeaderByGroupAndId(warpEvent->unk7, warpEvent->mapNum);
if (mapHeader->events->warps[warpEvent->mapGroup].mapNum == 0x7F)
- saved_warp2_set(mapHeader->events->warps[b].mapGroup, gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum, b);
+ saved_warp2_set(mapHeader->events->warps[warpEventId].mapGroup, gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum, warpEventId);
}
}
-static bool8 map_warp_consider_2_to_inside(struct MapPosition *position, u16 b, u8 c)
+static bool8 map_warp_consider_2_to_inside(struct MapPosition *position, u16 metatileBehavior, u8 direction)
{
- s8 r4;
+ s8 warpEventId;
- if (c == 2)
+ if (direction == DIR_NORTH)
{
- if (sub_80571C0(b) == TRUE)
+ if (MetatileBehavior_IsOpenSecretBaseDoor(metatileBehavior) == TRUE)
{
sub_80BC038(position, gMapHeader.events);
return TRUE;
}
- if (MetatileBehavior_IsWarpDoor(b) == TRUE)
+ if (MetatileBehavior_IsWarpDoor(metatileBehavior) == TRUE)
{
- r4 = map_warp_check_packed(&gMapHeader, position);
- if (r4 != -1 && sub_8068B30(b) == TRUE)
+ warpEventId = FindWarpEventByPosition(&gMapHeader, position);
+ if (warpEventId != -1 && IsWarpMetatileBehavior(metatileBehavior) == TRUE)
{
- walkrun_find_lowest_active_bit_in_bitfield();
- sub_8068C30(&gMapHeader, r4, position);
+ StoreInitialPlayerAvatarState();
+ sub_8068C30(&gMapHeader, warpEventId, position);
sub_8080EF0();
return TRUE;
}
@@ -787,7 +808,7 @@ static bool8 map_warp_consider_2_to_inside(struct MapPosition *position, u16 b,
return FALSE;
}
-static s8 map_warp_check(struct MapHeader *mapHeader, u16 x, u16 y, u8 warpId)
+static s8 FindWarpEventByCoordsAndId(struct MapHeader *mapHeader, u16 x, u16 y, u8 warpId)
{
s32 i;
struct WarpEvent *warpEvent = mapHeader->events->warps;
@@ -804,7 +825,7 @@ static s8 map_warp_check(struct MapHeader *mapHeader, u16 x, u16 y, u8 warpId)
return -1;
}
-static u8 *trigger_activate(struct CoordEvent *coordEvent)
+static u8 *TryRunCoordEventScript(struct CoordEvent *coordEvent)
{
if (coordEvent != NULL)
{
@@ -824,7 +845,7 @@ static u8 *trigger_activate(struct CoordEvent *coordEvent)
return NULL;
}
-static u8 *mapheader_trigger_activate_at(struct MapHeader *mapHeader, u16 x, u16 y, u8 elevation)
+static u8 *GetCoordEventScriptAtPosition(struct MapHeader *mapHeader, u16 x, u16 y, u8 elevation)
{
s32 i;
struct CoordEvent *coordEvents = mapHeader->events->coordEvents;
@@ -836,7 +857,7 @@ static u8 *mapheader_trigger_activate_at(struct MapHeader *mapHeader, u16 x, u16
{
if (coordEvents[i].elevation == elevation || coordEvents[i].elevation == 0)
{
- u8 *script = trigger_activate(&coordEvents[i]);
+ u8 *script = TryRunCoordEventScript(&coordEvents[i]);
if (script != NULL)
return script;
}
@@ -845,12 +866,12 @@ static u8 *mapheader_trigger_activate_at(struct MapHeader *mapHeader, u16 x, u16
return NULL;
}
-u8 *sub_8068E24(struct MapPosition *position)
+u8 *GetCoordEventScriptAtMapPosition(struct MapPosition *position)
{
- return mapheader_trigger_activate_at(&gMapHeader, position->x - 7, position->y - 7, position->height);
+ return GetCoordEventScriptAtPosition(&gMapHeader, position->x - 7, position->y - 7, position->height);
}
-static struct BgEvent *FindInvisibleMapObjectByPosition(struct MapHeader *mapHeader, u16 b, u16 c, u8 d)
+static struct BgEvent *FindBackgroundEventByPosition(struct MapHeader *mapHeader, u16 x, u16 y, u8 elevation)
{
u8 i;
struct BgEvent *bgEvents = mapHeader->events->bgEvents;
@@ -858,32 +879,32 @@ static struct BgEvent *FindInvisibleMapObjectByPosition(struct MapHeader *mapHea
for (i = 0; i < bgEventCount; i++)
{
- if ((u16)bgEvents[i].x == b && (u16)bgEvents[i].y == c)
+ if ((u16)bgEvents[i].x == x && (u16)bgEvents[i].y == y)
{
- if (bgEvents[i].unk4 == d || bgEvents[i].unk4 == 0)
+ if (bgEvents[i].elevation == elevation || bgEvents[i].elevation == 0)
return &bgEvents[i];
}
}
return NULL;
}
-bool8 dive_warp(struct MapPosition *position, u16 b)
+bool8 dive_warp(struct MapPosition *position, u16 metatileBehavior)
{
- if (gMapHeader.mapType == MAP_TYPE_UNDERWATER && sub_805750C(b) == 0)
+ if (gMapHeader.mapType == MAP_TYPE_UNDERWATER && !MetatileBehavior_IsNotSurfacable(metatileBehavior))
{
- if (sub_80538B0(position->x - 7, position->y - 7))
+ if (SetDiveWarpEmerge(position->x - 7, position->y - 7))
{
- walkrun_find_lowest_active_bit_in_bitfield();
+ StoreInitialPlayerAvatarState();
sp13E_warp_to_last_warp();
PlaySE(SE_W291);
return TRUE;
}
}
- else if (sub_80574EC(b) == TRUE)
+ else if (MetatileBehavior_IsDiveable(metatileBehavior) == TRUE)
{
- if (sub_80538D0(position->x - 7, position->y - 7))
+ if (SetDiveWarpDive(position->x - 7, position->y - 7))
{
- walkrun_find_lowest_active_bit_in_bitfield();
+ StoreInitialPlayerAvatarState();
sp13E_warp_to_last_warp();
PlaySE(SE_W291);
return TRUE;
@@ -892,43 +913,43 @@ bool8 dive_warp(struct MapPosition *position, u16 b)
return FALSE;
}
-u8 sub_8068F18(void)
+u8 TrySetDiveWarp(void)
{
s16 x, y;
- u8 r5;
+ u8 metatileBehavior;
PlayerGetDestCoords(&x, &y);
- r5 = MapGridGetMetatileBehaviorAt(x, y);
- if (gMapHeader.mapType == MAP_TYPE_UNDERWATER && sub_805750C(r5) == 0)
+ metatileBehavior = MapGridGetMetatileBehaviorAt(x, y);
+ if (gMapHeader.mapType == MAP_TYPE_UNDERWATER && !MetatileBehavior_IsNotSurfacable(metatileBehavior))
{
- if (sub_80538B0(x - 7, y - 7) == TRUE)
+ if (SetDiveWarpEmerge(x - 7, y - 7) == TRUE)
return 1;
}
- else if (sub_80574EC(r5) == TRUE)
+ else if (MetatileBehavior_IsDiveable(metatileBehavior) == TRUE)
{
- if (sub_80538D0(x - 7, y - 7) == TRUE)
+ if (SetDiveWarpDive(x - 7, y - 7) == TRUE)
return 2;
}
return 0;
}
-u8 *GetFieldObjectScriptPointerPlayerFacing(void)
+u8 *GetEventObjectScriptPointerPlayerFacing(void)
{
- u8 r4;
+ u8 direction;
struct MapPosition position;
- r4 = player_get_direction_upper_nybble();
- player_get_next_pos_and_height(&position);
- return sub_8068364(&position, MapGridGetMetatileBehaviorAt(position.x, position.y), r4);
+ direction = GetPlayerMovementDirection();
+ GetInFrontOfPlayerPosition(&position);
+ return GetInteractedEventObjectScript(&position, MapGridGetMetatileBehaviorAt(position.x, position.y), direction);
}
int SetCableClubWarp(void)
{
struct MapPosition position;
- player_get_direction_upper_nybble(); //unnecessary
- player_get_pos_to_and_height(&position);
+ GetPlayerMovementDirection(); //unnecessary
+ GetPlayerPosition(&position);
MapGridGetMetatileBehaviorAt(position.x, position.y); //unnecessary
- sub_8068C30(&gMapHeader, map_warp_check_packed(&gMapHeader, &position), &position);
+ sub_8068C30(&gMapHeader, FindWarpEventByPosition(&gMapHeader, &position), &position);
return 0;
}
diff --git a/src/field_effect.c b/src/field_effect.c
index f85bc520e..90c11b8c3 100644
--- a/src/field_effect.c
+++ b/src/field_effect.c
@@ -3,6 +3,7 @@
#include "script.h"
#include "trig.h"
#include "main.h"
+#include "field_effect_helpers.h"
#include "field_weather.h"
#include "decompress.h"
#include "sprite.h"
@@ -12,18 +13,19 @@
#include "overworld.h"
#include "task.h"
#include "sound.h"
-#include "constants/songs.h"
#include "decoration.h"
#include "field_player_avatar.h"
#include "event_object_movement.h"
#include "metatile_behavior.h"
#include "field_camera.h"
+#include "field_control_avatar.h"
#include "field_effect.h"
#include "field_fadetransition.h"
#include "fieldmap.h"
#include "util.h"
-#include "field_effect_helpers.h"
#include "pokemon_storage_system.h"
+#include "constants/field_effects.h"
+#include "constants/songs.h"
#define subsprite_table(ptr) {.subsprites = ptr, .subspriteCount = (sizeof ptr) / (sizeof(struct Subsprite))}
@@ -266,7 +268,7 @@ bool8 (*const gUnknown_0839F300[])(struct Task *) = {
sub_8086ED4
};
-bool8 (*const gUnknown_0839F31C[])(struct Task *, struct MapObject *) = {
+bool8 (*const gUnknown_0839F31C[])(struct Task *, struct EventObject *) = {
sub_8086FB0,
waterfall_1_do_anim_probably,
waterfall_2_wait_anim_finish_probably,
@@ -280,7 +282,7 @@ bool8 (*const gUnknown_0839F330[])(struct Task *) = {
dive_3_unknown
};
-bool8 (*const gUnknown_0839F33C[])(struct Task *, struct MapObject *, struct Sprite *) = {
+bool8 (*const gUnknown_0839F33C[])(struct Task *, struct EventObject *, struct Sprite *) = {
sub_808722C,
sub_8087264,
sub_8087298,
@@ -289,14 +291,14 @@ bool8 (*const gUnknown_0839F33C[])(struct Task *, struct MapObject *, struct Spr
sub_80873F4
};
-bool8 (*const gUnknown_0839F354[])(struct Task *, struct MapObject *, struct Sprite *) = {
+bool8 (*const gUnknown_0839F354[])(struct Task *, struct EventObject *, struct Sprite *) = {
sub_80874CC,
sub_80874FC,
sub_8087548,
sub_808759C
};
-bool8 (*const gUnknown_0839F364[])(struct Task *, struct MapObject *, struct Sprite *) = {
+bool8 (*const gUnknown_0839F364[])(struct Task *, struct EventObject *, struct Sprite *) = {
sub_80876C8,
sub_80876F8,
sub_8087774,
@@ -304,9 +306,11 @@ bool8 (*const gUnknown_0839F364[])(struct Task *, struct MapObject *, struct Spr
sub_80877D4
};
-void (*const gUnknown_0839F378[])(struct Task *) = {
- sub_80878F4,
- sub_8087914
+static void EscapeRopeFieldEffect_Step0(struct Task *);
+static void EscapeRopeFieldEffect_Step1(struct Task *);
+void (*const gEscapeRopeFieldEffectFuncs[])(struct Task *) = {
+ EscapeRopeFieldEffect_Step0,
+ EscapeRopeFieldEffect_Step1
};
static u8 sActiveList[32];
@@ -601,7 +605,7 @@ void MultiplyPaletteRGBComponents(u16 i, u8 r, u8 g, u8 b)
gPlttBufferFaded[i] = RGB(curRed, curGreen, curBlue);
}
#else
-__attribute__((naked))
+NAKED
void MultiplyInvertedPaletteRGBComponents(u16 i, u8 r, u8 g, u8 b)
{
asm(".syntax unified\n"
@@ -676,7 +680,7 @@ void MultiplyInvertedPaletteRGBComponents(u16 i, u8 r, u8 g, u8 b)
".syntax divided");
}
-__attribute__((naked))
+NAKED
void MultiplyPaletteRGBComponents(u16 i, u8 r, u8 g, u8 b)
{
asm(".syntax unified\n"
@@ -916,7 +920,7 @@ void PokeballGlowEffect_1(struct Sprite *sprite)
sprite->data[3] = 0;
if (sprite->data[5])
{
- PlayFanfare(BGM_ME_ASA);
+ PlayFanfare(MUS_ME_ASA);
}
}
}
@@ -1080,7 +1084,7 @@ void mapldr_080842E8(void)
pal_fill_black();
CreateTask(task00_8084310, 0);
ScriptContext2_Enable();
- FreezeMapObjects();
+ FreezeEventObjects();
gFieldCallback = NULL;
}
@@ -1105,7 +1109,7 @@ void task00_8084310(u8 taskId)
if (!FieldEffectActiveListContains(FLDEFF_USE_FLY))
{
Overworld_ResetStateAfterFly();
- warp_in();
+ WarpIntoMap();
SetMainCallback2(CB2_LoadMap);
gFieldCallback = mapldr_08084390;
DestroyTask(taskId);
@@ -1117,13 +1121,13 @@ void mapldr_08084390(void)
Overworld_PlaySpecialMapMusic();
pal_fill_black();
CreateTask(c3_080843F8, 0);
- gMapObjects[gPlayerAvatar.mapObjectId].mapobj_bit_13 = 1;
+ gEventObjects[gPlayerAvatar.eventObjectId].invisible = 1;
if (gPlayerAvatar.flags & 0x08)
{
- FieldObjectTurn(&gMapObjects[gPlayerAvatar.mapObjectId], DIR_WEST);
+ EventObjectTurn(&gEventObjects[gPlayerAvatar.eventObjectId], DIR_WEST);
}
ScriptContext2_Enable();
- FreezeMapObjects();
+ FreezeEventObjects();
gFieldCallback = NULL;
}
@@ -1143,12 +1147,11 @@ void c3_080843F8(u8 taskId)
if (!FieldEffectActiveListContains(FLDEFF_FLY_IN))
{
ScriptContext2_Disable();
- UnfreezeMapObjects();
+ UnfreezeEventObjects();
DestroyTask(taskId);
}
}
-extern void pal_fill_for_map_transition(void);
void sub_8086774(u8);
extern void CameraObjectReset2(void);
extern void CameraObjectReset1(void);
@@ -1158,7 +1161,7 @@ void sub_8086748(void)
Overworld_PlaySpecialMapMusic();
pal_fill_for_map_transition();
ScriptContext2_Enable();
- FreezeMapObjects();
+ FreezeEventObjects();
CreateTask(sub_8086774, 0);
gFieldCallback = NULL;
}
@@ -1172,16 +1175,16 @@ void sub_8086774(u8 taskId)
bool8 sub_80867AC(struct Task *task) // gUnknown_0839F2CC[0]
{
- struct MapObject *playerObject;
+ struct EventObject *playerObject;
struct Sprite *playerSprite;
- playerObject = &gMapObjects[gPlayerAvatar.mapObjectId];
+ playerObject = &gEventObjects[gPlayerAvatar.eventObjectId];
playerSprite = &gSprites[gPlayerAvatar.spriteId];
CameraObjectReset2();
- gMapObjects[gPlayerAvatar.mapObjectId].mapobj_bit_13 = 1;
+ gEventObjects[gPlayerAvatar.eventObjectId].invisible = 1;
gPlayerAvatar.preventStep = TRUE;
- FieldObjectSetSpecialAnim(playerObject, GetFaceDirectionAnimId(player_get_direction_lower_nybble()));
+ EventObjectSetHeldMovement(playerObject, GetFaceDirectionMovementAction(GetPlayerFacingDirection()));
task->data[4] = playerSprite->subspriteMode;
- playerObject->mapobj_bit_26 = 1;
+ playerObject->fixedPriority = 1;
playerSprite->oam.priority = 1;
playerSprite->subspriteMode = 2;
task->data[0]++;
@@ -1206,7 +1209,7 @@ bool8 sub_8086870(struct Task *task) // gUnknown_0839F2CC[2]
sprite->pos2.y = -(sprite->pos1.y + sprite->centerToCornerVecY + gSpriteCoordOffsetY + centerToCornerVecY);
task->data[1] = 1;
task->data[2] = 0;
- gMapObjects[gPlayerAvatar.mapObjectId].mapobj_bit_13 = 0;
+ gEventObjects[gPlayerAvatar.eventObjectId].invisible = 0;
PlaySE(SE_RU_HYUU);
task->data[0]++;
return FALSE;
@@ -1214,10 +1217,10 @@ bool8 sub_8086870(struct Task *task) // gUnknown_0839F2CC[2]
bool8 sub_80868E4(struct Task *task)
{
- struct MapObject *mapObject;
+ struct EventObject *eventObject;
struct Sprite *sprite;
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
+ eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
sprite = &gSprites[gPlayerAvatar.spriteId];
sprite->pos2.y += task->data[1];
if (task->data[1] < 8)
@@ -1231,15 +1234,15 @@ bool8 sub_80868E4(struct Task *task)
if (task->data[3] == 0 && sprite->pos2.y >= -16)
{
task->data[3]++;
- mapObject->mapobj_bit_26 = 0;
+ eventObject->fixedPriority = 0;
sprite->subspriteMode = task->data[4];
- mapObject->mapobj_bit_2 = 1;
+ eventObject->triggerGroundEffectsOnMove = 1;
}
if (sprite->pos2.y >= 0)
{
PlaySE(SE_W070);
- mapObject->mapobj_bit_3 = 1;
- mapObject->mapobj_bit_5 = 1;
+ eventObject->triggerGroundEffectsOnStop = 1;
+ eventObject->landingJump = 1;
sprite->pos2.y = 0;
task->data[0]++;
}
@@ -1276,7 +1279,7 @@ bool8 sub_80869F8(struct Task *task)
gPlayerAvatar.preventStep = FALSE;
ScriptContext2_Disable();
CameraObjectReset1();
- UnfreezeMapObjects();
+ UnfreezeEventObjects();
InstallCameraPanAheadCallback();
DestroyTask(FindTaskIdByFunc(sub_8086774));
return FALSE;
@@ -1284,14 +1287,13 @@ bool8 sub_80869F8(struct Task *task)
void sub_8086A68(u8);
extern void sub_80B4824(u8);
-extern void sub_8053FF8(void);
-extern void fade_8080918(void);
+extern void TryFadeOutOldMapMusic(void);
void sub_8086B98(struct Task *);
void sub_8086BE4(struct Task *);
void sub_8086C30(void);
void sub_8086C40(void);
-bool8 sub_8054034(void);
+bool8 BGMusicStopped(void);
void sub_8086C94(void);
void sub_80B483C(void);
void sub_8086CBC(u8);
@@ -1316,7 +1318,7 @@ void sub_8086A68(u8 taskId)
bool8 sub_8086AA0(struct Task *task)
{
- FreezeMapObjects();
+ FreezeEventObjects();
CameraObjectReset2();
sub_80B4824(task->data[1]);
task->data[0]++;
@@ -1325,11 +1327,11 @@ bool8 sub_8086AA0(struct Task *task)
bool8 sub_8086AC0(struct Task *task)
{
- struct MapObject *mapObject;
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
- if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(mapObject) || FieldObjectClearAnimIfSpecialAnimFinished(mapObject))
+ struct EventObject *eventObject;
+ eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
+ if (!EventObjectIsMovementOverridden(eventObject) || EventObjectClearHeldMovementIfFinished(eventObject))
{
- FieldObjectSetSpecialAnim(mapObject, GetFaceDirectionAnimId(player_get_direction_lower_nybble()));
+ EventObjectSetHeldMovement(eventObject, GetFaceDirectionMovementAction(GetPlayerFacingDirection()));
task->data[0]++;
task->data[2] = 0;
task->data[3] = 0;
@@ -1406,16 +1408,16 @@ void sub_8086BE4(struct Task *task)
void sub_8086C30(void)
{
- sub_8053FF8();
- fade_8080918();
+ TryFadeOutOldMapMusic();
+ WarpFadeScreen();
}
void sub_8086C40(void)
{
- if (!gPaletteFade.active && sub_8054034() == TRUE)
+ if (!gPaletteFade.active && BGMusicStopped() == TRUE)
{
sub_80B483C();
- warp_in();
+ WarpIntoMap();
gFieldCallback = sub_8086C94;
SetMainCallback2(CB2_LoadMap);
DestroyTask(FindTaskIdByFunc(sub_8086A68));
@@ -1440,13 +1442,13 @@ void sub_8086CBC(u8 taskId)
bool8 sub_8086CF4(struct Task *task)
{
- struct MapObject *mapObject;
+ struct EventObject *eventObject;
s16 x;
s16 y;
u8 behavior;
CameraObjectReset2();
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
- FieldObjectSetSpecialAnim(mapObject, GetFaceDirectionAnimId(DIR_EAST));
+ eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
+ EventObjectSetHeldMovement(eventObject, GetFaceDirectionMovementAction(DIR_EAST));
PlayerGetDestCoords(&x, &y);
behavior = MapGridGetMetatileBehaviorAt(x, y);
task->data[0]++;
@@ -1538,13 +1540,13 @@ bool8 sub_8086EB0(struct Task *task)
bool8 sub_8086ED4(struct Task *task)
{
- struct MapObject *mapObject;
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
- if (FieldObjectClearAnimIfSpecialAnimFinished(mapObject))
+ struct EventObject *eventObject;
+ eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
+ if (EventObjectClearHeldMovementIfFinished(eventObject))
{
CameraObjectReset1();
ScriptContext2_Disable();
- FieldObjectSetSpecialAnim(mapObject, GetGoSpeed0AnimId(DIR_EAST));
+ EventObjectSetHeldMovement(eventObject, GetWalkNormalMovementAction(DIR_EAST));
DestroyTask(FindTaskIdByFunc(sub_8086CBC));
}
return FALSE;
@@ -1563,10 +1565,10 @@ bool8 FldEff_UseWaterfall(void)
void sub_8086F64(u8 taskId)
{
- while (gUnknown_0839F31C[gTasks[taskId].data[0]](&gTasks[taskId], &gMapObjects[gPlayerAvatar.mapObjectId]));
+ while (gUnknown_0839F31C[gTasks[taskId].data[0]](&gTasks[taskId], &gEventObjects[gPlayerAvatar.eventObjectId]));
}
-bool8 sub_8086FB0(struct Task *task, struct MapObject *mapObject)
+bool8 sub_8086FB0(struct Task *task, struct EventObject *eventObject)
{
ScriptContext2_Enable();
gPlayerAvatar.preventStep = TRUE;
@@ -1574,12 +1576,12 @@ bool8 sub_8086FB0(struct Task *task, struct MapObject *mapObject)
return FALSE;
}
-bool8 waterfall_1_do_anim_probably(struct Task *task, struct MapObject *mapObject)
+bool8 waterfall_1_do_anim_probably(struct Task *task, struct EventObject *eventObject)
{
ScriptContext2_Enable();
- if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(mapObject))
+ if (!EventObjectIsMovementOverridden(eventObject))
{
- FieldObjectClearAnimIfSpecialAnimFinished(mapObject);
+ EventObjectClearHeldMovementIfFinished(eventObject);
gFieldEffectArguments[0] = task->data[1];
FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT);
task->data[0]++;
@@ -1587,7 +1589,7 @@ bool8 waterfall_1_do_anim_probably(struct Task *task, struct MapObject *mapObjec
return FALSE;
}
-bool8 waterfall_2_wait_anim_finish_probably(struct Task *task, struct MapObject *mapObject)
+bool8 waterfall_2_wait_anim_finish_probably(struct Task *task, struct EventObject *eventObject)
{
if (FieldEffectActiveListContains(FLDEFF_FIELD_MOVE_SHOW_MON))
{
@@ -1597,20 +1599,20 @@ bool8 waterfall_2_wait_anim_finish_probably(struct Task *task, struct MapObject
return TRUE;
}
-bool8 sub_8087030(struct Task *task, struct MapObject *mapObject)
+bool8 sub_8087030(struct Task *task, struct EventObject *eventObject)
{
- FieldObjectSetSpecialAnim(mapObject, GetSimpleGoAnimId(DIR_NORTH));
+ EventObjectSetHeldMovement(eventObject, GetWalkSlowMovementAction(DIR_NORTH));
task->data[0]++;
return FALSE;
}
-bool8 sub_8087058(struct Task *task, struct MapObject *mapObject)
+bool8 sub_8087058(struct Task *task, struct EventObject *eventObject)
{
- if (!FieldObjectClearAnimIfSpecialAnimFinished(mapObject))
+ if (!EventObjectClearHeldMovementIfFinished(eventObject))
{
return FALSE;
}
- if (MetatileBehavior_IsWaterfall(mapObject->mapobj_unk_1E))
+ if (MetatileBehavior_IsWaterfall(eventObject->currentMetatileBehavior))
{
task->data[0] = 3;
return TRUE;
@@ -1622,8 +1624,7 @@ bool8 sub_8087058(struct Task *task, struct MapObject *mapObject)
return FALSE;
}
-void Task_Dive(u8);
-extern int dive_warp(struct MapPosition *, u16);
+static void Task_Dive(u8);
bool8 FldEff_UseDive(void)
{
@@ -1662,7 +1663,7 @@ bool8 dive_3_unknown(struct Task *task)
PlayerGetDestCoords(&mapPosition.x, &mapPosition.y);
if (!FieldEffectActiveListContains(FLDEFF_FIELD_MOVE_SHOW_MON))
{
- dive_warp(&mapPosition, gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_1E);
+ dive_warp(&mapPosition, gEventObjects[gPlayerAvatar.eventObjectId].currentMetatileBehavior);
DestroyTask(FindTaskIdByFunc(Task_Dive));
FieldEffectActiveListRemove(FLDEFF_USE_DIVE);
}
@@ -1679,22 +1680,22 @@ void sub_80871B8(u8 priority)
void sub_80871D0(u8 taskId)
{
- while (gUnknown_0839F33C[gTasks[taskId].data[0]](&gTasks[taskId], &gMapObjects[gPlayerAvatar.mapObjectId], &gSprites[gPlayerAvatar.spriteId]));
+ while (gUnknown_0839F33C[gTasks[taskId].data[0]](&gTasks[taskId], &gEventObjects[gPlayerAvatar.eventObjectId], &gSprites[gPlayerAvatar.spriteId]));
}
-bool8 sub_808722C(struct Task *task, struct MapObject *mapObject, struct Sprite *sprite)
+bool8 sub_808722C(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
{
- FreezeMapObjects();
+ FreezeEventObjects();
CameraObjectReset2();
SetCameraPanningCallback(NULL);
gPlayerAvatar.preventStep = TRUE;
- mapObject->mapobj_bit_26 = 1;
+ eventObject->fixedPriority = 1;
task->data[1] = 1;
task->data[0]++;
return TRUE;
}
-bool8 sub_8087264(struct Task *task, struct MapObject *mapObject, struct Sprite *sprite)
+bool8 sub_8087264(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
{
SetCameraPanning(0, task->data[1]);
task->data[1] = -task->data[1];
@@ -1707,12 +1708,12 @@ bool8 sub_8087264(struct Task *task, struct MapObject *mapObject, struct Sprite
return FALSE;
}
-bool8 sub_8087298(struct Task *task, struct MapObject *mapObject, struct Sprite *sprite)
+bool8 sub_8087298(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
{
sprite->pos2.y = 0;
task->data[3] = 1;
- gFieldEffectArguments[0] = mapObject->coords2.x;
- gFieldEffectArguments[1] = mapObject->coords2.y;
+ gFieldEffectArguments[0] = eventObject->currentCoords.x;
+ gFieldEffectArguments[1] = eventObject->currentCoords.y;
gFieldEffectArguments[2] = sprite->subpriority - 1;
gFieldEffectArguments[3] = sprite->oam.priority;
FieldEffectStart(FLDEFF_LAVARIDGE_GYM_WARP);
@@ -1721,7 +1722,7 @@ bool8 sub_8087298(struct Task *task, struct MapObject *mapObject, struct Sprite
return TRUE;
}
-bool8 sub_80872E4(struct Task *task, struct MapObject *mapObject, struct Sprite *sprite)
+bool8 sub_80872E4(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
{
s16 centerToCornerVecY;
SetCameraPanning(0, task->data[1]);
@@ -1753,7 +1754,7 @@ bool8 sub_80872E4(struct Task *task, struct MapObject *mapObject, struct Sprite
if (task->data[5] == 0 && sprite->pos2.y < -0x10)
{
task->data[5]++;
- mapObject->mapobj_bit_26 = 1;
+ eventObject->fixedPriority = 1;
sprite->oam.priority = 1;
sprite->subspriteMode = 2;
}
@@ -1764,19 +1765,19 @@ bool8 sub_80872E4(struct Task *task, struct MapObject *mapObject, struct Sprite
return FALSE;
}
-bool8 sub_80873D8(struct Task *task, struct MapObject *mapObject, struct Sprite *sprite)
+bool8 sub_80873D8(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_8053FF8();
- fade_8080918();
+ TryFadeOutOldMapMusic();
+ WarpFadeScreen();
task->data[0]++;
return FALSE;
}
-bool8 sub_80873F4(struct Task *task, struct MapObject *mapObject, struct Sprite *sprite)
+bool8 sub_80873F4(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
{
- if (!gPaletteFade.active && sub_8054034() == TRUE)
+ if (!gPaletteFade.active && BGMusicStopped() == TRUE)
{
- warp_in();
+ WarpIntoMap();
gFieldCallback = mapldr_080851BC;
SetMainCallback2(CB2_LoadMap);
DestroyTask(FindTaskIdByFunc(sub_80871D0));
@@ -1797,25 +1798,25 @@ void mapldr_080851BC(void)
void sub_8087470(u8 taskId)
{
- while (gUnknown_0839F354[gTasks[taskId].data[0]](&gTasks[taskId], &gMapObjects[gPlayerAvatar.mapObjectId], &gSprites[gPlayerAvatar.spriteId]));
+ while (gUnknown_0839F354[gTasks[taskId].data[0]](&gTasks[taskId], &gEventObjects[gPlayerAvatar.eventObjectId], &gSprites[gPlayerAvatar.spriteId]));
}
-bool8 sub_80874CC(struct Task *task, struct MapObject *mapObject, struct Sprite *sprite)
+bool8 sub_80874CC(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
{
CameraObjectReset2();
- FreezeMapObjects();
+ FreezeEventObjects();
gPlayerAvatar.preventStep = TRUE;
- mapObject->mapobj_bit_13 = 1;
+ eventObject->invisible = 1;
task->data[0]++;
return FALSE;
}
-bool8 sub_80874FC(struct Task *task, struct MapObject *mapObject, struct Sprite *sprite)
+bool8 sub_80874FC(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
{
if (IsWeatherNotFadingIn())
{
- gFieldEffectArguments[0] = mapObject->coords2.x;
- gFieldEffectArguments[1] = mapObject->coords2.y;
+ gFieldEffectArguments[0] = eventObject->currentCoords.x;
+ gFieldEffectArguments[1] = eventObject->currentCoords.y;
gFieldEffectArguments[2] = sprite->subpriority - 1;
gFieldEffectArguments[3] = sprite->oam.priority;
task->data[1] = FieldEffectStart(FLDEFF_POP_OUT_OF_ASH);
@@ -1824,27 +1825,27 @@ bool8 sub_80874FC(struct Task *task, struct MapObject *mapObject, struct Sprite
return FALSE;
}
-bool8 sub_8087548(struct Task *task, struct MapObject *mapObject, struct Sprite *sprite)
+bool8 sub_8087548(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
{
sprite = &gSprites[task->data[1]];
if (sprite->animCmdIndex > 1)
{
task->data[0]++;
- mapObject->mapobj_bit_13 = 0;
+ eventObject->invisible = 0;
CameraObjectReset1();
PlaySE(SE_W091);
- FieldObjectSetSpecialAnim(mapObject, sub_80608A4(DIR_EAST));
+ EventObjectSetHeldMovement(eventObject, GetJumpMovementAction(DIR_EAST));
}
return FALSE;
}
-bool8 sub_808759C(struct Task *task, struct MapObject *mapObject, struct Sprite *sprite)
+bool8 sub_808759C(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
{
- if (FieldObjectClearAnimIfSpecialAnimFinished(mapObject))
+ if (EventObjectClearHeldMovementIfFinished(eventObject))
{
gPlayerAvatar.preventStep = FALSE;
ScriptContext2_Disable();
- UnfreezeMapObjects();
+ UnfreezeEventObjects();
DestroyTask(FindTaskIdByFunc(sub_8087470));
}
return FALSE;
@@ -1880,27 +1881,27 @@ void sub_8087654(u8 priority)
void sub_808766C(u8 taskId)
{
- while(gUnknown_0839F364[gTasks[taskId].data[0]](&gTasks[taskId], &gMapObjects[gPlayerAvatar.mapObjectId], &gSprites[gPlayerAvatar.spriteId]));
+ while(gUnknown_0839F364[gTasks[taskId].data[0]](&gTasks[taskId], &gEventObjects[gPlayerAvatar.eventObjectId], &gSprites[gPlayerAvatar.spriteId]));
}
-bool8 sub_80876C8(struct Task *task, struct MapObject *mapObject, struct Sprite *sprite)
+bool8 sub_80876C8(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
{
- FreezeMapObjects();
+ FreezeEventObjects();
CameraObjectReset2();
gPlayerAvatar.preventStep = TRUE;
- mapObject->mapobj_bit_26 = 1;
+ eventObject->fixedPriority = 1;
task->data[0]++;
return FALSE;
}
-bool8 sub_80876F8(struct Task *task, struct MapObject *mapObject, struct Sprite *sprite)
+bool8 sub_80876F8(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
{
- if (FieldObjectClearAnimIfSpecialAnimFinished(mapObject))
+ if (EventObjectClearHeldMovementIfFinished(eventObject))
{
if (task->data[1] > 3)
{
- gFieldEffectArguments[0] = mapObject->coords2.x;
- gFieldEffectArguments[1] = mapObject->coords2.y;
+ gFieldEffectArguments[0] = eventObject->currentCoords.x;
+ gFieldEffectArguments[1] = eventObject->currentCoords.y;
gFieldEffectArguments[2] = sprite->subpriority - 1;
gFieldEffectArguments[3] = sprite->oam.priority;
task->data[1] = FieldEffectStart(FLDEFF_POP_OUT_OF_ASH);
@@ -1908,42 +1909,42 @@ bool8 sub_80876F8(struct Task *task, struct MapObject *mapObject, struct Sprite
} else
{
task->data[1]++;
- FieldObjectSetSpecialAnim(mapObject, GetStepInPlaceDelay4AnimId(mapObject->mapobj_unk_18));
+ EventObjectSetHeldMovement(eventObject, GetWalkInPlaceFastestMovementAction(eventObject->facingDirection));
PlaySE(SE_FU_ZUZUZU);
}
}
return FALSE;
}
-bool8 sub_8087774(struct Task *task, struct MapObject *mapObject, struct Sprite *sprite)
+bool8 sub_8087774(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
{
if (gSprites[task->data[1]].animCmdIndex == 2)
{
- mapObject->mapobj_bit_13 = 1;
+ eventObject->invisible = 1;
task->data[0]++;
}
return FALSE;
}
-bool8 sub_80877AC(struct Task *task, struct MapObject *mapObject, struct Sprite *sprite)
+bool8 sub_80877AC(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
{
if (!FieldEffectActiveListContains(FLDEFF_POP_OUT_OF_ASH))
{
- sub_8053FF8();
- fade_8080918();
+ TryFadeOutOldMapMusic();
+ WarpFadeScreen();
task->data[0]++;
}
return FALSE;
}
-void sub_80878C4(u8);
+static void DoEscapeRopeFieldEffect(u8);
void mapldr_080859D4(void);
-bool8 sub_80877D4(struct Task *task, struct MapObject *mapObject, struct Sprite *sprite)
+bool8 sub_80877D4(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
{
- if (!gPaletteFade.active && sub_8054034() == TRUE)
+ if (!gPaletteFade.active && BGMusicStopped() == TRUE)
{
- warp_in();
+ WarpIntoMap();
gFieldCallback = sub_8086748;
SetMainCallback2(CB2_LoadMap);
DestroyTask(FindTaskIdByFunc(sub_808766C));
@@ -1969,52 +1970,60 @@ void sub_808788C(struct Sprite *sprite)
}
}
-void sub_80878A8(void)
+void StartEscapeRopeFieldEffect(void)
{
ScriptContext2_Enable();
- FreezeMapObjects();
- CreateTask(sub_80878C4, 0x50);
+ FreezeEventObjects();
+ CreateTask(DoEscapeRopeFieldEffect, 0x50);
}
-void sub_80878C4(u8 taskId)
+static void DoEscapeRopeFieldEffect(u8 taskId)
{
- gUnknown_0839F378[gTasks[taskId].data[0]](&gTasks[taskId]);
+ gEscapeRopeFieldEffectFuncs[gTasks[taskId].data[0]](&gTasks[taskId]);
}
-void sub_80878F4(struct Task *task)
+static void EscapeRopeFieldEffect_Step0(struct Task *task)
{
task->data[0]++;
task->data[14] = 64;
- task->data[15] = player_get_direction_lower_nybble();
+ task->data[15] = GetPlayerFacingDirection();
}
-void sub_8087914(struct Task *task)
+static void EscapeRopeFieldEffect_Step1(struct Task *task)
{
- struct MapObject *mapObject;
- u8 unknown_0839F380[5] = {1, 3, 4, 2, 1};
+ struct EventObject *eventObject;
+ u8 clockwiseDirections[5] = {
+ DIR_SOUTH,
+ DIR_WEST,
+ DIR_EAST,
+ DIR_NORTH,
+ DIR_SOUTH,
+ };
+
if (task->data[14] != 0 && (--task->data[14]) == 0)
{
- sub_8053FF8();
- fade_8080918();
+ TryFadeOutOldMapMusic();
+ WarpFadeScreen();
}
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
- if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(mapObject) || FieldObjectClearAnimIfSpecialAnimFinished(mapObject))
+
+ eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
+ if (!EventObjectIsMovementOverridden(eventObject) || EventObjectClearHeldMovementIfFinished(eventObject))
{
- if (task->data[14] == 0 && !gPaletteFade.active && sub_8054034() == TRUE)
+ if (task->data[14] == 0 && !gPaletteFade.active && BGMusicStopped() == TRUE)
{
- FieldObjectSetDirection(mapObject, task->data[15]);
+ SetEventObjectDirection(eventObject, task->data[15]);
sub_8053678();
- warp_in();
+ WarpIntoMap();
gFieldCallback = mapldr_080859D4;
SetMainCallback2(CB2_LoadMap);
- DestroyTask(FindTaskIdByFunc(sub_80878C4));
- } else if (task->data[1] == 0 || (--task->data[1]) == 0)
+ DestroyTask(FindTaskIdByFunc(DoEscapeRopeFieldEffect));
+ }
+ else if (task->data[1] == 0 || (--task->data[1]) == 0)
{
- FieldObjectSetSpecialAnim(mapObject, GetFaceDirectionAnimId(unknown_0839F380[mapObject->mapobj_unk_18]));
+ EventObjectSetHeldMovement(eventObject, GetFaceDirectionMovementAction(clockwiseDirections[eventObject->facingDirection]));
if (task->data[2] < 12)
- {
task->data[2]++;
- }
+
task->data[1] = 8 >> (task->data[2] >> 2);
}
}
@@ -2032,9 +2041,9 @@ void mapldr_080859D4(void)
Overworld_PlaySpecialMapMusic();
pal_fill_for_map_transition();
ScriptContext2_Enable();
- FreezeMapObjects();
+ FreezeEventObjects();
gFieldCallback = NULL;
- gMapObjects[gPlayerAvatar.mapObjectId].mapobj_bit_13 = 1;
+ gEventObjects[gPlayerAvatar.eventObjectId].invisible = 1;
CreateTask(sub_8087A74, 0);
}
@@ -2048,78 +2057,82 @@ void sub_8087AA4(struct Task *task)
if (IsWeatherNotFadingIn())
{
task->data[0]++;
- task->data[15] = player_get_direction_lower_nybble();
+ task->data[15] = GetPlayerFacingDirection();
}
}
void sub_8087AC8(struct Task *task)
{
u8 unknown_0839F380[5] = {1, 3, 4, 2, 1};
- struct MapObject *mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
+ struct EventObject *eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
if (task->data[1] == 0 || (--task->data[1]) == 0)
{
- if (FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(mapObject) && !FieldObjectClearAnimIfSpecialAnimFinished(mapObject))
+ if (EventObjectIsMovementOverridden(eventObject) && !EventObjectClearHeldMovementIfFinished(eventObject))
{
return;
}
- if (task->data[2] >= 32 && task->data[15] == player_get_direction_lower_nybble())
+ if (task->data[2] >= 32 && task->data[15] == GetPlayerFacingDirection())
{
- mapObject->mapobj_bit_13 = 0;
+ eventObject->invisible = 0;
ScriptContext2_Disable();
- UnfreezeMapObjects();
+ UnfreezeEventObjects();
DestroyTask(FindTaskIdByFunc(sub_8087A74));
return;
}
- FieldObjectSetSpecialAnim(mapObject, GetFaceDirectionAnimId(unknown_0839F380[mapObject->mapobj_unk_18]));
+ EventObjectSetHeldMovement(eventObject, GetFaceDirectionMovementAction(unknown_0839F380[eventObject->facingDirection]));
if (task->data[2] < 32)
{
task->data[2]++;
}
task->data[1] = task->data[2] >> 2;
}
- mapObject->mapobj_bit_13 ^= 1;
+ eventObject->invisible ^= 1;
}
-void sub_8087BBC(u8);
-void mapldr_08085D88(void);
+static void ExecuteTeleportFieldEffectTask(u8);
+static void TeleportFieldEffectTask1(struct Task*);
+static void TeleportFieldEffectTask2(struct Task*);
+static void TeleportFieldEffectTask3(struct Task*);
+static void TeleportFieldEffectTask4(struct Task*);
+static void mapldr_08085D88(void);
-void sub_8087BA8(void)
+void CreateTeleportFieldEffectTask(void)
{
- CreateTask(sub_8087BBC, 0);
+ CreateTask(ExecuteTeleportFieldEffectTask, 0);
}
-void (*const gUnknown_0839F390[])(struct Task *) = {
- sub_8087BEC,
- sub_8087C14,
- sub_8087CA4,
- sub_8087D78
+static void (*const sTeleportFieldEffectTasks[])(struct Task *) = {
+ TeleportFieldEffectTask1,
+ TeleportFieldEffectTask2,
+ TeleportFieldEffectTask3,
+ TeleportFieldEffectTask4
};
-void sub_8087BBC(u8 taskId)
+static void ExecuteTeleportFieldEffectTask(u8 taskId)
{
- gUnknown_0839F390[gTasks[taskId].data[0]](&gTasks[taskId]);
+ sTeleportFieldEffectTasks[gTasks[taskId].data[0]](&gTasks[taskId]);
}
-void sub_8087BEC(struct Task *task)
+static void TeleportFieldEffectTask1(struct Task *task)
{
ScriptContext2_Enable();
- FreezeMapObjects();
+ FreezeEventObjects();
CameraObjectReset2();
- task->data[15] = player_get_direction_lower_nybble();
+ task->data[15] = GetPlayerFacingDirection();
task->data[0]++;
}
-void sub_8087C14(struct Task *task)
+static void TeleportFieldEffectTask2(struct Task *task)
{
- u8 unknown_0839F380[5] = {1, 3, 4, 2, 1};
- struct MapObject *mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
+ u8 spinDirections[5] = {DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_NORTH, DIR_SOUTH};
+ struct EventObject *eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
if (task->data[1] == 0 || (--task->data[1]) == 0)
{
- FieldObjectTurn(mapObject, unknown_0839F380[mapObject->mapobj_unk_18]);
+ EventObjectTurn(eventObject, spinDirections[eventObject->facingDirection]);
task->data[1] = 8;
task->data[2]++;
}
- if (task->data[2] > 7 && task->data[15] == mapObject->mapobj_unk_18)
+ if (task->data[2] > 7 && task->data[15] == eventObject->facingDirection)
{
task->data[0]++;
task->data[1] = 4;
@@ -2129,15 +2142,15 @@ void sub_8087C14(struct Task *task)
}
}
-void sub_8087CA4(struct Task *task)
+static void TeleportFieldEffectTask3(struct Task *task)
{
- u8 unknown_0839F380[5] = {1, 3, 4, 2, 1};
- struct MapObject *mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
+ u8 spinDirections[5] = {DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_NORTH, DIR_SOUTH};
+ struct EventObject *eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
struct Sprite *sprite = &gSprites[gPlayerAvatar.spriteId];
if ((--task->data[1]) <= 0)
{
task->data[1] = 4;
- FieldObjectTurn(mapObject, unknown_0839F380[mapObject->mapobj_unk_18]);
+ EventObjectTurn(eventObject, spinDirections[eventObject->facingDirection]);
}
sprite->pos1.y -= task->data[3];
task->data[4] += task->data[3];
@@ -2152,33 +2165,33 @@ void sub_8087CA4(struct Task *task)
if (task->data[4] >= 0xa8)
{
task->data[0]++;
- sub_8053FF8();
- fade_8080918();
+ TryFadeOutOldMapMusic();
+ WarpFadeScreen();
}
}
-void sub_8087D78(struct Task *task)
+static void TeleportFieldEffectTask4(struct Task *task)
{
- if (!gPaletteFade.active && sub_8054034() == TRUE)
+ if (!gPaletteFade.active && BGMusicStopped() == TRUE)
{
Overworld_SetWarpDestToLastHealLoc();
- warp_in();
+ WarpIntoMap();
SetMainCallback2(CB2_LoadMap);
gFieldCallback = mapldr_08085D88;
- DestroyTask(FindTaskIdByFunc(sub_8087BBC));
+ DestroyTask(FindTaskIdByFunc(ExecuteTeleportFieldEffectTask));
}
}
void sub_8087E1C(u8);
-void mapldr_08085D88(void)
+static void mapldr_08085D88(void)
{
Overworld_PlaySpecialMapMusic();
pal_fill_for_map_transition();
ScriptContext2_Enable();
- FreezeMapObjects();
+ FreezeEventObjects();
gFieldCallback = NULL;
- gMapObjects[gPlayerAvatar.mapObjectId].mapobj_bit_13 = 1;
+ gEventObjects[gPlayerAvatar.eventObjectId].invisible = 1;
CameraObjectReset2();
CreateTask(sub_8087E1C, 0);
}
@@ -2203,12 +2216,12 @@ void sub_8087E4C(struct Task *task)
sprite = &gSprites[gPlayerAvatar.spriteId];
centerToCornerVecY = -(sprite->centerToCornerVecY << 1);
sprite->pos2.y = -(sprite->pos1.y + sprite->centerToCornerVecY + gSpriteCoordOffsetY + centerToCornerVecY);
- gMapObjects[gPlayerAvatar.mapObjectId].mapobj_bit_13 = 0;
+ gEventObjects[gPlayerAvatar.eventObjectId].invisible = 0;
task->data[0]++;
task->data[1] = 8;
task->data[2] = 1;
task->data[14] = sprite->subspriteMode;
- task->data[15] = player_get_direction_lower_nybble();
+ task->data[15] = GetPlayerFacingDirection();
PlaySE(SE_TK_WARPIN);
}
}
@@ -2216,14 +2229,14 @@ void sub_8087E4C(struct Task *task)
void sub_8087ED8(struct Task *task)
{
u8 unknown_0839F380[5] = {1, 3, 4, 2, 1};
- struct MapObject *mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
+ struct EventObject *eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
struct Sprite *sprite = &gSprites[gPlayerAvatar.spriteId];
if ((sprite->pos2.y += task->data[1]) >= -8)
{
if (task->data[13] == 0)
{
task->data[13]++;
- mapObject->mapobj_bit_2 = 1;
+ eventObject->triggerGroundEffectsOnMove = 1;
sprite->subspriteMode = task->data[14];
}
} else
@@ -2241,7 +2254,7 @@ void sub_8087ED8(struct Task *task)
if ((--task->data[2]) == 0)
{
task->data[2] = 4;
- FieldObjectTurn(mapObject, unknown_0839F380[mapObject->mapobj_unk_18]);
+ EventObjectTurn(eventObject, unknown_0839F380[eventObject->facingDirection]);
}
if (sprite->pos2.y >= 0)
{
@@ -2255,16 +2268,16 @@ void sub_8087ED8(struct Task *task)
void sub_8087FDC(struct Task *task)
{
u8 unknown_0839F380[5] = {1, 3, 4, 2, 1};
- struct MapObject *mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
+ struct EventObject *eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
if ((--task->data[1]) == 0)
{
- FieldObjectTurn(mapObject, unknown_0839F380[mapObject->mapobj_unk_18]);
+ EventObjectTurn(eventObject, unknown_0839F380[eventObject->facingDirection]);
task->data[1] = 8;
- if ((++task->data[2]) > 4 && task->data[14] == mapObject->mapobj_unk_18)
+ if ((++task->data[2]) > 4 && task->data[14] == eventObject->facingDirection)
{
ScriptContext2_Disable();
CameraObjectReset1();
- UnfreezeMapObjects();
+ UnfreezeEventObjects();
DestroyTask(FindTaskIdByFunc(sub_8087E1C));
}
}
@@ -2433,8 +2446,8 @@ void sub_8088380(struct Task *task)
IntrCallback callback;
LoadWordFromTwoHalfwords((u16 *)&task->data[13], (u32 *)&callback);
SetVBlankCallback(callback);
- Text_LoadWindowTemplate(&gWindowTemplate_81E6CE4);
- InitMenuWindow(&gWindowTemplate_81E6CE4);
+ Text_LoadWindowTemplate(&gMenuTextWindowTemplate);
+ InitMenuWindow(&gMenuTextWindowTemplate);
FreeResourcesAndDestroySprite(&gSprites[task->data[15]]);
FieldEffectActiveListRemove(FLDEFF_FIELD_MOVE_SHOW_MON);
DestroyTask(FindTaskIdByFunc(sub_8088120));
@@ -2556,8 +2569,8 @@ void sub_808862C(struct Task *task)
CpuFill32(0, (void *)VRAM + bg0cnt, 0x800);
LoadWordFromTwoHalfwords((u16 *)&task->data[13], (u32 *)&intrCallback);
SetVBlankCallback(intrCallback);
- Text_LoadWindowTemplate(&gWindowTemplate_81E6CE4);
- InitMenuWindow(&gWindowTemplate_81E6CE4);
+ Text_LoadWindowTemplate(&gMenuTextWindowTemplate);
+ InitMenuWindow(&gMenuTextWindowTemplate);
FreeResourcesAndDestroySprite(&gSprites[task->data[15]]);
FieldEffectActiveListRemove(FLDEFF_FIELD_MOVE_SHOW_MON);
DestroyTask(FindTaskIdByFunc(sub_808847C));
@@ -2607,7 +2620,7 @@ bool8 sub_8088708(struct Task *task)
return FALSE;
}
#else
-__attribute__((naked))
+NAKED
bool8 sub_8088708(struct Task *task)
{
asm_unified("\tpush {r4-r7,lr}\n"
@@ -2816,31 +2829,31 @@ void sub_8088954(u8 taskId)
void sub_8088984(struct Task *task)
{
ScriptContext2_Enable();
- FreezeMapObjects();
+ FreezeEventObjects();
gPlayerAvatar.preventStep = TRUE;
SetPlayerAvatarStateMask(8);
PlayerGetDestCoords(&task->data[1], &task->data[2]);
- MoveCoords(gMapObjects[gPlayerAvatar.mapObjectId].placeholder18, &task->data[1], &task->data[2]);
+ MoveCoords(gEventObjects[gPlayerAvatar.eventObjectId].movementDirection, &task->data[1], &task->data[2]);
task->data[0]++;
}
void sub_80889E4(struct Task *task)
{
- struct MapObject *mapObject;
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
- if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(mapObject) || FieldObjectClearAnimIfSpecialAnimFinished(mapObject))
+ struct EventObject *eventObject;
+ eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
+ if (!EventObjectIsMovementOverridden(eventObject) || EventObjectClearHeldMovementIfFinished(eventObject))
{
sub_8059BF4();
- FieldObjectSetSpecialAnim(mapObject, 0x39);
+ EventObjectSetHeldMovement(eventObject, MOVEMENT_ACTION_START_ANIM_IN_DIRECTION);
task->data[0]++;
}
}
void sub_8088A30(struct Task *task)
{
- struct MapObject *mapObject;
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
- if (FieldObjectCheckIfSpecialAnimFinishedOrInactive(mapObject))
+ struct EventObject *eventObject;
+ eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
+ if (EventObjectCheckHeldMovementStatus(eventObject))
{
gFieldEffectArguments[0] = task->data[15] | 0x80000000;
FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT);
@@ -2850,32 +2863,32 @@ void sub_8088A30(struct Task *task)
void sub_8088A78(struct Task *task)
{
- struct MapObject *mapObject;
+ struct EventObject *eventObject;
if (!FieldEffectActiveListContains(FLDEFF_FIELD_MOVE_SHOW_MON))
{
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
- sub_805B980(mapObject, GetPlayerAvatarGraphicsIdByStateId(3));
- FieldObjectClearAnimIfSpecialAnimFinished(mapObject);
- FieldObjectSetSpecialAnim(mapObject, sub_80608D0(mapObject->placeholder18));
+ eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
+ sub_805B980(eventObject, GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_STATE_SURFING));
+ EventObjectClearHeldMovementIfFinished(eventObject);
+ EventObjectSetHeldMovement(eventObject, GetJumpSpecialMovementAction(eventObject->movementDirection));
gFieldEffectArguments[0] = task->data[1];
gFieldEffectArguments[1] = task->data[2];
- gFieldEffectArguments[2] = gPlayerAvatar.mapObjectId;
- mapObject->mapobj_unk_1A = FieldEffectStart(FLDEFF_SURF_BLOB);
+ gFieldEffectArguments[2] = gPlayerAvatar.eventObjectId;
+ eventObject->fieldEffectSpriteId = FieldEffectStart(FLDEFF_SURF_BLOB);
task->data[0]++;
}
}
void sub_8088AF4(struct Task *task)
{
- struct MapObject *mapObject;
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
- if (FieldObjectClearAnimIfSpecialAnimFinished(mapObject))
+ struct EventObject *eventObject;
+ eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
+ if (EventObjectClearHeldMovementIfFinished(eventObject))
{
gPlayerAvatar.preventStep = FALSE;
gPlayerAvatar.flags &= 0xdf;
- FieldObjectSetSpecialAnim(mapObject, GetFaceDirectionAnimId(mapObject->placeholder18));
- sub_8127ED0(mapObject->mapobj_unk_1A, 1);
- UnfreezeMapObjects();
+ EventObjectSetHeldMovement(eventObject, GetFaceDirectionMovementAction(eventObject->movementDirection));
+ sub_8127ED0(eventObject->fieldEffectSpriteId, 1);
+ UnfreezeEventObjects();
ScriptContext2_Disable();
FieldEffectActiveListRemove(FLDEFF_USE_SURF);
DestroyTask(FindTaskIdByFunc(sub_8088954));
@@ -2955,24 +2968,24 @@ void sub_8088C70(u8 taskId)
void sub_8088CA0(struct Task *task)
{
- struct MapObject *mapObject;
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
- if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(mapObject) || FieldObjectClearAnimIfSpecialAnimFinished(mapObject))
+ struct EventObject *eventObject;
+ eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
+ if (!EventObjectIsMovementOverridden(eventObject) || EventObjectClearHeldMovementIfFinished(eventObject))
{
task->data[15] = gPlayerAvatar.flags;
gPlayerAvatar.preventStep = TRUE;
SetPlayerAvatarStateMask(1);
sub_8059BF4();
- FieldObjectSetSpecialAnim(mapObject, 0x39);
+ EventObjectSetHeldMovement(eventObject, MOVEMENT_ACTION_START_ANIM_IN_DIRECTION);
task->data[0]++;
}
}
void sub_8088CF8(struct Task *task)
{
- struct MapObject *mapObject;
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
- if (FieldObjectClearAnimIfSpecialAnimFinished(mapObject))
+ struct EventObject *eventObject;
+ eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
+ if (EventObjectClearHeldMovementIfFinished(eventObject))
{
task->data[0]++;
gFieldEffectArguments[0] = task->data[1];
@@ -2982,14 +2995,14 @@ void sub_8088CF8(struct Task *task)
void sub_8088D3C(struct Task *task)
{
- struct MapObject *mapObject;
+ struct EventObject *eventObject;
if (!FieldEffectActiveListContains(FLDEFF_FIELD_MOVE_SHOW_MON))
{
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
+ eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
if (task->data[15] & 0x08)
{
- sub_8127ED0(mapObject->mapobj_unk_1A, 2);
- sub_8127EFC(mapObject->mapobj_unk_1A, 0);
+ sub_8127ED0(eventObject->fieldEffectSpriteId, 2);
+ sub_8127EFC(eventObject->fieldEffectSpriteId, 0);
}
task->data[1] = sub_8088F60();
task->data[0]++;
@@ -3002,16 +3015,16 @@ void sub_8088D94(struct Task *task)
{
task->data[0]++;
task->data[2] = 16;
- SetPlayerAvatarTransitionFlags(0x01);
- FieldObjectSetSpecialAnim(&gMapObjects[gPlayerAvatar.mapObjectId], 0x02);
+ SetPlayerAvatarTransitionFlags(PLAYER_AVATAR_FLAG_ON_FOOT);
+ EventObjectSetHeldMovement(&gEventObjects[gPlayerAvatar.eventObjectId], MOVEMENT_ACTION_FACE_LEFT);
}
}
void sub_8088DD8(struct Task *task)
{
- struct MapObject *mapObject;
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
- if ((task->data[2] == 0 || (--task->data[2]) == 0) && FieldObjectClearAnimIfSpecialAnimFinished(mapObject))
+ struct EventObject *eventObject;
+ eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
+ if ((task->data[2] == 0 || (--task->data[2]) == 0) && EventObjectClearHeldMovementIfFinished(eventObject))
{
task->data[0]++;
PlaySE(SE_W019);
@@ -3021,17 +3034,17 @@ void sub_8088DD8(struct Task *task)
void sub_8088E2C(struct Task *task)
{
- struct MapObject *mapObject;
+ struct EventObject *eventObject;
if ((++task->data[2]) >= 8)
{
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
- sub_805B980(mapObject, GetPlayerAvatarGraphicsIdByStateId(0x03));
- StartSpriteAnim(&gSprites[mapObject->spriteId], 0x16);
- mapObject->mapobj_bit_12 = 1;
- FieldObjectSetSpecialAnim(mapObject, 0x48);
+ eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
+ sub_805B980(eventObject, GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_STATE_SURFING));
+ StartSpriteAnim(&gSprites[eventObject->spriteId], 0x16);
+ eventObject->inanimate = 1;
+ EventObjectSetHeldMovement(eventObject, MOVEMENT_ACTION_JUMP_IN_PLACE_LEFT);
if (task->data[15] & 0x08)
{
- DestroySprite(&gSprites[mapObject->mapobj_unk_1A]);
+ DestroySprite(&gSprites[eventObject->fieldEffectSpriteId]);
}
task->data[0]++;
task->data[2] = 0;
@@ -3040,14 +3053,14 @@ void sub_8088E2C(struct Task *task)
void sub_8088EB4(struct Task *task)
{
- struct MapObject *mapObject;
+ struct EventObject *eventObject;
if ((++task->data[2]) >= 10)
{
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
- FieldObjectClearAnimIfSpecialAnimActive(mapObject);
- mapObject->mapobj_bit_12 = 0;
- mapObject->mapobj_bit_22 = 0;
- sub_8088FFC(task->data[1], mapObject->spriteId);
+ eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
+ EventObjectClearHeldMovementIfActive(eventObject);
+ eventObject->inanimate = 0;
+ eventObject->hasShadow = 0;
+ sub_8088FFC(task->data[1], eventObject->spriteId);
CameraObjectReset2();
task->data[0]++;
}
@@ -3057,7 +3070,7 @@ void sub_8088F10(struct Task *task)
{
if (sub_8088FA4(task->data[1]))
{
- fade_8080918();
+ WarpFadeScreen();
task->data[0]++;
}
}
@@ -3252,9 +3265,9 @@ void sub_8089270(u8 taskId)
void sub_80892A0(struct Task *task)
{
- struct MapObject *mapObject;
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
- if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(mapObject) || FieldObjectClearAnimIfSpecialAnimFinished(mapObject))
+ struct EventObject *eventObject;
+ eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
+ if (!EventObjectIsMovementOverridden(eventObject) || EventObjectClearHeldMovementIfFinished(eventObject))
{
task->data[0]++;
task->data[2] = 17;
@@ -3263,27 +3276,27 @@ void sub_80892A0(struct Task *task)
SetPlayerAvatarStateMask(0x01);
if (task->data[15] & 0x08)
{
- sub_8127ED0(mapObject->mapobj_unk_1A, 0);
+ sub_8127ED0(eventObject->fieldEffectSpriteId, 0);
}
- sub_805B980(mapObject, GetPlayerAvatarGraphicsIdByStateId(0x3));
+ sub_805B980(eventObject, GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_STATE_SURFING));
CameraObjectReset2();
- FieldObjectTurn(mapObject, DIR_WEST);
- StartSpriteAnim(&gSprites[mapObject->spriteId], 0x16);
- mapObject->mapobj_bit_13 = 0;
+ EventObjectTurn(eventObject, DIR_WEST);
+ StartSpriteAnim(&gSprites[eventObject->spriteId], 0x16);
+ eventObject->invisible = 0;
task->data[1] = sub_8088F60();
sub_8088FC0(task->data[1]);
- sub_8088FFC(task->data[1], mapObject->spriteId);
+ sub_8088FFC(task->data[1], eventObject->spriteId);
}
}
void sub_8089354(struct Task *task)
{
- struct MapObject *mapObject;
+ struct EventObject *eventObject;
struct Sprite *sprite;
if (task->data[2] == 0 || (--task->data[2]) == 0)
{
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
- sprite = &gSprites[mapObject->spriteId];
+ eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
+ sprite = &gSprites[eventObject->spriteId];
sub_8088FFC(task->data[1], 0x40);
sprite->pos1.x += sprite->pos2.x;
sprite->pos1.y += sprite->pos2.y;
@@ -3326,26 +3339,26 @@ void sub_80893C0(struct Task *task)
void sub_8089414(struct Task *task)
{
- struct MapObject *mapObject;
+ struct EventObject *eventObject;
struct Sprite *sprite;
if (sub_8088FA4(task->data[1]))
{
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
- sprite = &gSprites[mapObject->spriteId];
- mapObject->mapobj_bit_12 = 0;
- sub_805C058(mapObject, mapObject->coords2.x, mapObject->coords2.y);
+ eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
+ sprite = &gSprites[eventObject->spriteId];
+ eventObject->inanimate = 0;
+ sub_805C058(eventObject, eventObject->currentCoords.x, eventObject->currentCoords.y);
sprite->pos2.x = 0;
sprite->pos2.y = 0;
sprite->coordOffsetEnabled = 1;
sub_8059BF4();
- FieldObjectSetSpecialAnim(mapObject, 0x39);
+ EventObjectSetHeldMovement(eventObject, MOVEMENT_ACTION_START_ANIM_IN_DIRECTION);
task->data[0]++;
}
}
void sub_808948C(struct Task *task)
{
- if (FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[gPlayerAvatar.mapObjectId]))
+ if (EventObjectClearHeldMovementIfFinished(&gEventObjects[gPlayerAvatar.eventObjectId]))
{
task->data[0]++;
sub_8089230(task->data[1]);
@@ -3365,18 +3378,18 @@ void sub_80894C4(struct Task *task)
void fishE(struct Task *task)
{
u8 state;
- struct MapObject *mapObject;
+ struct EventObject *eventObject;
if ((--task->data[1]) == 0)
{
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
- state = 0;
+ eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
+ state = PLAYER_AVATAR_STATE_NORMAL;
if (task->data[15] & 0x08)
{
- state = 3;
- sub_8127ED0(mapObject->mapobj_unk_1A, 1);
+ state = PLAYER_AVATAR_STATE_SURFING;
+ sub_8127ED0(eventObject->fieldEffectSpriteId, 1);
}
- sub_805B980(mapObject, GetPlayerAvatarGraphicsIdByStateId(state));
- FieldObjectTurn(mapObject, DIR_SOUTH);
+ sub_805B980(eventObject, GetPlayerAvatarGraphicsIdByStateId(state));
+ EventObjectTurn(eventObject, DIR_SOUTH);
gPlayerAvatar.flags = task->data[15];
gPlayerAvatar.preventStep = FALSE;
FieldEffectActiveListRemove(FLDEFF_FLY_IN);
diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c
index bc4a1770e..84f340b35 100644
--- a/src/field_effect_helpers.c
+++ b/src/field_effect_helpers.c
@@ -2,156 +2,162 @@
#include "sprite.h"
#include "fieldmap.h"
#include "metatile_behavior.h"
-#include "constants/songs.h"
#include "sound.h"
#include "event_object_movement.h"
#include "field_camera.h"
#include "field_weather.h"
#include "field_effect.h"
#include "field_effect_helpers.h"
+#include "constants/field_effects.h"
+#include "constants/songs.h"
-static void sub_81269E0(struct Sprite *);
-static void npc_pal_op(struct MapObject *mapObject, struct Sprite *sprite);
-static void npc_pal_op_A(struct MapObject *, u8);
-static void npc_pal_op_B(struct MapObject *, u8);
-static void sub_81275A0(struct Sprite *);
-static void sub_81275C4(struct Sprite *);
-static void sub_8127DA0(struct Sprite *);
-static void sub_8127DD0(struct Sprite *);
-static void sub_8127E30(struct Sprite *);
+static void UpdateObjectReflectionSprite(struct Sprite *);
+static void LoadObjectReflectionPalette(struct EventObject *eventObject, struct Sprite *sprite);
+static void LoadObjectHighBridgeReflectionPalette(struct EventObject *, u8);
+static void LoadObjectRegularReflectionPalette(struct EventObject *, u8);
+static void FadeFootprintsTireTracks_Step0(struct Sprite *);
+static void FadeFootprintsTireTracks_Step1(struct Sprite *);
+static void UpdateAshFieldEffect_Step0(struct Sprite *);
+static void UpdateAshFieldEffect_Step1(struct Sprite *);
+static void UpdateAshFieldEffect_Step2(struct Sprite *);
static void sub_812882C(struct Sprite *, u8, u8);
-static void sub_81278D8(struct Sprite *);
-static void sub_8127FD4(struct MapObject *, struct Sprite *);
-static void sub_812800C(struct MapObject *, struct Sprite *);
-static void sub_81280A0(struct MapObject *, struct Sprite *, struct Sprite *);
+static void UpdateFeetInFlowingWaterFieldEffect(struct Sprite *);
+static void sub_8127FD4(struct EventObject *, struct Sprite *);
+static void sub_812800C(struct EventObject *, struct Sprite *);
+static void sub_81280A0(struct EventObject *, struct Sprite *, struct Sprite *);
static void sub_8128174(struct Sprite *);
static u32 ShowDisguiseFieldEffect(u8, u8, u8);
-void SetUpReflection(struct MapObject *mapObject, struct Sprite *sprite, bool8 flag)
+void InitObjectReflectionSprite(struct EventObject *eventObject, struct Sprite *sprite, bool8 stillReflection)
{
- struct Sprite *newSprite;
+ struct Sprite *reflectionSprite;
- newSprite = &gSprites[obj_unfreeze(sprite, sprite->pos1.x, sprite->pos1.y, 0x98)];
- newSprite->callback = sub_81269E0;
- newSprite->oam.priority = 3;
- newSprite->oam.paletteNum = gUnknown_0830FD14[newSprite->oam.paletteNum];
- newSprite->usingSheet = TRUE;
- newSprite->anims = gDummySpriteAnimTable;
- StartSpriteAnim(newSprite, 0);
- newSprite->affineAnims = gDummySpriteAffineAnimTable;
- newSprite->affineAnimBeginning = TRUE;
- newSprite->subspriteMode = 0;
- newSprite->data[0] = sprite->data[0];
- newSprite->data[1] = mapObject->localId;
- newSprite->data[7] = flag;
- npc_pal_op(mapObject, newSprite);
- if (!flag)
- {
- newSprite->oam.affineMode = 1;
- }
+ reflectionSprite = &gSprites[CreateCopySpriteAt(sprite, sprite->pos1.x, sprite->pos1.y, 0x98)];
+ reflectionSprite->callback = UpdateObjectReflectionSprite;
+ reflectionSprite->oam.priority = 3;
+ reflectionSprite->oam.paletteNum = gReflectionEffectPaletteMap[reflectionSprite->oam.paletteNum];
+ reflectionSprite->usingSheet = TRUE;
+ reflectionSprite->anims = gDummySpriteAnimTable;
+ StartSpriteAnim(reflectionSprite, 0);
+ reflectionSprite->affineAnims = gDummySpriteAffineAnimTable;
+ reflectionSprite->affineAnimBeginning = TRUE;
+ reflectionSprite->subspriteMode = SUBSPRITES_OFF;
+ reflectionSprite->data[0] = sprite->data[0];
+ reflectionSprite->data[1] = eventObject->localId;
+ reflectionSprite->data[7] = stillReflection;
+ LoadObjectReflectionPalette(eventObject, reflectionSprite);
+
+ if (!stillReflection)
+ reflectionSprite->oam.affineMode = ST_OAM_AFFINE_NORMAL;
}
-static s16 sub_81268D0(struct MapObject *mapObject)
+static s16 GetReflectionVerticalOffset(struct EventObject *eventObject)
{
- return GetFieldObjectGraphicsInfo(mapObject->graphicsId)->height - 2;
+ return GetEventObjectGraphicsInfo(eventObject->graphicsId)->height - 2;
}
-static void npc_pal_op(struct MapObject *mapObject, struct Sprite *sprite)
+static void LoadObjectReflectionPalette(struct EventObject *eventObject, struct Sprite *sprite)
{
- u8 whichElement;
- u16 unk_8041e2c[] = {0x0c, 0x1c, 0x2c};
+ u8 bridgeType;
+ u16 bridgeReflectionVerticalOffsets[] = { 12, 28, 44 };
sprite->data[2] = 0;
- if (!GetFieldObjectGraphicsInfo(mapObject->graphicsId)->disableReflectionPaletteLoad && ((whichElement = sub_8057450(mapObject->mapobj_unk_1F)) || (whichElement = sub_8057450(mapObject->mapobj_unk_1E))))
+ if (!GetEventObjectGraphicsInfo(eventObject->graphicsId)->disableReflectionPaletteLoad && ((bridgeType = MetatileBehavior_GetBridgeType(eventObject->previousMetatileBehavior)) || (bridgeType = MetatileBehavior_GetBridgeType(eventObject->currentMetatileBehavior))))
{
- sprite->data[2] = unk_8041e2c[whichElement - 1];
- npc_pal_op_A(mapObject, sprite->oam.paletteNum);
+ sprite->data[2] = bridgeReflectionVerticalOffsets[bridgeType - 1];
+ LoadObjectHighBridgeReflectionPalette(eventObject, sprite->oam.paletteNum);
}
else
{
- npc_pal_op_B(mapObject, sprite->oam.paletteNum);
+ LoadObjectRegularReflectionPalette(eventObject, sprite->oam.paletteNum);
}
}
-static void npc_pal_op_B(struct MapObject *mapObject, u8 paletteNum)
+static void LoadObjectRegularReflectionPalette(struct EventObject *eventObject, u8 paletteIndex)
{
- const struct MapObjectGraphicsInfo *graphicsInfo;
+ const struct EventObjectGraphicsInfo *graphicsInfo;
- graphicsInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId);
- if (graphicsInfo->paletteTag2 != 0x11ff)
+ graphicsInfo = GetEventObjectGraphicsInfo(eventObject->graphicsId);
+ if (graphicsInfo->bridgeReflectionPaletteTag != 0x11ff)
{
if (graphicsInfo->paletteSlot == 0)
{
- npc_load_two_palettes__no_record(graphicsInfo->paletteTag1, paletteNum);
+ LoadPlayerObjectReflectionPalette(graphicsInfo->paletteTag, paletteIndex);
}
else if (graphicsInfo->paletteSlot == 10)
{
- npc_load_two_palettes__and_record(graphicsInfo->paletteTag1, paletteNum);
+ LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag, paletteIndex);
}
else
{
- pal_patch_for_npc(npc_paltag_by_palslot(paletteNum), paletteNum);
+ PatchObjectPalette(GetObjectPaletteTag(paletteIndex), paletteIndex);
}
- UpdateSpritePaletteWithWeather(paletteNum);
+ UpdateSpritePaletteWithWeather(paletteIndex);
}
}
-static void npc_pal_op_A(struct MapObject *mapObject, u8 paletteNum)
+// When walking on a bridge high above water (Route 120), the reflection is a solid dark blue color.
+// This is so the sprite blends in with the dark water metatile underneath the bridge.
+static void LoadObjectHighBridgeReflectionPalette(struct EventObject *eventObject, u8 paletteNum)
{
- const struct MapObjectGraphicsInfo *graphicsInfo;
+ const struct EventObjectGraphicsInfo *graphicsInfo;
- graphicsInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId);
- if (graphicsInfo->paletteTag2 != 0x11ff)
+ graphicsInfo = GetEventObjectGraphicsInfo(eventObject->graphicsId);
+ if (graphicsInfo->bridgeReflectionPaletteTag != 0x11ff)
{
- pal_patch_for_npc(graphicsInfo->paletteTag2, paletteNum);
+ PatchObjectPalette(graphicsInfo->bridgeReflectionPaletteTag, paletteNum);
UpdateSpritePaletteWithWeather(paletteNum);
}
}
-static void sub_81269E0(struct Sprite *sprite)
+static void UpdateObjectReflectionSprite(struct Sprite *reflectionSprite)
{
- struct MapObject *mapObject;
- struct Sprite *oldSprite;
+ struct EventObject *eventObject;
+ struct Sprite *mainSprite;
- mapObject = &gMapObjects[sprite->data[0]];
- oldSprite = &gSprites[mapObject->spriteId];
- if (!mapObject->active || !mapObject->mapobj_bit_17 || mapObject->localId != sprite->data[1])
+ eventObject = &gEventObjects[reflectionSprite->data[0]];
+ mainSprite = &gSprites[eventObject->spriteId];
+ if (!eventObject->active || !eventObject->hasReflection || eventObject->localId != reflectionSprite->data[1])
{
- sprite->inUse = FALSE;
+ reflectionSprite->inUse = FALSE;
}
else
{
- sprite->oam.paletteNum = gUnknown_0830FD14[oldSprite->oam.paletteNum];
- sprite->oam.shape = oldSprite->oam.shape;
- sprite->oam.size = oldSprite->oam.size;
- sprite->oam.matrixNum = oldSprite->oam.matrixNum | 0x10;
- sprite->oam.tileNum = oldSprite->oam.tileNum;
- sprite->subspriteTables = oldSprite->subspriteTables;
- sprite->subspriteTableNum = oldSprite->subspriteTableNum;
- sprite->invisible = oldSprite->invisible;
- sprite->pos1.x = oldSprite->pos1.x;
- sprite->pos1.y = oldSprite->pos1.y + sub_81268D0(mapObject) + sprite->data[2];
- sprite->centerToCornerVecX = oldSprite->centerToCornerVecX;
- sprite->centerToCornerVecY = oldSprite->centerToCornerVecY;
- sprite->pos2.x = oldSprite->pos2.x;
- sprite->pos2.y = -oldSprite->pos2.y;
- sprite->coordOffsetEnabled = oldSprite->coordOffsetEnabled;
- if (sprite->data[7] == FALSE)
+ reflectionSprite->oam.paletteNum = gReflectionEffectPaletteMap[mainSprite->oam.paletteNum];
+ reflectionSprite->oam.shape = mainSprite->oam.shape;
+ reflectionSprite->oam.size = mainSprite->oam.size;
+ reflectionSprite->oam.matrixNum = mainSprite->oam.matrixNum | 0x10;
+ reflectionSprite->oam.tileNum = mainSprite->oam.tileNum;
+ reflectionSprite->subspriteTables = mainSprite->subspriteTables;
+ reflectionSprite->subspriteTableNum = mainSprite->subspriteTableNum;
+ reflectionSprite->invisible = mainSprite->invisible;
+ reflectionSprite->pos1.x = mainSprite->pos1.x;
+ // reflectionSprite->data[2] holds an additional vertical offset, used by the high bridges on Route 120
+ reflectionSprite->pos1.y = mainSprite->pos1.y + GetReflectionVerticalOffset(eventObject) + reflectionSprite->data[2];
+ reflectionSprite->centerToCornerVecX = mainSprite->centerToCornerVecX;
+ reflectionSprite->centerToCornerVecY = mainSprite->centerToCornerVecY;
+ reflectionSprite->pos2.x = mainSprite->pos2.x;
+ reflectionSprite->pos2.y = -mainSprite->pos2.y;
+ reflectionSprite->coordOffsetEnabled = mainSprite->coordOffsetEnabled;
+
+ // Check if the reflection is not still.
+ if (reflectionSprite->data[7] == FALSE)
{
- sprite->oam.matrixNum = 0;
- if (oldSprite->oam.matrixNum & 0x8)
- {
- sprite->oam.matrixNum = 1;
- }
+ // Sets the reflection sprite's rot/scale matrix to the appropriate
+ // matrix based on whether or not the main sprite is horizontally flipped.
+ // If the sprite is facing to the east, then it is flipped, and its matrixNum is 8.
+ reflectionSprite->oam.matrixNum = 0;
+ if (mainSprite->oam.matrixNum & 0x8)
+ reflectionSprite->oam.matrixNum = 1;
}
}
}
-u8 sub_8126B54(void)
+u8 CreateWarpArrowSprite(void)
{
u8 spriteId;
struct Sprite *sprite;
- spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[8] /*gFieldEffectSpriteTemplate_Arrow*/, 0, 0, 0x52);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[8], 0, 0, 0x52);
if (spriteId != MAX_SPRITES)
{
sprite = &gSprites[spriteId];
@@ -162,12 +168,12 @@ u8 sub_8126B54(void)
return spriteId;
}
-void objid_set_invisible(u8 spriteId)
+void SetSpriteInvisible(u8 spriteId)
{
gSprites[spriteId].invisible = TRUE;
}
-void sub_8126BC4(u8 spriteId, u8 animNum, s16 x, s16 y)
+void ShowWarpArrowSprite(u8 spriteId, u8 direction, s16 x, s16 y)
{
s16 x2;
s16 y2;
@@ -183,18 +189,18 @@ void sub_8126BC4(u8 spriteId, u8 animNum, s16 x, s16 y)
sprite->invisible = FALSE;
sprite->data[0] = x;
sprite->data[1] = y;
- StartSpriteAnim(sprite, animNum - 1);
+ StartSpriteAnim(sprite, direction - 1);
}
}
-const u8 gUnknown_08401E32[] = {
+const u8 gShadowEffectTemplateIds[] = {
0,
1,
2,
3
};
-const u16 gUnknown_08401E36[] = {
+const u16 gShadowVerticalOffsets[] = {
4,
4,
4,
@@ -203,42 +209,47 @@ const u16 gUnknown_08401E36[] = {
u32 FldEff_Shadow(void)
{
- u8 mapObjectId;
- const struct MapObjectGraphicsInfo *graphicsInfo;
+ u8 eventObjectId;
+ const struct EventObjectGraphicsInfo *graphicsInfo;
u8 spriteId;
- mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
- graphicsInfo = GetFieldObjectGraphicsInfo(gMapObjects[mapObjectId].graphicsId);
- spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[gUnknown_08401E32[graphicsInfo->shadowSize]], 0, 0, 0x94);
+ eventObjectId = GetEventObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
+ graphicsInfo = GetEventObjectGraphicsInfo(gEventObjects[eventObjectId].graphicsId);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[gShadowEffectTemplateIds[graphicsInfo->shadowSize]], 0, 0, 0x94);
if (spriteId != MAX_SPRITES)
{
gSprites[spriteId].coordOffsetEnabled = TRUE;
gSprites[spriteId].data[0] = gFieldEffectArguments[0];
gSprites[spriteId].data[1] = gFieldEffectArguments[1];
gSprites[spriteId].data[2] = gFieldEffectArguments[2];
- gSprites[spriteId].data[3] = (graphicsInfo->height >> 1) - gUnknown_08401E36[graphicsInfo->shadowSize];
+ gSprites[spriteId].data[3] = (graphicsInfo->height >> 1) - gShadowVerticalOffsets[graphicsInfo->shadowSize];
}
return 0;
}
-void oamc_shadow(struct Sprite *sprite)
+void UpdateShadowFieldEffect(struct Sprite *sprite)
{
- u8 mapObjectId;
- struct MapObject *mapObject;
+ u8 eventObjectId;
+ struct EventObject *eventObject;
struct Sprite *linkedSprite;
- if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data[0], sprite->data[1], sprite->data[2], &mapObjectId))
+ if (TryGetEventObjectIdByLocalIdAndMap(sprite->data[0], sprite->data[1], sprite->data[2], &eventObjectId))
{
FieldEffectStop(sprite, FLDEFF_SHADOW);
}
else
{
- mapObject = &gMapObjects[mapObjectId];
- linkedSprite = &gSprites[mapObject->spriteId];
+ eventObject = &gEventObjects[eventObjectId];
+ linkedSprite = &gSprites[eventObject->spriteId];
sprite->oam.priority = linkedSprite->oam.priority;
sprite->pos1.x = linkedSprite->pos1.x;
sprite->pos1.y = linkedSprite->pos1.y + sprite->data[3];
- if (!mapObject->active || !mapObject->mapobj_bit_22 || MetatileBehavior_IsPokeGrass(mapObject->mapobj_unk_1E) || MetatileBehavior_IsSurfableWaterOrUnderwater(mapObject->mapobj_unk_1E) || MetatileBehavior_IsSurfableWaterOrUnderwater(mapObject->mapobj_unk_1F) || MetatileBehavior_IsReflective(mapObject->mapobj_unk_1E) || MetatileBehavior_IsReflective(mapObject->mapobj_unk_1F))
+ if (!eventObject->active || !eventObject->hasShadow
+ || MetatileBehavior_IsPokeGrass(eventObject->currentMetatileBehavior)
+ || MetatileBehavior_IsSurfableWaterOrUnderwater(eventObject->currentMetatileBehavior)
+ || MetatileBehavior_IsSurfableWaterOrUnderwater(eventObject->previousMetatileBehavior)
+ || MetatileBehavior_IsReflective(eventObject->currentMetatileBehavior)
+ || MetatileBehavior_IsReflective(eventObject->previousMetatileBehavior))
{
FieldEffectStop(sprite, FLDEFF_SHADOW);
}
@@ -275,14 +286,14 @@ u32 FldEff_TallGrass(void)
return 0;
}
-void unc_grass_normal(struct Sprite *sprite)
+void UpdateTallGrassFieldEffect(struct Sprite *sprite)
{
u8 mapNum;
u8 mapGroup;
u8 metatileBehavior;
u8 localId;
- u8 mapObjectId;
- struct MapObject *mapObject;
+ u8 eventObjectId;
+ struct EventObject *eventObject;
mapNum = sprite->data[5] >> 8;
mapGroup = sprite->data[5];
@@ -296,23 +307,21 @@ void unc_grass_normal(struct Sprite *sprite)
mapNum = sprite->data[3];
mapGroup = sprite->data[4];
metatileBehavior = MapGridGetMetatileBehaviorAt(sprite->data[1], sprite->data[2]);
- if (TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId) || !MetatileBehavior_IsTallGrass(metatileBehavior) || (sprite->data[7] && sprite->animEnded))
+ if (TryGetEventObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &eventObjectId) || !MetatileBehavior_IsTallGrass(metatileBehavior) || (sprite->data[7] && sprite->animEnded))
{
FieldEffectStop(sprite, FLDEFF_TALL_GRASS);
}
else
{
- mapObject = &gMapObjects[mapObjectId];
- if ((mapObject->coords2.x != sprite->data[1] || mapObject->coords2.y != sprite->data[2]) && (mapObject->coords3.x != sprite->data[1] || mapObject->coords3.y != sprite->data[2]))
- {
+ eventObject = &gEventObjects[eventObjectId];
+ if ((eventObject->currentCoords.x != sprite->data[1] || eventObject->currentCoords.y != sprite->data[2]) && (eventObject->previousCoords.x != sprite->data[1] || eventObject->previousCoords.y != sprite->data[2]))
sprite->data[7] = TRUE;
- }
+
metatileBehavior = 0;
if (sprite->animCmdIndex == 0)
- {
metatileBehavior = 4;
- }
- sub_806487C(sprite, 0);
+
+ UpdateEventObjectSpriteVisibility(sprite, 0);
sub_812882C(sprite, sprite->data[0], metatileBehavior);
}
}
@@ -335,7 +344,7 @@ u32 FldEff_JumpTallGrass(void)
return 0;
}
-u8 sub_8126FF0(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y)
+u8 FindTallGrassFieldEffectSpriteId(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y)
{
struct Sprite *sprite;
u8 i;
@@ -345,12 +354,11 @@ u8 sub_8126FF0(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y)
if (gSprites[i].inUse)
{
sprite = &gSprites[i];
- if (sprite->callback == unc_grass_normal && (x == sprite->data[1] && y == sprite->data[2]) && (localId == (u8)(sprite->data[3] >> 8) && mapNum == (sprite->data[3] & 0xFF) && mapGroup == sprite->data[4]))
- {
+ if (sprite->callback == UpdateTallGrassFieldEffect && (x == sprite->data[1] && y == sprite->data[2]) && (localId == (u8)(sprite->data[3] >> 8) && mapNum == (sprite->data[3] & 0xFF) && mapGroup == sprite->data[4]))
return i;
- }
}
}
+
return MAX_SPRITES;
}
@@ -384,14 +392,14 @@ u32 FldEff_LongGrass(void)
return 0;
}
-void unc_grass_tall(struct Sprite *sprite)
+void UpdateLongGrassFieldEffect(struct Sprite *sprite)
{
u8 mapNum;
u8 mapGroup;
u8 metatileBehavior;
u8 localId;
- u8 mapObjectId;
- struct MapObject *mapObject;
+ u8 eventObjectId;
+ struct EventObject *eventObject;
mapNum = sprite->data[5] >> 8;
mapGroup = sprite->data[5];
@@ -405,18 +413,18 @@ void unc_grass_tall(struct Sprite *sprite)
mapNum = sprite->data[3];
mapGroup = sprite->data[4];
metatileBehavior = MapGridGetMetatileBehaviorAt(sprite->data[1], sprite->data[2]);
- if (TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId) || !MetatileBehavior_IsLongGrass(metatileBehavior) || (sprite->data[7] && sprite->animEnded))
+ if (TryGetEventObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &eventObjectId) || !MetatileBehavior_IsLongGrass(metatileBehavior) || (sprite->data[7] && sprite->animEnded))
{
FieldEffectStop(sprite, FLDEFF_LONG_GRASS);
}
else
{
- mapObject = &gMapObjects[mapObjectId];
- if ((mapObject->coords2.x != sprite->data[1] || mapObject->coords2.y != sprite->data[2]) && (mapObject->coords3.x != sprite->data[1] || mapObject->coords3.y != sprite->data[2]))
+ eventObject = &gEventObjects[eventObjectId];
+ if ((eventObject->currentCoords.x != sprite->data[1] || eventObject->currentCoords.y != sprite->data[2]) && (eventObject->previousCoords.x != sprite->data[1] || eventObject->previousCoords.y != sprite->data[2]))
{
sprite->data[7] = TRUE;
}
- sub_806487C(sprite, 0);
+ UpdateEventObjectSpriteVisibility(sprite, 0);
sub_812882C(sprite, sprite->data[0], 0);
}
}
@@ -441,44 +449,44 @@ u32 FldEff_JumpLongGrass(void)
u32 FldEff_ShortGrass(void)
{
- u8 mapObjectId;
- struct MapObject *mapObject;
+ u8 eventObjectId;
+ struct EventObject *eventObject;
u8 spriteId;
struct Sprite *sprite;
- mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
- mapObject = &gMapObjects[mapObjectId];
+ eventObjectId = GetEventObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
+ eventObject = &gEventObjects[eventObjectId];
spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[30], 0, 0, 0);
if (spriteId != MAX_SPRITES)
{
sprite = &(gSprites[spriteId]);
sprite->coordOffsetEnabled = TRUE;
- sprite->oam.priority = gSprites[mapObject->spriteId].oam.priority;
+ sprite->oam.priority = gSprites[eventObject->spriteId].oam.priority;
sprite->data[0] = gFieldEffectArguments[0];
sprite->data[1] = gFieldEffectArguments[1];
sprite->data[2] = gFieldEffectArguments[2];
- sprite->data[3] = gSprites[mapObject->spriteId].pos1.x;
- sprite->data[4] = gSprites[mapObject->spriteId].pos1.y;
+ sprite->data[3] = gSprites[eventObject->spriteId].pos1.x;
+ sprite->data[4] = gSprites[eventObject->spriteId].pos1.y;
}
return 0;
}
-void sub_8127334(struct Sprite *sprite)
+void UpdateShortGrassFieldEffect(struct Sprite *sprite)
{
- u8 mapObjectId;
+ u8 eventObjectId;
s16 x;
s16 y;
- const struct MapObjectGraphicsInfo *graphicsInfo;
+ const struct EventObjectGraphicsInfo *graphicsInfo;
struct Sprite *linkedSprite;
- if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data[0], sprite->data[1], sprite->data[2], &mapObjectId) || !gMapObjects[mapObjectId].mapobj_bit_18)
+ if (TryGetEventObjectIdByLocalIdAndMap(sprite->data[0], sprite->data[1], sprite->data[2], &eventObjectId) || !gEventObjects[eventObjectId].inShortGrass)
{
FieldEffectStop(sprite, FLDEFF_SHORT_GRASS);
}
else
{
- graphicsInfo = GetFieldObjectGraphicsInfo(gMapObjects[mapObjectId].graphicsId);
- linkedSprite = &gSprites[gMapObjects[mapObjectId].spriteId];
+ graphicsInfo = GetEventObjectGraphicsInfo(gEventObjects[eventObjectId].graphicsId);
+ linkedSprite = &gSprites[gEventObjects[eventObjectId].spriteId];
y = linkedSprite->pos1.y;
x = linkedSprite->pos1.x;
if (x != sprite->data[3] || y != sprite->data[4])
@@ -495,7 +503,7 @@ void sub_8127334(struct Sprite *sprite)
sprite->pos2.y = (graphicsInfo->height >> 1) - 8;
sprite->subpriority = linkedSprite->subpriority - 1;
sprite->oam.priority = linkedSprite->oam.priority;
- sub_806487C(sprite, linkedSprite->invisible);
+ UpdateEventObjectSpriteVisibility(sprite, linkedSprite->invisible);
}
}
@@ -553,30 +561,30 @@ u32 FldEff_BikeTireTracks(void)
return spriteId;
}
-void (*const gUnknown_08401E40[])(struct Sprite *) = {
- sub_81275A0,
- sub_81275C4
+void (*const gFadeFootprintsTireTracksFuncs[])(struct Sprite *) = {
+ FadeFootprintsTireTracks_Step0,
+ FadeFootprintsTireTracks_Step1
};
-void sub_8127584(struct Sprite *sprite)
+void UpdateFootprintsTireTracksFieldEffect(struct Sprite *sprite)
{
- gUnknown_08401E40[sprite->data[0]](sprite);
+ gFadeFootprintsTireTracksFuncs[sprite->data[0]](sprite);
}
-static void sub_81275A0(struct Sprite *sprite)
+static void FadeFootprintsTireTracks_Step0(struct Sprite *sprite)
{
+ // Wait 40 frames before the flickering starts.
if (++sprite->data[1] > 40)
- {
sprite->data[0] = 1;
- }
- sub_806487C(sprite, FALSE);
+
+ UpdateEventObjectSpriteVisibility(sprite, FALSE);
}
-static void sub_81275C4(struct Sprite *sprite)
+static void FadeFootprintsTireTracks_Step1(struct Sprite *sprite)
{
sprite->invisible ^= 1;
- sprite->data[1] ++;
- sub_806487C(sprite, sprite->invisible);
+ sprite->data[1]++;
+ UpdateEventObjectSpriteVisibility(sprite, sprite->invisible);
if (sprite->data[1] > 56)
{
FieldEffectStop(sprite, sprite->data[7]);
@@ -585,22 +593,22 @@ static void sub_81275C4(struct Sprite *sprite)
u32 FldEff_Splash(void)
{
- u8 mapObjectId;
- struct MapObject *mapObject;
+ u8 eventObjectId;
+ struct EventObject *eventObject;
u8 spriteId;
struct Sprite *sprite;
- const struct MapObjectGraphicsInfo *graphicsInfo;
+ const struct EventObjectGraphicsInfo *graphicsInfo;
struct Sprite *linkedSprite;
- mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
- mapObject = &gMapObjects[mapObjectId];
+ eventObjectId = GetEventObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
+ eventObject = &gEventObjects[eventObjectId];
spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[13], 0, 0, 0);
if (spriteId != MAX_SPRITES)
{
- graphicsInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId);
+ graphicsInfo = GetEventObjectGraphicsInfo(eventObject->graphicsId);
sprite = &gSprites[spriteId];
sprite->coordOffsetEnabled = TRUE;
- linkedSprite = &gSprites[mapObject->spriteId];
+ linkedSprite = &gSprites[eventObject->spriteId];
sprite->oam.priority = linkedSprite->oam.priority;
sprite->data[0] = gFieldEffectArguments[0];
sprite->data[1] = gFieldEffectArguments[1];
@@ -611,19 +619,19 @@ u32 FldEff_Splash(void)
return 0;
}
-void sub_81276B4(struct Sprite *sprite)
+void UpdateSplashFieldEffect(struct Sprite *sprite)
{
- u8 mapObjectId;
+ u8 eventObjectId;
- if (sprite->animEnded || TryGetFieldObjectIdByLocalIdAndMap(sprite->data[0], sprite->data[1], sprite->data[2], &mapObjectId))
+ if (sprite->animEnded || TryGetEventObjectIdByLocalIdAndMap(sprite->data[0], sprite->data[1], sprite->data[2], &eventObjectId))
{
FieldEffectStop(sprite, FLDEFF_SPLASH);
}
else
{
- sprite->pos1.x = gSprites[gMapObjects[mapObjectId].spriteId].pos1.x;
- sprite->pos1.y = gSprites[gMapObjects[mapObjectId].spriteId].pos1.y;
- sub_806487C(sprite, FALSE);
+ sprite->pos1.x = gSprites[gEventObjects[eventObjectId].spriteId].pos1.x;
+ sprite->pos1.y = gSprites[gEventObjects[eventObjectId].spriteId].pos1.y;
+ UpdateEventObjectSpriteVisibility(sprite, FALSE);
}
}
@@ -665,22 +673,22 @@ u32 FldEff_JumpBigSplash(void)
u32 FldEff_FeetInFlowingWater(void)
{
- u8 mapObjectId;
- struct MapObject *mapObject;
+ u8 eventObjectId;
+ struct EventObject *eventObject;
u8 spriteId;
struct Sprite *sprite;
- const struct MapObjectGraphicsInfo *graphicsInfo;
+ const struct EventObjectGraphicsInfo *graphicsInfo;
- mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
- mapObject = &gMapObjects[mapObjectId];
+ eventObjectId = GetEventObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
+ eventObject = &gEventObjects[eventObjectId];
spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[13], 0, 0, 0);
if (spriteId != MAX_SPRITES)
{
- graphicsInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId);
+ graphicsInfo = GetEventObjectGraphicsInfo(eventObject->graphicsId);
sprite = &gSprites[spriteId];
- sprite->callback = sub_81278D8;
+ sprite->callback = UpdateFeetInFlowingWaterFieldEffect;
sprite->coordOffsetEnabled = TRUE;
- sprite->oam.priority = gSprites[mapObject->spriteId].oam.priority;
+ sprite->oam.priority = gSprites[eventObject->spriteId].oam.priority;
sprite->data[0] = gFieldEffectArguments[0];
sprite->data[1] = gFieldEffectArguments[1];
sprite->data[2] = gFieldEffectArguments[2];
@@ -692,28 +700,28 @@ u32 FldEff_FeetInFlowingWater(void)
return 0;
}
-static void sub_81278D8(struct Sprite *sprite)
+static void UpdateFeetInFlowingWaterFieldEffect(struct Sprite *sprite)
{
- u8 mapObjectId;
+ u8 eventObjectId;
struct Sprite *linkedSprite;
- struct MapObject *mapObject;
+ struct EventObject *eventObject;
- if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data[0], sprite->data[1], sprite->data[2], &mapObjectId) || !gMapObjects[mapObjectId].mapobj_bit_19)
+ if (TryGetEventObjectIdByLocalIdAndMap(sprite->data[0], sprite->data[1], sprite->data[2], &eventObjectId) || !gEventObjects[eventObjectId].inShallowFlowingWater)
{
FieldEffectStop(sprite, FLDEFF_FEET_IN_FLOWING_WATER);
}
else
{
- mapObject = &gMapObjects[mapObjectId];
- linkedSprite = &gSprites[mapObject->spriteId];
+ eventObject = &gEventObjects[eventObjectId];
+ linkedSprite = &gSprites[eventObject->spriteId];
sprite->pos1.x = linkedSprite->pos1.x;
sprite->pos1.y = linkedSprite->pos1.y;
sprite->subpriority = linkedSprite->subpriority;
- sub_806487C(sprite, FALSE);
- if (mapObject->coords2.x != sprite->data[3] || mapObject->coords2.y != sprite->data[4])
+ UpdateEventObjectSpriteVisibility(sprite, FALSE);
+ if (eventObject->currentCoords.x != sprite->data[3] || eventObject->currentCoords.y != sprite->data[4])
{
- sprite->data[3] = mapObject->coords2.x;
- sprite->data[4] = mapObject->coords2.y;
+ sprite->data[3] = eventObject->currentCoords.x;
+ sprite->data[4] = eventObject->currentCoords.y;
if (!sprite->invisible)
{
PlaySE(SE_MIZU);
@@ -740,46 +748,46 @@ u32 FldEff_Ripple(void)
u32 FldEff_HotSpringsWater(void)
{
- u8 mapObjectId;
- struct MapObject *mapObject;
+ u8 eventObjectId;
+ struct EventObject *eventObject;
u8 spriteId;
struct Sprite *sprite;
- mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
- mapObject = &gMapObjects[mapObjectId];
+ eventObjectId = GetEventObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
+ eventObject = &gEventObjects[eventObjectId];
spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[31], 0, 0, 0);
if (spriteId != MAX_SPRITES)
{
sprite = &gSprites[spriteId];
sprite->coordOffsetEnabled = TRUE;
- sprite->oam.priority = gSprites[mapObject->spriteId].oam.priority;
+ sprite->oam.priority = gSprites[eventObject->spriteId].oam.priority;
sprite->data[0] = gFieldEffectArguments[0];
sprite->data[1] = gFieldEffectArguments[1];
sprite->data[2] = gFieldEffectArguments[2];
- sprite->data[3] = gSprites[mapObject->spriteId].pos1.x;
- sprite->data[4] = gSprites[mapObject->spriteId].pos1.y;
+ sprite->data[3] = gSprites[eventObject->spriteId].pos1.x;
+ sprite->data[4] = gSprites[eventObject->spriteId].pos1.y;
}
return 0;
}
-void sub_8127A7C(struct Sprite *sprite)
+void UpdateHotSpringsWaterFieldEffect(struct Sprite *sprite)
{
- u8 mapObjectId;
- const struct MapObjectGraphicsInfo *graphicsInfo;
+ u8 eventObjectId;
+ const struct EventObjectGraphicsInfo *graphicsInfo;
struct Sprite *linkedSprite;
- if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data[0], sprite->data[1], sprite->data[2], &mapObjectId) || !gMapObjects[mapObjectId].mapobj_bit_21)
+ if (TryGetEventObjectIdByLocalIdAndMap(sprite->data[0], sprite->data[1], sprite->data[2], &eventObjectId) || !gEventObjects[eventObjectId].inHotSprings)
{
FieldEffectStop(sprite, FLDEFF_HOT_SPRINGS_WATER);
}
else
{
- graphicsInfo = GetFieldObjectGraphicsInfo(gMapObjects[mapObjectId].graphicsId);
- linkedSprite = &gSprites[gMapObjects[mapObjectId].spriteId];
+ graphicsInfo = GetEventObjectGraphicsInfo(gEventObjects[eventObjectId].graphicsId);
+ linkedSprite = &gSprites[gEventObjects[eventObjectId].spriteId];
sprite->pos1.x = linkedSprite->pos1.x;
sprite->pos1.y = (graphicsInfo->height >> 1) + linkedSprite->pos1.y - 8;
sprite->subpriority = linkedSprite->subpriority - 1;
- sub_806487C(sprite, FALSE);
+ UpdateEventObjectSpriteVisibility(sprite, FALSE);
}
}
@@ -851,7 +859,7 @@ u32 FldEff_Unknown22(void)
return 0;
}
-void ash(s16 x, s16 y, u16 c, s16 d)
+void StartAshFieldEffect(s16 x, s16 y, u16 c, s16 d)
{
gFieldEffectArguments[0] = x;
gFieldEffectArguments[1] = y;
@@ -886,44 +894,40 @@ u32 FldEff_Ash(void)
return 0;
}
-void (*const gUnknown_08401E48[])(struct Sprite *) = {
- sub_8127DA0,
- sub_8127DD0,
- sub_8127E30
+void (*const gAshFieldEffectFuncs[])(struct Sprite *) = {
+ UpdateAshFieldEffect_Step0,
+ UpdateAshFieldEffect_Step1,
+ UpdateAshFieldEffect_Step2
};
-void sub_8127D84(struct Sprite *sprite)
+void UpdateAshFieldEffect(struct Sprite *sprite)
{
- gUnknown_08401E48[sprite->data[0]](sprite);
+ gAshFieldEffectFuncs[sprite->data[0]](sprite);
}
-static void sub_8127DA0(struct Sprite *sprite)
+static void UpdateAshFieldEffect_Step0(struct Sprite *sprite)
{
sprite->invisible = TRUE;
sprite->animPaused = TRUE;
if (--sprite->data[4] == 0)
- {
sprite->data[0] = 1;
- }
}
-static void sub_8127DD0(struct Sprite *sprite)
+static void UpdateAshFieldEffect_Step1(struct Sprite *sprite)
{
sprite->invisible = FALSE;
sprite->animPaused = FALSE;
MapGridSetMetatileIdAt(sprite->data[1], sprite->data[2], sprite->data[3]);
CurrentMapDrawMetatileAt(sprite->data[1], sprite->data[2]);
- gMapObjects[gPlayerAvatar.mapObjectId].mapobj_bit_2 = TRUE;
+ gEventObjects[gPlayerAvatar.eventObjectId].triggerGroundEffectsOnMove = TRUE;
sprite->data[0] = 2;
}
-static void sub_8127E30(struct Sprite *sprite)
+static void UpdateAshFieldEffect_Step2(struct Sprite *sprite)
{
- sub_806487C(sprite, FALSE);
+ UpdateEventObjectSpriteVisibility(sprite, FALSE);
if (sprite->animEnded)
- {
FieldEffectStop(sprite, FLDEFF_ASH);
- }
}
u32 FldEff_SurfBlob(void)
@@ -978,37 +982,42 @@ static u8 sub_8127F70(struct Sprite *sprite)
return (sprite->data[0] & 0xF00) >> 8;
}
-void sub_8127F7C(struct Sprite *sprite)
+void UpdateSurfBlobFieldEffect(struct Sprite *sprite)
{
- struct MapObject *mapObject;
+ struct EventObject *eventObject;
struct Sprite *linkedSprite;
- mapObject = &gMapObjects[sprite->data[2]];
- linkedSprite = &gSprites[mapObject->spriteId];
- sub_8127FD4(mapObject, sprite);
- sub_812800C(mapObject, sprite);
- sub_81280A0(mapObject, linkedSprite, sprite);
+ eventObject = &gEventObjects[sprite->data[2]];
+ linkedSprite = &gSprites[eventObject->spriteId];
+ sub_8127FD4(eventObject, sprite);
+ sub_812800C(eventObject, sprite);
+ sub_81280A0(eventObject, linkedSprite, sprite);
sprite->oam.priority = linkedSprite->oam.priority;
}
-static void sub_8127FD4(struct MapObject *mapObject, struct Sprite *sprite)
+static void sub_8127FD4(struct EventObject *eventObject, struct Sprite *sprite)
{
- u8 unk_8041E54[] = {0, 0, 1, 2, 3};
+ u8 surfBlobDirectionAnims[] = {
+ 0, // DIR_NONE
+ 0, // DIR_SOUTH
+ 1, // DIR_NORTH
+ 2, // DIR_WEST
+ 3, // DIR_EAST
+ };
+
if (sub_8127F64(sprite) == 0)
- {
- StartSpriteAnimIfDifferent(sprite, unk_8041E54[mapObject->placeholder18]);
- }
+ StartSpriteAnimIfDifferent(sprite, surfBlobDirectionAnims[eventObject->movementDirection]);
}
#ifdef NONMATCHING
-static void sub_812800C(struct MapObject *mapObject, struct Sprite *sprite)
+static void sub_812800C(struct EventObject *eventObject, struct Sprite *sprite)
{
s16 x;
s16 y;
u8 i;
- x = mapObject->coords2.x;
- y = mapObject->coords2.y;
+ x = eventObject->currentCoords.x;
+ y = eventObject->currentCoords.y;
if (sprite->pos2.y == 0 && (x != sprite->data[6] || y != sprite->data[7]))
{
sprite->data[5] = sprite->pos2.y;
@@ -1024,7 +1033,7 @@ static void sub_812800C(struct MapObject *mapObject, struct Sprite *sprite)
}
}
#else
-__attribute__((naked)) static void sub_812800C(struct MapObject *mapObject, struct Sprite *sprite)
+NAKED static void sub_812800C(struct EventObject *eventObject, struct Sprite *sprite)
{
asm_unified("\tpush {r4-r7,lr}\n"
"\tmov r7, r8\n"
@@ -1105,7 +1114,7 @@ __attribute__((naked)) static void sub_812800C(struct MapObject *mapObject, stru
}
#endif
-static void sub_81280A0(struct MapObject *mapObject, struct Sprite *linkedSprite, struct Sprite *sprite)
+static void sub_81280A0(struct EventObject *eventObject, struct Sprite *linkedSprite, struct Sprite *sprite)
{
u16 unk_8401E5A[] = {3, 7};
u8 v0 = sub_8127F5C(sprite);
@@ -1184,46 +1193,46 @@ u32 FldEff_Dust(void)
u32 FldEff_SandPile(void)
{
- u8 mapObjectId;
- struct MapObject *mapObject;
+ u8 eventObjectId;
+ struct EventObject *eventObject;
u8 spriteId;
struct Sprite *sprite;
- const struct MapObjectGraphicsInfo *graphicsInfo;
+ const struct EventObjectGraphicsInfo *graphicsInfo;
- mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
- mapObject = &gMapObjects[mapObjectId];
+ eventObjectId = GetEventObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
+ eventObject = &gEventObjects[eventObjectId];
spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[29], 0, 0, 0);
if (spriteId != MAX_SPRITES)
{
- graphicsInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId);
+ graphicsInfo = GetEventObjectGraphicsInfo(eventObject->graphicsId);
sprite = &gSprites[spriteId];
sprite->coordOffsetEnabled = TRUE;
- sprite->oam.priority = gSprites[mapObject->spriteId].oam.priority;
+ sprite->oam.priority = gSprites[eventObject->spriteId].oam.priority;
sprite->data[0] = gFieldEffectArguments[0];
sprite->data[1] = gFieldEffectArguments[1];
sprite->data[2] = gFieldEffectArguments[2];
- sprite->data[3] = gSprites[mapObject->spriteId].pos1.x;
- sprite->data[4] = gSprites[mapObject->spriteId].pos1.y;
+ sprite->data[3] = gSprites[eventObject->spriteId].pos1.x;
+ sprite->data[4] = gSprites[eventObject->spriteId].pos1.y;
sprite->pos2.y = (graphicsInfo->height >> 1) - 2;
SeekSpriteAnim(sprite, 2);
}
return 0;
}
-void sub_81282E0(struct Sprite *sprite)
+void UpdateSandPileFieldEffect(struct Sprite *sprite)
{
- u8 mapObjectId;
+ u8 eventObjectId;
s16 x;
s16 y;
- if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data[0], sprite->data[1], sprite->data[2], &mapObjectId) || !gMapObjects[mapObjectId].mapobj_bit_20)
+ if (TryGetEventObjectIdByLocalIdAndMap(sprite->data[0], sprite->data[1], sprite->data[2], &eventObjectId) || !gEventObjects[eventObjectId].inSandPile)
{
FieldEffectStop(sprite, FLDEFF_SAND_PILE);
}
else
{
- y = gSprites[gMapObjects[mapObjectId].spriteId].pos1.y;
- x = gSprites[gMapObjects[mapObjectId].spriteId].pos1.x;
+ y = gSprites[gEventObjects[eventObjectId].spriteId].pos1.y;
+ x = gSprites[gEventObjects[eventObjectId].spriteId].pos1.x;
if (x != sprite->data[3] || y != sprite->data[4])
{
sprite->data[3] = x;
@@ -1235,8 +1244,8 @@ void sub_81282E0(struct Sprite *sprite)
}
sprite->pos1.x = x;
sprite->pos1.y = y;
- sprite->subpriority = gSprites[gMapObjects[mapObjectId].spriteId].subpriority;
- sub_806487C(sprite, FALSE);
+ sprite->subpriority = gSprites[gEventObjects[eventObjectId].spriteId].subpriority;
+ UpdateEventObjectSpriteVisibility(sprite, FALSE);
}
}
@@ -1256,12 +1265,12 @@ u32 FldEff_Bubbles(void)
return 0;
}
-void sub_8128410(struct Sprite *sprite)
+void UpdateBubblesFieldEffect(struct Sprite *sprite)
{
sprite->data[0] += 0x80;
sprite->data[0] &= 0x100;
sprite->pos1.y -= sprite->data[0] >> 8;
- sub_806487C(sprite, FALSE);
+ UpdateEventObjectSpriteVisibility(sprite, FALSE);
if (sprite->invisible || sprite->animEnded)
{
FieldEffectStop(sprite, FLDEFF_BUBBLES);
@@ -1288,19 +1297,19 @@ u32 FldEff_BerryTreeGrowthSparkle(void)
u32 FldEff_TreeDisguise(void)
{
- return ShowDisguiseFieldEffect(FLDEFF_TREE_DISGUISE, 0x18, 0x04);
+ return ShowDisguiseFieldEffect(FLDEFF_TREE_DISGUISE, 24, 4);
}
u32 FldEff_MountainDisguise(void)
{
- return ShowDisguiseFieldEffect(FLDEFF_MOUNTAIN_DISGUISE, 0x19, 0x03);
+ return ShowDisguiseFieldEffect(FLDEFF_MOUNTAIN_DISGUISE, 25, 3);
}
u32 FldEff_SandDisguise(void)
{
- return ShowDisguiseFieldEffect(FLDEFF_SAND_DISGUISE, 0x1C, 0x02);
+ return ShowDisguiseFieldEffect(FLDEFF_SAND_DISGUISE, 28, 2);
}
static u32 ShowDisguiseFieldEffect(u8 fldEff, u8 templateIdx, u8 paletteNum)
@@ -1308,7 +1317,7 @@ static u32 ShowDisguiseFieldEffect(u8 fldEff, u8 templateIdx, u8 paletteNum)
u8 spriteId;
struct Sprite *sprite;
- if (TryGetFieldObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2], &spriteId))
+ if (TryGetEventObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2], &spriteId))
{
FieldEffectActiveListRemove(fldEff);
return MAX_SPRITES;
@@ -1327,19 +1336,19 @@ static u32 ShowDisguiseFieldEffect(u8 fldEff, u8 templateIdx, u8 paletteNum)
return spriteId;
}
-void sub_81285AC(struct Sprite *sprite)
+void UpdateDisguiseFieldEffect(struct Sprite *sprite)
{
- u8 mapObjectId;
- const struct MapObjectGraphicsInfo *graphicsInfo;
+ u8 eventObjectId;
+ const struct EventObjectGraphicsInfo *graphicsInfo;
struct Sprite *linkedSprite;
- if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data[2], sprite->data[3], sprite->data[4], &mapObjectId))
+ if (TryGetEventObjectIdByLocalIdAndMap(sprite->data[2], sprite->data[3], sprite->data[4], &eventObjectId))
{
FieldEffectStop(sprite, sprite->data[1]);
}
- // else {
- graphicsInfo = GetFieldObjectGraphicsInfo(gMapObjects[mapObjectId].graphicsId);
- linkedSprite = &gSprites[gMapObjects[mapObjectId].spriteId];
+
+ graphicsInfo = GetEventObjectGraphicsInfo(gEventObjects[eventObjectId].graphicsId);
+ linkedSprite = &gSprites[gEventObjects[eventObjectId].spriteId];
sprite->invisible = linkedSprite->invisible;
sprite->pos1.x = linkedSprite->pos1.x;
sprite->pos1.y = (graphicsInfo->height >> 1) + linkedSprite->pos1.y - 16;
@@ -1357,34 +1366,33 @@ void sub_81285AC(struct Sprite *sprite)
{
FieldEffectStop(sprite, sprite->data[1]);
}
- // }
}
-void sub_812869C(struct MapObject *mapObject)
+void sub_812869C(struct EventObject *eventObject)
{
- if (mapObject->mapobj_unk_21 == 1)
+ if (eventObject->directionSequenceIndex == 1)
{
- gSprites[mapObject->mapobj_unk_1A].data[0] ++;
+ gSprites[eventObject->fieldEffectSpriteId].data[0]++;
}
}
-bool8 sub_81286C4(struct MapObject *mapObject)
+bool8 sub_81286C4(struct EventObject *eventObject)
{
struct Sprite *sprite;
- if (mapObject->mapobj_unk_21 == 2)
+ if (eventObject->directionSequenceIndex == 2)
{
return TRUE;
}
- if (mapObject->mapobj_unk_21 == 0)
+ if (eventObject->directionSequenceIndex == 0)
{
return TRUE;
}
- sprite = &gSprites[mapObject->mapobj_unk_1A];
+ sprite = &gSprites[eventObject->fieldEffectSpriteId];
if (sprite->data[7])
{
- mapObject->mapobj_unk_21 = 2;
- sprite->data[0] ++;
+ eventObject->directionSequenceIndex = 2;
+ sprite->data[0]++;
return TRUE;
}
return FALSE;
@@ -1406,27 +1414,25 @@ u32 FldEff_Sparkle(void)
return 0;
}
-void sub_8128774(struct Sprite *sprite)
+void UpdateSparkleFieldEffect(struct Sprite *sprite)
{
if (sprite->data[0] == 0)
{
if (sprite->animEnded)
{
sprite->invisible = TRUE;
- sprite->data[0] ++;
+ sprite->data[0]++;
}
+
if (sprite->data[0] == 0)
- {
return;
- }
}
- if (++ sprite->data[1] >= 35)
- {
+
+ if (++sprite->data[1] > 34)
FieldEffectStop(sprite, FLDEFF_SPARKLE);
- }
}
-void sub_81287C4(struct Sprite *sprite)
+void UpdateJumpLandingFieldEffect(struct Sprite *sprite)
{
if (sprite->animEnded)
{
@@ -1434,21 +1440,17 @@ void sub_81287C4(struct Sprite *sprite)
}
else
{
- sub_806487C(sprite, FALSE);
+ UpdateEventObjectSpriteVisibility(sprite, FALSE);
SetObjectSubpriorityByZCoord(sprite->data[0], sprite, 0);
}
}
-void sub_8128800(struct Sprite *sprite)
+void WaitFieldEffectSpriteAnim(struct Sprite *sprite)
{
if (sprite->animEnded)
- {
FieldEffectStop(sprite, sprite->data[0]);
- }
else
- {
- sub_806487C(sprite, FALSE);
- }
+ UpdateEventObjectSpriteVisibility(sprite, FALSE);
}
#ifdef NONMATCHING
@@ -1462,18 +1464,18 @@ static void sub_812882C(struct Sprite *sprite /*r6*/, u8 z, u8 offset)
s16 ly;
s16 ylo;
s16 yhi;
- struct MapObject *mapObject; // r4
- const struct MapObjectGraphicsInfo *graphicsInfo; // destroyed
+ struct EventObject *eventObject; // r4
+ const struct EventObjectGraphicsInfo *graphicsInfo; // destroyed
struct Sprite *linkedSprite; // r5
SetObjectSubpriorityByZCoord(z, sprite, offset);
for (i = 0; i < 16; i ++)
{
- mapObject = &gMapObjects[i];
- if (mapObject->active)
+ eventObject = &gEventObjects[i];
+ if (eventObject->active)
{
- graphicsInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId);
- linkedSprite = &gSprites[mapObject->spriteId];
+ graphicsInfo = GetEventObjectGraphicsInfo(eventObject->graphicsId);
+ linkedSprite = &gSprites[eventObject->spriteId];
xhi = sprite->pos1.x + sprite->centerToCornerVecX;
xlo = sprite->pos1.x - sprite->centerToCornerVecX;
lx = linkedSprite->pos1.x;
@@ -1496,7 +1498,7 @@ static void sub_812882C(struct Sprite *sprite /*r6*/, u8 z, u8 offset)
}
}
#else
-__attribute__((naked)) static void sub_812882C(struct Sprite *sprite /*r6*/, u8 z, u8 offset)
+NAKED static void sub_812882C(struct Sprite *sprite /*r6*/, u8 z, u8 offset)
{
asm_unified("\tpush {r4-r7,lr}\n"
"\tadds r6, r0, 0\n"
@@ -1512,14 +1514,14 @@ __attribute__((naked)) static void sub_812882C(struct Sprite *sprite /*r6*/, u8
"\tlsls r0, r7, 3\n"
"\tadds r0, r7\n"
"\tlsls r0, 2\n"
- "\tldr r1, _081288DC @ =gMapObjects\n"
+ "\tldr r1, _081288DC @ =gEventObjects\n"
"\tadds r4, r0, r1\n"
"\tldrb r0, [r4]\n"
"\tlsls r0, 31\n"
"\tcmp r0, 0\n"
"\tbeq _081288E4\n"
"\tldrb r0, [r4, 0x5]\n"
- "\tbl GetFieldObjectGraphicsInfo\n"
+ "\tbl GetEventObjectGraphicsInfo\n"
"\tldrb r1, [r4, 0x4]\n"
"\tlsls r0, r1, 4\n"
"\tadds r0, r1\n"
@@ -1586,7 +1588,7 @@ __attribute__((naked)) static void sub_812882C(struct Sprite *sprite /*r6*/, u8
"\tstrb r0, [r2]\n"
"\tb _081288EE\n"
"\t.align 2, 0\n"
- "_081288DC: .4byte gMapObjects\n"
+ "_081288DC: .4byte gEventObjects\n"
"_081288E0: .4byte gSprites\n"
"_081288E4:\n"
"\tadds r0, r7, 0x1\n"
diff --git a/src/field_fadetransition.c b/src/field_fadetransition.c
index 35ea3952a..c52dc98c6 100644
--- a/src/field_fadetransition.c
+++ b/src/field_fadetransition.c
@@ -11,7 +11,7 @@
#include "fldeff_flash.h"
#include "link.h"
#include "main.h"
-#include "map_obj_lock.h"
+#include "event_obj_lock.h"
#include "metatile_behavior.h"
#include "palette.h"
#include "overworld.h"
@@ -39,35 +39,35 @@ void palette_bg_fill_black(void)
void pal_fill_for_map_transition(void)
{
- u8 map_light = get_map_type_from_warp0();
- switch (fade_type_for_given_maplight_pair(map_light, Overworld_GetMapTypeOfSaveblockLocation()))
+ u8 previousMapType = GetLastUsedWarpMapType();
+ switch (GetMapPairFadeFromType(previousMapType, Overworld_GetMapTypeOfSaveblockLocation()))
{
case 0:
- FadeScreen(0, 0);
+ FadeScreen(FADE_FROM_BLACK, 0);
palette_bg_fill_black();
break;
case 1:
- FadeScreen(2, 0);
+ FadeScreen(FADE_FROM_WHITE, 0);
palette_bg_fill_white();
}
}
void pal_fill_black(void)
{
- FadeScreen(0, 0);
+ FadeScreen(FADE_FROM_BLACK, 0);
palette_bg_fill_black();
}
-void fade_8080918(void)
+void WarpFadeScreen(void)
{
- u8 light_level = Overworld_GetMapTypeOfSaveblockLocation();
- switch (sub_810CDB8(light_level, warp1_get_mapheader()->mapType))
+ u8 currentMapType = Overworld_GetMapTypeOfSaveblockLocation();
+ switch (GetMapPairFadeToType(currentMapType, GetDestinationWarpMapHeader()->mapType))
{
case 0:
- FadeScreen(1, 0);
+ FadeScreen(FADE_TO_BLACK, 0);
break;
case 1:
- FadeScreen(3, 0);
+ FadeScreen(FADE_TO_WHITE, 0);
}
}
@@ -220,7 +220,7 @@ void sub_8080B9C(u8 taskId)
{
case 0:
sub_8080958(0);
- FreezeMapObjects();
+ FreezeEventObjects();
PlayerGetDestCoords(x, y);
FieldSetDoorOpened(*x, *y);
task->data[0] = 1;
@@ -228,27 +228,27 @@ void sub_8080B9C(u8 taskId)
case 1:
if (sub_8080E70())
{
- u8 mapObjId;
+ u8 eventObjId;
sub_8080958(1);
- mapObjId = GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0);
- FieldObjectSetSpecialAnim(&gMapObjects[mapObjId], 8);
+ eventObjId = GetEventObjectIdByLocalIdAndMap(0xFF, 0, 0);
+ EventObjectSetHeldMovement(&gEventObjects[eventObjId], MOVEMENT_ACTION_WALK_NORMAL_DOWN);
task->data[0] = 2;
}
break;
case 2:
if (walkrun_is_standing_still())
{
- u8 mapObjId;
+ u8 eventObjId;
task->data[1] = FieldAnimateDoorClose(*x, *y);
- mapObjId = GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0);
- FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[mapObjId]);
+ eventObjId = GetEventObjectIdByLocalIdAndMap(0xFF, 0, 0);
+ EventObjectClearHeldMovementIfFinished(&gEventObjects[eventObjId]);
task->data[0] = 3;
}
break;
case 3:
if (task->data[1] < 0 || gTasks[task->data[1]].isActive != TRUE)
{
- UnfreezeMapObjects();
+ UnfreezeEventObjects();
task->data[0] = 4;
}
break;
@@ -269,24 +269,24 @@ void task_map_chg_seq_0807E20C(u8 taskId)
{
case 0:
sub_8080958(0);
- FreezeMapObjects();
+ FreezeEventObjects();
PlayerGetDestCoords(x, y);
task->data[0] = 1;
break;
case 1:
if (sub_8080E70())
{
- u8 mapObjId;
+ u8 eventObjId;
sub_8080958(1);
- mapObjId = GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0);
- FieldObjectSetSpecialAnim(&gMapObjects[mapObjId], GetGoSpeed0AnimId(player_get_direction_lower_nybble()));
+ eventObjId = GetEventObjectIdByLocalIdAndMap(0xFF, 0, 0);
+ EventObjectSetHeldMovement(&gEventObjects[eventObjId], GetWalkNormalMovementAction(GetPlayerFacingDirection()));
task->data[0] = 2;
}
break;
case 2:
if (walkrun_is_standing_still())
{
- UnfreezeMapObjects();
+ UnfreezeEventObjects();
task->data[0] = 3;
}
break;
@@ -302,14 +302,14 @@ void task_map_chg_seq_0807E2CC(u8 taskId)
switch (gTasks[taskId].data[0])
{
case 0:
- FreezeMapObjects();
+ FreezeEventObjects();
ScriptContext2_Enable();
gTasks[taskId].data[0]++;
break;
case 1:
if (sub_8080E70())
{
- UnfreezeMapObjects();
+ UnfreezeEventObjects();
ScriptContext2_Disable();
DestroyTask(taskId);
}
@@ -326,7 +326,7 @@ void sub_8080DC4(u8 taskId)
}
}
-void atk17_seteffectsecondary(void)
+void sub_8080DEC(void)
{
pal_fill_black();
CreateStartMenuTask(sub_8080DC4);
@@ -339,7 +339,7 @@ void task_mpl_807E3C8(u8 taskId)
{
ScriptContext2_Disable();
DestroyTask(taskId);
- sub_8064E2C();
+ ScriptUnfreezeEventObjects();
}
}
@@ -358,7 +358,7 @@ void sub_8080E44(void)
CreateTask(task_mpl_807E3C8, 10);
}
-bool32 sub_8080E64(void)
+static bool32 PaletteFadeActive(void)
{
return gPaletteFade.active;
}
@@ -374,8 +374,8 @@ bool32 sub_8080E70(void)
void sub_8080E88(void)
{
ScriptContext2_Enable();
- sub_8053FF8();
- fade_8080918();
+ TryFadeOutOldMapMusic();
+ WarpFadeScreen();
PlayRainSoundEffect();
PlaySE(SE_KAIDAN);
gFieldCallback = mapldr_default;
@@ -385,8 +385,8 @@ void sub_8080E88(void)
void sp13E_warp_to_last_warp(void)
{
ScriptContext2_Enable();
- sub_8053FF8();
- fade_8080918();
+ TryFadeOutOldMapMusic();
+ WarpFadeScreen();
PlayRainSoundEffect();
gFieldCallback = mapldr_default;
CreateTask(task0A_fade_n_map_maybe, 10);
@@ -426,8 +426,8 @@ void sub_8080F58(void)
void sub_8080F68(void)
{
ScriptContext2_Enable();
- sub_8053FF8();
- fade_8080918();
+ TryFadeOutOldMapMusic();
+ WarpFadeScreen();
PlaySE(SE_TK_WARPIN);
CreateTask(task0A_fade_n_map_maybe, 10);
gFieldCallback = sub_8080B78;
@@ -436,12 +436,12 @@ void sub_8080F68(void)
void sub_8080F9C(void)
{
ScriptContext2_Enable();
- fade_8080918();
+ WarpFadeScreen();
CreateTask(task0A_fade_n_map_maybe, 10);
gFieldCallback = sub_80C791C;
}
-void sub_8080FC4(u8 taskId)
+static void WaitCableClubWarp(u8 taskId)
{
struct Task *task = &gTasks[taskId];
@@ -452,13 +452,11 @@ void sub_8080FC4(u8 taskId)
task->data[0]++;
break;
case 1:
- if (!sub_8080E64() && sub_8054034())
- {
+ if (!PaletteFadeActive() && BGMusicStopped())
task->data[0]++;
- }
break;
case 2:
- warp_in();
+ WarpIntoMap();
SetMainCallback2(sub_8054588);
DestroyTask(taskId);
break;
@@ -468,10 +466,10 @@ void sub_8080FC4(u8 taskId)
void DoCableClubWarp(void)
{
ScriptContext2_Enable();
- sub_8053FF8();
- fade_8080918();
+ TryFadeOutOldMapMusic();
+ WarpFadeScreen();
PlaySE(SE_KAIDAN);
- CreateTask(sub_8080FC4, 10);
+ CreateTask(WaitCableClubWarp, 10);
}
void sub_8081050(u8 taskId)
@@ -482,13 +480,13 @@ void sub_8081050(u8 taskId)
{
case 0:
ClearLinkCallback_2();
- FadeScreen(1, 0);
- sub_8053FF8();
+ FadeScreen(FADE_TO_BLACK, 0);
+ TryFadeOutOldMapMusic();
PlaySE(SE_KAIDAN);
data[0]++;
break;
case 1:
- if (!sub_8080E64() && sub_8054034())
+ if (!PaletteFadeActive() && BGMusicStopped())
{
sub_800832C();
data[0]++;
@@ -497,7 +495,7 @@ void sub_8081050(u8 taskId)
case 2:
if (!gReceivedRemoteLinkPlayers)
{
- warp_in();
+ WarpIntoMap();
SetMainCallback2(CB2_LoadMap);
DestroyTask(taskId);
}
@@ -512,7 +510,7 @@ void sub_80810DC(void)
#if DEBUG
-__attribute__((naked))
+NAKED
void debug_sub_80888D8()
{
asm("\
@@ -533,18 +531,18 @@ void task0A_fade_n_map_maybe(u8 taskId)
switch (task->data[0])
{
case 0:
- FreezeMapObjects();
+ FreezeEventObjects();
ScriptContext2_Enable();
task->data[0]++;
break;
case 1:
- if (!sub_8080E64() && sub_8054034())
+ if (!PaletteFadeActive() && BGMusicStopped())
{
task->data[0]++;
}
break;
case 2:
- warp_in();
+ WarpIntoMap();
SetMainCallback2(CB2_LoadMap);
DestroyTask(taskId);
break;
@@ -560,7 +558,7 @@ void sub_808115C(u8 taskId)
switch (task->data[0])
{
case 0:
- FreezeMapObjects();
+ FreezeEventObjects();
PlayerGetDestCoords(x, y);
PlaySE(GetDoorSoundEffect(*x, *y - 1));
task->data[1] = FieldAnimateDoorOpen(*x, *y - 1);
@@ -569,21 +567,21 @@ void sub_808115C(u8 taskId)
case 1:
if (task->data[1] < 0 || gTasks[task->data[1]].isActive != TRUE)
{
- u8 mapObjId;
- mapObjId = GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0);
- FieldObjectClearAnimIfSpecialAnimActive(&gMapObjects[mapObjId]);
- mapObjId = GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0);
- FieldObjectSetSpecialAnim(&gMapObjects[mapObjId], 9);
+ u8 eventObjId;
+ eventObjId = GetEventObjectIdByLocalIdAndMap(0xFF, 0, 0);
+ EventObjectClearHeldMovementIfActive(&gEventObjects[eventObjId]);
+ eventObjId = GetEventObjectIdByLocalIdAndMap(0xFF, 0, 0);
+ EventObjectSetHeldMovement(&gEventObjects[eventObjId], MOVEMENT_ACTION_WALK_NORMAL_UP);
task->data[0] = 2;
}
break;
case 2:
if (walkrun_is_standing_still())
{
- u8 mapObjId;
+ u8 eventObjId;
task->data[1] = FieldAnimateDoorClose(*x, *y - 1);
- mapObjId = GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0);
- FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[mapObjId]);
+ eventObjId = GetEventObjectIdByLocalIdAndMap(0xFF, 0, 0);
+ EventObjectClearHeldMovementIfFinished(&gEventObjects[eventObjId]);
sub_8080958(0);
task->data[0] = 3;
}
@@ -595,8 +593,8 @@ void sub_808115C(u8 taskId)
}
break;
case 4:
- sub_8053FF8();
- fade_8080918();
+ TryFadeOutOldMapMusic();
+ WarpFadeScreen();
PlayRainSoundEffect();
task->data[0] = 0;
task->func = task0A_fade_n_map_maybe;
@@ -611,18 +609,18 @@ void sub_80812C8(u8 taskId)
switch (task->data[0])
{
case 0:
- FreezeMapObjects();
+ FreezeEventObjects();
ScriptContext2_Enable();
task->data[0]++;
break;
case 1:
- if (!sub_8080E64() && sub_8054034())
+ if (!PaletteFadeActive() && BGMusicStopped())
{
task->data[0]++;
}
break;
case 2:
- warp_in();
+ WarpIntoMap();
SetMainCallback2(sub_8054534);
DestroyTask(taskId);
break;
@@ -632,8 +630,8 @@ void sub_80812C8(u8 taskId)
void sub_8081334(void)
{
ScriptContext2_Enable();
- sub_8053FF8();
- fade_8080918();
+ TryFadeOutOldMapMusic();
+ WarpFadeScreen();
PlayRainSoundEffect();
PlaySE(SE_KAIDAN);
gFieldCallback = sub_8080B60;
diff --git a/src/field_message_box.c b/src/field_message_box.c
index 5eec7a14b..44fd4ac49 100644
--- a/src/field_message_box.c
+++ b/src/field_message_box.c
@@ -20,7 +20,7 @@ void InitFieldMessageBox(void)
{
sMessageBoxMode = FIELD_MESSAGE_BOX_HIDDEN;
TextWindow_SetDlgFrameBaseTileNum(gMenuTextWindowContentTileOffset);
- Text_InitWindowWithTemplate(&gFieldMessageBoxWindow, &gWindowTemplate_81E6CE4);
+ Text_InitWindowWithTemplate(&gFieldMessageBoxWindow, &gMenuTextWindowTemplate);
}
static void Task_FieldMessageBox(u8 taskId)
diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c
index 1552381b2..9a4f5f6cd 100644
--- a/src/field_player_avatar.c
+++ b/src/field_player_avatar.c
@@ -7,7 +7,6 @@
#include "event_object_movement.h"
#include "fieldmap.h"
#include "main.h"
-#include "constants/map_objects.h"
#include "menu.h"
#include "metatile_behavior.h"
#include "new_game.h"
@@ -22,12 +21,14 @@
#include "task.h"
#include "tv.h"
#include "wild_encounter.h"
+#include "constants/field_effects.h"
+#include "constants/event_objects.h"
EWRAM_DATA struct PlayerAvatar gPlayerAvatar = {0};
//Functions
-static bool8 sub_8058854(struct MapObject *, u8);
-static void npc_clear_strange_bits(struct MapObject *a);
+static bool8 sub_8058854(struct EventObject *, u8);
+static void npc_clear_strange_bits(struct EventObject *a);
static void MovePlayerAvatarUsingKeypadInput(u8 a, u16 b, u16 c);
static void PlayerAllowForcedMovementIfMovingSameDirection(void);
static bool8 TryDoMetatileBehaviorForcedMovement(void);
@@ -46,14 +47,14 @@ static bool8 PlayerIsAnimActive(void);
static bool8 PlayerCheckIfAnimFinishedOrInactive(void);
static void PlayerNotOnBikeCollide(u8 a);
static void PlayCollisionSoundIfNotFacingWarp(u8 a);
-static void sub_8059D60(struct MapObject *a);
+static void sub_8059D60(struct EventObject *a);
static void StartStrengthAnim(u8 a, u8 b);
static void DoPlayerMatJump(void);
-static void sub_805A06C(void);
+static void DoPlayerMatSpin(void);
u8 debug_sub_805F2B0(u8);
u8 debug_sub_805F2DC(u8);
-static bool8 (*const gUnknown_0830FB58[])(u8) =
+static bool8 (*const sForcedMovementTestFuncs[])(u8) =
{
MetatileBehavior_IsTrickHouseSlipperyFloor,
MetatileBehavior_IsIce_2,
@@ -70,30 +71,30 @@ static bool8 (*const gUnknown_0830FB58[])(u8) =
MetatileBehavior_IsSlideWest,
MetatileBehavior_IsSlideEast,
MetatileBehavior_IsWaterfall,
- MetatileBehavior_0xBB,
- MetatileBehavior_0xBC,
+ MetatileBehavior_IsSecretBaseJumpMat,
+ MetatileBehavior_IsSecretBaseSpinMat,
MetatileBehavior_IsMuddySlope,
};
-static bool8 (*const gUnknown_0830FBA0[])(void) =
+static bool8 (*const sForcedMovementFuncs[])(void) =
{
ForcedMovement_None,
ForcedMovement_Slip,
ForcedMovement_Slip,
- sub_8058AAC,
- sub_8058AC4,
- sub_8058ADC,
- sub_8058AF4,
- sub_8058B0C,
- sub_8058B24,
- sub_8058B3C,
- sub_8058B54,
+ ForcedMovement_WalkSouth,
+ ForcedMovement_WalkNorth,
+ ForcedMovement_WalkWest,
+ ForcedMovement_WalkEast,
+ ForcedMovement_RideCurrentSouth,
+ ForcedMovement_RideCurrentNorth,
+ ForcedMovement_RideCurrentWest,
+ ForcedMovement_RideCurrentEast,
ForcedMovement_SlideSouth,
ForcedMovement_SlideNorth,
ForcedMovement_SlideWest,
ForcedMovement_SlideEast,
- sub_8058B0C,
- ForcedMovement_MatJump,
- sub_8058C10,
+ ForcedMovement_RideCurrentSouth,
+ ForcedMovement_SecretBaseJumpMat,
+ ForcedMovement_SecretBaseSpinMat,
ForcedMovement_MuddySlope,
};
static void (*const gUnknown_0830FBEC[])(u8, u16) =
@@ -111,7 +112,7 @@ static bool8 (*const gUnknown_0830FBF8[])(u8) =
MetatileBehavior_IsHorizontalRail,
};
static const u8 gUnknown_0830FC0C[] = {9, 10, 11, 12, 13};
-static void (*const gUnknown_0830FC14[])(struct MapObject *) =
+static void (*const gUnknown_0830FC14[])(struct EventObject *) =
{
PlayerAvatarTransition_Normal,
PlayerAvatarTransition_MachBike,
@@ -122,7 +123,7 @@ static void (*const gUnknown_0830FC14[])(struct MapObject *) =
nullsub_49,
nullsub_49,
};
-static bool8 (*const gUnknown_0830FC34[])(u8) =
+static bool8 (*const sArrowWarpMetatileBehaviorChecks[])(u8) =
{
MetatileBehavior_IsSouthArrowWarp,
MetatileBehavior_IsNorthArrowWarp,
@@ -131,83 +132,83 @@ static bool8 (*const gUnknown_0830FC34[])(u8) =
};
static const u8 sRivalAvatarGfxIds[][2] =
{
- {MAP_OBJ_GFX_RIVAL_BRENDAN_NORMAL, MAP_OBJ_GFX_RIVAL_MAY_NORMAL},
- {MAP_OBJ_GFX_RIVAL_BRENDAN_MACH_BIKE, MAP_OBJ_GFX_RIVAL_MAY_MACH_BIKE},
- {MAP_OBJ_GFX_RIVAL_BRENDAN_ACRO_BIKE, MAP_OBJ_GFX_RIVAL_MAY_ACRO_BIKE},
- {MAP_OBJ_GFX_RIVAL_BRENDAN_SURFING, MAP_OBJ_GFX_RIVAL_MAY_SURFING},
- {MAP_OBJ_GFX_BRENDAN_UNDERWATER, MAP_OBJ_GFX_MAY_UNDERWATER},
- {MAP_OBJ_GFX_RIVAL_BRENDAN_FIELD_MOVE, MAP_OBJ_GFX_RIVAL_MAY_FIELD_MOVE},
- {MAP_OBJ_GFX_BRENDAN_FISHING, MAP_OBJ_GFX_MAY_FISHING},
- {MAP_OBJ_GFX_BRENDAN_WATERING, MAP_OBJ_GFX_MAY_WATERING},
+ {EVENT_OBJ_GFX_RIVAL_BRENDAN_NORMAL, EVENT_OBJ_GFX_RIVAL_MAY_NORMAL},
+ {EVENT_OBJ_GFX_RIVAL_BRENDAN_MACH_BIKE, EVENT_OBJ_GFX_RIVAL_MAY_MACH_BIKE},
+ {EVENT_OBJ_GFX_RIVAL_BRENDAN_ACRO_BIKE, EVENT_OBJ_GFX_RIVAL_MAY_ACRO_BIKE},
+ {EVENT_OBJ_GFX_RIVAL_BRENDAN_SURFING, EVENT_OBJ_GFX_RIVAL_MAY_SURFING},
+ {EVENT_OBJ_GFX_BRENDAN_UNDERWATER, EVENT_OBJ_GFX_MAY_UNDERWATER},
+ {EVENT_OBJ_GFX_RIVAL_BRENDAN_FIELD_MOVE, EVENT_OBJ_GFX_RIVAL_MAY_FIELD_MOVE},
+ {EVENT_OBJ_GFX_BRENDAN_FISHING, EVENT_OBJ_GFX_MAY_FISHING},
+ {EVENT_OBJ_GFX_BRENDAN_WATERING, EVENT_OBJ_GFX_MAY_WATERING},
};
static const u8 sPlayerAvatarGfxIds[][2] =
{
- {MAP_OBJ_GFX_BRENDAN_NORMAL, MAP_OBJ_GFX_MAY_NORMAL},
- {MAP_OBJ_GFX_BRENDAN_MACH_BIKE, MAP_OBJ_GFX_MAY_MACH_BIKE},
- {MAP_OBJ_GFX_BRENDAN_ACRO_BIKE, MAP_OBJ_GFX_MAY_ACRO_BIKE},
- {MAP_OBJ_GFX_BRENDAN_SURFING, MAP_OBJ_GFX_MAY_SURFING},
- {MAP_OBJ_GFX_BRENDAN_UNDERWATER, MAP_OBJ_GFX_MAY_UNDERWATER},
- {MAP_OBJ_GFX_BRENDAN_FIELD_MOVE, MAP_OBJ_GFX_MAY_FIELD_MOVE},
- {MAP_OBJ_GFX_BRENDAN_FISHING, MAP_OBJ_GFX_MAY_FISHING},
- {MAP_OBJ_GFX_BRENDAN_WATERING, MAP_OBJ_GFX_MAY_WATERING},
+ {EVENT_OBJ_GFX_BRENDAN_NORMAL, EVENT_OBJ_GFX_MAY_NORMAL},
+ {EVENT_OBJ_GFX_BRENDAN_MACH_BIKE, EVENT_OBJ_GFX_MAY_MACH_BIKE},
+ {EVENT_OBJ_GFX_BRENDAN_ACRO_BIKE, EVENT_OBJ_GFX_MAY_ACRO_BIKE},
+ {EVENT_OBJ_GFX_BRENDAN_SURFING, EVENT_OBJ_GFX_MAY_SURFING},
+ {EVENT_OBJ_GFX_BRENDAN_UNDERWATER, EVENT_OBJ_GFX_MAY_UNDERWATER},
+ {EVENT_OBJ_GFX_BRENDAN_FIELD_MOVE, EVENT_OBJ_GFX_MAY_FIELD_MOVE},
+ {EVENT_OBJ_GFX_BRENDAN_FISHING, EVENT_OBJ_GFX_MAY_FISHING},
+ {EVENT_OBJ_GFX_BRENDAN_WATERING, EVENT_OBJ_GFX_MAY_WATERING},
};
static const u8 gUnknown_0830FC64[2][5][2] =
{
//male
{
- {MAP_OBJ_GFX_BRENDAN_NORMAL, 1},
- {MAP_OBJ_GFX_BRENDAN_MACH_BIKE, 2},
- {MAP_OBJ_GFX_BRENDAN_ACRO_BIKE, 4},
- {MAP_OBJ_GFX_BRENDAN_SURFING, 8},
- {MAP_OBJ_GFX_BRENDAN_UNDERWATER, 16},
+ {EVENT_OBJ_GFX_BRENDAN_NORMAL, 1},
+ {EVENT_OBJ_GFX_BRENDAN_MACH_BIKE, 2},
+ {EVENT_OBJ_GFX_BRENDAN_ACRO_BIKE, 4},
+ {EVENT_OBJ_GFX_BRENDAN_SURFING, 8},
+ {EVENT_OBJ_GFX_BRENDAN_UNDERWATER, 16},
},
//female
{
- {MAP_OBJ_GFX_MAY_NORMAL, 1},
- {MAP_OBJ_GFX_MAY_MACH_BIKE, 2},
- {MAP_OBJ_GFX_MAY_ACRO_BIKE, 4},
- {MAP_OBJ_GFX_MAY_SURFING, 8},
- {MAP_OBJ_GFX_MAY_UNDERWATER, 16},
+ {EVENT_OBJ_GFX_MAY_NORMAL, 1},
+ {EVENT_OBJ_GFX_MAY_MACH_BIKE, 2},
+ {EVENT_OBJ_GFX_MAY_ACRO_BIKE, 4},
+ {EVENT_OBJ_GFX_MAY_SURFING, 8},
+ {EVENT_OBJ_GFX_MAY_UNDERWATER, 16},
}
};
-static bool8 (*const gUnknown_0830FC78[])(u8) = //Duplicate of gUnknown_0830FC34
+static bool8 (*const sArrowWarpMetatileBehaviorChecks2[])(u8) = //Duplicate of sArrowWarpMetatileBehaviorChecks
{
MetatileBehavior_IsSouthArrowWarp,
MetatileBehavior_IsNorthArrowWarp,
MetatileBehavior_IsWestArrowWarp,
MetatileBehavior_IsEastArrowWarp,
};
-static u8 (*const gUnknown_0830FC88[])(struct Task *, struct MapObject *, struct MapObject *) =
+static u8 (*const gUnknown_0830FC88[])(struct Task *, struct EventObject *, struct EventObject *) =
{
sub_8059E84,
sub_8059EA4,
sub_8059F40,
};
-static u8 (*const sPlayerAvatarSecretBaseMatJump[])(struct Task *, struct MapObject *) =
+static u8 (*const sPlayerAvatarSecretBaseMatJump[])(struct Task *, struct EventObject *) =
{
PlayerAvatar_DoSecretBaseMatJump,
};
-static u8 (*const gUnknown_0830FC98[])(struct Task *, struct MapObject *) =
+static u8 (*const sPlayerAvatarSecretBaseMatSpin[])(struct Task *, struct EventObject *) =
{
- sub_805A0D8,
- sub_805A100,
- sub_805A178,
- sub_805A1B8,
+ PlayerAvatar_SecretBaseMatSpinStep0,
+ PlayerAvatar_SecretBaseMatSpinStep1,
+ PlayerAvatar_SecretBaseMatSpinStep2,
+ PlayerAvatar_SecretBaseMatSpinStep3,
};
-fieldmap_object_null_cb(sub_80587B4, sub_80587D8);
+movement_type_empty_callback(MovementType_Player);
void player_step(u8 direction, u16 newKeys, u16 heldKeys)
{
- struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+ struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
- sub_8059D60(playerMapObj);
+ sub_8059D60(playerEventObj);
if (gPlayerAvatar.preventStep == FALSE)
{
Bike_TryAcroBikeHistoryUpdate(newKeys, heldKeys);
- if (!sub_8058854(playerMapObj, direction))
+ if (!sub_8058854(playerEventObj, direction))
{
- npc_clear_strange_bits(playerMapObj);
+ npc_clear_strange_bits(playerEventObj);
DoPlayerAvatarTransition();
if (TryDoMetatileBehaviorForcedMovement() == 0)
{
@@ -218,16 +219,15 @@ void player_step(u8 direction, u16 newKeys, u16 heldKeys)
}
}
-static bool8 sub_8058854(struct MapObject *playerMapObj, u8 direction)
+static bool8 sub_8058854(struct EventObject *playerEventObj, u8 direction)
{
- if (FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(playerMapObj)
- && !FieldObjectClearAnimIfSpecialAnimFinished(playerMapObj))
+ if (EventObjectIsMovementOverridden(playerEventObj)
+ && !EventObjectClearHeldMovementIfFinished(playerEventObj))
{
- u8 specialAnim = FieldObjectGetSpecialAnim(playerMapObj);
-
- if (specialAnim > 24 && specialAnim < 29 && direction != DIR_NONE && playerMapObj->placeholder18 != direction)
+ u8 heldMovementActionId = EventObjectGetHeldMovementActionId(playerEventObj);
+ if (heldMovementActionId > 24 && heldMovementActionId < 29 && direction != DIR_NONE && playerEventObj->movementDirection != direction)
{
- FieldObjectClearAnim(playerMapObj);
+ EventObjectClearHeldMovement(playerEventObj);
return FALSE;
}
else
@@ -238,11 +238,11 @@ static bool8 sub_8058854(struct MapObject *playerMapObj, u8 direction)
return FALSE;
}
-static void npc_clear_strange_bits(struct MapObject *a)
+static void npc_clear_strange_bits(struct EventObject *eventObj)
{
- a->mapobj_bit_12 = 0;
- a->mapobj_bit_10 = 0;
- a->mapobj_bit_9 = 0;
+ eventObj->inanimate = 0;
+ eventObj->disableAnim = 0;
+ eventObj->facingDirectionLocked = 0;
gPlayerAvatar.flags &= ~PLAYER_AVATAR_FLAG_DASH;
}
@@ -264,10 +264,10 @@ static void PlayerAllowForcedMovementIfMovingSameDirection(void)
static bool8 TryDoMetatileBehaviorForcedMovement(void)
{
#if DEBUG
- if (gUnknown_020297ED != 0 && (gMain.heldKeys & 0x100))
+ if (gUnknown_020297ED != 0 && (gMain.heldKeys & R_BUTTON))
return 0;
#endif
- return gUnknown_0830FBA0[GetForcedMovementByMetatileBehavior()]();
+ return sForcedMovementFuncs[GetForcedMovementByMetatileBehavior()]();
}
static u8 GetForcedMovementByMetatileBehavior(void)
@@ -276,11 +276,11 @@ static u8 GetForcedMovementByMetatileBehavior(void)
if (!(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_5))
{
- u8 r5 = gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_1E;
+ u8 metatileBehavior = gEventObjects[gPlayerAvatar.eventObjectId].currentMetatileBehavior;
for (i = 0; i < 18; i++)
{
- if (gUnknown_0830FB58[i](r5))
+ if (sForcedMovementTestFuncs[i](metatileBehavior))
return i + 1;
}
}
@@ -291,11 +291,11 @@ bool8 ForcedMovement_None(void)
{
if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_6)
{
- struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+ struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
- playerMapObj->mapobj_bit_9 = 0;
- playerMapObj->mapobj_bit_11 = 1;
- FieldObjectSetDirection(playerMapObj, playerMapObj->mapobj_unk_18);
+ playerEventObj->facingDirectionLocked = 0;
+ playerEventObj->enableAnim = 1;
+ SetEventObjectDirection(playerEventObj, playerEventObj->facingDirection);
gPlayerAvatar.flags &= ~PLAYER_AVATAR_FLAG_6;
}
return FALSE;
@@ -333,10 +333,10 @@ static u8 DoForcedMovement(u8 direction, void (*b)(u8))
static u8 DoForcedMovementInCurrentDirection(void (*a)(u8))
{
- struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+ struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
- playerMapObj->mapobj_bit_10 = 1;
- return DoForcedMovement(playerMapObj->placeholder18, a);
+ playerEventObj->disableAnim = 1;
+ return DoForcedMovement(playerEventObj->movementDirection, a);
}
bool8 ForcedMovement_Slip(void)
@@ -344,95 +344,95 @@ bool8 ForcedMovement_Slip(void)
return DoForcedMovementInCurrentDirection(PlayerGoSpeed2);
}
-bool8 sub_8058AAC(void)
+bool8 ForcedMovement_WalkSouth(void)
{
- return DoForcedMovement(1, PlayerGoSpeed1);
+ return DoForcedMovement(DIR_SOUTH, PlayerGoSpeed1);
}
-bool8 sub_8058AC4(void)
+bool8 ForcedMovement_WalkNorth(void)
{
- return DoForcedMovement(2, PlayerGoSpeed1);
+ return DoForcedMovement(DIR_NORTH, PlayerGoSpeed1);
}
-bool8 sub_8058ADC(void)
+bool8 ForcedMovement_WalkWest(void)
{
- return DoForcedMovement(3, PlayerGoSpeed1);
+ return DoForcedMovement(DIR_WEST, PlayerGoSpeed1);
}
-bool8 sub_8058AF4(void)
+bool8 ForcedMovement_WalkEast(void)
{
- return DoForcedMovement(4, PlayerGoSpeed1);
+ return DoForcedMovement(DIR_EAST, PlayerGoSpeed1);
}
-bool8 sub_8058B0C(void)
+bool8 ForcedMovement_RideCurrentSouth(void)
{
- return DoForcedMovement(1, npc_use_some_d2s);
+ return DoForcedMovement(DIR_SOUTH, PlayerRideWaterCurrent);
}
-bool8 sub_8058B24(void)
+bool8 ForcedMovement_RideCurrentNorth(void)
{
- return DoForcedMovement(2, npc_use_some_d2s);
+ return DoForcedMovement(DIR_NORTH, PlayerRideWaterCurrent);
}
-bool8 sub_8058B3C(void)
+bool8 ForcedMovement_RideCurrentWest(void)
{
- return DoForcedMovement(3, npc_use_some_d2s);
+ return DoForcedMovement(DIR_WEST, PlayerRideWaterCurrent);
}
-bool8 sub_8058B54(void)
+bool8 ForcedMovement_RideCurrentEast(void)
{
- return DoForcedMovement(4, npc_use_some_d2s);
+ return DoForcedMovement(DIR_EAST, PlayerRideWaterCurrent);
}
static u8 ForcedMovement_Slide(u8 direction, void (*b)(u8))
{
- struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+ struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
- playerMapObj->mapobj_bit_10 = 1;
- playerMapObj->mapobj_bit_9 = 1;
+ playerEventObj->disableAnim = 1;
+ playerEventObj->facingDirectionLocked = 1;
return DoForcedMovement(direction, b);
}
bool8 ForcedMovement_SlideSouth(void)
{
- return ForcedMovement_Slide(1, PlayerGoSpeed2);
+ return ForcedMovement_Slide(DIR_SOUTH, PlayerGoSpeed2);
}
bool8 ForcedMovement_SlideNorth(void)
{
- return ForcedMovement_Slide(2, PlayerGoSpeed2);
+ return ForcedMovement_Slide(DIR_NORTH, PlayerGoSpeed2);
}
bool8 ForcedMovement_SlideWest(void)
{
- return ForcedMovement_Slide(3, PlayerGoSpeed2);
+ return ForcedMovement_Slide(DIR_WEST, PlayerGoSpeed2);
}
bool8 ForcedMovement_SlideEast(void)
{
- return ForcedMovement_Slide(4, PlayerGoSpeed2);
+ return ForcedMovement_Slide(DIR_EAST, PlayerGoSpeed2);
}
-bool8 ForcedMovement_MatJump(void)
+bool8 ForcedMovement_SecretBaseJumpMat(void)
{
DoPlayerMatJump();
return TRUE;
}
-bool8 sub_8058C10(void)
+bool8 ForcedMovement_SecretBaseSpinMat(void)
{
- sub_805A06C();
+ DoPlayerMatSpin();
return TRUE;
}
bool8 ForcedMovement_MuddySlope(void)
{
- struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+ struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
- if (playerMapObj->placeholder18 != 2 || GetPlayerSpeed() <= 3)
+ if (playerEventObj->movementDirection != DIR_NORTH || GetPlayerSpeed() <= 3)
{
Bike_UpdateBikeCounterSpeed(0);
- playerMapObj->mapobj_bit_9 = 1;
+ playerEventObj->facingDirectionLocked = 1;
return DoForcedMovement(1, PlayerGoSpeed2);
}
else
@@ -457,7 +457,7 @@ static u8 CheckMovementInputNotOnBike(u8 direction)
gPlayerAvatar.runningState = NOT_MOVING;
return 0;
}
- else if (direction != player_get_direction_upper_nybble() && gPlayerAvatar.runningState != MOVING)
+ else if (direction != GetPlayerMovementDirection() && gPlayerAvatar.runningState != MOVING)
{
gPlayerAvatar.runningState = TURN_DIRECTION;
return 1;
@@ -471,7 +471,7 @@ static u8 CheckMovementInputNotOnBike(u8 direction)
void PlayerNotOnBikeNotMoving(u8 direction, u16 heldKeys)
{
- PlayerFaceDirection(player_get_direction_lower_nybble());
+ PlayerFaceDirection(GetPlayerFacingDirection());
}
void PlayerNotOnBikeTurningInPlace(u8 direction, u16 heldKeys)
@@ -499,8 +499,8 @@ void sub_8058D0C(u8 direction, u16 heldKeys)
PlayerGoSpeed2(direction);
return;
}
- if (!(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_4) && (heldKeys & B_BUTTON) && FlagGet(FLAG_SYS_B_DASH)
- && IsRunningDisallowed(gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_1E) == 0)
+ if (!(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_UNDERWATER) && (heldKeys & B_BUTTON) && FlagGet(FLAG_SYS_B_DASH)
+ && IsRunningDisallowed(gEventObjects[gPlayerAvatar.eventObjectId].currentMetatileBehavior) == 0)
{
sub_805940C(direction);
gPlayerAvatar.flags |= PLAYER_AVATAR_FLAG_DASH;
@@ -515,19 +515,19 @@ void sub_8058D0C(u8 direction, u16 heldKeys)
static u8 CheckForPlayerAvatarCollision(u8 direction)
{
s16 x, y;
- struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+ struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
- x = playerMapObj->coords2.x;
- y = playerMapObj->coords2.y;
+ x = playerEventObj->currentCoords.x;
+ y = playerEventObj->currentCoords.y;
MoveCoords(direction, &x, &y);
- return CheckForFieldObjectCollision(playerMapObj, x, y, direction, MapGridGetMetatileBehaviorAt(x, y));
+ return CheckForEventObjectCollision(playerEventObj, x, y, direction, MapGridGetMetatileBehaviorAt(x, y));
}
-u8 CheckForFieldObjectCollision(struct MapObject *a, s16 x, s16 y, u8 direction, u8 e)
+u8 CheckForEventObjectCollision(struct EventObject *a, s16 x, s16 y, u8 direction, u8 e)
{
u8 collision;
- collision = npc_block_way(a, x, y, direction);
+ collision = GetCollisionAtCoords(a, x, y, direction);
if (collision == 3 && sub_8058EF0(x, y, direction))
return 5;
if (ShouldJumpLedge(x, y, direction))
@@ -551,7 +551,7 @@ static u8 sub_8058EF0(s16 a, s16 b, u8 c)
{
if ((gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING)
&& MapGridGetZCoordAt(a, b) == 3
- && GetFieldObjectIdByXYZ(a, b, 3) == 16)
+ && GetEventObjectIdByXYZ(a, b, 3) == 16)
{
sub_805A20C(c);
return 1;
@@ -574,19 +574,19 @@ static u8 sub_8058F6C(s16 a, s16 b, u8 c)
{
if (FlagGet(FLAG_SYS_USE_STRENGTH))
{
- u8 mapObjectId = GetFieldObjectIdByXY(a, b);
+ u8 eventObjectId = GetEventObjectIdByXY(a, b);
- if (mapObjectId != 16)
+ if (eventObjectId != 16)
{
- if (gMapObjects[mapObjectId].graphicsId == 0x57)
+ if (gEventObjects[eventObjectId].graphicsId == 0x57)
{
- a = gMapObjects[mapObjectId].coords2.x;
- b = gMapObjects[mapObjectId].coords2.y;
+ a = gEventObjects[eventObjectId].currentCoords.x;
+ b = gEventObjects[eventObjectId].currentCoords.y;
MoveCoords(c, &a, &b);
- if (npc_block_way(&gMapObjects[mapObjectId], a, b, c) == 0
+ if (GetCollisionAtCoords(&gEventObjects[eventObjectId], a, b, c) == 0
&& MetatileBehavior_IsNonAnimDoor(MapGridGetMetatileBehaviorAt(a, b)) == 0)
{
- StartStrengthAnim(mapObjectId, c);
+ StartStrengthAnim(eventObjectId, c);
return 1;
}
}
@@ -627,13 +627,13 @@ static void DoPlayerAvatarTransition(void)
#ifdef NONMATCHING
if (flags & 1)
{
- gUnknown_0830FC14[i](&gMapObjects[gPlayerAvatar.mapObjectId]);
+ gUnknown_0830FC14[i](&gEventObjects[gPlayerAvatar.eventObjectId]);
}
#else
if (flags & 1)
{
- register void (*const *funcs)(struct MapObject *) asm("r0") = gUnknown_0830FC14;
- funcs[i](&gMapObjects[gPlayerAvatar.mapObjectId]);
+ register void (*const *funcs)(struct EventObject *) asm("r0") = gUnknown_0830FC14;
+ funcs[i](&gEventObjects[gPlayerAvatar.eventObjectId]);
}
#endif
}
@@ -641,58 +641,58 @@ static void DoPlayerAvatarTransition(void)
}
}
-void nullsub_49(struct MapObject *a)
+void nullsub_49(struct EventObject *eventObj)
{
}
-void PlayerAvatarTransition_Normal(struct MapObject *a)
+void PlayerAvatarTransition_Normal(struct EventObject *eventObj)
{
- sub_805B980(a, GetPlayerAvatarGraphicsIdByStateId(0));
- FieldObjectTurn(a, a->placeholder18);
- SetPlayerAvatarStateMask(1);
+ sub_805B980(eventObj, GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_STATE_NORMAL));
+ EventObjectTurn(eventObj, eventObj->movementDirection);
+ SetPlayerAvatarStateMask(PLAYER_AVATAR_FLAG_ON_FOOT);
}
-void PlayerAvatarTransition_MachBike(struct MapObject *a)
+void PlayerAvatarTransition_MachBike(struct EventObject *eventObj)
{
- sub_805B980(a, GetPlayerAvatarGraphicsIdByStateId(1));
- FieldObjectTurn(a, a->placeholder18);
- SetPlayerAvatarStateMask(2);
+ sub_805B980(eventObj, GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_STATE_MACH_BIKE));
+ EventObjectTurn(eventObj, eventObj->movementDirection);
+ SetPlayerAvatarStateMask(PLAYER_AVATAR_FLAG_MACH_BIKE);
BikeClearState(0, 0);
}
-void PlayerAvatarTransition_AcroBike(struct MapObject *a)
+void PlayerAvatarTransition_AcroBike(struct EventObject *eventObj)
{
- sub_805B980(a, GetPlayerAvatarGraphicsIdByStateId(2));
- FieldObjectTurn(a, a->placeholder18);
- SetPlayerAvatarStateMask(4);
+ sub_805B980(eventObj, GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_STATE_ACRO_BIKE));
+ EventObjectTurn(eventObj, eventObj->movementDirection);
+ SetPlayerAvatarStateMask(PLAYER_AVATAR_FLAG_ACRO_BIKE);
BikeClearState(0, 0);
Bike_HandleBumpySlopeJump();
}
-void PlayerAvatarTransition_Surfing(struct MapObject *a)
+void PlayerAvatarTransition_Surfing(struct EventObject *eventObj)
{
u8 unk;
- sub_805B980(a, GetPlayerAvatarGraphicsIdByStateId(3));
- FieldObjectTurn(a, a->placeholder18);
- SetPlayerAvatarStateMask(8);
- gFieldEffectArguments[0] = a->coords2.x;
- gFieldEffectArguments[1] = a->coords2.y;
- gFieldEffectArguments[2] = gPlayerAvatar.mapObjectId;
+ sub_805B980(eventObj, GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_STATE_SURFING));
+ EventObjectTurn(eventObj, eventObj->movementDirection);
+ SetPlayerAvatarStateMask(PLAYER_AVATAR_FLAG_SURFING);
+ gFieldEffectArguments[0] = eventObj->currentCoords.x;
+ gFieldEffectArguments[1] = eventObj->currentCoords.y;
+ gFieldEffectArguments[2] = gPlayerAvatar.eventObjectId;
unk = FieldEffectStart(FLDEFF_SURF_BLOB);
- a->mapobj_unk_1A = unk;
+ eventObj->fieldEffectSpriteId = unk;
sub_8127ED0(unk, 1);
}
-void PlayerAvatarTransition_Underwater(struct MapObject *a)
+void PlayerAvatarTransition_Underwater(struct EventObject *eventObj)
{
- sub_805B980(a, GetPlayerAvatarGraphicsIdByStateId(4));
- FieldObjectTurn(a, a->placeholder18);
- SetPlayerAvatarStateMask(16);
- a->mapobj_unk_1A = sub_8128124(a->spriteId);
+ sub_805B980(eventObj, GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_STATE_UNDERWATER));
+ EventObjectTurn(eventObj, eventObj->movementDirection);
+ SetPlayerAvatarStateMask(PLAYER_AVATAR_FLAG_UNDERWATER);
+ eventObj->fieldEffectSpriteId = sub_8128124(eventObj->spriteId);
}
-void sub_80591F4(struct MapObject *a)
+void sub_80591F4(struct EventObject *eventObj)
{
gPlayerAvatar.flags |= PLAYER_AVATAR_FLAG_5;
}
@@ -717,7 +717,7 @@ void sub_8059204(void)
static bool8 player_is_anim_in_certain_ranges(void)
{
- u8 unk = gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_1C;
+ u8 unk = gEventObjects[gPlayerAvatar.eventObjectId].movementActionId;
if (unk < 4
|| (unk >= 16 && unk < 0x15)
@@ -739,92 +739,92 @@ static bool8 sub_80592A4(void)
static bool8 PlayerIsAnimActive(void)
{
- return FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(&gMapObjects[gPlayerAvatar.mapObjectId]);
+ return EventObjectIsMovementOverridden(&gEventObjects[gPlayerAvatar.eventObjectId]);
}
static bool8 PlayerCheckIfAnimFinishedOrInactive(void)
{
- return FieldObjectCheckIfSpecialAnimFinishedOrInactive(&gMapObjects[gPlayerAvatar.mapObjectId]);
+ return EventObjectCheckHeldMovementStatus(&gEventObjects[gPlayerAvatar.eventObjectId]);
}
-static void player_set_x22(u8 a)
+static void PlayerSetCopyableMovement(u8 a)
{
- gMapObjects[gPlayerAvatar.mapObjectId].animId = a;
+ gEventObjects[gPlayerAvatar.eventObjectId].playerCopyableMovement = a;
}
-u8 player_get_x22(void)
+u8 PlayerGetCopyableMovement(void)
{
- return gMapObjects[gPlayerAvatar.mapObjectId].animId;
+ return gEventObjects[gPlayerAvatar.eventObjectId].playerCopyableMovement;
}
static void sub_8059348(u8 a)
{
- FieldObjectForceSetSpecialAnim(&gMapObjects[gPlayerAvatar.mapObjectId], a);
+ EventObjectForceSetHeldMovement(&gEventObjects[gPlayerAvatar.eventObjectId], a);
}
-void PlayerSetAnimId(u8 animId, u8 b)
+void PlayerSetAnimId(u8 movementActionId, u8 copyableMovement)
{
if (!PlayerIsAnimActive())
{
- player_set_x22(b);
- FieldObjectSetSpecialAnim(&gMapObjects[gPlayerAvatar.mapObjectId], animId);
+ PlayerSetCopyableMovement(copyableMovement);
+ EventObjectSetHeldMovement(&gEventObjects[gPlayerAvatar.eventObjectId], movementActionId);
}
}
// normal speed (1 speed)
void PlayerGoSpeed1(u8 a)
{
- PlayerSetAnimId(GetGoSpeed0AnimId(a), 2);
+ PlayerSetAnimId(GetWalkNormalMovementAction(a), 2);
}
// fast speed (2 speed)
void PlayerGoSpeed2(u8 a)
{
- PlayerSetAnimId(sub_8060744(a), 2);
+ PlayerSetAnimId(GetWalkFastMovementAction(a), 2);
}
-void npc_use_some_d2s(u8 a)
+void PlayerRideWaterCurrent(u8 a)
{
- PlayerSetAnimId(d2s_08064034(a), 2);
+ PlayerSetAnimId(GetRideWaterCurrentMovementAction(a), 2);
}
// fastest speed (4 speed)
void PlayerGoSpeed4(u8 a)
{
- PlayerSetAnimId(sub_806079C(a), 2);
+ PlayerSetAnimId(GetWalkFastestMovementAction(a), 2);
}
void sub_805940C(u8 a)
{
- PlayerSetAnimId(sub_80607F4(a), 2);
+ PlayerSetAnimId(GetPlayerRunMovementAction(a), 2);
}
void PlayerOnBikeCollide(u8 a)
{
PlayCollisionSoundIfNotFacingWarp(a);
- PlayerSetAnimId(GetStepInPlaceDelay16AnimId(a), 2);
+ PlayerSetAnimId(GetWalkInPlaceNormalMovementAction(a), 2);
}
static void PlayerNotOnBikeCollide(u8 a)
{
PlayCollisionSoundIfNotFacingWarp(a);
- PlayerSetAnimId(GetStepInPlaceDelay32AnimId(a), 2);
+ PlayerSetAnimId(GetWalkInPlaceSlowMovementAction(a), 2);
}
void PlayerFaceDirection(u8 direction)
{
- PlayerSetAnimId(GetFaceDirectionAnimId(direction), 1);
+ PlayerSetAnimId(GetFaceDirectionMovementAction(direction), 1);
}
void PlayerTurnInPlace(u8 direction)
{
- PlayerSetAnimId(GetStepInPlaceDelay8AnimId(direction), 1);
+ PlayerSetAnimId(GetWalkInPlaceFastMovementAction(direction), 1);
}
void PlayerJumpLedge(u8 direction)
{
PlaySE(SE_DANSA);
- PlayerSetAnimId(GetJumpLedgeAnimId(direction), 8);
+ PlayerSetAnimId(GetJump2MovementAction(direction), 8);
}
void sub_80594C0(void)
@@ -832,83 +832,83 @@ void sub_80594C0(void)
if (gPlayerAvatar.tileTransitionState == T_TILE_CENTER || gPlayerAvatar.tileTransitionState == T_NOT_MOVING)
{
if (player_should_look_direction_be_enforced_upon_movement())
- sub_8059348(GetFaceDirectionAnimId(gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_18));
+ sub_8059348(GetFaceDirectionMovementAction(gEventObjects[gPlayerAvatar.eventObjectId].facingDirection));
}
}
// wheelie idle
-void PlayerIdleWheelie(u8 a)
+void PlayerIdleWheelie(u8 direction)
{
- PlayerSetAnimId(sub_80609D8(a), 1);
+ PlayerSetAnimId(GetAcroWheelieFaceDirectionMovementAction(direction), 1);
}
// normal to wheelie
-void PlayerStartWheelie(u8 a)
+void PlayerStartWheelie(u8 direction)
{
- PlayerSetAnimId(sub_8060A04(a), 1);
+ PlayerSetAnimId(GetAcroPopWheelieFaceDirectionMovementAction(direction), 1);
}
// wheelie to normal
-void PlayerEndWheelie(u8 a)
+void PlayerEndWheelie(u8 direction)
{
- PlayerSetAnimId(sub_8060A30(a), 1);
+ PlayerSetAnimId(GetAcroEndWheelieFaceDirectionMovementAction(direction), 1);
}
// wheelie hopping standing
void PlayerStandingHoppingWheelie(u8 a)
{
PlaySE(SE_JITE_PYOKO);
- PlayerSetAnimId(sub_8060A5C(a), 1);
+ PlayerSetAnimId(GetAcroWheelieHopFaceDirectionMovementAction(a), 1);
}
// wheelie hopping moving
void PlayerMovingHoppingWheelie(u8 a)
{
PlaySE(SE_JITE_PYOKO);
- PlayerSetAnimId(sub_8060A88(a), 2);
+ PlayerSetAnimId(GetAcroWheelieHopDirectionMovementAction(a), 2);
}
// wheelie hopping ledge
void PlayerLedgeHoppingWheelie(u8 a)
{
PlaySE(SE_JITE_PYOKO);
- PlayerSetAnimId(sub_8060AB4(a), 8);
+ PlayerSetAnimId(GetAcroWheelieJumpDirectionMovementAction(a), 8);
}
// acro turn jump
void PlayerAcroTurnJump(u8 direction)
{
PlaySE(SE_JITE_PYOKO);
- PlayerSetAnimId(sub_8060878(direction), 1);
+ PlayerSetAnimId(GetJumpInPlaceTurnAroundMovementAction(direction), 1);
}
void sub_80595DC(u8 direction)
{
PlaySE(SE_WALL_HIT);
- PlayerSetAnimId(sub_8060AE0(direction), 2);
+ PlayerSetAnimId(GetAcroWheelieInPlaceDirectionMovementAction(direction), 2);
}
-void sub_8059600(u8 a)
+void sub_8059600(u8 direction)
{
- PlayerSetAnimId(sub_8060B0C(a), 2);
+ PlayerSetAnimId(GetAcroPopWheelieMoveDirectionMovementAction(direction), 2);
}
-void sub_8059618(u8 a)
+void sub_8059618(u8 direction)
{
- PlayerSetAnimId(sub_8060B38(a), 2);
+ PlayerSetAnimId(GetAcroWheelieMoveDirectionMovementAction(direction), 2);
}
-void sub_8059630(u8 a)
+void sub_8059630(u8 direction)
{
- PlayerSetAnimId(sub_8060B64(a), 2);
+ PlayerSetAnimId(GetAcroEndWheelieMoveDirectionMovementAction(direction), 2);
}
static void PlayCollisionSoundIfNotFacingWarp(u8 a)
{
s16 x, y;
- u8 unk = gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_1E;
+ u8 metatileBehavior = gEventObjects[gPlayerAvatar.eventObjectId].currentMetatileBehavior;
- if (!gUnknown_0830FC34[a - 1](unk))
+ if (!sArrowWarpMetatileBehaviorChecks[a - 1](metatileBehavior))
{
if (a == 2)
{
@@ -923,35 +923,35 @@ static void PlayCollisionSoundIfNotFacingWarp(u8 a)
void GetXYCoordsOneStepInFrontOfPlayer(s16 *x, s16 *y)
{
- *x = gMapObjects[gPlayerAvatar.mapObjectId].coords2.x;
- *y = gMapObjects[gPlayerAvatar.mapObjectId].coords2.y;
- MoveCoords(player_get_direction_lower_nybble(), x, y);
+ *x = gEventObjects[gPlayerAvatar.eventObjectId].currentCoords.x;
+ *y = gEventObjects[gPlayerAvatar.eventObjectId].currentCoords.y;
+ MoveCoords(GetPlayerFacingDirection(), x, y);
}
void PlayerGetDestCoords(s16 *x, s16 *y)
{
- *x = gMapObjects[gPlayerAvatar.mapObjectId].coords2.x;
- *y = gMapObjects[gPlayerAvatar.mapObjectId].coords2.y;
+ *x = gEventObjects[gPlayerAvatar.eventObjectId].currentCoords.x;
+ *y = gEventObjects[gPlayerAvatar.eventObjectId].currentCoords.y;
}
-u8 player_get_direction_lower_nybble(void)
+u8 GetPlayerFacingDirection(void)
{
- return gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_18;
+ return gEventObjects[gPlayerAvatar.eventObjectId].facingDirection;
}
-u8 player_get_direction_upper_nybble(void)
+u8 GetPlayerMovementDirection(void)
{
- return gMapObjects[gPlayerAvatar.mapObjectId].placeholder18;
+ return gEventObjects[gPlayerAvatar.eventObjectId].movementDirection;
}
u8 PlayerGetZCoord(void)
{
- return gMapObjects[gPlayerAvatar.mapObjectId].elevation;
+ return gEventObjects[gPlayerAvatar.eventObjectId].previousElevation;
}
void unref_sub_8059790(s16 a, s16 b)
{
- sub_805C058(&gMapObjects[gPlayerAvatar.mapObjectId], a, b);
+ sub_805C058(&gEventObjects[gPlayerAvatar.eventObjectId], a, b);
}
u8 TestPlayerAvatarFlags(u8 a)
@@ -976,10 +976,10 @@ void sub_80597E8(void)
void sub_80597F4(void)
{
- struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+ struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
- npc_clear_strange_bits(playerMapObj);
- FieldObjectSetDirection(playerMapObj, playerMapObj->mapobj_unk_18);
+ npc_clear_strange_bits(playerEventObj);
+ SetEventObjectDirection(playerEventObj, playerEventObj->facingDirection);
if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_MACH_BIKE | PLAYER_AVATAR_FLAG_ACRO_BIKE))
{
Bike_HandleBumpySlopeJump();
@@ -1006,14 +1006,14 @@ u8 unref_GetRivalAvatarGenderByGraphcsId(u8 gfxId)
{
switch (gfxId)
{
- case MAP_OBJ_GFX_RIVAL_MAY_NORMAL:
- case MAP_OBJ_GFX_RIVAL_MAY_MACH_BIKE:
- case MAP_OBJ_GFX_RIVAL_MAY_ACRO_BIKE:
- case MAP_OBJ_GFX_RIVAL_MAY_SURFING:
- case MAP_OBJ_GFX_RIVAL_MAY_FIELD_MOVE:
- case MAP_OBJ_GFX_MAY_UNDERWATER:
- case MAP_OBJ_GFX_MAY_FISHING:
- case MAP_OBJ_GFX_MAY_WATERING:
+ case EVENT_OBJ_GFX_RIVAL_MAY_NORMAL:
+ case EVENT_OBJ_GFX_RIVAL_MAY_MACH_BIKE:
+ case EVENT_OBJ_GFX_RIVAL_MAY_ACRO_BIKE:
+ case EVENT_OBJ_GFX_RIVAL_MAY_SURFING:
+ case EVENT_OBJ_GFX_RIVAL_MAY_FIELD_MOVE:
+ case EVENT_OBJ_GFX_MAY_UNDERWATER:
+ case EVENT_OBJ_GFX_MAY_FISHING:
+ case EVENT_OBJ_GFX_MAY_WATERING:
return FEMALE;
default:
return MALE;
@@ -1024,14 +1024,14 @@ u8 GetPlayerAvatarGenderByGraphicsId(u8 gfxId)
{
switch (gfxId)
{
- case MAP_OBJ_GFX_MAY_NORMAL:
- case MAP_OBJ_GFX_MAY_MACH_BIKE:
- case MAP_OBJ_GFX_MAY_ACRO_BIKE:
- case MAP_OBJ_GFX_MAY_SURFING:
- case MAP_OBJ_GFX_MAY_FIELD_MOVE:
- case MAP_OBJ_GFX_MAY_UNDERWATER:
- case MAP_OBJ_GFX_MAY_FISHING:
- case MAP_OBJ_GFX_MAY_WATERING:
+ case EVENT_OBJ_GFX_MAY_NORMAL:
+ case EVENT_OBJ_GFX_MAY_MACH_BIKE:
+ case EVENT_OBJ_GFX_MAY_ACRO_BIKE:
+ case EVENT_OBJ_GFX_MAY_SURFING:
+ case EVENT_OBJ_GFX_MAY_FIELD_MOVE:
+ case EVENT_OBJ_GFX_MAY_UNDERWATER:
+ case EVENT_OBJ_GFX_MAY_FISHING:
+ case EVENT_OBJ_GFX_MAY_WATERING:
return FEMALE;
default:
return MALE;
@@ -1057,7 +1057,7 @@ bool8 PartyHasMonWithSurf(void)
bool8 IsPlayerSurfingNorth(void)
{
- if (player_get_direction_upper_nybble() == DIR_NORTH && TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING))
+ if (GetPlayerMovementDirection() == DIR_NORTH && TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING))
return TRUE;
else
return FALSE;
@@ -1065,12 +1065,12 @@ bool8 IsPlayerSurfingNorth(void)
bool8 IsPlayerFacingSurfableFishableWater(void)
{
- struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
- s16 x = playerMapObj->coords2.x;
- s16 y = playerMapObj->coords2.y;
+ struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
+ s16 x = playerEventObj->currentCoords.x;
+ s16 y = playerEventObj->currentCoords.y;
- MoveCoords(playerMapObj->mapobj_unk_18, &x, &y);
- if (npc_block_way(playerMapObj, x, y, playerMapObj->mapobj_unk_18) == 3 && PlayerGetZCoord() == 3
+ MoveCoords(playerEventObj->facingDirection, &x, &y);
+ if (GetCollisionAtCoords(playerEventObj, x, y, playerEventObj->facingDirection) == 3 && PlayerGetZCoord() == 3
&& MetatileBehavior_IsSurfableFishableWater(MapGridGetMetatileBehaviorAt(x, y)))
return TRUE;
else
@@ -1082,10 +1082,10 @@ void ClearPlayerAvatarInfo(void)
memset(&gPlayerAvatar, 0, sizeof(struct PlayerAvatar));
}
-void SetPlayerAvatarStateMask(u8 a)
+void SetPlayerAvatarStateMask(u8 flags)
{
- gPlayerAvatar.flags &= 0xE0;
- gPlayerAvatar.flags |= a;
+ gPlayerAvatar.flags &= (PLAYER_AVATAR_FLAG_DASH | PLAYER_AVATAR_FLAG_6 | PLAYER_AVATAR_FLAG_5);
+ gPlayerAvatar.flags |= flags;
}
static u8 GetPlayerAvatarStateTransitionByGraphicsId(u8 a, u8 gender)
@@ -1123,87 +1123,87 @@ void SetPlayerAvatarExtraStateTransition(u8 a, u8 b)
void InitPlayerAvatar(s16 x, s16 y, u8 direction, u8 gender)
{
- struct MapObjectTemplate playerMapObjTemplate;
- u8 mapObjectId;
- struct MapObject *mapObject;
-
- playerMapObjTemplate.localId = 0xFF;
- playerMapObjTemplate.graphicsId = GetPlayerAvatarGraphicsIdByStateIdAndGender(0, gender);
- playerMapObjTemplate.x = x - 7;
- playerMapObjTemplate.y = y - 7;
- playerMapObjTemplate.elevation = 0;
- playerMapObjTemplate.movementType = 11;
- playerMapObjTemplate.unkA_0 = 0;
- playerMapObjTemplate.unkA_4 = 0;
- playerMapObjTemplate.unkC = 0;
- playerMapObjTemplate.unkE = 0;
- playerMapObjTemplate.script = NULL;
- playerMapObjTemplate.flagId = 0;
- mapObjectId = SpawnSpecialFieldObject(&playerMapObjTemplate);
- mapObject = &gMapObjects[mapObjectId];
- mapObject->mapobj_bit_16 = 1;
- mapObject->mapobj_unk_1B = sub_8126B54();
- FieldObjectTurn(mapObject, direction);
+ struct EventObjectTemplate playerEventObjTemplate;
+ u8 eventObjectId;
+ struct EventObject *eventObject;
+
+ playerEventObjTemplate.localId = 0xFF;
+ playerEventObjTemplate.graphicsId = GetPlayerAvatarGraphicsIdByStateIdAndGender(PLAYER_AVATAR_STATE_NORMAL, gender);
+ playerEventObjTemplate.x = x - 7;
+ playerEventObjTemplate.y = y - 7;
+ playerEventObjTemplate.elevation = 0;
+ playerEventObjTemplate.movementType = MOVEMENT_TYPE_PLAYER;
+ playerEventObjTemplate.movementRangeX = 0;
+ playerEventObjTemplate.movementRangeY = 0;
+ playerEventObjTemplate.trainerType = 0;
+ playerEventObjTemplate.trainerRange_berryTreeId = 0;
+ playerEventObjTemplate.script = NULL;
+ playerEventObjTemplate.flagId = 0;
+ eventObjectId = SpawnSpecialEventObject(&playerEventObjTemplate);
+ eventObject = &gEventObjects[eventObjectId];
+ eventObject->isPlayer = 1;
+ eventObject->warpArrowSpriteId = CreateWarpArrowSprite();
+ EventObjectTurn(eventObject, direction);
ClearPlayerAvatarInfo();
gPlayerAvatar.runningState = NOT_MOVING;
gPlayerAvatar.tileTransitionState = T_NOT_MOVING;
- gPlayerAvatar.mapObjectId = mapObjectId;
- gPlayerAvatar.spriteId = mapObject->spriteId;
+ gPlayerAvatar.eventObjectId = eventObjectId;
+ gPlayerAvatar.spriteId = eventObject->spriteId;
gPlayerAvatar.gender = gender;
- SetPlayerAvatarStateMask(0x21);
+ SetPlayerAvatarStateMask(PLAYER_AVATAR_FLAG_5 | PLAYER_AVATAR_FLAG_ON_FOOT);
}
void sub_8059B88(u8 a)
{
- gMapObjects[gPlayerAvatar.mapObjectId].mapobj_bit_13 = a;
+ gEventObjects[gPlayerAvatar.eventObjectId].invisible = a;
if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING))
- gSprites[gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_1A].invisible = a;
+ gSprites[gEventObjects[gPlayerAvatar.eventObjectId].fieldEffectSpriteId].invisible = a;
}
void sub_8059BF4(void)
{
- sub_805B980(&gMapObjects[gPlayerAvatar.mapObjectId], GetPlayerAvatarGraphicsIdByStateId(5));
+ sub_805B980(&gEventObjects[gPlayerAvatar.eventObjectId], GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_STATE_FIELD_MOVE));
StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], 0);
}
-void sub_8059C3C(u8 a)
+void sub_8059C3C(u8 direction)
{
- sub_805B980(&gMapObjects[gPlayerAvatar.mapObjectId], GetPlayerAvatarGraphicsIdByStateId(6));
- StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], sub_805FDE8(a));
+ sub_805B980(&gEventObjects[gPlayerAvatar.eventObjectId], GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_STATE_FISHING));
+ StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], GetFishingDirectionAnimNum(direction));
}
-void sub_8059C94(u8 a)
+void sub_8059C94(u8 direction)
{
- sub_805B980(&gMapObjects[gPlayerAvatar.mapObjectId], GetPlayerAvatarGraphicsIdByStateId(2));
- StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], sub_805FD98(a));
+ sub_805B980(&gEventObjects[gPlayerAvatar.eventObjectId], GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_STATE_ACRO_BIKE));
+ StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], GetAcroWheelieDirectionAnimNum(direction));
SeekSpriteAnim(&gSprites[gPlayerAvatar.spriteId], 1);
}
-void sub_8059D08(u8 a)
+void sub_8059D08(u8 direction)
{
- sub_805B980(&gMapObjects[gPlayerAvatar.mapObjectId], GetPlayerAvatarGraphicsIdByStateId(7));
- StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], FieldObjectDirectionToImageAnimId(a));
+ sub_805B980(&gEventObjects[gPlayerAvatar.eventObjectId], GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_STATE_WATERING));
+ StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], GetFaceDirectionAnimNum(direction));
}
-static void sub_8059D60(struct MapObject *a)
+static void sub_8059D60(struct EventObject *eventObject)
{
s16 x;
s16 y;
- u8 r6;
- u8 r8 = a->mapobj_unk_1E;
+ u8 direction;
+ u8 metatileBehavior = eventObject->currentMetatileBehavior;
- for (x = 0, r6 = 1; x < 4; x++, r6++)
+ for (x = 0, direction = DIR_SOUTH; x < 4; x++, direction++)
{
- if (gUnknown_0830FC78[x](r8) && r6 == a->placeholder18)
+ if (sArrowWarpMetatileBehaviorChecks2[x](metatileBehavior) && direction == eventObject->movementDirection)
{
- x = a->coords2.x;
- y = a->coords2.y;
- MoveCoords(r6, &x, &y);
- sub_8126BC4(a->mapobj_unk_1B, r6, x, y);
+ x = eventObject->currentCoords.x;
+ y = eventObject->currentCoords.y;
+ MoveCoords(direction, &x, &y);
+ ShowWarpArrowSprite(eventObject->warpArrowSpriteId, direction, x, y);
return;
}
}
- objid_set_invisible(a->mapobj_unk_1B);
+ SetSpriteInvisible(eventObject->warpArrowSpriteId);
}
/* Strength */
@@ -1222,12 +1222,12 @@ static void StartStrengthAnim(u8 a, u8 b)
static void sub_8059E2C(u8 taskId)
{
while (gUnknown_0830FC88[gTasks[taskId].data[0]](&gTasks[taskId],
- &gMapObjects[gPlayerAvatar.mapObjectId],
- &gMapObjects[gTasks[taskId].data[1]]))
+ &gEventObjects[gPlayerAvatar.eventObjectId],
+ &gEventObjects[gTasks[taskId].data[1]]))
;
}
-u8 sub_8059E84(struct Task *task, struct MapObject *b, struct MapObject *c)
+u8 sub_8059E84(struct Task *task, struct EventObject *playerObject, struct EventObject *strengthObject)
{
ScriptContext2_Enable();
gPlayerAvatar.preventStep = TRUE;
@@ -1235,19 +1235,19 @@ u8 sub_8059E84(struct Task *task, struct MapObject *b, struct MapObject *c)
return 0;
}
-u8 sub_8059EA4(struct Task *task, struct MapObject *b, struct MapObject *c)
+u8 sub_8059EA4(struct Task *task, struct EventObject *playerObject, struct EventObject *strengthObject)
{
- if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(b)
- && !FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(c))
+ if (!EventObjectIsMovementOverridden(playerObject)
+ && !EventObjectIsMovementOverridden(strengthObject))
{
- FieldObjectClearAnimIfSpecialAnimFinished(b);
- FieldObjectClearAnimIfSpecialAnimFinished(c);
- FieldObjectSetSpecialAnim(b, GetStepInPlaceDelay16AnimId((u8)task->data[2]));
- FieldObjectSetSpecialAnim(c, GetSimpleGoAnimId((u8)task->data[2]));
- gFieldEffectArguments[0] = c->coords2.x;
- gFieldEffectArguments[1] = c->coords2.y;
- gFieldEffectArguments[2] = c->elevation;
- gFieldEffectArguments[3] = gSprites[c->spriteId].oam.priority;
+ EventObjectClearHeldMovementIfFinished(playerObject);
+ EventObjectClearHeldMovementIfFinished(strengthObject);
+ EventObjectSetHeldMovement(playerObject, GetWalkInPlaceNormalMovementAction((u8)task->data[2]));
+ EventObjectSetHeldMovement(strengthObject, GetWalkSlowMovementAction((u8)task->data[2]));
+ gFieldEffectArguments[0] = strengthObject->currentCoords.x;
+ gFieldEffectArguments[1] = strengthObject->currentCoords.y;
+ gFieldEffectArguments[2] = strengthObject->previousElevation;
+ gFieldEffectArguments[3] = gSprites[strengthObject->spriteId].oam.priority;
FieldEffectStart(FLDEFF_DUST);
PlaySE(SE_W070);
task->data[0]++;
@@ -1255,13 +1255,13 @@ u8 sub_8059EA4(struct Task *task, struct MapObject *b, struct MapObject *c)
return 0;
}
-u8 sub_8059F40(struct Task *task, struct MapObject *b, struct MapObject *c)
+u8 sub_8059F40(struct Task *task, struct EventObject *playerObject, struct EventObject *strengthObject)
{
- if (FieldObjectCheckIfSpecialAnimFinishedOrInactive(b)
- && FieldObjectCheckIfSpecialAnimFinishedOrInactive(c))
+ if (EventObjectCheckHeldMovementStatus(playerObject)
+ && EventObjectCheckHeldMovementStatus(strengthObject))
{
- FieldObjectClearAnimIfSpecialAnimFinished(b);
- FieldObjectClearAnimIfSpecialAnimFinished(c);
+ EventObjectClearHeldMovementIfFinished(playerObject);
+ EventObjectClearHeldMovementIfFinished(strengthObject);
gPlayerAvatar.preventStep = FALSE;
ScriptContext2_Disable();
DestroyTask(FindTaskIdByFunc(sub_8059E2C));
@@ -1280,18 +1280,18 @@ static void DoPlayerMatJump(void)
static void DoPlayerAvatarSecretBaseMatJump(u8 taskId)
{
- while (sPlayerAvatarSecretBaseMatJump[gTasks[taskId].data[0]](&gTasks[taskId], &gMapObjects[gPlayerAvatar.mapObjectId]))
+ while (sPlayerAvatarSecretBaseMatJump[gTasks[taskId].data[0]](&gTasks[taskId], &gEventObjects[gPlayerAvatar.eventObjectId]))
;
}
// because data[0] is used to call this, it can be inferred that there may have been multiple mat jump functions at one point, so the name for these groups of functions is appropriate in assuming the sole use of mat jump.
-u8 PlayerAvatar_DoSecretBaseMatJump(struct Task *task, struct MapObject *mapObject)
+u8 PlayerAvatar_DoSecretBaseMatJump(struct Task *task, struct EventObject *eventObject)
{
gPlayerAvatar.preventStep = TRUE;
- if (FieldObjectClearAnimIfSpecialAnimFinished(mapObject))
+ if (EventObjectClearHeldMovementIfFinished(eventObject))
{
PlaySE(SE_DANSA);
- FieldObjectSetSpecialAnim(mapObject, sub_806084C(mapObject->mapobj_unk_18));
+ EventObjectSetHeldMovement(eventObject, GetJumpInPlaceMovementAction(eventObject->facingDirection));
task->data[1]++;
if (task->data[1] > 1)
{
@@ -1305,40 +1305,40 @@ u8 PlayerAvatar_DoSecretBaseMatJump(struct Task *task, struct MapObject *mapObje
/* Some field effect */
-static void sub_805A08C(u8 taskId);
+static void PlayerAvatar_DoSecretBaseMatSpin(u8 taskId);
-static void sub_805A06C(void)
+static void DoPlayerMatSpin(void)
{
- u8 taskId = CreateTask(sub_805A08C, 0xFF);
+ u8 taskId = CreateTask(PlayerAvatar_DoSecretBaseMatSpin, 0xFF);
- sub_805A08C(taskId);
+ PlayerAvatar_DoSecretBaseMatSpin(taskId);
}
-static void sub_805A08C(u8 taskId)
+static void PlayerAvatar_DoSecretBaseMatSpin(u8 taskId)
{
- while (gUnknown_0830FC98[gTasks[taskId].data[0]](&gTasks[taskId], &gMapObjects[gPlayerAvatar.mapObjectId]))
+ while (sPlayerAvatarSecretBaseMatSpin[gTasks[taskId].data[0]](&gTasks[taskId], &gEventObjects[gPlayerAvatar.eventObjectId]))
;
}
-u8 sub_805A0D8(struct Task *task, struct MapObject *mapObject)
+u8 PlayerAvatar_SecretBaseMatSpinStep0(struct Task *task, struct EventObject *eventObject)
{
task->data[0]++;
- task->data[1] = mapObject->placeholder18;
+ task->data[1] = eventObject->movementDirection;
gPlayerAvatar.preventStep = TRUE;
ScriptContext2_Enable();
PlaySE(SE_TK_WARPIN);
return 1;
}
-u8 sub_805A100(struct Task *task, struct MapObject *mapObject)
+u8 PlayerAvatar_SecretBaseMatSpinStep1(struct Task *task, struct EventObject *eventObject)
{
u8 directions[] = {DIR_WEST, DIR_EAST, DIR_NORTH, DIR_SOUTH};
- if (FieldObjectClearAnimIfSpecialAnimFinished(mapObject))
+ if (EventObjectClearHeldMovementIfFinished(eventObject))
{
u8 direction;
- FieldObjectSetSpecialAnim(mapObject, GetFaceDirectionAnimId(direction = directions[mapObject->placeholder18 - 1]));
+ EventObjectSetHeldMovement(eventObject, GetFaceDirectionMovementAction(direction = directions[eventObject->movementDirection - 1]));
if (direction == (u8)task->data[1])
task->data[2]++;
task->data[0]++;
@@ -1348,26 +1348,32 @@ u8 sub_805A100(struct Task *task, struct MapObject *mapObject)
return 0;
}
-u8 sub_805A178(struct Task *task, struct MapObject *mapObject)
+u8 PlayerAvatar_SecretBaseMatSpinStep2(struct Task *task, struct EventObject *eventObject)
{
- const u8 arr[] = {16, 16, 17, 18, 19};
+ const u8 actions[] = {
+ MOVEMENT_ACTION_DELAY_1,
+ MOVEMENT_ACTION_DELAY_1,
+ MOVEMENT_ACTION_DELAY_2,
+ MOVEMENT_ACTION_DELAY_4,
+ MOVEMENT_ACTION_DELAY_8,
+ };
- if (FieldObjectClearAnimIfSpecialAnimFinished(mapObject))
+ if (EventObjectClearHeldMovementIfFinished(eventObject))
{
- FieldObjectSetSpecialAnim(mapObject, arr[task->data[2]]);
+ EventObjectSetHeldMovement(eventObject, actions[task->data[2]]);
task->data[0] = 1;
}
return 0;
}
-u8 sub_805A1B8(struct Task *task, struct MapObject *mapObject)
+u8 PlayerAvatar_SecretBaseMatSpinStep3(struct Task *task, struct EventObject *eventObject)
{
- if (FieldObjectClearAnimIfSpecialAnimFinished(mapObject))
+ if (EventObjectClearHeldMovementIfFinished(eventObject))
{
- FieldObjectSetSpecialAnim(mapObject, GetSimpleGoAnimId(GetOppositeDirection(task->data[1])));
+ EventObjectSetHeldMovement(eventObject, GetWalkSlowMovementAction(GetOppositeDirection(task->data[1])));
ScriptContext2_Disable();
gPlayerAvatar.preventStep = FALSE;
- DestroyTask(FindTaskIdByFunc(sub_805A08C));
+ DestroyTask(FindTaskIdByFunc(PlayerAvatar_DoSecretBaseMatSpin));
}
return 0;
}
@@ -1394,29 +1400,29 @@ void sub_805A20C(u8 a)
static void taskFF_0805D1D4(u8 taskId)
{
- struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+ struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
- if (FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(playerMapObj))
+ if (EventObjectIsMovementOverridden(playerEventObj))
{
- if (!FieldObjectClearAnimIfSpecialAnimFinished(playerMapObj))
+ if (!EventObjectClearHeldMovementIfFinished(playerEventObj))
return;
}
- sub_8127ED0(playerMapObj->mapobj_unk_1A, 2);
- FieldObjectSetSpecialAnim(playerMapObj, sub_80608D0((u8)gTasks[taskId].data[0]));
+ sub_8127ED0(playerEventObj->fieldEffectSpriteId, 2);
+ EventObjectSetHeldMovement(playerEventObj, GetJumpSpecialMovementAction((u8)gTasks[taskId].data[0]));
gTasks[taskId].func = sub_805A2D0;
}
static void sub_805A2D0(u8 taskId)
{
- struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+ struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
- if (FieldObjectClearAnimIfSpecialAnimFinished(playerMapObj))
+ if (EventObjectClearHeldMovementIfFinished(playerEventObj))
{
- sub_805B980(playerMapObj, GetPlayerAvatarGraphicsIdByStateId(0));
- FieldObjectSetSpecialAnim(playerMapObj, GetFaceDirectionAnimId(playerMapObj->mapobj_unk_18));
+ sub_805B980(playerEventObj, GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_STATE_NORMAL));
+ EventObjectSetHeldMovement(playerEventObj, GetFaceDirectionMovementAction(playerEventObj->facingDirection));
gPlayerAvatar.preventStep = FALSE;
ScriptContext2_Disable();
- DestroySprite(&gSprites[playerMapObj->mapobj_unk_1A]);
+ DestroySprite(&gSprites[playerEventObj->fieldEffectSpriteId]);
DestroyTask(taskId);
}
}
@@ -1486,17 +1492,17 @@ u8 Fishing1(struct Task *task)
u8 Fishing2(struct Task *task)
{
- struct MapObject *playerMapObj;
+ struct EventObject *playerEventObj;
const s16 arr1[] = {1, 1, 1};
const s16 arr2[] = {1, 3, 6};
task->tRoundsPlayed = 0;
task->tMinRoundsRequired = arr1[task->tFishingRod] + (Random() % arr2[task->tFishingRod]);
- task->tPlayerGfxId = gMapObjects[gPlayerAvatar.mapObjectId].graphicsId;
- playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
- FieldObjectClearAnimIfSpecialAnimActive(playerMapObj);
- playerMapObj->mapobj_bit_11 = 1;
- sub_8059C3C(playerMapObj->mapobj_unk_18);
+ task->tPlayerGfxId = gEventObjects[gPlayerAvatar.eventObjectId].graphicsId;
+ playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
+ EventObjectClearHeldMovementIfActive(playerEventObj);
+ playerEventObj->enableAnim = 1;
+ sub_8059C3C(playerEventObj->facingDirection);
task->tStep++;
return 0;
}
@@ -1574,7 +1580,7 @@ u8 Fishing6(struct Task *task)
if (!DoesCurrentMapHaveFishingMons() || (Random() & 1))
task->tStep = FISHING_NO_BITE;
else
- StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], sub_805FE08(player_get_direction_lower_nybble()));
+ StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], GetFishingBiteDirectionAnimNum(GetPlayerFacingDirection()));
return 1;
}
@@ -1648,12 +1654,12 @@ u8 Fishing11(struct Task *task)
{
if (Menu_UpdateWindowText())
{
- struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+ struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
- sub_805B980(playerMapObj, task->tPlayerGfxId);
- FieldObjectTurn(playerMapObj, playerMapObj->placeholder18);
+ sub_805B980(playerEventObj, task->tPlayerGfxId);
+ EventObjectTurn(playerEventObj, playerEventObj->movementDirection);
if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING)
- sub_8127F28(gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_1A, 0, 0);
+ sub_8127F28(gEventObjects[gPlayerAvatar.eventObjectId].fieldEffectSpriteId, 0, 0);
gSprites[gPlayerAvatar.spriteId].pos2.x = 0;
gSprites[gPlayerAvatar.spriteId].pos2.y = 0;
Menu_EraseScreen();
@@ -1677,7 +1683,7 @@ u8 Fishing11(struct Task *task)
u8 Fishing12(struct Task *task)
{
sub_805A954();
- StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], sub_805FDF8(player_get_direction_lower_nybble()));
+ StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], GetFishingNoCatchDirectionAnimNum(GetPlayerFacingDirection()));
MenuPrintMessageDefaultCoords(gOtherText_NotEvenANibble);
task->tStep = FISHING_SHOW_RESULT;
return 1;
@@ -1687,7 +1693,7 @@ u8 Fishing12(struct Task *task)
u8 Fishing13(struct Task *task)
{
sub_805A954();
- StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], sub_805FDF8(player_get_direction_lower_nybble()));
+ StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], GetFishingNoCatchDirectionAnimNum(GetPlayerFacingDirection()));
MenuPrintMessageDefaultCoords(gOtherText_ItGotAway);
task->tStep++;
return 1;
@@ -1707,12 +1713,12 @@ u8 Fishing15(struct Task *task)
sub_805A954();
if (gSprites[gPlayerAvatar.spriteId].animEnded)
{
- struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+ struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
- sub_805B980(playerMapObj, task->tPlayerGfxId);
- FieldObjectTurn(playerMapObj, playerMapObj->placeholder18);
+ sub_805B980(playerEventObj, task->tPlayerGfxId);
+ EventObjectTurn(playerEventObj, playerEventObj->movementDirection);
if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING)
- sub_8127F28(gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_1A, 0, 0);
+ sub_8127F28(gEventObjects[gPlayerAvatar.eventObjectId].fieldEffectSpriteId, 0, 0);
gSprites[gPlayerAvatar.spriteId].pos2.x = 0;
gSprites[gPlayerAvatar.spriteId].pos2.y = 0;
task->tStep++;
@@ -1726,7 +1732,7 @@ u8 Fishing16(struct Task *task)
{
gPlayerAvatar.preventStep = FALSE;
ScriptContext2_Disable();
- UnfreezeMapObjects();
+ UnfreezeEventObjects();
Menu_EraseScreen();
sub_80BE97C(0);
DestroyTask(FindTaskIdByFunc(Task_Fishing));
@@ -1762,7 +1768,7 @@ static void sub_805A954(void)
if (animType == 1 || animType == 2 || animType == 3)
{
playerSprite->pos2.x = 8;
- if (player_get_direction_lower_nybble() == 3)
+ if (GetPlayerFacingDirection() == 3)
playerSprite->pos2.x = -8;
}
if (animType == 5)
@@ -1770,7 +1776,7 @@ static void sub_805A954(void)
if (animType == 10 || animType == 11)
playerSprite->pos2.y = 8;
if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING)
- sub_8127F28(gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_1A, 1, playerSprite->pos2.y);
+ sub_8127F28(gEventObjects[gPlayerAvatar.eventObjectId].fieldEffectSpriteId, 1, playerSprite->pos2.y);
}
#if DEBUG
@@ -1786,8 +1792,8 @@ u8 debug_sub_805F2B0(u8 a)
u8 debug_sub_805F2DC(u8 a)
{
if (a == 0)
- PlayerFaceDirection(gMapObjects[gPlayerAvatar.mapObjectId].placeholder18);
- else if (gMapObjects[gPlayerAvatar.mapObjectId].mapobj_bit_15 && !CanCameraMoveInDirection(a))
+ PlayerFaceDirection(gEventObjects[gPlayerAvatar.eventObjectId].movementDirection);
+ else if (gEventObjects[gPlayerAvatar.eventObjectId].trackedByCamera && !CanCameraMoveInDirection(a))
PlayerOnBikeCollide(a);
else
PlayerGoSpeed4(a);
diff --git a/src/field_poison.c b/src/field_poison.c
index 8365351f9..dd7500d22 100644
--- a/src/field_poison.c
+++ b/src/field_poison.c
@@ -8,53 +8,54 @@
#include "string_util.h"
#include "task.h"
#include "text.h"
+#include "constants/species.h"
extern u16 gSpecialVar_Result;
extern u8 fieldPoisonText_PokemonFainted[];
-bool32 CheckMonIsValid(struct Pokemon *pkmn)
+static bool32 IsMonValidSpecies(struct Pokemon *mon)
{
// UB: Too few arguments for function 'GetMonData'
- u16 species2 = GetMonData(pkmn, MON_DATA_SPECIES2);
-
- if (species2 == 0 || species2 == 0x19C)
+ u16 species = GetMonData(mon, MON_DATA_SPECIES2);
+ if (species == SPECIES_NONE || species == SPECIES_EGG)
return FALSE;
else
return TRUE;
}
-bool32 AllMonsFainted(void)
+static bool32 AllMonsFainted(void)
{
- struct Pokemon *pkmn = &gPlayerParty[0];
int i;
+ struct Pokemon *mon = gPlayerParty;
- for (i = 0; i < 6; i++, pkmn++)
+ for (i = 0; i < PARTY_SIZE; i++, mon++)
{
// UB: Too few arguments for function 'GetMonData'
- if (CheckMonIsValid(pkmn) && GetMonData(pkmn, MON_DATA_HP) != 0)
+ if (IsMonValidSpecies(mon) && GetMonData(mon, MON_DATA_HP) != 0)
return FALSE;
}
+
return TRUE;
}
-void MonFaintFromPoisonOnField(u8 partyMember)
+static void FaintFromFieldPoison(u8 monIndex)
{
- struct Pokemon *pkmn = &gPlayerParty[partyMember];
- u32 val = 0;
+ struct Pokemon *mon = &gPlayerParty[monIndex];
+ u32 status = 0;
- AdjustFriendship(pkmn, 7);
- SetMonData(pkmn, MON_DATA_STATUS, &val);
- GetMonData(pkmn, MON_DATA_NICKNAME, gStringVar1);
+ AdjustFriendship(mon, FRIENDSHIP_EVENT_FAINT_OUTSIDE_BATTLE);
+ SetMonData(mon, MON_DATA_STATUS, &status);
+ GetMonData(mon, MON_DATA_NICKNAME, gStringVar1);
StringGetEnd10(gStringVar1);
}
-bool32 CheckMonFaintedFromPoison(u8 partyMember)
+static bool32 MonFaintedFromPoison(u8 monIndex)
{
- struct Pokemon *pkmn = &gPlayerParty[partyMember];
+ struct Pokemon *mon = &gPlayerParty[monIndex];
// UB: Too few arguments for function 'GetMonData'
- if (CheckMonIsValid(pkmn) && GetMonData(pkmn, MON_DATA_HP) == 0
- && pokemon_ailments_get_primary(GetMonData(pkmn, MON_DATA_STATUS)) == 1)
+ if (IsMonValidSpecies(mon) && GetMonData(mon, MON_DATA_HP) == 0
+ && GetPrimaryStatus(GetMonData(mon, MON_DATA_STATUS)) == STATUS_PRIMARY_POISON)
return TRUE;
else
return FALSE;
@@ -63,7 +64,7 @@ bool32 CheckMonFaintedFromPoison(u8 partyMember)
#define tState data[0]
#define tPartyMember data[1]
-void Task_WhiteOut(u8 taskId)
+static void Task_WhiteOut(u8 taskId)
{
s16 *data = gTasks[taskId].data;
@@ -71,12 +72,12 @@ void Task_WhiteOut(u8 taskId)
{
case 0:
// Check if any Pokemon have fainted due to poison
- while (tPartyMember < 6)
+ while (tPartyMember < PARTY_SIZE)
{
- if (CheckMonFaintedFromPoison(tPartyMember))
+ if (MonFaintedFromPoison(tPartyMember))
{
// Show message about fainted mon
- MonFaintFromPoisonOnField(tPartyMember);
+ FaintFromFieldPoison(tPartyMember);
ShowFieldMessage(fieldPoisonText_PokemonFainted);
tState++;
return;
@@ -111,30 +112,30 @@ void ExecuteWhiteOut(void)
s32 DoPoisonFieldEffect(void)
{
- struct Pokemon *pkmn = &gPlayerParty[0];
+ struct Pokemon *mon = &gPlayerParty[0];
u32 numPoisoned = 0;
u32 numFainting = 0;
int i;
// count the number of mons that are poisoned and fainting from poison,
// and decrement HP of all poisoned mons
- for (i = 0; i < 6; i++)
+ for (i = 0; i < PARTY_SIZE; i++)
{
u32 hp;
- if (GetMonData(pkmn, MON_DATA_SANITY_BIT2) != 0
- && pokemon_ailments_get_primary(GetMonData(pkmn, MON_DATA_STATUS)) == 1)
+ if (GetMonData(mon, MON_DATA_SANITY_BIT2) != 0
+ && GetPrimaryStatus(GetMonData(mon, MON_DATA_STATUS)) == STATUS_PRIMARY_POISON)
{
// decrement HP of poisoned mon
- hp = GetMonData(pkmn, MON_DATA_HP);
+ hp = GetMonData(mon, MON_DATA_HP);
if (hp != 0)
hp--;
if (hp == 0)
numFainting++;
- SetMonData(pkmn, MON_DATA_HP, &hp);
+ SetMonData(mon, MON_DATA_HP, &hp);
numPoisoned++;
}
- pkmn++;
+ mon++;
}
if (numFainting != 0 || numPoisoned != 0)
FldeffPoison_Start();
diff --git a/src/field_region_map.c b/src/field_region_map.c
index 54091459f..a90b8ed6a 100644
--- a/src/field_region_map.c
+++ b/src/field_region_map.c
@@ -60,7 +60,7 @@ void CB2_FieldInitRegionMap(void)
sub_813F0C8();
SetMainCallback2(CB2_FieldRegionMap);
SetVBlankCallback(VBlankCB_FieldRegionMap);
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
}
void VBlankCB_FieldRegionMap(void)
@@ -102,7 +102,7 @@ void sub_813EFDC(void)
}
break;
case 3:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
ewram0_5.unk888++;
break;
case 4:
diff --git a/src/field_screen_effect.c b/src/field_screen_effect.c
index 61301c5a9..4e5965ee3 100644
--- a/src/field_screen_effect.c
+++ b/src/field_screen_effect.c
@@ -9,71 +9,78 @@
#include "text.h"
#include "scanline_effect.h"
-const static u16 gUnknown_0839ACDC[] = { 0xC8, 0x48, 0x38, 0x28, 0x18, 0x0 };
+const static u16 sFlashLevelPixelRadii[] = { 200, 72, 56, 40, 24, 0 };
const s32 gMaxFlashLevel = 4;
-const static struct ScanlineEffectParams gUnknown_0839ACEC =
+const static struct ScanlineEffectParams sFlashEffectParams =
{
(void *)REG_ADDR_WIN0H,
((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1,
1
};
-static void sub_808136C(u16 *dest, u32 a2, s32 a3, s32 a4)
+static void SetFlashScanlineEffectWindowBoundary(u16 *dest, u32 y, s32 left, s32 right)
{
- if (a2 <= 0xA0)
+ if (y <= 160)
{
- if (a3 < 0)
- a3 = 0;
- if (a3 > 255)
- a3 = 255;
- if (a4 < 0)
- a4 = 0;
- if (a4 > 255)
- a4 = 255;
- dest[a2] = (a3 << 8) | a4;
+ if (left < 0)
+ left = 0;
+ if (left > 255)
+ left = 255;
+ if (right < 0)
+ right = 0;
+ if (right > 255)
+ right = 255;
+ dest[y] = (left << 8) | right;
}
}
-static void sub_8081398(u16 *dest, s32 a2, s32 a3, s32 a4)
+static void SetFlashScanlineEffectWindowBoundaries(u16 *dest, s32 centerX, s32 centerY, s32 radius)
{
- s32 v1 = a4;
- s32 v2 = a4;
+ s32 r = radius;
+ s32 v2 = radius;
s32 v3 = 0;
- while (v1 >= v3)
+ while (r >= v3)
{
- sub_808136C(dest, a3 - v3, a2 - v1, a2 + v1);
- sub_808136C(dest, a3 + v3, a2 - v1, a2 + v1);
- sub_808136C(dest, a3 - v1, a2 - v3, a2 + v3);
- sub_808136C(dest, a3 + v1, a2 - v3, a2 + v3);
+ SetFlashScanlineEffectWindowBoundary(dest, centerY - v3, centerX - r, centerX + r);
+ SetFlashScanlineEffectWindowBoundary(dest, centerY + v3, centerX - r, centerX + r);
+ SetFlashScanlineEffectWindowBoundary(dest, centerY - r, centerX - v3, centerX + v3);
+ SetFlashScanlineEffectWindowBoundary(dest, centerY + r, centerX - v3, centerX + v3);
v2 -= (v3 * 2) - 1;
v3++;
if (v2 < 0)
{
- v2 += 2 * (v1 - 1);
- v1--;
+ v2 += 2 * (r - 1);
+ r--;
}
}
}
-static void sub_8081424(u8 taskId)
+#define tFlashCenterX data[1]
+#define tFlashCenterY data[2]
+#define tCurFlashRadius data[3]
+#define tDestFlashRadius data[4]
+#define tFlashRadiusDelta data[5]
+#define tClearScanlineEffect data[6]
+
+static void UpdateFlashLevelEffect(u8 taskId)
{
s16 *data = gTasks[taskId].data;
switch (data[0])
{
case 0:
- sub_8081398(gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer], data[1], data[2], data[3]);
+ SetFlashScanlineEffectWindowBoundaries(gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer], tFlashCenterX, tFlashCenterY, tCurFlashRadius);
data[0] = 1;
break;
case 1:
- sub_8081398(gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer], data[1], data[2], data[3]);
+ SetFlashScanlineEffectWindowBoundaries(gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer], tFlashCenterX, tFlashCenterY, tCurFlashRadius);
data[0] = 0;
- data[3] += data[5];
- if (data[3] > data[4])
+ tCurFlashRadius += tFlashRadiusDelta;
+ if (tCurFlashRadius > tDestFlashRadius)
{
- if (data[6] == 1)
+ if (tClearScanlineEffect == 1)
{
ScanlineEffect_Stop();
data[0] = 2;
@@ -93,7 +100,7 @@ static void sub_8081424(u8 taskId)
static void sub_80814E8(u8 taskId)
{
- if (!FuncIsActiveTask(sub_8081424))
+ if (!FuncIsActiveTask(UpdateFlashLevelEffect))
{
EnableBothScriptContexts();
DestroyTask(taskId);
@@ -106,41 +113,46 @@ static void sub_8081510(void)
CreateTask(sub_80814E8, 80);
}
-static u8 sub_8081534(s32 a1, s32 a2, s32 a3, s32 a4, s32 a5, u8 a6)
+static u8 sub_8081534(s32 centerX, s32 centerY, s32 initialFlashRadius, s32 destFlashRadius, s32 clearScanlineEffect, u8 delta)
{
- u8 taskId = CreateTask(sub_8081424, 80);
+ u8 taskId = CreateTask(UpdateFlashLevelEffect, 80);
s16 *data = gTasks[taskId].data;
- data[3] = a3;
- data[4] = a4;
- data[1] = a1;
- data[2] = a2;
- data[6] = a5;
+ tCurFlashRadius = initialFlashRadius;
+ tDestFlashRadius = destFlashRadius;
+ tFlashCenterX = centerX;
+ tFlashCenterY = centerY;
+ tClearScanlineEffect = clearScanlineEffect;
- if (a3 < a4)
- data[5] = a6;
+ if (initialFlashRadius < destFlashRadius)
+ tFlashRadiusDelta = delta;
else
- data[5] = -a6;
+ tFlashRadiusDelta = -delta;
return taskId;
}
-void sub_8081594(u8 a1)
+#undef tCurFlashRadius
+#undef tDestFlashRadius
+#undef tFlashRadiusDelta
+#undef tClearScanlineEffect
+
+void sub_8081594(u8 flashLevel)
{
- u8 flashLevel = Overworld_GetFlashLevel();
+ u8 curFlashLevel = Overworld_GetFlashLevel();
u8 value = 0;
- if (!a1)
+ if (!flashLevel)
value = 1;
- sub_8081534(120, 80, gUnknown_0839ACDC[flashLevel], gUnknown_0839ACDC[a1], value, 1);
+ sub_8081534(120, 80, sFlashLevelPixelRadii[curFlashLevel], sFlashLevelPixelRadii[flashLevel], value, 1);
sub_8081510();
ScriptContext2_Enable();
}
-void sub_80815E0(u8 a1)
+void WriteFlashScanlineEffectBuffer(u8 flashLevel)
{
- if (a1)
+ if (flashLevel)
{
- sub_8081398(&gScanlineEffectRegBuffers[0][0], 120, 80, gUnknown_0839ACDC[a1]);
+ SetFlashScanlineEffectWindowBoundaries(&gScanlineEffectRegBuffers[0][0], 120, 80, sFlashLevelPixelRadii[flashLevel]);
CpuFastSet(&gScanlineEffectRegBuffers[0], &gScanlineEffectRegBuffers[1], 480);
}
}
@@ -208,10 +220,9 @@ static void sub_80816A8(u8 taskId)
REG_BLDALPHA = 1804;
REG_WININ = 63;
REG_WINOUT = 30;
- sub_8081398(&gScanlineEffectRegBuffers[0][0], data[2], data[3], 1);
+ SetFlashScanlineEffectWindowBoundaries(&gScanlineEffectRegBuffers[0][0], data[2], data[3], 1);
CpuFastSet(&gScanlineEffectRegBuffers[0], &gScanlineEffectRegBuffers[1], 480);
- //ScanlineEffect_SetParams(gUnknown_0839ACEC[0], gUnknown_0839ACEC[1], gUnknown_0839ACEC[2]);
- ScanlineEffect_SetParams(gUnknown_0839ACEC);
+ ScanlineEffect_SetParams(sFlashEffectParams);
data[0] = 1;
break;
case 1:
@@ -221,7 +232,7 @@ static void sub_80816A8(u8 taskId)
data[0] = 2;
break;
case 2:
- if (!FuncIsActiveTask(sub_8081424))
+ if (!FuncIsActiveTask(UpdateFlashLevelEffect))
{
EnableBothScriptContexts();
data[0] = 3;
@@ -265,7 +276,7 @@ static void sub_80816A8(u8 taskId)
break;
case 5:
Menu_EraseWindowRect(0, 0, 29, 19);
- LoadFontDefaultPalette(&gWindowTemplate_81E6CE4);
+ LoadFontDefaultPalette(&gMenuTextWindowTemplate);
REG_WIN0H = 255;
REG_DISPCNT = data[6];
REG_BLDCNT = data[7];
@@ -323,7 +334,7 @@ void sub_8081924(void)
static void task50_0807F0C8(u8 taskId)
{
- if (sub_8054034() == TRUE)
+ if (BGMusicStopped() == TRUE)
{
DestroyTask(taskId);
EnableBothScriptContexts();
diff --git a/src/field_special_scene.c b/src/field_special_scene.c
index 2010ebcf4..cf67aa361 100644
--- a/src/field_special_scene.c
+++ b/src/field_special_scene.c
@@ -26,8 +26,8 @@ enum
STEP_END = 0xFE,
};
-const u32 gMapObjectPic_MovingBox[] = INCBIN_U32("graphics/map_objects/pics/misc/moving_box.4bpp");
-const u16 gMapObjectPalette19[] = INCBIN_U16("graphics/map_objects/palettes/19.gbapal");
+const u32 gEventObjectPic_MovingBox[] = INCBIN_U32("graphics/event_objects/pics/misc/moving_box.4bpp");
+const u16 gEventObjectPalette19[] = INCBIN_U16("graphics/event_objects/palettes/19.gbapal");
static const s8 gTruckCamera_HorizontalTable[] =
{
@@ -348,24 +348,24 @@ void Task_HandlePorthole(u8 taskId)
void sub_80C78A0(void)
{
- u8 spriteId = AddPseudoFieldObject(0x8C, SpriteCallbackDummy, 112, 80, 0);
+ u8 spriteId = AddPseudoEventObject(0x8C, SpriteCallbackDummy, 112, 80, 0);
gSprites[spriteId].coordOffsetEnabled = FALSE;
if (VarGet(VAR_PORTHOLE_STATE) == 2)
{
- StartSpriteAnim(&gSprites[spriteId], FieldObjectDirectionToImageAnimId(4));
+ StartSpriteAnim(&gSprites[spriteId], GetFaceDirectionAnimNum(4));
}
else
{
- StartSpriteAnim(&gSprites[spriteId], FieldObjectDirectionToImageAnimId(3));
+ StartSpriteAnim(&gSprites[spriteId], GetFaceDirectionAnimNum(3));
}
}
void sub_80C791C(void)
{
sub_80C78A0();
- gMapObjects[gPlayerAvatar.mapObjectId].mapobj_bit_13 = TRUE;
+ gEventObjects[gPlayerAvatar.eventObjectId].invisible = TRUE;
pal_fill_black();
CreateTask(Task_HandlePorthole, 80);
ScriptContext2_Enable();
diff --git a/src/field_specials.c b/src/field_specials.c
index 715086f00..f7b14dad8 100644
--- a/src/field_specials.c
+++ b/src/field_specials.c
@@ -21,6 +21,7 @@
#include "constants/species.h"
#include "constants/abilities.h"
#include "constants/moves.h"
+#include "constants/weather.h"
#include "text.h"
#include "wallclock.h"
#include "tv.h"
@@ -42,7 +43,7 @@
#define CHAR_DECIMAL_SEPARATOR CHAR_COMMA
#endif
-extern struct WarpData gUnknown_020297F0;
+extern struct WarpData gLastUsedWarp;
extern u8 gBattleOutcome;
extern u16 gSpecialVar_0x8004;
extern u16 gSpecialVar_0x8005;
@@ -54,7 +55,7 @@ EWRAM_DATA bool8 gBikeCyclingChallenge = FALSE;
EWRAM_DATA u8 gBikeCollisions = 0;
EWRAM_DATA u32 gBikeCyclingTimer = 0;
EWRAM_DATA u8 gUnknown_02039258 = 0;
-EWRAM_DATA u8 gUnknown_02039259 = 0;
+EWRAM_DATA u8 gPetalburgGymSlidingDoorIndex = 0;
EWRAM_DATA u8 gUnknown_0203925A = 0;
EWRAM_DATA u8 gUnknown_0203925B = 0;
EWRAM_DATA u8 gUnknown_0203925C = 0;
@@ -207,7 +208,7 @@ u16 GetRecordedCyclingRoadResults(void) {
}
void UpdateCyclingRoadState(void) {
- if (gUnknown_020297F0.mapNum == MAP_NUM(ROUTE110_SEASIDE_CYCLING_ROAD_NORTH_ENTRANCE) && gUnknown_020297F0.mapGroup == MAP_GROUP(ROUTE110_SEASIDE_CYCLING_ROAD_NORTH_ENTRANCE))
+ if (gLastUsedWarp.mapNum == MAP_NUM(ROUTE110_SEASIDE_CYCLING_ROAD_NORTH_ENTRANCE) && gLastUsedWarp.mapGroup == MAP_GROUP(ROUTE110_SEASIDE_CYCLING_ROAD_NORTH_ENTRANCE))
{
return;
}
@@ -317,7 +318,12 @@ void SpawnBerryBlenderLinkPlayerSprites(void)
u8 j = 0;
s16 x = 0;
s16 y = 0;
- u8 unknown_083F8358[] = {7, 9, 8, 10};
+ u8 facingDirectionMovementTypes[] = {
+ MOVEMENT_TYPE_FACE_UP,
+ MOVEMENT_TYPE_FACE_LEFT,
+ MOVEMENT_TYPE_FACE_DOWN,
+ MOVEMENT_TYPE_FACE_RIGHT,
+ };
s8 unknown_083F835C[][2] = {
{ 0, 1},
{ 1, 0},
@@ -330,7 +336,7 @@ void SpawnBerryBlenderLinkPlayerSprites(void)
u8 i;
myLinkPlayerNumber = sub_8008218();
- playerDirectionLowerNybble = player_get_direction_lower_nybble();
+ playerDirectionLowerNybble = GetPlayerFacingDirection();
switch (playerDirectionLowerNybble)
{
case DIR_WEST:
@@ -356,8 +362,8 @@ void SpawnBerryBlenderLinkPlayerSprites(void)
{
if (myLinkPlayerNumber != i)
{
- rivalAvatarGraphicsId = GetRivalAvatarGraphicsIdByStateIdAndGender(0, gLinkPlayers[i].gender);
- SpawnSpecialFieldObjectParametrized(rivalAvatarGraphicsId, unknown_083F8358[j], 0xf0 - i, unknown_083F835C[j][0] + x + 7, unknown_083F835C[j][1] + y + 7, 0);
+ rivalAvatarGraphicsId = GetRivalAvatarGraphicsIdByStateIdAndGender(PLAYER_AVATAR_STATE_NORMAL, gLinkPlayers[i].gender);
+ SpawnSpecialEventObjectParametrized(rivalAvatarGraphicsId, facingDirectionMovementTypes[j], 0xf0 - i, unknown_083F835C[j][0] + x + 7, unknown_083F835C[j][1] + y + 7, 0);
j++;
if (j == 4)
{
@@ -547,26 +553,26 @@ void MauvilleGymSpecial3(void)
}
}
-static void Task_PetalburgGym(u8);
-static void PetalburgGymFunc(u8, u16);
+static void Task_SlideOpenPetalburgGymDoors(u8);
+static void SetPetalburgGymDoorTiles(u8, u16);
const u8 gUnknown_083F8370[] = {0, 1, 1, 1, 1};
-const u16 gUnknown_083F8376[] = {0x218, 0x219, 0x21a, 0x21b, 0x21c};
+const u16 gPetalburgGymSlidingDoorMetatiles[] = {0x218, 0x219, 0x21a, 0x21b, 0x21c};
-void PetalburgGymSpecial1(void)
+void PetalburgGymSlideOpenDoors(void)
{
gUnknown_02039258 = 0;
- gUnknown_02039259 = 0;
+ gPetalburgGymSlidingDoorIndex = 0;
PlaySE(SE_KI_GASYAN);
- CreateTask(Task_PetalburgGym, 8);
+ CreateTask(Task_SlideOpenPetalburgGymDoors, 8);
}
-static void Task_PetalburgGym(u8 taskId)
+static void Task_SlideOpenPetalburgGymDoors(u8 taskId)
{
- if (gUnknown_083F8370[gUnknown_02039259] == gUnknown_02039258)
+ if (gUnknown_083F8370[gPetalburgGymSlidingDoorIndex] == gUnknown_02039258)
{
- PetalburgGymFunc(gSpecialVar_0x8004, gUnknown_083F8376[gUnknown_02039259]);
+ SetPetalburgGymDoorTiles(gSpecialVar_0x8004, gPetalburgGymSlidingDoorMetatiles[gPetalburgGymSlidingDoorIndex]);
gUnknown_02039258 = 0;
- if ((++gUnknown_02039259) == 5)
+ if ((++gPetalburgGymSlidingDoorIndex) == 5)
{
DestroyTask(taskId);
EnableBothScriptContexts();
@@ -578,74 +584,76 @@ static void Task_PetalburgGym(u8 taskId)
}
}
-static void PetalburgGymFunc(u8 a0, u16 a1)
+static void SetPetalburgGymDoorTiles(u8 roomIndex, u16 metatile)
{
u16 x[4];
u16 y[4];
u8 i;
- u8 nDoors = 0;
- switch (a0)
+ u8 numDoors = 0;
+ switch (roomIndex)
{
case 1:
- nDoors = 2;
+ numDoors = 2;
x[0] = 1;
x[1] = 7;
y[0] = 0x68;
y[1] = 0x68;
break;
case 2:
- nDoors = 2;
+ numDoors = 2;
x[0] = 1;
x[1] = 7;
y[0] = 0x4e;
y[1] = 0x4e;
break;
case 3:
- nDoors = 2;
+ numDoors = 2;
x[0] = 1;
x[1] = 7;
y[0] = 0x5b;
y[1] = 0x5b;
break;
case 4:
- nDoors = 1;
+ numDoors = 1;
x[0] = 7;
y[0] = 0x27;
break;
case 5:
- nDoors = 2;
+ numDoors = 2;
x[0] = 1;
x[1] = 7;
y[0] = 0x34;
y[1] = 0x34;
break;
case 6:
- nDoors = 1;
+ numDoors = 1;
x[0] = 1;
y[0] = 0x41;
break;
case 7:
- nDoors = 1;
+ numDoors = 1;
x[0] = 7;
y[0] = 0xd;
break;
case 8:
- nDoors = 1;
+ numDoors = 1;
x[0] = 1;
y[0] = 0x1a;
break;
}
- for (i=0; i<nDoors; i++)
+
+ for (i = 0; i < numDoors; i++)
{
- MapGridSetMetatileIdAt(x[i] + 7, y[i] + 7, a1 | 0xc00);
- MapGridSetMetatileIdAt(x[i] + 7, y[i] + 8, (a1 + 8) | 0xc00);
+ MapGridSetMetatileIdAt(x[i] + 7, y[i] + 7, metatile | 0xc00);
+ MapGridSetMetatileIdAt(x[i] + 7, y[i] + 8, (metatile + 8) | 0xc00);
}
+
DrawWholeMapView();
}
-void PetalburgGymSpecial2(void)
+void PetalburgGymOpenDoorsInstantly(void)
{
- PetalburgGymFunc(gSpecialVar_0x8004, gUnknown_083F8376[4]);
+ SetPetalburgGymDoorTiles(gSpecialVar_0x8004, gPetalburgGymSlidingDoorMetatiles[4]);
}
void ShowFieldMessageStringVar4(void)
@@ -795,7 +803,7 @@ static void PCTurnOffEffect_0(struct Task *task)
if (task->data[3] == 6)
{
task->data[3] = 0;
- playerDirectionLowerNybble = player_get_direction_lower_nybble();
+ playerDirectionLowerNybble = GetPlayerFacingDirection();
switch (playerDirectionLowerNybble)
{
case DIR_NORTH:
@@ -868,7 +876,7 @@ static void PCTurnOffEffect(void)
s8 dx = 0;
s8 dy = 0;
u16 tileId = 0;
- u8 playerDirectionLowerNybble = player_get_direction_lower_nybble();
+ u8 playerDirectionLowerNybble = GetPlayerFacingDirection();
switch (playerDirectionLowerNybble)
{
case DIR_NORTH:
@@ -1117,7 +1125,7 @@ void sub_810E984(u8 taskId)
gSpecialVar_Result = 1;
gSpecialVar_0x8005 = gUnknown_0203925B;
ShakeScreenInElevator();
- FieldObjectTurnByLocalIdAndMap(gSpecialVar_LastTalked, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, DIR_SOUTH);
+ EventObjectTurnByLocalIdAndMap(gSpecialVar_LastTalked, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, DIR_SOUTH);
sub_810EEDC();
Menu_EraseScreen();
DestroyTask(taskId);
@@ -1172,7 +1180,7 @@ bool8 sub_810EAC8(u8 prevMenuPos, u8 dpadInput)
return flag;
}
#else
-__attribute__((naked))
+NAKED
bool8 sub_810EAC8(u8 prevMenuPos, u8 dpadInput)
{
asm_unified("\tpush {r4-r7,lr}\n"
@@ -1630,7 +1638,7 @@ bool8 sub_810F1F4(u8 prevCursorPos, u8 dpadInput)
return flag;
}
#else
-__attribute__((naked))
+NAKED
bool8 sub_810F1F4(u8 prevCursorPos, u8 dpadInput)
{
asm_unified("\tpush {r4-r7,lr}\n"
@@ -1758,15 +1766,15 @@ void GlassWorkshopUpdateScrollIndicators(u8 newPos, u8 maxItems)
void SpawnCameraDummy(void)
{
- u8 mapObjectId = SpawnSpecialFieldObjectParametrized(7, 8, 0x7f, gSaveBlock1.pos.x + 7, gSaveBlock1.pos.y + 7, 3);
- gMapObjects[mapObjectId].mapobj_bit_13 = 1;
- CameraObjectSetFollowedObjectId(gMapObjects[mapObjectId].spriteId);
+ u8 eventObjectId = SpawnSpecialEventObjectParametrized(7, MOVEMENT_TYPE_FACE_DOWN, 0x7f, gSaveBlock1.pos.x + 7, gSaveBlock1.pos.y + 7, 3);
+ gEventObjects[eventObjectId].invisible = 1;
+ CameraObjectSetFollowedObjectId(gEventObjects[eventObjectId].spriteId);
}
void RemoveCameraDummy(void)
{
CameraObjectSetFollowedObjectId(GetPlayerAvatarObjectId());
- RemoveFieldObjectByLocalIdAndMap(0x7f, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup);
+ RemoveEventObjectByLocalIdAndMap(0x7f, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup);
}
u8 GetPokeblockNameByMonNature(void)
@@ -1793,7 +1801,7 @@ const u8 gUnknown_083F83E0[] = {12, 2, 4, 5, 1, 8, 7, 11, 3, 10, 9, 6};
const u8 gUnknown_083F83EC[] = {0, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 5};
const u8 gUnknown_083F83F8[] = {3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5};
-u8 GetSlotMachineId(void)
+u16 GetSlotMachineId(void)
{
u32 v0 = gSaveBlock1.easyChatPairs[0].unk0_0 + gSaveBlock1.easyChatPairs[0].unk2 + gUnknown_083F83E0[gSpecialVar_0x8004];
if (GetPriceReduction(2))
@@ -2002,17 +2010,17 @@ bool8 FoundBlackGlasses(void)
void SetRoute119Weather(void)
{
- if (is_map_type_1_2_3_5_or_6(get_map_type_from_warp0()) != TRUE)
+ if (is_map_type_1_2_3_5_or_6(GetLastUsedWarpMapType()) != TRUE)
{
- SetSav1Weather(0x14);
+ SetSav1Weather(WEATHER_ROUTE119_CYCLE);
}
}
void SetRoute123Weather(void)
{
- if (is_map_type_1_2_3_5_or_6(get_map_type_from_warp0()) != TRUE)
+ if (is_map_type_1_2_3_5_or_6(GetLastUsedWarpMapType()) != TRUE)
{
- SetSav1Weather(0x15);
+ SetSav1Weather(WEATHER_ROUTE123_CYCLE);
}
}
@@ -2020,13 +2028,12 @@ u8 GetLeadMonIndex(void)
{
u8 i;
u8 partyCount = CalculatePlayerPartyCount();
- for (i=0; i<partyCount; i++)
+ for (i = 0; i < partyCount; i++)
{
if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2, NULL) != SPECIES_EGG && GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2, NULL) != 0)
- {
return i;
- }
}
+
return 0;
}
@@ -2035,9 +2042,9 @@ u16 ScriptGetPartyMonSpecies(void)
return GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_SPECIES2, NULL);
}
-void sub_810F8FC(void)
+void TryInitBattleTowerAwardManEventObject(void)
{
- sub_805ADDC(6);
+ TryInitLocalEventObject(6);
}
u16 GetDaysUntilPacifidlogTMAvailable(void)
diff --git a/src/field_tasks.c b/src/field_tasks.c
index ce5fc6c0e..8b736c949 100644
--- a/src/field_tasks.c
+++ b/src/field_tasks.c
@@ -171,19 +171,19 @@ void DummyPerStepCallback(u8 taskId) {}
const struct MetatileOffset *sub_80695E0(const struct MetatileOffset a0[][2], s8 a1)
{
- if (sub_80576A0(a1))
+ if (MetatileBehavior_IsPacifidlogVerticalLog1(a1))
{
return a0[0];
}
- else if (sub_80576B4(a1))
+ else if (MetatileBehavior_IsPacifidlogVerticalLog2(a1))
{
return a0[1];
}
- else if (sub_80576C8(a1))
+ else if (MetatileBehavior_IsPacifidlogHorizontalLog1(a1))
{
return a0[2];
}
- else if (sub_80576DC(a1))
+ else if (MetatileBehavior_IsPacifidlogHorizontalLog2(a1))
{
return a0[3];
}
@@ -213,7 +213,7 @@ void sub_8069638(const struct MetatileOffset offsets[][2], s16 x, s16 y, bool32
}
}
#else
-__attribute__((naked))
+NAKED
void sub_8069638(const struct MetatileOffset offsets[][2], s16 x, s16 y, bool32 flag)
{
asm_unified("\tpush {r4-r7,lr}\n"
@@ -301,28 +301,28 @@ void sub_8069708(s16 x, s16 y, bool32 flag)
bool32 sub_806972C(s16 x1, s16 y1, s16 x2, s16 y2)
{
s8 metatileBehavior = MapGridGetMetatileBehaviorAt(x2, y2);
- if (sub_80576A0(metatileBehavior))
+ if (MetatileBehavior_IsPacifidlogVerticalLog1(metatileBehavior))
{
if (y1 > y2)
{
return FALSE;
}
}
- else if (sub_80576B4(metatileBehavior))
+ else if (MetatileBehavior_IsPacifidlogVerticalLog2(metatileBehavior))
{
if (y1 < y2)
{
return FALSE;
}
}
- else if (sub_80576C8(metatileBehavior))
+ else if (MetatileBehavior_IsPacifidlogHorizontalLog1(metatileBehavior))
{
if (x1 > x2)
{
return FALSE;
}
}
- else if (sub_80576DC(metatileBehavior))
+ else if (MetatileBehavior_IsPacifidlogHorizontalLog2(metatileBehavior))
{
if (x1 < x2)
{
@@ -335,28 +335,28 @@ bool32 sub_806972C(s16 x1, s16 y1, s16 x2, s16 y2)
bool32 sub_80697C8(s16 x1, s16 y1, s16 x2, s16 y2)
{
s8 metatileBehavior = MapGridGetMetatileBehaviorAt(x1, y1);
- if (sub_80576A0(metatileBehavior))
+ if (MetatileBehavior_IsPacifidlogVerticalLog1(metatileBehavior))
{
if (y1 < y2)
{
return FALSE;
}
}
- else if (sub_80576B4(metatileBehavior))
+ else if (MetatileBehavior_IsPacifidlogVerticalLog2(metatileBehavior))
{
if (y1 > y2)
{
return FALSE;
}
}
- else if (sub_80576C8(metatileBehavior))
+ else if (MetatileBehavior_IsPacifidlogHorizontalLog1(metatileBehavior))
{
if (x1 < x2)
{
return FALSE;
}
}
- else if (sub_80576DC(metatileBehavior))
+ else if (MetatileBehavior_IsPacifidlogHorizontalLog2(metatileBehavior))
{
if (x1 > x2)
{
@@ -611,8 +611,8 @@ bool32 sub_8069D34(s16 x, s16 y)
void SetSootopolisGymCrackedIceMetatiles(void)
{
s32 x, y;
- s32 width = gMapHeader.mapData->width;
- s32 height = gMapHeader.mapData->height;
+ s32 width = gMapHeader.mapLayout->width;
+ s32 height = gMapHeader.mapLayout->height;
for (x = 0; x < width; x++)
{
for (y = 0; y < height; y++)
@@ -713,11 +713,11 @@ void PerStepCallback_8069F64(u8 taskId)
{
if (MapGridGetMetatileIdAt(x, y) == 0x20a)
{
- ash(x, y, 0x212, 4);
+ StartAshFieldEffect(x, y, 0x212, 4);
}
else
{
- ash(x, y, 0x206, 4);
+ StartAshFieldEffect(x, y, 0x206, 4);
}
if (CheckBagHasItem(ITEM_SOOT_SACK, 1))
{
@@ -782,24 +782,29 @@ void PerStepCallback_806A07C(u8 taskId)
}
}
-const u16 gUnknown_08376418[] = {0xe8, 0xeb, 0xea, 0xe9};
+static const u16 sMuddySlopeAnimationMetatiles[] = {0xe8, 0xeb, 0xea, 0xe9};
-void sub_806A18C(s16 *data, s16 x, s16 y)
+static void SetMuddySlopeAnimatedMetatile(s16 *counter, s16 x, s16 y)
{
u16 tile;
- if ((--data[0]) == 0)
- {
+ if (--(*counter) == 0)
tile = 0xe8;
- }
else
- {
- tile = gUnknown_08376418[data[0] / 8];
- }
+ tile = sMuddySlopeAnimationMetatiles[*counter / 8];
+
MapGridSetMetatileIdAt(x, y, tile);
CurrentMapDrawMetatileAt(x, y);
+
+ // Immediately set the metatile back to the original muddy slope metatile
+ // but don't actualy draw it on the screen. This is so the underlying metatile
+ // behvior on the map is not changed.
MapGridSetMetatileIdAt(x, y, 0xe8);
}
+// Checks for the player traversing on muddy slope metatiles.
+// When the player walks or slides on one, it executes a short animation to
+// make it look like a small mudslide. A maximum of 4 mudslide animations can
+// exist simultaneously.
void Task_MuddySlope(u8 taskId)
{
s16 x, y, x2, y2;
@@ -827,7 +832,7 @@ void Task_MuddySlope(u8 taskId)
data[3] = y;
if (MetatileBehavior_IsMuddySlope(MapGridGetMetatileBehaviorAt(x, y)))
{
- for (i=4; i<14; i+=3)
+ for (i = 4; i < 14; i += 3)
{
if (data[i] == 0)
{
@@ -841,6 +846,7 @@ void Task_MuddySlope(u8 taskId)
}
break;
}
+
if (gCamera.field_0 && mapIndices != data[0])
{
data[0] = mapIndices;
@@ -852,13 +858,14 @@ void Task_MuddySlope(u8 taskId)
x2 = 0;
y2 = 0;
}
- for (i=4; i<14; i+=3)
+
+ for (i = 4; i < 14; i += 3)
{
if (data[i])
{
data[i + 1] -= x2;
data[i + 2] -= y2;
- sub_806A18C(&data[i], data[i + 1], data[i + 2]);
+ SetMuddySlopeAnimatedMetatile(&data[i], data[i + 1], data[i + 2]);
}
}
}
diff --git a/src/field_weather.c b/src/field_weather.c
index 5857145ef..9a5a83737 100644
--- a/src/field_weather.c
+++ b/src/field_weather.c
@@ -782,7 +782,7 @@ void ApplyFogBlend(u8 blendCoeff, u16 blendColor)
u8 bBlend;
u16 curPalIndex;
- BlendPalette(0, 0x100, blendCoeff, blendColor);
+ BlendPalette(0, 256, blendCoeff, blendColor);
color = *(struct RGBColor *)&blendColor;
rBlend = color.r;
gBlend = color.g;
@@ -970,7 +970,7 @@ void UpdateSpritePaletteWithWeather(u8 spritePaletteIndex)
else
{
paletteIndex *= 16;
- BlendPalette(paletteIndex, 16, 12, 0x73FC);
+ BlendPalette(paletteIndex, 16, 12, RGB(28, 31, 28));
}
break;
}
diff --git a/src/fieldmap.c b/src/fieldmap.c
index 7383bb174..874df23b0 100644
--- a/src/fieldmap.c
+++ b/src/fieldmap.c
@@ -25,7 +25,7 @@ EWRAM_DATA struct MapHeader gMapHeader = {0};
EWRAM_DATA struct Camera gCamera = {0};
EWRAM_DATA static struct ConnectionFlags gUnknown_0202E850 = {0};
-struct BackupMapData gUnknown_03004870;
+struct BackupMapLayout gUnknown_03004870;
static const struct ConnectionFlags sDummyConnectionFlags = {0};
@@ -53,19 +53,19 @@ void sub_8055FC0(void)
void mapheader_copy_mapdata_with_padding(struct MapHeader *mapHeader)
{
- struct MapData *mapData;
+ struct MapLayout *mapLayout;
int width;
int height;
- mapData = mapHeader->mapData;
+ mapLayout = mapHeader->mapLayout;
CpuFastFill16(0x03ff, gUnknown_02029828, sizeof(gUnknown_02029828));
gUnknown_03004870.map = gUnknown_02029828;
- width = mapData->width + 15;
+ width = mapLayout->width + 15;
gUnknown_03004870.width = width;
- height = mapData->height + 14;
+ height = mapLayout->height + 14;
gUnknown_03004870.height = height;
if (width * height <= 0x2800)
{
- map_copy_with_padding(mapData->map, mapData->width, mapData->height);
+ map_copy_with_padding(mapLayout->map, mapLayout->width, mapLayout->height);
sub_80560AC(mapHeader);
}
}
@@ -129,8 +129,8 @@ void sub_8056134(int x, int y, struct MapHeader *mapHeader, int x2, int y2, int
u16 *dest;
int mapWidth;
- mapWidth = mapHeader->mapData->width;
- src = &mapHeader->mapData->map[mapWidth * y2 + x2];
+ mapWidth = mapHeader->mapLayout->width;
+ src = &mapHeader->mapLayout->map[mapWidth * y2 + x2];
dest = &gUnknown_03004870.map[gUnknown_03004870.width * y + x];
for (i = 0; i < height; i++)
@@ -150,9 +150,9 @@ void fillSouthConnection(struct MapHeader *mapHeader, struct MapHeader *connecte
if (connectedMapHeader)
{
- cWidth = connectedMapHeader->mapData->width;
+ cWidth = connectedMapHeader->mapLayout->width;
x = offset + 7;
- y = mapHeader->mapData->height + 7;
+ y = mapHeader->mapLayout->height + 7;
if (x < 0)
{
x2 = -x;
@@ -196,8 +196,8 @@ void fillNorthConnection(struct MapHeader *mapHeader, struct MapHeader *connecte
if (connectedMapHeader)
{
- cWidth = connectedMapHeader->mapData->width;
- cHeight = connectedMapHeader->mapData->height;
+ cWidth = connectedMapHeader->mapLayout->width;
+ cHeight = connectedMapHeader->mapLayout->height;
x = offset + 7;
y2 = cHeight - 7;
if (x < 0)
@@ -245,8 +245,8 @@ void fillWestConnection(struct MapHeader *mapHeader, struct MapHeader *connected
int cWidth, cHeight;
if (connectedMapHeader)
{
- cWidth = connectedMapHeader->mapData->width;
- cHeight = connectedMapHeader->mapData->height;
+ cWidth = connectedMapHeader->mapLayout->width;
+ cHeight = connectedMapHeader->mapLayout->height;
y = offset + 7;
x2 = cWidth - 7;
if (y < 0)
@@ -291,8 +291,8 @@ void fillEastConnection(struct MapHeader *mapHeader, struct MapHeader *connected
int cHeight;
if (connectedMapHeader)
{
- cHeight = connectedMapHeader->mapData->height;
- x = mapHeader->mapData->width + 7;
+ cHeight = connectedMapHeader->mapLayout->height;
+ x = mapHeader->mapLayout->width + 7;
y = offset + 7;
if (y < 0)
{
@@ -352,10 +352,10 @@ u8 MapGridGetZCoordAt(int x, int y)
}
else
{
- border = gMapHeader.mapData->border;
+ border = gMapHeader.mapLayout->border;
i = (x + 1) & 1;
i += ((y + 1) & 1) * 2;
- block = gMapHeader.mapData->border[i];
+ block = gMapHeader.mapLayout->border[i];
block |= 0xc00;
}
if (block == 0x3ff)
@@ -378,10 +378,10 @@ u8 MapGridIsImpassableAt(int x, int y)
}
else
{
- border = gMapHeader.mapData->border;
+ border = gMapHeader.mapLayout->border;
i = (x + 1) & 1;
i += ((y + 1) & 1) * 2;
- block = gMapHeader.mapData->border[i];
+ block = gMapHeader.mapLayout->border[i];
block |= 0xc00;
}
if (block == 0x3ff)
@@ -396,7 +396,7 @@ u32 MapGridGetMetatileIdAt(int x, int y)
u16 block;
int i;
int j;
- struct MapData *mapData;
+ struct MapLayout *mapLayout;
u16 *border;
u16 block2;
@@ -407,17 +407,17 @@ u32 MapGridGetMetatileIdAt(int x, int y)
}
else
{
- mapData = gMapHeader.mapData;
+ mapLayout = gMapHeader.mapLayout;
i = (x + 1) & 1;
i += ((y + 1) & 1) * 2;
- block = mapData->border[i] | 0xc00;
+ block = mapLayout->border[i] | 0xc00;
}
if (block == 0x3ff)
{
- border = gMapHeader.mapData->border;
+ border = gMapHeader.mapLayout->border;
j = (x + 1) & 1;
j += ((y + 1) & 1) * 2;
- block2 = gMapHeader.mapData->border[j];
+ block2 = gMapHeader.mapLayout->border[j];
block2 |= 0xc00;
return block2 & block;
}
@@ -465,12 +465,12 @@ u32 GetBehaviorByMetatileId(u16 metatile)
u16 *attributes;
if (metatile <= 0x1ff)
{
- attributes = gMapHeader.mapData->primaryTileset->metatileAttributes;
+ attributes = gMapHeader.mapLayout->primaryTileset->metatileAttributes;
return attributes[metatile];
}
else if (metatile <= 0x3ff)
{
- attributes = gMapHeader.mapData->secondaryTileset->metatileAttributes;
+ attributes = gMapHeader.mapLayout->secondaryTileset->metatileAttributes;
return attributes[metatile - 0x200];
}
else
@@ -600,7 +600,7 @@ void sub_80566F0(u8 a1)
int GetMapBorderIdAt(int x, int y)
{
- struct MapData *mapData;
+ struct MapLayout *mapLayout;
u16 block, block2;
int i, j;
if (x >= 0 && x < gUnknown_03004870.width
@@ -616,10 +616,10 @@ int GetMapBorderIdAt(int x, int y)
}
else
{
- mapData = gMapHeader.mapData;
+ mapLayout = gMapHeader.mapLayout;
j = (x + 1) & 1;
j += ((y + 1) & 1) * 2;
- block2 = 0xc00 | mapData->border[j];
+ block2 = 0xc00 | mapLayout->border[j];
if (block2 == 0x3ff)
{
goto fail;
@@ -676,8 +676,8 @@ int GetPostCameraMoveMapBorderId(int x, int y)
int CanCameraMoveInDirection(int direction)
{
int x, y;
- x = gSaveBlock1.pos.x + 7 + gUnknown_0821664C[direction].x;
- y = gSaveBlock1.pos.y + 7 + gUnknown_0821664C[direction].y;
+ x = gSaveBlock1.pos.x + 7 + gDirectionToVectors[direction].x;
+ y = gSaveBlock1.pos.y + 7 + gDirectionToVectors[direction].y;
if (GetMapBorderIdAt(x, y) == -1)
{
return 0;
@@ -696,7 +696,7 @@ void sub_8056918(struct MapConnection *connection, int direction, int x, int y)
gSaveBlock1.pos.y -= connection->offset;
break;
case CONNECTION_WEST:
- gSaveBlock1.pos.x = mapHeader->mapData->width;
+ gSaveBlock1.pos.x = mapHeader->mapLayout->width;
gSaveBlock1.pos.y -= connection->offset;
break;
case CONNECTION_SOUTH:
@@ -705,7 +705,7 @@ void sub_8056918(struct MapConnection *connection, int direction, int x, int y)
break;
case CONNECTION_NORTH:
gSaveBlock1.pos.x -= connection->offset;
- gSaveBlock1.pos.y = mapHeader->mapData->height;
+ gSaveBlock1.pos.y = mapHeader->mapLayout->height;
break;
}
}
@@ -768,10 +768,10 @@ bool8 sub_8056ABC(u8 direction, int x, int y, struct MapConnection *connection)
{
case CONNECTION_SOUTH:
case CONNECTION_NORTH:
- return sub_8056B20(x, gMapHeader.mapData->width, mapHeader->mapData->width, connection->offset);
+ return sub_8056B20(x, gMapHeader.mapLayout->width, mapHeader->mapLayout->width, connection->offset);
case CONNECTION_WEST:
case CONNECTION_EAST:
- return sub_8056B20(y, gMapHeader.mapData->height, mapHeader->mapData->height, connection->offset);
+ return sub_8056B20(y, gMapHeader.mapLayout->height, mapHeader->mapLayout->height, connection->offset);
}
return FALSE;
}
@@ -812,10 +812,10 @@ int sub_8056B60(struct MapConnection *connection, int x, int y)
{
case CONNECTION_SOUTH:
case CONNECTION_NORTH:
- return sub_8056B4C(x - connection->offset, mapHeader->mapData->width);
+ return sub_8056B4C(x - connection->offset, mapHeader->mapLayout->width);
case CONNECTION_WEST:
case CONNECTION_EAST:
- return sub_8056B4C(y - connection->offset, mapHeader->mapData->height);
+ return sub_8056B4C(y - connection->offset, mapHeader->mapLayout->height);
}
return FALSE;
}
@@ -839,9 +839,9 @@ struct MapConnection *sub_8056BA0(s16 x, s16 y)
direction = connection->direction;
if ((direction == CONNECTION_DIVE || direction == CONNECTION_EMERGE)
|| (direction == CONNECTION_NORTH && y > 6)
- || (direction == CONNECTION_SOUTH && y < gMapHeader.mapData->height + 7)
+ || (direction == CONNECTION_SOUTH && y < gMapHeader.mapLayout->height + 7)
|| (direction == CONNECTION_WEST && x > 6)
- || (direction == CONNECTION_EAST && x < gMapHeader.mapData->width + 7))
+ || (direction == CONNECTION_EAST && x < gMapHeader.mapLayout->width + 7))
{
continue;
}
@@ -916,42 +916,42 @@ void sub_8056CBC(struct Tileset *tileset, int offset, int size)
}
}
-void sub_8056D28(struct MapData *mapData)
+void sub_8056D28(struct MapLayout *mapLayout)
{
void *src = (void*)(BG_VRAM);
- sub_8056C98(mapData->primaryTileset, src);
+ sub_8056C98(mapLayout->primaryTileset, src);
}
-void sub_8056D38(struct MapData *mapData)
+void sub_8056D38(struct MapLayout *mapLayout)
{
void *src = (void*)(BG_VRAM + 0x4000);
- sub_8056C98(mapData->secondaryTileset, src);
+ sub_8056C98(mapLayout->secondaryTileset, src);
}
-void apply_map_tileset1_palette(struct MapData *mapData)
+void apply_map_tileset1_palette(struct MapLayout *mapLayout)
{
- sub_8056CBC(mapData->primaryTileset, 0, 0xc0);
+ sub_8056CBC(mapLayout->primaryTileset, 0, 0xc0);
}
-void apply_map_tileset2_palette(struct MapData *mapData)
+void apply_map_tileset2_palette(struct MapLayout *mapLayout)
{
- sub_8056CBC(mapData->secondaryTileset, 0x60, 0xc0);
+ sub_8056CBC(mapLayout->secondaryTileset, 0x60, 0xc0);
}
-void copy_map_tileset1_tileset2_to_vram(struct MapData *mapData)
+void copy_map_tileset1_tileset2_to_vram(struct MapLayout *mapLayout)
{
- if (mapData)
+ if (mapLayout)
{
- sub_8056D28(mapData);
- sub_8056D38(mapData);
+ sub_8056D28(mapLayout);
+ sub_8056D38(mapLayout);
}
}
-void apply_map_tileset1_tileset2_palette(struct MapData *mapData)
+void apply_map_tileset1_tileset2_palette(struct MapLayout *mapLayout)
{
- if (mapData)
+ if (mapLayout)
{
- apply_map_tileset1_palette(mapData);
- apply_map_tileset2_palette(mapData);
+ apply_map_tileset1_palette(mapLayout);
+ apply_map_tileset2_palette(mapLayout);
}
}
diff --git a/src/fldeff_berrytree.c b/src/fldeff_berrytree.c
index 6b03e9952..8ff418ee6 100644
--- a/src/fldeff_berrytree.c
+++ b/src/fldeff_berrytree.c
@@ -15,26 +15,26 @@ static void Task_WateringBerryTreeAnim_0(u8 taskId)
static void Task_WateringBerryTreeAnim_1(u8 taskId)
{
- struct MapObject *mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
- if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(mapObject)
- || FieldObjectClearAnimIfSpecialAnimFinished(mapObject))
+ struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
+ if (!EventObjectIsMovementOverridden(playerEventObj)
+ || EventObjectClearHeldMovementIfFinished(playerEventObj))
{
- sub_8059D08(player_get_direction_lower_nybble());
- FieldObjectSetSpecialAnim(mapObject, GetStepInPlaceDelay16AnimId(player_get_direction_lower_nybble()));
+ sub_8059D08(GetPlayerFacingDirection());
+ EventObjectSetHeldMovement(playerEventObj, GetWalkInPlaceNormalMovementAction(GetPlayerFacingDirection()));
gTasks[taskId].func = Task_WateringBerryTreeAnim_2;
}
}
static void Task_WateringBerryTreeAnim_2(u8 taskId)
{
- struct MapObject *mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
- if (FieldObjectClearAnimIfSpecialAnimFinished(mapObject))
+ struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
+ if (EventObjectClearHeldMovementIfFinished(playerEventObj))
{
s16 value = gTasks[taskId].data[1]++;
if (value < 10)
{
- FieldObjectSetSpecialAnim(mapObject, GetStepInPlaceDelay16AnimId(player_get_direction_lower_nybble()));
+ EventObjectSetHeldMovement(playerEventObj, GetWalkInPlaceNormalMovementAction(GetPlayerFacingDirection()));
}
else
{
diff --git a/src/fldeff_cut.c b/src/fldeff_cut.c
index c8f942fe5..14c4ea018 100644
--- a/src/fldeff_cut.c
+++ b/src/fldeff_cut.c
@@ -1,29 +1,31 @@
+
#include "global.h"
-#include "fldeff_cut.h"
#include "field_camera.h"
#include "field_effect.h"
#include "event_object_movement.h"
#include "field_player_avatar.h"
#include "fieldmap.h"
-#include "map_obj_lock.h"
+#include "event_obj_lock.h"
#include "metatile_behavior.h"
-#include "metatile_behaviors.h"
#include "pokemon_menu.h"
#include "overworld.h"
#include "rom6.h"
#include "script.h"
-#include "constants/songs.h"
#include "sound.h"
#include "sprite.h"
#include "task.h"
#include "trig.h"
#include "ewram.h"
+#include "constants/field_effects.h"
+#include "constants/event_objects.h"
+#include "constants/metatile_behaviors.h"
+#include "constants/songs.h"
extern void (*gFieldCallback)(void);
-extern void (*gUnknown_03005CE4)(void);
+extern void (*gPostMenuFieldCallback)(void);
extern u8 gLastFieldPokeMenuOpened;
-extern const u8 S_UseCut[];
+extern const u8 DoCutFieldEffectScript[];
const struct OamData gOamData_CutGrass =
{
@@ -60,7 +62,17 @@ const struct SpriteFrameImage gSpriteImageTable_CutGrass[] =
const struct SpritePalette gFieldEffectObjectPaletteInfo6 = {gFieldEffectObjectPalette6, 0x1000};
-static void sub_80A2A48(struct Sprite *);
+static void FieldCallback_CutTree(void);
+static void FieldCallback_CutGrass(void);
+static void StartCutTreeFieldEffect(void);
+static void StartCutGrassFieldEffect(void);
+static void SetCutGrassMetatile(s16, s16);
+static void SetCutGrassMetatiles(s16, s16);
+static void CutGrassSpriteCallback1(struct Sprite *);
+static void CutGrassSpriteCallback2(struct Sprite *);
+static void CutGrassSpriteCallbackEnd(struct Sprite *);
+
+
static const struct SpriteTemplate gSpriteTemplate_CutGrass =
{
.tileTag = 0xFFFF,
@@ -69,44 +81,45 @@ static const struct SpriteTemplate gSpriteTemplate_CutGrass =
.anims = gSpriteAnimTable_CutGrass,
.images = gSpriteImageTable_CutGrass,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_80A2A48,
+ .callback = CutGrassSpriteCallback1,
};
#if DEBUG
-void debug_sub_80AFEE4(void)
+void Debug_SetUpFieldMove_Cut(void)
{
s16 x, y;
u8 i, j;
- u8 metatile;
+ u8 metatileBehavior;
- if (npc_before_player_of_type(0x52) == TRUE)
+ if (SetLastTalkedObjectInFrontOfPlayer(EVENT_OBJ_GFX_CUTTABLE_TREE) == TRUE)
{
gLastFieldPokeMenuOpened = 0;
- sub_80A2634();
+ FieldCallback_CutTree();
return;
}
- PlayerGetDestCoords(&gUnknown_0203923C.x, &gUnknown_0203923C.y);
+ PlayerGetDestCoords(&gPlayerFacingPosition.x, &gPlayerFacingPosition.y);
for (i = 0; i < 3; i++)
{
- y = i - 1 + gUnknown_0203923C.y;
+ y = i - 1 + gPlayerFacingPosition.y;
for (j = 0; j < 3; j++)
{
- x = j - 1 + gUnknown_0203923C.x;
- if (MapGridGetZCoordAt(x, y) == gUnknown_0203923C.height)
+ x = j - 1 + gPlayerFacingPosition.x;
+ if (MapGridGetZCoordAt(x, y) == gPlayerFacingPosition.height)
{
- metatile = MapGridGetMetatileBehaviorAt(x, y);
- if (MetatileBehavior_IsPokeGrass(metatile) == TRUE
- || MetatileBehavior_IsAshGrass(metatile) == TRUE)
+ metatileBehavior = MapGridGetMetatileBehaviorAt(x, y);
+ if (MetatileBehavior_IsPokeGrass(metatileBehavior) == TRUE
+ || MetatileBehavior_IsAshGrass(metatileBehavior) == TRUE)
{
gLastFieldPokeMenuOpened = 0;
- sub_80A25E8();
+ FieldCallback_CutGrass();
return;
}
}
}
}
+
ScriptContext2_Disable();
}
@@ -118,39 +131,43 @@ bool8 SetUpFieldMove_Cut(void)
u8 i, j;
u8 tileBehavior;
- if(npc_before_player_of_type(0x52) == TRUE) // is in front of tree?
+ if (SetLastTalkedObjectInFrontOfPlayer(EVENT_OBJ_GFX_CUTTABLE_TREE) == TRUE)
{
- gFieldCallback = FieldCallback_Teleport;
- gUnknown_03005CE4 = sub_80A2634;
+ // Standing in front of cuttable tree.
+ gFieldCallback = FieldCallback_PrepareFadeInFromMenu;
+ gPostMenuFieldCallback = FieldCallback_CutTree;
return TRUE;
}
- else // is in ash or grass to cut?
+ else
{
- PlayerGetDestCoords(&gUnknown_0203923C.x, &gUnknown_0203923C.y);
- for(i = 0; i < 3; i++)
+ PlayerGetDestCoords(&gPlayerFacingPosition.x, &gPlayerFacingPosition.y);
+ for (i = 0; i < 3; i++)
{
- y = i - 1 + gUnknown_0203923C.y;
- for(j = 0; j < 3; j++)
+ y = i - 1 + gPlayerFacingPosition.y;
+ for (j = 0; j < 3; j++)
{
- x = j - 1 + gUnknown_0203923C.x;
- if(MapGridGetZCoordAt(x, y) == gUnknown_0203923C.height)
+ x = j - 1 + gPlayerFacingPosition.x;
+ if(MapGridGetZCoordAt(x, y) == gPlayerFacingPosition.height)
{
tileBehavior = MapGridGetMetatileBehaviorAt(x, y);
if(MetatileBehavior_IsPokeGrass(tileBehavior) == TRUE
|| MetatileBehavior_IsAshGrass(tileBehavior) == TRUE)
{
- gFieldCallback = FieldCallback_Teleport;
- gUnknown_03005CE4 = sub_80A25E8;
+ // Standing in front of grass.
+ gFieldCallback = FieldCallback_PrepareFadeInFromMenu;
+ gPostMenuFieldCallback = FieldCallback_CutGrass;
return TRUE;
}
}
}
}
- return FALSE; // do not use cut
+
+ // Not a valid location to use Cut.
+ return FALSE;
}
}
-void sub_80A25E8(void)
+static void FieldCallback_CutGrass(void)
{
FieldEffectStart(FLDEFF_USE_CUT_ON_GRASS);
gFieldEffectArguments[0] = gLastFieldPokeMenuOpened;
@@ -160,29 +177,29 @@ bool8 FldEff_UseCutOnGrass(void)
{
u8 taskId = oei_task_add();
- gTasks[taskId].data[8] = (u32)sub_80A2684 >> 16;
- gTasks[taskId].data[9] = (u32)sub_80A2684;
+ gTasks[taskId].data[8] = (u32)StartCutGrassFieldEffect >> 16;
+ gTasks[taskId].data[9] = (u32)StartCutGrassFieldEffect;
IncrementGameStat(GAME_STAT_USED_CUT);
return FALSE;
}
-void sub_80A2634(void)
+static void FieldCallback_CutTree(void)
{
gFieldEffectArguments[0] = gLastFieldPokeMenuOpened;
- ScriptContext1_SetupScript(S_UseCut);
+ ScriptContext1_SetupScript(DoCutFieldEffectScript);
}
bool8 FldEff_UseCutOnTree(void)
{
u8 taskId = oei_task_add();
- gTasks[taskId].data[8] = (u32)sub_80A2B00 >> 16;
- gTasks[taskId].data[9] = (u32)sub_80A2B00;
+ gTasks[taskId].data[8] = (u32)StartCutTreeFieldEffect >> 16;
+ gTasks[taskId].data[9] = (u32)StartCutTreeFieldEffect;
IncrementGameStat(GAME_STAT_USED_CUT);
return FALSE;
}
-void sub_80A2684(void)
+static void StartCutGrassFieldEffect(void)
{
FieldEffectActiveListRemove(FLDEFF_USE_CUT_ON_GRASS);
FieldEffectStart(FLDEFF_CUT_GRASS);
@@ -192,41 +209,42 @@ bool8 FldEff_CutGrass(void)
{
s16 x, y;
u8 tileBehavior;
- u8 i, j; // not in for loop?
+ u8 i, j;
- for(i = 0, PlaySE(SE_W015), PlayerGetDestCoords(&gUnknown_0203923C.x, &gUnknown_0203923C.y); i < 3; i++)
+ for (i = 0, PlaySE(SE_W015), PlayerGetDestCoords(&gPlayerFacingPosition.x, &gPlayerFacingPosition.y); i < 3; i++)
{
- y = i - 1 + gUnknown_0203923C.y;
- for(j = 0; j < 3; j++)
+ y = i - 1 + gPlayerFacingPosition.y;
+ for (j = 0; j < 3; j++)
{
- x = j - 1 + gUnknown_0203923C.x;
- if(MapGridGetZCoordAt(x, y) == (s8)gUnknown_0203923C.height)
+ x = j - 1 + gPlayerFacingPosition.x;
+ if (MapGridGetZCoordAt(x, y) == (s8)gPlayerFacingPosition.height)
{
tileBehavior = MapGridGetMetatileBehaviorAt(x, y);
- if(MetatileBehavior_IsCuttableGrass(tileBehavior) == TRUE)
+ if (MetatileBehavior_IsCuttableGrass(tileBehavior) == TRUE)
{
- sub_80A27A8(x, y);
+ SetCutGrassMetatile(x, y);
sub_805BCC0(x, y);
}
}
}
}
- sub_80A28F4(gUnknown_0203923C.x - 1, gUnknown_0203923C.y - 2);
+
+ SetCutGrassMetatiles(gPlayerFacingPosition.x - 1, gPlayerFacingPosition.y - 2);
DrawWholeMapView();
// populate sprite ID array
- for(i = 0; i < 8; i++)
+ for (i = 0; i < 8; i++)
{
eCutGrassSpriteArray[i] = CreateSprite((struct SpriteTemplate *)&gSpriteTemplate_CutGrass,
gSprites[gPlayerAvatar.spriteId].oam.x + 8, gSprites[gPlayerAvatar.spriteId].oam.y + 20, 0);
gSprites[eCutGrassSpriteArray[i]].data[2] = 32 * i;
}
+
return 0;
}
// set map grid metatile depending on x, y
-// TODO: enum for metatile IDs
-void sub_80A27A8(s16 x, s16 y)
+static void SetCutGrassMetatile(s16 x, s16 y)
{
int metatileId = MapGridGetMetatileIdAt(x, y);
@@ -266,7 +284,7 @@ void sub_80A27A8(s16 x, s16 y)
}
}
-s32 sub_80A28A0(s16 x, s16 y)
+static s32 sub_80A28A0(s16 x, s16 y)
{
u16 metatileId = MapGridGetMetatileIdAt(x, y);
@@ -282,18 +300,18 @@ s32 sub_80A28A0(s16 x, s16 y)
return 0;
}
-void sub_80A28F4(s16 x, s16 y)
+static void SetCutGrassMetatiles(s16 x, s16 y)
{
s16 i;
u16 lowerY = y + 3;
- for(i = 0; i < 3; i++)
+ for (i = 0; i < 3; i++)
{
u16 currentX = x + i;
s16 currentXsigned = x + i;
- if(MapGridGetMetatileIdAt(currentXsigned, y) == 21)
+ if (MapGridGetMetatileIdAt(currentXsigned, y) == 21)
{
- switch((u8)sub_80A28A0(currentXsigned, y + 1))
+ switch ((u8)sub_80A28A0(currentXsigned, y + 1))
{
case 1:
MapGridSetMetatileIdAt(currentXsigned, y + 1, 0x208);
@@ -309,29 +327,29 @@ void sub_80A28F4(s16 x, s16 y)
break;
}
}
- if(MapGridGetMetatileIdAt((s16)currentX, (s16)lowerY) == 1)
+ if (MapGridGetMetatileIdAt((s16)currentX, (s16)lowerY) == 1)
{
- if(MapGridGetMetatileIdAt((s16)currentX, (s16)lowerY + 1) == 0x208)
+ if (MapGridGetMetatileIdAt((s16)currentX, (s16)lowerY + 1) == 0x208)
MapGridSetMetatileIdAt((s16)currentX, (s16)lowerY + 1, 0x1);
- if(MapGridGetMetatileIdAt((s16)currentX, (s16)lowerY + 1) == 0x281)
+ if (MapGridGetMetatileIdAt((s16)currentX, (s16)lowerY + 1) == 0x281)
MapGridSetMetatileIdAt((s16)currentX, (s16)lowerY + 1, 0x279);
- if(MapGridGetMetatileIdAt((s16)currentX, (s16)lowerY + 1) == 0x282)
+ if (MapGridGetMetatileIdAt((s16)currentX, (s16)lowerY + 1) == 0x282)
MapGridSetMetatileIdAt((s16)currentX, (s16)lowerY + 1, 0x27A);
- if(MapGridGetMetatileIdAt((s16)currentX, (s16)lowerY + 1) == 0x283)
+ if (MapGridGetMetatileIdAt((s16)currentX, (s16)lowerY + 1) == 0x283)
MapGridSetMetatileIdAt((s16)currentX, (s16)lowerY + 1, 0x27B);
}
}
}
-static void sub_80A2A48(struct Sprite *sprite)
+static void CutGrassSpriteCallback1(struct Sprite *sprite)
{
sprite->data[0] = 8;
sprite->data[1] = 0;
sprite->data[3] = 0;
- sprite->callback = (void *)objc_8097BBC;
+ sprite->callback = CutGrassSpriteCallback2;
}
-void objc_8097BBC(struct Sprite *sprite)
+static void CutGrassSpriteCallback2(struct Sprite *sprite)
{
u16 tempdata;
u16 tempdata2;
@@ -347,21 +365,21 @@ void objc_8097BBC(struct Sprite *sprite)
if((s16)tempdata != 28) // done rotating the grass, execute clean up function
sprite->data[1]++;
else
- sprite->callback = (void *)sub_80A2AB8;
+ sprite->callback = CutGrassSpriteCallbackEnd;
}
-void sub_80A2AB8(void)
+static void CutGrassSpriteCallbackEnd(struct Sprite *sprite)
{
u8 i;
for (i = 1; i < 8; i++)
DestroySprite(&gSprites[eCutGrassSpriteArray[i]]);
FieldEffectStop(&gSprites[eCutGrassSpriteArray[0]], FLDEFF_CUT_GRASS);
- sub_8064E2C();
+ ScriptUnfreezeEventObjects();
ScriptContext2_Disable();
}
-void sub_80A2B00(void)
+static void StartCutTreeFieldEffect(void)
{
PlaySE(SE_W015);
FieldEffectActiveListRemove(FLDEFF_USE_CUT_ON_TREE);
diff --git a/src/fldeff_decoration.c b/src/fldeff_decoration.c
index 1859fc00b..d65a23e95 100644
--- a/src/fldeff_decoration.c
+++ b/src/fldeff_decoration.c
@@ -6,12 +6,13 @@
#include "field_player_avatar.h"
#include "fieldmap.h"
#include "script.h"
-#include "constants/songs.h"
#include "sound.h"
#include "string_util.h"
#include "strings.h"
#include "task.h"
#include "text.h"
+#include "constants/field_effects.h"
+#include "constants/songs.h"
extern const u8 gSpriteImage_83D21EC[];
extern const u8 gSpriteImage_83D22EC[];
@@ -77,7 +78,7 @@ extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[36]
static void sub_80C68EC(u8);
static void DoBalloonSoundEffect(s16);
-void sub_80C68A4(s16 metatileId, s16 x, s16 y)
+void PopSecretBaseBalloon(s16 metatileId, s16 x, s16 y)
{
u8 taskId = CreateTask(sub_80C68EC, 0);
@@ -161,9 +162,9 @@ static void sub_80C6A14(u8 taskId)
}
}
-void sub_80C6A54(s16 x, s16 y)
+void ShatterSecretBaseBreakableDoor(s16 x, s16 y)
{
- u8 dir = player_get_direction_lower_nybble();
+ u8 dir = GetPlayerFacingDirection();
if (dir == DIR_SOUTH)
{
sub_80C69C4(x, y);
@@ -177,11 +178,11 @@ void sub_80C6A54(s16 x, s16 y)
}
}
-static void Task_DecorationSoundEffect(u8 taskId)
+static void Task_SecretBaseMusicNoteMatSound(u8 taskId)
{
if (gTasks[taskId].data[1] == 7)
{
- switch (gTasks[taskId].data[0])
+ switch (gTasks[taskId].data[0]) // metatileId
{
case 632:
PlaySE(SE_TOY_C);
@@ -217,14 +218,14 @@ static void Task_DecorationSoundEffect(u8 taskId)
}
}
-void DoDecorationSoundEffect(s16 arg)
+void PlaySecretBaseMusicNoteMatSound(s16 metatileId)
{
- u8 taskId = CreateTask(Task_DecorationSoundEffect, 5);
- gTasks[taskId].data[0] = arg;
+ u8 taskId = CreateTask(Task_SecretBaseMusicNoteMatSound, 5);
+ gTasks[taskId].data[0] = metatileId;
gTasks[taskId].data[1] = 0;
}
-void SpriteCB_YellowCave4Sparkle(struct Sprite *sprite)
+void SpriteCB_GlitterMatSparkle(struct Sprite *sprite)
{
sprite->data[0]++;
if (sprite->data[0] == 8)
@@ -233,10 +234,10 @@ void SpriteCB_YellowCave4Sparkle(struct Sprite *sprite)
DestroySprite(sprite);
}
-void DoYellowCave4Sparkle(void)
+void DoSecretBaseGlitterMatSparkle(void)
{
- s16 x = gMapObjects[gPlayerAvatar.mapObjectId].coords2.x;
- s16 y = gMapObjects[gPlayerAvatar.mapObjectId].coords2.y;
+ s16 x = gEventObjects[gPlayerAvatar.eventObjectId].currentCoords.x;
+ s16 y = gEventObjects[gPlayerAvatar.eventObjectId].currentCoords.y;
u8 spriteId;
sub_8060470(&x, &y, 8, 4);
@@ -246,7 +247,7 @@ void DoYellowCave4Sparkle(void)
gSprites[spriteId].coordOffsetEnabled = TRUE;
gSprites[spriteId].oam.priority = 1;
gSprites[spriteId].oam.paletteNum = 5;
- gSprites[spriteId].callback = SpriteCB_YellowCave4Sparkle;
+ gSprites[spriteId].callback = SpriteCB_GlitterMatSparkle;
gSprites[spriteId].data[0] = 0;
}
}
@@ -260,7 +261,7 @@ bool8 FldEff_SandPillar(void)
gFieldEffectArguments[5] = x;
gFieldEffectArguments[6] = y;
- switch (player_get_direction_lower_nybble())
+ switch (GetPlayerFacingDirection())
{
case DIR_SOUTH:
CreateSprite(
diff --git a/src/fldeff_flash.c b/src/fldeff_flash.c
index 30ddd0f6c..5a04f7061 100644
--- a/src/fldeff_flash.c
+++ b/src/fldeff_flash.c
@@ -12,53 +12,53 @@
#include "sprite.h"
#include "task.h"
-struct FlashStruct
+struct MapTypeFadePairs
{
- u8 unk0;
- u8 unk1;
- u8 unk2;
- u8 unk3;
+ u8 mapTypeA;
+ u8 mapTypeB;
+ u8 fadeToType; // 0 = fade to black, 1 = fade to white
+ u8 fadeFromType; // 0 = fade from black, 1 = fade from white
void (*func)(void);
};
extern u8 gLastFieldPokeMenuOpened;
-extern void (*gUnknown_03005CE4)(void);
+extern void (*gPostMenuFieldCallback)(void);
extern u8 gUnknown_081B694A[];
-void sub_810CBFC(void);
-void sub_810CC34(void);
-bool8 sub_810CD5C(void);
-void sub_810CE5C(u8);
-void sub_810CE78(u8);
-void sub_810CF18(u8);
-void sub_810CF5C(u8);
-void sub_810CFC4(u8);
-void sub_810D00C(u8);
-void sub_810D028(u8);
-void sub_810D0C4(u8);
-void sub_810D128(u8);
-void sub_810CFF8(void);
-void sub_810CE48(void);
-
-static const struct FlashStruct gUnknown_083F7FC4[] =
+static void sub_810CBFC(void);
+static void sub_810CC34(void);
+static bool8 sub_810CD5C(void);
+static void sub_810CE5C(u8);
+static void sub_810CE78(u8);
+static void sub_810CF18(u8);
+static void sub_810CF5C(u8);
+static void sub_810CFC4(u8);
+static void sub_810D00C(u8);
+static void sub_810D028(u8);
+static void sub_810D0C4(u8);
+static void sub_810D128(u8);
+static void CreateEnterUndergroundEffectTask(void);
+static void CreateExitUndergroundTask(void);
+
+static const struct MapTypeFadePairs gMapTypeFadePairs[] =
{
- {1, 4, 1, 0, sub_810CFF8},
- {2, 4, 1, 0, sub_810CFF8},
- {3, 4, 1, 0, sub_810CFF8},
- {5, 4, 1, 0, sub_810CFF8},
- {6, 4, 1, 0, sub_810CFF8},
- {7, 4, 1, 0, sub_810CFF8},
- {8, 4, 1, 0, sub_810CFF8},
- {9, 4, 1, 0, sub_810CFF8},
- {4, 1, 0, 1, sub_810CE48},
- {4, 2, 0, 1, sub_810CE48},
- {4, 3, 0, 1, sub_810CE48},
- {4, 5, 0, 1, sub_810CE48},
- {4, 6, 0, 1, sub_810CE48},
- {4, 7, 0, 1, sub_810CE48},
- {4, 8, 0, 1, sub_810CE48},
- {4, 9, 0, 1, sub_810CE48},
+ {MAP_TYPE_TOWN, MAP_TYPE_UNDERGROUND, 1, 0, CreateEnterUndergroundEffectTask},
+ {MAP_TYPE_CITY, MAP_TYPE_UNDERGROUND, 1, 0, CreateEnterUndergroundEffectTask},
+ {MAP_TYPE_ROUTE, MAP_TYPE_UNDERGROUND, 1, 0, CreateEnterUndergroundEffectTask},
+ {MAP_TYPE_UNDERWATER, MAP_TYPE_UNDERGROUND, 1, 0, CreateEnterUndergroundEffectTask},
+ {MAP_TYPE_6, MAP_TYPE_UNDERGROUND, 1, 0, CreateEnterUndergroundEffectTask},
+ {MAP_TYPE_7, MAP_TYPE_UNDERGROUND, 1, 0, CreateEnterUndergroundEffectTask},
+ {MAP_TYPE_INDOOR, MAP_TYPE_UNDERGROUND, 1, 0, CreateEnterUndergroundEffectTask},
+ {MAP_TYPE_SECRET_BASE, MAP_TYPE_UNDERGROUND, 1, 0, CreateEnterUndergroundEffectTask},
+ {MAP_TYPE_UNDERGROUND, MAP_TYPE_TOWN, 0, 1, CreateExitUndergroundTask},
+ {MAP_TYPE_UNDERGROUND, MAP_TYPE_CITY, 0, 1, CreateExitUndergroundTask},
+ {MAP_TYPE_UNDERGROUND, MAP_TYPE_ROUTE, 0, 1, CreateExitUndergroundTask},
+ {MAP_TYPE_UNDERGROUND, MAP_TYPE_UNDERWATER, 0, 1, CreateExitUndergroundTask},
+ {MAP_TYPE_UNDERGROUND, MAP_TYPE_6, 0, 1, CreateExitUndergroundTask},
+ {MAP_TYPE_UNDERGROUND, MAP_TYPE_7, 0, 1, CreateExitUndergroundTask},
+ {MAP_TYPE_UNDERGROUND, MAP_TYPE_INDOOR, 0, 1, CreateExitUndergroundTask},
+ {MAP_TYPE_UNDERGROUND, MAP_TYPE_SECRET_BASE, 0, 1, CreateExitUndergroundTask},
{0, 0, 0, 0, NULL},
};
@@ -87,15 +87,15 @@ bool8 SetUpFieldMove_Flash(void)
{
if (gMapHeader.cave == TRUE && !FlagGet(FLAG_SYS_USE_FLASH))
{
- gFieldCallback = FieldCallback_Teleport;
- gUnknown_03005CE4 = sub_810CBFC;
+ gFieldCallback = FieldCallback_PrepareFadeInFromMenu;
+ gPostMenuFieldCallback = sub_810CBFC;
return TRUE;
}
return FALSE;
}
-void sub_810CBFC(void)
+static void sub_810CBFC(void)
{
u8 taskId = oei_task_add();
gFieldEffectArguments[0] = gLastFieldPokeMenuOpened;
@@ -103,7 +103,7 @@ void sub_810CBFC(void)
gTasks[taskId].data[9] = (uintptr_t)sub_810CC34;
}
-void sub_810CC34(void)
+static void sub_810CC34(void)
{
PlaySE(SE_W115);
FlagSet(FLAG_SYS_USE_FLASH);
@@ -156,17 +156,17 @@ void sub_810CC80(void)
SetMainCallback2(gMain.savedCallback);
}
-bool8 sub_810CD5C(void)
+static bool8 sub_810CD5C(void)
{
u8 i;
- u8 v0 = get_map_type_from_warp0();
- u8 v1 = Overworld_GetMapTypeOfSaveblockLocation();
+ u8 prevMapType = GetLastUsedWarpMapType();
+ u8 curMapType = Overworld_GetMapTypeOfSaveblockLocation();
- for (i = 0; gUnknown_083F7FC4[i].unk0; i++)
+ for (i = 0; gMapTypeFadePairs[i].mapTypeA; i++)
{
- if (gUnknown_083F7FC4[i].unk0 == v0 && gUnknown_083F7FC4[i].unk1 == v1)
+ if (gMapTypeFadePairs[i].mapTypeA == prevMapType && gMapTypeFadePairs[i].mapTypeB == curMapType)
{
- gUnknown_083F7FC4[i].func();
+ gMapTypeFadePairs[i].func();
return TRUE;
}
}
@@ -174,51 +174,49 @@ bool8 sub_810CD5C(void)
return FALSE;
}
-u8 sub_810CDB8(u8 a1, u8 a2)
+u8 GetMapPairFadeToType(u8 currentMapType, u8 destinationMapType)
{
u8 i;
- u8 v0 = a1;
- u8 v1 = a2;
+ u8 curMapType = currentMapType;
+ u8 destMapType = destinationMapType;
- for (i = 0; gUnknown_083F7FC4[i].unk0; i++)
+ for (i = 0; gMapTypeFadePairs[i].mapTypeA; i++)
{
- if (gUnknown_083F7FC4[i].unk0 == v0 && gUnknown_083F7FC4[i].unk1 == v1)
- {
- return gUnknown_083F7FC4[i].unk2;
- }
+ if (gMapTypeFadePairs[i].mapTypeA == curMapType && gMapTypeFadePairs[i].mapTypeB == destMapType)
+ return gMapTypeFadePairs[i].fadeToType;
}
return FALSE;
}
-u8 fade_type_for_given_maplight_pair(u8 a1, u8 a2)
+u8 GetMapPairFadeFromType(u8 currentMapType, u8 destinationMapType)
{
u8 i;
- u8 v0 = a1;
- u8 v1 = a2;
+ u8 curMapType = currentMapType;
+ u8 destMapType = destinationMapType;
- for (i = 0; gUnknown_083F7FC4[i].unk0; i++)
+ for (i = 0; gMapTypeFadePairs[i].mapTypeA; i++)
{
- if (gUnknown_083F7FC4[i].unk0 == v0 && gUnknown_083F7FC4[i].unk1 == v1)
+ if (gMapTypeFadePairs[i].mapTypeA == curMapType && gMapTypeFadePairs[i].mapTypeB == destMapType)
{
- return gUnknown_083F7FC4[i].unk3;
+ return gMapTypeFadePairs[i].fadeFromType;
}
}
return FALSE;
}
-void sub_810CE48(void)
+static void CreateExitUndergroundTask(void)
{
CreateTask(sub_810CE5C, 0);
}
-void sub_810CE5C(u8 taskId)
+static void sub_810CE5C(u8 taskId)
{
gTasks[taskId].func = sub_810CE78;
}
-void sub_810CE78(u8 taskId)
+static void sub_810CE78(u8 taskId)
{
REG_DISPCNT = 0;
LZ77UnCompVram(gCaveTransitionTiles, (void *)0x600C000);
@@ -235,7 +233,7 @@ void sub_810CE78(u8 taskId)
gTasks[taskId].data[1] = 0;
}
-void sub_810CF18(u8 taskId)
+static void sub_810CF18(u8 taskId)
{
u16 count = gTasks[taskId].data[1];
u16 blend = count + 0x1000;
@@ -251,7 +249,7 @@ void sub_810CF18(u8 taskId)
}
}
-void sub_810CF5C(u8 taskId)
+static void sub_810CF5C(u8 taskId)
{
u16 count;
@@ -272,7 +270,7 @@ void sub_810CF5C(u8 taskId)
}
}
-void sub_810CFC4(u8 taskId)
+static void sub_810CFC4(u8 taskId)
{
if (gTasks[taskId].data[2])
gTasks[taskId].data[2]--;
@@ -280,17 +278,17 @@ void sub_810CFC4(u8 taskId)
SetMainCallback2(gMain.savedCallback);
}
-void sub_810CFF8(void)
+static void CreateEnterUndergroundEffectTask(void)
{
CreateTask(sub_810D00C, 0);
}
-void sub_810D00C(u8 taskId)
+static void sub_810D00C(u8 taskId)
{
gTasks[taskId].func = sub_810D028;
}
-void sub_810D028(u8 taskId)
+static void sub_810D028(u8 taskId)
{
REG_DISPCNT = 0;
LZ77UnCompVram(gCaveTransitionTiles, (void *)0x600C000);
@@ -308,7 +306,7 @@ void sub_810D028(u8 taskId)
gTasks[taskId].data[2] = 0;
}
-void sub_810D0C4(u8 taskId)
+static void sub_810D0C4(u8 taskId)
{
u16 count = gTasks[taskId].data[2];
if (count < 16)
@@ -325,7 +323,7 @@ void sub_810D0C4(u8 taskId)
}
}
-void sub_810D128(u8 taskId)
+static void sub_810D128(u8 taskId)
{
u16 count = 16 - gTasks[taskId].data[1];
u16 blend = count + 0x1000;
diff --git a/src/fldeff_secret_base_pc.c b/src/fldeff_secret_base_pc.c
index 394c4bc56..f9898c444 100644
--- a/src/fldeff_secret_base_pc.c
+++ b/src/fldeff_secret_base_pc.c
@@ -5,9 +5,10 @@
#include "field_player_avatar.h"
#include "fieldmap.h"
#include "script.h"
-#include "constants/songs.h"
#include "sound.h"
#include "task.h"
+#include "constants/field_effects.h"
+#include "constants/songs.h"
static void Task_SecretBasePCTurnOn(u8);
diff --git a/src/fldeff_secretpower.c b/src/fldeff_secretpower.c
index d1df03d84..47a8bd608 100644
--- a/src/fldeff_secretpower.c
+++ b/src/fldeff_secretpower.c
@@ -1,21 +1,23 @@
+
#include "global.h"
#include "event_data.h"
#include "fieldmap.h"
#include "field_effect.h"
#include "field_player_avatar.h"
#include "metatile_behavior.h"
-#include "metatile_behaviors.h"
#include "overworld.h"
#include "pokemon_menu.h"
#include "rom6.h"
#include "script.h"
#include "secret_base.h"
-#include "constants/songs.h"
#include "sound.h"
+#include "constants/field_effects.h"
+#include "constants/metatile_behaviors.h"
+#include "constants/songs.h"
-extern u8 gUnknown_081A2CE6[];
-extern u8 gUnknown_081A2D3E[];
-extern u8 gUnknown_081A2D96[];
+extern u8 DoSecretBaseCaveFieldEffectScript[];
+extern u8 DoSecretBaseTreeFieldEffectScript[];
+extern u8 DoSecretBaseShrubFieldEffectScript[];
const u8 gSpriteImage_83D198C[] = INCBIN_U8("graphics/unknown_sprites/83D259C/0.4bpp");
const u8 gSpriteImage_83D1A0C[] = INCBIN_U8("graphics/unknown_sprites/83D259C/1.4bpp");
@@ -162,8 +164,8 @@ const struct SpriteFrameImage gSpriteImageTable_83D25EC[] =
{gSpriteImage_83D1E4C, 0x80},
};
-void sub_80C644C(struct Sprite *);
-const struct SpriteTemplate gSpriteTemplate_83D2614 =
+static void CaveEntranceSpriteCallback1(struct Sprite *);
+static const struct SpriteTemplate sSpriteTemplate_CaveEntrance =
{
.tileTag = 0xFFFF,
.paletteTag = 4099,
@@ -171,11 +173,11 @@ const struct SpriteTemplate gSpriteTemplate_83D2614 =
.anims = gSpriteAnimTable_83D2584,
.images = gSpriteImageTable_83D259C,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_80C644C,
+ .callback = CaveEntranceSpriteCallback1,
};
-void sub_80C6598(struct Sprite *);
-const struct SpriteTemplate gSpriteTemplate_83D262C =
+static void TreeEntranceSpriteCallback1(struct Sprite *);
+const struct SpriteTemplate sSpriteTemplate_TreeEntrance =
{
.tileTag = 0xFFFF,
.paletteTag = 4104,
@@ -183,11 +185,11 @@ const struct SpriteTemplate gSpriteTemplate_83D262C =
.anims = gSpriteAnimTable_83D2588,
.images = gSpriteImageTable_83D25C4,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_80C6598,
+ .callback = TreeEntranceSpriteCallback1,
};
-void sub_80C66BC(struct Sprite *);
-const struct SpriteTemplate gSpriteTemplate_83D2644 =
+static void ShrubEntranceSpriteCallback1(struct Sprite *);
+const struct SpriteTemplate sSpriteTemplate_ShrubEntrance =
{
.tileTag = 0xFFFF,
.paletteTag = 4104,
@@ -195,48 +197,48 @@ const struct SpriteTemplate gSpriteTemplate_83D2644 =
.anims = gSpriteAnimTable_83D2598,
.images = gSpriteImageTable_83D25EC,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_80C66BC,
+ .callback = ShrubEntranceSpriteCallback1,
};
const struct SpritePalette gFieldEffectObjectPaletteInfo7 = {gFieldEffectObjectPalette7, 0x1003};
const struct SpritePalette gFieldEffectObjectPaletteInfo8 = {gFieldEffectObjectPalette8, 0x1008};
-void sub_80C639C(void);
-void sub_80C63E8(void);
-void sub_80C6468(struct Sprite *);
-void sub_80C6498(struct Sprite *);
-void sub_80C64A8(void);
-void sub_80C64F4(void);
-void sub_80C65C4(struct Sprite *);
-void sub_80C65FC(struct Sprite *);
-void sub_80C660C(void);
-void sub_80C6658(void);
-void sub_80C66D8(struct Sprite *sprite);
-void sub_80C6708(struct Sprite *sprite);
-
-void sub_80C6264(void)
-{
- sub_80BBFD8(&gUnknown_0203923C, gMapHeader.events);
- sub_80BB5E4();
+static void FieldCallback_SecretBaseCave(void);
+static void StartSecretBaseCaveFieldEffect(void);
+static void CaveEntranceSpriteCallback2(struct Sprite *);
+static void CaveEntranceSpriteCallbackEnd(struct Sprite *);
+static void FieldCallback_SecretBaseTree(void);
+static void StartSecretBaseTreeFieldEffect(void);
+static void TreeEntranceSpriteCallback2(struct Sprite *);
+static void TreeEntranceSpriteCallbackEnd(struct Sprite *);
+static void FieldCallback_SecretBaseShrub(void);
+static void StartSecretBaseShrubFieldEffect(void);
+static void ShrubEntranceSpriteCallback2(struct Sprite *sprite);
+static void ShrubEntranceSpriteCallbackEnd(struct Sprite *sprite);
+
+static void SetCurrentSecretBase(void)
+{
+ SetCurrentSecretBaseFromPosition(&gPlayerFacingPosition, gMapHeader.events);
+ SetCurrentSecretBaseVar();
}
-void sub_80C6280(void)
+static void AdjustSecretPowerSpritePixelOffsets(void)
{
switch (gFieldEffectArguments[1])
{
- case 1:
+ case DIR_SOUTH:
gFieldEffectArguments[5] = 8;
gFieldEffectArguments[6] = 40;
break;
- case 2:
+ case DIR_NORTH:
gFieldEffectArguments[5] = 8;
gFieldEffectArguments[6] = 8;
break;
- case 3:
+ case DIR_WEST:
gFieldEffectArguments[5] = -8;
gFieldEffectArguments[6] = 24;
break;
- case 4:
+ case DIR_EAST:
gFieldEffectArguments[5] = 24;
gFieldEffectArguments[6] = 24;
break;
@@ -245,37 +247,37 @@ void sub_80C6280(void)
#if DEBUG
-void debug_sub_80D93F4(void)
+void Debug_SetUpFieldMove_SecretPower(void)
{
u8 metatile;
- sub_80BB63C();
+ CheckPlayerHasSecretBase();
- if (gSpecialVar_Result == 1 || player_get_direction_lower_nybble() != 2)
+ if (gSpecialVar_Result == 1 || GetPlayerFacingDirection() != DIR_NORTH)
{
ScriptContext2_Disable();
return;
}
- GetXYCoordsOneStepInFrontOfPlayer(&gUnknown_0203923C.x, &gUnknown_0203923C.y);
- metatile = MapGridGetMetatileBehaviorAt(gUnknown_0203923C.x, gUnknown_0203923C.y);
+ GetXYCoordsOneStepInFrontOfPlayer(&gPlayerFacingPosition.x, &gPlayerFacingPosition.y);
+ metatile = MapGridGetMetatileBehaviorAt(gPlayerFacingPosition.x, gPlayerFacingPosition.y);
if (MetatileBehavior_IsSecretBaseCave(metatile) == TRUE)
{
- sub_80C6264();
+ SetCurrentSecretBase();
gLastFieldPokeMenuOpened = 0;
- sub_80C639C();
+ FieldCallback_SecretBaseCave();
}
else if (MetatileBehavior_IsSecretBaseTree(metatile) == TRUE)
{
- sub_80C6264();
+ SetCurrentSecretBase();
gLastFieldPokeMenuOpened = 0;
- sub_80C64A8();
+ FieldCallback_SecretBaseTree();
}
else if (MetatileBehavior_IsSecretBaseShrub(metatile) == TRUE)
{
- sub_80C6264();
+ SetCurrentSecretBase();
gLastFieldPokeMenuOpened = 0;
- sub_80C660C();
+ FieldCallback_SecretBaseShrub();
}
else
{
@@ -289,58 +291,57 @@ bool8 SetUpFieldMove_SecretPower(void)
{
u8 behavior;
- sub_80BB63C();
-
- if (gSpecialVar_Result == 1 || player_get_direction_lower_nybble() != DIR_NORTH)
+ CheckPlayerHasSecretBase();
+ if (gSpecialVar_Result == 1 || GetPlayerFacingDirection() != DIR_NORTH)
return FALSE;
- GetXYCoordsOneStepInFrontOfPlayer(&gUnknown_0203923C.x, &gUnknown_0203923C.y);
- behavior = MapGridGetMetatileBehaviorAt(gUnknown_0203923C.x, gUnknown_0203923C.y);
+ GetXYCoordsOneStepInFrontOfPlayer(&gPlayerFacingPosition.x, &gPlayerFacingPosition.y);
+ behavior = MapGridGetMetatileBehaviorAt(gPlayerFacingPosition.x, gPlayerFacingPosition.y);
if (MetatileBehavior_IsSecretBaseCave(behavior) == TRUE)
{
- sub_80C6264();
- gFieldCallback = FieldCallback_Teleport;
- gUnknown_03005CE4 = sub_80C639C;
+ SetCurrentSecretBase();
+ gFieldCallback = FieldCallback_PrepareFadeInFromMenu;
+ gPostMenuFieldCallback = FieldCallback_SecretBaseCave;
return TRUE;
}
if (MetatileBehavior_IsSecretBaseTree(behavior) == TRUE)
{
- sub_80C6264();
- gFieldCallback = FieldCallback_Teleport;
- gUnknown_03005CE4 = sub_80C64A8;
+ SetCurrentSecretBase();
+ gFieldCallback = FieldCallback_PrepareFadeInFromMenu;
+ gPostMenuFieldCallback = FieldCallback_SecretBaseTree;
return TRUE;
}
if (MetatileBehavior_IsSecretBaseShrub(behavior) == TRUE)
{
- sub_80C6264();
- gFieldCallback = FieldCallback_Teleport;
- gUnknown_03005CE4 = sub_80C660C;
+ SetCurrentSecretBase();
+ gFieldCallback = FieldCallback_PrepareFadeInFromMenu;
+ gPostMenuFieldCallback = FieldCallback_SecretBaseShrub;
return TRUE;
}
return FALSE;
}
-void sub_80C639C(void)
+static void FieldCallback_SecretBaseCave(void)
{
gFieldEffectArguments[0] = gLastFieldPokeMenuOpened;
- ScriptContext1_SetupScript(gUnknown_081A2CE6);
+ ScriptContext1_SetupScript(DoSecretBaseCaveFieldEffectScript);
}
bool8 FldEff_UseSecretPowerCave(void)
{
u8 taskId = oei_task_add();
- gTasks[taskId].data[8] = (uintptr_t)sub_80C63E8 >> 16;
- gTasks[taskId].data[9] = (uintptr_t)sub_80C63E8;
+ gTasks[taskId].data[8] = (uintptr_t)StartSecretBaseCaveFieldEffect >> 16;
+ gTasks[taskId].data[9] = (uintptr_t)StartSecretBaseCaveFieldEffect;
return FALSE;
}
-void sub_80C63E8(void)
+static void StartSecretBaseCaveFieldEffect(void)
{
FieldEffectActiveListRemove(FLDEFF_USE_SECRET_POWER_CAVE);
FieldEffectStart(FLDEFF_SECRET_POWER_CAVE);
@@ -348,60 +349,60 @@ void sub_80C63E8(void)
bool8 FldEff_SecretPowerCave(void)
{
- sub_80C6280();
+ AdjustSecretPowerSpritePixelOffsets();
CreateSprite(
- &gSpriteTemplate_83D2614,
+ &sSpriteTemplate_CaveEntrance,
gSprites[gPlayerAvatar.spriteId].oam.x + gFieldEffectArguments[5],
gSprites[gPlayerAvatar.spriteId].oam.y + gFieldEffectArguments[6],
148);
return FALSE;
}
-void sub_80C644C(struct Sprite *sprite)
+static void CaveEntranceSpriteCallback1(struct Sprite *sprite)
{
PlaySE(SE_W088);
sprite->data[0] = 0;
- sprite->callback = sub_80C6468;
+ sprite->callback = CaveEntranceSpriteCallback2;
}
-void sub_80C6468(struct Sprite *sprite)
+static void CaveEntranceSpriteCallback2(struct Sprite *sprite)
{
if (sprite->data[0] < 40)
{
sprite->data[0]++;
- if (sprite->data[0] == 20 )
- sub_80BB800();
+ if (sprite->data[0] == 20)
+ SetOpenedSecretBaseMetatile();
}
else
{
sprite->data[0] = 0;
- sprite->callback = sub_80C6498;
+ sprite->callback = CaveEntranceSpriteCallbackEnd;
}
}
-void sub_80C6498(struct Sprite *sprite)
+static void CaveEntranceSpriteCallbackEnd(struct Sprite *sprite)
{
FieldEffectStop(sprite, FLDEFF_SECRET_POWER_CAVE);
EnableBothScriptContexts();
}
-void sub_80C64A8(void)
+static void FieldCallback_SecretBaseTree(void)
{
gFieldEffectArguments[0] = gLastFieldPokeMenuOpened;
- ScriptContext1_SetupScript(gUnknown_081A2D3E);
+ ScriptContext1_SetupScript(DoSecretBaseTreeFieldEffectScript);
}
bool8 FldEff_UseSecretPowerTree(void)
{
u8 taskId = oei_task_add();
- gTasks[taskId].data[8] = (uintptr_t)sub_80C64F4 >> 16;
- gTasks[taskId].data[9] = (uintptr_t)sub_80C64F4;
+ gTasks[taskId].data[8] = (uintptr_t)StartSecretBaseTreeFieldEffect >> 16;
+ gTasks[taskId].data[9] = (uintptr_t)StartSecretBaseTreeFieldEffect;
return FALSE;
}
-void sub_80C64F4(void)
+static void StartSecretBaseTreeFieldEffect(void)
{
FieldEffectActiveListRemove(FLDEFF_USE_SECRET_POWER_TREE);
FieldEffectStart(FLDEFF_SECRET_POWER_TREE);
@@ -409,77 +410,72 @@ void sub_80C64F4(void)
bool8 FldEff_SecretPowerTree(void)
{
- s16 behavior = MapGridGetMetatileBehaviorAt(gUnknown_0203923C.x, gUnknown_0203923C.y) & 0xFFF;
+ s16 behavior = MapGridGetMetatileBehaviorAt(gPlayerFacingPosition.x, gPlayerFacingPosition.y) & 0xFFF;
if (behavior == MB_SECRET_BASE_SPOT_TREE_1)
- {
gFieldEffectArguments[7] = 0;
- }
if (behavior == MB_SECRET_BASE_SPOT_TREE_2)
- {
gFieldEffectArguments[7] = 2;
- }
-
- sub_80C6280();
+ AdjustSecretPowerSpritePixelOffsets();
CreateSprite(
- &gSpriteTemplate_83D262C,
+ &sSpriteTemplate_TreeEntrance,
gSprites[gPlayerAvatar.spriteId].oam.x + gFieldEffectArguments[5],
gSprites[gPlayerAvatar.spriteId].oam.y + gFieldEffectArguments[6],
148);
if (gFieldEffectArguments[7] == 1 || gFieldEffectArguments[7] == 3)
- sub_80BB800();
+ SetOpenedSecretBaseMetatile();
return FALSE;
}
-void sub_80C6598(struct Sprite *sprite)
+static void TreeEntranceSpriteCallback1(struct Sprite *sprite)
{
PlaySE(SE_W010);
sprite->animNum = gFieldEffectArguments[7];
sprite->data[0] = 0;
- sprite->callback = sub_80C65C4;
+ sprite->callback = TreeEntranceSpriteCallback2;
}
-void sub_80C65C4(struct Sprite *sprite)
+static void TreeEntranceSpriteCallback2(struct Sprite *sprite)
{
sprite->data[0]++;
if (sprite->data[0] >= 40)
{
if (gFieldEffectArguments[7] == 0 || gFieldEffectArguments[7] == 2)
- sub_80BB800();
+ SetOpenedSecretBaseMetatile();
+
sprite->data[0] = 0;
- sprite->callback = sub_80C65FC;
+ sprite->callback = TreeEntranceSpriteCallbackEnd;
}
}
-
-void sub_80C65FC(struct Sprite *sprite)
+static void TreeEntranceSpriteCallbackEnd(struct Sprite *sprite)
{
FieldEffectStop(sprite, FLDEFF_SECRET_POWER_TREE);
EnableBothScriptContexts();
}
-void sub_80C660C(void)
+static void FieldCallback_SecretBaseShrub(void)
{
gFieldEffectArguments[0] = gLastFieldPokeMenuOpened;
- ScriptContext1_SetupScript(gUnknown_081A2D96);
+ ScriptContext1_SetupScript(DoSecretBaseShrubFieldEffectScript);
}
bool8 FldEff_UseSecretPowerShrub(void)
{
u8 taskId = oei_task_add();
- gTasks[taskId].data[8] = (uintptr_t)sub_80C6658 >> 16;
- gTasks[taskId].data[9] = (uintptr_t)sub_80C6658;
+ gTasks[taskId].data[8] = (uintptr_t)StartSecretBaseShrubFieldEffect >> 16;
+ gTasks[taskId].data[9] = (uintptr_t)StartSecretBaseShrubFieldEffect;
return FALSE;
}
-void sub_80C6658(void)
+static void StartSecretBaseShrubFieldEffect(void)
{
FieldEffectActiveListRemove(FLDEFF_USE_SECRET_POWER_SHRUB);
FieldEffectStart(FLDEFF_SECRET_POWER_SHRUB);
@@ -487,39 +483,38 @@ void sub_80C6658(void)
bool8 FldEff_SecretPowerShrub(void)
{
- sub_80C6280();
+ AdjustSecretPowerSpritePixelOffsets();
CreateSprite(
- &gSpriteTemplate_83D2644,
+ &sSpriteTemplate_ShrubEntrance,
gSprites[gPlayerAvatar.spriteId].oam.x + gFieldEffectArguments[5],
gSprites[gPlayerAvatar.spriteId].oam.y + gFieldEffectArguments[6],
148);
return FALSE;
}
-void sub_80C66BC(struct Sprite *sprite)
+static void ShrubEntranceSpriteCallback1(struct Sprite *sprite)
{
PlaySE(SE_W077);
sprite->data[0] = 0;
- sprite->callback = sub_80C66D8;
+ sprite->callback = ShrubEntranceSpriteCallback2;
}
-void sub_80C66D8(struct Sprite *sprite)
+static void ShrubEntranceSpriteCallback2(struct Sprite *sprite)
{
if (sprite->data[0] < 40)
{
sprite->data[0]++;
- if (sprite->data[0] == 20 )
- sub_80BB800();
+ if (sprite->data[0] == 20)
+ SetOpenedSecretBaseMetatile();
}
else
{
sprite->data[0] = 0;
- sprite->callback = sub_80C6708;
+ sprite->callback = ShrubEntranceSpriteCallbackEnd;
}
}
-
-void sub_80C6708(struct Sprite *sprite)
+static void ShrubEntranceSpriteCallbackEnd(struct Sprite *sprite)
{
FieldEffectStop(sprite, FLDEFF_SECRET_POWER_SHRUB);
EnableBothScriptContexts();
diff --git a/src/fldeff_strength.c b/src/fldeff_strength.c
index 9f9cd4013..0b66ed0d2 100644
--- a/src/fldeff_strength.c
+++ b/src/fldeff_strength.c
@@ -1,5 +1,4 @@
#include "global.h"
-#include "constants/map_objects.h"
#include "braille_puzzles.h"
#include "field_effect.h"
#include "party_menu.h"
@@ -9,6 +8,8 @@
#include "script.h"
#include "task.h"
#include "text.h"
+#include "constants/field_effects.h"
+#include "constants/event_objects.h"
static void sub_811AA18(void);
static void sub_811AA38(void);
@@ -17,7 +18,7 @@ static void sub_811AA9C(void);
extern u8 gLastFieldPokeMenuOpened;
extern u16 gSpecialVar_Result;
extern void (*gFieldCallback)(void);
-extern void (*gUnknown_03005CE4)(void);
+extern void (*gPostMenuFieldCallback)(void);
extern u8 S_UseStrength[];
@@ -30,7 +31,7 @@ void debug_sub_8130318(void)
gSpecialVar_Result = 0;
sub_811AA38();
}
- else if (npc_before_player_of_type(MAP_OBJ_GFX_PUSHABLE_BOULDER) == TRUE)
+ else if (SetLastTalkedObjectInFrontOfPlayer(EVENT_OBJ_GFX_PUSHABLE_BOULDER) == TRUE)
{
gLastFieldPokeMenuOpened = 0;
gSpecialVar_Result = 0;
@@ -48,16 +49,16 @@ bool8 SetUpFieldMove_Strength(void)
if (ShouldDoBrailleStrengthEffect())
{
gSpecialVar_Result = gLastFieldPokeMenuOpened;
- gFieldCallback = FieldCallback_Teleport;
- gUnknown_03005CE4 = sub_811AA38;
+ gFieldCallback = FieldCallback_PrepareFadeInFromMenu;
+ gPostMenuFieldCallback = sub_811AA38;
}
else
{
- if (npc_before_player_of_type(87) != TRUE)
+ if (SetLastTalkedObjectInFrontOfPlayer(EVENT_OBJ_GFX_PUSHABLE_BOULDER) != TRUE)
return 0;
gSpecialVar_Result = gLastFieldPokeMenuOpened;
- gFieldCallback = FieldCallback_Teleport;
- gUnknown_03005CE4 = sub_811AA18;
+ gFieldCallback = FieldCallback_PrepareFadeInFromMenu;
+ gPostMenuFieldCallback = sub_811AA18;
}
return TRUE;
diff --git a/src/fldeff_sweetscent.c b/src/fldeff_sweetscent.c
index b9dbf619d..88069f6e9 100644
--- a/src/fldeff_sweetscent.c
+++ b/src/fldeff_sweetscent.c
@@ -9,26 +9,28 @@
#include "sprite.h"
#include "task.h"
#include "wild_encounter.h"
+#include "constants/field_effects.h"
+#include "constants/songs.h"
-static void sub_812BFD4(void);
-static void sub_812C01C(void);
-static void sub_812C084(u8);
-static void sub_812C118(u8);
+static void FieldCallback_SweetScent(void);
+static void StartSweetScentFieldEffect(void);
+static void TrySweetScentEncounter(u8);
+static void FailSweetScentEncounter(u8);
extern u8 gLastFieldPokeMenuOpened;
extern void (*gFieldCallback)(void);
-extern void (*gUnknown_03005CE4)(void);
+extern void (*gPostMenuFieldCallback)(void);
extern u8 SweetScentNothingHereScript[];
bool8 SetUpFieldMove_SweetScent(void)
{
- gFieldCallback = FieldCallback_Teleport;
- gUnknown_03005CE4 = sub_812BFD4;
+ gFieldCallback = FieldCallback_PrepareFadeInFromMenu;
+ gPostMenuFieldCallback = FieldCallback_SweetScent;
return TRUE;
}
-static void sub_812BFD4(void)
+static void FieldCallback_SweetScent(void)
{
FieldEffectStart(FLDEFF_SWEET_SCENT);
gFieldEffectArguments[0] = gLastFieldPokeMenuOpened;
@@ -38,23 +40,23 @@ bool8 FldEff_SweetScent()
{
u8 taskId = oei_task_add();
- gTasks[taskId].data[8] = (u32)sub_812C01C >> 16;
- gTasks[taskId].data[9] = (u32)sub_812C01C;
+ gTasks[taskId].data[8] = (u32)StartSweetScentFieldEffect >> 16;
+ gTasks[taskId].data[9] = (u32)StartSweetScentFieldEffect;
return FALSE;
}
-static void sub_812C01C(void)
+static void StartSweetScentFieldEffect(void)
{
u8 taskId;
- PlaySE(0xEC);
- BeginNormalPaletteFade(~(1 << (gSprites[GetPlayerAvatarObjectId()].oam.paletteNum + 16)), 4, 0, 8, 0x1F);
- taskId = CreateTask(sub_812C084, 0);
+ PlaySE(SE_W230);
+ BeginNormalPaletteFade(~(1 << (gSprites[GetPlayerAvatarObjectId()].oam.paletteNum + 16)), 4, 0, 8, RGB(31, 0, 0));
+ taskId = CreateTask(TrySweetScentEncounter, 0);
gTasks[taskId].data[0] = 0;
FieldEffectActiveListRemove(FLDEFF_SWEET_SCENT);
}
-static void sub_812C084(u8 taskId)
+static void TrySweetScentEncounter(u8 taskId)
{
if (!gPaletteFade.active)
{
@@ -67,8 +69,8 @@ static void sub_812C084(u8 taskId)
}
else
{
- gTasks[taskId].func = sub_812C118;
- BeginNormalPaletteFade(~(1 << (gSprites[GetPlayerAvatarObjectId()].oam.paletteNum + 16)), 4, 8, 0, 0x1F);
+ gTasks[taskId].func = FailSweetScentEncounter;
+ BeginNormalPaletteFade(~(1 << (gSprites[GetPlayerAvatarObjectId()].oam.paletteNum + 16)), 4, 8, 0, RGB(31, 0, 0));
}
}
else
@@ -78,7 +80,7 @@ static void sub_812C084(u8 taskId)
}
}
-static void sub_812C118(u8 taskId)
+static void FailSweetScentEncounter(u8 taskId)
{
if (!gPaletteFade.active)
{
diff --git a/src/fldeff_teleport.c b/src/fldeff_teleport.c
index af48fb414..9f72c6383 100644
--- a/src/fldeff_teleport.c
+++ b/src/fldeff_teleport.c
@@ -1,29 +1,33 @@
#include "global.h"
-#include "fldeff_teleport.h"
#include "field_effect.h"
#include "field_player_avatar.h"
#include "pokemon_menu.h"
#include "overworld.h"
#include "rom6.h"
#include "task.h"
+#include "constants/field_effects.h"
extern void (*gFieldCallback)(void);
extern u8 gLastFieldPokeMenuOpened;
-extern void (*gUnknown_03005CE4)(void);
+extern void (*gPostMenuFieldCallback)(void);
+
+static void FieldCallback_Teleport(void);
+static void StartTeleportFieldEffect(void);
+
bool8 SetUpFieldMove_Teleport(void)
{
if (Overworld_MapTypeAllowsTeleportAndFly(gMapHeader.mapType) == TRUE)
{
- gFieldCallback = FieldCallback_Teleport;
- gUnknown_03005CE4 = hm_teleport_run_dp02scr;
+ gFieldCallback = FieldCallback_PrepareFadeInFromMenu;
+ gPostMenuFieldCallback = FieldCallback_Teleport;
return TRUE;
}
return FALSE;
}
-void hm_teleport_run_dp02scr(void)
+static void FieldCallback_Teleport(void)
{
Overworld_ResetStateAfterTeleport();
FieldEffectStart(FLDEFF_USE_TELEPORT);
@@ -33,14 +37,14 @@ void hm_teleport_run_dp02scr(void)
bool8 FldEff_UseTeleport(void)
{
u8 taskId = oei_task_add();
- gTasks[taskId].data[8] = (u32)sub_814A404 >> 16;
- gTasks[taskId].data[9] = (u32)sub_814A404;
- SetPlayerAvatarTransitionFlags(1);
+ gTasks[taskId].data[8] = (u32)StartTeleportFieldEffect >> 16;
+ gTasks[taskId].data[9] = (u32)StartTeleportFieldEffect;
+ SetPlayerAvatarTransitionFlags(PLAYER_AVATAR_FLAG_ON_FOOT);
return 0;
}
-void sub_814A404(void)
+static void StartTeleportFieldEffect(void)
{
FieldEffectActiveListRemove(FLDEFF_USE_TELEPORT);
- sub_8087BA8();
+ CreateTeleportFieldEffectTask();
}
diff --git a/src/hall_of_fame.c b/src/hall_of_fame.c
index 2b790e97d..2536f4898 100644
--- a/src/hall_of_fame.c
+++ b/src/hall_of_fame.c
@@ -429,7 +429,7 @@ static bool8 sub_8141E64(void)
{
u16 saved_IME;
- BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
SetVBlankCallback(VBlankCB_HallOfFame);
saved_IME = REG_IME;
REG_IME = 0;
@@ -451,7 +451,7 @@ static bool8 sub_8141E64(void)
if (!gPaletteFade.active)
{
SetMainCallback2(CB2_HallOfFame);
- PlayBGM(BGM_DENDOU);
+ PlayBGM(MUS_DENDOU);
return 0;
}
break;
@@ -645,7 +645,7 @@ static void sub_8142484(u8 taskID)
if (gTasks[taskID].tDisplayedPoke <= 4 && currMon[1].species != 0) // there is another pokemon to display
{
gTasks[taskID].tDisplayedPoke++;
- BeginNormalPaletteFade(sUnknown_0203931C, 0, 12, 12, 0x735F);
+ BeginNormalPaletteFade(sUnknown_0203931C, 0, 12, 12, RGB(31, 26, 28));
gSprites[gTasks[taskID].tMonSpriteID(currPokeID)].oam.priority = 1;
gTasks[taskID].func = sub_8142320;
}
@@ -658,7 +658,7 @@ static void sub_8142570(u8 taskID)
{
u16 i;
- BeginNormalPaletteFade(0xFFFF0000, 0, 0, 0, 0);
+ BeginNormalPaletteFade(0xFFFF0000, 0, 0, 0, RGB(0, 0, 0));
for (i = 0; i < 6; i++)
{
if (gTasks[taskID].tMonSpriteID(i) != 0xFF)
@@ -687,7 +687,7 @@ static void sub_8142618(u8 taskID)
if (gTasks[taskID].tMonSpriteID(i) != 0xFF)
gSprites[gTasks[taskID].tMonSpriteID(i)].oam.priority = 1;
}
- BeginNormalPaletteFade(sUnknown_0203931C, 0, 12, 12, 0x735F);
+ BeginNormalPaletteFade(sUnknown_0203931C, 0, 12, 12, RGB(31, 26, 28));
Menu_EraseWindowRect(0, 14, 29, 19);
gTasks[taskID].tFrameCount = 7;
gTasks[taskID].func = sub_81426F8;
@@ -747,7 +747,7 @@ static void sub_8142818(u8 taskID)
static void sub_8142850(u8 taskID)
{
CpuSet(gPlttBufferFaded, gPlttBufferUnfaded, 0x200);
- BeginNormalPaletteFade(-1, 8, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 8, 0, 16, RGB(0, 0, 0));
gTasks[taskID].func = sub_81428A0;
}
@@ -906,7 +906,7 @@ static void sub_8142B04(u8 taskID)
gTasks[taskID].tMonSpriteID(i) = 0xFF;
}
- BlendPalettes(0xFFFF0000, 0xC, 0x735F);
+ BlendPalettes(0xFFFF0000, 12, RGB(31, 26, 28));
stringPtr = gStringVar1;
stringPtr = StringCopy(stringPtr, gMenuText_HOFNumber);
@@ -944,7 +944,7 @@ static void sub_8142CC8(u8 taskID)
currMonID = gTasks[taskID].tMonSpriteID(gTasks[taskID].tCurrPokeID);
gSprites[currMonID].oam.priority = 0;
sUnknown_0203931C = (0x10000 << gSprites[currMonID].oam.paletteNum) ^ 0xFFFF0000;
- BlendPalettesUnfaded(sUnknown_0203931C, 0xC, 0x735F);
+ BlendPalettesUnfaded(sUnknown_0203931C, 12, RGB(31, 26, 28));
currMon = &savedTeams->mons[gTasks[taskID].tCurrPokeID];
if (currMon->species != SPECIES_EGG)
diff --git a/src/heal_location.c b/src/heal_location.c
index a10c7a7b8..4c78f5921 100644
--- a/src/heal_location.c
+++ b/src/heal_location.c
@@ -2,8 +2,6 @@
#include "heal_location.h"
#include "constants/maps.h"
-#define NUM_HEAL_LOCATIONS 22
-
static const struct HealLocation sHealLocations[] =
{
{MAP_GROUP(LITTLEROOT_TOWN_BRENDANS_HOUSE_2F), MAP_NUM(LITTLEROOT_TOWN_BRENDANS_HOUSE_2F), 4, 2},
@@ -34,7 +32,7 @@ u32 GetHealLocationIndexByMap(u16 mapGroup, u16 mapNum)
{
u32 i;
- for (i = 0; i < NUM_HEAL_LOCATIONS; i++)
+ for (i = 0; i < ARRAY_COUNT(sHealLocations); i++)
{
if (sHealLocations[i].group == mapGroup && sHealLocations[i].map == mapNum)
return i + 1;
@@ -56,7 +54,7 @@ const struct HealLocation *GetHealLocation(u32 index)
{
if (index == 0)
return NULL;
- else if (index > NUM_HEAL_LOCATIONS)
+ else if (index > ARRAY_COUNT(sHealLocations))
return NULL;
else
return &sHealLocations[index - 1];
diff --git a/src/hof_pc.c b/src/hof_pc.c
index 267ed4274..b9407bace 100644
--- a/src/hof_pc.c
+++ b/src/hof_pc.c
@@ -8,7 +8,6 @@
#include "task.h"
extern void (*gFieldCallback)(void);
-extern void (*gUnknown_0300485C)(void);
static void ReshowPCMenuAfterHallOfFamePC(void);
static void Task_WaitForPaletteFade(u8);
@@ -29,7 +28,7 @@ static void ReshowPCMenuAfterHallOfFamePC(void)
{
ScriptContext2_Enable();
Overworld_PlaySpecialMapMusic();
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
ScrSpecial_CreatePCMenu();
ScriptMenu_DisplayPCStartupPrompt();
CreateTask(Task_WaitForPaletteFade, 10);
diff --git a/src/intro.c b/src/intro.c
index 5c0e7a67d..b444c518e 100644
--- a/src/intro.c
+++ b/src/intro.c
@@ -877,7 +877,7 @@ static u8 SetUpCopyrightScreen(void)
ResetTasks();
ResetSpriteData();
FreeAllSpritePalettes();
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0xFFFF);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, FADE_COLOR_WHITE);
REG_BG0CNT = BGCNT_PRIORITY(0)
| BGCNT_CHARBASE(0)
| BGCNT_SCREENBASE(7)
@@ -901,7 +901,7 @@ static u8 SetUpCopyrightScreen(void)
GameCubeMultiBoot_Main(&gMultibootProgramStruct);
if (gMultibootProgramStruct.gcmb_field_2 != 1)
{
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gMain.state++;
}
break;
@@ -982,7 +982,7 @@ void Task_IntroLoadPart1Graphics(u8 taskId)
static void Task_IntroFadeIn(u8 taskId)
{
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
SetVBlankCallback(VBlankCB_Intro);
REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON;
gTasks[taskId].func = Task_IntroWaterDrops;
@@ -1054,7 +1054,7 @@ static void Task_IntroScrollDownAndShowEon(u8 taskId)
//fade to white
if (gIntroFrameCounter > 1007)
{
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0xFFFF);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, FADE_COLOR_WHITE);
gTasks[taskId].func = Task_IntroWaitToSetupPart2;
}
}
@@ -1111,7 +1111,7 @@ static void Task_IntroStartBikeRide(u8 taskId)
#endif
gSprites[spriteId].callback = sub_813D880;
gTasks[taskId].data[2] = spriteId;
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0xFFFF);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, FADE_COLOR_WHITE);
SetVBlankCallback(VBlankCB_Intro);
#ifdef SAPPHIRE
gTasks[taskId].data[0] = sub_8148EC0(0, 0x4000, 0x40, 0x10);
@@ -1130,7 +1130,7 @@ static void Task_IntroHandleBikeAndEonMovement(u8 taskId)
if (gIntroFrameCounter > 1823)
{
- BeginNormalPaletteFade(0xFFFFFFFF, 16, 0, 16, 0xFFFF);
+ BeginNormalPaletteFade(0xFFFFFFFF, 16, 0, 16, FADE_COLOR_WHITE);
gTasks[taskId].func = Task_IntroWaitToSetupPart3;
}
if (gIntroFrameCounter == 1109)
@@ -1181,7 +1181,7 @@ static void Task_IntroLoadPart3Graphics(u8 taskId)
sub_813CE30(0x78, 0x50, 0, 0);
ResetSpriteData();
FreeAllSpritePalettes();
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0xFFFF);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, FADE_COLOR_WHITE);
REG_BG2CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(8) | BGCNT_256COLOR | BGCNT_AFF256x256;
REG_DISPCNT = DISPCNT_MODE_1 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG2_ON | DISPCNT_OBJ_ON;
gTasks[taskId].func = Task_IntroSpinAndZoomPokeball;
@@ -1203,7 +1203,7 @@ static void Task_IntroSpinAndZoomPokeball(u8 taskId)
}
sub_813CE30(0x78, 0x50, 0x10000 / gTasks[taskId].data[1], gTasks[taskId].data[0]);
if (gIntroFrameCounter == 44)
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0xFFFF);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, FADE_COLOR_WHITE);
}
static void Task_IntroWaitToSetupPart3DoubleFight(u8 taskId)
@@ -1341,7 +1341,7 @@ static void Task_IntroPokemonBattle(u8 taskId)
}
if (gIntroFrameCounter == 400)
{
- BeginNormalPaletteFade(0xFF0000, 0, 0x10, 0, 0x7EFF);
+ BeginNormalPaletteFade(0xFF0000, 0, 16, 0, RGB(31, 23, 31));
}
if (gIntroFrameCounter == 432)
{
@@ -1408,7 +1408,7 @@ static void Task_IntroPokemonBattle(u8 taskId)
if (gIntroFrameCounter == 800)
PlaySE(SE_OP_BASYU);
if (gIntroFrameCounter == 850)
- BeginNormalPaletteFade(0xFFFFFFFF, 4, 0, 0x10, 0xFFFF);
+ BeginNormalPaletteFade(0xFFFFFFFF, 4, 0, 16, FADE_COLOR_WHITE);
if (gIntroFrameCounter == 946)
gTasks[taskId].func = task_intro_19;
}
@@ -1433,7 +1433,7 @@ static void task_intro_20(u8 taskId)
gTasks[taskId].data[0] = 0xFF;
break;
case 2:
- BeginNormalPaletteFade(1, 0, 0x10, 0, 0xFFFF);
+ BeginNormalPaletteFade(0x1, 0, 16, 0, FADE_COLOR_WHITE);
REG_BG2CNT = BG2_FLAGS;
REG_DISPCNT = DISPCNT_FLAGS;
gTasks[taskId].data[1] = 0;
@@ -1447,7 +1447,7 @@ static void task_intro_20(u8 taskId)
gTasks[taskId].data[2] -= 8;
break;
case 3:
- BeginNormalPaletteFade(1, 0, 0x10, 0, 0xFFFF);
+ BeginNormalPaletteFade(0x1, 0, 16, 0, FADE_COLOR_WHITE);
REG_BG2CNT = BG2_FLAGS;
REG_DISPCNT = DISPCNT_FLAGS;
gTasks[taskId].data[1] = 0;
@@ -1461,7 +1461,7 @@ static void task_intro_20(u8 taskId)
gTasks[taskId].data[2] += 8;
break;
case 4:
- BeginNormalPaletteFade(1, 5, 0, 0x10, 0x37F7);
+ BeginNormalPaletteFade(0x1, 5, 0, 16, RGB(23, 31, 13));
REG_BG2CNT = BG2_FLAGS;
REG_DISPCNT = DISPCNT_FLAGS;
gTasks[taskId].data[1] = 0;
diff --git a/src/item.c b/src/item.c
index 41cbb7a1e..470b4d430 100644
--- a/src/item.c
+++ b/src/item.c
@@ -17,7 +17,8 @@ struct Item
u8 holdEffectParam;
const u8 *description;
u8 importance;
- u8 unk19;
+ u8 exitsBagOnUse; // unused, but items which have this field set to 1 all
+ // exit the Bag when they are used.
u8 pocket;
u8 type;
ItemUseFunc fieldUseFunc;
@@ -26,7 +27,7 @@ struct Item
u8 secondaryId;
};
-extern u8 gUnknown_02038560;
+extern u8 gCurSelectedItemSlotIndex;
extern struct BagPocket gBagPockets[NUM_BAG_POCKETS];
// These constants are used in gItems
@@ -63,7 +64,7 @@ void CopyItemName(u16 itemId, u8 *string)
{
if (itemId == ITEM_ENIGMA_BERRY)
{
- StringCopy(string, GetBerryInfo(0x2B)->name); // berry 0x2b = enigma berry
+ StringCopy(string, GetBerryInfo(GETBERRYID(ITEM_ENIGMA_BERRY))->name);
StringAppend(string, gOtherText_Berry2);
}
else
@@ -173,7 +174,6 @@ bool8 CheckBagHasSpace(u16 itemId, u16 count)
// This function matches if gBagPockets is declared non-const,
// but it should be fixed anyway.
-//#ifdef NONMATCHING
bool8 AddBagItem(u16 itemId, u16 count)
{
u8 i;
@@ -238,158 +238,6 @@ bool8 AddBagItem(u16 itemId, u16 count)
memcpy(gBagPockets[pocket].itemSlots, newItems, gBagPockets[pocket].capacity * sizeof(struct ItemSlot));
return TRUE;
}
-//#else
-//__attribute__((naked))
-//bool8 AddBagItem(u16 itemId, u16 count)
-//{
-// asm(".syntax unified\n\
-// push {r4-r7,lr}\n\
-// mov r7, r9\n\
-// mov r6, r8\n\
-// push {r6,r7}\n\
-// sub sp, 0x100\n\
-// lsls r0, 16\n\
-// lsrs r0, 16\n\
-// mov r8, r0\n\
-// lsls r1, 16\n\
-// lsrs r4, r1, 16\n\
-// bl ItemId_GetPocket\n\
-// lsls r0, 24\n\
-// cmp r0, 0\n\
-// beq _080A9510\n\
-// mov r0, r8\n\
-// bl ItemId_GetPocket\n\
-// subs r0, 0x1\n\
-// lsls r0, 24\n\
-// lsrs r6, r0, 24\n\
-// ldr r1, _080A94F8 @ =gBagPockets\n\
-// lsls r0, r6, 3\n\
-// adds r5, r0, r1\n\
-// ldr r1, [r5]\n\
-// ldrb r2, [r5, 0x4]\n\
-// lsls r2, 2\n\
-// mov r0, sp\n\
-// bl memcpy\n\
-// ldr r7, _080A94FC @ =0x000003e7\n\
-// cmp r6, 0x3\n\
-// beq _080A9468\n\
-// movs r7, 0x63\n\
-//_080A9468:\n\
-// movs r1, 0\n\
-// ldrb r0, [r5, 0x4]\n\
-// cmp r1, r0\n\
-// bcs _080A94B2\n\
-// subs r0, r6, 0x2\n\
-// lsls r0, 24\n\
-// lsrs r0, 24\n\
-// mov r12, r0\n\
-//_080A9478:\n\
-// lsls r0, r1, 2\n\
-// mov r2, sp\n\
-// adds r3, r2, r0\n\
-// ldrh r0, [r3]\n\
-// cmp r0, r8\n\
-// bne _080A94A6\n\
-// ldrh r2, [r3, 0x2]\n\
-// adds r0, r2, r4\n\
-// cmp r0, r7\n\
-// ble _080A9500\n\
-// mov r0, r12\n\
-// cmp r0, 0x1\n\
-// bls _080A9510\n\
-// subs r0, r7, r2\n\
-// subs r0, r4, r0\n\
-// lsls r0, 16\n\
-// lsrs r4, r0, 16\n\
-// strh r7, [r3, 0x2]\n\
-// ldr r2, _080A94F8 @ =gBagPockets\n\
-// mov r9, r2\n\
-// lsls r3, r6, 3\n\
-// cmp r4, 0\n\
-// beq _080A9516\n\
-//_080A94A6:\n\
-// adds r0, r1, 0x1\n\
-// lsls r0, 24\n\
-// lsrs r1, r0, 24\n\
-// ldrb r0, [r5, 0x4]\n\
-// cmp r1, r0\n\
-// bcc _080A9478\n\
-//_080A94B2:\n\
-// ldr r2, _080A94F8 @ =gBagPockets\n\
-// mov r9, r2\n\
-// lsls r3, r6, 3\n\
-// cmp r4, 0\n\
-// beq _080A9516\n\
-// movs r1, 0\n\
-// adds r0, r3, r2\n\
-// ldrb r0, [r0, 0x4]\n\
-// cmp r1, r0\n\
-// bcs _080A94F2\n\
-// mov r6, r9\n\
-// adds r5, r3, r6\n\
-//_080A94CA:\n\
-// lsls r0, r1, 2\n\
-// mov r6, sp\n\
-// adds r2, r6, r0\n\
-// ldrh r0, [r2]\n\
-// cmp r0, 0\n\
-// bne _080A94E6\n\
-// mov r0, r8\n\
-// strh r0, [r2]\n\
-// cmp r4, r7\n\
-// bls _080A9514\n\
-// subs r0, r4, r7\n\
-// lsls r0, 16\n\
-// lsrs r4, r0, 16\n\
-// strh r7, [r2, 0x2]\n\
-//_080A94E6:\n\
-// adds r0, r1, 0x1\n\
-// lsls r0, 24\n\
-// lsrs r1, r0, 24\n\
-// ldrb r2, [r5, 0x4]\n\
-// cmp r1, r2\n\
-// bcc _080A94CA\n\
-//_080A94F2:\n\
-// cmp r4, 0\n\
-// beq _080A9516\n\
-// b _080A9510\n\
-// .align 2, 0\n\
-//_080A94F8: .4byte gBagPockets\n\
-//_080A94FC: .4byte 0x000003e7\n\
-//_080A9500:\n\
-// strh r0, [r3, 0x2]\n\
-// ldr r0, _080A950C @ =gBagPockets\n\
-// lsls r1, r6, 3\n\
-// adds r1, r0\n\
-// b _080A951A\n\
-// .align 2, 0\n\
-//_080A950C: .4byte gBagPockets\n\
-//_080A9510:\n\
-// movs r0, 0\n\
-// b _080A9528\n\
-//_080A9514:\n\
-// strh r4, [r2, 0x2]\n\
-//_080A9516:\n\
-// mov r6, r9\n\
-// adds r1, r3, r6\n\
-//_080A951A:\n\
-// ldr r0, [r1]\n\
-// ldrb r2, [r1, 0x4]\n\
-// lsls r2, 2\n\
-// mov r1, sp\n\
-// bl memcpy\n\
-// movs r0, 0x1\n\
-//_080A9528:\n\
-// add sp, 0x100\n\
-// pop {r3,r4}\n\
-// mov r8, r3\n\
-// mov r9, r4\n\
-// pop {r4-r7}\n\
-// pop {r1}\n\
-// bx r1\n\
-// .syntax divided\n");
-//}
-//#endif
bool8 RemoveBagItem(u16 itemId, u16 count)
{
@@ -409,21 +257,21 @@ bool8 RemoveBagItem(u16 itemId, u16 count)
if (totalQuantity < count)
return FALSE; //We don't have enough of the item
- if (gBagPockets[pocket].capacity > gUnknown_02038560
- && gBagPockets[pocket].itemSlots[gUnknown_02038560].itemId == itemId)
+ if (gBagPockets[pocket].capacity > gCurSelectedItemSlotIndex
+ && gBagPockets[pocket].itemSlots[gCurSelectedItemSlotIndex].itemId == itemId)
{
- if (gBagPockets[pocket].itemSlots[gUnknown_02038560].quantity >= count)
+ if (gBagPockets[pocket].itemSlots[gCurSelectedItemSlotIndex].quantity >= count)
{
- gBagPockets[pocket].itemSlots[gUnknown_02038560].quantity -= count;
+ gBagPockets[pocket].itemSlots[gCurSelectedItemSlotIndex].quantity -= count;
count = 0;
}
else
{
- count -= gBagPockets[pocket].itemSlots[gUnknown_02038560].quantity;
- gBagPockets[pocket].itemSlots[gUnknown_02038560].quantity = 0;
+ count -= gBagPockets[pocket].itemSlots[gCurSelectedItemSlotIndex].quantity;
+ gBagPockets[pocket].itemSlots[gCurSelectedItemSlotIndex].quantity = 0;
}
- if (gBagPockets[pocket].itemSlots[gUnknown_02038560].quantity == 0)
- gBagPockets[pocket].itemSlots[gUnknown_02038560].itemId = 0;
+ if (gBagPockets[pocket].itemSlots[gCurSelectedItemSlotIndex].quantity == 0)
+ gBagPockets[pocket].itemSlots[gCurSelectedItemSlotIndex].itemId = 0;
if (count == 0)
return TRUE;
}
@@ -456,11 +304,11 @@ u8 GetPocketByItemId(u16 itemId)
return ItemId_GetPocket(itemId);
}
-void ClearItemSlots(struct ItemSlot *itemSlots, u8 b)
+void ClearItemSlots(struct ItemSlot *itemSlots, u8 capacity)
{
u16 i;
- for (i = 0; i < b; i++)
+ for (i = 0; i < capacity; i++)
{
itemSlots[i].itemId = 0;
itemSlots[i].quantity = 0;
@@ -471,7 +319,7 @@ static s32 FindFreePCItemSlot(void)
{
s8 i;
- for (i = 0; i < 50; i++)
+ for (i = 0; i < PC_ITEMS_COUNT; i++)
{
if (gSaveBlock1.pcItems[i].itemId == 0)
return i;
@@ -484,7 +332,7 @@ u8 CountUsedPCItemSlots(void)
u8 usedSlots = 0;
u8 i;
- for (i = 0; i < 50; i++)
+ for (i = 0; i < PC_ITEMS_COUNT; i++)
{
if (gSaveBlock1.pcItems[i].itemId != 0)
usedSlots++;
@@ -496,7 +344,7 @@ bool8 CheckPCHasItem(u16 itemId, u16 count)
{
u8 i;
- for (i = 0; i < 50; i++)
+ for (i = 0; i < PC_ITEMS_COUNT; i++)
{
if (gSaveBlock1.pcItems[i].itemId == itemId && gSaveBlock1.pcItems[i].quantity >= count)
return TRUE;
@@ -508,13 +356,13 @@ bool8 AddPCItem(u16 itemId, u16 count)
{
u8 i;
s8 freeSlot;
- struct ItemSlot newItems[50];
+ struct ItemSlot newItems[PC_ITEMS_COUNT];
//Copy PC items
memcpy(newItems, gSaveBlock1.pcItems, sizeof(newItems));
//Use any item slots that already contain this item
- for (i = 0; i < 50; i++)
+ for (i = 0; i < PC_ITEMS_COUNT; i++)
{
if (newItems[i].itemId == itemId)
{
@@ -564,9 +412,9 @@ static void CompactPCItems(void)
u16 i;
u16 j;
- for (i = 0; i < 49; i++)
+ for (i = 0; i < PC_ITEMS_COUNT - 1; i++)
{
- for (j = i + 1; j <= 49; j++)
+ for (j = i + 1; j <= PC_ITEMS_COUNT - 1; j++)
{
if (gSaveBlock1.pcItems[i].itemId == 0)
{
@@ -582,11 +430,11 @@ void SwapRegisteredBike(void)
{
switch (gSaveBlock1.registeredItem)
{
- case 0x103:
- gSaveBlock1.registeredItem = 0x110;
+ case ITEM_MACH_BIKE:
+ gSaveBlock1.registeredItem = ITEM_ACRO_BIKE;
break;
- case 0x110:
- gSaveBlock1.registeredItem = 0x103;
+ case ITEM_ACRO_BIKE:
+ gSaveBlock1.registeredItem = ITEM_MACH_BIKE;
break;
}
}
@@ -629,25 +477,25 @@ const u8 *ItemId_GetDescription(u16 itemId)
return gItems[SanitizeItemId(itemId)].description;
}
-bool32 ItemId_CopyDescription(u8 *a, u32 itemId, u32 c)
+bool32 ItemId_CopyDescription(u8 *dest, u32 itemId, u32 textLine)
{
- u32 r5 = c + 1;
+ u32 curTextLine = textLine + 1;
const u8 *description = gItems[SanitizeItemId(itemId)].description;
- u8 *str = a;
+ u8 *str = dest;
for (;;)
{
if (*description == 0xFF || *description == 0xFE)
{
- r5--;
- if (r5 == 0)
+ curTextLine--;
+ if (curTextLine == 0)
{
*str = 0xFF;
return TRUE;
}
if (*description == 0xFF)
return FALSE;
- str = a;
+ str = dest;
description++;
}
else
@@ -661,9 +509,9 @@ u8 ItemId_GetImportance(u16 itemId)
}
// unused
-u8 ItemId_GetUnknownValue(u16 itemId)
+u8 ItemId_GetExitsBagOnUse(u16 itemId)
{
- return gItems[SanitizeItemId(itemId)].unk19;
+ return gItems[SanitizeItemId(itemId)].exitsBagOnUse;
}
u8 ItemId_GetPocket(u16 itemId)
diff --git a/src/item_menu.c b/src/item_menu.c
index 32b14e021..71516c0a4 100644
--- a/src/item_menu.c
+++ b/src/item_menu.c
@@ -38,14 +38,13 @@
#include "ewram.h"
// External stuff
-extern void gpu_pal_allocator_reset__manage_upper_four(void);
+extern void FreeAndReserveObjectSpritePalettes(void);
extern void SetVerticalScrollIndicatorPriority();
extern void sub_809D104(u16 *, u16, u16, const u8 *, u16, u16, u16, u16);
extern void PauseVerticalScrollIndicator();
extern u8 sub_80F9284(void);
extern void sub_808B5B4();
extern u8 sub_80F92F4();
-extern void sub_80C9C7C(u8);
extern void pal_fill_black(void);
extern bool8 IsWeatherNotFadingIn(void);
extern u8 sub_80F931C();
@@ -54,7 +53,7 @@ extern void Shop_FadeReturnToMartMenu(void);
extern void sub_80546B8(u8);
extern void sub_804E990(u8);
extern void sub_802E424(u8);
-extern void sub_8064E2C(void);
+extern void ScriptUnfreezeEventObjects(void);
struct UnknownStruct2
{
@@ -139,8 +138,8 @@ EWRAM_DATA static u8 gUnknown_0203855A = 0;
EWRAM_DATA static s8 gUnknown_0203855B = 0;
EWRAM_DATA static s8 gUnknown_0203855C = 0;
EWRAM_DATA u16 gSpecialVar_ItemId = 0;
-EWRAM_DATA u8 gUnknown_02038560 = 0;
-EWRAM_DATA u8 gUnknown_02038561 = 0;
+EWRAM_DATA u8 gCurSelectedItemSlotIndex = 0;
+EWRAM_DATA u8 gPokemonItemUseType = 0;
EWRAM_DATA static u8 gUnknown_02038562 = 0;
EWRAM_DATA static u8 gUnknown_02038563 = 0;
EWRAM_DATA static u8 gUnknown_02038564 = 0;
@@ -268,7 +267,7 @@ static void OnItemSelect_PC(u8);
static void OnItemSelect_Battle(u8);
static void OnBagClose_Battle(u8);
-static const struct {TaskFunc onItemSelect; TaskFunc onBagClose;} gUnknown_083C16BC[] =
+static const struct {TaskFunc onItemSelect; TaskFunc onBagClose;} sItemSelectFuncs[] =
{
[RETURN_TO_FIELD_0] = {OnItemSelect_Field05, OnBagClose_Field0},
[RETURN_TO_BATTLE] = {OnItemSelect_Battle, OnBagClose_Battle},
@@ -392,7 +391,7 @@ static bool8 SetupBagMultistep(void)
gMain.state++;
break;
case 2:
- gpu_pal_allocator_reset__manage_upper_four();
+ FreeAndReserveObjectSpritePalettes();
gMain.state++;
break;
case 3:
@@ -478,7 +477,7 @@ static bool8 SetupBagMultistep(void)
REG_IE |= INTR_FLAG_VBLANK;
REG_IME = savedIme;
REG_DISPSTAT |= DISPSTAT_VBLANK_INTR;
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
gPaletteFade.bufferTransferDisabled = FALSE;
gMain.state++;
break;
@@ -1115,9 +1114,9 @@ static void sub_80A41E0(u8 *a, u16 b, const u8 *c, u16 d, u8 e)
a[1] = 0x13;
a[2] = 0x18;
a += 3;
- a = sub_8072C74(a, c, 0x78 - (e + 1) * 6, 0);
+ a = AlignStringInMenuWindow(a, c, 0x78 - (e + 1) * 6, 0);
*a++ = CHAR_MULT_SIGN;
- sub_8072C14(a, d, 0x78, 1);
+ AlignInt1InMenuWindow(a, d, 0x78, 1);
}
static u8 *sub_80A425C(u8 taskId, u8 *text, u8 c)
@@ -1145,7 +1144,7 @@ static bool8 sub_80A42B0(u8 itemPos, int b)
if (sReturnLocation == RETURN_TO_FIELD_5)
return TRUE;
r5 = itemPos * 2 + 2;
- sub_8072C74(gStringVar1, gOtherText_CloseBag, 0x78, 0);
+ AlignStringInMenuWindow(gStringVar1, gOtherText_CloseBag, 0x78, 0);
Menu_PrintText(gStringVar1, 14, r5);
ptr = gBGTilemapBuffers[2] + 14 + r5 * 32;
ptr[0] = 0x4F;
@@ -1179,9 +1178,9 @@ static void sub_80A4380(u16 a, int b, int c, int d)
r5 = i * 2 + 2;
text = gStringVar1;
text = sub_80A425C(a, text, i);
- text = sub_8072C74(text, ItemId_GetName(gCurrentBagPocketItemSlots[r4].itemId), 0x66, 0);
+ text = AlignStringInMenuWindow(text, ItemId_GetName(gCurrentBagPocketItemSlots[r4].itemId), 0x66, 0);
*text++ = CHAR_MULT_SIGN;
- sub_8072C14(text, gCurrentBagPocketItemSlots[r4].quantity, 0x78, 1);
+ AlignInt1InMenuWindow(text, gCurrentBagPocketItemSlots[r4].quantity, 0x78, 1);
Menu_PrintText(gStringVar1, 14, r5);
}
}
@@ -1192,30 +1191,30 @@ static void sub_80A444C(u16 a, int b, int c, int d)
for (i = b; i <= c; i++)
{
- u8 r4;
+ u8 slot;
u8 r5;
u8 *text;
if (sub_80A42B0(i, d) == TRUE)
break;
- r4 = gBagPocketScrollStates[sCurrentBagPocket].scrollTop + i;
+ slot = gBagPocketScrollStates[sCurrentBagPocket].scrollTop + i;
r5 = i * 2 + 2;
text = gStringVar1;
text = sub_80A425C(a, text, i);
#if ENGLISH
- sub_8072C74(text, ItemId_GetName(gCurrentBagPocketItemSlots[r4].itemId), 0x60, 0);
+ AlignStringInMenuWindow(text, ItemId_GetName(gCurrentBagPocketItemSlots[slot].itemId), 0x60, 0);
#else
- sub_8072C74(text, ItemId_GetName(gCurrentBagPocketItemSlots[r4].itemId), 0x63, 0);
+ AlignStringInMenuWindow(text, ItemId_GetName(gCurrentBagPocketItemSlots[slot].itemId), 0x63, 0);
#endif
Menu_PrintText(gStringVar1, 14, r5);
- if (gUnknown_02038558 != 0)
+ if (gUnknown_02038558)
{
- if (gCurrentBagPocketItemSlots[r4].itemId == gSaveBlock1.registeredItem)
+ if (gCurrentBagPocketItemSlots[slot].itemId == gSaveBlock1.registeredItem)
DrawSelectIcon(i);
}
else
{
- if (gCurrentBagPocketItemSlots[r4].itemId == gSaveBlock1.registeredItem)
+ if (gCurrentBagPocketItemSlots[slot].itemId == gSaveBlock1.registeredItem)
MoveSelectIcon(i);
else
EraseSelectIcon(i);
@@ -1272,13 +1271,13 @@ static void sub_80A4548(u16 a, int b, int c, int d)
text[2] = 0x18;
text += 3;
moveName = gMoveNames[ItemIdToBattleMoveId(gCurrentBagPocketItemSlots[r4].itemId)];
- sub_8072C74(text, moveName, 0x78, 0);
+ AlignStringInMenuWindow(text, moveName, 0x78, 0);
}
Menu_PrintText(gStringVar1, 14, sp10);
}
}
#else
-__attribute__((naked))
+NAKED
static void sub_80A4548(u16 a, int b, int c, int d)
{
asm(".syntax unified\n\
@@ -1450,7 +1449,7 @@ _080A4634:\n\
adds r0, r6, 0\n\
movs r2, 0x78\n\
movs r3, 0\n\
- bl sub_8072C74\n\
+ bl AlignStringInMenuWindow\n\
_080A46AE:\n\
ldr r0, _080A46F8 @ =gStringVar1\n\
movs r1, 0xE\n\
@@ -1838,7 +1837,7 @@ static bool8 sub_80A4F74(u8 a)
static void sub_80A50C8(u8 taskId)
{
- s16 *r5 = gTasks[taskId].data;
+ s16 *taskData = gTasks[taskId].data;
if (!gPaletteFade.active)
{
@@ -1852,7 +1851,7 @@ static void sub_80A50C8(u8 taskId)
&& !(sCurrentBagPocket == BAG_POCKET_BERRIES || sCurrentBagPocket == BAG_POCKET_TMs_HMs)
&& (sReturnLocation == RETURN_TO_FIELD_0 || sReturnLocation == RETURN_TO_BATTLE))
{
- if (r5[10] == 0)
+ if (taskData[10] == 0)
{
if (gBagPocketScrollStates[sCurrentBagPocket].scrollTop + gBagPocketScrollStates[sCurrentBagPocket].cursorPos != gBagPocketScrollStates[sCurrentBagPocket].numSlots)
{
@@ -1881,10 +1880,10 @@ static void sub_80A50C8(u8 taskId)
{
if (gBagPocketScrollStates[sCurrentBagPocket].scrollTop + gBagPocketScrollStates[sCurrentBagPocket].cursorPos == gBagPocketScrollStates[sCurrentBagPocket].numSlots)
{
- if (r5[10] == 0)
+ if (taskData[10] == 0)
{
gSpecialVar_ItemId = 0;
- gUnknown_083C16BC[sReturnLocation].onBagClose(taskId);
+ sItemSelectFuncs[sReturnLocation].onBagClose(taskId);
}
else
{
@@ -1894,12 +1893,12 @@ static void sub_80A50C8(u8 taskId)
}
else
{
- if (r5[10] == 0)
+ if (taskData[10] == 0)
{
PlaySE(SE_SELECT);
- gUnknown_02038560 = gBagPocketScrollStates[sCurrentBagPocket].scrollTop + gBagPocketScrollStates[sCurrentBagPocket].cursorPos;
- gSpecialVar_ItemId = gCurrentBagPocketItemSlots[gUnknown_02038560].itemId;
- gUnknown_083C16BC[sReturnLocation].onItemSelect(taskId);
+ gCurSelectedItemSlotIndex = gBagPocketScrollStates[sCurrentBagPocket].scrollTop + gBagPocketScrollStates[sCurrentBagPocket].cursorPos;
+ gSpecialVar_ItemId = gCurrentBagPocketItemSlots[gCurSelectedItemSlotIndex].itemId;
+ sItemSelectFuncs[sReturnLocation].onItemSelect(taskId);
StopVerticalScrollIndicators(TOP_ARROW);
StopVerticalScrollIndicators(BOTTOM_ARROW);
StopVerticalScrollIndicators(LEFT_ARROW);
@@ -1917,12 +1916,12 @@ static void sub_80A50C8(u8 taskId)
if (gMain.newKeys & B_BUTTON)
{
- if (r5[10] == 0)
+ if (taskData[10] == 0)
{
if (sReturnLocation != RETURN_TO_FIELD_5)
{
gSpecialVar_ItemId = 0;
- gUnknown_083C16BC[sReturnLocation].onBagClose(taskId);
+ sItemSelectFuncs[sReturnLocation].onBagClose(taskId);
}
}
else
@@ -1982,7 +1981,7 @@ static bool8 sub_80A5350(u8 taskId)
{
s16 *taskData = gTasks[taskId].data;
- if (SellMenu_QuantityRoller(taskId, gCurrentBagPocketItemSlots[gUnknown_02038560].quantity) == TRUE)
+ if (SellMenu_QuantityRoller(taskId, gCurrentBagPocketItemSlots[gCurSelectedItemSlotIndex].quantity) == TRUE)
{
// if (sCurrentBagPocket == BAG_POCKET_BERRIES) Can't get it to match this way
if (sCurrentBagPocket + 1 == BAG_POCKET_BERRIES + 1)
@@ -2102,7 +2101,7 @@ static void sub_80A5414(u8 taskId)
}
}
#else
-__attribute__((naked))
+NAKED
static void sub_80A5414(u8 taskId)
{
asm(".syntax unified\n\
@@ -2337,7 +2336,7 @@ _080A55FA:\n\
}
#endif
-__attribute__((naked))
+NAKED
static void sub_80A5600(u8 taskId)
{
asm(".syntax unified\n\
@@ -2616,8 +2615,8 @@ static void sub_80A5888(u8 taskId)
static void OnBagClose_Field0(u8 taskId)
{
- gTasks[taskId].data[8] = (u32)sub_805469C >> 16;
- gTasks[taskId].data[9] = (u32)sub_805469C;
+ gTasks[taskId].data[8] = (u32)c2_exit_to_overworld_1_sub_8080DEC >> 16;
+ gTasks[taskId].data[9] = (u32)c2_exit_to_overworld_1_sub_8080DEC;
gLastFieldPokeMenuOpened = 0;
sub_80A5AE4(taskId);
}
@@ -2647,7 +2646,7 @@ static void OnItemSelect_Field05(u8 taskId)
static void sub_80A5AAC(u8 taskId)
{
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gTasks[taskId].func = HandleItemMenuPaletteFade;
}
@@ -2666,7 +2665,7 @@ void HandleItemMenuPaletteFade(u8 taskId)
MainCallback cb = (MainCallback)((u16)taskData[8] << 16 | (u16)taskData[9]);
SetMainCallback2(cb);
- gpu_pal_allocator_reset__manage_upper_four();
+ FreeAndReserveObjectSpritePalettes();
DestroyTask(taskId);
}
}
@@ -2701,7 +2700,7 @@ static void HandlePopupMenuAction_UseOnField(u8 taskId)
if (sCurrentBagPocket != BAG_POCKET_BERRIES)
ItemId_GetFieldFunc(gSpecialVar_ItemId)(taskId);
else
- sub_80C9C7C(taskId);
+ ItemUseOutOfBattle_Berry(taskId);
}
}
}
@@ -2733,7 +2732,7 @@ void CleanUpOverworldMessage(u8 taskId)
{
Menu_EraseWindowRect(0, 13, 29, 19);
DestroyTask(taskId);
- sub_8064E2C();
+ ScriptUnfreezeEventObjects();
ScriptContext2_Disable();
}
@@ -2925,8 +2924,8 @@ static void HandlePopupMenuAction_Give(u8 taskId)
gTasks[taskId].data[8] = (u32)sub_808B020 >> 16;
gTasks[taskId].data[9] = (u32)sub_808B020;
gTasks[taskId].func = HandleItemMenuPaletteFade;
- gUnknown_02038561 = 1;
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ gPokemonItemUseType = ITEM_USE_GIVE_ITEM;
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
}
}
else
@@ -3346,17 +3345,17 @@ static void OnItemSelect_PC(u8 taskId)
}
}
-bool32 sub_80A6D1C(void)
+bool32 UseRegisteredKeyItem(void)
{
HideMapNamePopup();
- if (gSaveBlock1.registeredItem != 0)
+ if (gSaveBlock1.registeredItem != ITEM_NONE)
{
if (CheckBagHasItem(gSaveBlock1.registeredItem, 1) == TRUE)
{
u8 taskId;
ScriptContext2_Enable();
- FreezeMapObjects();
+ FreezeEventObjects();
sub_80594C0();
sub_80597F4();
gSpecialVar_ItemId = gSaveBlock1.registeredItem;
@@ -3477,7 +3476,7 @@ void sub_80A7094(u8 taskId)
gTasks[taskId].data[8] = (u32)sub_802E424 >> 16;
gTasks[taskId].data[9] = (u32)sub_802E424;
gTasks[taskId].func = HandleItemMenuPaletteFade;
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
}
static void OnBagClose_Battle(u8 taskId)
@@ -3578,7 +3577,7 @@ static void sub_80A7230(u8 taskId)
taskData[8] = (u32)sub_802E424 >> 16;
taskData[9] = (u32)sub_802E424;
gTasks[taskId].func = HandleItemMenuPaletteFade;
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
return;
}
taskData[15]++;
diff --git a/src/item_use.c b/src/item_use.c
index a0fbb13b2..4e76ea434 100644
--- a/src/item_use.c
+++ b/src/item_use.c
@@ -17,7 +17,7 @@
#include "constants/items.h"
#include "mail.h"
#include "main.h"
-#include "map_obj_lock.h"
+#include "event_obj_lock.h"
#include "menu.h"
#include "menu_helpers.h"
#include "metatile_behavior.h"
@@ -34,28 +34,35 @@
#include "string_util.h"
#include "strings.h"
#include "task.h"
+#include "constants/species.h"
#include "constants/vars.h"
extern void (*gFieldItemUseCallback)(u8);
extern void (*gFieldCallback)(void);
-extern void (*gUnknown_0300485C)(void);
extern void (*gPokemonItemUseCallback)(u8, u16, TaskFunc);
-extern u8 gUnknown_02038561;
+extern u8 gPokemonItemUseType;
extern u8 gLastFieldPokeMenuOpened;
extern u8 gBankInMenu;
-extern u8 gUnknown_081A1654[];
-extern u8 gUnknown_081A168F[];
+extern u8 S_PlantBerryTreeFromBag[];
+extern u8 S_WaterBerryTreeFromBag[];
-extern u16 gBattlePartyID[];
+extern u16 gBattlerPartyIndexes[];
extern u16 gBattleTypeFlags;
+static void ItemUseOnFieldCB_Berry(u8);
+static void ItemUseOnFieldCB_WailmerPail(u8);
+static void StartTeachMonTMHMMove(u8);
+static void DisplayTeachMonTMHMYesNoChoice(u8);
+static void BootTMHM(u8);
+static void WaitButtonPressAndDisplayTMHMInfo(u8);
+
static const u8 gSSTidalBetaString[] = _("この チケットで ふねに のりほうだい\nはやく のってみたいな");
static const u8 gSSTidalBetaString2[] = _("この チケットで ふねに のりほうだい\nはやく のってみたいな");
-static const u8 *const gUnknown_083D61DC[2] =
+static const u8 *const sSSTidalBetaStrings[] =
{
gSSTidalBetaString,
gSSTidalBetaString2,
@@ -70,9 +77,9 @@ static const MainCallback gExitToOverworldFuncList[] =
static const u8 gItemFinderDirections[] = { DIR_NORTH, DIR_EAST, DIR_SOUTH, DIR_WEST };
-static const struct YesNoFuncTable gUnknown_083D61F4 =
+static const struct YesNoFuncTable sTeachMonTMHMYesNoActions =
{
- .yesFunc = sub_80C9FC0,
+ .yesFunc = StartTeachMonTMHMMove,
.noFunc = CleanUpItemMenuMessage,
};
@@ -80,7 +87,7 @@ void ExecuteSwitchToOverworldFromItemUse(u8 taskId)
{
u8 taskData;
- if (gSpecialVar_ItemId == 0xAF)
+ if (gSpecialVar_ItemId == ITEM_ENIGMA_BERRY)
taskData = gTasks[taskId].data[15] - 1;
else
taskData = ItemId_GetType(gSpecialVar_ItemId) - 1;
@@ -93,7 +100,7 @@ void ExecuteSwitchToOverworldFromItemUse(u8 taskId)
void ItemMenu_ConfirmNormalFade(u8 var)
{
ExecuteSwitchToOverworldFromItemUse(var);
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
}
void ItemMenu_ConfirmComplexFade(u8 var)
@@ -115,7 +122,7 @@ void SetUpItemUseOnFieldCallback(u8 taskId)
}
}
-void HandleDeniedItemUseMessage(u8 var1, u8 playerMenuStatus, const u8 *text)
+static void HandleDeniedItemUseMessage(u8 taskId, u8 playerMenuStatus, const u8 *text)
{
StringExpandPlaceholders(gStringVar4, text);
@@ -123,22 +130,22 @@ void HandleDeniedItemUseMessage(u8 var1, u8 playerMenuStatus, const u8 *text)
{
case 0: // Item Menu
Menu_EraseWindowRect(0, 13, 13, 20);
- DisplayItemMessageOnField(var1, gStringVar4, CleanUpItemMenuMessage, 1);
+ DisplayItemMessageOnField(taskId, gStringVar4, CleanUpItemMenuMessage, 1);
break;
default: // Field
- DisplayItemMessageOnField(var1, gStringVar4, CleanUpOverworldMessage, 0);
+ DisplayItemMessageOnField(taskId, gStringVar4, CleanUpOverworldMessage, 0);
break;
}
}
-void DisplayDadsAdviceCannotUseItemMessage(u8 var1, u8 playerMenuStatus)
+void DisplayDadsAdviceCannotUseItemMessage(u8 taskId, u8 playerMenuStatus)
{
- HandleDeniedItemUseMessage(var1, playerMenuStatus, gOtherText_DadsAdvice);
+ HandleDeniedItemUseMessage(taskId, playerMenuStatus, gOtherText_DadsAdvice);
}
-void DisplayCantGetOffBikeItemMessage(u8 var1, u8 playerMenuStatus)
+void DisplayCantGetOffBikeItemMessage(u8 taskId, u8 playerMenuStatus)
{
- HandleDeniedItemUseMessage(var1, playerMenuStatus, gOtherText_CantGetOffBike);
+ HandleDeniedItemUseMessage(taskId, playerMenuStatus, gOtherText_CantGetOffBike);
}
u8 CheckIfItemIsTMHMOrEvolutionStone(u16 itemId)
@@ -165,7 +172,7 @@ void ItemMenu_ReadMail(u8 taskId)
void ItemUseOutOfBattle_Mail(u8 taskId)
{
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gTasks[taskId].func = ItemMenu_ReadMail;
}
@@ -177,7 +184,7 @@ void ItemUseOutOfBattle_Bike(u8 taskId)
PlayerGetDestCoords(&x, &y);
tileBehavior = MapGridGetMetatileBehaviorAt(x, y);
- if (FlagGet(FLAG_SYS_CYCLING_ROAD) == TRUE // on cycling road?
+ if (FlagGet(FLAG_SYS_CYCLING_ROAD) == TRUE
|| MetatileBehavior_IsVerticalRail(tileBehavior) == TRUE
|| MetatileBehavior_IsHorizontalRail(tileBehavior) == TRUE
|| MetatileBehavior_IsIsolatedVerticalRail(tileBehavior) == TRUE
@@ -200,11 +207,11 @@ void ItemUseOutOfBattle_Bike(u8 taskId)
void ItemUseOnFieldCB_Bike(u8 taskId)
{
if (ItemId_GetSecondaryId(gSpecialVar_ItemId) == 0)
- GetOnOffBike(2);
+ GetOnOffBike(PLAYER_AVATAR_FLAG_MACH_BIKE);
if (ItemId_GetSecondaryId(gSpecialVar_ItemId) == 1)
- GetOnOffBike(4);
+ GetOnOffBike(PLAYER_AVATAR_FLAG_ACRO_BIKE);
- sub_8064E2C();
+ ScriptUnfreezeEventObjects();
ScriptContext2_Disable();
DestroyTask(taskId);
}
@@ -220,7 +227,7 @@ bool32 CanFish(void)
if (MetatileBehavior_IsWaterfall(tileBehavior))
return FALSE;
- if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_4))
+ if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_UNDERWATER))
return FALSE;
if (!TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING))
@@ -256,11 +263,11 @@ void ItemUseOnFieldCB_Rod(u8 taskId)
DestroyTask(taskId);
}
-void ItemUseOutOfBattle_Itemfinder(u8 var)
+void ItemUseOutOfBattle_Itemfinder(u8 taskId)
{
IncrementGameStat(GAME_STAT_USED_ITEMFINDER);
gFieldItemUseCallback = (void *)ItemUseOnFieldCB_Itemfinder;
- SetUpItemUseOnFieldCallback(var);
+ SetUpItemUseOnFieldCallback(taskId);
}
void ItemUseOnFieldCB_Itemfinder(u8 taskId)
@@ -290,7 +297,7 @@ void RunItemfinderResults(u8 taskId)
}
else // player is above hidden item.
{
- playerDir = player_get_direction_lower_nybble();
+ playerDir = GetPlayerFacingDirection();
// rotate player clockwise depending on current direction.
for (i = 0; i < 4; i++)
@@ -312,7 +319,7 @@ void RunItemfinderResults(u8 taskId)
void ExitItemfinder(u8 taskId)
{
Menu_EraseWindowRect(0, 14, 29, 19);
- sub_8064E2C();
+ ScriptUnfreezeEventObjects();
ScriptContext2_Disable();
DestroyTask(taskId);
}
@@ -384,23 +391,23 @@ bool8 sub_80C9688(struct MapConnection *connection, int x, int y)
case 2:
localOffset = connection->offset + 7;
localX = x - localOffset;
- localLength = mapHeader->mapData->height - 7;
+ localLength = mapHeader->mapLayout->height - 7;
localY = localLength + y; // additions are reversed for some reason
break;
case 1:
localOffset = connection->offset + 7;
localX = x - localOffset;
- localLength = gMapHeader.mapData->height + 7;
+ localLength = gMapHeader.mapLayout->height + 7;
localY = y - localLength;
break;
case 3:
- localLength = mapHeader->mapData->width - 7;
+ localLength = mapHeader->mapLayout->width - 7;
localX = localLength + x; // additions are reversed for some reason
localOffset = connection->offset + 7;
localY = y - localOffset;
break;
case 4:
- localLength = gMapHeader.mapData->width + 7;
+ localLength = gMapHeader.mapLayout->width + 7;
localX = x - localLength;
localOffset = connection->offset + 7;
localY = y - localOffset;
@@ -417,8 +424,8 @@ void sub_80C9720(u8 taskId)
{
s16 x, y;
s16 curX, curY;
- s16 width = gMapHeader.mapData->width + 7;
- s16 height = gMapHeader.mapData->height + 7;
+ s16 width = gMapHeader.mapLayout->width + 7;
+ s16 height = gMapHeader.mapLayout->height + 7;
PlayerGetDestCoords(&x, &y);
@@ -439,7 +446,7 @@ void sub_80C9720(u8 taskId)
}
}
#else
-__attribute__((naked))
+NAKED
void sub_80C9720(u8 taskId)
{
asm(".syntax unified\n\
@@ -688,15 +695,15 @@ u8 GetPlayerDirectionTowardsHiddenItem(s16 itemX, s16 itemY)
void SetPlayerDirectionTowardsItem(u8 direction)
{
- FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0)]);
- FieldObjectClearAnim(&gMapObjects[GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0)]);
- UnfreezeMapObject(&gMapObjects[GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0)]);
+ EventObjectClearHeldMovementIfFinished(&gEventObjects[GetEventObjectIdByLocalIdAndMap(0xFF, 0, 0)]);
+ EventObjectClearHeldMovement(&gEventObjects[GetEventObjectIdByLocalIdAndMap(0xFF, 0, 0)]);
+ UnfreezeEventObject(&gEventObjects[GetEventObjectIdByLocalIdAndMap(0xFF, 0, 0)]);
PlayerTurnInPlace(direction);
}
void DisplayItemRespondingMessageAndExitItemfinder(u8 taskId)
{
- if (FieldObjectCheckIfSpecialAnimFinishedOrInactive(&gMapObjects[GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0)]) == TRUE)
+ if (EventObjectCheckHeldMovementStatus(&gEventObjects[GetEventObjectIdByLocalIdAndMap(0xFF, 0, 0)]) == TRUE)
DisplayItemMessageOnField(taskId, gOtherText_ItemfinderResponding, ExitItemfinder, 0);
}
@@ -704,7 +711,7 @@ void RotatePlayerAndExitItemfinder(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- if (FieldObjectCheckIfSpecialAnimFinishedOrInactive(&gMapObjects[GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0)]) == TRUE
+ if (EventObjectCheckHeldMovementStatus(&gEventObjects[GetEventObjectIdByLocalIdAndMap(0xFF, 0, 0)]) == TRUE
|| data[2] == FALSE)
{
SetPlayerDirectionTowardsItem(gItemFinderDirections[data[5]]);
@@ -743,7 +750,7 @@ void ItemUseOutOfBattle_CoinCase(u8 taskId)
if (!gTasks[taskId].data[2])
{
- Menu_EraseWindowRect(0, 0xD, 0xD, 0x14);
+ Menu_EraseWindowRect(0, 13, 13, 20);
DisplayItemMessageOnField(taskId, gStringVar4, CleanUpItemMenuMessage, 1);
}
else
@@ -752,16 +759,16 @@ void ItemUseOutOfBattle_CoinCase(u8 taskId)
}
}
-void sub_80C9BB8(u8 var)
+static void SSTicketWaitForAButtonPress(u8 taskId)
{
if (gMain.newKeys & A_BUTTON)
- CleanUpItemMenuMessage(var);
+ CleanUpItemMenuMessage(taskId);
}
-void sub_80C9BD8(u8 var)
+static void SSTicketWaitForAButtonPress2(u8 taskId)
{
if (gMain.newKeys & A_BUTTON)
- CleanUpOverworldMessage(var);
+ CleanUpOverworldMessage(taskId);
}
// unused
@@ -769,25 +776,25 @@ void ItemUseOutOfBattle_SSTicket(u8 taskId)
{
if (gTasks[taskId].data[2] == 0)
{
- Menu_EraseWindowRect(0, 0xD, 0xD, 0x14);
- DisplayItemMessageOnField(taskId, gUnknown_083D61DC[ItemId_GetSecondaryId(gSpecialVar_ItemId)], sub_80C9BB8, 1);
+ Menu_EraseWindowRect(0, 13, 13, 20);
+ DisplayItemMessageOnField(taskId, sSSTidalBetaStrings[ItemId_GetSecondaryId(gSpecialVar_ItemId)], SSTicketWaitForAButtonPress, 1);
}
else
{
- DisplayItemMessageOnField(taskId, gUnknown_083D61DC[ItemId_GetSecondaryId(gSpecialVar_ItemId)], sub_80C9BD8, 0);
+ DisplayItemMessageOnField(taskId, sSSTidalBetaStrings[ItemId_GetSecondaryId(gSpecialVar_ItemId)], SSTicketWaitForAButtonPress2, 0);
}
}
-void sub_80C9C7C(u8 taskId)
+void ItemUseOutOfBattle_Berry(u8 taskId)
{
if (IsPlayerFacingUnplantedSoil() == TRUE)
{
- gFieldItemUseCallback = sub_80C9D00;
+ gFieldItemUseCallback = ItemUseOnFieldCB_Berry;
gFieldCallback = ExecuteItemUseFromBlackPalette;
gTasks[taskId].data[8] = (u32)c2_exit_to_overworld_2_switch >> 16;
gTasks[taskId].data[9] = (u32)c2_exit_to_overworld_2_switch;
gTasks[taskId].func = HandleItemMenuPaletteFade;
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB(0, 0, 0));
}
else
{
@@ -795,11 +802,11 @@ void sub_80C9C7C(u8 taskId)
}
}
-void sub_80C9D00(u8 taskId)
+static void ItemUseOnFieldCB_Berry(u8 taskId)
{
RemoveBagItem(gSpecialVar_ItemId, 1);
ScriptContext2_Enable();
- ScriptContext1_SetupScript(gUnknown_081A1654);
+ ScriptContext1_SetupScript(S_PlantBerryTreeFromBag);
DestroyTask(taskId);
}
@@ -807,7 +814,7 @@ void ItemUseOutOfBattle_WailmerPail(u8 taskId)
{
if (TryToWaterBerryTree() == TRUE)
{
- gFieldItemUseCallback = sub_80C9D74;
+ gFieldItemUseCallback = ItemUseOnFieldCB_WailmerPail;
SetUpItemUseOnFieldCallback(taskId);
}
else
@@ -816,23 +823,23 @@ void ItemUseOutOfBattle_WailmerPail(u8 taskId)
}
}
-void sub_80C9D74(u8 taskId)
+static void ItemUseOnFieldCB_WailmerPail(u8 taskId)
{
ScriptContext2_Enable();
- ScriptContext1_SetupScript(gUnknown_081A168F);
+ ScriptContext1_SetupScript(S_WaterBerryTreeFromBag);
DestroyTask(taskId);
}
-void sub_80C9D98(u8 taskId)
+static void SetPokemonItemUseAndFadeOut(u8 taskId)
{
- gUnknown_02038561 = 0;
+ gPokemonItemUseType = ITEM_USE_SINGLE_MON;
ItemMenu_ConfirmNormalFade(taskId);
}
void ItemUseOutOfBattle_Medicine(u8 taskId)
{
gPokemonItemUseCallback = UseMedicine;
- sub_80C9D98(taskId);
+ SetPokemonItemUseAndFadeOut(taskId);
}
void ItemUseOutOfBattle_SacredAsh(u8 taskId)
@@ -841,74 +848,74 @@ void ItemUseOutOfBattle_SacredAsh(u8 taskId)
gLastFieldPokeMenuOpened = 0;
- for (i = 0; i < 6; i++)
+ for (i = 0; i < PARTY_SIZE; i++)
{
- if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) != 0 && GetMonData(&gPlayerParty[i], MON_DATA_HP) == 0)
+ if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) != SPECIES_NONE && GetMonData(&gPlayerParty[i], MON_DATA_HP) == 0)
{
gLastFieldPokeMenuOpened = i;
break;
}
}
- gPokemonItemUseCallback = sub_8070048;
- gUnknown_02038561 = 4;
+ gPokemonItemUseCallback = DoSacredAshItemEffect;
+ gPokemonItemUseType = ITEM_USE_ALL_MONS;
ItemMenu_ConfirmNormalFade(taskId);
}
void ItemUseOutOfBattle_PPRecovery(u8 taskId)
{
gPokemonItemUseCallback = DoPPRecoveryItemEffect;
- sub_80C9D98(taskId);
+ SetPokemonItemUseAndFadeOut(taskId);
}
void ItemUseOutOfBattle_PPUp(u8 taskId)
{
gPokemonItemUseCallback = DoPPUpItemEffect;
- sub_80C9D98(taskId);
+ SetPokemonItemUseAndFadeOut(taskId);
}
void ItemUseOutOfBattle_RareCandy(u8 taskId)
{
gPokemonItemUseCallback = DoRareCandyItemEffect;
- sub_80C9D98(taskId);
+ SetPokemonItemUseAndFadeOut(taskId);
}
void ItemUseOutOfBattle_TMHM(u8 taskId)
{
- Menu_EraseWindowRect(0, 0xD, 0xD, 0x14);
+ Menu_EraseWindowRect(0, 13, 13, 20);
if (gSpecialVar_ItemId >= ITEM_HM01_CUT)
- DisplayItemMessageOnField(taskId, gOtherText_BootedHM, sub_80C9EE4, 1); // HM
+ DisplayItemMessageOnField(taskId, gOtherText_BootedHM, BootTMHM, 1); // HM
else
- DisplayItemMessageOnField(taskId, gOtherText_BootedTM, sub_80C9EE4, 1); // TM
+ DisplayItemMessageOnField(taskId, gOtherText_BootedTM, BootTMHM, 1); // TM
}
-void sub_80C9EE4(u8 taskId)
+static void BootTMHM(u8 taskId)
{
PlaySE(SE_PC_LOGON);
- gTasks[taskId].func = sub_80C9F10;
+ gTasks[taskId].func = WaitButtonPressAndDisplayTMHMInfo;
}
-void sub_80C9F10(u8 taskId)
+static void WaitButtonPressAndDisplayTMHMInfo(u8 taskId)
{
if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON)
{
StringCopy(gStringVar1, gMoveNames[ItemIdToBattleMoveId(gSpecialVar_ItemId)]);
StringExpandPlaceholders(gStringVar4, gOtherText_ContainsMove);
- DisplayItemMessageOnField(taskId, gStringVar4, sub_80C9F80, 1);
+ DisplayItemMessageOnField(taskId, gStringVar4, DisplayTeachMonTMHMYesNoChoice, 1);
}
}
-void sub_80C9F80(u8 var)
+static void DisplayTeachMonTMHMYesNoChoice(u8 taskId)
{
DisplayYesNoMenu(7, 7, 1);
sub_80A3FA0(gBGTilemapBuffers[1], 8, 8, 5, 4, 1);
- DoYesNoFuncWithChoice(var, &gUnknown_083D61F4);
+ DoYesNoFuncWithChoice(taskId, &sTeachMonTMHMYesNoActions);
}
-void sub_80C9FC0(u8 var)
+static void StartTeachMonTMHMMove(u8 taskId)
{
gPokemonItemUseCallback = TeachMonTMMove;
- sub_80C9D98(var);
+ SetPokemonItemUseAndFadeOut(taskId);
}
static void PrepareItemUseMessage(void)
@@ -919,27 +926,27 @@ static void PrepareItemUseMessage(void)
StringExpandPlaceholders(gStringVar4, gOtherText_UsedItem);
}
-void ItemUseOutOfBattle_Repel(u8 var)
+void ItemUseOutOfBattle_Repel(u8 taskId)
{
if (VarGet(VAR_REPEL_STEP_COUNT) == 0)
{
VarSet(VAR_REPEL_STEP_COUNT, ItemId_GetHoldEffectParam(gSpecialVar_ItemId));
PrepareItemUseMessage();
- DisplayItemMessageOnField(var, gStringVar4, CleanUpItemMenuMessage, 1);
+ DisplayItemMessageOnField(taskId, gStringVar4, CleanUpItemMenuMessage, 1);
}
else
{
- DisplayItemMessageOnField(var, gOtherText_RepelLingers, CleanUpItemMenuMessage, 1);
+ DisplayItemMessageOnField(taskId, gOtherText_RepelLingers, CleanUpItemMenuMessage, 1);
}
}
-void sub_80CA07C(void)
+static void sub_80CA07C(void)
{
sub_80A3E0C();
CopyItemName(gSpecialVar_ItemId, gStringVar2);
}
-void sub_80CA098(u8 taskId)
+static void PlayBlackWhiteFluteSound(u8 taskId)
{
if(++gTasks[taskId].data[15] > 7)
{
@@ -956,7 +963,7 @@ void ItemUseOutOfBattle_BlackWhiteFlute(u8 taskId)
FlagClear(FLAG_SYS_ENC_DOWN_ITEM);
sub_80CA07C();
StringExpandPlaceholders(gStringVar4, gOtherText_UsedFlute);
- gTasks[taskId].func = sub_80CA098;
+ gTasks[taskId].func = PlayBlackWhiteFluteSound;
gTasks[taskId].data[15] = 0;
}
else if (gSpecialVar_ItemId == ITEM_BLACK_FLUTE)
@@ -965,19 +972,19 @@ void ItemUseOutOfBattle_BlackWhiteFlute(u8 taskId)
FlagClear(FLAG_SYS_ENC_UP_ITEM);
sub_80CA07C();
StringExpandPlaceholders(gStringVar4, gOtherText_UsedRepel);
- gTasks[taskId].func = sub_80CA098;
+ gTasks[taskId].func = PlayBlackWhiteFluteSound;
gTasks[taskId].data[15] = 0;
}
}
void task08_080A1C44(u8 taskId)
{
- player_avatar_init_params_reset();
- sub_80878A8();
+ ResetInitialPlayerAvatarState();
+ StartEscapeRopeFieldEffect();
DestroyTask(taskId);
}
-void EscapeRopeCallback(u8 taskId)
+static void ItemUseOnFieldCB_EscapeRope(u8 taskId)
{
Overworld_ResetStateAfterDigEscRope();
PrepareItemUseMessage();
@@ -997,7 +1004,7 @@ void ItemUseOutOfBattle_EscapeRope(u8 taskId)
{
if (CanUseEscapeRopeOnCurrMap() == TRUE)
{
- gFieldItemUseCallback = EscapeRopeCallback;
+ gFieldItemUseCallback = ItemUseOnFieldCB_EscapeRope;
SetUpItemUseOnFieldCallback(taskId);
}
else
@@ -1006,30 +1013,30 @@ void ItemUseOutOfBattle_EscapeRope(u8 taskId)
}
}
-void ItemUseOutOfBattle_EvolutionStone(u8 var)
+void ItemUseOutOfBattle_EvolutionStone(u8 taskId)
{
gPokemonItemUseCallback = DoEvolutionStoneItemEffect;
- sub_80C9D98(var);
+ SetPokemonItemUseAndFadeOut(taskId);
}
-void ItemUseInBattle_PokeBall(u8 var)
+void ItemUseInBattle_PokeBall(u8 taskId)
{
if (PlayerPartyAndPokemonStorageFull() == FALSE) // have room for mon?
{
RemoveBagItem(gSpecialVar_ItemId, 1);
- sub_80A7094(var);
+ sub_80A7094(taskId);
}
else
{
- Menu_EraseWindowRect(0, 0xD, 0xD, 0x14);
- DisplayItemMessageOnField(var, gOtherText_BoxIsFull, CleanUpItemMenuMessage, 1);
+ Menu_EraseWindowRect(0, 13, 13, 20);
+ DisplayItemMessageOnField(taskId, gOtherText_BoxIsFull, CleanUpItemMenuMessage, 1);
}
}
-void sub_80CA294(u8 var)
+void sub_80CA294(u8 taskId)
{
if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON)
- sub_80A7094(var);
+ sub_80A7094(taskId);
}
void sub_80CA2BC(u8 taskId)
@@ -1044,9 +1051,9 @@ void sub_80CA2BC(u8 taskId)
void ItemUseInBattle_StatIncrease(u8 taskId)
{
- u16 partyId = gBattlePartyID[gBankInMenu];
+ u16 partyId = gBattlerPartyIndexes[gBankInMenu];
- Menu_EraseWindowRect(0, 0xD, 0xD, 0x14);
+ Menu_EraseWindowRect(0, 13, 13, 20);
if (ExecuteTableBasedItemEffect_(&gPlayerParty[partyId], gSpecialVar_ItemId, partyId, 0) != FALSE)
{
@@ -1064,7 +1071,7 @@ void sub_80CA394(u8 taskId)
if (!gPaletteFade.active)
{
sub_8094E4C();
- gpu_pal_allocator_reset__manage_upper_four();
+ FreeAndReserveObjectSpritePalettes();
DestroyTask(taskId);
}
}
@@ -1072,7 +1079,7 @@ void sub_80CA394(u8 taskId)
void sub_80CA3C0(u8 taskId)
{
gTasks[taskId].func = sub_80CA394;
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
}
void ItemUseInBattle_Medicine(u8 var)
@@ -1083,7 +1090,7 @@ void ItemUseInBattle_Medicine(u8 var)
void unref_sub_80CA410(u8 var)
{
- gPokemonItemUseCallback = sub_8070048;
+ gPokemonItemUseCallback = DoSacredAshItemEffect;
sub_80CA3C0(var);
}
@@ -1095,7 +1102,7 @@ void ItemUseInBattle_PPRecovery(u8 var)
void unref_sub_80CA448(u8 var)
{
- Menu_EraseWindowRect(0, 0xD, 0xD, 0x14);
+ Menu_EraseWindowRect(0, 13, 13, 20);
if (ExecuteTableBasedItemEffect__(0, gSpecialVar_ItemId, 0) == FALSE)
{
@@ -1112,9 +1119,9 @@ void unref_sub_80CA448(u8 var)
void ItemUseInBattle_Escape(u8 taskId)
{
- Menu_EraseWindowRect(0, 0xD, 0xD, 0x14);
+ Menu_EraseWindowRect(0, 13, 13, 20);
- if((gBattleTypeFlags & BATTLE_TYPE_TRAINER) == FALSE)
+ if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER) == FALSE)
{
PrepareItemUseMessage();
DisplayItemMessageOnField(taskId, gStringVar4, sub_80A7094, 1);
diff --git a/src/landmark.c b/src/landmark.c
index 476821ec6..0572da4ca 100644
--- a/src/landmark.c
+++ b/src/landmark.c
@@ -1,7 +1,7 @@
#include "global.h"
#include "landmark.h"
#include "event_data.h"
-#include "region_map_sections.h"
+#include "constants/region_map_sections.h"
struct Landmark
{
@@ -315,52 +315,52 @@ static const struct Landmark *const Landmarks_MtChimney_2[] =
static const struct LandmarkList gLandmarkLists[] =
{
- {MAPSEC_Route104, 0, Landmarks_Route104_0},
- {MAPSEC_Route104, 1, Landmarks_Route104_1},
- {MAPSEC_Route105, 0, Landmarks_Route105_0},
- {MAPSEC_Route106, 1, Landmarks_Route106_1},
- {MAPSEC_Route108, 0, Landmarks_Route108_0},
- {MAPSEC_Route109, 0, Landmarks_Route109_0},
- {MAPSEC_Route110, 0, Landmarks_Route110_0},
- {MAPSEC_Route110, 1, Landmarks_Route110_1},
- {MAPSEC_Route110, 2, Landmarks_Route110_2},
- {MAPSEC_Route111, 0, Landmarks_Route111_0},
- {MAPSEC_Route111, 1, Landmarks_Route111_1},
- {MAPSEC_Route111, 2, Landmarks_Route111_1},
- {MAPSEC_Route111, 3, Landmarks_Route111_3},
- {MAPSEC_Route111, 4, Landmarks_Route111_4},
- {MAPSEC_Route112, 0, Landmarks_Route112_0},
- {MAPSEC_Route112, 1, Landmarks_Route112_1},
- {MAPSEC_Route113, 1, Landmarks_Route113_1},
- {MAPSEC_Route114, 1, Landmarks_Route114_1},
- {MAPSEC_Route114, 2, Landmarks_Route114_2},
- {MAPSEC_Route114, 3, Landmarks_MeteorFalls},
- {MAPSEC_Route115, 0, Landmarks_MeteorFalls},
- {MAPSEC_Route115, 1, Landmarks_MeteorFalls},
- {MAPSEC_Route116, 1, Landmarks_Route116_1},
- {MAPSEC_Route116, 2, Landmarks_Route116_2},
- {MAPSEC_Route117, 2, Landmarks_Route117_2},
- {MAPSEC_Route119, 1, Landmarks_Route119_1},
- {MAPSEC_Route120, 0, Landmarks_Route120_0},
- {MAPSEC_Route120, 2, Landmarks_Route120_2},
- {MAPSEC_Route121, 2, Landmarks_Route121_2},
- {MAPSEC_Route122, 0, Landmarks_Route122_0},
- {MAPSEC_Route123, 0, Landmarks_Route123_0},
- {MAPSEC_Route122, 1, Landmarks_Route122_0},
- {MAPSEC_Route124, 7, Landmarks_Route124_7},
- {MAPSEC_Route125, 2, Landmarks_Route125_2},
- {MAPSEC_Route128, 1, Landmarks_Route128_1},
- {MAPSEC_Route131, 1, Landmarks_Route131_1},
- {MAPSEC_Route132, 0, Landmarks_OceanCurrent},
- {MAPSEC_Route132, 1, Landmarks_OceanCurrent},
- {MAPSEC_Route133, 0, Landmarks_OceanCurrent},
- {MAPSEC_Route133, 1, Landmarks_OceanCurrent},
- {MAPSEC_Route133, 2, Landmarks_OceanCurrent},
- {MAPSEC_Route134, 0, Landmarks_OceanCurrent},
- {MAPSEC_Route134, 1, Landmarks_OceanCurrent},
- {MAPSEC_Route134, 2, Landmarks_Route134_2},
- {MAPSEC_MtChimney, 2, Landmarks_MtChimney_2},
- {MAPSEC_Nothing, 0, NULL},
+ {MAPSEC_ROUTE_104, 0, Landmarks_Route104_0},
+ {MAPSEC_ROUTE_104, 1, Landmarks_Route104_1},
+ {MAPSEC_ROUTE_105, 0, Landmarks_Route105_0},
+ {MAPSEC_ROUTE_106, 1, Landmarks_Route106_1},
+ {MAPSEC_ROUTE_108, 0, Landmarks_Route108_0},
+ {MAPSEC_ROUTE_109, 0, Landmarks_Route109_0},
+ {MAPSEC_ROUTE_110, 0, Landmarks_Route110_0},
+ {MAPSEC_ROUTE_110, 1, Landmarks_Route110_1},
+ {MAPSEC_ROUTE_110, 2, Landmarks_Route110_2},
+ {MAPSEC_ROUTE_111, 0, Landmarks_Route111_0},
+ {MAPSEC_ROUTE_111, 1, Landmarks_Route111_1},
+ {MAPSEC_ROUTE_111, 2, Landmarks_Route111_1},
+ {MAPSEC_ROUTE_111, 3, Landmarks_Route111_3},
+ {MAPSEC_ROUTE_111, 4, Landmarks_Route111_4},
+ {MAPSEC_ROUTE_112, 0, Landmarks_Route112_0},
+ {MAPSEC_ROUTE_112, 1, Landmarks_Route112_1},
+ {MAPSEC_ROUTE_113, 1, Landmarks_Route113_1},
+ {MAPSEC_ROUTE_114, 1, Landmarks_Route114_1},
+ {MAPSEC_ROUTE_114, 2, Landmarks_Route114_2},
+ {MAPSEC_ROUTE_114, 3, Landmarks_MeteorFalls},
+ {MAPSEC_ROUTE_115, 0, Landmarks_MeteorFalls},
+ {MAPSEC_ROUTE_115, 1, Landmarks_MeteorFalls},
+ {MAPSEC_ROUTE_116, 1, Landmarks_Route116_1},
+ {MAPSEC_ROUTE_116, 2, Landmarks_Route116_2},
+ {MAPSEC_ROUTE_117, 2, Landmarks_Route117_2},
+ {MAPSEC_ROUTE_119, 1, Landmarks_Route119_1},
+ {MAPSEC_ROUTE_120, 0, Landmarks_Route120_0},
+ {MAPSEC_ROUTE_120, 2, Landmarks_Route120_2},
+ {MAPSEC_ROUTE_121, 2, Landmarks_Route121_2},
+ {MAPSEC_ROUTE_122, 0, Landmarks_Route122_0},
+ {MAPSEC_ROUTE_123, 0, Landmarks_Route123_0},
+ {MAPSEC_ROUTE_122, 1, Landmarks_Route122_0},
+ {MAPSEC_ROUTE_124, 7, Landmarks_Route124_7},
+ {MAPSEC_ROUTE_125, 2, Landmarks_Route125_2},
+ {MAPSEC_ROUTE_128, 1, Landmarks_Route128_1},
+ {MAPSEC_ROUTE_131, 1, Landmarks_Route131_1},
+ {MAPSEC_ROUTE_132, 0, Landmarks_OceanCurrent},
+ {MAPSEC_ROUTE_132, 1, Landmarks_OceanCurrent},
+ {MAPSEC_ROUTE_133, 0, Landmarks_OceanCurrent},
+ {MAPSEC_ROUTE_133, 1, Landmarks_OceanCurrent},
+ {MAPSEC_ROUTE_133, 2, Landmarks_OceanCurrent},
+ {MAPSEC_ROUTE_134, 0, Landmarks_OceanCurrent},
+ {MAPSEC_ROUTE_134, 1, Landmarks_OceanCurrent},
+ {MAPSEC_ROUTE_134, 2, Landmarks_Route134_2},
+ {MAPSEC_MT_CHIMNEY, 2, Landmarks_MtChimney_2},
+ {MAPSEC_NOTHING, 0, NULL},
};
static const struct Landmark *const *GetLandmarks(u8 mapSection, u8 id);
@@ -396,7 +396,7 @@ static const struct Landmark *const *GetLandmarks(u8 mapSection, u8 id)
{
u16 i = 0;
- for (; gLandmarkLists[i].mapSection != MAPSEC_Nothing; i++)
+ for (; gLandmarkLists[i].mapSection != MAPSEC_NOTHING; i++)
{
if (gLandmarkLists[i].mapSection > mapSection)
return NULL;
@@ -404,7 +404,7 @@ static const struct Landmark *const *GetLandmarks(u8 mapSection, u8 id)
break;
}
- if (gLandmarkLists[i].mapSection == MAPSEC_Nothing)
+ if (gLandmarkLists[i].mapSection == MAPSEC_NOTHING)
return NULL;
for (; gLandmarkLists[i].mapSection == mapSection; i++)
diff --git a/src/learn_move.c b/src/learn_move.c
deleted file mode 100644
index 356a31b00..000000000
--- a/src/learn_move.c
+++ /dev/null
@@ -1,1066 +0,0 @@
-#include "global.h"
-#include "contest.h"
-#include "data2.h"
-#include "field_fadetransition.h"
-#include "main.h"
-#include "menu.h"
-#include "menu_cursor.h"
-#include "learn_move.h"
-#include "palette.h"
-#include "pokemon.h"
-#include "pokemon_summary_screen.h"
-#include "overworld.h"
-#include "script.h"
-#include "constants/songs.h"
-#include "sound.h"
-#include "sprite.h"
-#include "string_util.h"
-#include "strings.h"
-#include "strings2.h"
-#include "task.h"
-#include "trig.h"
-#include "ewram.h"
-
-extern u16 gSpecialVar_0x8004;
-extern u16 gSpecialVar_0x8005;
-extern u8 gTileBuffer[];
-
-extern const struct WindowTemplate gWindowTemplate_81E6CE4;
-extern const struct WindowTemplate gWindowTemplate_81E7240;
-extern const u8 *const gContestEffectStrings[];
-extern const u8 *const gMoveDescriptions[];
-extern const u8 gTypeNames[][7];
-extern const u8 *const gUnknown_083CAF70[];
-
-#ifdef GERMAN
-extern const u8 deuOtherText_ForgotAndLearned[];
-#endif
-
-
-struct LearnMoveStruct
-{
- u8 state;
- u8 filler1;
- u8 unk2;
- u8 spriteIDs[20];
- u8 filler17[1];
- u8 unk18;
- u8 unk19;
- u8 numMenuChoices;
- u8 menuSelection;
- u8 unk1C;
- bool8 unk1D;
- u8 unk1E;
- u8 filler1F;
- /*0x020*/ u16 movesToLearn[20];
- u8 filler48[0x52-0x48];
- u8 moveNames[6][0x19];
- u8 fillerE8[0x2C3-0xE8];
- bool8 unk2C3;
- bool8 showContestInfo;
- /*0x2C5*/ u8 partyMon;
- u8 unk2C6;
-};
-
-static struct LearnMoveStruct *sLearnMoveStruct;
-
-const u16 gDexArrows_Pal[] = INCBIN_U16("graphics/pokedex/arrows.gbapal");
-
-const u8 gDexArrows_Gfx[] = INCBIN_U8("graphics/pokedex/arrows.4bpp");
-
-const u8 gUnknown_08402CF8[][4] =
-{
- { 0, 0, 9, 13},
- {10, 0, 29, 7},
- { 2, 14, 27, 19},
- {10, 8, 29, 13},
-};
-
-struct UnknownStruct1
-{
- const u8 *unk0;
- u8 unk4;
- u8 unk5;
- u8 unk6;
-};
-
-const struct UnknownStruct1 gUnknown_08402D08[][4] =
-{
- {
- {OtherText_Battle, 1, 1, 0},
- {OtherText_Power, 1, 4, 1},
- {OtherText_Accuracy, 1, 9, 2},
- {NULL, 0, 0, 0},
- },
- {
- {OtherText_Contest, 1, 1, 0},
- {OtherText_Appeal, 1, 4, 1},
- {OtherText_Jam, 1, 9, 2},
- {NULL, 0, 0, 0},
- },
-};
-
-// XXX: What are these for?
-const u32 unkDataFF00FFEF = 0xFF00FFEF;
-const u8 *const gTileBuffer_ = gTileBuffer;
-
-const struct OamData gOamData_8402D50 = {.shape = 0};
-const struct OamData gOamData_8402D58 = {.shape = 2};
-const struct OamData gOamData_8402D60 = {.shape = 1};
-
-const union AnimCmd gSpriteAnim_8402D68[] =
-{
- ANIMCMD_FRAME(2, 5),
- ANIMCMD_END,
-};
-
-const union AnimCmd gSpriteAnim_8402D70[] =
-{
- ANIMCMD_FRAME(0, 5),
- ANIMCMD_END,
-};
-
-const union AnimCmd *const gSpriteAnimTable_8402D78[] =
-{
- gSpriteAnim_8402D68,
- gSpriteAnim_8402D70,
-};
-
-const struct SpriteSheet gUnknown_08402D80 = {gDexArrows_Gfx, sizeof(gDexArrows_Gfx), 5525};
-const struct SpritePalette gUnknown_08402D88 = {gDexArrows_Pal, 5526};
-
-void sub_8133300(struct Sprite *);
-const struct SpriteTemplate gSpriteTemplate_8402D90 =
-{
- .tileTag = 5525,
- .paletteTag = 5526,
- .oam = &gOamData_8402D58,
- .anims = gSpriteAnimTable_8402D78,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8133300,
-};
-
-const union AnimCmd gSpriteAnim_8402DA8[] =
-{
- ANIMCMD_FRAME(4, 5),
- ANIMCMD_END,
-};
-
-const union AnimCmd gSpriteAnim_8402DB0[] =
-{
- ANIMCMD_FRAME(6, 5),
- ANIMCMD_END,
-};
-
-const union AnimCmd *const gSpriteAnimTable_8402DB8[] =
-{
- gSpriteAnim_8402DA8,
- gSpriteAnim_8402DB0,
-};
-
-const struct SpriteTemplate gSpriteTemplate_8402DC0 =
-{
- .tileTag = 5525,
- .paletteTag = 5526,
- .oam = &gOamData_8402D60,
- .anims = gSpriteAnimTable_8402DB8,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8133300,
-};
-
-const union AnimCmd gSpriteAnim_8402DD8[] =
-{
- ANIMCMD_FRAME(8, 5),
- ANIMCMD_END,
-};
-
-const union AnimCmd gSpriteAnim_8402DE0[] =
-{
- ANIMCMD_FRAME(9, 5),
- ANIMCMD_END,
-};
-
-const union AnimCmd gSpriteAnim_8402DE8[] =
-{
- ANIMCMD_FRAME(10, 5),
- ANIMCMD_END,
-};
-
-const union AnimCmd gSpriteAnim_8402DF0[] =
-{
- ANIMCMD_FRAME(11, 5),
- ANIMCMD_END,
-};
-
-const union AnimCmd *const gSpriteAnimTable_8402DF8[] =
-{
- gSpriteAnim_8402DD8,
- gSpriteAnim_8402DE0,
- gSpriteAnim_8402DE8,
- gSpriteAnim_8402DF0,
-};
-
-const struct SpriteTemplate gSpriteTemplate_8402E08 =
-{
- .tileTag = 5525,
- .paletteTag = 5526,
- .oam = &gOamData_8402D50,
- .anims = gSpriteAnimTable_8402DF8,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8133300,
-};
-
-const u8 gString_AkitoMori[] = _("あきと"); // programmer Akito Mori?
-
-void sub_813269C(u8);
-void CB2_InitLearnMove(void);
-void CB2_LearnMove(void);
-void LearnMoveMain(void);
-void DrawLearnMoveMenuWindow(void);
-void sub_8133030(bool8);
-u8 sub_81330E8(void);
-void sub_8133140(u8);
-u8 sub_8133248(void);
-void ClearLearnMoveVars(void);
-void sub_8133358(void);
-void sub_8133558(void);
-void sub_813362C(void);
-void sub_8133800(void);
-void sub_8133AEC(bool8, int);
-void sub_8133CA4(void);
-
-void VBlankCB_LearnMove(void)
-{
- LoadOam();
- ProcessSpriteCopyRequests();
- TransferPlttBuffer();
-}
-
-void TeachMoveTutorMove(void)
-{
- ScriptContext2_Enable();
- CreateTask(sub_813269C, 10);
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
-}
-
-void sub_813269C(u8 taskId)
-{
- if (!gPaletteFade.active)
- {
- SetMainCallback2(CB2_InitLearnMove);
- gFieldCallback = sub_8080990;
- DestroyTask(taskId);
- }
-}
-
-void CB2_InitLearnMove(void)
-{
- REG_DISPCNT = 0;
- ResetSpriteData();
- FreeAllSpritePalettes();
- ResetTasks();
- sLearnMoveStruct = eLearnMoveStruct;
- ClearLearnMoveVars();
- sLearnMoveStruct->partyMon = gSpecialVar_0x8004;
- sub_8133558();
- SetVBlankCallback(VBlankCB_LearnMove);
-
- Text_LoadWindowTemplate(&gWindowTemplate_81E7240);
- InitMenuWindow(&gWindowTemplate_81E7240);
- Menu_EraseScreen();
-
- Text_LoadWindowTemplate(&gWindowTemplate_81E6CE4);
- InitMenuWindow(&gWindowTemplate_81E6CE4);
- Menu_EraseScreen();
-
- REG_BG0VOFS = 0;
- REG_BG0VOFS = 0; // huh?
- REG_BG1HOFS = 0;
- REG_BG1HOFS = 0; // huh?
-
- LoadSpriteSheet(&gUnknown_08402D80);
- LoadSpritePalette(&gUnknown_08402D88);
- sub_8133358();
- FillPalette(0, 0, 2);
- RunTasks();
- AnimateSprites();
- BuildOamBuffer();
- UpdatePaletteFade();
- SetMainCallback2(CB2_LearnMove);
-}
-
-void sub_81327A4(void)
-{
- ResetSpriteData();
- FreeAllSpritePalettes();
- ResetTasks();
- sLearnMoveStruct = eLearnMoveStruct;
- sub_8133558();
- sLearnMoveStruct->unk2C6 = gSpecialVar_0x8005;
- SetVBlankCallback(VBlankCB_LearnMove);
-
- Text_LoadWindowTemplate(&gWindowTemplate_81E7240);
- InitMenuWindow(&gWindowTemplate_81E7240);
- Menu_EraseScreen();
-
- Text_LoadWindowTemplate(&gWindowTemplate_81E6CE4);
- InitMenuWindow(&gWindowTemplate_81E6CE4);
- Menu_EraseScreen();
-
- REG_DISPCNT = 0x1340;
- REG_BG0VOFS = 0;
- REG_BG0HOFS = 0;
- REG_BG1HOFS = 0;
- REG_BG1HOFS = 0; // huh?
-
- LoadSpriteSheet(&gUnknown_08402D80);
- LoadSpritePalette(&gUnknown_08402D88);
- sub_8133358();
- FillPalette(0, 0, 2);
- RunTasks();
- AnimateSprites();
- BuildOamBuffer();
- UpdatePaletteFade();
- SetMainCallback2(CB2_LearnMove);
-}
-
-void CB2_LearnMove(void)
-{
- LearnMoveMain();
- if (sLearnMoveStruct->unk1D)
- {
- sLearnMoveStruct->unk1D = FALSE;
- MenuCursor_SetPos814AD7C(0x58, (sLearnMoveStruct->unk18 * 2 + 1) * 8);
- }
- if (sLearnMoveStruct->unk1E != 0)
- {
- sLearnMoveStruct->unk1E = 0;
- sub_8133800();
- }
- if (sLearnMoveStruct->unk2C3)
- {
- sub_8133AEC(sLearnMoveStruct->showContestInfo, 1);
- sLearnMoveStruct->unk2C3 = FALSE;
- }
- RunTasks();
- AnimateSprites();
- BuildOamBuffer();
- UpdatePaletteFade();
-}
-
-void sub_81328E8(const u8 *a)
-{
- StringExpandPlaceholders(gStringVar4, a);
- MenuPrintMessage(gStringVar4, 3, 15);
-}
-
-void LearnMoveMain(void)
-{
- switch (sLearnMoveStruct->state)
- {
- case 0:
- sLearnMoveStruct->state++;
- DrawLearnMoveMenuWindow();
- sub_8133030(FALSE);
- sub_8133800();
- gSprites[1].pos1.x = 0x48;
- sLearnMoveStruct->unk2C3 = TRUE;
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
- REG_DISPCNT = 0x1340;
- break;
- case 1:
- if (!gPaletteFade.active)
- sLearnMoveStruct->state = 4;
- break;
- case 2:
- sLearnMoveStruct->state++;
- break;
- case 3:
- sub_8133030(FALSE);
- sub_8133800();
- sLearnMoveStruct->unk2C3 = TRUE;
- sLearnMoveStruct->state++;
- gSprites[1].pos1.x = 0x48;
- break;
- case 4:
- if (sub_81330E8() == 0)
- sub_813362C();
- return;
- case 5:
- sub_8133140(0);
- sub_8133800();
- sLearnMoveStruct->unk2C3 = TRUE;
- gSprites[1].pos1.x = 0x48;
- sLearnMoveStruct->state++;
- break;
- case 6:
- if (sub_8133248() == 0)
- sub_813362C();
- break;
- case 8:
- if (Menu_UpdateWindowText())
- {
- DisplayYesNoMenu(21, 7, 1);
- sLearnMoveStruct->state++;
- }
- break;
- case 9:
- {
- s8 selection = Menu_ProcessInputNoWrap_();
-
- if (selection == 0)
- {
- sub_8133CA4();
- if (GiveMoveToMon(&gPlayerParty[sLearnMoveStruct->partyMon], sLearnMoveStruct->movesToLearn[sLearnMoveStruct->menuSelection]) != 0xFFFF)
- {
- sub_81328E8(gOtherText_PokeLearnedMove);
- gSpecialVar_0x8004 = 1;
- sLearnMoveStruct->state = 31;
- }
- else
- {
- sLearnMoveStruct->state = 16;
- }
- }
- else if (selection == -1 || selection == 1)
- {
- sub_8133CA4();
- if (sLearnMoveStruct->showContestInfo == FALSE)
- sLearnMoveStruct->state = 3;
- if (sLearnMoveStruct->showContestInfo == TRUE)
- sLearnMoveStruct->state = 5;
- }
- }
- break;
- case 12:
- if (Menu_UpdateWindowText())
- {
- DisplayYesNoMenu(21, 7, 1);
- sLearnMoveStruct->state++;
- }
- break;
- case 13:
- {
- s8 selection = Menu_ProcessInputNoWrap_();
-
- if (selection == 0)
- {
- sub_8133CA4();
- gSpecialVar_0x8004 = selection;
- sLearnMoveStruct->state = 14;
- }
- else if (selection == -1 || selection == 1)
- {
- sub_8133CA4();
- if (sLearnMoveStruct->showContestInfo == FALSE)
- sLearnMoveStruct->state = 3;
- if (sLearnMoveStruct->showContestInfo == TRUE)
- sLearnMoveStruct->state = 5;
- }
- }
- break;
- case 16:
- sub_81328E8(gOtherText_DeleteOlderMove);
- sLearnMoveStruct->state++;
- break;
- case 17:
- if (Menu_UpdateWindowText())
- {
- DisplayYesNoMenu(21, 7, 1);
- sLearnMoveStruct->state = 18;
- }
- break;
- case 18:
- {
- s8 var = Menu_ProcessInputNoWrap_();
-
- if (var == 0)
- {
- sub_8133CA4();
- sub_81328E8(gOtherText_WhichMoveToForget);
- sLearnMoveStruct->state = 19;
- }
- else if (var == -1 || var == 1)
- {
- sub_8133CA4();
- sLearnMoveStruct->state = 24;
- }
- }
- break;
- case 24:
- sub_81328E8(gOtherText_StopLearningMove);
- sLearnMoveStruct->state++;
- break;
- case 25:
- if (Menu_UpdateWindowText())
- {
- sLearnMoveStruct->state = 26;
- DisplayYesNoMenu(21, 7, 1);
- }
- break;
- case 26:
- {
- s8 var = Menu_ProcessInputNoWrap_();
-
- if (var == 0)
- {
- sub_8133CA4();
- sLearnMoveStruct->state = 27;
- }
- else if (var == -1 || var == 1)
- {
- sub_8133CA4();
-
- // What's the point? It gets set to 16, anyway.
- if (sLearnMoveStruct->showContestInfo == FALSE)
- sLearnMoveStruct->state = 3;
- if (sLearnMoveStruct->showContestInfo == TRUE)
- sLearnMoveStruct->state = 5;
- sLearnMoveStruct->state = 16;
- }
- }
- break;
- case 27:
- if (Menu_UpdateWindowText())
- {
- if (sLearnMoveStruct->showContestInfo == FALSE)
- sLearnMoveStruct->state = 3;
- if (sLearnMoveStruct->showContestInfo == TRUE)
- sLearnMoveStruct->state = 5;
- }
- break;
- case 19:
- if (Menu_UpdateWindowText())
- {
- sLearnMoveStruct->state = 20;
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
- }
- break;
- case 20:
- if (!gPaletteFade.active)
- {
- ShowSelectMovePokemonSummaryScreen(gPlayerParty, sLearnMoveStruct->partyMon, gPlayerPartyCount - 1, sub_81327A4, sLearnMoveStruct->movesToLearn[sLearnMoveStruct->menuSelection]);
- sLearnMoveStruct->state = 28;
- }
- break;
- case 21:
- if (Menu_UpdateWindowText())
- sLearnMoveStruct->state = 14;
- break;
- case 22:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
- break;
- case 14:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
- sLearnMoveStruct->state++;
- break;
- case 15:
- if (!gPaletteFade.active)
- SetMainCallback2(c2_exit_to_overworld_2_switch);
- break;
- case 28:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
- sLearnMoveStruct->state++;
- DrawLearnMoveMenuWindow();
- sub_8133800();
- if (sLearnMoveStruct->showContestInfo == FALSE)
- sub_8133030(TRUE);
- if (sLearnMoveStruct->showContestInfo == TRUE)
- {
- gSprites[1].pos1.x = 0x48;
- sub_8133140(1);
- }
- sub_8133AEC(sLearnMoveStruct->showContestInfo, 1);
- break;
- case 29:
- if (!gPaletteFade.active)
- {
- if (sLearnMoveStruct->unk2C6 == 4)
- {
- sLearnMoveStruct->state = 24;
- }
- else
- {
- u16 moveId = GetMonData(&gPlayerParty[sLearnMoveStruct->partyMon], MON_DATA_MOVE1 + sLearnMoveStruct->unk2C6);
-
- StringCopy(gStringVar3, gMoveNames[moveId]);
- RemoveMonPPBonus(&gPlayerParty[sLearnMoveStruct->partyMon], sLearnMoveStruct->unk2C6);
- SetMonMoveSlot(&gPlayerParty[sLearnMoveStruct->partyMon], sLearnMoveStruct->movesToLearn[sLearnMoveStruct->menuSelection], sLearnMoveStruct->unk2C6);
- StringCopy(gStringVar2, gMoveNames[sLearnMoveStruct->movesToLearn[sLearnMoveStruct->menuSelection]]);
- sub_81328E8(gOtherText_ForgotMove123);
- sLearnMoveStruct->state = 30;
- gSpecialVar_0x8004 = 1;
- }
- }
- break;
- case 30:
- if (Menu_UpdateWindowText())
- {
-#ifdef ENGLISH
- sub_81328E8(gOtherText_ForgotOrDidNotLearnMove);
-#else
- sub_81328E8(deuOtherText_ForgotAndLearned);
-#endif
- sLearnMoveStruct->state = 31;
- PlayFanfare(BGM_FANFA1);
- }
- break;
- case 31:
- if (Menu_UpdateWindowText())
- {
- PlayFanfare(BGM_FANFA1);
- sLearnMoveStruct->state = 32;
- }
- break;
- case 32:
- if (IsFanfareTaskInactive())
- sLearnMoveStruct->state = 33;
- break;
- case 33:
- if (gMain.newKeys & A_BUTTON)
- {
- PlaySE(SE_SELECT);
- sLearnMoveStruct->state = 14;
- }
- break;
- }
-}
-
-void DrawLearnMoveMenuWindow(void)
-{
- u32 i;
-
- BasicInitMenuWindow(&gWindowTemplate_81E7240);
- for (i = 0; i < 4; i++)
- {
- Menu_DrawStdWindowFrame(
- gUnknown_08402CF8[i][0],
- gUnknown_08402CF8[i][1],
- gUnknown_08402CF8[i][2],
- gUnknown_08402CF8[i][3]);
- }
- BasicInitMenuWindow(&gWindowTemplate_81E6CE4);
-}
-
-void sub_8133030(bool8 a)
-{
- s32 i;
-
- gSprites[sLearnMoveStruct->spriteIDs[0]].invisible = FALSE;
- gSprites[sLearnMoveStruct->spriteIDs[1]].invisible = FALSE;
-
- for (i = 0; i < 16; i++)
- gSprites[sLearnMoveStruct->spriteIDs[i + 4]].invisible = TRUE;
-
- for (i = 0; gUnknown_08402D08[0][i].unk0 != NULL; i++)
- {
- sub_8072C74(gTileBuffer, gUnknown_08402D08[0][i].unk0, 64, 2);
- Menu_PrintText(gTileBuffer, gUnknown_08402D08[0][i].unk4, gUnknown_08402D08[0][i].unk5);
- }
-
- if (!a)
- sub_8072AB0(gOtherText_TeachWhichMove, 24, 120, 192, 32, 1);
-}
-
-u8 sub_81330E8(void)
-{
- u32 result = (gMain.newKeys & DPAD_LEFT) || (gMain.newKeys & DPAD_RIGHT);
-
- if (gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_LR
- && ((gMain.newKeys & L_BUTTON) || (gMain.newKeys & R_BUTTON)))
- result++;
-
- if (result != 0)
- {
- PlaySE(SE_SELECT);
- sLearnMoveStruct->state = 5;
- sLearnMoveStruct->showContestInfo = TRUE;
- }
-
- return result;
-}
-
-void sub_8133140(bool8 a)
-{
- s32 i;
-
- gSprites[sLearnMoveStruct->spriteIDs[0]].invisible = FALSE;
- gSprites[sLearnMoveStruct->spriteIDs[1]].invisible = FALSE;
-
- for (i = 0; i < 16; i++)
- gSprites[sLearnMoveStruct->spriteIDs[i + 4]].invisible = FALSE;
-
- for (i = 0; gUnknown_08402D08[0][i].unk0 != NULL; i++)
- {
- sub_8072C74(gTileBuffer, gUnknown_08402D08[1][i].unk0, 64, 2);
- Menu_PrintText(gTileBuffer, gUnknown_08402D08[1][i].unk4, gUnknown_08402D08[1][i].unk5);
- if (i != 0)
- {
- Menu_EraseWindowRect(
- gUnknown_08402D08[1][i].unk4,
- gUnknown_08402D08[1][i].unk5 + 2,
- gUnknown_08402D08[1][i].unk4 + 7,
- gUnknown_08402D08[1][i].unk5 + 3);
- }
- }
-
- if (!a)
- sub_8072AB0(gOtherText_TeachWhichMove, 24, 120, 192, 32, 1);
-}
-
-u8 sub_8133248(void)
-{
- u32 result = (gMain.newKeys & DPAD_LEFT) || (gMain.newKeys & DPAD_RIGHT);
-
- if (gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_LR
- && ((gMain.newKeys & L_BUTTON) || (gMain.newKeys & R_BUTTON)))
- result++;
-
- if (result != 0)
- {
- PlaySE(SE_SELECT);
- sLearnMoveStruct->state = 3;
- sLearnMoveStruct->showContestInfo = FALSE;
- }
-
- return result;
-}
-
-void ClearLearnMoveVars(void)
-{
- s32 i;
-
- sLearnMoveStruct->state = 0;
- sLearnMoveStruct->unk2 = 0;
- sLearnMoveStruct->unk19 = 0;
- sLearnMoveStruct->unk18 = 0;
- sLearnMoveStruct->unk1C = 0;
- sLearnMoveStruct->numMenuChoices = 0;
- sLearnMoveStruct->menuSelection = 0;
- sLearnMoveStruct->unk1D = FALSE;
- sLearnMoveStruct->unk1E = 0;
- sLearnMoveStruct->unk2C3 = FALSE;
- sLearnMoveStruct->showContestInfo = FALSE;
- for (i = 0; i < 20; i++)
- sLearnMoveStruct->movesToLearn[i] = 0;
-}
-
-void sub_8133300(struct Sprite *sprite)
-{
- s16 var = (sprite->data[1] * 10) & 0xFF;
-
- switch (sprite->data[0])
- {
- case 0:
- break;
- case 1:
- sprite->pos2.x = Sin(var, 3) * sprite->data[2];
- break;
- case 2:
- sprite->pos2.y = Sin(var, 1) * sprite->data[2];
- break;
- }
- sprite->data[1]++;
-}
-
-void sub_8133358(void)
-{
- s32 i;
-
- sLearnMoveStruct->spriteIDs[0] = CreateSprite(&gSpriteTemplate_8402D90, 8, 16, 0);
- gSprites[sLearnMoveStruct->spriteIDs[0]].data[0] = 1;
- gSprites[sLearnMoveStruct->spriteIDs[0]].data[2] = -1;
-
- sLearnMoveStruct->spriteIDs[1] = CreateSprite(&gSpriteTemplate_8402D90, 72, 16, 0);
- StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[1]], 1);
- gSprites[sLearnMoveStruct->spriteIDs[1]].data[0] = 1;
- gSprites[sLearnMoveStruct->spriteIDs[1]].data[2] = 1;
-
- sLearnMoveStruct->spriteIDs[2] = CreateSprite(&gSpriteTemplate_8402DC0, 160, 4, 0);
- StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[2]], 1);
- gSprites[sLearnMoveStruct->spriteIDs[2]].data[0] = 2;
- gSprites[sLearnMoveStruct->spriteIDs[2]].data[2] = -1;
-
- sLearnMoveStruct->spriteIDs[3] = CreateSprite(&gSpriteTemplate_8402DC0, 160, 60, 0);
- gSprites[sLearnMoveStruct->spriteIDs[3]].data[0] = 2;
- gSprites[sLearnMoveStruct->spriteIDs[3]].data[2] = 1;
-
- for (i = 0; i < 8; i++)
- {
- sLearnMoveStruct->spriteIDs[i + 4] = CreateSprite(&gSpriteTemplate_8402E08, (i - (i / 4) * 4) * 8 + 0x1C, (i / 4) * 8 + 0x34, 0);
- StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[i + 4]], 2);
- }
-
- for (i = 0; i < 8; i++)
- {
- sLearnMoveStruct->spriteIDs[i + 12] = CreateSprite(&gSpriteTemplate_8402E08, (i - (i / 4) * 4) * 8 + 0x1C, (i / 4) * 8 + 0x5C, 0);
- StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[i + 12]], 2);
- }
-
- for (i = 0; i < 20; i++)
- gSprites[sLearnMoveStruct->spriteIDs[i]].invisible = TRUE;
-
- CreateBlendedOutlineCursor(16, 0xFFFF, 12, 0x2D9F, 18);
-}
-
-void sub_8133558(void)
-{
- s32 i;
- u8 nickname[POKEMON_NAME_LENGTH + 1];
-
- sLearnMoveStruct->numMenuChoices = GetMoveRelearnerMoves(&gPlayerParty[sLearnMoveStruct->partyMon], sLearnMoveStruct->movesToLearn);
- for (i = 0; i < sLearnMoveStruct->numMenuChoices; i++)
- StringCopy(sLearnMoveStruct->moveNames[i], gMoveNames[sLearnMoveStruct->movesToLearn[i]]);
- GetMonData(&gPlayerParty[sLearnMoveStruct->partyMon], MON_DATA_NICKNAME, nickname);
- StringCopy10(gStringVar1, nickname);
- StringCopy(sLearnMoveStruct->moveNames[sLearnMoveStruct->numMenuChoices], gUnknownText_Exit);
- sLearnMoveStruct->numMenuChoices++;
-}
-
-void sub_813360C(s8 delta)
-{
- sLearnMoveStruct->unk1C = sLearnMoveStruct->unk18;
- sLearnMoveStruct->unk18 += delta;
- sLearnMoveStruct->unk1D = TRUE;
-}
-
-void sub_813362C(void)
-{
- if (gMain.newAndRepeatedKeys & DPAD_UP)
- {
- if (sLearnMoveStruct->menuSelection != 0)
- {
- PlaySE(SE_SELECT);
- sLearnMoveStruct->menuSelection--;
- sLearnMoveStruct->unk2C3 = TRUE;
- if (sLearnMoveStruct->unk18 != 0)
- {
- sub_813360C(-1);
- }
- else if (sLearnMoveStruct->unk19 != 0)
- {
- sLearnMoveStruct->unk19--;
- sLearnMoveStruct->unk1E++;
- }
- }
- }
- else if (gMain.newAndRepeatedKeys & DPAD_DOWN)
- {
- if (sLearnMoveStruct->menuSelection < sLearnMoveStruct->numMenuChoices - 1)
- {
- PlaySE(SE_SELECT);
- sLearnMoveStruct->menuSelection++;
- sLearnMoveStruct->unk2C3 = TRUE;
- if (sLearnMoveStruct->unk18 != 2)
- {
- sub_813360C(1);
- }
- else if (sLearnMoveStruct->unk19 != sLearnMoveStruct->numMenuChoices - 3)
- {
- sLearnMoveStruct->unk19++;
- sLearnMoveStruct->unk1E++;
- }
- }
- }
- else if (gMain.newKeys & A_BUTTON)
- {
- PlaySE(SE_SELECT);
- if (sLearnMoveStruct->menuSelection != sLearnMoveStruct->numMenuChoices - 1)
- {
- sLearnMoveStruct->state = 8;
- StringCopy(gStringVar2, sLearnMoveStruct->moveNames[sLearnMoveStruct->menuSelection]);
- StringExpandPlaceholders(gStringVar4, gOtherText_TeachSpecificMove);
- MenuPrintMessage(gStringVar4, 3, 15);
- }
- else
- {
- StringExpandPlaceholders(gStringVar4, gOtherText_GiveUpTeachingMove);
- MenuPrintMessage(gStringVar4, 3, 15);
- sLearnMoveStruct->state = 12;
- }
- }
- else if (gMain.newKeys & B_BUTTON)
- {
- PlaySE(SE_SELECT);
- sLearnMoveStruct->state = 12;
- StringExpandPlaceholders(gStringVar4, gOtherText_GiveUpTeachingMove);
- MenuPrintMessage(gStringVar4, 3, 15);
- }
- if (sLearnMoveStruct->numMenuChoices > 3)
- {
- gSprites[2].invisible = FALSE;
- gSprites[3].invisible = FALSE;
- if (sLearnMoveStruct->unk19 == 0)
- gSprites[2].invisible = TRUE;
- else if (sLearnMoveStruct->unk19 == sLearnMoveStruct->numMenuChoices - 3)
- gSprites[3].invisible = TRUE;
- }
-}
-
-void sub_8133800(void)
-{
- u8 r6 = sLearnMoveStruct->unk19;
- u8 *str = gTileBuffer;
- s32 i;
-
- for (i = 0; i < 3; i++)
- {
- if (r6 >= sLearnMoveStruct->numMenuChoices)
- {
- str = sub_8072C74(str, gEmptyString_81E72B0, 0x90, 0);
- }
- else if (r6 == sLearnMoveStruct->numMenuChoices - 1)
- {
- str = sub_8072C74(str, gUnknownText_Exit, 0x90, 0);
- }
- else
- {
- u16 moveId = sLearnMoveStruct->movesToLearn[r6];
-
- if (sLearnMoveStruct->showContestInfo)
- str = sub_8072C74(str, gUnknown_083CAF70[gContestMoves[moveId].contestCategory], 0x27, 0);
- else
- str = sub_8072C74(str, gTypeNames[gBattleMoves[moveId].type], 0x27, 0);
-
- str = sub_8072C74(str, sLearnMoveStruct->moveNames[r6], 0x72, 0);
-
- str[0] = CHAR_P;
- str[1] = CHAR_P;
- str[2] = CHAR_SLASH;
- str += 3;
-
- str = sub_8072C14(str, gBattleMoves[moveId].pp, 0x90, 0);
- }
- *str++ = CHAR_NEWLINE;
- r6++;
- }
- *str = EOS;
- Menu_PrintText(gTileBuffer, 11, 1);
- sub_813360C(0);
-}
-
-const u8 gUnknown_08402E24[7][3] =
-{
- {11, 1, 1},
- { 3, 6, 2},
- {24, 1, 3},
- { 3, 11, 4},
- { 5, 4, 5},
- { 3, 6, 6},
- { 3, 11, 7},
-};
-
-const u8 gUnknown_08402E39[] = {0, 1, 2, 3};
-const u8 gUnknown_08402E3D[] = {4, 5, 6};
-
-void PrintMoveInfo(u16 moveId, const u8 *b)
-{
- u8 str[0x34];
- u8 numHearts;
- u8 i;
-
- StringCopy(str, gExpandedPlaceholder_Empty);
- switch (b[2])
- {
- case 1:
- break;
- case 2:
- if (gBattleMoves[moveId].power < 2)
- sub_8072C74(str, gOtherText_ThreeDashes2, 32, 2);
- else
- sub_8072C14(str, gBattleMoves[moveId].power, 32, 2);
- Menu_PrintText(str, b[0], b[1]);
- break;
- case 4:
- if (gBattleMoves[moveId].accuracy == 0)
- sub_8072C74(str, gOtherText_ThreeDashes2, 32, 2);
- else
- sub_8072C14(str, gBattleMoves[moveId].accuracy, 32, 2);
- Menu_PrintText(str, b[0], b[1]);
- break;
- case 6:
- Menu_EraseWindowRect(b[0], b[1], b[0], b[1] + 1);
- numHearts = gContestEffects[gContestMoves[moveId].effect].appeal / 10;
- if (numHearts == 255)
- numHearts = 0;
- for (i = 0; i < 8; i++)
- {
- if (i < numHearts)
- StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[i + 4]], 1);
- else
- StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[i + 4]], 0);
- }
- break;
- case 7:
- Menu_EraseWindowRect(b[0], b[1], b[0], b[1] + 1);
- numHearts = gContestEffects[gContestMoves[moveId].effect].jam / 10;
- if (numHearts == 255)
- numHearts = 0;
- for (i = 0; i < 8; i++)
- {
- if (i < numHearts)
- StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[i + 12]], 3);
- else
- StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[i + 12]], 2);
- }
- break;
- }
-}
-
-void sub_8133AEC(bool8 contestInfo, int unused)
-{
- u16 i;
-
- if (sLearnMoveStruct->menuSelection != sLearnMoveStruct->numMenuChoices - 1)
- {
- u16 moveId = sLearnMoveStruct->movesToLearn[sLearnMoveStruct->menuSelection];
-
- if (contestInfo)
- {
- for (i = 0; i < 16; i++)
- gSprites[sLearnMoveStruct->spriteIDs[i + 4]].invisible = FALSE;
- for (i = 0; i < 3; i++)
- PrintMoveInfo(moveId, gUnknown_08402E24[gUnknown_08402E3D[i]]);
- sub_8072AB0(gContestEffectStrings[gContestMoves[moveId].effect], 0x58, 0x48, 0x90, 32, 1);
- }
- else
- {
- u8 var;
-
- for (i = 0; i < 4; i++)
- PrintMoveInfo(moveId, gUnknown_08402E24[gUnknown_08402E39[i]]);
- var = sub_8072A18(gMoveDescriptions[moveId - 1], 0x58, 0x48, 0x90, 1);
- if (var < 2)
- {
- u8 r1 = var * 2 + 9;
-
- Menu_BlankWindowRect(11, r1, 28, 12);
- }
- }
- }
- else
- {
- if (contestInfo)
- {
- Menu_EraseWindowRect(gUnknown_08402E24[5][0], gUnknown_08402E24[5][1], gUnknown_08402E24[5][0], gUnknown_08402E24[5][1] + 1);
- Menu_EraseWindowRect(gUnknown_08402E24[6][0], gUnknown_08402E24[6][1], gUnknown_08402E24[6][0], gUnknown_08402E24[6][1] + 1);
- for (i = 0; i < 16; i++)
- gSprites[sLearnMoveStruct->spriteIDs[i + 4]].invisible = TRUE;
- }
- else
- {
- Menu_EraseWindowRect(gUnknown_08402E24[1][0], gUnknown_08402E24[1][1], gUnknown_08402E24[1][0] + 3, gUnknown_08402E24[1][1] + 1);
- Menu_EraseWindowRect(gUnknown_08402E24[3][0], gUnknown_08402E24[3][1], gUnknown_08402E24[3][0] + 3, gUnknown_08402E24[3][1] + 1);
- }
- Menu_EraseWindowRect(11, 9, 28, 12);
- }
-}
-
-void sub_8133CA4(void)
-{
- Menu_EraseWindowRect(21, 7, 27, 12);
- sub_8133AEC(sLearnMoveStruct->showContestInfo, 0);
-}
diff --git a/src/link.c b/src/link.c
index 45807830a..a4bd87333 100644
--- a/src/link.c
+++ b/src/link.c
@@ -241,8 +241,8 @@ void LinkTestScreen(void)
FreeAllSpritePalettes();
ResetTasks();
SetVBlankCallback(VBlankCB_LinkTest);
- Text_LoadWindowTemplate(&gWindowTemplate_81E6CE4);
- InitMenuWindow((struct WindowTemplate *)&gWindowTemplate_81E6CE4);
+ Text_LoadWindowTemplate(&gMenuTextWindowTemplate);
+ InitMenuWindow((struct WindowTemplate *)&gMenuTextWindowTemplate);
ResetBlockSend();
gLinkType = 0x1111;
OpenLink();
@@ -408,7 +408,7 @@ static void LinkTestProcessKeyInput(void)
if (gMain.heldKeys & B_BUTTON)
InitBlockSend(ewram4000, 0x2004);
if (gMain.newKeys & L_BUTTON)
- BeginNormalPaletteFade(-1, 0, 0x10, 0, 2);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(2, 0, 0));
if (gMain.newKeys & START_BUTTON)
SetSuppressLinkErrorMessage(TRUE);
if (gMain.newKeys & R_BUTTON)
diff --git a/src/load_save.c b/src/load_save.c
index 8424b1121..7960a42eb 100644
--- a/src/load_save.c
+++ b/src/load_save.c
@@ -81,32 +81,32 @@ void LoadPlayerParty(void)
gPlayerParty[i] = gSaveBlock1.playerParty[i];
}
-static void SaveMapObjects(void)
+static void SaveEventObjects(void)
{
int i;
for (i = 0; i < 16; i++)
- gSaveBlock1.mapObjects[i] = gMapObjects[i];
+ gSaveBlock1.eventObjects[i] = gEventObjects[i];
}
-static void LoadMapObjects(void)
+static void LoadEventObjects(void)
{
int i;
for (i = 0; i < 16; i++)
- gMapObjects[i] = gSaveBlock1.mapObjects[i];
+ gEventObjects[i] = gSaveBlock1.eventObjects[i];
}
void SaveSerializedGame(void)
{
SavePlayerParty();
- SaveMapObjects();
+ SaveEventObjects();
}
void LoadSerializedGame(void)
{
LoadPlayerParty();
- LoadMapObjects();
+ LoadEventObjects();
}
void LoadPlayerBag(void)
diff --git a/src/mail.c b/src/mail.c
index 4497c98fb..9833b1c2d 100644
--- a/src/mail.c
+++ b/src/mail.c
@@ -514,7 +514,7 @@ static u8 sub_80F8A28(void)
REG_BG2CNT = BGCNT_PRIORITY(2) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(9) | BGCNT_16COLOR | BGCNT_TXT256x256;
REG_BLDCNT = 0;
REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_BG2_ON | DISPCNT_OBJ_ON;
- BeginNormalPaletteFade(-1, 0, 16, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
gPaletteFade.bufferTransferDisabled = 0;
ewram0_4.varF0 = sub_80F8F58;
return TRUE;
@@ -639,7 +639,7 @@ static void sub_80F8F78(void)
{
if (gMain.newKeys & (A_BUTTON | B_BUTTON))
{
- BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
ewram0_4.varF0 = sub_80F8FB4;
}
}
@@ -701,7 +701,7 @@ void debug_sub_810C990(u8 taskId)
}
else if (gMain.newKeys & A_BUTTON)
{
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gTasks[taskId].func = debug_sub_810C910;
}
else if (gMain.newKeys & B_BUTTON)
@@ -1100,7 +1100,7 @@ void debug_sub_810D388(void)
ScanlineEffect_Stop();
ResetPaletteFade();
SetVBlankCallback(sub_80F8F18);
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
}
break;
case 1:
@@ -1124,8 +1124,8 @@ void debug_sub_810D388(void)
FreeAllSpritePalettes();
break;
case 4:
- Text_LoadWindowTemplate(&gWindowTemplate_81E6CE4);
- InitMenuWindow(&gWindowTemplate_81E6CE4);
+ Text_LoadWindowTemplate(&gMenuTextWindowTemplate);
+ InitMenuWindow(&gMenuTextWindowTemplate);
Menu_EraseScreen();
break;
case 5:
@@ -1139,7 +1139,7 @@ void debug_sub_810D388(void)
REG_BLDCNT = 0;
REG_DISPCNT = 0x0340;
debug_sub_810D340();
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
SetVBlankCallback(sub_80F8F18);
break;
case 7:
diff --git a/src/main.c b/src/main.c
index 54a443e80..d7ef91df0 100644
--- a/src/main.c
+++ b/src/main.c
@@ -68,7 +68,7 @@ u8 gSoftResetDisabled;
IntrFunc gIntrTable[INTR_COUNT];
bool8 gLinkVSyncDisabled;
u32 IntrMain_Buffer[0x200];
-u8 gPcmDmaCounter;
+s8 gPcmDmaCounter;
EWRAM_DATA u8 gSharedMem[0x20000] = {0};
EWRAM_DATA void (**gFlashTimerIntrFunc)(void) = NULL;
diff --git a/src/main_menu.c b/src/main_menu.c
index 5a3f55b29..93d9be77a 100644
--- a/src/main_menu.c
+++ b/src/main_menu.c
@@ -233,12 +233,12 @@ u32 InitMainMenu(u8 a1)
ResetSpriteData();
FreeAllSpritePalettes();
Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C);
- InitMenuWindow((struct WindowTemplate *)&gWindowTemplate_81E6CE4);
+ InitMenuWindow((struct WindowTemplate *)&gMenuTextWindowTemplate);
if (a1)
- BeginNormalPaletteFade(-1, 0, 0x10, 0, 0x0000); // fade to black
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
else
- BeginNormalPaletteFade(-1, 0, 0x10, 0, 0xFFFF); // fade to white
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, FADE_COLOR_WHITE);
REG_WIN0H = 0;
REG_WIN0V = 0;
@@ -452,13 +452,13 @@ bool8 MainMenuProcessKeyInput(u8 taskId)
if (gMain.newKeys & A_BUTTON)
{
PlaySE(SE_SELECT);
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0x0000);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gTasks[taskId].func = Task_MainMenuPressedA;
}
else if (gMain.newKeys & B_BUTTON)
{
PlaySE(SE_SELECT);
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0xFFFF);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, FADE_COLOR_WHITE);
REG_WIN0H = WIN_RANGE(0, 240);
REG_WIN0V = WIN_RANGE(0, 160);
gTasks[taskId].func = Task_MainMenuPressedB;
@@ -704,12 +704,12 @@ void PrintPlayTime(void)
#if defined(ENGLISH)
Menu_PrintText(gMainMenuString_Time, 16, 3);
FormatPlayTime(playTime, gSaveBlock2.playTimeHours, gSaveBlock2.playTimeMinutes, 1);
- sub_8072C74(alignedPlayTime, playTime, 48, 1);
+ AlignStringInMenuWindow(alignedPlayTime, playTime, 48, 1);
Menu_PrintText(alignedPlayTime, 22, 3);
#elif defined(GERMAN)
Menu_PrintTextPixelCoords(gMainMenuString_Time, 124, 24, TRUE);
FormatPlayTime(playTime, gSaveBlock2.playTimeHours, gSaveBlock2.playTimeMinutes, 1);
- sub_8072C74(alignedPlayTime, playTime, 40, 1);
+ AlignStringInMenuWindow(alignedPlayTime, playTime, 40, 1);
Menu_PrintText(alignedPlayTime, 23, 3);
#endif
}
@@ -719,7 +719,7 @@ void PrintPokedexCount(void)
u8 buffer[16];
Menu_PrintText(gMainMenuString_Pokedex, 2, 5);
- sub_8072C14(buffer, GetPokedexSeenCount(), 18, 0);
+ AlignInt1InMenuWindow(buffer, GetPokedexSeenCount(), 18, 0);
Menu_PrintText(buffer, 9, 5);
}
@@ -749,7 +749,7 @@ void PrintBadgeCount(void)
static void Task_NewGameSpeech1(u8 taskId)
{
Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C);
- InitMenuWindow((struct WindowTemplate *)&gWindowTemplate_81E6CE4);
+ InitMenuWindow((struct WindowTemplate *)&gMenuTextWindowTemplate);
REG_WIN0H = 0;
REG_WIN0V = 0;
REG_WININ = 0;
@@ -765,7 +765,7 @@ static void Task_NewGameSpeech1(u8 taskId)
ResetSpriteData();
FreeAllSpritePalettes();
AddBirchSpeechObjects(taskId);
- BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
REG_BG1CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(7) | BGCNT_16COLOR | BGCNT_TXT256x256;
REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP;
gTasks[taskId].tBGhofs = 0;
@@ -774,7 +774,7 @@ static void Task_NewGameSpeech1(u8 taskId)
gTasks[taskId].data[3] = 0xFF;
gTasks[taskId].tFrameCounter = 216; //Wait 3.6 seconds (216 frames) before starting speech
- PlayBGM(BGM_DOORO_X4);
+ PlayBGM(MUS_DOORO_X4);
}
static void Task_NewGameSpeech2(u8 taskId)
@@ -1094,7 +1094,7 @@ static void Task_NewGameSpeech21(u8 taskId)
break;
case 0: //NEW NAME
PlaySE(SE_SELECT);
- BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gTasks[taskId].func = Task_NewGameSpeech22;
break;
case -1: //B button
@@ -1291,7 +1291,7 @@ static void Task_NewGameSpeech30(u8 taskId)
InitSpriteAffineAnim(&gSprites[spriteId]);
StartSpriteAffineAnim(&gSprites[spriteId], 0);
gSprites[spriteId].callback = ShrinkPlayerSprite;
- BeginNormalPaletteFade(0x0000FFFF, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0x0000FFFF, 0, 0, 16, RGB(0, 0, 0));
FadeOutBGM(4);
gTasks[taskId].func = Task_NewGameSpeech31;
}
@@ -1313,7 +1313,7 @@ static void Task_NewGameSpeech32(u8 taskId)
u8 spriteId = gTasks[taskId].tTrainerSpriteId;
gSprites[spriteId].callback = nullsub_34;
REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON;
- BeginNormalPaletteFade(0xFFFF0000, 0, 0, 0x10, 0xFFFF);
+ BeginNormalPaletteFade(0xFFFF0000, 0, 0, 16, FADE_COLOR_WHITE);
gTasks[taskId].func = Task_NewGameSpeech33;
}
}
@@ -1372,7 +1372,7 @@ void CB_ContinueNewGameSpeechPart2()
AddBirchSpeechObjects(taskId);
Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C);
- InitMenuWindow((struct WindowTemplate *)&gWindowTemplate_81E6CE4);
+ InitMenuWindow((struct WindowTemplate *)&gMenuTextWindowTemplate);
if (gSaveBlock2.playerGender != MALE)
{
@@ -1393,7 +1393,7 @@ void CB_ContinueNewGameSpeechPart2()
REG_BG1HOFS = -60;
- BeginNormalPaletteFade(0xFFFFFFFFu, 0, 0x10, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
REG_WIN0H = 0;
REG_WIN0V = 0;
diff --git a/src/mauville_man.c b/src/mauville_man.c
index a68d5071d..bfdfe9cf1 100644
--- a/src/mauville_man.c
+++ b/src/mauville_man.c
@@ -10,7 +10,7 @@
#include "overworld.h"
#include "random.h"
#include "script.h"
-#include "constants/map_objects.h"
+#include "constants/event_objects.h"
#include "constants/songs.h"
#include "sound.h"
#include "string_util.h"
@@ -457,43 +457,32 @@ void ScrSpecial_GenerateGiddyLine(void)
gSpecialVar_Result = TRUE;
}
-#ifdef NONMATCHING
static void sub_80F7DC0(void)
{
+ struct MauvilleManGiddy *giddy = &gSaveBlock1.mauvilleMan.giddy;
u16 arr[][2] =
{
- { 0x0, 0},
- { 0xC, 0},
- { 0xD, 0},
- {0x12, 0},
- {0x13, 0},
- {0x15, 0},
+ {EC_GROUP_POKEMON_1, 0},
+ {EC_GROUP_LIFESTYLE, 0},
+ {EC_GROUP_HOBBIES, 0},
+ {EC_GROUP_MOVE_1, 0},
+ {EC_GROUP_MOVE_2, 0},
+ {EC_GROUP_POKEMON_2, 0}
};
u16 i;
u16 r10;
u16 r7;
+ u16 r1;
for (i = 0; i < 8; i++)
{
- struct MauvilleManGiddy *giddy = &gSaveBlock1.mauvilleMan.giddy;
-
- //gSaveBlock1.mauvilleMan.giddy.questionList[i] = i;
giddy->questionList[i] = i;
}
- // Scramble questions
for (i = 0; i < 8; i++)
{
- struct MauvilleManGiddy *giddy = &gSaveBlock1.mauvilleMan.giddy;
-
- /*
- u16 r1 = Random() % (i + 1);
- u8 r7 = gSaveBlock1.mauvilleMan.giddy.questionList[i];
- gSaveBlock1.mauvilleMan.giddy.questionList[i] = gSaveBlock1.mauvilleMan.giddy.questionList[r1];
- gSaveBlock1.mauvilleMan.giddy.questionList[r1] = r7;
- */
- u16 r1 = Random() % (i + 1);
- u8 r7 = giddy->questionList[i];
+ r1 = Random() % (i + 1);
+ r7 = giddy->questionList[i];
giddy->questionList[i] = giddy->questionList[r1];
giddy->questionList[r1] = r7;
}
@@ -505,220 +494,30 @@ static void sub_80F7DC0(void)
r10 += arr[i][1];
}
- {
- struct MauvilleManGiddy *giddy = &gSaveBlock1.mauvilleMan.giddy;
- giddy->questionNum = 0;
- }
- //gSaveBlock1.mauvilleMan.giddy.questionNum = 0;
-
+ giddy->questionNum = 0;
r7 = 0;
for (i = 0; i < 10; i++)
{
- struct MauvilleManGiddy *giddy = &gSaveBlock1.mauvilleMan.giddy;
-
- u16 var = Random() % 10;
- if (var < 3 && r7 < 8)
+ r1 = Random() % 10;
+ if (r1 < 3 && r7 < 8)
{
- //gSaveBlock1.mauvilleMan.giddy.randomWords[i] = 0xFFFF;
giddy->randomWords[i] = 0xFFFF;
r7++;
}
- //_080F7E90
else
{
s16 r2 = Random() % r10;
-
- u16 r1 = 0;
-
- while (i < 6) // comparing the wrong variable
+ for (r1 = 0; i < 6; r1++)
{
- r2 = arr[r1][1] - r2;
- if (r2 <= 0)
+ if ((r2 -= arr[r1][1]) <= 0)
break;
- r1++;
}
-
if (r1 == 6)
r1 = 0;
- //gSaveBlock1.mauvilleMan.giddy.randomWords[i] = sub_80EB784(arr[r1][0]);
giddy->randomWords[i] = sub_80EB784(arr[r1][0]);
}
}
}
-#else
-
-static const u16 gUnknown_083E53C8[][2] =
-{
- { 0x0, 0},
- { 0xC, 0},
- { 0xD, 0},
- {0x12, 0},
- {0x13, 0},
- {0x15, 0},
-};
-
-__attribute__((naked))
-static void sub_80F7DC0(void)
-{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x18\n\
- ldr r1, _080F7E84 @ =gUnknown_083E53C8\n\
- mov r0, sp\n\
- movs r2, 0x18\n\
- bl memcpy\n\
- movs r5, 0\n\
- movs r0, 0x2\n\
- add r0, sp\n\
- mov r8, r0\n\
- ldr r1, _080F7E88 @ =gSaveBlock1 + 0x2D94\n\
- adds r1, 0x18\n\
- adds r3, r1, 0\n\
-_080F7DE4:\n\
- adds r0, r3, r5\n\
- strb r5, [r0]\n\
- adds r0, r5, 0x1\n\
- lsls r0, 16\n\
- lsrs r5, r0, 16\n\
- cmp r5, 0x7\n\
- bls _080F7DE4\n\
- movs r5, 0\n\
- ldr r2, _080F7E88 @ =gSaveBlock1 + 0x2D94\n\
- adds r2, 0x4\n\
- mov r9, r2\n\
- adds r6, r1, 0\n\
-_080F7DFC:\n\
- bl Random\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- adds r4, r5, 0x1\n\
- adds r1, r4, 0\n\
- bl __modsi3\n\
- lsls r0, 16\n\
- lsrs r1, r0, 16\n\
- adds r2, r6, r5\n\
- ldrb r7, [r2]\n\
- adds r1, r6, r1\n\
- ldrb r0, [r1]\n\
- strb r0, [r2]\n\
- strb r7, [r1]\n\
- lsls r4, 16\n\
- lsrs r5, r4, 16\n\
- cmp r5, 0x7\n\
- bls _080F7DFC\n\
- movs r3, 0\n\
- mov r10, r3\n\
- movs r5, 0\n\
-_080F7E2A:\n\
- lsls r4, r5, 2\n\
- mov r1, sp\n\
- adds r0, r1, r4\n\
- ldrb r0, [r0]\n\
- bl sub_80EAE88\n\
- add r4, r8\n\
- strh r0, [r4]\n\
- add r0, r10\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- mov r10, r0\n\
- adds r0, r5, 0x1\n\
- lsls r0, 16\n\
- lsrs r5, r0, 16\n\
- cmp r5, 0x5\n\
- bls _080F7E2A\n\
- movs r0, 0\n\
- ldr r2, _080F7E88 @ =gSaveBlock1 + 0x2D94\n\
- strb r0, [r2, 0x2]\n\
- movs r7, 0\n\
- movs r5, 0\n\
-_080F7E56:\n\
- bl Random\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- movs r1, 0xA\n\
- bl __umodsi3\n\
- lsls r0, 16\n\
- lsrs r1, r0, 16\n\
- cmp r1, 0x2\n\
- bhi _080F7E90\n\
- cmp r7, 0x7\n\
- bhi _080F7E90\n\
- lsls r0, r5, 1\n\
- add r0, r9\n\
- ldr r1, _080F7E8C @ =0x0000ffff\n\
- strh r1, [r0]\n\
- adds r0, r7, 0x1\n\
- lsls r0, 16\n\
- lsrs r7, r0, 16\n\
- adds r4, r5, 0x1\n\
- b _080F7EE2\n\
- .align 2, 0\n\
-_080F7E84: .4byte gUnknown_083E53C8\n\
-_080F7E88: .4byte gSaveBlock1 + 0x2D94\n\
-_080F7E8C: .4byte 0x0000ffff\n\
-_080F7E90:\n\
- bl Random\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- mov r1, r10\n\
- bl __umodsi3\n\
- lsls r0, 16\n\
- lsrs r2, r0, 16\n\
- movs r1, 0\n\
- adds r4, r5, 0x1\n\
- lsls r6, r5, 1\n\
- cmp r5, 0x5\n\
- bhi _080F7ECC\n\
- mov r3, r8\n\
- ldrh r0, [r3]\n\
- b _080F7EC2\n\
-_080F7EB2:\n\
- adds r0, r1, 0x1\n\
- lsls r0, 16\n\
- lsrs r1, r0, 16\n\
- cmp r5, 0x5\n\
- bhi _080F7ECC\n\
- lsls r0, r1, 2\n\
- adds r0, r3, r0\n\
- ldrh r0, [r0]\n\
-_080F7EC2:\n\
- subs r0, r2, r0\n\
- lsls r0, 16\n\
- lsrs r2, r0, 16\n\
- cmp r0, 0\n\
- bgt _080F7EB2\n\
-_080F7ECC:\n\
- cmp r1, 0x6\n\
- bne _080F7ED2\n\
- movs r1, 0\n\
-_080F7ED2:\n\
- lsls r0, r1, 2\n\
- add r0, sp\n\
- ldrh r0, [r0]\n\
- bl sub_80EB784\n\
- mov r2, r9\n\
- adds r1, r2, r6\n\
- strh r0, [r1]\n\
-_080F7EE2:\n\
- lsls r0, r4, 16\n\
- lsrs r5, r0, 16\n\
- cmp r5, 0x9\n\
- bls _080F7E56\n\
- add sp, 0x18\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .syntax divided\n");
-}
-#endif
static void sub_80F7EFC(void)
{
@@ -890,7 +689,7 @@ static void Task_BardSong(u8 taskId)
{
case 0: // Initialize song
PrepareSongText();
- Text_InitWindowWithTemplate(gMenuWindowPtr, &gWindowTemplate_81E6CE4);
+ Text_InitWindowWithTemplate(gMenuWindowPtr, &gMenuTextWindowTemplate);
Text_InitWindow8002EB0(gMenuWindowPtr, gStringVar4, 2, 4, 15);
task->data[1] = 0;
task->data[2] = 0;
@@ -946,7 +745,7 @@ static void Task_BardSong(u8 taskId)
case 3:
if (gStringVar4[task->tCharIndex] == EOS)
{
- FadeInNewBGM(BGM_POKECEN, 6);
+ FadeInNewBGM(MUS_POKECEN, 6);
m4aMPlayFadeOutTemporarily(&gMPlay_SE2, 2);
EnableBothScriptContexts();
DestroyTask(taskId);
@@ -1007,7 +806,7 @@ static void Task_BardSong(u8 taskId)
void sub_80F83D0(void)
{
- VarSet(VAR_OBJ_GFX_ID_0, MAP_OBJ_GFX_BARD + GetCurrentMauvilleOldMan());
+ VarSet(VAR_OBJ_GFX_ID_0, EVENT_OBJ_GFX_BARD + GetCurrentMauvilleOldMan());
}
struct Story
diff --git a/src/menu.c b/src/menu.c
index 86e20d0eb..891644750 100644
--- a/src/menu.c
+++ b/src/menu.c
@@ -1,7 +1,7 @@
#include "global.h"
#include "menu.h"
#include "main.h"
-#include "map_obj_lock.h"
+#include "event_obj_lock.h"
#include "menu_cursor.h"
#include "script.h"
#include "constants/songs.h"
@@ -54,7 +54,7 @@ void CloseMenu(void)
{
PlaySE(SE_SELECT);
Menu_EraseScreen();
- sub_8064E2C();
+ ScriptUnfreezeEventObjects();
ScriptContext2_Disable();
Menu_DestroyCursor();
}
@@ -441,7 +441,7 @@ static u8 sub_80724F4(u8 left, u8 top, u8 menuItemCount, const struct MenuAction
maxWidth = 0;
for (i = 0; i < menuItemCount; i++)
{
- u8 width = (sub_8072CA4(menuItems[i].text) + 7) / 8;
+ u8 width = (GetStringWidthInMenuWindow(menuItems[i].text) + 7) / 8;
if (width > maxWidth)
maxWidth = width;
@@ -498,7 +498,7 @@ static void sub_8072620(u8 left, u8 top, u8 menuItemCount, const struct MenuActi
maxWidth = 0;
for (i = 0; i < menuItemCount; i++)
{
- u8 width = (sub_8072CA4(menuItems[i].text) + 7) / 8;
+ u8 width = (GetStringWidthInMenuWindow(menuItems[i].text) + 7) / 8;
if (width > maxWidth)
maxWidth = width;
@@ -581,20 +581,20 @@ u8 Menu_GetColumnXCoord(u8 column)
return gMenu.columnXCoords[column];
}
-void Menu_PrintItems(u8 left, u8 top, u8 menuItemCount, const struct MenuAction menuItems[])
+void Menu_PrintItems(u8 left, u8 top, u8 menuItemCount, const void * menuItems)
{
u8 i;
for (i = 0; i < menuItemCount; i++)
- Menu_PrintText(menuItems[i].text, left, top + 2 * i);
+ Menu_PrintText(((const struct MenuAction *)menuItems)[i].text, left, top + 2 * i);
}
-void Menu_PrintItemsReordered(u8 left, u8 top, u8 menuItemCount, const struct MenuAction2 menuItems[], const u8 *order)
+void Menu_PrintItemsReordered(u8 left, u8 top, u8 menuItemCount, const void * menuItems, const u8 *order)
{
u8 i;
for (i = 0; i < menuItemCount; i++)
- Menu_PrintText(menuItems[order[i]].text, left, top + 2 * i);
+ Menu_PrintText(((const struct MenuAction *)menuItems)[order[i]].text, left, top + 2 * i);
}
void InitYesNoMenu(u8 left, u8 top, u8 a3)
@@ -644,7 +644,7 @@ int sub_8072AB0(const u8 *str, u8 left, u16 top, u8 width, u8 height, u32 a6)
Menu_BlankWindowRect(left, top + 2 * newlineCount, left + width - 1, height + top - 1);
}
#elif GERMAN
-__attribute__((naked))
+NAKED
int sub_8072AB0(const u8 *str, u8 left, u16 top, u8 width, u8 height, u32 a6)
{
asm(".syntax unified\n\
@@ -733,11 +733,11 @@ void MenuPrint_RightAligned(const u8 *str, u8 left, u8 top)
Text_InitWindow8004D38(gMenuWindowPtr, str, gMenuTextTileOffset, left, top);
}
-void sub_8072B80(const u8 *a1, u8 a2, u8 a3, const u8 *a4)
+void sub_8072B80(const u8 *src, u8 a2, u8 a3, const u8 *a4)
{
u8 buffer[64];
u8 width = GetStringWidth(gMenuWindowPtr, a4);
- AlignString(gMenuWindowPtr, buffer, a1, width, 1);
+ AlignString(gMenuWindowPtr, buffer, src, width, 1);
Text_InitWindowAndPrintText(gMenuWindowPtr, buffer, gMenuTextTileOffset, a2, a3);
}
@@ -746,22 +746,22 @@ void sub_8072BD8(const u8 *a1, u8 a2, u8 a3, u16 a4)
Text_InitWindow8004DB0(gMenuWindowPtr, a1, gMenuTextTileOffset, a2, a3, a4);
}
-u8 *sub_8072C14(u8 *a1, s32 a2, u8 a3, u8 a4)
+u8 *AlignInt1InMenuWindow(u8 *dest, s32 value, u8 alignAmount, u8 alignType)
{
- return AlignInt1(gMenuWindowPtr, a1, a2, a3, a4);
+ return AlignInt1(gMenuWindowPtr, dest, value, alignAmount, alignType);
}
-u8 *sub_8072C44(u8 *a1, s32 a2, u8 a3, u8 a4)
+u8 *AlignInt2InMenuWindow(u8 *dest, s32 value, u8 alignAmount, u8 alignType)
{
- return AlignInt2(gMenuWindowPtr, a1, a2, a3, a4);
+ return AlignInt2(gMenuWindowPtr, dest, value, alignAmount, alignType);
}
-u8 *sub_8072C74(u8 *a1, const u8 *a2, u8 a3, u8 a4)
+u8 *AlignStringInMenuWindow(u8 *dest, const u8 *src, u8 alignAmount, u8 alignType)
{
- return AlignString(gMenuWindowPtr, a1, a2, a3, a4);
+ return AlignString(gMenuWindowPtr, dest, src, alignAmount, alignType);
}
-u8 sub_8072CA4(const u8 *str)
+u8 GetStringWidthInMenuWindow(const u8 *str)
{
return GetStringWidth(gMenuWindowPtr, str);
}
diff --git a/src/menu_cursor.c b/src/menu_cursor.c
index f2eb31f16..32578d1a4 100644
--- a/src/menu_cursor.c
+++ b/src/menu_cursor.c
@@ -236,7 +236,7 @@ void sub_814A958(u8 a)
SetSubspriteTables(&gSprites[gUnknown_0203A3D1], gSubspriteTables_842F5C0 + r7);
}
#else
-__attribute__((naked))
+NAKED
void sub_814A958(u8 a1)
{
asm(".syntax unified\n\
@@ -419,7 +419,7 @@ _0814AAB8: .4byte gUnknown_0203A3D1\n\
}
#endif
#elif GERMAN
-__attribute__((naked))
+NAKED
void sub_814A958(u8 a1)
{
asm(".syntax unified\n\
diff --git a/src/metatile_behavior.c b/src/metatile_behavior.c
index d05ba0b89..67509da7c 100644
--- a/src/metatile_behavior.c
+++ b/src/metatile_behavior.c
@@ -1,857 +1,888 @@
#include "global.h"
#include "metatile_behavior.h"
-#include "metatile_behaviors.h"
+#include "constants/metatile_behaviors.h"
-#define TILE_ATTRIBUTES(three, two, one) (((one) ? 1 : 0) | ((two) ? 2 : 0) | ((three) ? 4 : 0))
+#define TILE_ATTRIBUTES(unused, surfable, wildEncounter) (((wildEncounter) ? 1 : 0) | ((surfable) ? 2 : 0) | ((unused) ? 4 : 0))
static const u8 sTileBitAttributes[] =
{
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, TRUE),
- TILE_ATTRIBUTES(TRUE, FALSE, TRUE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, TRUE),
- TILE_ATTRIBUTES(TRUE, FALSE, TRUE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, TRUE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, TRUE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, TRUE, TRUE),
- TILE_ATTRIBUTES(TRUE, TRUE, TRUE),
- TILE_ATTRIBUTES(TRUE, TRUE, TRUE),
- TILE_ATTRIBUTES(TRUE, TRUE, FALSE),
- TILE_ATTRIBUTES(TRUE, TRUE, FALSE),
- TILE_ATTRIBUTES(TRUE, TRUE, TRUE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, TRUE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, TRUE, TRUE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, TRUE),
- TILE_ATTRIBUTES(TRUE, FALSE, TRUE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, TRUE, TRUE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, TRUE, FALSE),
- TILE_ATTRIBUTES(TRUE, TRUE, FALSE),
- TILE_ATTRIBUTES(TRUE, TRUE, FALSE),
- TILE_ATTRIBUTES(TRUE, TRUE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, TRUE, FALSE),
- TILE_ATTRIBUTES(TRUE, TRUE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, TRUE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE)
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_NORMAL
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_WALL
+ TILE_ATTRIBUTES(TRUE, FALSE, TRUE), // MB_TALL_GRASS
+ TILE_ATTRIBUTES(TRUE, FALSE, TRUE), // MB_LONG_GRASS
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_04
+ TILE_ATTRIBUTES(FALSE, FALSE, TRUE), // MB_UNUSED_05
+ TILE_ATTRIBUTES(TRUE, FALSE, TRUE), // MB_UNUSED_DEEP_SAND
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SHORT_GRASS
+ TILE_ATTRIBUTES(TRUE, FALSE, TRUE), // MB_UNUSED_CAVE
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_LONG_GRASS_SOUTH_EDGE
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_NO_RUNNING
+ TILE_ATTRIBUTES(TRUE, FALSE, TRUE), // MB_INDOOR_ENCOUNTER
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_MOUNTAIN_TOP
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_GLITTER_MATTTLE_PYRAMID_WARP
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_MOSSDEEP_GYM_WARP
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_MT_PYRE_HOLE
+ TILE_ATTRIBUTES(TRUE, TRUE, TRUE), // MB_POND_WATER
+ TILE_ATTRIBUTES(TRUE, TRUE, TRUE), // MB_SEMI_DEEP_WATER
+ TILE_ATTRIBUTES(TRUE, TRUE, TRUE), // MB_UNUSED_DEEP_WATER
+ TILE_ATTRIBUTES(TRUE, TRUE, FALSE), // MB_WATERFALL
+ TILE_ATTRIBUTES(TRUE, TRUE, FALSE), // MB_SOOTOPOLIS_DEEP_WATER
+ TILE_ATTRIBUTES(TRUE, TRUE, TRUE), // MB_OCEAN_WATER
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_PUDDLE
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SHALLOW_WATER
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_SOOTOPOLIS_DEEP_WATER
+ TILE_ATTRIBUTES(TRUE, TRUE, FALSE), // MB_NO_SURFACING
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_SOOTOPOLIS_DEEP_WATER_2
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_STAIRS_OUTSIDE_ABANDONED_SHIP
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SHOAL_CAVE_ENTRANCE
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_1D
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_1E
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_1F
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_ICE
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SAND
+ TILE_ATTRIBUTES(TRUE, TRUE, TRUE), // MB_SEAWEED
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_UNUSED_23
+ TILE_ATTRIBUTES(TRUE, FALSE, TRUE), // MB_ASHGRASS
+ TILE_ATTRIBUTES(TRUE, FALSE, TRUE), // MB_FOOTPRINTS
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_THIN_ICE
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_CRACKED_ICE
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_HOT_SPRINGS
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_LAVARIDGE_GYM_B1F_WARP
+ TILE_ATTRIBUTES(TRUE, TRUE, TRUE), // MB_SEAWEED_NO_SURFACING
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_REFLECTION_UNDER_BRIDGE
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_2C
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_2D
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_2E
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_2F
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_IMPASSABLE_EAST
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_IMPASSABLE_WEST
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_IMPASSABLE_NORTH
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_IMPASSABLE_SOUTH
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_IMPASSABLE_NORTHEAST
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_IMPASSABLE_NORTHWEST
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_IMPASSABLE_SOUTHEAST
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_IMPASSABLE_SOUTHWEST
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_JUMP_EAST
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_JUMP_WEST
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_JUMP_NORTH
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_JUMP_SOUTH
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_JUMP_NORTHEAST
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_JUMP_NORTHWEST
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_JUMP_SOUTHEAST
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_JUMP_SOUTHWEST
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_WALK_EAST
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_WALK_WEST
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_WALK_NORTH
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_WALK_SOUTH
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SLIDE_EAST
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SLIDE_WEST
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SLIDE_NORTH
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SLIDE_SOUTH
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_TRICK_HOUSE_PUZZLE_8_FLOOR
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_UNUSED_49
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_UNUSED_4A
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_4B
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_4C
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_4D
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_4E
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_4F
+ TILE_ATTRIBUTES(TRUE, TRUE, FALSE), // MB_UNUSED_EASTWARD_CURRENT
+ TILE_ATTRIBUTES(TRUE, TRUE, FALSE), // MB_WESTWARD_CURRENT
+ TILE_ATTRIBUTES(TRUE, TRUE, FALSE), // MB_NORTHWARD_CURRENT
+ TILE_ATTRIBUTES(TRUE, TRUE, FALSE), // MB_SOUTHWARD_CURRENT
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_54
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_55
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_56
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_57
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_58
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_59
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_5A
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_5B
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_5C
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_5D
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_5E
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_5F
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_NON_ANIMATED_DOOR
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_LADDER
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_UNUSED_EAST_ARROW_WARP
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_WEST_ARROW_WARP
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_NORTH_ARROW_WARP
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SOUTH_ARROW_WARP
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_CRACKED_FLOOR_HOLE
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_AQUA_HIDEOUT_WARP
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_LAVARIDGE_GYM_1F_WARP
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_ANIMATED_DOOR
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_UP_ESCALATOR
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_DOWN_ESCALATOR
+ TILE_ATTRIBUTES(TRUE, TRUE, FALSE), // MB_WATER_DOOR
+ TILE_ATTRIBUTES(TRUE, TRUE, FALSE), // MB_WATER_SOUTH_ARROW_WARP
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_UNUSED_DEEP_SOUTH_WARP
+ TILE_ATTRIBUTES(TRUE, TRUE, FALSE), // MB_UNUSED_6F
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_WARP_OR_BRIDGE
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_UNUSED_71
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_ROUTE120_NORTH_BRIDGE_1
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_ROUTE120_NORTH_BRIDGE_2
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_PACIFIDLOG_VERTICAL_LOG_1
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_PACIFIDLOG_VERTICAL_LOG_2
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_PACIFIDLOG_HORIZONTAL_LOG_1
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_PACIFIDLOG_HORIZONTAL_LOG_2
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_FORTREE_BRIDGE
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_79
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_ROUTE120_SOUTH_BRIDGE_1
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_ROUTE120_SOUTH_BRIDGE_2
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_ROUTE120_NORTH_BRIDGE_3
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_ROUTE120_NORTH_BRIDGE_4
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_7E
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_ROUTE110_BRIDGE
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_COUNTER
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_81
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_82
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_PC
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_LINK_BATTLE_RECORDS
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_REGION_MAP
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_TELEVISION
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_POKEBLOCK_FEEDER
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_88
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SLOT_MACHINE
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_ROULETTE
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_CLOSED_SOOTOPOLIS_DOOR
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_TRICK_HOUSE_PUZZLE_DOOR
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_PETALBURG_GYM_DOOR
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_RUNNING_SHOES_MANUAL
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_QUESTIONNAIRE
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_RED_CAVE
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_RED_CAVE_OPEN
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_BROWN_CAVE
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_BROWN_CAVE_OPEN
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_YELLOW_CAVE
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_YELLOW_CAVE_OPEN
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_TREE_1
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_TREE_1_OPEN
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_SHRUB
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_SHRUB_OPEN
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_BLUE_CAVE
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_BLUE_CAVE_OPEN
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_TREE_2
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_TREE_2_OPEN
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_9E
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_9F
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_BERRY_TREE_SOIL
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_A1
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_A2
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_A3
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_A4
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_A5
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_A6
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_A7
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_A8
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_A9
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_AA
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_AB
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_AC
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_AD
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_AE
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_AF
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_PC
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_RECORD_MIXING_SECRET_BASE_PC
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SECRET_BASE_UNUSED
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_BLOCK_DECORATION
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_DECORATION
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SECRET_BASE_LARGE_MAT_EDGE
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_B6
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_NORTH_WALL
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SECRET_BASE_BALLOON
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SECRET_BASE_IMPASSABLE
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SECRET_BASE_GLITTER_MAT
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SECRET_BASE_JUMP_MAT
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SECRET_BASE_SPIN_MAT
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SECRET_BASE_MUSIC_NOTE_MAT
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SECRET_BASE_BREAKABLE_DOOR
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SAND_ORNAMENT
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_IMPASSABLE_SOUTH_AND_NORTH
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_IMPASSABLE_WEST_AND_EAST
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SECRET_BASE_HOLE
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_LARGE_MAT_CENTER
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SECRET_BASE_SHIELD_OR_TOY_TV
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_PLAYER_ROOM_PC_ON
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_C6
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_C7
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_C8
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_C9
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_CA
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_CB
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_CC
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_CD
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_CE
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_CF
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_MUDDY_SLOPE
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_BUMPY_SLOPE
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_CRACKED_FLOOR
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_ISOLATED_VERTICAL_RAIL
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_ISOLATED_HORIZONTAL_RAIL
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_VERTICAL_RAIL
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_HORIZONTAL_RAIL
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_D7
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_D8
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_D9
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_DA
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_DB
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_DC
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_DD
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_DE
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_DF
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_PICTURE_BOOK_SHELF
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_BOOKSHELF
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_POKEMON_CENTER_BOOKSHELF
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_VASE
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_TRASH_CAN
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SHOP_SHELF
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_BLUEPRINT
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_E7
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_E8
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_E9
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_EA
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_EB
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_EC
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_ED
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_EE
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE) // MB_UNUSED_EF
};
// only used as default case for checking jump landing in field_ground_effect.
-bool8 MetatileBehavior_IsATile(u8 var)
+bool8 MetatileBehavior_IsATile(u8 metatileBehavior)
{
return TRUE;
}
-bool8 MetatileBehavior_IsEncounterTile(u8 var)
+bool8 MetatileBehavior_IsEncounterTile(u8 metatileBehavior)
{
- if ((sTileBitAttributes[var] & 1) != 0)
+ if (sTileBitAttributes[metatileBehavior] & 1)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsJumpEast(u8 var)
+bool8 MetatileBehavior_IsJumpEast(u8 metatileBehavior)
{
- if (var == MB_JUMP_EAST)
+ if (metatileBehavior == MB_JUMP_EAST)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsJumpWest(u8 var)
+bool8 MetatileBehavior_IsJumpWest(u8 metatileBehavior)
{
- if (var == MB_JUMP_WEST)
+ if (metatileBehavior == MB_JUMP_WEST)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsJumpNorth(u8 var)
+bool8 MetatileBehavior_IsJumpNorth(u8 metatileBehavior)
{
- if (var == MB_JUMP_NORTH)
+ if (metatileBehavior == MB_JUMP_NORTH)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsJumpSouth(u8 var)
+bool8 MetatileBehavior_IsJumpSouth(u8 metatileBehavior)
{
- if (var == MB_JUMP_SOUTH)
+ if (metatileBehavior == MB_JUMP_SOUTH)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsPokeGrass(u8 var)
+bool8 MetatileBehavior_IsPokeGrass(u8 metatileBehavior)
{
- if (var == MB_TALL_GRASS || var == MB_LONG_GRASS)
+ if (metatileBehavior == MB_TALL_GRASS || metatileBehavior == MB_LONG_GRASS)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsSandOrDeepSand(u8 var)
+bool8 MetatileBehavior_IsSandOrDeepSand(u8 metatileBehavior)
{
- if (var == MB_SAND || var == MB_DEEP_SAND)
+ if (metatileBehavior == MB_SAND || metatileBehavior == MB_UNUSED_DEEP_SAND)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsDeepSand(u8 var)
+bool8 MetatileBehavior_IsDeepSand(u8 metatileBehavior)
{
- if (var == MB_DEEP_SAND)
+ if (metatileBehavior == MB_UNUSED_DEEP_SAND)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsReflective(u8 var)
+bool8 MetatileBehavior_IsReflective(u8 metatileBehavior)
{
- if (var == MB_POND_WATER || var == MB_PUDDLE || var == MB_1A || var == MB_ICE || var == MB_SOOTOPOLIS_DEEP_WATER || var == MB_REFLECTION_UNDER_BRIDGE)
+ if (metatileBehavior == MB_POND_WATER
+ || metatileBehavior == MB_PUDDLE
+ || metatileBehavior == MB_UNUSED_SOOTOPOLIS_DEEP_WATER_2
+ || metatileBehavior == MB_ICE
+ || metatileBehavior == MB_SOOTOPOLIS_DEEP_WATER
+ || metatileBehavior == MB_REFLECTION_UNDER_BRIDGE)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsIce(u8 var)
+bool8 MetatileBehavior_IsIce(u8 metatileBehavior)
{
- if (var == MB_ICE)
+ if (metatileBehavior == MB_ICE)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsWarpDoor(u8 var)
+bool8 MetatileBehavior_IsWarpDoor(u8 metatileBehavior)
{
- if (var == MB_ANIMATED_DOOR)
+ if (metatileBehavior == MB_ANIMATED_DOOR)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsDoor(u8 var)
+bool8 MetatileBehavior_IsDoor(u8 metatileBehavior)
{
- if (var == MB_8D || var == MB_ANIMATED_DOOR)
+ if (metatileBehavior == MB_PETALBURG_GYM_DOOR
+ || metatileBehavior == MB_ANIMATED_DOOR)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsEscalator(u8 var)
+bool8 MetatileBehavior_IsEscalator(u8 metatileBehavior)
{
- if (var == MB_UP_ESCALATOR || var == MB_DOWN_ESCALATOR)
+ if (metatileBehavior == MB_UP_ESCALATOR
+ || metatileBehavior == MB_DOWN_ESCALATOR)
return TRUE;
else
return FALSE;
}
-bool8 unref_sub_8056EE0(u8 var)
+bool8 Unref_MetatileBehavior_IsUnused04(u8 metatileBehavior)
{
- if (var == MB_04)
+ if (metatileBehavior == MB_UNUSED_04)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsLadder(u8 var)
+bool8 MetatileBehavior_IsLadder(u8 metatileBehavior)
{
- if (var == MB_LADDER)
+ if (metatileBehavior == MB_LADDER)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsNonAnimDoor(u8 var)
+bool8 MetatileBehavior_IsNonAnimDoor(u8 metatileBehavior)
{
- if (var == MB_NON_ANIMATED_DOOR || var == MB_WATER_DOOR || var == MB_DEEP_SOUTH_WARP)
+ if (metatileBehavior == MB_NON_ANIMATED_DOOR
+ || metatileBehavior == MB_WATER_DOOR
+ || metatileBehavior == MB_UNUSED_DEEP_SOUTH_WARP)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsDeepSouthWarp(u8 var)
+bool8 MetatileBehavior_IsDeepSouthWarp(u8 metatileBehavior)
{
- if (var == MB_DEEP_SOUTH_WARP)
+ if (metatileBehavior == MB_UNUSED_DEEP_SOUTH_WARP)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsSurfableWaterOrUnderwater(u8 var)
+bool8 MetatileBehavior_IsSurfableWaterOrUnderwater(u8 metatileBehavior)
{
- if ((sTileBitAttributes[var] & 2) != 0)
+ if ((sTileBitAttributes[metatileBehavior] & 2) != 0)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsEastArrowWarp(u8 var)
+bool8 MetatileBehavior_IsEastArrowWarp(u8 metatileBehavior)
{
- if (var == MB_EAST_ARROW_WARP)
+ if (metatileBehavior == MB_UNUSED_EAST_ARROW_WARP)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsWestArrowWarp(u8 var)
+bool8 MetatileBehavior_IsWestArrowWarp(u8 metatileBehavior)
{
- if (var == MB_WEST_ARROW_WARP)
+ if (metatileBehavior == MB_WEST_ARROW_WARP)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsNorthArrowWarp(u8 var)
+bool8 MetatileBehavior_IsNorthArrowWarp(u8 metatileBehavior)
{
- if (var == MB_NORTH_ARROW_WARP || var == MB_STAIRS_OUTSIDE_ABANDONED_SHIP)
+ if (metatileBehavior == MB_NORTH_ARROW_WARP
+ || metatileBehavior == MB_STAIRS_OUTSIDE_ABANDONED_SHIP)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsSouthArrowWarp(u8 var)
+bool8 MetatileBehavior_IsSouthArrowWarp(u8 metatileBehavior)
{
- if (var == MB_SOUTH_ARROW_WARP || var == MB_WATER_SOUTH_ARROW_WARP || var == MB_SHOAL_CAVE_ENTRANCE)
+ if (metatileBehavior == MB_SOUTH_ARROW_WARP
+ || metatileBehavior == MB_WATER_SOUTH_ARROW_WARP
+ || metatileBehavior == MB_SHOAL_CAVE_ENTRANCE)
return TRUE;
else
return FALSE;
}
-// unused
-bool8 MetatileBehavior_IsArrowWarp(u8 var)
+bool8 Unref_MetatileBehavior_IsArrowWarp(u8 metatileBehavior)
{
- u8 var2 = 0;
+ u8 isArrowWarp = FALSE;
- if (MetatileBehavior_IsEastArrowWarp(var)
- || MetatileBehavior_IsWestArrowWarp(var)
- || MetatileBehavior_IsNorthArrowWarp(var)
- || MetatileBehavior_IsSouthArrowWarp(var))
+ if (MetatileBehavior_IsEastArrowWarp(metatileBehavior)
+ || MetatileBehavior_IsWestArrowWarp(metatileBehavior)
+ || MetatileBehavior_IsNorthArrowWarp(metatileBehavior)
+ || MetatileBehavior_IsSouthArrowWarp(metatileBehavior))
{
- var2 = 1;
+ isArrowWarp = TRUE;
}
- return var2;
+
+ return isArrowWarp;
}
-bool8 MetatileBehavior_IsMoveTile(u8 var)
+bool8 MetatileBehavior_IsForcedMovementTile(u8 metatileBehavior)
{
- if ((var >= MB_WALK_EAST && var <= MB_TRICK_HOUSE_PUZZLE_8_FLOOR) || (var >= MB_EASTWARD_CURRENT && var <= MB_SOUTHWARD_CURRENT)
- || var == MB_MUDDY_SLOPE || var == MB_CRACKED_FLOOR || var == MB_WATERFALL || var == MB_ICE || var == MB_BB || var == MB_BC)
+ if ((metatileBehavior >= MB_WALK_EAST && metatileBehavior <= MB_TRICK_HOUSE_PUZZLE_8_FLOOR)
+ || (metatileBehavior >= MB_UNUSED_EASTWARD_CURRENT && metatileBehavior <= MB_SOUTHWARD_CURRENT)
+ || metatileBehavior == MB_MUDDY_SLOPE
+ || metatileBehavior == MB_CRACKED_FLOOR
+ || metatileBehavior == MB_WATERFALL
+ || metatileBehavior == MB_ICE
+ || metatileBehavior == MB_SECRET_BASE_JUMP_MAT
+ || metatileBehavior == MB_SECRET_BASE_SPIN_MAT)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsIce_2(u8 var)
+bool8 MetatileBehavior_IsIce_2(u8 metatileBehavior)
{
- if (var == MB_ICE)
+ if (metatileBehavior == MB_ICE)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsTrickHouseSlipperyFloor(u8 var)
+bool8 MetatileBehavior_IsTrickHouseSlipperyFloor(u8 metatileBehavior)
{
- if (var == MB_TRICK_HOUSE_PUZZLE_8_FLOOR)
+ if (metatileBehavior == MB_TRICK_HOUSE_PUZZLE_8_FLOOR)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_0x05(u8 var)
+bool8 Unref_MetatileBehavior_IsUnused05(u8 metatileBehavior)
{
- if (var == MB_05)
+ if (metatileBehavior == MB_UNUSED_05)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsWalkNorth(u8 var)
+bool8 MetatileBehavior_IsWalkNorth(u8 metatileBehavior)
{
- if (var == MB_WALK_NORTH)
+ if (metatileBehavior == MB_WALK_NORTH)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsWalkSouth(u8 var)
+bool8 MetatileBehavior_IsWalkSouth(u8 metatileBehavior)
{
- if (var == MB_WALK_SOUTH)
+ if (metatileBehavior == MB_WALK_SOUTH)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsWalkWest(u8 var)
+bool8 MetatileBehavior_IsWalkWest(u8 metatileBehavior)
{
- if (var == MB_WALK_WEST)
+ if (metatileBehavior == MB_WALK_WEST)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsWalkEast(u8 var)
+bool8 MetatileBehavior_IsWalkEast(u8 metatileBehavior)
{
- if (var == MB_WALK_EAST)
+ if (metatileBehavior == MB_WALK_EAST)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsNorthwardCurrent(u8 var)
+bool8 MetatileBehavior_IsNorthwardCurrent(u8 metatileBehavior)
{
- if (var == MB_NORTHWARD_CURRENT)
+ if (metatileBehavior == MB_NORTHWARD_CURRENT)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsSouthwardCurrent(u8 var)
+bool8 MetatileBehavior_IsSouthwardCurrent(u8 metatileBehavior)
{
- if (var == MB_SOUTHWARD_CURRENT)
+ if (metatileBehavior == MB_SOUTHWARD_CURRENT)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsWestwardCurrent(u8 var)
+bool8 MetatileBehavior_IsWestwardCurrent(u8 metatileBehavior)
{
- if (var == MB_WESTWARD_CURRENT)
+ if (metatileBehavior == MB_WESTWARD_CURRENT)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsEastwardCurrent(u8 var)
+bool8 MetatileBehavior_IsEastwardCurrent(u8 metatileBehavior)
{
- if (var == MB_EASTWARD_CURRENT)
+ if (metatileBehavior == MB_UNUSED_EASTWARD_CURRENT)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsSlideNorth(u8 var)
+bool8 MetatileBehavior_IsSlideNorth(u8 metatileBehavior)
{
- if (var == MB_SLIDE_NORTH)
+ if (metatileBehavior == MB_SLIDE_NORTH)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsSlideSouth(u8 var)
+bool8 MetatileBehavior_IsSlideSouth(u8 metatileBehavior)
{
- if (var == MB_SLIDE_SOUTH)
+ if (metatileBehavior == MB_SLIDE_SOUTH)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsSlideWest(u8 var)
+bool8 MetatileBehavior_IsSlideWest(u8 metatileBehavior)
{
- if (var == MB_SLIDE_WEST)
+ if (metatileBehavior == MB_SLIDE_WEST)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsSlideEast(u8 var)
+bool8 MetatileBehavior_IsSlideEast(u8 metatileBehavior)
{
- if (var == MB_SLIDE_EAST)
+ if (metatileBehavior == MB_SLIDE_EAST)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsCounter(u8 var)
+bool8 MetatileBehavior_IsCounter(u8 metatileBehavior)
{
- if (var == MB_COUNTER)
+ if (metatileBehavior == MB_COUNTER)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsPlayerFacingTVScreen(u8 tile, u8 playerDir)
+bool8 MetatileBehavior_IsPlayerFacingTVScreen(u8 metatileBehavior, u8 playerDir)
{
- if (playerDir != CONNECTION_NORTH) // if the player isn't facing north, forget about it.
+ if (playerDir != DIR_NORTH)
return FALSE;
- else if (tile == MB_TELEVISION) // is the player's north tile a TV?
+ else if (metatileBehavior == MB_TELEVISION)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsPC(u8 var)
+bool8 MetatileBehavior_IsPC(u8 metatileBehavior)
{
- if (var == MB_PC)
+ if (metatileBehavior == MB_PC)
return TRUE;
else
return FALSE;
}
-bool8 is_tile_x84(u8 var)
+bool8 MetatileBehavior_IsLinkBattleRecords(u8 metatileBehavior)
{
- if (var == MB_84)
+ if (metatileBehavior == MB_LINK_BATTLE_RECORDS)
return TRUE;
else
return FALSE;
}
-bool8 sub_80571C0(u8 var)
+bool8 MetatileBehavior_IsOpenSecretBaseDoor(u8 metatileBehavior)
{
- if (var == MB_91 || var == MB_93 || var == MB_95 || var == MB_97
- || var == MB_99 || var == MB_9B || var == MB_9D)
+ if (metatileBehavior == MB_SECRET_BASE_SPOT_RED_CAVE_OPEN
+ || metatileBehavior == MB_SECRET_BASE_SPOT_BROWN_CAVE_OPEN
+ || metatileBehavior == MB_SECRET_BASE_SPOT_YELLOW_CAVE_OPEN
+ || metatileBehavior == MB_SECRET_BASE_SPOT_TREE_1_OPEN
+ || metatileBehavior == MB_SECRET_BASE_SPOT_SHRUB_OPEN
+ || metatileBehavior == MB_SECRET_BASE_SPOT_BLUE_CAVE_OPEN
+ || metatileBehavior == MB_SECRET_BASE_SPOT_TREE_2_OPEN)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsSecretBaseCave(u8 var)
+bool8 MetatileBehavior_IsSecretBaseCave(u8 metatileBehavior)
{
- if (var == MB_SECRET_BASE_SPOT_RED_CAVE || var == MB_SECRET_BASE_SPOT_BROWN_CAVE || var == MB_SECRET_BASE_SPOT_YELLOW_CAVE || var == MB_SECRET_BASE_SPOT_BLUE_CAVE)
+ if (metatileBehavior == MB_SECRET_BASE_SPOT_RED_CAVE
+ || metatileBehavior == MB_SECRET_BASE_SPOT_BROWN_CAVE
+ || metatileBehavior == MB_SECRET_BASE_SPOT_YELLOW_CAVE
+ || metatileBehavior == MB_SECRET_BASE_SPOT_BLUE_CAVE)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsSecretBaseTree(u8 var)
+bool8 MetatileBehavior_IsSecretBaseTree(u8 metatileBehavior)
{
- if (var == MB_SECRET_BASE_SPOT_TREE_1 || var == MB_SECRET_BASE_SPOT_TREE_2)
+ if (metatileBehavior == MB_SECRET_BASE_SPOT_TREE_1
+ || metatileBehavior == MB_SECRET_BASE_SPOT_TREE_2)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsSecretBaseShrub(u8 var)
+bool8 MetatileBehavior_IsSecretBaseShrub(u8 metatileBehavior)
{
- if (var == MB_SECRET_BASE_SPOT_SHRUB)
+ if (metatileBehavior == MB_SECRET_BASE_SPOT_SHRUB)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsSecretBasePC(u8 var)
+bool8 MetatileBehavior_IsSecretBasePC(u8 metatileBehavior)
{
- if (var == MB_SECRET_BASE_PC)
+ if (metatileBehavior == MB_SECRET_BASE_PC)
return TRUE;
else
return FALSE;
}
-bool8 sub_805724C(u8 var)
+bool8 MetatileBehavior_IsRecordMixingSecretBasePC(u8 metatileBehavior)
{
- if (var == MB_B1)
+ if (metatileBehavior == MB_RECORD_MIXING_SECRET_BASE_PC)
return TRUE;
else
return FALSE;
}
-bool8 unref_sub_8057260(u8 var)
+bool8 Unref_MetatileBehavior_IsSecretBaseUnused_B2(u8 metatileBehavior)
{
- if (var == MB_B2)
+ if (metatileBehavior == MB_SECRET_BASE_UNUSED)
return TRUE;
else
return FALSE;
}
-bool8 sub_8057274(u8 var)
+bool8 MetatileBehavior_IsBlockDecoration(u8 metatileBehavior)
{
- if (var == MB_B3)
+ if (metatileBehavior == MB_BLOCK_DECORATION)
return TRUE;
else
return FALSE;
}
-bool8 sub_8057288(u8 var)
+bool8 MetatileBehavior_IsSecretBaseImpassable(u8 metatileBehavior)
{
- if (var == MB_B9)
+ if (metatileBehavior == MB_SECRET_BASE_IMPASSABLE)
return TRUE;
else
return FALSE;
}
-bool8 sub_805729C(u8 var)
+bool8 MetatileBehavior_IsNormal(u8 metatileBehavior)
{
- if (var == MB_NORMAL)
+ if (metatileBehavior == MB_NORMAL)
return TRUE;
else
return FALSE;
}
-bool8 sub_80572B0(u8 var)
+bool8 MetatileBehavior_IsSecretBaseNorthWall(u8 metatileBehavior)
{
- if (var == MB_B7)
+ if (metatileBehavior == MB_SECRET_BASE_NORTH_WALL)
return TRUE;
else
return FALSE;
}
-bool8 unref_sub_80572C4(u8 var)
+bool8 Unref_MetatileBehavior_IsSecretBaseUnused_B2_2(u8 metatileBehavior)
{
- if (var == MB_B2)
+ if (metatileBehavior == MB_SECRET_BASE_UNUSED)
return TRUE;
else
return FALSE;
}
-bool8 sub_80572D8(u8 var)
+bool8 MetatileBehavior_IsSecretBaseLargeMatEdge(u8 metatileBehavior)
{
- if (var == MB_B5)
+ if (metatileBehavior == MB_SECRET_BASE_LARGE_MAT_EDGE)
return TRUE;
else
return FALSE;
}
-bool8 sub_80572EC(u8 var)
+bool8 MetatileBehavior_IsLargeMatCenter(u8 metatileBehavior)
{
- if (var == MB_C3)
+ if (metatileBehavior == MB_LARGE_MAT_CENTER)
return TRUE;
else
return FALSE;
}
-bool8 sub_8057300(u8 var)
+bool8 MetatileBehavior_IsSecretBaseHole(u8 metatileBehavior)
{
- if (var == MB_C2)
+ if (metatileBehavior == MB_SECRET_BASE_HOLE)
return TRUE;
else
return FALSE;
}
-bool8 sub_8057314(u8 var)
+bool8 MetatileBehavior_IsSecretBaseBalloon(u8 metatileBehavior)
{
- if (var == MB_B8)
+ if (metatileBehavior == MB_SECRET_BASE_BALLOON)
return TRUE;
else
return FALSE;
}
-bool8 sub_8057328(u8 var)
+bool8 MetatileBehavior_IsSecretBaseBreakableDoor(u8 metatileBehavior)
{
- if (var == MB_BE)
+ if (metatileBehavior == MB_SECRET_BASE_BREAKABLE_DOOR)
return TRUE;
else
return FALSE;
}
-bool8 sub_805733C(u8 var)
+bool8 MetatileBehavior_IsSecretBaseMusicNoteMat(u8 metatileBehavior)
{
- if (var == MB_BD)
+ if (metatileBehavior == MB_SECRET_BASE_MUSIC_NOTE_MAT)
return TRUE;
else
return FALSE;
}
-bool8 sub_8057350(u8 var)
+bool8 MetatileBehavior_IsSecretBaseGlitterMat(u8 metatileBehavior)
{
- if (var == MB_BA)
+ if (metatileBehavior == MB_SECRET_BASE_GLITTER_MAT)
return TRUE;
else
return FALSE;
}
-bool8 sub_8057364(u8 var)
+bool8 MetatileBehavior_IsSecretBaseSandOrnament(u8 metatileBehavior)
{
- if (var == MB_BF)
+ if (metatileBehavior == MB_SECRET_BASE_SAND_ORNAMENT)
return TRUE;
else
return FALSE;
}
-bool8 sub_8057378(u8 var)
+bool8 MetatileBehavior_IsSecretBaseShieldOrToyTV(u8 metatileBehavior)
{
- if (var == MB_C4)
+ if (metatileBehavior == MB_SECRET_BASE_SHIELD_OR_TOY_TV)
return TRUE;
else
return FALSE;
}
-bool8 sub_805738C(u8 var)
+bool8 MetatileBehavior_IsPlayerRoomPCOn(u8 metatileBehavior)
{
- if (var == MB_C5)
+ if (metatileBehavior == MB_PLAYER_ROOM_PC_ON)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_HasRipples(u8 var)
+bool8 MetatileBehavior_HasRipples(u8 metatileBehavior)
{
- if (var == MB_POND_WATER || var == MB_PUDDLE || var == MB_SOOTOPOLIS_DEEP_WATER)
+ if (metatileBehavior == MB_POND_WATER
+ || metatileBehavior == MB_PUDDLE
+ || metatileBehavior == MB_SOOTOPOLIS_DEEP_WATER)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsPuddle(u8 var)
+bool8 MetatileBehavior_IsPuddle(u8 metatileBehavior)
{
- if (var == MB_PUDDLE)
+ if (metatileBehavior == MB_PUDDLE)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsTallGrass(u8 var)
+bool8 MetatileBehavior_IsTallGrass(u8 metatileBehavior)
{
- if (var == MB_TALL_GRASS)
+ if (metatileBehavior == MB_TALL_GRASS)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsLongGrass(u8 var)
+bool8 MetatileBehavior_IsLongGrass(u8 metatileBehavior)
{
- if (var == MB_LONG_GRASS)
+ if (metatileBehavior == MB_LONG_GRASS)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsBerryTreeSoil(u8 var)
+bool8 MetatileBehavior_IsBerryTreeSoil(u8 metatileBehavior)
{
- if (var == MB_BERRY_TREE_SOIL)
+ if (metatileBehavior == MB_BERRY_TREE_SOIL)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsAshGrass(u8 var)
+bool8 MetatileBehavior_IsAshGrass(u8 metatileBehavior)
{
- if (var == MB_ASHGRASS)
+ if (metatileBehavior == MB_ASHGRASS)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsUnusedFootprintMetatile(u8 var)
+bool8 MetatileBehavior_IsFootprints(u8 metatileBehavior)
{
- if (var == MB_25)
+ // MB_FOOTPRINTS is not used by any metatiles.
+ if (metatileBehavior == MB_FOOTPRINTS)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsBridge(u8 var)
+bool8 MetatileBehavior_IsBridge(u8 metatileBehavior)
{
- if (var >= MB_WARP_OR_BRIDGE && var <= MB_ROUTE120_NORTH_BRIDGE_2)
+ if (metatileBehavior >= MB_WARP_OR_BRIDGE
+ && metatileBehavior <= MB_ROUTE120_NORTH_BRIDGE_2)
return TRUE;
else
return FALSE;
}
-u8 sub_8057450(u8 var)
+u8 MetatileBehavior_GetBridgeType(u8 metatileBehavior)
{
- u8 result = var - MB_WARP_OR_BRIDGE;
+ u8 result = metatileBehavior - MB_WARP_OR_BRIDGE;
if (result > 3)
result = 0;
@@ -859,449 +890,487 @@ u8 sub_8057450(u8 var)
return result;
}
-bool8 MetatileBehavior_IsLandWildEncounter(u8 var)
+bool8 MetatileBehavior_IsLandWildEncounter(u8 metatileBehavior)
{
- if (MetatileBehavior_IsSurfableWaterOrUnderwater(var) == FALSE && MetatileBehavior_IsEncounterTile(var) == TRUE)
+ if (MetatileBehavior_IsSurfableWaterOrUnderwater(metatileBehavior) == FALSE
+ && MetatileBehavior_IsEncounterTile(metatileBehavior) == TRUE)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsWaterWildEncounter(u8 var)
+bool8 MetatileBehavior_IsWaterWildEncounter(u8 metatileBehavior)
{
- if (MetatileBehavior_IsSurfableWaterOrUnderwater(var) == TRUE && MetatileBehavior_IsEncounterTile(var) == TRUE)
+ if (MetatileBehavior_IsSurfableWaterOrUnderwater(metatileBehavior) == TRUE
+ && MetatileBehavior_IsEncounterTile(metatileBehavior) == TRUE)
return TRUE;
else
return FALSE;
}
-bool8 sub_80574C4(u8 var)
+bool8 MetatileBehavior_IsIndoorEncounter(u8 metatileBehavior)
{
- if (var == MB_0B)
+ if (metatileBehavior == MB_INDOOR_ENCOUNTER)
return TRUE;
else
return FALSE;
}
-bool8 sub_80574D8(u8 var)
+bool8 MetatileBehavior_IsMountainTop(u8 metatileBehavior)
{
- if (var == MB_MOUNTAIN_TOP)
+ if (metatileBehavior == MB_MOUNTAIN_TOP)
return TRUE;
else
return FALSE;
}
-bool8 sub_80574EC(u8 var)
+bool8 MetatileBehavior_IsDiveable(u8 metatileBehavior)
{
- if (var == MB_SEMI_DEEP_WATER || var == MB_DEEP_WATER || var == MB_SOOTOPOLIS_DEEP_WATER)
+ if (metatileBehavior == MB_SEMI_DEEP_WATER
+ || metatileBehavior == MB_UNUSED_DEEP_WATER
+ || metatileBehavior == MB_SOOTOPOLIS_DEEP_WATER)
return TRUE;
else
return FALSE;
}
-bool8 sub_805750C(u8 var)
+bool8 MetatileBehavior_IsNotSurfacable(u8 metatileBehavior)
{
- if (var == MB_NO_SURFACING || var == MB_SEAWEED_NO_SURFACING)
+ if (metatileBehavior == MB_NO_SURFACING
+ || metatileBehavior == MB_SEAWEED_NO_SURFACING)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsShallowFlowingWater(u8 var)
+bool8 MetatileBehavior_IsShallowFlowingWater(u8 metatileBehavior)
{
- if (var == MB_SHALLOW_WATER || var == MB_STAIRS_OUTSIDE_ABANDONED_SHIP || var == MB_SHOAL_CAVE_ENTRANCE)
+ if (metatileBehavior == MB_SHALLOW_WATER
+ || metatileBehavior == MB_STAIRS_OUTSIDE_ABANDONED_SHIP
+ || metatileBehavior == MB_SHOAL_CAVE_ENTRANCE)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsThinIce(u8 var)
+bool8 MetatileBehavior_IsThinIce(u8 metatileBehavior)
{
- if (var == MB_THIN_ICE)
+ if (metatileBehavior == MB_THIN_ICE)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsCrackedIce(u8 var)
+bool8 MetatileBehavior_IsCrackedIce(u8 metatileBehavior)
{
- if (var == MB_CRACKED_ICE)
+ if (metatileBehavior == MB_CRACKED_ICE)
return TRUE;
else
return FALSE;
}
-bool8 sub_8057568(u8 var)
+bool8 MetatileBehavior_IsOceanWater(u8 metatileBehavior)
{
- if (var == MB_OCEAN_WATER || var == MB_SEMI_DEEP_WATER || var == MB_DEEP_WATER)
+ if (metatileBehavior == MB_OCEAN_WATER
+ || metatileBehavior == MB_SEMI_DEEP_WATER
+ || metatileBehavior == MB_UNUSED_DEEP_WATER)
return TRUE;
else
return FALSE;
}
-bool8 unref_sub_8057584(u8 var)
+bool8 Unref_MetatileBehavior_IsUnusedSootopolisWater(u8 metatileBehavior)
{
- if (var == MB_18 || var == MB_1A)
+ if (metatileBehavior == MB_UNUSED_SOOTOPOLIS_DEEP_WATER
+ || metatileBehavior == MB_UNUSED_SOOTOPOLIS_DEEP_WATER_2)
return TRUE;
else
return FALSE;
}
-bool8 sub_805759C(u8 var)
+bool8 MetatileBehavior_IsFeebasEncounterable(u8 metatileBehavior)
{
- if (MetatileBehavior_IsSurfableWaterOrUnderwater(var) && MetatileBehavior_IsWaterfall(var) == FALSE)
+ if (MetatileBehavior_IsSurfableWaterOrUnderwater(metatileBehavior)
+ && MetatileBehavior_IsWaterfall(metatileBehavior) == FALSE)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsEastBlocked(u8 var)
+bool8 MetatileBehavior_IsEastBlocked(u8 metatileBehavior)
{
- if (var == MB_IMPASSABLE_EAST || var == MB_IMPASSABLE_NORTHEAST || var == MB_IMPASSABLE_SOUTHEAST || var == MB_C1 || var == MB_BE)
+ if (metatileBehavior == MB_IMPASSABLE_EAST
+ || metatileBehavior == MB_IMPASSABLE_NORTHEAST
+ || metatileBehavior == MB_IMPASSABLE_SOUTHEAST
+ || metatileBehavior == MB_IMPASSABLE_WEST_AND_EAST
+ || metatileBehavior == MB_SECRET_BASE_BREAKABLE_DOOR)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsWestBlocked(u8 var)
+bool8 MetatileBehavior_IsWestBlocked(u8 metatileBehavior)
{
- if (var == MB_IMPASSABLE_WEST || var == MB_IMPASSABLE_NORTHWEST || var == MB_IMPASSABLE_SOUTHWEST || var == MB_C1 || var == MB_BE)
+ if (metatileBehavior == MB_IMPASSABLE_WEST
+ || metatileBehavior == MB_IMPASSABLE_NORTHWEST
+ || metatileBehavior == MB_IMPASSABLE_SOUTHWEST
+ || metatileBehavior == MB_IMPASSABLE_WEST_AND_EAST
+ || metatileBehavior == MB_SECRET_BASE_BREAKABLE_DOOR)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsNorthBlocked(u8 var)
+bool8 MetatileBehavior_IsNorthBlocked(u8 metatileBehavior)
{
- if (var == MB_IMPASSABLE_NORTH || var == MB_IMPASSABLE_NORTHEAST || var == MB_IMPASSABLE_NORTHWEST || var == MB_BED)
+ if (metatileBehavior == MB_IMPASSABLE_NORTH
+ || metatileBehavior == MB_IMPASSABLE_NORTHEAST
+ || metatileBehavior == MB_IMPASSABLE_NORTHWEST
+ || metatileBehavior == MB_IMPASSABLE_SOUTH_AND_NORTH)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsSouthBlocked(u8 var)
+bool8 MetatileBehavior_IsSouthBlocked(u8 metatileBehavior)
{
- if (var == MB_IMPASSABLE_SOUTH || var == MB_IMPASSABLE_SOUTHEAST || var == MB_IMPASSABLE_SOUTHWEST || var == MB_BED)
+ if (metatileBehavior == MB_IMPASSABLE_SOUTH
+ || metatileBehavior == MB_IMPASSABLE_SOUTHEAST
+ || metatileBehavior == MB_IMPASSABLE_SOUTHWEST
+ || metatileBehavior == MB_IMPASSABLE_SOUTH_AND_NORTH)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsShortGrass(u8 var)
+bool8 MetatileBehavior_IsShortGrass(u8 metatileBehavior)
{
- if (var == MB_SHORT_GRASS)
+ if (metatileBehavior == MB_SHORT_GRASS)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsHotSprings(u8 var)
+bool8 MetatileBehavior_IsHotSprings(u8 metatileBehavior)
{
- if (var == MB_HOT_SPRINGS)
+ if (metatileBehavior == MB_HOT_SPRINGS)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsWaterfall(u8 var)
+bool8 MetatileBehavior_IsWaterfall(u8 metatileBehavior)
{
- if (var == MB_WATERFALL)
+ if (metatileBehavior == MB_WATERFALL)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsFortreeBridge(u8 var)
+bool8 MetatileBehavior_IsFortreeBridge(u8 metatileBehavior)
{
- if (var == MB_FORTREE_BRIDGE)
+ if (metatileBehavior == MB_FORTREE_BRIDGE)
return TRUE;
else
return FALSE;
}
-bool8 sub_80576A0(u8 var)
+bool8 MetatileBehavior_IsPacifidlogVerticalLog1(u8 metatileBehavior)
{
- if (var == MB_PACIFIDLOG_VERTICAL_LOG_1)
+ if (metatileBehavior == MB_PACIFIDLOG_VERTICAL_LOG_1)
return TRUE;
else
return FALSE;
}
-bool8 sub_80576B4(u8 var)
+bool8 MetatileBehavior_IsPacifidlogVerticalLog2(u8 metatileBehavior)
{
- if (var == MB_PACIFIDLOG_VERTICAL_LOG_2)
+ if (metatileBehavior == MB_PACIFIDLOG_VERTICAL_LOG_2)
return TRUE;
else
return FALSE;
}
-bool8 sub_80576C8(u8 var)
+bool8 MetatileBehavior_IsPacifidlogHorizontalLog1(u8 metatileBehavior)
{
- if (var == MB_PACIFIDLOG_HORIZONTAL_LOG_1)
+ if (metatileBehavior == MB_PACIFIDLOG_HORIZONTAL_LOG_1)
return TRUE;
else
return FALSE;
}
-bool8 sub_80576DC(u8 var)
+bool8 MetatileBehavior_IsPacifidlogHorizontalLog2(u8 metatileBehavior)
{
- if (var == MB_PACIFIDLOG_HORIZONTAL_LOG_2)
+ if (metatileBehavior == MB_PACIFIDLOG_HORIZONTAL_LOG_2)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsPacifidlogLog(u8 var)
+bool8 MetatileBehavior_IsPacifidlogLog(u8 metatileBehavior)
{
- if (var >= MB_PACIFIDLOG_VERTICAL_LOG_1 && var <= MB_PACIFIDLOG_HORIZONTAL_LOG_2)
+ if (metatileBehavior >= MB_PACIFIDLOG_VERTICAL_LOG_1
+ && metatileBehavior <= MB_PACIFIDLOG_HORIZONTAL_LOG_2)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsTrickHousePuzzleDoor(u8 var)
+bool8 MetatileBehavior_IsTrickHousePuzzleDoor(u8 metatileBehavior)
{
- if (var == MB_TRICK_HOUSE_PUZZLE_DOOR)
+ if (metatileBehavior == MB_TRICK_HOUSE_PUZZLE_DOOR)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsRegionMap(u8 var)
+bool8 MetatileBehavior_IsRegionMap(u8 metatileBehavior)
{
- if (var == MB_REGION_MAP)
+ if (metatileBehavior == MB_REGION_MAP)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsClosedSootopolisGymDoor(u8 var)
+bool8 MetatileBehavior_IsClosedSootopolisDoor(u8 metatileBehavior)
{
- if (var == MB_CLOSED_SOOTOPOLIS_GYM_DOOR)
+ if (metatileBehavior == MB_CLOSED_SOOTOPOLIS_DOOR)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsRoulette(u8 var)
+bool8 MetatileBehavior_IsRoulette(u8 metatileBehavior)
{
- if (var == MB_ROULETTE)
+ if (metatileBehavior == MB_ROULETTE)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsPokeblockFeeder(u8 var)
+bool8 MetatileBehavior_IsPokeblockFeeder(u8 metatileBehavior)
{
- if (var == MB_POKEBLOCK_FEEDER)
+ if (metatileBehavior == MB_POKEBLOCK_FEEDER)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_0xBB(u8 var)
+bool8 MetatileBehavior_IsSecretBaseJumpMat(u8 metatileBehavior)
{
- if (var == MB_BB)
+ if (metatileBehavior == MB_SECRET_BASE_JUMP_MAT)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_0xBC(u8 var)
+bool8 MetatileBehavior_IsSecretBaseSpinMat(u8 metatileBehavior)
{
- if (var == MB_BC)
+ if (metatileBehavior == MB_SECRET_BASE_SPIN_MAT)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsLavaridgeB1FWarp(u8 var)
+bool8 MetatileBehavior_IsLavaridgeB1FWarp(u8 metatileBehavior)
{
- if (var == MB_LAVARIDGE_GYM_B1F_WARP)
+ if (metatileBehavior == MB_LAVARIDGE_GYM_B1F_WARP)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsLavaridge1FWarp(u8 var)
+bool8 MetatileBehavior_IsLavaridge1FWarp(u8 metatileBehavior)
{
- if (var == MB_LAVARIDGE_GYM_1F_WARP)
+ if (metatileBehavior == MB_LAVARIDGE_GYM_1F_WARP)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsAquaHideoutWarp(u8 var)
+bool8 MetatileBehavior_IsAquaHideoutWarp(u8 metatileBehavior)
{
- if (var == MB_AQUA_HIDEOUT_WARP)
+ if (metatileBehavior == MB_AQUA_HIDEOUT_WARP)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsSurfableFishableWater(u8 var)
+bool8 MetatileBehavior_IsSurfableFishableWater(u8 metatileBehavior)
{
- if (var == MB_POND_WATER || var == MB_OCEAN_WATER || var == MB_SEMI_DEEP_WATER || var == MB_DEEP_WATER || var == MB_SOOTOPOLIS_DEEP_WATER || (var >= MB_EASTWARD_CURRENT && var <= MB_SOUTHWARD_CURRENT))
+ if (metatileBehavior == MB_POND_WATER
+ || metatileBehavior == MB_OCEAN_WATER
+ || metatileBehavior == MB_SEMI_DEEP_WATER
+ || metatileBehavior == MB_UNUSED_DEEP_WATER
+ || metatileBehavior == MB_SOOTOPOLIS_DEEP_WATER
+ || (metatileBehavior >= MB_UNUSED_EASTWARD_CURRENT && metatileBehavior <= MB_SOUTHWARD_CURRENT))
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsMtPyreHole(u8 var)
+bool8 MetatileBehavior_IsMtPyreHole(u8 metatileBehavior)
{
- if (var == MB_MT_PYRE_HOLE)
+ if (metatileBehavior == MB_MT_PYRE_HOLE)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsCrackedFloorHole(u8 var)
+bool8 MetatileBehavior_IsCrackedFloorHole(u8 metatileBehavior)
{
- if (var == MB_CRACKED_FLOOR_HOLE)
+ if (metatileBehavior == MB_CRACKED_FLOOR_HOLE)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsCrackedFloor(u8 var)
+bool8 MetatileBehavior_IsCrackedFloor(u8 metatileBehavior)
{
- if (var == MB_CRACKED_FLOOR)
+ if (metatileBehavior == MB_CRACKED_FLOOR)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsMuddySlope(u8 var)
+bool8 MetatileBehavior_IsMuddySlope(u8 metatileBehavior)
{
- if (var == MB_MUDDY_SLOPE)
+ if (metatileBehavior == MB_MUDDY_SLOPE)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsBumpySlope(u8 var)
+bool8 MetatileBehavior_IsBumpySlope(u8 metatileBehavior)
{
- if (var == MB_BUMPY_SLOPE)
+ if (metatileBehavior == MB_BUMPY_SLOPE)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsIsolatedVerticalRail(u8 var)
+bool8 MetatileBehavior_IsIsolatedVerticalRail(u8 metatileBehavior)
{
- if (var == MB_ISOLATED_VERTICAL_RAIL)
+ if (metatileBehavior == MB_ISOLATED_VERTICAL_RAIL)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsIsolatedHorizontalRail(u8 var)
+bool8 MetatileBehavior_IsIsolatedHorizontalRail(u8 metatileBehavior)
{
- if (var == MB_ISOLATED_HORIZONTAL_RAIL)
+ if (metatileBehavior == MB_ISOLATED_HORIZONTAL_RAIL)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsVerticalRail(u8 var)
+bool8 MetatileBehavior_IsVerticalRail(u8 metatileBehavior)
{
- if (var == MB_VERTICAL_RAIL)
+ if (metatileBehavior == MB_VERTICAL_RAIL)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsHorizontalRail(u8 var)
+bool8 MetatileBehavior_IsHorizontalRail(u8 metatileBehavior)
{
- if (var == MB_HORIZONTAL_RAIL)
+ if (metatileBehavior == MB_HORIZONTAL_RAIL)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsSeaweed(u8 var)
+bool8 MetatileBehavior_IsSeaweed(u8 metatileBehavior)
{
- if (var == MB_SEAWEED || var == MB_SEAWEED_NO_SURFACING)
+ if (metatileBehavior == MB_SEAWEED
+ || metatileBehavior == MB_SEAWEED_NO_SURFACING)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsRunningDisallowed(u8 var)
+bool8 MetatileBehavior_IsRunningDisallowed(u8 metatileBehavior)
{
- if (var == MB_NO_RUNNING || var == MB_LONG_GRASS || var == MB_HOT_SPRINGS || MetatileBehavior_IsPacifidlogLog(var) != FALSE)
+ if (metatileBehavior == MB_NO_RUNNING
+ || metatileBehavior == MB_LONG_GRASS
+ || metatileBehavior == MB_HOT_SPRINGS
+ || MetatileBehavior_IsPacifidlogLog(metatileBehavior))
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsCuttableGrass(u8 var)
+bool8 MetatileBehavior_IsCuttableGrass(u8 metatileBehavior)
{
- if (var == MB_TALL_GRASS || var == MB_LONG_GRASS || var == MB_ASHGRASS || var == MB_LONG_GRASS_SOUTH_EDGE)
+ if (metatileBehavior == MB_TALL_GRASS
+ || metatileBehavior == MB_LONG_GRASS
+ || metatileBehavior == MB_ASHGRASS
+ || metatileBehavior == MB_LONG_GRASS_SOUTH_EDGE)
return TRUE;
else
return FALSE;
}
-bool8 sub_805791C(u8 var)
+bool8 MetatileBehavior_IsRunningShoesManual(u8 metatileBehavior)
{
- if (var == MB_8E)
+ if (metatileBehavior == MB_RUNNING_SHOES_MANUAL)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsPictureBookShelf(u8 var)
+bool8 MetatileBehavior_IsPictureBookShelf(u8 metatileBehavior)
{
- if (var == MB_PICTURE_BOOK_SHELF)
+ if (metatileBehavior == MB_PICTURE_BOOK_SHELF)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsBookShelf(u8 var)
+bool8 MetatileBehavior_IsBookShelf(u8 metatileBehavior)
{
- if (var == MB_BOOKSHELF)
+ if (metatileBehavior == MB_BOOKSHELF)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsPokeCenterBookShelf(u8 var)
+bool8 MetatileBehavior_IsPokeCenterBookShelf(u8 metatileBehavior)
{
- if (var == MB_POKEMON_CENTER_BOOKSHELF)
+ if (metatileBehavior == MB_POKEMON_CENTER_BOOKSHELF)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsVase(u8 var)
+bool8 MetatileBehavior_IsVase(u8 metatileBehavior)
{
- if (var == MB_VASE)
+ if (metatileBehavior == MB_VASE)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsTrashCan(u8 var)
+bool8 MetatileBehavior_IsTrashCan(u8 metatileBehavior)
{
- if (var == MB_TRASH_CAN)
+ if (metatileBehavior == MB_TRASH_CAN)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsShopShelf(u8 var)
+bool8 MetatileBehavior_IsShopShelf(u8 metatileBehavior)
{
- if (var == MB_SHOP_SHELF)
+ if (metatileBehavior == MB_SHOP_SHELF)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsBlueprint(u8 var)
+bool8 MetatileBehavior_IsBlueprint(u8 metatileBehavior)
{
- if (var == MB_BLUEPRINT)
+ if (metatileBehavior == MB_BLUEPRINT)
return TRUE;
else
return FALSE;
diff --git a/src/money.c b/src/money.c
index 3b7268dbc..12a8b71ff 100644
--- a/src/money.c
+++ b/src/money.c
@@ -141,7 +141,7 @@ void PrintMoneyAmount(u32 amount, u8 size, u8 x, u8 y)
u8 stringWidth;
GetMoneyAmountText(buffer, amount, size);
- stringWidth = sub_8072CA4(buffer);
+ stringWidth = GetStringWidthInMenuWindow(buffer);
if (stringWidth >= (size + 1) * 8)
{
@@ -176,7 +176,7 @@ void sub_80B7AEC(u32 arg0, u8 left, u8 top)
#endif
}
-__attribute__((naked))
+NAKED
void Draw10000Sprite(u8 var1, u8 var2, int var3)
{
asm(".syntax unified\n\
diff --git a/src/move_tutor_menu.c b/src/move_tutor_menu.c
new file mode 100644
index 000000000..0ecc82a72
--- /dev/null
+++ b/src/move_tutor_menu.c
@@ -0,0 +1,1063 @@
+#include "global.h"
+#include "contest.h"
+#include "data2.h"
+#include "ewram.h"
+#include "field_fadetransition.h"
+#include "main.h"
+#include "menu.h"
+#include "menu_cursor.h"
+#include "move_tutor_menu.h"
+#include "overworld.h"
+#include "palette.h"
+#include "pokemon.h"
+#include "pokemon_summary_screen.h"
+#include "script.h"
+#include "sound.h"
+#include "sprite.h"
+#include "string_util.h"
+#include "strings.h"
+#include "strings2.h"
+#include "task.h"
+#include "trig.h"
+#include "constants/songs.h"
+
+extern u16 gSpecialVar_0x8004;
+extern u16 gSpecialVar_0x8005;
+extern u8 gTileBuffer[];
+
+extern const struct WindowTemplate gMenuTextWindowTemplate;
+extern const struct WindowTemplate gMoveTutorMenuFramesWindowTemplate;
+extern const u8 *const gContestEffectStrings[];
+extern const u8 *const gMoveDescriptions[];
+extern const u8 gTypeNames[][7];
+extern const u8 *const gContestCategoryNames[];
+
+#ifdef GERMAN
+extern const u8 deuOtherText_ForgotAndLearned[];
+#endif
+
+static void InitMoveTutorMenuWaitFade(u8);
+static void CB2_InitMoveTutorMenu(void);
+static void CB2_MoveTutorMenu(void);
+static void MoveTutorMain(void);
+static void DrawLearnMoveMenuWindow(void);
+static void DrawBattleMoveInfoHeaders(bool8);
+static u8 ChangeToContestMoveInfoWindow(void);
+static void DrawContestMoveInfoHeaders(bool8);
+static u8 ChangeToBattleMoveInfoWindow(void);
+static void ResetMoveTutorMenu(void);
+static void InitMoveTutorMenuSprites(void);
+static void InitMoveTutorMenuStrings(void);
+static void HandleMoveTutorMenuInput(void);
+static void DrawMoveSelectionWindow(void);
+static void DrawMoveInfoWindow(bool8, int);
+static void RedrawMoveInfoWindow(void);
+static void UpdateMoveTutorMenuCursorPosition(struct Sprite *);
+
+struct MoveTutorMenu
+{
+ u8 state;
+ u8 filler1;
+ u8 unk2;
+ u8 spriteIDs[20];
+ u8 filler17;
+ u8 cursorPos;
+ u8 curMenuChoice;
+ u8 numMenuChoices;
+ u8 menuSelection;
+ u8 previousCursorPos;
+ bool8 redrawCursor;
+ bool8 redrawMoveSelectionWindow;
+ u16 movesToLearn[MAX_MOVE_TUTOR_MOVES];
+ u8 filler48[10];
+ u8 moveNames[6][25];
+ u8 fillerE8[475];
+ bool8 redrawMoveInfoWindow;
+ bool8 showContestInfo;
+ u8 partyMonIndex;
+ u8 forgetMoveIndex;
+};
+
+static struct MoveTutorMenu *sMoveTutorMenu;
+
+const u16 gMoveTutorMenuArrows_Pal[] = INCBIN_U16("graphics/move_tutor_menu/arrows.gbapal");
+
+const u8 gMoveTutorMenuArrows_Gfx[] = INCBIN_U8("graphics/move_tutor_menu/arrows.4bpp");
+
+const u8 gMoveTutorMenuWindowFrameDimensions[][4] =
+{
+ { 0, 0, 9, 13},
+ {10, 0, 29, 7},
+ { 2, 14, 27, 19},
+ {10, 8, 29, 13},
+};
+
+struct MoveTutorMoveInfoHeaders
+{
+ const u8 *text;
+ u8 left;
+ u8 right;
+ u8 index; // unused
+};
+
+const struct MoveTutorMoveInfoHeaders gMoveTutorMoveInfoHeaders[][4] =
+{
+ {
+ {OtherText_Battle, 1, 1, 0},
+ {OtherText_Power, 1, 4, 1},
+ {OtherText_Accuracy, 1, 9, 2},
+ {NULL, 0, 0, 0},
+ },
+ {
+ {OtherText_Contest, 1, 1, 0},
+ {OtherText_Appeal, 1, 4, 1},
+ {OtherText_Jam, 1, 9, 2},
+ {NULL, 0, 0, 0},
+ },
+};
+
+// XXX: What are these for?
+const u32 unkDataFF00FFEF = 0xFF00FFEF;
+const u8 *const gTileBuffer_ = gTileBuffer;
+
+const struct OamData gOamData_8402D50 = {.shape = 0};
+const struct OamData gOamData_8402D58 = {.shape = 2};
+const struct OamData gOamData_8402D60 = {.shape = 1};
+
+const union AnimCmd gSpriteAnim_8402D68[] =
+{
+ ANIMCMD_FRAME(2, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_8402D70[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_8402D78[] =
+{
+ gSpriteAnim_8402D68,
+ gSpriteAnim_8402D70,
+};
+
+const struct SpriteSheet gMoveTutorMenuArrowsSpriteSheet = {gMoveTutorMenuArrows_Gfx, sizeof(gMoveTutorMenuArrows_Gfx), 5525};
+const struct SpritePalette gMoveTutorMenuArrowsPalette = {gMoveTutorMenuArrows_Pal, 5526};
+
+const struct SpriteTemplate gSpriteTemplate_8402D90 =
+{
+ .tileTag = 5525,
+ .paletteTag = 5526,
+ .oam = &gOamData_8402D58,
+ .anims = gSpriteAnimTable_8402D78,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = UpdateMoveTutorMenuCursorPosition,
+};
+
+const union AnimCmd gSpriteAnim_8402DA8[] =
+{
+ ANIMCMD_FRAME(4, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_8402DB0[] =
+{
+ ANIMCMD_FRAME(6, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_8402DB8[] =
+{
+ gSpriteAnim_8402DA8,
+ gSpriteAnim_8402DB0,
+};
+
+const struct SpriteTemplate gSpriteTemplate_8402DC0 =
+{
+ .tileTag = 5525,
+ .paletteTag = 5526,
+ .oam = &gOamData_8402D60,
+ .anims = gSpriteAnimTable_8402DB8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = UpdateMoveTutorMenuCursorPosition,
+};
+
+const union AnimCmd gSpriteAnim_8402DD8[] =
+{
+ ANIMCMD_FRAME(8, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_8402DE0[] =
+{
+ ANIMCMD_FRAME(9, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_8402DE8[] =
+{
+ ANIMCMD_FRAME(10, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_8402DF0[] =
+{
+ ANIMCMD_FRAME(11, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_8402DF8[] =
+{
+ gSpriteAnim_8402DD8,
+ gSpriteAnim_8402DE0,
+ gSpriteAnim_8402DE8,
+ gSpriteAnim_8402DF0,
+};
+
+const struct SpriteTemplate gSpriteTemplate_8402E08 =
+{
+ .tileTag = 5525,
+ .paletteTag = 5526,
+ .oam = &gOamData_8402D50,
+ .anims = gSpriteAnimTable_8402DF8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = UpdateMoveTutorMenuCursorPosition,
+};
+
+const u8 gString_AkitoMori[] = _("あきと"); // programmer Akito Mori?
+
+static void VBlankCB_MoveTutorMenu(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+void DisplayMoveTutorMenu(void)
+{
+ ScriptContext2_Enable();
+ CreateTask(InitMoveTutorMenuWaitFade, 10);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
+}
+
+static void InitMoveTutorMenuWaitFade(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ SetMainCallback2(CB2_InitMoveTutorMenu);
+ gFieldCallback = sub_8080990;
+ DestroyTask(taskId);
+ }
+}
+
+static void CB2_InitMoveTutorMenu(void)
+{
+ REG_DISPCNT = 0;
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ ResetTasks();
+ sMoveTutorMenu = eMoveTutorMenu;
+ ResetMoveTutorMenu();
+ sMoveTutorMenu->partyMonIndex = gSpecialVar_0x8004;
+ InitMoveTutorMenuStrings();
+ SetVBlankCallback(VBlankCB_MoveTutorMenu);
+
+ Text_LoadWindowTemplate(&gMoveTutorMenuFramesWindowTemplate);
+ InitMenuWindow(&gMoveTutorMenuFramesWindowTemplate);
+ Menu_EraseScreen();
+
+ Text_LoadWindowTemplate(&gMenuTextWindowTemplate);
+ InitMenuWindow(&gMenuTextWindowTemplate);
+ Menu_EraseScreen();
+
+ REG_BG0VOFS = 0;
+ REG_BG0VOFS = 0;
+ REG_BG1HOFS = 0;
+ REG_BG1HOFS = 0;
+
+ LoadSpriteSheet(&gMoveTutorMenuArrowsSpriteSheet);
+ LoadSpritePalette(&gMoveTutorMenuArrowsPalette);
+ InitMoveTutorMenuSprites();
+ FillPalette(0, 0, 2);
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+ SetMainCallback2(CB2_MoveTutorMenu);
+}
+
+void CB2_ReturnToMoveTutorMenu(void)
+{
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ ResetTasks();
+ sMoveTutorMenu = eMoveTutorMenu;
+ InitMoveTutorMenuStrings();
+ sMoveTutorMenu->forgetMoveIndex = gSpecialVar_0x8005;
+ SetVBlankCallback(VBlankCB_MoveTutorMenu);
+
+ Text_LoadWindowTemplate(&gMoveTutorMenuFramesWindowTemplate);
+ InitMenuWindow(&gMoveTutorMenuFramesWindowTemplate);
+ Menu_EraseScreen();
+
+ Text_LoadWindowTemplate(&gMenuTextWindowTemplate);
+ InitMenuWindow(&gMenuTextWindowTemplate);
+ Menu_EraseScreen();
+
+ REG_DISPCNT = DISPCNT_OBJ_ON | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_OBJ_1D_MAP;
+ REG_BG0VOFS = 0;
+ REG_BG0HOFS = 0;
+ REG_BG1HOFS = 0;
+ REG_BG1HOFS = 0;
+
+ LoadSpriteSheet(&gMoveTutorMenuArrowsSpriteSheet);
+ LoadSpritePalette(&gMoveTutorMenuArrowsPalette);
+ InitMoveTutorMenuSprites();
+ FillPalette(0, 0, 2);
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+ SetMainCallback2(CB2_MoveTutorMenu);
+}
+
+static void CB2_MoveTutorMenu(void)
+{
+ MoveTutorMain();
+ if (sMoveTutorMenu->redrawCursor)
+ {
+ sMoveTutorMenu->redrawCursor = FALSE;
+ MenuCursor_SetPos814AD7C(0x58, (sMoveTutorMenu->cursorPos * 2 + 1) * 8);
+ }
+ if (sMoveTutorMenu->redrawMoveSelectionWindow)
+ {
+ sMoveTutorMenu->redrawMoveSelectionWindow = 0;
+ DrawMoveSelectionWindow();
+ }
+ if (sMoveTutorMenu->redrawMoveInfoWindow)
+ {
+ DrawMoveInfoWindow(sMoveTutorMenu->showContestInfo, 1);
+ sMoveTutorMenu->redrawMoveInfoWindow = FALSE;
+ }
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+static void PrintMainMoveTutorMenuText(const u8 *str)
+{
+ StringExpandPlaceholders(gStringVar4, str);
+ MenuPrintMessage(gStringVar4, 3, 15);
+}
+
+static void MoveTutorMain(void)
+{
+ switch (sMoveTutorMenu->state)
+ {
+ case 0:
+ sMoveTutorMenu->state++;
+ DrawLearnMoveMenuWindow();
+ DrawBattleMoveInfoHeaders(FALSE);
+ DrawMoveSelectionWindow();
+ gSprites[1].pos1.x = 0x48;
+ sMoveTutorMenu->redrawMoveInfoWindow = TRUE;
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
+ REG_DISPCNT = DISPCNT_OBJ_ON | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_OBJ_1D_MAP;
+ break;
+ case 1:
+ if (!gPaletteFade.active)
+ sMoveTutorMenu->state = 4;
+ break;
+ case 2:
+ sMoveTutorMenu->state++;
+ break;
+ case 3:
+ DrawBattleMoveInfoHeaders(FALSE);
+ DrawMoveSelectionWindow();
+ sMoveTutorMenu->redrawMoveInfoWindow = TRUE;
+ sMoveTutorMenu->state++;
+ gSprites[1].pos1.x = 0x48;
+ break;
+ case 4:
+ if (!ChangeToContestMoveInfoWindow())
+ HandleMoveTutorMenuInput();
+ return;
+ case 5:
+ DrawContestMoveInfoHeaders(FALSE);
+ DrawMoveSelectionWindow();
+ sMoveTutorMenu->redrawMoveInfoWindow = TRUE;
+ gSprites[1].pos1.x = 0x48;
+ sMoveTutorMenu->state++;
+ break;
+ case 6:
+ if (!ChangeToBattleMoveInfoWindow())
+ HandleMoveTutorMenuInput();
+ break;
+ case 8:
+ if (Menu_UpdateWindowText())
+ {
+ DisplayYesNoMenu(21, 7, 1);
+ sMoveTutorMenu->state++;
+ }
+ break;
+ case 9:
+ {
+ s8 selection = Menu_ProcessInputNoWrap_();
+ if (selection == 0)
+ {
+ RedrawMoveInfoWindow();
+ if (GiveMoveToMon(&gPlayerParty[sMoveTutorMenu->partyMonIndex], sMoveTutorMenu->movesToLearn[sMoveTutorMenu->menuSelection]) != 0xFFFF)
+ {
+ PrintMainMoveTutorMenuText(gOtherText_PokeLearnedMove);
+ gSpecialVar_0x8004 = 1;
+ sMoveTutorMenu->state = 31;
+ }
+ else
+ {
+ sMoveTutorMenu->state = 16;
+ }
+ }
+ else if (selection == -1 || selection == 1)
+ {
+ RedrawMoveInfoWindow();
+ if (sMoveTutorMenu->showContestInfo == FALSE)
+ sMoveTutorMenu->state = 3;
+ if (sMoveTutorMenu->showContestInfo == TRUE)
+ sMoveTutorMenu->state = 5;
+ }
+ }
+ break;
+ case 12:
+ if (Menu_UpdateWindowText())
+ {
+ DisplayYesNoMenu(21, 7, 1);
+ sMoveTutorMenu->state++;
+ }
+ break;
+ case 13:
+ {
+ s8 selection = Menu_ProcessInputNoWrap_();
+
+ if (selection == 0)
+ {
+ RedrawMoveInfoWindow();
+ gSpecialVar_0x8004 = selection;
+ sMoveTutorMenu->state = 14;
+ }
+ else if (selection == -1 || selection == 1)
+ {
+ RedrawMoveInfoWindow();
+ if (sMoveTutorMenu->showContestInfo == FALSE)
+ sMoveTutorMenu->state = 3;
+ if (sMoveTutorMenu->showContestInfo == TRUE)
+ sMoveTutorMenu->state = 5;
+ }
+ }
+ break;
+ case 16:
+ PrintMainMoveTutorMenuText(gOtherText_DeleteOlderMove);
+ sMoveTutorMenu->state++;
+ break;
+ case 17:
+ if (Menu_UpdateWindowText())
+ {
+ DisplayYesNoMenu(21, 7, 1);
+ sMoveTutorMenu->state = 18;
+ }
+ break;
+ case 18:
+ {
+ s8 var = Menu_ProcessInputNoWrap_();
+
+ if (var == 0)
+ {
+ RedrawMoveInfoWindow();
+ PrintMainMoveTutorMenuText(gOtherText_WhichMoveToForget);
+ sMoveTutorMenu->state = 19;
+ }
+ else if (var == -1 || var == 1)
+ {
+ RedrawMoveInfoWindow();
+ sMoveTutorMenu->state = 24;
+ }
+ }
+ break;
+ case 24:
+ PrintMainMoveTutorMenuText(gOtherText_StopLearningMove);
+ sMoveTutorMenu->state++;
+ break;
+ case 25:
+ if (Menu_UpdateWindowText())
+ {
+ sMoveTutorMenu->state = 26;
+ DisplayYesNoMenu(21, 7, 1);
+ }
+ break;
+ case 26:
+ {
+ s8 var = Menu_ProcessInputNoWrap_();
+
+ if (var == 0)
+ {
+ RedrawMoveInfoWindow();
+ sMoveTutorMenu->state = 27;
+ }
+ else if (var == -1 || var == 1)
+ {
+ RedrawMoveInfoWindow();
+
+ // What's the point? It gets set to 16, anyway.
+ if (sMoveTutorMenu->showContestInfo == FALSE)
+ sMoveTutorMenu->state = 3;
+ if (sMoveTutorMenu->showContestInfo == TRUE)
+ sMoveTutorMenu->state = 5;
+ sMoveTutorMenu->state = 16;
+ }
+ }
+ break;
+ case 27:
+ if (Menu_UpdateWindowText())
+ {
+ if (sMoveTutorMenu->showContestInfo == FALSE)
+ sMoveTutorMenu->state = 3;
+ if (sMoveTutorMenu->showContestInfo == TRUE)
+ sMoveTutorMenu->state = 5;
+ }
+ break;
+ case 19:
+ if (Menu_UpdateWindowText())
+ {
+ sMoveTutorMenu->state = 20;
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
+ }
+ break;
+ case 20:
+ if (!gPaletteFade.active)
+ {
+ ShowSelectMovePokemonSummaryScreen(gPlayerParty, sMoveTutorMenu->partyMonIndex, gPlayerPartyCount - 1, CB2_ReturnToMoveTutorMenu, sMoveTutorMenu->movesToLearn[sMoveTutorMenu->menuSelection]);
+ sMoveTutorMenu->state = 28;
+ }
+ break;
+ case 21:
+ if (Menu_UpdateWindowText())
+ sMoveTutorMenu->state = 14;
+ break;
+ case 22:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
+ break;
+ case 14:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
+ sMoveTutorMenu->state++;
+ break;
+ case 15:
+ if (!gPaletteFade.active)
+ SetMainCallback2(c2_exit_to_overworld_2_switch);
+ break;
+ case 28:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
+ sMoveTutorMenu->state++;
+ DrawLearnMoveMenuWindow();
+ DrawMoveSelectionWindow();
+ if (sMoveTutorMenu->showContestInfo == FALSE)
+ DrawBattleMoveInfoHeaders(TRUE);
+ if (sMoveTutorMenu->showContestInfo == TRUE)
+ {
+ gSprites[1].pos1.x = 0x48;
+ DrawContestMoveInfoHeaders(TRUE);
+ }
+ DrawMoveInfoWindow(sMoveTutorMenu->showContestInfo, 1);
+ break;
+ case 29:
+ if (!gPaletteFade.active)
+ {
+ if (sMoveTutorMenu->forgetMoveIndex == 4)
+ {
+ sMoveTutorMenu->state = 24;
+ }
+ else
+ {
+ u16 moveId = GetMonData(&gPlayerParty[sMoveTutorMenu->partyMonIndex], MON_DATA_MOVE1 + sMoveTutorMenu->forgetMoveIndex);
+
+ StringCopy(gStringVar3, gMoveNames[moveId]);
+ RemoveMonPPBonus(&gPlayerParty[sMoveTutorMenu->partyMonIndex], sMoveTutorMenu->forgetMoveIndex);
+ SetMonMoveSlot(&gPlayerParty[sMoveTutorMenu->partyMonIndex], sMoveTutorMenu->movesToLearn[sMoveTutorMenu->menuSelection], sMoveTutorMenu->forgetMoveIndex);
+ StringCopy(gStringVar2, gMoveNames[sMoveTutorMenu->movesToLearn[sMoveTutorMenu->menuSelection]]);
+ PrintMainMoveTutorMenuText(gOtherText_ForgotMove123);
+ sMoveTutorMenu->state = 30;
+ gSpecialVar_0x8004 = 1;
+ }
+ }
+ break;
+ case 30:
+ if (Menu_UpdateWindowText())
+ {
+#ifdef GERMAN
+ PrintMainMoveTutorMenuText(deuOtherText_ForgotAndLearned);
+#else
+ PrintMainMoveTutorMenuText(gOtherText_ForgotOrDidNotLearnMove);
+#endif
+ sMoveTutorMenu->state = 31;
+ PlayFanfare(MUS_FANFA1);
+ }
+ break;
+ case 31:
+ if (Menu_UpdateWindowText())
+ {
+ PlayFanfare(MUS_FANFA1);
+ sMoveTutorMenu->state = 32;
+ }
+ break;
+ case 32:
+ if (IsFanfareTaskInactive())
+ sMoveTutorMenu->state = 33;
+ break;
+ case 33:
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ sMoveTutorMenu->state = 14;
+ }
+ break;
+ }
+}
+
+static void DrawLearnMoveMenuWindow(void)
+{
+ u32 i;
+
+ BasicInitMenuWindow(&gMoveTutorMenuFramesWindowTemplate);
+ for (i = 0; i < 4; i++)
+ {
+ Menu_DrawStdWindowFrame(
+ gMoveTutorMenuWindowFrameDimensions[i][0],
+ gMoveTutorMenuWindowFrameDimensions[i][1],
+ gMoveTutorMenuWindowFrameDimensions[i][2],
+ gMoveTutorMenuWindowFrameDimensions[i][3]);
+ }
+ BasicInitMenuWindow(&gMenuTextWindowTemplate);
+}
+
+static void DrawBattleMoveInfoHeaders(bool8 noTeachMoveText)
+{
+ s32 i;
+
+ gSprites[sMoveTutorMenu->spriteIDs[0]].invisible = FALSE;
+ gSprites[sMoveTutorMenu->spriteIDs[1]].invisible = FALSE;
+
+ for (i = 0; i < 16; i++)
+ gSprites[sMoveTutorMenu->spriteIDs[i + 4]].invisible = TRUE;
+
+ for (i = 0; gMoveTutorMoveInfoHeaders[0][i].text != NULL; i++)
+ {
+ AlignStringInMenuWindow(gTileBuffer, gMoveTutorMoveInfoHeaders[0][i].text, 64, 2);
+ Menu_PrintText(gTileBuffer, gMoveTutorMoveInfoHeaders[0][i].left, gMoveTutorMoveInfoHeaders[0][i].right);
+ }
+
+ if (!noTeachMoveText)
+ sub_8072AB0(gOtherText_TeachWhichMove, 24, 120, 192, 32, 1);
+}
+
+static u8 ChangeToContestMoveInfoWindow(void)
+{
+ u32 result = (gMain.newKeys & DPAD_LEFT) || (gMain.newKeys & DPAD_RIGHT);
+
+ if (gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_LR
+ && ((gMain.newKeys & L_BUTTON) || (gMain.newKeys & R_BUTTON)))
+ result++;
+
+ if (result != 0)
+ {
+ PlaySE(SE_SELECT);
+ sMoveTutorMenu->state = 5;
+ sMoveTutorMenu->showContestInfo = TRUE;
+ }
+
+ return result;
+}
+
+static void DrawContestMoveInfoHeaders(bool8 noTeachMoveText)
+{
+ s32 i;
+
+ gSprites[sMoveTutorMenu->spriteIDs[0]].invisible = FALSE;
+ gSprites[sMoveTutorMenu->spriteIDs[1]].invisible = FALSE;
+
+ for (i = 0; i < 16; i++)
+ gSprites[sMoveTutorMenu->spriteIDs[i + 4]].invisible = FALSE;
+
+ for (i = 0; gMoveTutorMoveInfoHeaders[0][i].text != NULL; i++)
+ {
+ AlignStringInMenuWindow(gTileBuffer, gMoveTutorMoveInfoHeaders[1][i].text, 64, 2);
+ Menu_PrintText(gTileBuffer, gMoveTutorMoveInfoHeaders[1][i].left, gMoveTutorMoveInfoHeaders[1][i].right);
+ if (i != 0)
+ {
+ Menu_EraseWindowRect(
+ gMoveTutorMoveInfoHeaders[1][i].left,
+ gMoveTutorMoveInfoHeaders[1][i].right + 2,
+ gMoveTutorMoveInfoHeaders[1][i].left + 7,
+ gMoveTutorMoveInfoHeaders[1][i].right + 3);
+ }
+ }
+
+ if (!noTeachMoveText)
+ sub_8072AB0(gOtherText_TeachWhichMove, 24, 120, 192, 32, 1);
+}
+
+static u8 ChangeToBattleMoveInfoWindow(void)
+{
+ u32 result = (gMain.newKeys & DPAD_LEFT) || (gMain.newKeys & DPAD_RIGHT);
+
+ if (gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_LR
+ && ((gMain.newKeys & L_BUTTON) || (gMain.newKeys & R_BUTTON)))
+ result++;
+
+ if (result != 0)
+ {
+ PlaySE(SE_SELECT);
+ sMoveTutorMenu->state = 3;
+ sMoveTutorMenu->showContestInfo = FALSE;
+ }
+
+ return result;
+}
+
+static void ResetMoveTutorMenu(void)
+{
+ s32 i;
+
+ sMoveTutorMenu->state = 0;
+ sMoveTutorMenu->unk2 = 0;
+ sMoveTutorMenu->curMenuChoice = 0;
+ sMoveTutorMenu->cursorPos = 0;
+ sMoveTutorMenu->previousCursorPos = 0;
+ sMoveTutorMenu->numMenuChoices = 0;
+ sMoveTutorMenu->menuSelection = 0;
+ sMoveTutorMenu->redrawCursor = FALSE;
+ sMoveTutorMenu->redrawMoveSelectionWindow = 0;
+ sMoveTutorMenu->redrawMoveInfoWindow = FALSE;
+ sMoveTutorMenu->showContestInfo = FALSE;
+ for (i = 0; i < MAX_MOVE_TUTOR_MOVES; i++)
+ sMoveTutorMenu->movesToLearn[i] = 0;
+}
+
+static void UpdateMoveTutorMenuCursorPosition(struct Sprite *sprite)
+{
+ s16 var = (sprite->data[1] * 10) & 0xFF;
+
+ switch (sprite->data[0])
+ {
+ case 0:
+ break;
+ case 1:
+ sprite->pos2.x = Sin(var, 3) * sprite->data[2];
+ break;
+ case 2:
+ sprite->pos2.y = Sin(var, 1) * sprite->data[2];
+ break;
+ }
+ sprite->data[1]++;
+}
+
+static void InitMoveTutorMenuSprites(void)
+{
+ s32 i;
+
+ sMoveTutorMenu->spriteIDs[0] = CreateSprite(&gSpriteTemplate_8402D90, 8, 16, 0);
+ gSprites[sMoveTutorMenu->spriteIDs[0]].data[0] = 1;
+ gSprites[sMoveTutorMenu->spriteIDs[0]].data[2] = -1;
+
+ sMoveTutorMenu->spriteIDs[1] = CreateSprite(&gSpriteTemplate_8402D90, 72, 16, 0);
+ StartSpriteAnim(&gSprites[sMoveTutorMenu->spriteIDs[1]], 1);
+ gSprites[sMoveTutorMenu->spriteIDs[1]].data[0] = 1;
+ gSprites[sMoveTutorMenu->spriteIDs[1]].data[2] = 1;
+
+ sMoveTutorMenu->spriteIDs[2] = CreateSprite(&gSpriteTemplate_8402DC0, 160, 4, 0);
+ StartSpriteAnim(&gSprites[sMoveTutorMenu->spriteIDs[2]], 1);
+ gSprites[sMoveTutorMenu->spriteIDs[2]].data[0] = 2;
+ gSprites[sMoveTutorMenu->spriteIDs[2]].data[2] = -1;
+
+ sMoveTutorMenu->spriteIDs[3] = CreateSprite(&gSpriteTemplate_8402DC0, 160, 60, 0);
+ gSprites[sMoveTutorMenu->spriteIDs[3]].data[0] = 2;
+ gSprites[sMoveTutorMenu->spriteIDs[3]].data[2] = 1;
+
+ for (i = 0; i < 8; i++)
+ {
+ sMoveTutorMenu->spriteIDs[i + 4] = CreateSprite(&gSpriteTemplate_8402E08, (i - (i / 4) * 4) * 8 + 0x1C, (i / 4) * 8 + 0x34, 0);
+ StartSpriteAnim(&gSprites[sMoveTutorMenu->spriteIDs[i + 4]], 2);
+ }
+
+ for (i = 0; i < 8; i++)
+ {
+ sMoveTutorMenu->spriteIDs[i + 12] = CreateSprite(&gSpriteTemplate_8402E08, (i - (i / 4) * 4) * 8 + 0x1C, (i / 4) * 8 + 0x5C, 0);
+ StartSpriteAnim(&gSprites[sMoveTutorMenu->spriteIDs[i + 12]], 2);
+ }
+
+ for (i = 0; i < 20; i++)
+ gSprites[sMoveTutorMenu->spriteIDs[i]].invisible = TRUE;
+
+ CreateBlendedOutlineCursor(16, 0xFFFF, 12, 0x2D9F, 18);
+}
+
+static void InitMoveTutorMenuStrings(void)
+{
+ s32 i;
+ u8 nickname[POKEMON_NAME_LENGTH + 1];
+
+ sMoveTutorMenu->numMenuChoices = GetMoveTutorMoves(&gPlayerParty[sMoveTutorMenu->partyMonIndex], sMoveTutorMenu->movesToLearn);
+ for (i = 0; i < sMoveTutorMenu->numMenuChoices; i++)
+ StringCopy(sMoveTutorMenu->moveNames[i], gMoveNames[sMoveTutorMenu->movesToLearn[i]]);
+ GetMonData(&gPlayerParty[sMoveTutorMenu->partyMonIndex], MON_DATA_NICKNAME, nickname);
+ StringCopy10(gStringVar1, nickname);
+ StringCopy(sMoveTutorMenu->moveNames[sMoveTutorMenu->numMenuChoices], gOtherText_Exit);
+ sMoveTutorMenu->numMenuChoices++;
+}
+
+static void MoveCursorPos(s8 delta)
+{
+ sMoveTutorMenu->previousCursorPos = sMoveTutorMenu->cursorPos;
+ sMoveTutorMenu->cursorPos += delta;
+ sMoveTutorMenu->redrawCursor = TRUE;
+}
+
+static void HandleMoveTutorMenuInput(void)
+{
+ if (gMain.newAndRepeatedKeys & DPAD_UP)
+ {
+ if (sMoveTutorMenu->menuSelection != 0)
+ {
+ PlaySE(SE_SELECT);
+ sMoveTutorMenu->menuSelection--;
+ sMoveTutorMenu->redrawMoveInfoWindow = TRUE;
+ if (sMoveTutorMenu->cursorPos != 0)
+ {
+ MoveCursorPos(-1);
+ }
+ else if (sMoveTutorMenu->curMenuChoice != 0)
+ {
+ sMoveTutorMenu->curMenuChoice--;
+ sMoveTutorMenu->redrawMoveSelectionWindow++;
+ }
+ }
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_DOWN)
+ {
+ if (sMoveTutorMenu->menuSelection < sMoveTutorMenu->numMenuChoices - 1)
+ {
+ PlaySE(SE_SELECT);
+ sMoveTutorMenu->menuSelection++;
+ sMoveTutorMenu->redrawMoveInfoWindow = TRUE;
+ if (sMoveTutorMenu->cursorPos != 2)
+ {
+ MoveCursorPos(1);
+ }
+ else if (sMoveTutorMenu->curMenuChoice != sMoveTutorMenu->numMenuChoices - 3)
+ {
+ sMoveTutorMenu->curMenuChoice++;
+ sMoveTutorMenu->redrawMoveSelectionWindow++;
+ }
+ }
+ }
+ else if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ if (sMoveTutorMenu->menuSelection != sMoveTutorMenu->numMenuChoices - 1)
+ {
+ sMoveTutorMenu->state = 8;
+ StringCopy(gStringVar2, sMoveTutorMenu->moveNames[sMoveTutorMenu->menuSelection]);
+ StringExpandPlaceholders(gStringVar4, gOtherText_TeachSpecificMove);
+ MenuPrintMessage(gStringVar4, 3, 15);
+ }
+ else
+ {
+ StringExpandPlaceholders(gStringVar4, gOtherText_GiveUpTeachingMove);
+ MenuPrintMessage(gStringVar4, 3, 15);
+ sMoveTutorMenu->state = 12;
+ }
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ sMoveTutorMenu->state = 12;
+ StringExpandPlaceholders(gStringVar4, gOtherText_GiveUpTeachingMove);
+ MenuPrintMessage(gStringVar4, 3, 15);
+ }
+ if (sMoveTutorMenu->numMenuChoices > 3)
+ {
+ gSprites[2].invisible = FALSE;
+ gSprites[3].invisible = FALSE;
+ if (sMoveTutorMenu->curMenuChoice == 0)
+ gSprites[2].invisible = TRUE;
+ else if (sMoveTutorMenu->curMenuChoice == sMoveTutorMenu->numMenuChoices - 3)
+ gSprites[3].invisible = TRUE;
+ }
+}
+
+static void DrawMoveSelectionWindow(void)
+{
+ u8 menuChoice = sMoveTutorMenu->curMenuChoice;
+ u8 *str = gTileBuffer;
+ s32 i;
+
+ for (i = 0; i < 3; i++)
+ {
+ if (menuChoice >= sMoveTutorMenu->numMenuChoices)
+ {
+ str = AlignStringInMenuWindow(str, gEmptyString_81E72B0, 0x90, 0);
+ }
+ else if (menuChoice == sMoveTutorMenu->numMenuChoices - 1)
+ {
+ str = AlignStringInMenuWindow(str, gOtherText_Exit, 0x90, 0);
+ }
+ else
+ {
+ u16 moveId = sMoveTutorMenu->movesToLearn[menuChoice];
+
+ if (sMoveTutorMenu->showContestInfo)
+ str = AlignStringInMenuWindow(str, gContestCategoryNames[gContestMoves[moveId].contestCategory], 0x27, 0);
+ else
+ str = AlignStringInMenuWindow(str, gTypeNames[gBattleMoves[moveId].type], 0x27, 0);
+
+ str = AlignStringInMenuWindow(str, sMoveTutorMenu->moveNames[menuChoice], 0x72, 0);
+
+ str[0] = CHAR_P;
+ str[1] = CHAR_P;
+ str[2] = CHAR_SLASH;
+ str += 3;
+
+ str = AlignInt1InMenuWindow(str, gBattleMoves[moveId].pp, 0x90, 0);
+ }
+ *str++ = CHAR_NEWLINE;
+ menuChoice++;
+ }
+ *str = EOS;
+ Menu_PrintText(gTileBuffer, 11, 1);
+ MoveCursorPos(0);
+}
+
+static const u8 sMoveInfoTextCoords[7][3] =
+{
+ {11, 1, 1},
+ { 3, 6, 2},
+ {24, 1, 3},
+ { 3, 11, 4},
+ { 5, 4, 5},
+ { 3, 6, 6},
+ { 3, 11, 7},
+};
+
+static const u8 sBattleMoveInfoCoordIds[] = {0, 1, 2, 3};
+static const u8 sContestMoveInfoCoordIds[] = {4, 5, 6};
+
+void PrintMoveInfo(u16 moveId, const u8 *moveInfoCoords)
+{
+ u8 str[0x34];
+ u8 numHearts;
+ u8 i;
+
+ StringCopy(str, gExpandedPlaceholder_Empty);
+ switch (moveInfoCoords[2])
+ {
+ case 1:
+ break;
+ case 2:
+ if (gBattleMoves[moveId].power < 2)
+ AlignStringInMenuWindow(str, gOtherText_ThreeDashes2, 32, 2);
+ else
+ AlignInt1InMenuWindow(str, gBattleMoves[moveId].power, 32, 2);
+ Menu_PrintText(str, moveInfoCoords[0], moveInfoCoords[1]);
+ break;
+ case 4:
+ if (gBattleMoves[moveId].accuracy == 0)
+ AlignStringInMenuWindow(str, gOtherText_ThreeDashes2, 32, 2);
+ else
+ AlignInt1InMenuWindow(str, gBattleMoves[moveId].accuracy, 32, 2);
+ Menu_PrintText(str, moveInfoCoords[0], moveInfoCoords[1]);
+ break;
+ case 6:
+ Menu_EraseWindowRect(moveInfoCoords[0], moveInfoCoords[1], moveInfoCoords[0], moveInfoCoords[1] + 1);
+ numHearts = gContestEffects[gContestMoves[moveId].effect].appeal / 10;
+ if (numHearts == 255)
+ numHearts = 0;
+ for (i = 0; i < 8; i++)
+ {
+ if (i < numHearts)
+ StartSpriteAnim(&gSprites[sMoveTutorMenu->spriteIDs[i + 4]], 1);
+ else
+ StartSpriteAnim(&gSprites[sMoveTutorMenu->spriteIDs[i + 4]], 0);
+ }
+ break;
+ case 7:
+ Menu_EraseWindowRect(moveInfoCoords[0], moveInfoCoords[1], moveInfoCoords[0], moveInfoCoords[1] + 1);
+ numHearts = gContestEffects[gContestMoves[moveId].effect].jam / 10;
+ if (numHearts == 255)
+ numHearts = 0;
+ for (i = 0; i < 8; i++)
+ {
+ if (i < numHearts)
+ StartSpriteAnim(&gSprites[sMoveTutorMenu->spriteIDs[i + 12]], 3);
+ else
+ StartSpriteAnim(&gSprites[sMoveTutorMenu->spriteIDs[i + 12]], 2);
+ }
+ break;
+ }
+}
+
+static void DrawMoveInfoWindow(bool8 contestInfo, int unused)
+{
+ u16 i;
+
+ if (sMoveTutorMenu->menuSelection != sMoveTutorMenu->numMenuChoices - 1)
+ {
+ u16 moveId = sMoveTutorMenu->movesToLearn[sMoveTutorMenu->menuSelection];
+
+ if (contestInfo)
+ {
+ for (i = 0; i < 16; i++)
+ gSprites[sMoveTutorMenu->spriteIDs[i + 4]].invisible = FALSE;
+ for (i = 0; i < 3; i++)
+ PrintMoveInfo(moveId, sMoveInfoTextCoords[sContestMoveInfoCoordIds[i]]);
+ sub_8072AB0(gContestEffectStrings[gContestMoves[moveId].effect], 0x58, 0x48, 0x90, 32, 1);
+ }
+ else
+ {
+ u8 var;
+
+ for (i = 0; i < 4; i++)
+ PrintMoveInfo(moveId, sMoveInfoTextCoords[sBattleMoveInfoCoordIds[i]]);
+ var = sub_8072A18(gMoveDescriptions[moveId - 1], 0x58, 0x48, 0x90, 1);
+ if (var < 2)
+ {
+ u8 r1 = var * 2 + 9;
+
+ Menu_BlankWindowRect(11, r1, 28, 12);
+ }
+ }
+ }
+ else
+ {
+ if (contestInfo)
+ {
+ Menu_EraseWindowRect(sMoveInfoTextCoords[5][0], sMoveInfoTextCoords[5][1], sMoveInfoTextCoords[5][0], sMoveInfoTextCoords[5][1] + 1);
+ Menu_EraseWindowRect(sMoveInfoTextCoords[6][0], sMoveInfoTextCoords[6][1], sMoveInfoTextCoords[6][0], sMoveInfoTextCoords[6][1] + 1);
+ for (i = 0; i < 16; i++)
+ gSprites[sMoveTutorMenu->spriteIDs[i + 4]].invisible = TRUE;
+ }
+ else
+ {
+ Menu_EraseWindowRect(sMoveInfoTextCoords[1][0], sMoveInfoTextCoords[1][1], sMoveInfoTextCoords[1][0] + 3, sMoveInfoTextCoords[1][1] + 1);
+ Menu_EraseWindowRect(sMoveInfoTextCoords[3][0], sMoveInfoTextCoords[3][1], sMoveInfoTextCoords[3][0] + 3, sMoveInfoTextCoords[3][1] + 1);
+ }
+ Menu_EraseWindowRect(11, 9, 28, 12);
+ }
+}
+
+static void RedrawMoveInfoWindow(void)
+{
+ Menu_EraseWindowRect(21, 7, 27, 12);
+ DrawMoveInfoWindow(sMoveTutorMenu->showContestInfo, 0);
+}
diff --git a/src/mystery_event_menu.c b/src/mystery_event_menu.c
index 56801ff53..b39804b79 100644
--- a/src/mystery_event_menu.c
+++ b/src/mystery_event_menu.c
@@ -15,6 +15,7 @@
#include "text.h"
#include "title_screen.h"
#include "ewram.h"
+#include "debug.h"
static EWRAM_DATA u8 gUnknown_02039338 = 0;
@@ -46,8 +47,8 @@ void CB2_InitMysteryEventMenu(void)
FreeAllSpritePalettes();
ResetTasks();
SetVBlankCallback(VBlankCB);
- Text_LoadWindowTemplate(&gWindowTemplate_81E6CE4);
- InitMenuWindow(&gWindowTemplate_81E6CE4);
+ Text_LoadWindowTemplate(&gMenuTextWindowTemplate);
+ InitMenuWindow(&gMenuTextWindowTemplate);
Menu_EraseScreen();
REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON;
REG_BLDCNT = 0;
@@ -88,7 +89,7 @@ static void CB2_MysteryEventMenu(void)
{
case 0:
Menu_DrawStdWindowFrame(0, 14, 29, 19);
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
gMain.state++;
break;
case 1:
@@ -313,7 +314,7 @@ static void CB2_MysteryEventMenu(void)
}
break;
case 15:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gMain.state++;
break;
case 16:
@@ -347,8 +348,6 @@ static const u8 Str_843DA84[] = _("LR: select A: send。");
static const u8 Str_843DA98[] = _("sending。。。");
static const u8 Str_843DAA3[] = _("completed。");
-extern const struct {const u8 *text; void (*func)();} gUnknown_Debug_842E2D0[];
-extern const u8 gUnknown_Debug_842E350;
void debug_sub_815D1D8();
@@ -395,8 +394,8 @@ void debug_sub_815D15C(void)
FreeAllSpritePalettes();
ResetTasks();
SetVBlankCallback(VBlankCB);
- Text_LoadWindowTemplate(&gWindowTemplate_81E6CE4);
- InitMenuWindow(&gWindowTemplate_81E6CE4);
+ Text_LoadWindowTemplate(&gMenuTextWindowTemplate);
+ InitMenuWindow(&gMenuTextWindowTemplate);
Menu_EraseScreen();
REG_DISPCNT = DISPCNT_BG0_ON | DISPCNT_OBJ_1D_MAP | DISPCNT_MODE_0;
REG_BLDCNT = 0;
@@ -417,7 +416,7 @@ void debug_sub_815D1D8(void)
{
case 0:
Menu_DrawStdWindowFrame(3, 14, 27, 19);
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
gMain.state++;
break;
case 1:
@@ -476,7 +475,7 @@ void debug_sub_815D1D8(void)
case 10:
if (gMain.newKeys & A_BUTTON)
{
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gMain.state++;
}
break;
diff --git a/src/mystery_event_script.c b/src/mystery_event_script.c
index 6fcad66ac..58f7f8627 100644
--- a/src/mystery_event_script.c
+++ b/src/mystery_event_script.c
@@ -114,8 +114,9 @@ static void SetWord(u8 *ptr, u32 val)
ptr[3] = val >> 24;
}
-bool8 unref_sub_81261B4(u8 *a1, int a2)
+bool8 debug_sub_81261B4(u8 *a1, const u8 * _a2)
{
+ int a2 = (int)_a2;
if (a1[0x0] == 1 && a1[0x11] == 15 && !GetWord(a1 + 0x12))
{
int v4 = GetWord(a1 + 0x16) - a2 + (int)a1;
@@ -128,8 +129,9 @@ bool8 unref_sub_81261B4(u8 *a1, int a2)
return FALSE;
}
-bool8 unref_sub_812620C(u8 *a1, int a2)
+bool8 debug_sub_812620C(u8 *a1, const u8 * _a2)
{
+ int a2 = (int)_a2;
if (a1[0x0] == 1 && a1[0x11] == 16 && !GetWord(a1 + 0x12))
{
int v4 = GetWord(a1 + 0x16) - a2 + (int)a1;
diff --git a/src/naming_screen.c b/src/naming_screen.c
index 59b9b4d84..afc17fab3 100644
--- a/src/naming_screen.c
+++ b/src/naming_screen.c
@@ -26,8 +26,6 @@
#define COLUMN_COUNT 10
#endif
-extern u8 CreateMonIcon(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority, u32 personality);
-
const u8 gSpriteImage_83CE094[] = INCBIN_U8("graphics/naming_screen/pc_icon/0.4bpp");
const u8 gSpriteImage_83CE154[] = INCBIN_U8("graphics/naming_screen/pc_icon/1.4bpp");
@@ -130,9 +128,9 @@ static void sub_80B76E0();
static void nullsub_20(u8, u8);
static void PrintKeyboardCharacters(u8);
-void DoNamingScreen(u8 templateNum, u8 *destBuffer, u16 c, u16 d, u32 e, MainCallback returnCallback)
+void DoNamingScreen(u8 templateNum, u8 *destBuffer, u16 speciesOrPlayerGender, u16 monGender, u32 monPersonality, MainCallback returnCallback)
{
- StoreNamingScreenParameters(templateNum, destBuffer, c, d, e, returnCallback);
+ StoreNamingScreenParameters(templateNum, destBuffer, speciesOrPlayerGender, monGender, monPersonality, returnCallback);
SetMainCallback2(C2_NamingScreen);
}
@@ -194,22 +192,22 @@ static void VBlankCB_NamingScreen(void)
REG_BG1VOFS = namingScreenDataPtr->bg1vOffset;
REG_BG2VOFS = namingScreenDataPtr->bg2vOffset;
REG_BG1CNT &= 0xFFFC;
- REG_BG1CNT |= namingScreenDataPtr->unk8;
+ REG_BG1CNT |= namingScreenDataPtr->bg1Priority;
REG_BG2CNT &= 0xFFFC;
- REG_BG2CNT |= namingScreenDataPtr->unkA;
+ REG_BG2CNT |= namingScreenDataPtr->bg2Priority;
}
-static void StoreNamingScreenParameters(u8 templateNum, u8 *destBuffer, u16 c, u16 d, u32 e, MainCallback returnCallback)
+static void StoreNamingScreenParameters(u8 templateNum, u8 *destBuffer, u16 speciesOrPlayerGender, u16 monGender, u32 monPersonality, MainCallback returnCallback)
{
struct Task *task;
//Create a task that does nothing, and use it as a temporary space to store parameters
task = &gTasks[CreateTask(Task_DoNothing, 0xFF)];
task->data[0] = templateNum;
- task->data[1] = c;
- task->data[2] = d;
- task->data[3] = e >> 16;
- task->data[4] = e;
+ task->data[1] = speciesOrPlayerGender;
+ task->data[2] = monGender;
+ task->data[3] = monPersonality >> 16;
+ task->data[4] = monPersonality;
StoreWordInTwoHalfwords(&task->data[5], (u32)destBuffer);
StoreWordInTwoHalfwords(&task->data[7], (u32)returnCallback);
}
@@ -222,9 +220,9 @@ static void GetNamingScreenParameters(void)
taskId = FindTaskIdByFunc(Task_DoNothing);
task = &gTasks[taskId];
namingScreenDataPtr->templateNum = task->data[0];
- namingScreenDataPtr->unk3E = task->data[1];
- namingScreenDataPtr->unk40 = task->data[2];
- namingScreenDataPtr->unk42 = (task->data[3] << 16) | (u16)task->data[4];
+ namingScreenDataPtr->speciesOrPlayerGender = task->data[1];
+ namingScreenDataPtr->monGender = task->data[2];
+ namingScreenDataPtr->monPersonality = (task->data[3] << 16) | (u16)task->data[4];
LoadWordFromTwoHalfwords(&task->data[5], (u32 *)&namingScreenDataPtr->destBuffer);
LoadWordFromTwoHalfwords(&task->data[7], (u32 *)&namingScreenDataPtr->returnCallback);
DestroyTask(taskId);
@@ -294,16 +292,16 @@ static void NamingScreen_Init(void)
namingScreenDataPtr->state = 0;
namingScreenDataPtr->bg1vOffset = 0;
namingScreenDataPtr->bg2vOffset = 0;
- namingScreenDataPtr->unk8 = 1;
- namingScreenDataPtr->unkA = 2;
- namingScreenDataPtr->unkC = 0;
- namingScreenDataPtr->unkD = 1;
+ namingScreenDataPtr->bg1Priority = BGCNT_PRIORITY(1);
+ namingScreenDataPtr->bg2Priority = BGCNT_PRIORITY(2);
+ namingScreenDataPtr->bgToReveal = 0;
+ namingScreenDataPtr->bgToHide = 1;
namingScreenDataPtr->template = sNamingScreenTemplates[namingScreenDataPtr->templateNum];
- namingScreenDataPtr->currentPage = namingScreenDataPtr->template->unk4;
- namingScreenDataPtr->unk2 = 14 - namingScreenDataPtr->template->maxChars / 2;
- namingScreenDataPtr->unk3C = gKeyRepeatStartDelay;
+ namingScreenDataPtr->currentPage = namingScreenDataPtr->template->initialPage;
+ namingScreenDataPtr->nameLeftOffset = 14 - namingScreenDataPtr->template->maxChars / 2;
+ namingScreenDataPtr->keyRepeatStartDelayCopy = gKeyRepeatStartDelay;
memset(namingScreenDataPtr->textBuffer, 0xFF, sizeof(namingScreenDataPtr->textBuffer));
- if (namingScreenDataPtr->template->unk0 != 0)
+ if (namingScreenDataPtr->template->copyExistingString)
StringCopy(namingScreenDataPtr->textBuffer, namingScreenDataPtr->destBuffer);
gKeyRepeatStartDelay = 16;
}
@@ -394,7 +392,7 @@ static void Task_NamingScreenMain(u8 taskId)
static bool8 MainState_BeginFadeIn(struct Task *task)
{
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
namingScreenDataPtr->state++;
return 0;
}
@@ -471,7 +469,7 @@ static bool8 MainState_6(struct Task *task)
SetInputState(INPUT_STATE_DISABLED);
sub_80B68D8(0);
sub_80B6460(3, 0, 1);
- gKeyRepeatStartDelay = namingScreenDataPtr->unk3C;
+ gKeyRepeatStartDelay = namingScreenDataPtr->keyRepeatStartDelayCopy;
if (namingScreenDataPtr->templateNum == NAMING_SCREEN_TEMPLATE_MON_NAME
&& CalculatePlayerPartyCount() >= 6)
{
@@ -495,7 +493,7 @@ static bool8 MainState_UpdateSentToPCMessage(struct Task *task)
static bool8 MainState_BeginFadeInOut(struct Task *task)
{
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
namingScreenDataPtr->state++;
return FALSE;
}
@@ -943,14 +941,13 @@ static bool8 PageSwapAnimState_1(struct Task *task)
};
task->tFrameCount += 4;
- *arr[namingScreenDataPtr->unkC] = Sin(task->tFrameCount, 40);
- *arr[namingScreenDataPtr->unkD] = Sin((task->tFrameCount + 128) & 0xFF, 40);
+ *arr[namingScreenDataPtr->bgToReveal] = Sin(task->tFrameCount, 40);
+ *arr[namingScreenDataPtr->bgToHide] = Sin((task->tFrameCount + 128) & 0xFF, 40);
if (task->tFrameCount >= 64)
{
- u8 temp = namingScreenDataPtr->unk8; //Why u8 and not u16?
-
- namingScreenDataPtr->unk8 = namingScreenDataPtr->unkA;
- namingScreenDataPtr->unkA = temp;
+ u8 temp = namingScreenDataPtr->bg1Priority;
+ namingScreenDataPtr->bg1Priority = namingScreenDataPtr->bg2Priority;
+ namingScreenDataPtr->bg2Priority = temp;
task->tState++;
}
return 0;
@@ -961,14 +958,14 @@ static bool8 PageSwapAnimState_2(struct Task *task)
u16 *const arr[] = {&namingScreenDataPtr->bg2vOffset, &namingScreenDataPtr->bg1vOffset};
task->tFrameCount += 4;
- *arr[namingScreenDataPtr->unkC] = Sin(task->tFrameCount, 40);
- *arr[namingScreenDataPtr->unkD] = Sin((task->tFrameCount + 128) & 0xFF, 40);
+ *arr[namingScreenDataPtr->bgToReveal] = Sin(task->tFrameCount, 40);
+ *arr[namingScreenDataPtr->bgToHide] = Sin((task->tFrameCount + 128) & 0xFF, 40);
if (task->tFrameCount >= 128)
{
- u8 temp = namingScreenDataPtr->unkC;
+ u8 temp = namingScreenDataPtr->bgToReveal;
- namingScreenDataPtr->unkC = namingScreenDataPtr->unkD;
- namingScreenDataPtr->unkD = temp;
+ namingScreenDataPtr->bgToReveal = namingScreenDataPtr->bgToHide;
+ namingScreenDataPtr->bgToHide = temp;
task->tState++;
}
return 0;
@@ -1114,7 +1111,7 @@ static void sub_80B6A80(void)
u8 spriteId3;
spriteId1 = CreateSprite(&gSpriteTemplate_83CE5C8, 0xCC, 0x50, 0);
- namingScreenDataPtr->unk10 = spriteId1;
+ namingScreenDataPtr->pageIndicatorSpriteId = spriteId1;
SetSubspriteTables(&gSprites[spriteId1], gSubspriteTables_83CE558);
spriteId2 = CreateSprite(&gSpriteTemplate_83CE5F8, 0xCC, 0x4C, 1);
@@ -1128,7 +1125,7 @@ static void sub_80B6A80(void)
static void sub_80B6B14(void)
{
- struct Sprite *sprite = &gSprites[namingScreenDataPtr->unk10];
+ struct Sprite *sprite = &gSprites[namingScreenDataPtr->pageIndicatorSpriteId];
sprite->data[0] = 2;
sprite->data[1] = namingScreenDataPtr->currentPage;
@@ -1224,16 +1221,16 @@ static void sub_80B6CA8(void)
static void sub_80B6D04(void)
{
u8 spriteId;
- s16 r1;
+ s16 left;
u8 i;
- r1 = (namingScreenDataPtr->unk2 - 1) * 8 + 4;
- spriteId = CreateSprite(&gSpriteTemplate_83CE658, r1, 0x28, 0);
+ left = (namingScreenDataPtr->nameLeftOffset - 1) * 8 + 4;
+ spriteId = CreateSprite(&gSpriteTemplate_83CE658, left, 0x28, 0);
gSprites[spriteId].oam.priority = 3;
- r1 = namingScreenDataPtr->unk2 * 8 + 4;
- for (i = 0; i < namingScreenDataPtr->template->maxChars; i++, r1 += 8)
+ left = namingScreenDataPtr->nameLeftOffset * 8 + 4;
+ for (i = 0; i < namingScreenDataPtr->template->maxChars; i++, left += 8)
{
- spriteId = CreateSprite(&gSpriteTemplate_83CE670, r1, 0x2C, 0);
+ spriteId = CreateSprite(&gSpriteTemplate_83CE670, left, 0x2C, 0);
gSprites[spriteId].oam.priority = 3;
gSprites[spriteId].data[0] = i;
}
@@ -1292,7 +1289,7 @@ static void (*const gUnknown_083CE2E0[])(void) =
static void sub_80B6E44(void)
{
- gUnknown_083CE2E0[namingScreenDataPtr->template->unk2]();
+ gUnknown_083CE2E0[namingScreenDataPtr->template->iconFunction]();
}
static void nullsub_40(void)
@@ -1304,8 +1301,8 @@ static void sub_80B6E68(void)
u8 rivalGfxId;
u8 spriteId;
- rivalGfxId = GetRivalAvatarGraphicsIdByStateIdAndGender(0, namingScreenDataPtr->unk3E);
- spriteId = AddPseudoFieldObject(rivalGfxId, SpriteCallbackDummy, 0x38, 0x18, 0);
+ rivalGfxId = GetRivalAvatarGraphicsIdByStateIdAndGender(PLAYER_AVATAR_STATE_NORMAL, namingScreenDataPtr->speciesOrPlayerGender);
+ spriteId = AddPseudoEventObject(rivalGfxId, SpriteCallbackDummy, 0x38, 0x18, 0);
gSprites[spriteId].oam.priority = 3;
StartSpriteAnim(&gSprites[spriteId], 4);
}
@@ -1324,7 +1321,7 @@ static void sub_80B6EFC(void)
u8 spriteId;
sub_809D51C();
- spriteId = CreateMonIcon(namingScreenDataPtr->unk3E, SpriteCallbackDummy, 0x34, 0x18, 0, namingScreenDataPtr->unk42);
+ spriteId = CreateMonIcon(namingScreenDataPtr->speciesOrPlayerGender, SpriteCallbackDummy, 0x34, 0x18, 0, namingScreenDataPtr->monPersonality);
gSprites[spriteId].oam.priority = 3;
}
@@ -1642,8 +1639,8 @@ static void sub_80B75C4(void)
(u16 *)(VRAM + 0xE800),
};
- gUnknown_083CE2F0[namingScreenDataPtr->currentPage][0](arr[namingScreenDataPtr->unkC]);
- gUnknown_083CE2F0[namingScreenDataPtr->currentPage][1](arr[namingScreenDataPtr->unkD]);
+ gUnknown_083CE2F0[namingScreenDataPtr->currentPage][0](arr[namingScreenDataPtr->bgToReveal]);
+ gUnknown_083CE2F0[namingScreenDataPtr->currentPage][1](arr[namingScreenDataPtr->bgToHide]);
}
static void sub_80B7614(void)
@@ -1654,7 +1651,7 @@ static void sub_80B7614(void)
(u16 *)(VRAM + 0xE800),
};
- gUnknown_083CE2F0[namingScreenDataPtr->currentPage][1](arr[namingScreenDataPtr->unkD]);
+ gUnknown_083CE2F0[namingScreenDataPtr->currentPage][1](arr[namingScreenDataPtr->bgToHide]);
}
static void sub_80B7650(u16 *vramBuffer)
@@ -1708,12 +1705,12 @@ static void sub_80B76E0(u16 *vramBuffer, const u16 *src)
static void sub_80B772C(void)
{
- nullsub_20(namingScreenDataPtr->currentPage, namingScreenDataPtr->unkC);
+ nullsub_20(namingScreenDataPtr->currentPage, namingScreenDataPtr->bgToReveal);
}
static void sub_80B7740(void)
{
- nullsub_20((namingScreenDataPtr->currentPage + 1) % 3, namingScreenDataPtr->unkD);
+ nullsub_20((namingScreenDataPtr->currentPage + 1) % 3, namingScreenDataPtr->bgToHide);
}
static void nullsub_20(u8 a, u8 b)
@@ -1779,9 +1776,9 @@ static u8 GetCharAtKeyboardPos(s16 a, s16 b)
static void sub_80B7794(void)
{
- BasicInitMenuWindow(gUnknown_083CE328[namingScreenDataPtr->currentPage][0][namingScreenDataPtr->unkC]);
+ BasicInitMenuWindow(gUnknown_083CE328[namingScreenDataPtr->currentPage][0][namingScreenDataPtr->bgToReveal]);
gUnknown_083CE310[namingScreenDataPtr->currentPage][0]();
- BasicInitMenuWindow(gUnknown_083CE328[namingScreenDataPtr->currentPage][1][namingScreenDataPtr->unkD]);
+ BasicInitMenuWindow(gUnknown_083CE328[namingScreenDataPtr->currentPage][1][namingScreenDataPtr->bgToHide]);
gUnknown_083CE310[namingScreenDataPtr->currentPage][1]();
sub_80B772C();
sub_80B7740();
@@ -1789,7 +1786,7 @@ static void sub_80B7794(void)
static void sub_80B77F8(void)
{
- BasicInitMenuWindow(gUnknown_083CE328[namingScreenDataPtr->currentPage][1][namingScreenDataPtr->unkD]);
+ BasicInitMenuWindow(gUnknown_083CE328[namingScreenDataPtr->currentPage][1][namingScreenDataPtr->bgToHide]);
gUnknown_083CE310[namingScreenDataPtr->currentPage][1]();
sub_80B7740();
}
@@ -1822,7 +1819,7 @@ static void sub_80B78A8(void)
{
BasicInitMenuWindow(&gWindowTemplate_81E6F4C);
gUnknown_083CE358[namingScreenDataPtr->templateNum]();
- gUnknown_083CE368[namingScreenDataPtr->template->unk3]();
+ gUnknown_083CE368[namingScreenDataPtr->template->addGenderIcon]();
Menu_PrintText(namingScreenDataPtr->template->title, 9, 2);
}
@@ -1832,7 +1829,7 @@ static void nullsub_61(void)
static void sub_80B78F8(void)
{
- StringCopy(gStringVar1, gSpeciesNames[(s16)namingScreenDataPtr->unk3E]);
+ StringCopy(gStringVar1, gSpeciesNames[(s16)namingScreenDataPtr->speciesOrPlayerGender]);
}
static void nullsub_62(void)
@@ -1843,9 +1840,9 @@ static void sub_80B7924(void)
{
u8 genderSymbol[2] = _("♂");
- if ((s16)namingScreenDataPtr->unk40 != MON_GENDERLESS)
+ if ((s16)namingScreenDataPtr->monGender != MON_GENDERLESS)
{
- if ((s16)namingScreenDataPtr->unk40 == MON_FEMALE)
+ if ((s16)namingScreenDataPtr->monGender == MON_FEMALE)
genderSymbol[0] = 0xB6; //female symbol
Menu_PrintText(genderSymbol, 0x14, 4);
}
@@ -1864,7 +1861,7 @@ static void sub_80B7960(void)
string += 6;
StringCopy(string, namingScreenDataPtr->textBuffer);
BasicInitMenuWindow(&gWindowTemplate_81E6F4C);
- Menu_PrintText(gStringVar1, namingScreenDataPtr->unk2, 4);
+ Menu_PrintText(gStringVar1, namingScreenDataPtr->nameLeftOffset, 4);
}
//--------------------------------------------------
@@ -1873,40 +1870,31 @@ static void sub_80B7960(void)
static const struct NamingScreenTemplate playerNamingScreenTemplate =
{
- .unk0 = 0,
+ .copyExistingString = 0,
.maxChars = 7,
- .unk2 = 1,
- .unk3 = 0,
- .unk4 = 0,
- .unk5 = 0,
- .unk6 = 0,
- .unk7 = 0,
+ .iconFunction = 1,
+ .addGenderIcon = 0,
+ .initialPage = 0,
.title = OtherText_YourName,
};
static const struct NamingScreenTemplate pcBoxNamingTemplate =
{
- .unk0 = 0,
+ .copyExistingString = 0,
.maxChars = 8,
- .unk2 = 2,
- .unk3 = 0,
- .unk4 = 0,
- .unk5 = 0,
- .unk6 = 0,
- .unk7 = 0,
+ .iconFunction = 2,
+ .addGenderIcon = 0,
+ .initialPage = 0,
.title = OtherText_BoxName,
};
static const struct NamingScreenTemplate monNamingScreenTemplate =
{
- .unk0 = 0,
+ .copyExistingString = 0,
.maxChars = 10,
- .unk2 = 3,
- .unk3 = 1,
- .unk4 = 0,
- .unk5 = 0,
- .unk6 = 0,
- .unk7 = 0,
+ .iconFunction = 3,
+ .addGenderIcon = 1,
+ .initialPage = 0,
.title = OtherText_PokeName,
};
diff --git a/src/new_game.c b/src/new_game.c
index f8a5524f5..683a22801 100644
--- a/src/new_game.c
+++ b/src/new_game.c
@@ -137,7 +137,7 @@ void debug_sub_8052E04()
void WarpToTruck(void)
{
Overworld_SetWarpDestination(MAP_GROUP(INSIDE_OF_TRUCK), MAP_NUM(INSIDE_OF_TRUCK), -1, -1, -1);
- warp_in();
+ WarpIntoMap();
}
void ClearSav2(void)
diff --git a/src/option_menu.c b/src/option_menu.c
index a2d32ffb6..2a5b0e534 100644
--- a/src/option_menu.c
+++ b/src/option_menu.c
@@ -116,7 +116,7 @@ void CB2_InitOptionMenu(void)
gMain.state++;
break;
case 6:
- BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
gMain.state++;
break;
case 7:
@@ -262,7 +262,7 @@ static void Task_OptionMenuSave(u8 taskId)
gSaveBlock2.optionsButtonMode = gTasks[taskId].tOptButtonMode;
gSaveBlock2.optionsWindowFrameType = gTasks[taskId].tOptFrameType;
- BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gTasks[taskId].func = Task_OptionMenuFadeOut;
}
@@ -463,7 +463,7 @@ static void FrameType_DrawChoices(u8 selection)
Menu_PrintText(text, 18, 15);
}
#elif GERMAN
-__attribute__((naked))
+NAKED
static void FrameType_DrawChoices(u8 selection)
{
asm(".syntax unified\n\
diff --git a/src/overworld.c b/src/overworld.c
index 6376aa1af..f6dea1271 100644
--- a/src/overworld.c
+++ b/src/overworld.c
@@ -50,20 +50,14 @@
#include "wild_encounter.h"
#ifdef SAPPHIRE
-#define LEGENDARY_MUSIC BGM_OOAME // Heavy Rain
+#define LEGENDARY_MUSIC MUS_OOAME // Heavy Rain
#else
-#define LEGENDARY_MUSIC BGM_HIDERI // Drought
+#define LEGENDARY_MUSIC MUS_HIDERI // Drought
#endif
-struct UnkTVStruct
-{
- u32 tv_field_0;
- u32 tv_field_4;
-};
-
extern u8 gUnknown_020297ED;
-extern u16 gUnknown_03004898;
-extern u16 gUnknown_0300489C;
+extern u16 gTotalCameraPixelOffsetY;
+extern u16 gTotalCameraPixelOffsetX;
extern u8 S_WhiteOut[];
extern u8 gUnknown_0819FC9F[];
@@ -86,28 +80,34 @@ extern u8 TradeRoom_PromptToCancelLink[];
extern u8 TradeRoom_TerminateLink[];
extern u8 gUnknown_081A4508[];
-extern struct MapData * const gMapAttributes[];
+extern struct MapLayout * const gMapLayouts[];
extern struct MapHeader * const * const gMapGroups[];
extern s32 gMaxFlashLevel;
-EWRAM_DATA struct WarpData gUnknown_020297F0 = {0};
-EWRAM_DATA struct WarpData gWarpDestination = {0}; // new warp position
-EWRAM_DATA struct WarpData gUnknown_02029800 = {0};
-EWRAM_DATA struct WarpData gUnknown_02029808 = {0};
-EWRAM_DATA struct UnkPlayerStruct gUnknown_02029810 = {0};
+EWRAM_DATA struct WarpData gLastUsedWarp = {0};
+EWRAM_DATA struct WarpData gWarpDestination = {0};
+EWRAM_DATA struct WarpData gFixedDiveWarp = {0};
+EWRAM_DATA struct WarpData gFixedHoleWarp = {0};
+EWRAM_DATA struct InitialPlayerAvatarState gInitialPlayerAvatarState = {0};
EWRAM_DATA static u16 sAmbientCrySpecies = 0;
EWRAM_DATA static bool8 sIsAmbientCryWaterMon = FALSE;
-EWRAM_DATA struct LinkPlayerMapObject gLinkPlayerMapObjects[4] = {0};
+EWRAM_DATA struct LinkPlayerEventObject gLinkPlayerEventObjects[4] = {0};
static u8 gUnknown_03000580[4];
static u16 (*gUnknown_03000584)(u32);
static u8 gUnknown_03000588;
u16 word_3004858;
-void (*gFieldCallback)(void);
+extern void (*gFieldCallback)(void);
u8 gUnknown_03004860;
u8 gFieldLinkPlayerCount;
+static u8 GetAdjustedInitialTransitionFlags(struct InitialPlayerAvatarState*, u16, u8);
+static u8 GetAdjustedInitialDirection(struct InitialPlayerAvatarState*, u8, u16, u8);
+static bool32 sub_805483C(u8*);
+static void c2_80567AC(void);
+static void InitOverworldGraphicsRegisters(void);
+
static const struct WarpData sDummyWarpData =
{
.mapGroup = -1,
@@ -129,20 +129,20 @@ static const u8 sUnusedData[] =
0x2C, 0x00, 0x00, 0x00,
};
-const struct UCoords32 gUnknown_0821664C[] =
-{
- { 0, 0},
- { 0, 1},
- { 0, -1},
- {-1, 0},
- { 1, 0},
- {-1, 1},
- { 1, 1},
- {-1, -1},
- { 1, -1},
+const struct UCoords32 gDirectionToVectors[] =
+{
+ { 0, 0}, // DIR_NONE
+ { 0, 1}, // DIR_SOUTH
+ { 0, -1}, // DIR_NORTH
+ {-1, 0}, // DIR_WEST
+ { 1, 0}, // DIR_EAST
+ {-1, 1}, // DIR_SOUTHWEST
+ { 1, 1}, // DIR_SOUTHEAST
+ {-1, -1}, // DIR_NORTHWEST
+ { 1, -1}, // DIR_NORTHEAST
};
-const struct ScanlineEffectParams gUnknown_08216694 =
+static const struct ScanlineEffectParams sFlashEffectParams =
{
(void *)REG_ADDR_WIN0H,
((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1,
@@ -150,22 +150,22 @@ const struct ScanlineEffectParams gUnknown_08216694 =
0,
};
-static u8 sub_8055C68(struct LinkPlayerMapObject *, struct MapObject *, u8);
-static u8 sub_8055C88(struct LinkPlayerMapObject *, struct MapObject *, u8);
-static u8 sub_8055C8C(struct LinkPlayerMapObject *, struct MapObject *, u8);
+static u8 sub_8055C68(struct LinkPlayerEventObject *, struct EventObject *, u8);
+static u8 sub_8055C88(struct LinkPlayerEventObject *, struct EventObject *, u8);
+static u8 sub_8055C8C(struct LinkPlayerEventObject *, struct EventObject *, u8);
-static u8 (*const gUnknown_082166A0[])(struct LinkPlayerMapObject *, struct MapObject *, u8) =
+static u8 (*const gUnknown_082166A0[])(struct LinkPlayerEventObject *, struct EventObject *, u8) =
{
sub_8055C68,
sub_8055C88,
sub_8055C8C,
};
-static u8 sub_8055CAC(struct LinkPlayerMapObject *, struct MapObject *, u8);
-static u8 sub_8055CB0(struct LinkPlayerMapObject *, struct MapObject *, u8);
-static u8 sub_8055D18(struct LinkPlayerMapObject *, struct MapObject *, u8);
+static u8 sub_8055CAC(struct LinkPlayerEventObject *, struct EventObject *, u8);
+static u8 sub_8055CB0(struct LinkPlayerEventObject *, struct EventObject *, u8);
+static u8 sub_8055D18(struct LinkPlayerEventObject *, struct EventObject *, u8);
-static u8 (*const gUnknown_082166AC[])(struct LinkPlayerMapObject *, struct MapObject *, u8) =
+static u8 (*const gUnknown_082166AC[])(struct LinkPlayerEventObject *, struct EventObject *, u8) =
{
sub_8055CAC,
sub_8055CB0,
@@ -180,10 +180,10 @@ static u8 (*const gUnknown_082166AC[])(struct LinkPlayerMapObject *, struct MapO
sub_8055D18,
};
-static void sub_8055D30(struct LinkPlayerMapObject *, struct MapObject *);
-static void sub_8055D38(struct LinkPlayerMapObject *, struct MapObject *);
+static void sub_8055D30(struct LinkPlayerEventObject *, struct EventObject *);
+static void sub_8055D38(struct LinkPlayerEventObject *, struct EventObject *);
-static void (*const gUnknown_082166D8[])(struct LinkPlayerMapObject *, struct MapObject *) =
+static void (*const gUnknown_082166D8[])(struct LinkPlayerEventObject *, struct EventObject *) =
{
sub_8055D30,
sub_8055D38,
@@ -197,12 +197,12 @@ static void DoWhiteOut(void)
ScrSpecial_HealPlayerParty();
Overworld_ResetStateAfterWhiteOut();
Overworld_SetWarpDestToLastHealLoc();
- warp_in();
+ WarpIntoMap();
}
void Overworld_ResetStateAfterFly(void)
{
- player_avatar_init_params_reset();
+ ResetInitialPlayerAvatarState();
FlagClear(FLAG_SYS_CYCLING_ROAD);
FlagClear(FLAG_SYS_CRUISE_MODE);
FlagClear(FLAG_SYS_SAFARI_MODE);
@@ -212,7 +212,7 @@ void Overworld_ResetStateAfterFly(void)
void Overworld_ResetStateAfterTeleport(void)
{
- player_avatar_init_params_reset();
+ ResetInitialPlayerAvatarState();
FlagClear(FLAG_SYS_CYCLING_ROAD);
FlagClear(FLAG_SYS_CRUISE_MODE);
FlagClear(FLAG_SYS_SAFARI_MODE);
@@ -223,7 +223,7 @@ void Overworld_ResetStateAfterTeleport(void)
void Overworld_ResetStateAfterDigEscRope(void)
{
- player_avatar_init_params_reset();
+ ResetInitialPlayerAvatarState();
FlagClear(FLAG_SYS_CYCLING_ROAD);
FlagClear(FLAG_SYS_CRUISE_MODE);
FlagClear(FLAG_SYS_SAFARI_MODE);
@@ -233,7 +233,7 @@ void Overworld_ResetStateAfterDigEscRope(void)
void Overworld_ResetStateAfterWhiteOut(void)
{
- player_avatar_init_params_reset();
+ ResetInitialPlayerAvatarState();
FlagClear(FLAG_SYS_CYCLING_ROAD);
FlagClear(FLAG_SYS_CRUISE_MODE);
FlagClear(FLAG_SYS_SAFARI_MODE);
@@ -241,7 +241,7 @@ void Overworld_ResetStateAfterWhiteOut(void)
FlagClear(FLAG_SYS_USE_FLASH);
}
-void sub_805308C(void)
+static void sub_805308C(void)
{
FlagClear(FLAG_SYS_SAFARI_MODE);
ChooseAmbientCrySpecies();
@@ -269,65 +269,65 @@ void IncrementGameStat(u8 index)
}
}
-u32 GetGameStat(u8 index)
+u32 GetGameStat(u8 stat)
{
- if (index >= NUM_GAME_STATS)
+ if (stat >= NUM_GAME_STATS)
return 0;
- return gSaveBlock1.gameStats[index];
+ return gSaveBlock1.gameStats[stat];
}
-void SetGameStat(u8 index, u32 value)
+void SetGameStat(u8 stat, u32 value)
{
- if (index < NUM_GAME_STATS)
- gSaveBlock1.gameStats[index] = value;
+ if (stat < NUM_GAME_STATS)
+ gSaveBlock1.gameStats[stat] = value;
}
-void LoadMapObjTemplatesFromHeader(void)
+void LoadEventObjTemplatesFromHeader(void)
{
- // Clear map object templates
- CpuFill32(0, gSaveBlock1.mapObjectTemplates, sizeof(gSaveBlock1.mapObjectTemplates));
+ // Clear event object templates
+ CpuFill32(0, gSaveBlock1.eventObjectTemplates, sizeof(gSaveBlock1.eventObjectTemplates));
// Copy map header events to save block
- CpuCopy32(gMapHeader.events->mapObjects,
- gSaveBlock1.mapObjectTemplates,
- gMapHeader.events->mapObjectCount * sizeof(struct MapObjectTemplate));
+ CpuCopy32(gMapHeader.events->eventObjects,
+ gSaveBlock1.eventObjectTemplates,
+ gMapHeader.events->eventObjectCount * sizeof(struct EventObjectTemplate));
}
-static void LoadSaveblockMapObjScripts(void)
+static void LoadSaveblockEventObjScripts(void)
{
- struct MapObjectTemplate *mapObjectTemplates = gSaveBlock1.mapObjectTemplates;
+ struct EventObjectTemplate *eventObjectTemplates = gSaveBlock1.eventObjectTemplates;
s32 i;
for (i = 0; i < 64; i++)
- mapObjectTemplates[i].script = gMapHeader.events->mapObjects[i].script;
+ eventObjectTemplates[i].script = gMapHeader.events->eventObjects[i].script;
}
-void Overworld_SetMapObjTemplateCoords(u8 localId, s16 x, s16 y)
+void Overworld_SetEventObjTemplateCoords(u8 localId, s16 x, s16 y)
{
s32 i;
for (i = 0; i < 64; i++)
{
- struct MapObjectTemplate *mapObjectTemplate = &gSaveBlock1.mapObjectTemplates[i];
- if (mapObjectTemplate->localId == localId)
+ struct EventObjectTemplate *eventObjectTemplate = &gSaveBlock1.eventObjectTemplates[i];
+ if (eventObjectTemplate->localId == localId)
{
- mapObjectTemplate->x = x;
- mapObjectTemplate->y = y;
+ eventObjectTemplate->x = x;
+ eventObjectTemplate->y = y;
return;
}
}
}
-void Overworld_SetMapObjTemplateMovementType(u8 localId, u8 movementType)
+void Overworld_SetEventObjTemplateMovementType(u8 localId, u8 movementType)
{
s32 i;
for (i = 0; i < 64; i++)
{
- struct MapObjectTemplate *mapObjectTemplate = &gSaveBlock1.mapObjectTemplates[i];
- if (mapObjectTemplate->localId == localId)
+ struct EventObjectTemplate *eventObjectTemplate = &gSaveBlock1.eventObjectTemplates[i];
+ if (eventObjectTemplate->localId == localId)
{
- mapObjectTemplate->movementType = movementType;
+ eventObjectTemplate->movementType = movementType;
return;
}
}
@@ -336,26 +336,26 @@ void Overworld_SetMapObjTemplateMovementType(u8 localId, u8 movementType)
static void mapdata_load_assets_to_gpu_and_full_redraw(void)
{
move_tilemap_camera_to_upper_left_corner();
- copy_map_tileset1_tileset2_to_vram(gMapHeader.mapData);
- apply_map_tileset1_tileset2_palette(gMapHeader.mapData);
+ copy_map_tileset1_tileset2_to_vram(gMapHeader.mapLayout);
+ apply_map_tileset1_tileset2_palette(gMapHeader.mapLayout);
DrawWholeMapView();
cur_mapheader_run_tileset_funcs_after_some_cpuset();
}
-static struct MapData *get_mapdata_header(void)
+static struct MapLayout *GetMapLayout(void)
{
- u16 mapDataId = gSaveBlock1.mapDataId;
- if (mapDataId)
- return gMapAttributes[mapDataId - 1];
+ u16 mapLayoutId = gSaveBlock1.mapLayoutId;
+ if (mapLayoutId)
+ return gMapLayouts[mapLayoutId - 1];
return NULL;
}
static void ApplyCurrentWarp(void)
{
- gUnknown_020297F0 = gSaveBlock1.location;
+ gLastUsedWarp = gSaveBlock1.location;
gSaveBlock1.location = gWarpDestination;
- gUnknown_02029800 = sDummyWarpData;
- gUnknown_02029808 = sDummyWarpData;
+ gFixedDiveWarp = sDummyWarpData;
+ gFixedHoleWarp = sDummyWarpData;
}
static void SetWarpData(struct WarpData *warp, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y)
@@ -367,7 +367,7 @@ static void SetWarpData(struct WarpData *warp, s8 mapGroup, s8 mapNum, s8 warpId
warp->y = y;
}
-static bool32 warp_data_is_not_neg_1(struct WarpData *warp)
+static bool32 IsDummyWarp(struct WarpData *warp)
{
if (warp->mapGroup != -1)
return FALSE;
@@ -387,25 +387,25 @@ struct MapHeader *const Overworld_GetMapHeaderByGroupAndId(u16 mapGroup, u16 map
return gMapGroups[mapGroup][mapNum];
}
-struct MapHeader *const warp1_get_mapheader(void)
+struct MapHeader *const GetDestinationWarpMapHeader(void)
{
return Overworld_GetMapHeaderByGroupAndId(gWarpDestination.mapGroup, gWarpDestination.mapNum);
}
-static void set_current_map_header_from_sav1_save_old_name(void)
+static void LoadCurrentMapData(void)
{
gMapHeader = *Overworld_GetMapHeaderByGroupAndId(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum);
- gSaveBlock1.mapDataId = gMapHeader.mapDataId;
- gMapHeader.mapData = get_mapdata_header();
+ gSaveBlock1.mapLayoutId = gMapHeader.mapLayoutId;
+ gMapHeader.mapLayout = GetMapLayout();
}
static void LoadSaveblockMapHeader(void)
{
gMapHeader = *Overworld_GetMapHeaderByGroupAndId(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum);
- gMapHeader.mapData = get_mapdata_header();
+ gMapHeader.mapLayout = GetMapLayout();
}
-void sub_80533CC(void)
+static void SetPlayerCoordsFromWarp(void)
{
if (gSaveBlock1.location.warpId >= 0 && gSaveBlock1.location.warpId < gMapHeader.events->warpCount)
{
@@ -419,16 +419,16 @@ void sub_80533CC(void)
}
else
{
- gSaveBlock1.pos.x = gMapHeader.mapData->width / 2;
- gSaveBlock1.pos.y = gMapHeader.mapData->height / 2;
+ gSaveBlock1.pos.x = gMapHeader.mapLayout->width / 2;
+ gSaveBlock1.pos.y = gMapHeader.mapLayout->height / 2;
}
}
-void warp_in(void)
+void WarpIntoMap(void)
{
ApplyCurrentWarp();
- set_current_map_header_from_sav1_save_old_name();
- sub_80533CC();
+ LoadCurrentMapData();
+ SetPlayerCoordsFromWarp();
}
void Overworld_SetWarpDestination(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y)
@@ -495,31 +495,27 @@ void sub_8053678(void)
gWarpDestination = gSaveBlock1.warp4;
}
-void sub_8053690(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y)
+void SetFixedDiveWarp(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y)
{
- SetWarpData(&gUnknown_02029800, mapGroup, mapNum, warpId, x, y);
+ SetWarpData(&gFixedDiveWarp, mapGroup, mapNum, warpId, x, y);
}
-static void warp1_set_to_warp2(void)
+static void SetFixedDiveWarpAsDestination(void)
{
- gWarpDestination = gUnknown_02029800;
+ gWarpDestination = gFixedDiveWarp;
}
-void sub_80536E4(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y)
+void SetFixedHoleWarp(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y)
{
- SetWarpData(&gUnknown_02029808, mapGroup, mapNum, warpId, x, y);
+ SetWarpData(&gFixedHoleWarp, mapGroup, mapNum, warpId, x, y);
}
-void sub_8053720(s16 x, s16 y)
+void SetFixedHoleWarpAsDestination(s16 x, s16 y)
{
- if (warp_data_is_not_neg_1(&gUnknown_02029808) == TRUE)
- {
- gWarpDestination = gUnknown_020297F0;
- }
+ if (IsDummyWarp(&gFixedHoleWarp) == TRUE)
+ gWarpDestination = gLastUsedWarp;
else
- {
- Overworld_SetWarpDestination(gUnknown_02029808.mapGroup, gUnknown_02029808.mapNum, -1, x, y);
- }
+ Overworld_SetWarpDestination(gFixedHoleWarp.mapGroup, gFixedHoleWarp.mapNum, -1, x, y);
}
void sub_8053778(void)
@@ -560,10 +556,9 @@ struct MapConnection *GetMapConnection(u8 dir)
return NULL;
}
-bool8 sub_8053850(u8 dir, u16 x, u16 y)
+static bool8 SetDiveWarp(u8 direction, u16 x, u16 y)
{
- struct MapConnection *connection = GetMapConnection(dir);
-
+ struct MapConnection *connection = GetMapConnection(direction);
if (connection != NULL)
{
Overworld_SetWarpDestination(connection->mapGroup, connection->mapNum, -1, x, y);
@@ -571,21 +566,23 @@ bool8 sub_8053850(u8 dir, u16 x, u16 y)
else
{
mapheader_run_script_with_tag_x6();
- if (warp_data_is_not_neg_1(&gUnknown_02029800))
+ if (IsDummyWarp(&gFixedDiveWarp))
return FALSE;
- warp1_set_to_warp2();
+
+ SetFixedDiveWarpAsDestination();
}
+
return TRUE;
}
-bool8 sub_80538B0(u16 x, u16 y)
+bool8 SetDiveWarpEmerge(u16 x, u16 y)
{
- return sub_8053850(CONNECTION_EMERGE, x, y);
+ return SetDiveWarp(CONNECTION_EMERGE, x, y);
}
-bool8 sub_80538D0(u16 x, u16 y)
+bool8 SetDiveWarpDive(u16 x, u16 y)
{
- return sub_8053850(CONNECTION_DIVE, x, y);
+ return SetDiveWarp(CONNECTION_DIVE, x, y);
}
void sub_80538F0(u8 mapGroup, u8 mapNum)
@@ -595,11 +592,11 @@ void sub_80538F0(u8 mapGroup, u8 mapNum)
Overworld_SetWarpDestination(mapGroup, mapNum, -1, -1, -1);
sub_8053F0C();
ApplyCurrentWarp();
- set_current_map_header_from_sav1_save_old_name();
- LoadMapObjTemplatesFromHeader();
+ LoadCurrentMapData();
+ LoadEventObjTemplatesFromHeader();
ClearTempFieldEventData();
ResetCyclingRoadChallengeData();
- prev_quest_postbuffer_cursor_backup_reset();
+ RestartWildEncounterImmunitySteps();
TryUpdateRandomTrainerRematches(mapGroup, mapNum);
DoTimeBasedEvents();
SetSav1WeatherFromCurrMapHeader();
@@ -608,8 +605,8 @@ void sub_80538F0(u8 mapGroup, u8 mapNum)
Overworld_ClearSavedMusic();
mapheader_run_script_with_tag_x3();
not_trainer_hill_battle_pyramid();
- sub_8056D38(gMapHeader.mapData);
- apply_map_tileset2_palette(gMapHeader.mapData);
+ sub_8056D38(gMapHeader.mapLayout);
+ apply_map_tileset2_palette(gMapHeader.mapLayout);
for (paletteIndex = 6; paletteIndex < 12; paletteIndex++)
ApplyWeatherGammaShiftToPal(paletteIndex);
@@ -628,13 +625,13 @@ void sub_8053994(u32 a1)
bool8 v2;
bool8 v3;
- set_current_map_header_from_sav1_save_old_name();
- LoadMapObjTemplatesFromHeader();
+ LoadCurrentMapData();
+ LoadEventObjTemplatesFromHeader();
v2 = is_map_type_1_2_3_5_or_6(gMapHeader.mapType);
v3 = Overworld_MapTypeIsIndoors(gMapHeader.mapType);
ClearTempFieldEventData();
ResetCyclingRoadChallengeData();
- prev_quest_postbuffer_cursor_backup_reset();
+ RestartWildEncounterImmunitySteps();
TryUpdateRandomTrainerRematches(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum);
if (a1 != 1)
DoTimeBasedEvents();
@@ -655,82 +652,82 @@ void sub_8053994(u32 a1)
}
}
-void player_avatar_init_params_reset(void)
+void ResetInitialPlayerAvatarState(void)
{
- gUnknown_02029810.player_field_1 = 1;
- gUnknown_02029810.player_field_0 = 1;
+ gInitialPlayerAvatarState.direction = DIR_SOUTH;
+ gInitialPlayerAvatarState.transitionFlags = PLAYER_AVATAR_FLAG_ON_FOOT;
}
-void walkrun_find_lowest_active_bit_in_bitfield(void)
+void StoreInitialPlayerAvatarState(void)
{
- gUnknown_02029810.player_field_1 = player_get_direction_lower_nybble();
+ gInitialPlayerAvatarState.direction = GetPlayerFacingDirection();
if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_MACH_BIKE))
- gUnknown_02029810.player_field_0 = 2;
+ gInitialPlayerAvatarState.transitionFlags = PLAYER_AVATAR_FLAG_MACH_BIKE;
else if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_ACRO_BIKE))
- gUnknown_02029810.player_field_0 = 4;
+ gInitialPlayerAvatarState.transitionFlags = PLAYER_AVATAR_FLAG_ACRO_BIKE;
else if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING))
- gUnknown_02029810.player_field_0 = 8;
- else if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_4))
- gUnknown_02029810.player_field_0 = 16;
+ gInitialPlayerAvatarState.transitionFlags = PLAYER_AVATAR_FLAG_SURFING;
+ else if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_UNDERWATER))
+ gInitialPlayerAvatarState.transitionFlags = PLAYER_AVATAR_FLAG_UNDERWATER;
else
- gUnknown_02029810.player_field_0 = 1;
+ gInitialPlayerAvatarState.transitionFlags = PLAYER_AVATAR_FLAG_ON_FOOT;
}
-struct UnkPlayerStruct *sub_8053AA8(void)
+static struct InitialPlayerAvatarState *GetInitialPlayerAvatarState(void)
{
- struct UnkPlayerStruct playerStruct;
+ struct InitialPlayerAvatarState playerStruct;
u8 mapType = Overworld_GetMapTypeOfSaveblockLocation();
- u16 v2 = cur_mapdata_block_role_at_screen_center_acc_to_sav1();
- u8 v4 = sub_8053B00(&gUnknown_02029810, v2, mapType);
- playerStruct.player_field_0 = v4;
- playerStruct.player_field_1 = sub_8053B60(&gUnknown_02029810, v4, v2, mapType);
- gUnknown_02029810 = playerStruct;
- return &gUnknown_02029810;
-}
-
-u8 sub_8053B00(struct UnkPlayerStruct *playerStruct, u16 a2, u8 a3)
-{
- if (a3 != 8 && FlagGet(FLAG_SYS_CRUISE_MODE))
- return 1;
- if (a3 == 5)
- return 16;
- if (MetatileBehavior_IsSurfableWaterOrUnderwater(a2) == 1)
- return 8;
+ u16 metatileBehavior = GetCenterScreenMetatileBehavior();
+ u8 transitionFlags = GetAdjustedInitialTransitionFlags(&gInitialPlayerAvatarState, metatileBehavior, mapType);
+ playerStruct.transitionFlags = transitionFlags;
+ playerStruct.direction = GetAdjustedInitialDirection(&gInitialPlayerAvatarState, transitionFlags, metatileBehavior, mapType);
+ gInitialPlayerAvatarState = playerStruct;
+ return &gInitialPlayerAvatarState;
+}
+
+static u8 GetAdjustedInitialTransitionFlags(struct InitialPlayerAvatarState *playerStruct, u16 metatileBehavior, u8 mapType)
+{
+ if (mapType != MAP_TYPE_INDOOR && FlagGet(FLAG_SYS_CRUISE_MODE))
+ return PLAYER_AVATAR_FLAG_ON_FOOT;
+ if (mapType == MAP_TYPE_UNDERWATER)
+ return PLAYER_AVATAR_FLAG_UNDERWATER;
+ if (MetatileBehavior_IsSurfableWaterOrUnderwater(metatileBehavior) == TRUE)
+ return PLAYER_AVATAR_FLAG_SURFING;
if (Overworld_IsBikingAllowed() != TRUE)
- return 1;
- if (playerStruct->player_field_0 == 2)
- return 2;
- if (playerStruct->player_field_0 != 4)
- return 1;
- return 4;
-}
-
-u8 sub_8053B60(struct UnkPlayerStruct *playerStruct, u8 a2, u16 a3, u8 a4)
-{
- if (FlagGet(FLAG_SYS_CRUISE_MODE) && a4 == 6)
- return 4;
- if (MetatileBehavior_IsDeepSouthWarp(a3) == TRUE)
- return 2;
- if (MetatileBehavior_IsNonAnimDoor(a3) == TRUE || MetatileBehavior_IsDoor(a3) == TRUE)
- return 1;
- if (MetatileBehavior_IsSouthArrowWarp(a3) == TRUE)
- return 2;
- if (MetatileBehavior_IsNorthArrowWarp(a3) == TRUE)
- return 1;
- if (MetatileBehavior_IsWestArrowWarp(a3) == TRUE)
- return 4;
- if (MetatileBehavior_IsEastArrowWarp(a3) == TRUE)
- return 3;
- if ((playerStruct->player_field_0 == 16 && a2 == 8)
- || (playerStruct->player_field_0 == 8 && a2 == 16))
- return playerStruct->player_field_1;
- if (MetatileBehavior_IsLadder(a3) == TRUE)
- return playerStruct->player_field_1;
- return 1;
-}
-
-u16 cur_mapdata_block_role_at_screen_center_acc_to_sav1(void)
+ return PLAYER_AVATAR_FLAG_ON_FOOT;
+ if (playerStruct->transitionFlags == PLAYER_AVATAR_FLAG_MACH_BIKE)
+ return PLAYER_AVATAR_FLAG_MACH_BIKE;
+ if (playerStruct->transitionFlags != PLAYER_AVATAR_FLAG_ACRO_BIKE)
+ return PLAYER_AVATAR_FLAG_ON_FOOT;
+ return PLAYER_AVATAR_FLAG_ACRO_BIKE;
+}
+
+static u8 GetAdjustedInitialDirection(struct InitialPlayerAvatarState *playerStruct, u8 transitionFlags, u16 metatileBehavior, u8 mapType)
+{
+ if (FlagGet(FLAG_SYS_CRUISE_MODE) && mapType == MAP_TYPE_6)
+ return DIR_EAST;
+ if (MetatileBehavior_IsDeepSouthWarp(metatileBehavior) == TRUE)
+ return DIR_NORTH;
+ if (MetatileBehavior_IsNonAnimDoor(metatileBehavior) == TRUE || MetatileBehavior_IsDoor(metatileBehavior) == TRUE)
+ return DIR_SOUTH;
+ if (MetatileBehavior_IsSouthArrowWarp(metatileBehavior) == TRUE)
+ return DIR_NORTH;
+ if (MetatileBehavior_IsNorthArrowWarp(metatileBehavior) == TRUE)
+ return DIR_SOUTH;
+ if (MetatileBehavior_IsWestArrowWarp(metatileBehavior) == TRUE)
+ return DIR_EAST;
+ if (MetatileBehavior_IsEastArrowWarp(metatileBehavior) == TRUE)
+ return DIR_WEST;
+ if ((playerStruct->transitionFlags == PLAYER_AVATAR_FLAG_UNDERWATER && transitionFlags == PLAYER_AVATAR_FLAG_SURFING)
+ || (playerStruct->transitionFlags == PLAYER_AVATAR_FLAG_SURFING && transitionFlags == PLAYER_AVATAR_FLAG_UNDERWATER))
+ return playerStruct->direction;
+ if (MetatileBehavior_IsLadder(metatileBehavior) == TRUE)
+ return playerStruct->direction;
+ return DIR_SOUTH;
+}
+
+u16 GetCenterScreenMetatileBehavior(void)
{
return MapGridGetMetatileBehaviorAt(gSaveBlock1.pos.x + 7, gSaveBlock1.pos.y + 7);
}
@@ -784,10 +781,10 @@ u8 Overworld_GetFlashLevel(void)
return gSaveBlock1.flashLevel;
}
-void sub_8053D14(u16 mapDataId)
+void sub_8053D14(u16 mapLayoutId)
{
- gSaveBlock1.mapDataId = mapDataId;
- gMapHeader.mapData = get_mapdata_header();
+ gSaveBlock1.mapLayoutId = mapLayoutId;
+ gMapHeader.mapLayout = GetMapLayout();
}
static bool16 ShouldLegendaryMusicPlayAtLocation(struct WarpData *warp)
@@ -831,7 +828,7 @@ static u16 GetLocationMusic(struct WarpData *warp)
if (ShouldLegendaryMusicPlayAtLocation(warp) == TRUE)
return LEGENDARY_MUSIC;
else if (IsInfiltratedWeatherInstitute(warp) == TRUE)
- return BGM_TOZAN;
+ return MUS_TOZAN;
else
return Overworld_GetMapHeaderByGroupAndId(warp->mapGroup, warp->mapNum)->music;
}
@@ -844,7 +841,7 @@ u16 GetCurrLocationDefaultMusic(void)
if (gSaveBlock1.location.mapGroup == MAP_GROUP(ROUTE111)
&& gSaveBlock1.location.mapNum == MAP_NUM(ROUTE111)
&& GetSav1Weather() == 8)
- return BGM_ASHROAD;
+ return MUS_ASHROAD;
music = GetLocationMusic(&gSaveBlock1.location);
if (music != 0x7FFF)
@@ -854,9 +851,9 @@ u16 GetCurrLocationDefaultMusic(void)
else
{
if (gSaveBlock1.pos.x < 24)
- return BGM_DOORO_X1;
+ return MUS_DOORO_X1;
else
- return BGM_GRANROAD;
+ return MUS_GRANROAD;
}
}
@@ -871,9 +868,9 @@ u16 GetWarpDestinationMusic(void)
{
if (gSaveBlock1.location.mapGroup == MAP_GROUP(MAUVILLE_CITY)
&& gSaveBlock1.location.mapNum == MAP_NUM(MAUVILLE_CITY))
- return BGM_DOORO_X1;
+ return MUS_DOORO_X1;
else
- return BGM_GRANROAD;
+ return MUS_GRANROAD;
}
}
@@ -891,9 +888,9 @@ void Overworld_PlaySpecialMapMusic(void)
if (gSaveBlock1.savedMusic)
music = gSaveBlock1.savedMusic;
else if (Overworld_GetMapTypeOfSaveblockLocation() == MAP_TYPE_UNDERWATER)
- music = BGM_DEEPDEEP;
+ music = MUS_DEEPDEEP;
else if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING))
- music = BGM_NAMINORI;
+ music = MUS_NAMINORI;
}
if (music != GetCurrentMapMusic())
@@ -918,10 +915,10 @@ void sub_8053F0C(void)
u16 currentMusic = GetCurrentMapMusic();
if (newMusic != LEGENDARY_MUSIC)
{
- if (currentMusic == BGM_DEEPDEEP || currentMusic == BGM_NAMINORI)
+ if (currentMusic == MUS_DEEPDEEP || currentMusic == MUS_NAMINORI)
return;
if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING))
- newMusic = BGM_NAMINORI;
+ newMusic = MUS_NAMINORI;
}
if (newMusic != currentMusic)
{
@@ -949,14 +946,14 @@ void Overworld_ChangeMusicTo(u16 newMusic)
u8 GetMapMusicFadeoutSpeed(void)
{
- struct MapHeader *mapHeader = warp1_get_mapheader();
+ struct MapHeader *mapHeader = GetDestinationWarpMapHeader();
if (Overworld_MapTypeIsIndoors(mapHeader->mapType) == TRUE)
return 2;
else
return 4;
}
-void sub_8053FF8(void)
+void TryFadeOutOldMapMusic(void)
{
u16 music = GetWarpDestinationMusic();
if (FlagGet(FLAG_SPECIAL_FLAG_1) != TRUE && music != GetCurrentMapMusic())
@@ -966,7 +963,7 @@ void sub_8053FF8(void)
}
}
-bool8 sub_8054034(void)
+bool8 BGMusicStopped(void)
{
return IsNotWaitingForBGMStop();
}
@@ -1054,9 +1051,9 @@ u8 Overworld_GetMapTypeOfSaveblockLocation(void)
return GetMapTypeByWarpData(&gSaveBlock1.location);
}
-u8 get_map_type_from_warp0(void)
+u8 GetLastUsedWarpMapType(void)
{
- return GetMapTypeByWarpData(&gUnknown_020297F0);
+ return GetMapTypeByWarpData(&gLastUsedWarp);
}
bool8 is_map_type_1_2_3_5_or_6(u8 mapType)
@@ -1124,10 +1121,10 @@ void CB2_InitTestMenu(void)
ResetSpriteData();
ResetTasks();
ScanlineEffect_Stop();
- Text_LoadWindowTemplate(&gWindowTemplate_81E6CE4);
- InitMenuWindow(&gWindowTemplate_81E6CE4);
+ Text_LoadWindowTemplate(&gMenuTextWindowTemplate);
+ InitMenuWindow(&gMenuTextWindowTemplate);
debug_sub_8076B68();
- BeginNormalPaletteFade(-1, 0, 16, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
REG_IE |= 1;
REG_DISPCNT = DISPCNT_OBJ_ON | DISPCNT_BG0_ON | DISPCNT_OBJ_1D_MAP;
m4aSoundVSyncOn();
@@ -1183,21 +1180,21 @@ bool32 is_c1_link_related_active(void)
void c1_overworld_normal(u16 newKeys, u16 heldKeys)
{
- struct FieldInput inputStruct;
+ struct FieldInput fieldInput;
sub_8059204();
- FieldClearPlayerInput(&inputStruct);
- FieldGetPlayerInput(&inputStruct, newKeys, heldKeys);
+ ClearPlayerFieldInput(&fieldInput);
+ GetPlayerFieldInput(&fieldInput, newKeys, heldKeys);
if (!ScriptContext2_IsEnabled())
{
- if (sub_8068024(&inputStruct) == 1)
+ if (ProcessPlayerFieldInput(&fieldInput) == 1)
{
ScriptContext2_Enable();
HideMapNamePopup();
}
else
{
- player_step(inputStruct.dpadDirection, newKeys, heldKeys);
+ player_step(fieldInput.dpadDirection, newKeys, heldKeys);
}
}
}
@@ -1246,7 +1243,7 @@ void sub_80543DC(u16 (*a1)(u32))
gUnknown_03000584 = a1;
}
-void sub_80543E8(void)
+static void RunFieldCallback(void)
{
if (gFieldCallback != NULL)
gFieldCallback();
@@ -1261,7 +1258,7 @@ void CB2_NewGame(void)
StopMapMusic();
ResetSafariZoneFlag_();
NewGameInitData();
- player_avatar_init_params_reset();
+ ResetInitialPlayerAvatarState();
PlayTimeCounter_Start();
ScriptContext1_Init();
ScriptContext2_Disable();
@@ -1274,14 +1271,12 @@ void CB2_NewGame(void)
#if DEBUG
-extern void (*gFieldCallback)(void);
-
void debug_sub_8058C00(void)
{
FieldClearVBlankHBlankCallbacks();
StopMapMusic();
ResetSafariZoneFlag_();
- player_avatar_init_params_reset();
+ ResetInitialPlayerAvatarState();
PlayTimeCounter_Start();
ScriptContext1_Init();
ScriptContext2_Disable();
@@ -1309,7 +1304,7 @@ void CB2_WhiteOut(void)
StopMapMusic();
ResetSafariZoneFlag_();
DoWhiteOut();
- player_avatar_init_params_reset();
+ ResetInitialPlayerAvatarState();
ScriptContext1_Init();
ScriptContext2_Disable();
gFieldCallback = sub_8080B60;
@@ -1363,7 +1358,7 @@ void sub_8054588(void)
SetMainCallback2(c2_80567AC);
}
-void c2_80567AC(void)
+static void c2_80567AC(void)
{
if (sub_805483C(&gMain.state))
{
@@ -1415,10 +1410,10 @@ void sub_805465C(void)
c2_exit_to_overworld_2_switch();
}
-void sub_805469C(void)
+void c2_exit_to_overworld_1_sub_8080DEC(void)
{
FieldClearVBlankHBlankCallbacks();
- gFieldCallback = atk17_seteffectsecondary;
+ gFieldCallback = sub_8080DEC;
c2_exit_to_overworld_2_switch();
}
@@ -1460,8 +1455,8 @@ void CB2_ContinueSavedGame(void)
#endif
ResetSafariZoneFlag_();
LoadSaveblockMapHeader();
- LoadSaveblockMapObjScripts();
- UnfreezeMapObjects();
+ LoadSaveblockEventObjScripts();
+ UnfreezeEventObjects();
DoTimeBasedEvents();
sub_805308C();
sub_8055FC0();
@@ -1472,7 +1467,7 @@ void CB2_ContinueSavedGame(void)
{
ClearSecretBase2Field_9();
sub_8053778();
- warp_in();
+ WarpIntoMap();
SetMainCallback2(CB2_LoadMap);
}
else
@@ -1509,19 +1504,19 @@ void VBlankCB_Field(void)
sub_8072E74();
}
-void sub_8054814(void)
+static void InitCurrentFlashLevelScanlineEffect(void)
{
- u8 val = Overworld_GetFlashLevel();
- if (val)
+ u8 flashLevel = Overworld_GetFlashLevel();
+ if (flashLevel)
{
- sub_80815E0(val);
- ScanlineEffect_SetParams(gUnknown_08216694);
+ WriteFlashScanlineEffectBuffer(flashLevel);
+ ScanlineEffect_SetParams(sFlashEffectParams);
}
}
-bool32 sub_805483C(u8 *a1)
+static bool32 sub_805483C(u8 *state)
{
- switch (*a1)
+ switch (*state)
{
case 0:
FieldClearVBlankHBlankCallbacks();
@@ -1529,60 +1524,60 @@ bool32 sub_805483C(u8 *a1)
ScriptContext2_Disable();
sub_8054F70();
sub_8054BA8();
- (*a1)++;
+ (*state)++;
break;
case 1:
sub_8053994(1);
- (*a1)++;
+ (*state)++;
break;
case 2:
sub_8054D4C(1);
- (*a1)++;
+ (*state)++;
break;
case 3:
sub_8054E98();
sub_8054D90();
sub_8054EC8();
sub_8054E60();
- (*a1)++;
+ (*state)++;
break;
case 4:
- sub_8054814();
- sub_8054C54();
+ InitCurrentFlashLevelScanlineEffect();
+ InitOverworldGraphicsRegisters();
Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C);
- InitMenuWindow(&gWindowTemplate_81E6CE4);
- (*a1)++;
+ InitMenuWindow(&gMenuTextWindowTemplate);
+ (*state)++;
break;
case 5:
move_tilemap_camera_to_upper_left_corner();
- (*a1)++;
+ (*state)++;
break;
case 6:
- sub_8056D28(gMapHeader.mapData);
- (*a1)++;
+ sub_8056D28(gMapHeader.mapLayout);
+ (*state)++;
break;
case 7:
- sub_8056D38(gMapHeader.mapData);
- (*a1)++;
+ sub_8056D38(gMapHeader.mapLayout);
+ (*state)++;
break;
case 8:
- apply_map_tileset1_tileset2_palette(gMapHeader.mapData);
- (*a1)++;
+ apply_map_tileset1_tileset2_palette(gMapHeader.mapLayout);
+ (*state)++;
break;
case 9:
DrawWholeMapView();
- (*a1)++;
+ (*state)++;
break;
case 10:
cur_mapheader_run_tileset_funcs_after_some_cpuset();
- (*a1)++;
+ (*state)++;
break;
case 12:
- sub_80543E8();
- (*a1)++;
+ RunFieldCallback();
+ (*state)++;
break;
case 11:
- (*a1)++;
+ (*state)++;
break;
case 13:
return 1;
@@ -1590,67 +1585,67 @@ bool32 sub_805483C(u8 *a1)
return 0;
}
-bool32 sub_805493C(u8 *a1, u32 a2)
+bool32 sub_805493C(u8 *state, u32 a2)
{
- switch (*a1)
+ switch (*state)
{
case 0:
FieldClearVBlankHBlankCallbacks();
sub_8053994(a2);
- (*a1)++;
+ (*state)++;
break;
case 1:
sub_8054BA8();
- (*a1)++;
+ (*state)++;
break;
case 2:
sub_8054D4C(a2);
- (*a1)++;
+ (*state)++;
break;
case 3:
mli4_mapscripts_and_other();
sub_8054E34();
- (*a1)++;
+ (*state)++;
break;
case 4:
- sub_8054814();
- sub_8054C54();
+ InitCurrentFlashLevelScanlineEffect();
+ InitOverworldGraphicsRegisters();
Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C);
- InitMenuWindow(&gWindowTemplate_81E6CE4);
- (*a1)++;
+ InitMenuWindow(&gMenuTextWindowTemplate);
+ (*state)++;
break;
case 5:
move_tilemap_camera_to_upper_left_corner();
- (*a1)++;
+ (*state)++;
break;
case 6:
- sub_8056D28(gMapHeader.mapData);
- (*a1)++;
+ sub_8056D28(gMapHeader.mapLayout);
+ (*state)++;
break;
case 7:
- sub_8056D38(gMapHeader.mapData);
- (*a1)++;
+ sub_8056D38(gMapHeader.mapLayout);
+ (*state)++;
break;
case 8:
- apply_map_tileset1_tileset2_palette(gMapHeader.mapData);
- (*a1)++;
+ apply_map_tileset1_tileset2_palette(gMapHeader.mapLayout);
+ (*state)++;
break;
case 9:
DrawWholeMapView();
- (*a1)++;
+ (*state)++;
break;
case 10:
cur_mapheader_run_tileset_funcs_after_some_cpuset();
- (*a1)++;
+ (*state)++;
break;
case 11:
if (gMapHeader.flags == 1 && sub_80BBB24() == 1)
ShowMapNamePopup();
- (*a1)++;
+ (*state)++;
break;
case 12:
- sub_80543E8();
- (*a1)++;
+ RunFieldCallback();
+ (*state)++;
break;
case 13:
return 1;
@@ -1658,24 +1653,24 @@ bool32 sub_805493C(u8 *a1, u32 a2)
return 0;
}
-bool32 sub_8054A4C(u8 *a1)
+bool32 sub_8054A4C(u8 *state)
{
- switch (*a1)
+ switch (*state)
{
case 0:
sub_8054BA8();
sub_8054D4C(0);
sub_8054E20();
sub_8054E34();
- (*a1)++;
+ (*state)++;
break;
case 1:
sub_8054C2C();
- (*a1)++;
+ (*state)++;
break;
case 2:
- sub_80543E8();
- (*a1)++;
+ RunFieldCallback();
+ (*state)++;
break;
case 3:
return 1;
@@ -1683,67 +1678,67 @@ bool32 sub_8054A4C(u8 *a1)
return 0;
}
-bool32 sub_8054A9C(u8 *a1)
+bool32 sub_8054A9C(u8 *state)
{
- switch (*a1)
+ switch (*state)
{
case 0:
FieldClearVBlankHBlankCallbacks();
sub_8054BA8();
- (*a1)++;
+ (*state)++;
break;
case 1:
sub_8054D4C(1);
- (*a1)++;
+ (*state)++;
break;
case 2:
sub_8054F48();
sub_8054E20();
sub_8054E7C();
- (*a1)++;
+ (*state)++;
break;
case 3:
- sub_8054814();
- sub_8054C54();
+ InitCurrentFlashLevelScanlineEffect();
+ InitOverworldGraphicsRegisters();
Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C);
- InitMenuWindow(&gWindowTemplate_81E6CE4);
- (*a1)++;
+ InitMenuWindow(&gMenuTextWindowTemplate);
+ (*state)++;
break;
case 4:
move_tilemap_camera_to_upper_left_corner();
- (*a1)++;
+ (*state)++;
break;
case 5:
- sub_8056D28(gMapHeader.mapData);
- (*a1)++;
+ sub_8056D28(gMapHeader.mapLayout);
+ (*state)++;
break;
case 6:
- sub_8056D38(gMapHeader.mapData);
- (*a1)++;
+ sub_8056D38(gMapHeader.mapLayout);
+ (*state)++;
break;
case 7:
- apply_map_tileset1_tileset2_palette(gMapHeader.mapData);
- (*a1)++;
+ apply_map_tileset1_tileset2_palette(gMapHeader.mapLayout);
+ (*state)++;
break;
case 8:
DrawWholeMapView();
- (*a1)++;
+ (*state)++;
break;
case 9:
cur_mapheader_run_tileset_funcs_after_some_cpuset();
- (*a1)++;
+ (*state)++;
break;
case 12:
- sub_80543E8();
- (*a1)++;
+ RunFieldCallback();
+ (*state)++;
break;
case 10:
case 11:
- (*a1)++;
+ (*state)++;
break;
case 13:
SetFieldVBlankCallback();
- (*a1)++;
+ (*state)++;
return 1;
}
return 0;
@@ -1769,14 +1764,14 @@ void sub_8054BA8(void)
void sub_8054C2C(void)
{
- sub_8054814();
- sub_8054C54();
+ InitCurrentFlashLevelScanlineEffect();
+ InitOverworldGraphicsRegisters();
Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C);
- InitMenuWindow(&gWindowTemplate_81E6CE4);
+ InitMenuWindow(&gMenuTextWindowTemplate);
mapdata_load_assets_to_gpu_and_full_redraw();
}
-void sub_8054C54(void)
+static void InitOverworldGraphicsRegisters(void)
{
REG_MOSAIC = 0;
REG_WININ = 7967;
@@ -1810,7 +1805,7 @@ void sub_8054D4C(u32 a1)
ScanlineEffect_Clear();
ResetCameraUpdateInfo();
InstallCameraPanAheadCallback();
- sub_805C7C4(0);
+ InitEventObjectPalettes(0);
FieldEffectActiveListClear();
InitFieldMessageBox();
StartWeather();
@@ -1822,26 +1817,26 @@ void sub_8054D4C(u32 a1)
void sub_8054D90(void)
{
- gUnknown_0300489C = 0;
- gUnknown_03004898 = 0;
- sub_805AA98();
- sub_805B55C(0, 0);
+ gTotalCameraPixelOffsetX = 0;
+ gTotalCameraPixelOffsetY = 0;
+ ResetEventObjects();
+ TrySpawnEventObjects(0, 0);
mapheader_run_first_tag4_script_list_match();
}
void mli4_mapscripts_and_other(void)
{
s16 x, y;
- struct UnkPlayerStruct *player;
- gUnknown_0300489C = 0;
- gUnknown_03004898 = 0;
- sub_805AA98();
+ struct InitialPlayerAvatarState *initialPlayerAvatarState;
+ gTotalCameraPixelOffsetX = 0;
+ gTotalCameraPixelOffsetY = 0;
+ ResetEventObjects();
sav1_camera_get_focus_coords(&x, &y);
- player = sub_8053AA8();
- InitPlayerAvatar(x, y, player->player_field_1, gSaveBlock2.playerGender);
- SetPlayerAvatarTransitionFlags(player->player_field_0);
- player_avatar_init_params_reset();
- sub_805B55C(0, 0);
+ initialPlayerAvatarState = GetInitialPlayerAvatarState();
+ InitPlayerAvatar(x, y, initialPlayerAvatarState->direction, gSaveBlock2.playerGender);
+ SetPlayerAvatarTransitionFlags(initialPlayerAvatarState->transitionFlags);
+ ResetInitialPlayerAvatarState();
+ TrySpawnEventObjects(0, 0);
ResetBerryTreeSparkleFlags();
mapheader_run_first_tag4_script_list_match();
}
@@ -1854,7 +1849,7 @@ void sub_8054E20(void)
void sub_8054E34(void)
{
- gMapObjects[gPlayerAvatar.mapObjectId].mapobj_bit_15 = 1;
+ gEventObjects[gPlayerAvatar.eventObjectId].trackedByCamera = 1;
InitCameraUpdateCallback(gPlayerAvatar.spriteId);
}
@@ -1885,7 +1880,7 @@ void sub_8054EC8(void)
for (i = 0; i < gFieldLinkPlayerCount; i++)
{
- SpawnLinkPlayerMapObject(i, i + x, y, gLinkPlayers[i].gender);
+ SpawnLinkPlayerEventObject(i, i + x, y, gLinkPlayers[i].gender);
CreateLinkPlayerSprite(i);
}
@@ -2273,7 +2268,7 @@ void sub_80555B0(int linkPlayerId, int a2, struct UnkStruct_8054FF8 *a3)
a3->a = linkPlayerId;
a3->b = (linkPlayerId == a2) ? 1 : 0;
- a3->c = gLinkPlayerMapObjects[linkPlayerId].mode;
+ a3->c = gLinkPlayerEventObjects[linkPlayerId].mode;
a3->d = sub_8055B30(linkPlayerId);
sub_8055B08(linkPlayerId, &x, &y);
a3->sub.x = x;
@@ -2304,7 +2299,7 @@ u8 *sub_8055648(struct UnkStruct_8054FF8 *a1)
{
if (a1->c != 2)
return 0;
- return sub_8068E24(&a1->sub);
+ return GetCoordEventScriptAtMapPosition(&a1->sub);
}
bool32 sub_8055660(struct UnkStruct_8054FF8 *a1)
@@ -2327,8 +2322,8 @@ u8 *sub_805568C(struct UnkStruct_8054FF8 *a1)
return 0;
unkStruct = a1->sub;
- unkStruct.x += gUnknown_0821664C[a1->d].x;
- unkStruct.y += gUnknown_0821664C[a1->d].y;
+ unkStruct.x += gDirectionToVectors[a1->d].x;
+ unkStruct.y += gDirectionToVectors[a1->d].y;
unkStruct.height = 0;
linkPlayerId = GetLinkPlayerIdAt(unkStruct.x, unkStruct.y);
@@ -2344,7 +2339,7 @@ u8 *sub_805568C(struct UnkStruct_8054FF8 *a1)
return TradeRoom_ReadTrainerCard2;
}
- return sub_80682A8(&unkStruct, a1->field_C, a1->d);
+ return GetInteractedLinkPlayerScript(&unkStruct, a1->field_C, a1->d);
}
u16 sub_8055758(u8 *script)
@@ -2475,109 +2470,109 @@ bool32 sub_8055940(void)
return TRUE;
}
-void ZeroLinkPlayerMapObject(struct LinkPlayerMapObject *linkPlayerMapObj)
+void ClearLinkPlayerEventObject(struct LinkPlayerEventObject *linkPlayerEventObj)
{
- memset(linkPlayerMapObj, 0, sizeof(struct LinkPlayerMapObject));
+ memset(linkPlayerEventObj, 0, sizeof(struct LinkPlayerEventObject));
}
-void strange_npc_table_clear(void)
+void ClearLinkPlayerEventObjects(void)
{
- memset(gLinkPlayerMapObjects, 0, sizeof(gLinkPlayerMapObjects));
+ memset(gLinkPlayerEventObjects, 0, sizeof(gLinkPlayerEventObjects));
}
-void ZeroMapObject(struct MapObject *mapObj)
+static void ClearEventObject(struct EventObject *eventObj)
{
- memset(mapObj, 0, sizeof(struct MapObject));
+ memset(eventObj, 0, sizeof(struct EventObject));
}
-void SpawnLinkPlayerMapObject(u8 linkPlayerId, s16 x, s16 y, u8 a4)
+void SpawnLinkPlayerEventObject(u8 linkPlayerId, s16 x, s16 y, u8 a4)
{
- u8 mapObjId = sub_805AB54();
- struct LinkPlayerMapObject *linkPlayerMapObj = &gLinkPlayerMapObjects[linkPlayerId];
- struct MapObject *mapObj = &gMapObjects[mapObjId];
+ u8 eventObjId = GetFirstInactiveEventObjectId();
+ struct LinkPlayerEventObject *linkPlayerEventObj = &gLinkPlayerEventObjects[linkPlayerId];
+ struct EventObject *eventObj = &gEventObjects[eventObjId];
- ZeroLinkPlayerMapObject(linkPlayerMapObj);
- ZeroMapObject(mapObj);
+ ClearLinkPlayerEventObject(linkPlayerEventObj);
+ ClearEventObject(eventObj);
- linkPlayerMapObj->active = 1;
- linkPlayerMapObj->linkPlayerId = linkPlayerId;
- linkPlayerMapObj->mapObjId = mapObjId;
- linkPlayerMapObj->mode = 0;
+ linkPlayerEventObj->active = 1;
+ linkPlayerEventObj->linkPlayerId = linkPlayerId;
+ linkPlayerEventObj->eventObjId = eventObjId;
+ linkPlayerEventObj->mode = 0;
- mapObj->active = 1;
- mapObj->mapobj_bit_1 = a4;
- mapObj->range.as_byte = 2;
- mapObj->spriteId = 64;
+ eventObj->active = 1;
+ eventObj->singleMovementActive = a4;
+ eventObj->range.as_byte = 2;
+ eventObj->spriteId = 64;
- InitLinkPlayerMapObjectPos(mapObj, x, y);
+ InitLinkPlayerEventObjectPos(eventObj, x, y);
}
-void InitLinkPlayerMapObjectPos(struct MapObject *mapObj, s16 x, s16 y)
+void InitLinkPlayerEventObjectPos(struct EventObject *eventObj, s16 x, s16 y)
{
- mapObj->coords2.x = x;
- mapObj->coords2.y = y;
- mapObj->coords3.x = x;
- mapObj->coords3.y = y;
- sub_80603CC(x, y, &mapObj->coords1.x, &mapObj->coords1.y);
- mapObj->coords1.x += 8;
- FieldObjectUpdateZCoord(mapObj);
+ eventObj->currentCoords.x = x;
+ eventObj->currentCoords.y = y;
+ eventObj->previousCoords.x = x;
+ eventObj->previousCoords.y = y;
+ sub_80603CC(x, y, &eventObj->initialCoords.x, &eventObj->initialCoords.y);
+ eventObj->initialCoords.x += 8;
+ EventObjectUpdateZCoord(eventObj);
}
void unref_sub_8055A6C(u8 linkPlayerId, u8 a2)
{
- if (gLinkPlayerMapObjects[linkPlayerId].active)
+ if (gLinkPlayerEventObjects[linkPlayerId].active)
{
- u8 mapObjId = gLinkPlayerMapObjects[linkPlayerId].mapObjId;
- struct MapObject *mapObj = &gMapObjects[mapObjId];
- mapObj->range.as_byte = a2;
+ u8 eventObjId = gLinkPlayerEventObjects[linkPlayerId].eventObjId;
+ struct EventObject *eventObj = &gEventObjects[eventObjId];
+ eventObj->range.as_byte = a2;
}
}
void unref_sub_8055A9C(u8 linkPlayerId)
{
- struct LinkPlayerMapObject *linkPlayerMapObj = &gLinkPlayerMapObjects[linkPlayerId];
- u8 mapObjId = linkPlayerMapObj->mapObjId;
- struct MapObject *mapObj = &gMapObjects[mapObjId];
- if (mapObj->spriteId != 64 )
- DestroySprite(&gSprites[mapObj->spriteId]);
- linkPlayerMapObj->active = 0;
- mapObj->active = 0;
+ struct LinkPlayerEventObject *linkPlayerEventObj = &gLinkPlayerEventObjects[linkPlayerId];
+ u8 eventObjId = linkPlayerEventObj->eventObjId;
+ struct EventObject *eventObj = &gEventObjects[eventObjId];
+ if (eventObj->spriteId != 64 )
+ DestroySprite(&gSprites[eventObj->spriteId]);
+ linkPlayerEventObj->active = 0;
+ eventObj->active = 0;
}
u8 sub_8055AE8(u8 linkPlayerId)
{
- u8 mapObjId = gLinkPlayerMapObjects[linkPlayerId].mapObjId;
- struct MapObject *mapObj = &gMapObjects[mapObjId];
- return mapObj->spriteId;
+ u8 eventObjId = gLinkPlayerEventObjects[linkPlayerId].eventObjId;
+ struct EventObject *eventObj = &gEventObjects[eventObjId];
+ return eventObj->spriteId;
}
void sub_8055B08(u8 linkPlayerId, u16 *x, u16 *y)
{
- u8 mapObjId = gLinkPlayerMapObjects[linkPlayerId].mapObjId;
- struct MapObject *mapObj = &gMapObjects[mapObjId];
- *x = mapObj->coords2.x;
- *y = mapObj->coords2.y;
+ u8 eventObjId = gLinkPlayerEventObjects[linkPlayerId].eventObjId;
+ struct EventObject *eventObj = &gEventObjects[eventObjId];
+ *x = eventObj->currentCoords.x;
+ *y = eventObj->currentCoords.y;
}
u8 sub_8055B30(u8 linkPlayerId)
{
- u8 mapObjId = gLinkPlayerMapObjects[linkPlayerId].mapObjId;
- struct MapObject *mapObj = &gMapObjects[mapObjId];
- return mapObj->range.as_byte;
+ u8 eventObjId = gLinkPlayerEventObjects[linkPlayerId].eventObjId;
+ struct EventObject *eventObj = &gEventObjects[eventObjId];
+ return eventObj->range.as_byte;
}
u8 sub_8055B50(u8 linkPlayerId)
{
- u8 mapObjId = gLinkPlayerMapObjects[linkPlayerId].mapObjId;
- struct MapObject *mapObj = &gMapObjects[mapObjId];
- return mapObj->mapobj_unk_0B_0;
+ u8 eventObjId = gLinkPlayerEventObjects[linkPlayerId].eventObjId;
+ struct EventObject *eventObj = &gEventObjects[eventObjId];
+ return eventObj->currentElevation;
}
s32 unref_sub_8055B74(u8 linkPlayerId)
{
- u8 mapObjId = gLinkPlayerMapObjects[linkPlayerId].mapObjId;
- struct MapObject *mapObj = &gMapObjects[mapObjId];
- return 16 - (s8)mapObj->mapobj_unk_21;
+ u8 eventObjId = gLinkPlayerEventObjects[linkPlayerId].eventObjId;
+ struct EventObject *eventObj = &gEventObjects[eventObjId];
+ return 16 - (s8)eventObj->directionSequenceIndex;
}
u8 GetLinkPlayerIdAt(s16 x, s16 y)
@@ -2585,11 +2580,11 @@ u8 GetLinkPlayerIdAt(s16 x, s16 y)
u8 i;
for (i = 0; i < 4; i++)
{
- if (gLinkPlayerMapObjects[i].active
- && (gLinkPlayerMapObjects[i].mode == 0 || gLinkPlayerMapObjects[i].mode == 2))
+ if (gLinkPlayerEventObjects[i].active
+ && (gLinkPlayerEventObjects[i].mode == 0 || gLinkPlayerEventObjects[i].mode == 2))
{
- struct MapObject *mapObj = &gMapObjects[gLinkPlayerMapObjects[i].mapObjId];
- if (mapObj->coords2.x == x && mapObj->coords2.y == y)
+ struct EventObject *eventObj = &gEventObjects[gLinkPlayerEventObjects[i].eventObjId];
+ if (eventObj->currentCoords.x == x && eventObj->currentCoords.y == y)
return i;
}
}
@@ -2598,79 +2593,79 @@ u8 GetLinkPlayerIdAt(s16 x, s16 y)
void sub_8055BFC(u8 linkPlayerId, u8 a2)
{
- struct LinkPlayerMapObject *linkPlayerMapObj = &gLinkPlayerMapObjects[linkPlayerId];
- u8 mapObjId = linkPlayerMapObj->mapObjId;
- struct MapObject *mapObj = &gMapObjects[mapObjId];
+ struct LinkPlayerEventObject *linkPlayerEventObj = &gLinkPlayerEventObjects[linkPlayerId];
+ u8 eventObjId = linkPlayerEventObj->eventObjId;
+ struct EventObject *eventObj = &gEventObjects[eventObjId];
- if (linkPlayerMapObj->active)
+ if (linkPlayerEventObj->active)
{
if (a2 > 10)
- mapObj->mapobj_bit_2 = 1;
+ eventObj->triggerGroundEffectsOnMove = 1;
else
- gUnknown_082166D8[gUnknown_082166A0[linkPlayerMapObj->mode](linkPlayerMapObj, mapObj, a2)](linkPlayerMapObj, mapObj);
+ gUnknown_082166D8[gUnknown_082166A0[linkPlayerEventObj->mode](linkPlayerEventObj, eventObj, a2)](linkPlayerEventObj, eventObj);
}
}
-static u8 sub_8055C68(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3)
+static u8 sub_8055C68(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3)
{
- return gUnknown_082166AC[a3](linkPlayerMapObj, mapObj, a3);
+ return gUnknown_082166AC[a3](linkPlayerEventObj, eventObj, a3);
}
-static u8 sub_8055C88(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3)
+static u8 sub_8055C88(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3)
{
return 1;
}
-static u8 sub_8055C8C(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3)
+static u8 sub_8055C8C(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3)
{
- return gUnknown_082166AC[a3](linkPlayerMapObj, mapObj, a3);
+ return gUnknown_082166AC[a3](linkPlayerEventObj, eventObj, a3);
}
-static u8 sub_8055CAC(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3)
+static u8 sub_8055CAC(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3)
{
return 0;
}
-static u8 sub_8055CB0(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3)
+static u8 sub_8055CB0(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3)
{
s16 x, y;
- mapObj->range.as_byte = npc_something3(a3, mapObj->range.as_byte);
- FieldObjectMoveDestCoords(mapObj, mapObj->range.as_byte, &x, &y);
+ eventObj->range.as_byte = npc_something3(a3, eventObj->range.as_byte);
+ EventObjectMoveDestCoords(eventObj, eventObj->range.as_byte, &x, &y);
- if (LinkPlayerDetectCollision(linkPlayerMapObj->mapObjId, mapObj->range.as_byte, x, y))
+ if (LinkPlayerDetectCollision(linkPlayerEventObj->eventObjId, eventObj->range.as_byte, x, y))
{
return 0;
}
else
{
- mapObj->mapobj_unk_21 = 16;
- npc_coords_shift(mapObj, x, y);
- FieldObjectUpdateZCoord(mapObj);
+ eventObj->directionSequenceIndex = 16;
+ ShiftEventObjectCoords(eventObj, x, y);
+ EventObjectUpdateZCoord(eventObj);
return 1;
}
}
-static u8 sub_8055D18(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3)
+static u8 sub_8055D18(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3)
{
- mapObj->range.as_byte = npc_something3(a3, mapObj->range.as_byte);
+ eventObj->range.as_byte = npc_something3(a3, eventObj->range.as_byte);
return 0;
}
-static void sub_8055D30(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj)
+static void sub_8055D30(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj)
{
- linkPlayerMapObj->mode = 0;
+ linkPlayerEventObj->mode = 0;
}
-static void sub_8055D38(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj)
+static void sub_8055D38(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj)
{
- mapObj->mapobj_unk_21--;
- linkPlayerMapObj->mode = 1;
- MoveCoords(mapObj->range.as_byte, &mapObj->coords1.x, &mapObj->coords1.y);
- if (!mapObj->mapobj_unk_21)
+ eventObj->directionSequenceIndex--;
+ linkPlayerEventObj->mode = 1;
+ MoveCoords(eventObj->range.as_byte, &eventObj->initialCoords.x, &eventObj->initialCoords.y);
+ if (!eventObj->directionSequenceIndex)
{
- npc_coords_shift_still(mapObj);
- linkPlayerMapObj->mode = 2;
+ ShiftStillEventObjectCoords(eventObj);
+ linkPlayerEventObj->mode = 2;
}
}
@@ -2694,15 +2689,15 @@ u8 npc_something3(u8 a1, u8 a2)
return a2;
}
-u8 LinkPlayerDetectCollision(u8 selfMapObjId, u8 a2, s16 x, s16 y)
+u8 LinkPlayerDetectCollision(u8 selfEventObjId, u8 a2, s16 x, s16 y)
{
u8 i;
for (i = 0; i < 16; i++)
{
- if (i != selfMapObjId)
+ if (i != selfEventObjId)
{
- if ((gMapObjects[i].coords2.x == x && gMapObjects[i].coords2.y == y)
- || (gMapObjects[i].coords3.x == x && gMapObjects[i].coords3.y == y))
+ if ((gEventObjects[i].currentCoords.x == x && gEventObjects[i].currentCoords.y == y)
+ || (gEventObjects[i].previousCoords.x == x && gEventObjects[i].previousCoords.y == y))
{
return 1;
}
@@ -2713,36 +2708,36 @@ u8 LinkPlayerDetectCollision(u8 selfMapObjId, u8 a2, s16 x, s16 y)
void CreateLinkPlayerSprite(u8 linkPlayerId)
{
- struct LinkPlayerMapObject *linkPlayerMapObj = &gLinkPlayerMapObjects[linkPlayerId];
- u8 mapObjId = linkPlayerMapObj->mapObjId;
- struct MapObject *mapObj = &gMapObjects[mapObjId];
+ struct LinkPlayerEventObject *linkPlayerEventObj = &gLinkPlayerEventObjects[linkPlayerId];
+ u8 eventObjId = linkPlayerEventObj->eventObjId;
+ struct EventObject *eventObj = &gEventObjects[eventObjId];
struct Sprite *sprite;
- if (linkPlayerMapObj->active)
+ if (linkPlayerEventObj->active)
{
- u8 val = GetRivalAvatarGraphicsIdByStateIdAndGender(0, mapObj->mapobj_bit_1);
- mapObj->spriteId = AddPseudoFieldObject(val, SpriteCB_LinkPlayer, 0, 0, 0);
- sprite = &gSprites[mapObj->spriteId];
+ u8 val = GetRivalAvatarGraphicsIdByStateIdAndGender(PLAYER_AVATAR_STATE_NORMAL, eventObj->singleMovementActive);
+ eventObj->spriteId = AddPseudoEventObject(val, SpriteCB_LinkPlayer, 0, 0, 0);
+ sprite = &gSprites[eventObj->spriteId];
sprite->coordOffsetEnabled = TRUE;
sprite->data[0] = linkPlayerId;
- mapObj->mapobj_bit_2 = 0;
+ eventObj->triggerGroundEffectsOnMove = 0;
}
}
void SpriteCB_LinkPlayer(struct Sprite *sprite)
{
- struct LinkPlayerMapObject *linkPlayerMapObj = &gLinkPlayerMapObjects[sprite->data[0]];
- struct MapObject *mapObj = &gMapObjects[linkPlayerMapObj->mapObjId];
- sprite->pos1.x = mapObj->coords1.x;
- sprite->pos1.y = mapObj->coords1.y;
- SetObjectSubpriorityByZCoord(mapObj->elevation, sprite, 1);
- sprite->oam.priority = ZCoordToPriority(mapObj->elevation);
- if (!linkPlayerMapObj->mode)
- StartSpriteAnim(sprite, FieldObjectDirectionToImageAnimId(mapObj->range.as_byte));
+ struct LinkPlayerEventObject *linkPlayerEventObj = &gLinkPlayerEventObjects[sprite->data[0]];
+ struct EventObject *eventObj = &gEventObjects[linkPlayerEventObj->eventObjId];
+ sprite->pos1.x = eventObj->initialCoords.x;
+ sprite->pos1.y = eventObj->initialCoords.y;
+ SetObjectSubpriorityByZCoord(eventObj->previousElevation, sprite, 1);
+ sprite->oam.priority = ZCoordToPriority(eventObj->previousElevation);
+ if (!linkPlayerEventObj->mode)
+ StartSpriteAnim(sprite, GetFaceDirectionAnimNum(eventObj->range.as_byte));
else
- StartSpriteAnimIfDifferent(sprite, get_go_image_anim_num(mapObj->range.as_byte));
- sub_806487C(sprite, 0);
- if (mapObj->mapobj_bit_2)
+ StartSpriteAnimIfDifferent(sprite, GetMoveDirectionAnimNum(eventObj->range.as_byte));
+ UpdateEventObjectSpriteVisibility(sprite, 0);
+ if (eventObj->triggerGroundEffectsOnMove)
{
sprite->invisible = ((sprite->data[7] & 4) >> 2);
sprite->data[7]++;
diff --git a/src/palette.c b/src/palette.c
index 2a6602503..6bbcea73c 100644
--- a/src/palette.c
+++ b/src/palette.c
@@ -192,10 +192,10 @@ bool8 BeginNormalPaletteFade(u32 selectedPalettes, s8 delay, u8 startY, u8 targe
}
}
-bool8 unref_sub_8073D3C(u32 a1, u8 a2, u8 a3, u8 a4, u16 a5)
+bool8 unref_sub_8073D3C(u32 selectedPalettes, s8 delay, u8 startY, u8 targetY, u16 blendColor)
{
ReadPlttIntoBuffers();
- return BeginNormalPaletteFade(a1, a2, a3, a4, a5);
+ return BeginNormalPaletteFade(selectedPalettes, delay, startY, targetY, blendColor);
}
void unref_sub_8073D84(u8 a1, u32 *a2)
diff --git a/src/party_menu.c b/src/party_menu.c
index 9caaa05b9..52c637879 100644
--- a/src/party_menu.c
+++ b/src/party_menu.c
@@ -450,8 +450,8 @@ struct Unk201C000
{
/*0x00*/ struct Pokemon *pokemon;
/*0x04*/ u8 unk4;
- /*0x05*/ u8 unk5;
- /*0x06*/ u16 unk6;
+ /*0x05*/ u8 primarySelectedMonIndex;
+ /*0x06*/ u16 secondarySelectedIndex;
/*0x08*/ u16 unk8;
/*0x0A*/ u8 pad_0A[2];
/*0x0C*/ s32 unkC;
@@ -718,7 +718,7 @@ bool8 InitPartyMenu(void)
gMain.state++;
break;
case 16:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
gPaletteFade.bufferTransferDisabled = 0;
gMain.state++;
break;
@@ -1007,7 +1007,7 @@ void sub_806B908(void)
ewram1B000.unk261 = 2;
}
#else
-__attribute__((naked))
+NAKED
void sub_806B908(void)
{
asm(".syntax unified\n\
@@ -1213,29 +1213,29 @@ void sub_806BBEC(u8 a)
}
}
-void sub_806BC3C(u8 monIndex, u8 b)
+// Draws the descriptor text in the mon's party bubble.
+// Descriptor texts are things like "ABLE", "NOT ABLE", "LEARNED", etc.
+void DrawMonDescriptorStatus(u8 monIndex, u8 descriptorOffset)
{
- u16 *vramPtr = gUnknown_08376918[IsDoubleBattle()][monIndex];
u8 i;
- u16 var1;
+ u32 offset;
+ u16 *vramPtr = gUnknown_08376918[IsDoubleBattle()][monIndex];
+ int paletteNum = 0;
- for (i = 0, var1 = (b / 7) * 32; i <= PARTY_SIZE; i++)
+ for (i = 0; i < 7; i++)
{
- u32 offset = i + var1;
- vramPtr[i] = gUnknown_08E9A300[offset] + 0x10C;
- vramPtr[i + 0x20] = gUnknown_08E9A300[offset + 0x20] + 0x10C;
+ offset = i + (descriptorOffset / 7) * 32;
+ vramPtr[i] = paletteNum | (gUnknown_08E9A300[offset] + 0x10C);
+ vramPtr[i + 0x20] = paletteNum | (gUnknown_08E9A300[offset + 0x20] + 0x10C);
}
-
- // Some dead code was likely optimized out, but the compiler still think r8 was used.
- asm("":::"r8");
}
-void unref_sub_806BCB8(u8 a)
+void unref_sub_806BCB8(u8 descriptorOffset)
{
u8 i;
for (i = 0; i < gPlayerPartyCount; i++)
- sub_806BC3C(i, a);
+ DrawMonDescriptorStatus(i, descriptorOffset);
}
// This is ultimately unreferenced, since it's caller is unreferenced.
@@ -1250,19 +1250,19 @@ void sub_806BCE8()
switch (GetMonGender(&gPlayerParty[i]))
{
case MON_MALE:
- sub_806BC3C(i, 0x54);
+ DrawMonDescriptorStatus(i, 0x54);
break;
case MON_FEMALE:
- sub_806BC3C(i, 0x62);
+ DrawMonDescriptorStatus(i, 0x62);
break;
default:
- sub_806BC3C(i, 0x46);
+ DrawMonDescriptorStatus(i, 0x46);
break;
}
}
else
{
- sub_806BC3C(i, 0x46);
+ DrawMonDescriptorStatus(i, 0x46);
}
}
}
@@ -1326,7 +1326,7 @@ u16 HandleDefaultPartyMenuInput(u8 taskId)
return gMain.newAndRepeatedKeys;
}
#else
-__attribute__((naked))
+NAKED
u16 HandleDefaultPartyMenuInput(u8 taskId)
{
asm(".syntax unified\n\
@@ -1810,7 +1810,7 @@ void ChangeLinkDoubleBattlePartyMenuSelection(u8 spriteId, u8 menuIndex, s8 dire
}
#else
-__attribute__((naked))
+NAKED
void ChangeLinkDoubleBattlePartyMenuSelection(u8 spriteId, u8 menuIndex, s8 directionPressed)
{
asm(".syntax unified\n\
@@ -2408,7 +2408,7 @@ void sub_806CF04(void)
gSprites[ewram01000.unk4].callback = SpriteCB_sub_806D37C;
}
#else
-__attribute__((naked))
+NAKED
void sub_806CF04(void)
{
asm(".syntax unified\n\
@@ -2986,7 +2986,7 @@ void CreateHeldItemIcon_806DCD4(u8 taskId, u8 monIndex, u16 item)
gSprites[heldItemSpriteId].callback(&gSprites[heldItemSpriteId]);
}
#else
-__attribute__((naked))
+NAKED
void CreateHeldItemIcon_806DCD4(u8 taskId, u8 monIndex, u16 item)
{
asm(".syntax unified\n\
@@ -3172,7 +3172,7 @@ void SetHeldItemIconVisibility(u8 taskId, u8 monIndex)
}
}
#else
-__attribute__((naked))
+NAKED
void SetHeldItemIconVisibility(u8 a, u8 monIndex)
{
asm(".syntax unified\n\
@@ -3376,7 +3376,7 @@ void PartyMenuPrintMonLevelOrStatus(u8 monIndex, struct Pokemon *pokemon)
else
menuLayout = IsDoubleBattle();
- if (statusAndPkrs != 0 && statusAndPkrs != 6)
+ if (statusAndPkrs && statusAndPkrs != STATUS_PRIMARY_POKERUS)
PartyMenuPutStatusTilemap(monIndex, menuLayout, statusAndPkrs - 1);
else
PartyMenuPrintLevel(monIndex, menuLayout, pokemon);
@@ -3427,10 +3427,10 @@ void PartyMenuDoPrintHP(u8 monIndex, u8 b, u16 currentHP, u16 maxHP)
{
u32 *var;
register u8 *stringVar1 asm("r2") = gStringVar1;
- register u8 *textPtr asm("r2") = sub_8072C14(stringVar1, currentHP, 15, 1);
+ register u8 *textPtr asm("r2") = AlignInt1InMenuWindow(stringVar1, currentHP, 15, 1);
textPtr[0] = CHAR_SLASH;
- sub_8072C14(++textPtr, maxHP, 35, 1);
+ AlignInt1InMenuWindow(++textPtr, maxHP, 35, 1);
var = 0;
CpuFastSet(&var, gUnknown_02039460, 0x1000040);
@@ -3601,9 +3601,9 @@ void sub_806E8D0(u8 taskId, u16 b, TaskFunc c)
{
ewram1C000.unk10 = c;
ewram1C000.unk4 = taskId;
- ewram1C000.unk5 = sub_806CA38(taskId);
- ewram1C000.unk6 = b;
- ewram1C000.pokemon = &gPlayerParty[ewram1C000.unk5];
+ ewram1C000.primarySelectedMonIndex = sub_806CA38(taskId);
+ ewram1C000.secondarySelectedIndex = b;
+ ewram1C000.pokemon = &gPlayerParty[ewram1C000.primarySelectedMonIndex];
}
bool8 PartyMenuUpdateMonHeldItem(struct Pokemon *pkmn, u16 item)
@@ -3664,7 +3664,7 @@ void PartyMenuTryGiveMonHeldItem(u8 taskId, u16 newItem, TaskFunc c)
}
else
{
- DisplayGiveHeldItemMessage(ewram1C000.unk5, newItem, 1);
+ DisplayGiveHeldItemMessage(ewram1C000.primarySelectedMonIndex, newItem, 1);
CreateTask(party_menu_link_mon_held_item_object, 5);
}
}
@@ -3674,7 +3674,7 @@ void party_menu_link_mon_held_item_object(u8 taskId)
{
if (gUnknown_0202E8F6 == 0)
{
- SetHeldItemIconVisibility(ewram1C000.unk4, ewram1C000.unk5);
+ SetHeldItemIconVisibility(ewram1C000.unk4, ewram1C000.primarySelectedMonIndex);
gTasks[ewram1C000.unk4].func = ewram1C000.unk10;
DestroyTask(taskId);
}
@@ -3690,17 +3690,17 @@ void PartyMenuTryGiveMonHeldItem_806EACC(u8 taskId)
Menu_EraseWindowRect(23, 8, 29, 13);
currentItem = GetMonData(ewram1C000.pokemon, MON_DATA_HELD_ITEM);
- RemoveBagItem(ewram1C000.unk6, 1);
+ RemoveBagItem(ewram1C000.secondarySelectedIndex, 1);
if (AddBagItem(currentItem, 1) == TRUE)
{
- PartyMenuUpdateMonHeldItem(ewram1C000.pokemon, ewram1C000.unk6);
- if (ItemIsMail(ewram1C000.unk6))
+ PartyMenuUpdateMonHeldItem(ewram1C000.pokemon, ewram1C000.secondarySelectedIndex);
+ if (ItemIsMail(ewram1C000.secondarySelectedIndex))
{
- DisplayTakeHeldItemMessage(ewram1C000.unk5, currentItem, 1);
+ DisplayTakeHeldItemMessage(ewram1C000.primarySelectedMonIndex, currentItem, 1);
}
else
{
- CopyItemName(ewram1C000.unk6, gStringVar1);
+ CopyItemName(ewram1C000.secondarySelectedIndex, gStringVar1);
StringExpandPlaceholders(gStringVar4, gOtherText_TakenAndReplaced);
sub_806E834(gStringVar4, 1);
}
@@ -3708,7 +3708,7 @@ void PartyMenuTryGiveMonHeldItem_806EACC(u8 taskId)
else
{
sub_806E834(gOtherText_BagFullCannotRemoveItem, 0);
- AddBagItem(ewram1C000.unk6, 1);
+ AddBagItem(ewram1C000.secondarySelectedIndex, 1);
}
}
else
@@ -3789,7 +3789,7 @@ void PartyMenuTryGiveMonHeldItem_806ECE8(u8 taskId, TaskFunc func)
{
if (ItemIsMail(currentItem) == TRUE)
TakeMailFromMon(ewram1C000.pokemon);
- DisplayTakeHeldItemMessage(ewram1C000.unk5, currentItem, 0);
+ DisplayTakeHeldItemMessage(ewram1C000.primarySelectedMonIndex, currentItem, 0);
SetMonData(ewram1C000.pokemon, MON_DATA_HELD_ITEM, itemData);
}
else
@@ -3812,7 +3812,7 @@ void DoTakeMail(u8 taskId, TaskFunc func)
{
gTasks[taskId].func = TaskDummy;
sub_806E8D0(taskId, 0, func);
- ewram1C000.unk6 = GetMonData(ewram1C000.pokemon, MON_DATA_HELD_ITEM);
+ ewram1C000.secondarySelectedIndex = GetMonData(ewram1C000.pokemon, MON_DATA_HELD_ITEM);
sub_806E834(gOtherText_SendRemovedMailPrompt, 1);
CreateTask(Task_ConfirmTakeHeldMail, 5);
}
@@ -3823,7 +3823,7 @@ void Task_LoseMailMessage(u8 taskId)
if (selection == 0)
{
- if (AddBagItem(ewram1C000.unk6, 1) == TRUE)
+ if (AddBagItem(ewram1C000.secondarySelectedIndex, 1) == TRUE)
{
TakeMailFromMon(ewram1C000.pokemon);
sub_806E834(gOtherText_MailTaken, 0);
@@ -3923,7 +3923,7 @@ extern u8 gUnknown_020297ED;
void Task_TeamMonTMMove(u8 taskId)
{
GetMonNickname(ewram1C000.pokemon, gStringVar1);
- ewram1C000.unk8 = ItemIdToBattleMoveId(ewram1C000.unk6);
+ ewram1C000.unk8 = ItemIdToBattleMoveId(ewram1C000.secondarySelectedIndex);
StringCopy(gStringVar2, gMoveNames[ewram1C000.unk8]);
ewram1B000.unk282 = 0;
if (pokemon_has_move(ewram1C000.pokemon, ewram1C000.unk8))
@@ -3938,7 +3938,7 @@ void Task_TeamMonTMMove(u8 taskId)
#if DEBUG
!gUnknown_020297ED &&
#endif
- !CanMonLearnTMHM(ewram1C000.pokemon, ewram1C000.unk6 - 33))
+ !CanMonLearnTMHM(ewram1C000.pokemon, ewram1C000.secondarySelectedIndex - 33))
{
StringExpandPlaceholders(gStringVar4, gOtherText_NotCompatible);
sub_806E834(gStringVar4, 1);
@@ -3965,9 +3965,9 @@ void Task_TeamMonTMMove2(u8 taskId)
StringCopy(gStringVar2, gMoveNames[ewram1C000.unk8]);
StringExpandPlaceholders(gStringVar4, gOtherText_LearnedMove);
sub_806E834(gStringVar4, 1);
- AdjustFriendship(ewram1C000.pokemon, 4);
- if (ewram1B000.unk282 == 0 && ewram1C000.unk6 <= 0x152)
- RemoveBagItem(ewram1C000.unk6, 1);
+ AdjustFriendship(ewram1C000.pokemon, FRIENDSHIP_EVENT_LEARN_TMHM);
+ if (ewram1B000.unk282 == 0 && ewram1C000.secondarySelectedIndex < ITEM_HM01_CUT)
+ RemoveBagItem(ewram1C000.secondarySelectedIndex, 1);
gTasks[taskId].func = Task_TeamMonTMMove3;
}
@@ -3975,7 +3975,7 @@ void Task_TeamMonTMMove3(u8 taskId)
{
if (gUnknown_0202E8F6 == 0)
{
- PlayFanfare(BGM_FANFA1);
+ PlayFanfare(MUS_FANFA1);
gTasks[taskId].func = Task_TeamMonTMMove4;
}
}
@@ -3986,7 +3986,7 @@ void Task_TeamMonTMMove4(u8 taskId)
{
if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON))
{
- SetHeldItemIconVisibility(ewram1C000.unk4, ewram1C000.unk5);
+ SetHeldItemIconVisibility(ewram1C000.unk4, ewram1C000.primarySelectedMonIndex);
if (ewram1B000.unk282 == 1)
{
TeachMonMoveInPartyMenu(taskId);
@@ -4004,7 +4004,7 @@ void sub_806F2FC(u8 taskId)
{
if (gUnknown_0202E8F6 == 0)
{
- SetHeldItemIconVisibility(ewram1C000.unk4, ewram1C000.unk5);
+ SetHeldItemIconVisibility(ewram1C000.unk4, ewram1C000.primarySelectedMonIndex);
if (ewram1B000.unk282 == 1)
{
TeachMonMoveInPartyMenu(taskId);
@@ -4050,7 +4050,7 @@ void sub_806F3FC(u8 taskId)
{
if (!gPaletteFade.active)
{
- ShowSelectMovePokemonSummaryScreen(gPlayerParty, ewram1C000.unk5, gPlayerPartyCount - 1, sub_808B564, ewram1C000.unk8);
+ ShowSelectMovePokemonSummaryScreen(gPlayerParty, ewram1C000.primarySelectedMonIndex, gPlayerPartyCount - 1, sub_808B564, ewram1C000.unk8);
DestroyTask(taskId);
}
}
@@ -4059,7 +4059,7 @@ void sub_806F44C(u8 taskId)
{
if (gUnknown_0202E8F6 == 0)
{
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gTasks[taskId].func = sub_806F3FC;
}
}
@@ -4184,7 +4184,7 @@ s16 sub_806F7E8(u8 taskId, struct BattleInterfaceStruct1 *b, s8 c)
b->unkC_0 = 5;
if (hpBarLevel < 2)
b->unkC_0 = 6;
- vramPtr = gUnknown_08376858[IsDoubleBattle()][ewram1C000.unk5];
+ vramPtr = gUnknown_08376858[IsDoubleBattle()][ewram1C000.primarySelectedMonIndex];
return sub_80460C8(b, &ewram1C000.unkC, vramPtr, 0);
}
@@ -4208,19 +4208,19 @@ void sub_806F8AC(u8 taskId)
StringExpandPlaceholders(gStringVar4, gOtherText_HPRestoredBy);
else
StringExpandPlaceholders(gStringVar4, gOtherText_RegainedHealth);
- SetMonIconAnim(GetMonIconSpriteId(ewram1C000.unk4, ewram1C000.unk5), ewram1C000.pokemon);
- task_pc_turn_off(&gUnknown_083769A8[IsDoubleBattle() * 12 + ewram1C000.unk5 * 2], 7);
+ SetMonIconAnim(GetMonIconSpriteId(ewram1C000.unk4, ewram1C000.primarySelectedMonIndex), ewram1C000.pokemon);
+ task_pc_turn_off(&gUnknown_083769A8[IsDoubleBattle() * 12 + ewram1C000.primarySelectedMonIndex * 2], 7);
ewram1B000.unk261 = 2;
sub_806E834(gStringVar4, 1);
sp14 += sp0.unk4;
SetMonData(ewram1C000.pokemon, MON_DATA_HP, &sp14);
- RemoveBagItem(ewram1C000.unk6, 1);
+ RemoveBagItem(ewram1C000.secondarySelectedIndex, 1);
sub_8032638();
gTasks[taskId].func = sub_806FB44;
}
else
{
- PartyMenuDoPrintHP(ewram1C000.unk5, IsDoubleBattle(), ewram1B000.unk282, sp0.unk0);
+ PartyMenuDoPrintHP(ewram1C000.primarySelectedMonIndex, IsDoubleBattle(), ewram1B000.unk282, sp0.unk0);
}
}
@@ -4236,8 +4236,8 @@ void sub_806FA18(u8 taskId)
gTasks[taskId].data[11] -= gTasks[taskId].data[12];
SetMonData(ewram1C000.pokemon, MON_DATA_HP, &gTasks[taskId].data[11]);
SetMonIconAnim(GetMonIconSpriteId(ewram1C000.unk4, ewram01000.unk1), ewram1C000.pokemon);
- ewram1C000.unk5 = gSprites[ewram01000.unk2].data[0];
- ewram1C000.pokemon = &gPlayerParty[ewram1C000.unk5];
+ ewram1C000.primarySelectedMonIndex = gSprites[ewram01000.unk2].data[0];
+ ewram1C000.pokemon = &gPlayerParty[ewram1C000.primarySelectedMonIndex];
gTasks[taskId].data[10] = GetMonData(ewram1C000.pokemon, MON_DATA_MAX_HP);
gTasks[taskId].data[11] = GetMonData(ewram1C000.pokemon, MON_DATA_HP);
ewram1C000.unkC = -32768;
@@ -4247,7 +4247,7 @@ void sub_806FA18(u8 taskId)
}
else
{
- PartyMenuDoPrintHP(ewram1C000.unk5, IsDoubleBattle(), ewram1B000.unk282, sp0.unk0);
+ PartyMenuDoPrintHP(ewram1C000.primarySelectedMonIndex, IsDoubleBattle(), ewram1B000.unk282, sp0.unk0);
}
}
@@ -4364,12 +4364,12 @@ bool8 IsMedicineIneffective(struct Pokemon *pkmn, u16 item)
return FALSE;
}
-bool8 ExecuteTableBasedItemEffect__(u8 a, u16 b, u8 c)
+bool8 ExecuteTableBasedItemEffect__(u8 monIndex, u16 item, u8 moveIndex)
{
if (gMain.inBattle)
- return ExecuteTableBasedItemEffect_(&gPlayerParty[a], b, sub_8094C20(a), c);
+ return ExecuteTableBasedItemEffect_(&gPlayerParty[monIndex], item, sub_8094C20(monIndex), moveIndex);
else
- return ExecuteTableBasedItemEffect_(&gPlayerParty[a], b, a, c);
+ return ExecuteTableBasedItemEffect_(&gPlayerParty[monIndex], item, monIndex, moveIndex);
}
void UseMedicine(u8 taskId, u16 item, TaskFunc func)
@@ -4395,7 +4395,7 @@ void UseMedicine(u8 taskId, u16 item, TaskFunc func)
gTasks[r7].data[11] = 0;
}
}
- r0 = ExecuteTableBasedItemEffect__(ewram1C000.unk5, item, 0);
+ r0 = ExecuteTableBasedItemEffect__(ewram1C000.primarySelectedMonIndex, item, 0);
}
else
{
@@ -4419,8 +4419,8 @@ void UseMedicine(u8 taskId, u16 item, TaskFunc func)
else
PlaySE(SE_BIDORO);
statusAndPkrs = GetMonStatusAndPokerus(ewram1C000.pokemon);
- if (statusAndPkrs == 6 || statusAndPkrs == 0)
- PartyMenuUpdateLevelOrStatus(ewram1C000.pokemon, ewram1C000.unk5);
+ if (statusAndPkrs == STATUS_PRIMARY_POKERUS || statusAndPkrs == STATUS_PRIMARY_NONE)
+ PartyMenuUpdateLevelOrStatus(ewram1C000.pokemon, ewram1C000.primarySelectedMonIndex);
if (r9 == TRUE)
{
gTasks[r7].data[12] = GetMonData(ewram1C000.pokemon, MON_DATA_HP) - gTasks[r7].data[11];
@@ -4439,7 +4439,7 @@ void UseMedicine(u8 taskId, u16 item, TaskFunc func)
if (!IsBlueYellowRedFlute(item))
RemoveBagItem(item, 1);
GetMedicineItemEffectMessage(item);
- TryPrintPartyMenuMonNickname(ewram1C000.unk5, ewram1C000.pokemon);
+ TryPrintPartyMenuMonNickname(ewram1C000.primarySelectedMonIndex, ewram1C000.pokemon);
sub_806E834(gStringVar4, 1);
gTasks[r7].func = sub_806FB0C;
}
@@ -4456,12 +4456,12 @@ bool8 IsBlueYellowRedFlute(u16 item)
return FALSE;
}
-void sub_8070048(u8 taskId, u16 item, TaskFunc func)
+void DoSacredAshItemEffect(u8 taskId, u16 item, TaskFunc func)
{
ewram1C000.unk10 = func;
ewram1C000.unk4 = taskId;
- ewram1C000.unk6 = item;
- ewram1C000.unk5 = 0;
+ ewram1C000.secondarySelectedIndex = item;
+ ewram1C000.primarySelectedMonIndex = 0;
ewram1C000.unk14 = sub_80701DC;
ewram1B000.unk27E = 0;
ewram1B000.unk280 = 0;
@@ -4473,7 +4473,7 @@ void sub_8070088(u8 taskId)
u8 taskId2;
gTasks[taskId].func = TaskDummy;
- if (GetMonData(&gPlayerParty[ewram1C000.unk5], MON_DATA_SPECIES) == 0)
+ if (GetMonData(&gPlayerParty[ewram1C000.primarySelectedMonIndex], MON_DATA_SPECIES) == SPECIES_NONE)
{
gTasks[taskId].func = sub_80701DC;
}
@@ -4483,10 +4483,10 @@ void sub_8070088(u8 taskId)
taskId2 = CreateTask(TaskDummy, 5);
taskData = gTasks[taskId2].data;
- ewram1C000.pokemon = &gPlayerParty[ewram1C000.unk5];
+ ewram1C000.pokemon = &gPlayerParty[ewram1C000.primarySelectedMonIndex];
taskData[10] = GetMonData(ewram1C000.pokemon, MON_DATA_MAX_HP);
taskData[11] = GetMonData(ewram1C000.pokemon, MON_DATA_HP);
- if (ExecuteTableBasedItemEffect__(ewram1C000.unk5, ewram1C000.unk6, 0))
+ if (ExecuteTableBasedItemEffect__(ewram1C000.primarySelectedMonIndex, ewram1C000.secondarySelectedIndex, 0))
{
DestroyTask(taskId2);
gTasks[taskId].func = sub_80701DC;
@@ -4496,8 +4496,8 @@ void sub_8070088(u8 taskId)
gUnknown_0202E8F4 = 1;
Menu_EraseWindowRect(WINDOW_LEFT, 14, WINDOW_RIGHT, 19);
PlaySE(SE_KAIFUKU);
- PartyMenuUpdateLevelOrStatus(ewram1C000.pokemon, ewram1C000.unk5);
- task_pc_turn_off(&gUnknown_083769A8[IsDoubleBattle() * 12 + ewram1C000.unk5 * 2], 9);
+ PartyMenuUpdateLevelOrStatus(ewram1C000.pokemon, ewram1C000.primarySelectedMonIndex);
+ task_pc_turn_off(&gUnknown_083769A8[IsDoubleBattle() * 12 + ewram1C000.primarySelectedMonIndex * 2], 9);
ewram1B000.unk261 = 2;
taskData[12] = GetMonData(ewram1C000.pokemon, MON_DATA_HP) - taskData[11];
taskData[14] = 1;
@@ -4514,16 +4514,16 @@ void sub_80701DC(u8 taskId)
{
if (ewram1B000.unk27E == 1)
{
- AddBagItem(ewram1C000.unk6, 1);
- if (GetMonData(&gPlayerParty[ewram1C000.unk5], MON_DATA_SPECIES) != 0)
+ AddBagItem(ewram1C000.secondarySelectedIndex, 1);
+ if (GetMonData(&gPlayerParty[ewram1C000.primarySelectedMonIndex], MON_DATA_SPECIES) != 0)
{
- task_pc_turn_off(&gUnknown_083769A8[IsDoubleBattle() * 12 + ewram1C000.unk5 * 2], 3);
+ task_pc_turn_off(&gUnknown_083769A8[IsDoubleBattle() * 12 + ewram1C000.primarySelectedMonIndex * 2], 3);
ewram1B000.unk261 = 2;
}
ewram1B000.unk27E = 0;
}
- ewram1C000.unk5++;
- if (ewram1C000.unk5 == 6)
+ ewram1C000.primarySelectedMonIndex++;
+ if (ewram1C000.primarySelectedMonIndex == 6)
{
gUnknown_0202E8F4 = 0;
if (ewram1B000.unk280 == 0)
@@ -4534,7 +4534,7 @@ void sub_80701DC(u8 taskId)
}
else
{
- RemoveBagItem(ewram1C000.unk6, 1);
+ RemoveBagItem(ewram1C000.secondarySelectedIndex, 1);
gTasks[taskId].func = ewram1C000.unk10;
}
gLastFieldPokeMenuOpened = 0;
@@ -4607,7 +4607,7 @@ void DoPPRecoveryItemEffect(u8 taskId, u16 item, TaskFunc c)
{
PlaySE(SE_SELECT);
PrintPartyMenuPromptText(10, 3);
- CreateItemUseMoveMenu(ewram1C000.unk5);
+ CreateItemUseMoveMenu(ewram1C000.primarySelectedMonIndex);
gTasks[taskId2].func = Task_HandleItemUseMoveMenuInput;
gMain.newKeys = 0;
}
@@ -4638,7 +4638,7 @@ void DoRecoverPP(u8 taskId)
{
u16 r5 = 0;
- if (ExecuteTableBasedItemEffect__(ewram1C000.unk5, ewram1C000.unk6, gTasks[taskId].data[11]))
+ if (ExecuteTableBasedItemEffect__(ewram1C000.primarySelectedMonIndex, ewram1C000.secondarySelectedIndex, gTasks[taskId].data[11]))
{
gUnknown_0202E8F4 = r5;
PlaySE(SE_SELECT);
@@ -4648,10 +4648,10 @@ void DoRecoverPP(u8 taskId)
{
gUnknown_0202E8F4 = 1;
PlaySE(SE_KAIFUKU);
- RemoveBagItem(ewram1C000.unk6, 1);
+ RemoveBagItem(ewram1C000.secondarySelectedIndex, 1);
r5 = GetMonData(ewram1C000.pokemon, MON_DATA_MOVE1 + gTasks[taskId].data[11]);
StringCopy(gStringVar1, gMoveNames[r5]);
- GetMedicineItemEffectMessage(ewram1C000.unk6);
+ GetMedicineItemEffectMessage(ewram1C000.secondarySelectedIndex);
sub_806E834(gStringVar4, 1);
}
gTasks[taskId].func = sub_806FB0C;
@@ -4663,7 +4663,7 @@ void DoPPUpItemEffect(u8 taskId, u16 b, TaskFunc c)
sub_806E8D0(taskId, b, c);
PlaySE(SE_SELECT);
PrintPartyMenuPromptText(11, 3);
- CreateItemUseMoveMenu(ewram1C000.unk5);
+ CreateItemUseMoveMenu(ewram1C000.primarySelectedMonIndex);
CreateTask(Task_HandleItemUseMoveMenuInput, 5);
gMain.newKeys = 0;
}
@@ -4698,24 +4698,24 @@ const u8 gUnknown_Debug_839B6D8[] = _(
#endif
-void DoRareCandyItemEffect(u8 taskId, u16 b, TaskFunc c)
+void DoRareCandyItemEffect(u8 taskId, u16 item, TaskFunc c)
{
u8 i;
- bool8 r0;
+ bool8 noEffect;
gTasks[taskId].func = TaskDummy;
- sub_806E8D0(taskId, b, c);
+ sub_806E8D0(taskId, item, c);
if (GetMonData(ewram1C000.pokemon, MON_DATA_LEVEL) != 100)
{
- for (i = 0; i < 6; i++)
+ for (i = 0; i < NUM_STATS; i++)
ewram1B000.statGrowths[i] = GetMonData(ewram1C000.pokemon, StatDataTypes[i]);
- r0 = ExecuteTableBasedItemEffect__(ewram1C000.unk5, b, 0);
+ noEffect = ExecuteTableBasedItemEffect__(ewram1C000.primarySelectedMonIndex, item, 0);
}
else
- r0 = TRUE;
+ noEffect = TRUE;
- if (r0)
+ if (noEffect)
{
gUnknown_0202E8F4 = 0;
PlaySE(SE_SELECT);
@@ -4728,8 +4728,8 @@ void DoRareCandyItemEffect(u8 taskId, u16 b, TaskFunc c)
gUnknown_0202E8F4 = 1;
PlayFanfareByFanfareNum(0);
- RedrawPokemonInfoInMenu(ewram1C000.unk5, ewram1C000.pokemon);
- RemoveBagItem(b, 1);
+ RedrawPokemonInfoInMenu(ewram1C000.primarySelectedMonIndex, ewram1C000.pokemon);
+ RemoveBagItem(item, 1);
GetMonNickname(ewram1C000.pokemon, gStringVar1);
level = GetMonData(ewram1C000.pokemon, MON_DATA_LEVEL);
ConvertIntToDecimalStringN(gStringVar2, level, 0, 3);
@@ -4843,7 +4843,7 @@ void RedrawPokemonInfoInMenu(u8 monIndex, struct Pokemon *pokemon)
u8 statusAndPkrs = GetMonStatusAndPokerus(pokemon);
u8 icon;
- if (statusAndPkrs == 0 || statusAndPkrs == 6)
+ if (statusAndPkrs == STATUS_PRIMARY_NONE || statusAndPkrs == STATUS_PRIMARY_POKERUS)
PartyMenuUpdateLevelOrStatus(pokemon, monIndex);
PartyMenuDoPrintHP(monIndex, IsDoubleBattle(), GetMonData(pokemon, MON_DATA_HP), GetMonData(pokemon, MON_DATA_MAX_HP));
@@ -4878,7 +4878,7 @@ void Task_RareCandy3(u8 taskId)
if (evolutionSpecies != 0)
{
gCB2_AfterEvolution = sub_80A53F8;
- BeginEvolutionScene(ewram1C000.pokemon, evolutionSpecies, TRUE, ewram1C000.unk5);
+ BeginEvolutionScene(ewram1C000.pokemon, evolutionSpecies, TRUE, ewram1C000.primarySelectedMonIndex);
DestroyTask(taskId);
}
else
@@ -4930,7 +4930,7 @@ void TeachMonMoveInPartyMenu(u8 taskId)
if (evolutionSpecies != 0)
{
gCB2_AfterEvolution = sub_80A53F8;
- BeginEvolutionScene(ewram1C000.pokemon, evolutionSpecies, TRUE, ewram1C000.unk5);
+ BeginEvolutionScene(ewram1C000.pokemon, evolutionSpecies, TRUE, ewram1C000.primarySelectedMonIndex);
DestroyTask(taskId);
}
else
@@ -4981,7 +4981,7 @@ void DoEvolutionStoneItemEffect(u8 taskId, u16 evolutionStoneItem, TaskFunc c)
gCB2_AfterEvolution = sub_80A53F8;
- if (ExecuteTableBasedItemEffect__(ewram1C000.unk5, evolutionStoneItem, 0))
+ if (ExecuteTableBasedItemEffect__(ewram1C000.primarySelectedMonIndex, evolutionStoneItem, 0))
{
gUnknown_0202E8F4 = 0;
sub_806E834(gOtherText_WontHaveAnyEffect, 1);
@@ -5111,7 +5111,7 @@ u8 GetItemEffectType(u16 item)
}
}
#else
-__attribute__((naked))
+NAKED
u8 GetItemEffectType(u16 item)
{
asm(".syntax unified\n\
diff --git a/src/pc_screen_effect.c b/src/pc_screen_effect.c
index dcc3bc9c9..1bd87ea24 100644
--- a/src/pc_screen_effect.c
+++ b/src/pc_screen_effect.c
@@ -4,56 +4,48 @@
#include "sprite.h"
#include "pc_screen_effect.h"
-void sub_80C603C(void);
-void sub_80C6078(void);
-void sub_80C60CC(struct Sprite *);
-void sub_80C6130(struct Sprite *);
-void sub_80C61B0(IntrFunc);
-void ClearGpuRegBits(void);
+static void sub_80C603C(void);
+static void sub_80C6078(void);
+static void sub_80C60CC(struct Sprite *);
+static void sub_80C6130(struct Sprite *);
+static void HBlankIntrOn(IntrFunc);
+static void HBlankIntrOff(void);
-extern const struct OamData gOamData_83D18D8;
+struct OamData gOamData_83D18D8 = {
+ .shape = ST_OAM_H_RECTANGLE,
+ .size = 1
+};
-extern const union AnimCmd *const gSpriteAnimTable_83D18E8[];
+union AnimCmd gSpriteAnim_83D18E0[] = {
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_END
+};
-extern const u16 gUnknownPal_083D18EC[16];
+const union AnimCmd *gSpriteAnimTable_83D18E8[] = {
+ gSpriteAnim_83D18E0
+};
-extern const u8 gUnknownGfx_083D190C[128];
+u16 gUnknownPal_083D18EC[] = INCBIN_U16("graphics/unknown/unknown_3D18EC.gbapal");
+u8 gUnknownGfx_083D190C[] = INCBIN_U8("graphics/unknown/unknown_3D190C.4bpp");
EWRAM_DATA struct PCScreenEffectStruct *gUnknown_020387EC = NULL;
-const struct SpriteSheet gUnknown_083D1898 = { gUnknownGfx_083D190C, sizeof(gUnknownGfx_083D190C), 0 };
-
-const struct SpritePalette gUnknown_083D18A0 = { gUnknownPal_083D18EC, 0 };
-
-const struct SpriteTemplate gSpriteTemplate_83D18A8 =
-{
- 0,
- 0,
- &gOamData_83D18D8,
- gSpriteAnimTable_83D18E8,
- NULL,
- gDummySpriteAffineAnimTable,
- sub_80C60CC,
-};
-
-const struct SpriteTemplate gSpriteTemplate_83D18C0 =
-{
- 0,
- 0,
- &gOamData_83D18D8,
- gSpriteAnimTable_83D18E8,
- NULL,
- gDummySpriteAffineAnimTable,
- sub_80C6130,
-};
-
void sub_80C5CD4(struct PCScreenEffectStruct *unkStruct)
{
u16 i;
- struct SpriteSheet sprSheet = gUnknown_083D1898;
- struct SpritePalette sprPalette = gUnknown_083D18A0;
- struct SpriteTemplate sprTemplate = gSpriteTemplate_83D18A8;
+ struct SpriteSheet sprSheet = { gUnknownGfx_083D190C, sizeof(gUnknownGfx_083D190C), 0 };
+ struct SpritePalette sprPalette = { gUnknownPal_083D18EC, 0 };
+ struct SpriteTemplate sprTemplate =
+ {
+ 0,
+ 0,
+ &gOamData_83D18D8,
+ gSpriteAnimTable_83D18E8,
+ NULL,
+ gDummySpriteAffineAnimTable,
+ sub_80C60CC,
+ };
sprSheet.tag = unkStruct->tileTag;
sprTemplate.tileTag = unkStruct->tileTag;
@@ -92,8 +84,8 @@ bool8 sub_80C5DCC(void)
{
if (gUnknown_020387EC->unk08 == 0)
{
- BlendPalettes(gUnknown_020387EC->selectedPalettes, 0x10, 0xFFFF);
- sub_80C61B0(sub_80C603C);
+ BlendPalettes(gUnknown_020387EC->selectedPalettes, 16, FADE_COLOR_WHITE);
+ HBlankIntrOn(sub_80C603C);
gUnknown_020387EC->unk08++;
}
@@ -107,7 +99,7 @@ bool8 sub_80C5DCC(void)
gUnknown_020387EC->unk0C = 80;
REG_BLDCNT = 0;
REG_BLDY = 0;
- ClearGpuRegBits();
+ HBlankIntrOff();
return TRUE;
}
else
@@ -115,3 +107,188 @@ bool8 sub_80C5DCC(void)
return FALSE;
}
}
+
+void sub_80C5E38(struct PCScreenEffectStruct * a0)
+{
+ u16 i;
+ u8 spriteId;
+
+ struct SpriteSheet spriteSheet = { gUnknownGfx_083D190C, sizeof(gUnknownGfx_083D190C), 0 };
+ struct SpritePalette spritePalette = { gUnknownPal_083D18EC, 0 };
+ struct SpriteTemplate spriteTemplate =
+ {
+ 0,
+ 0,
+ &gOamData_83D18D8,
+ gSpriteAnimTable_83D18E8,
+ NULL,
+ gDummySpriteAffineAnimTable,
+ sub_80C6130,
+ };
+
+ spriteSheet.tag = a0->tileTag;
+ spriteTemplate.tileTag = a0->tileTag;
+ spritePalette.tag = a0->paletteTag;
+ spriteTemplate.paletteTag = a0->paletteTag;
+
+ LoadSpriteSheet(&spriteSheet);
+ LoadSpritePalette(&spritePalette);
+
+ a0->unk0C = 0x50;
+ a0->unk08 = 0;
+ a0->unk0A = 0;
+ a0->selectedPalettes = 0xffff0000 & ~(0x10000 << IndexOfSpritePaletteTag(a0->paletteTag));
+ if (a0->unk04 == 0)
+ a0->unk04 = 16;
+ if (a0->unk06 == 0)
+ a0->unk06 = 20;
+ gUnknown_020387EC = a0;
+
+ for (i = 0; i < 8; i++)
+ {
+ if (i < 4)
+ {
+ spriteId = CreateSprite(&spriteTemplate, i * 32 - 0x70, 0x50, 0);
+ if (spriteId == MAX_SPRITES)
+ break;
+ gSprites[spriteId].data[0] = a0->unk04;
+ gSprites[spriteId].data[1] = 1;
+ }
+ else
+ {
+ // Fakematching
+ spriteId = CreateSprite(&spriteTemplate, ((i << 21) + (0x80 << 16)) >> 16, 0x50, 0);
+ if (spriteId == MAX_SPRITES)
+ break;
+ gSprites[spriteId].data[0] = -a0->unk04;
+ gSprites[spriteId].data[1] = -1;
+ }
+ gSprites[spriteId].data[2] = i * 32 + 8;
+ gSprites[spriteId].data[4] = 0;
+ gSprites[spriteId].invisible = TRUE;
+ }
+ REG_BLDCNT = BLDCNT_TGT1_BG0 | BLDCNT_TGT1_BG1 | BLDCNT_TGT1_BG2 | BLDCNT_TGT1_BG3 | BLDCNT_TGT1_OBJ | BLDCNT_TGT1_BD | BLDCNT_EFFECT_DARKEN;
+ REG_BLDY = 16;
+ HBlankIntrOn(sub_80C6078);
+}
+
+bool8 sub_80C5F98(void)
+{
+ switch (gUnknown_020387EC->unk08)
+ {
+ case 0:
+ gUnknown_020387EC->unk0C -= gUnknown_020387EC->unk06;
+ if (gUnknown_020387EC->unk0C < 2)
+ {
+ BlendPalettes(gUnknown_020387EC->selectedPalettes, 16, FADE_COLOR_WHITE);
+ SetHBlankCallback(sub_80C603C);
+ gUnknown_020387EC->unk0C = 1;
+ gUnknown_020387EC->unk08++;
+ }
+ break;
+ case 1:
+ if (gUnknown_020387EC->unk0A == 8)
+ {
+ BlendPalettes(0xFFFFFFFF, 16, RGB(0, 0, 0));
+ gUnknown_020387EC->unk08++;
+ }
+ break;
+ case 2:
+ REG_BLDCNT = 0;
+ REG_BLDY = 0;
+ FreeSpriteTilesByTag(gUnknown_020387EC->tileTag);
+ FreeSpritePaletteByTag(gUnknown_020387EC->paletteTag);
+ HBlankIntrOff();
+ gUnknown_020387EC->unk08++;
+ return TRUE;
+ default:
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static void sub_80C603C(void)
+{
+ vu16 vcount = REG_VCOUNT & 0xFF;
+ if (vcount == 0x50)
+ REG_BLDCNT = BLDCNT_TGT1_BG0 | BLDCNT_TGT1_BG1 | BLDCNT_TGT1_BG2 | BLDCNT_TGT1_BG3 | BLDCNT_EFFECT_LIGHTEN;
+ else
+ REG_BLDCNT = BLDCNT_TGT1_BG0 | BLDCNT_TGT1_BG1 | BLDCNT_TGT1_BG2 | BLDCNT_TGT1_BG3 | BLDCNT_TGT1_OBJ | BLDCNT_TGT1_BD | BLDCNT_EFFECT_DARKEN;
+}
+
+static void sub_80C6078(void)
+{
+ vu16 vcount = REG_VCOUNT & 0xFF;
+ if (vcount > 0x50 - gUnknown_020387EC->unk0C && vcount < 0x50 + gUnknown_020387EC->unk0C)
+ REG_BLDY = 0;
+ else
+ REG_BLDY = 16;
+}
+
+static void sub_80C60CC(struct Sprite *sprite)
+{
+ sprite->pos1.x += sprite->data[0];
+ if (sprite->pos1.x < -0x08 || sprite->pos1.x > 0xf8)
+ {
+ DestroySprite(sprite);
+ gUnknown_020387EC->unk0A++;
+ if (gUnknown_020387EC->unk0A == 8)
+ {
+ FreeSpriteTilesByTag(gUnknown_020387EC->tileTag);
+ FreeSpritePaletteByTag(gUnknown_020387EC->paletteTag);
+ BlendPalettes(gUnknown_020387EC->selectedPalettes, 0, FADE_COLOR_WHITE);
+ SetHBlankCallback(sub_80C6078);
+ }
+ }
+}
+
+static void sub_80C6130(struct Sprite *sprite)
+{
+ if (sprite->data[4] == 0 && gUnknown_020387EC->unk0C == 1)
+ {
+ sprite->pos1.x += sprite->data[0];
+ if (sprite->pos1.x > -0x10 && sprite->pos1.x < 0x100)
+ sprite->invisible = FALSE;
+ if (sprite->data[1] > 0)
+ {
+ if (sprite->pos1.x >= sprite->data[2])
+ sprite->data[4] = 1;
+ }
+ else
+ {
+ if (sprite->pos1.x <= sprite->data[2])
+ sprite->data[4] = 1;
+ }
+ if (sprite->data[4])
+ {
+ gUnknown_020387EC->unk0A++;
+ sprite->pos1.x = sprite->data[2];
+ }
+ }
+}
+
+static void HBlankIntrOn(IntrFunc cb)
+{
+ u16 imeBak;
+ INTR_CHECK |= INTR_FLAG_HBLANK;
+ REG_DISPSTAT |= DISPSTAT_HBLANK_INTR;
+ imeBak = REG_IME;
+ REG_IME = 0;
+ REG_IE |= INTR_FLAG_HBLANK;
+ REG_IME = imeBak;
+ gMain.intrCheck |= INTR_FLAG_HBLANK;
+ SetHBlankCallback(cb);
+}
+
+static void HBlankIntrOff(void)
+{
+ u16 imeBak;
+ INTR_CHECK &= ~INTR_FLAG_HBLANK;
+ REG_DISPSTAT &= ~DISPSTAT_HBLANK_INTR;
+ imeBak = REG_IME;
+ REG_IME = 0;
+ REG_IE &= ~INTR_FLAG_HBLANK;
+ REG_IME = imeBak;
+ gMain.intrCheck &= ~INTR_FLAG_HBLANK;
+ SetHBlankCallback(NULL);
+}
diff --git a/src/player_pc.c b/src/player_pc.c
index 27427ecaa..ce3dda3c7 100644
--- a/src/player_pc.c
+++ b/src/player_pc.c
@@ -37,7 +37,7 @@ static EWRAM_DATA const u8 *gPcItemMenuOptionOrder = NULL;
static u8 gPcItemMenuOptionsNum;
-extern u8 gUnknown_02038561;
+extern u8 gPokemonItemUseType;
// event scripts
extern u8 gBrendanHouse_TurnPCOff[];
@@ -135,7 +135,7 @@ static const struct MenuAction2 gPCText_ItemPCOptionsText[] =
{ PCText_WithdrawItem, ItemStorage_Withdraw },
{ PCText_DepositItem, ItemStorage_Deposit },
{ PCText_TossItem, ItemStorage_Toss },
- { gUnknownText_Exit, ItemStorage_Exit }
+ { gOtherText_Exit, ItemStorage_Exit }
};
static const struct YesNoFuncTable ResumeFromTossYesNoFuncList[] = // ResumeFromTossYesNoFuncList
@@ -1290,7 +1290,7 @@ static void Mailbox_DoGiveMailPokeMenu(u8 taskId) // Mailbox_DoGiveMailPokeMenu
if(!gPaletteFade.active)
{
SetMainCallback2(sub_808B020);
- gUnknown_02038561 = 3;
+ gPokemonItemUseType = ITEM_USE_GIVE_MAIL;
DestroyTask(taskId);
}
}
diff --git a/src/pokeblock.c b/src/pokeblock.c
index 6804f55d6..a24cb32cf 100644
--- a/src/pokeblock.c
+++ b/src/pokeblock.c
@@ -365,7 +365,7 @@ static bool8 sub_810B6C0(void)
}
break;
case 18:
- BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
gPaletteFade.bufferTransferDisabled = FALSE;
SetMainCallback2(sub_810B674);
return TRUE;
@@ -486,7 +486,7 @@ static void sub_810BB88(u8 a0)
y = (i - a0) << 1;
if (i == gUnknown_02039248.unk2)
{
- buf = sub_8072C74(gStringVar1, gContestStatsText_StowCase, 0x78, 0);
+ buf = AlignStringInMenuWindow(gStringVar1, gContestStatsText_StowCase, 0x78, 0);
Menu_PrintText(gStringVar1, 15, y + 1);
if (i != a0 + 8)
{
@@ -494,7 +494,7 @@ static void sub_810BB88(u8 a0)
}
break;
}
- buf = sub_8072C74(gStringVar1, gPokeblockNames[gSaveBlock1.pokeblocks[i].color], 0x5e, 0);
+ buf = AlignStringInMenuWindow(gStringVar1, gPokeblockNames[gSaveBlock1.pokeblocks[i].color], 0x5e, 0);
buf[0] = EXT_CTRL_CODE_BEGIN;
buf[1] = 0x14;
buf[2] = 0x06;
@@ -615,7 +615,7 @@ static void sub_810BDAC(bool8 flag)
BasicInitMenuWindow(&gWindowTemplate_81E6E34);
if (gUnknown_02039248.unk0 + gUnknown_02039248.unk1 != gUnknown_02039248.unk2)
{
- sub_8072C14(gStringVar1, sub_810C9E8(&gSaveBlock1.pokeblocks[gUnknown_02039248.unk0 + gUnknown_02039248.unk1]), 16, 1);
+ AlignInt1InMenuWindow(gStringVar1, sub_810C9E8(&gSaveBlock1.pokeblocks[gUnknown_02039248.unk0 + gUnknown_02039248.unk1]), 16, 1);
Menu_PrintText(gStringVar1, 11, 17);
}
else
@@ -813,7 +813,7 @@ static void sub_810C2C8(u8 taskId)
static void sub_810C31C(u8 taskId)
{
- BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
if (gUnknown_02039244 > 1)
{
gSpecialVar_ItemId = ITEM_NONE;
@@ -878,7 +878,7 @@ static void sub_810C4C4(u8 taskId)
static void sub_810C508(u8 taskId)
{
- BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gTasks[taskId].func = sub_810C4C4;
}
@@ -971,7 +971,7 @@ static void sub_810C788(u8 taskId)
{
gSpecialVar_ItemId += 3;
}
- BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gTasks[taskId].func = sub_810C2C8;
}
@@ -981,7 +981,7 @@ static void sub_810C854(u8 taskId)
StringCopy(gStringVar1, gPokeblockNames[gSaveBlock1.pokeblocks[gSpecialVar_ItemId].color]);
gSpecialVar_Result = gSpecialVar_ItemId;
PokeblockClearIfExists(gSpecialVar_ItemId);
- BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gTasks[taskId].func = sub_810C2C8;
}
@@ -1070,7 +1070,7 @@ s8 GetFirstFreePokeblockSlot(void)
return -1;
}
-bool8 sub_810CA34(const struct Pokeblock *pokeblock)
+bool8 GivePokeblock(const struct Pokeblock *pokeblock)
{
s8 idx = GetFirstFreePokeblockSlot();
if (idx == -1)
diff --git a/src/pokeblock_feed.c b/src/pokeblock_feed.c
index 2f2ce2f8f..588bc85c0 100644
--- a/src/pokeblock_feed.c
+++ b/src/pokeblock_feed.c
@@ -579,7 +579,7 @@ static bool8 TransitionToPokeblockFeedScene(void)
gMain.state++;
}
case 13:
- BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
gPaletteFade.bufferTransferDisabled = 0;
SetMainCallback2(CB2_PokeblockFeed);
return TRUE;
@@ -751,7 +751,7 @@ static void Task_ReturnAfterPaletteFade(u8 taskID)
static void Task_PaletteFadeToReturn(u8 taskID)
{
- BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gTasks[taskID].func = Task_ReturnAfterPaletteFade;
}
diff --git a/src/pokedex.c b/src/pokedex.c
index 711dc69fa..729f72a7c 100644
--- a/src/pokedex.c
+++ b/src/pokedex.c
@@ -94,20 +94,6 @@ enum
SIZE_SCREEN
};
-struct PokedexEntry
-{
- /*0x00*/ u8 categoryName[12];
- /*0x0C*/ u16 height; //in decimeters
- /*0x0E*/ u16 weight; //in hectograms
- /*0x10*/ const u8 *descriptionPage1;
- /*0x14*/ const u8 *descriptionPage2;
- /*0x18*/ u16 unused;
- /*0x1A*/ u16 pokemonScale;
- /*0x1C*/ u16 pokemonOffset;
- /*0x1E*/ u16 trainerScale;
- /*0x20*/ u16 trainerOffset;
-}; /*size = 0x24*/
-
struct UnknownStruct2
{
const u8 *text1;
@@ -1277,7 +1263,6 @@ void sub_8091738(u16, u16, u16);
static void sub_80917CC(u16 i, u16 i1);
static u16 sub_8091818(u8, u16, u16, u16);
u16 sub_80918EC(u16 a, s16 b, s16 c, u16 d);
-u8 sub_8091A4C(u16 gender, s16, s16, u16);
static void sub_8091E54(u8);
static void sub_809204C(u8);
static void sub_809207C(u8);
@@ -1525,7 +1510,7 @@ void Task_PokedexMainScreen(u8 taskId)
sub_808E6BC();
BeginNormalPaletteFade(
~(1 << (gSprites[gPokedexView->selectedMonSpriteId].oam.paletteNum + 16)),
- 0, 0, 0x10, 0);
+ 0, 0, 16, RGB(0, 0, 0));
gSprites[gPokedexView->selectedMonSpriteId].callback = sub_808EDB8;
gTasks[taskId].func = sub_808CA64;
PlaySE(SE_PIN);
@@ -1542,7 +1527,7 @@ void Task_PokedexMainScreen(u8 taskId)
else if (gMain.newKeys & SELECT_BUTTON)
{
PlaySE(SE_SELECT);
- BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gTasks[taskId].data[0] = sub_8091E3C();
gPokedexView->unk64F = 0;
gPokedexView->unk62A = gPokedexView->unk62C;
@@ -1554,7 +1539,7 @@ void Task_PokedexMainScreen(u8 taskId)
}
else if (gMain.newKeys & B_BUTTON)
{
- BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gTasks[taskId].func = Task_ClosePokedex;
PlaySE(SE_PC_OFF);
}
@@ -1607,7 +1592,7 @@ static void Task_PokedexMainScreenMenu(u8 taskId)
gMain.newKeys |= START_BUTTON; //Exit menu
break;
case 3: //CLOSE POKEDEX
- BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gTasks[taskId].func = Task_ClosePokedex;
PlaySE(SE_PC_OFF);
break;
@@ -1694,7 +1679,7 @@ static void Task_ClosePokedex(u8 taskId)
gSaveBlock2.pokedex.unknown1 = 0;
gSaveBlock2.pokedex.order = gPokedexView->dexOrder;
DestroyTask(taskId);
- SetMainCallback2(sub_805469C);
+ SetMainCallback2(c2_exit_to_overworld_1_sub_8080DEC);
m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 0x100);
}
}
@@ -1718,12 +1703,12 @@ static void Task_PokedexResultsScreen(u8 taskId)
{
if ((gMain.newKeys & A_BUTTON) && gPokedexView->unk0[gPokedexView->selectedPokemon].seen)
{
- u32 a;
+ u32 excludedPalettes;
sub_808E6BC();
- a = (1 << (gSprites[gPokedexView->selectedMonSpriteId].oam.paletteNum + 16));
+ excludedPalettes = (1 << (gSprites[gPokedexView->selectedMonSpriteId].oam.paletteNum + 16));
gSprites[gPokedexView->selectedMonSpriteId].callback = sub_808EDB8;
- BeginNormalPaletteFade(~a, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(~excludedPalettes, 0, 0, 16, RGB(0, 0, 0));
gTasks[taskId].func = sub_808D118;
PlaySE(SE_PIN);
}
@@ -1737,7 +1722,7 @@ static void Task_PokedexResultsScreen(u8 taskId)
}
else if (gMain.newKeys & SELECT_BUTTON)
{
- BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gTasks[taskId].data[0] = sub_8091E3C();
gPokedexView->unk64F = 0;
gTasks[taskId].func = sub_808CB8C;
@@ -1745,7 +1730,7 @@ static void Task_PokedexResultsScreen(u8 taskId)
}
else if (gMain.newKeys & B_BUTTON)
{
- BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gTasks[taskId].func = Task_PokedexResultsScreenReturnToMainScreen;
PlaySE(SE_PC_OFF);
}
@@ -1798,12 +1783,12 @@ static void Task_PokedexResultsScreenMenu(u8 taskId)
gMain.newKeys |= START_BUTTON;
break;
case 3: //BACK TO POKEDEX
- BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gTasks[taskId].func = Task_PokedexResultsScreenReturnToMainScreen;
PlaySE(SE_TRACK_DOOR);
break;
case 4: //CLOSE POKEDEX
- BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gTasks[taskId].func = Task_PokedexResultsScreenExitPokedex;
PlaySE(SE_PC_OFF);
break;
@@ -1934,7 +1919,7 @@ static bool8 sub_808D344(u8 a)
gMain.state++;
break;
case 4:
- BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
SetVBlankCallback(sub_808C0B8);
gMain.state++;
break;
@@ -2972,13 +2957,13 @@ static void Task_InitPageScreenMultistep(u8 taskId)
break;
case 6:
{
- u32 r3 = 0;
+ u32 excludedPalettes = 0;
if (gTasks[taskId].data[2] != 0)
- r3 = 0x14;
+ excludedPalettes = 0x14;
if (gTasks[taskId].data[1] != 0)
- r3 |= (1 << (gSprites[gTasks[taskId].data[4]].oam.paletteNum + 16));
- BeginNormalPaletteFade(~r3, 0, 16, 0, 0);
+ excludedPalettes |= (1 << (gSprites[gTasks[taskId].data[4]].oam.paletteNum + 16));
+ BeginNormalPaletteFade(~excludedPalettes, 0, 16, 0, RGB(0, 0, 0));
SetVBlankCallback(gUnknown_03005CEC);
gMain.state++;
}
@@ -3026,14 +3011,14 @@ static void Task_PageScreenProcessInput(u8 taskId)
{
if (gTasks[taskId].data[0] != 0)
{
- BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gTasks[taskId].func = sub_808F888;
PlaySE(SE_Z_SCROLL);
return;
}
if (gMain.newKeys & B_BUTTON)
{
- BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gTasks[taskId].func = Task_ClosePageScreen;
PlaySE(SE_PC_OFF);
return;
@@ -3046,12 +3031,12 @@ static void Task_PageScreenProcessInput(u8 taskId)
sub_8090C68();
break;
case AREA_SCREEN:
- BeginNormalPaletteFade(-0x15, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFEB, 0, 0, 16, RGB(0, 0, 0));
gTasks[taskId].func = Task_InitAreaScreenMultistep;
PlaySE(SE_PIN);
break;
case CRY_SCREEN:
- BeginNormalPaletteFade(-0x15, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFEB, 0, 0, 16, RGB(0, 0, 0));
gTasks[taskId].func = Task_InitCryScreenMultistep;
PlaySE(SE_PIN);
break;
@@ -3062,7 +3047,7 @@ static void Task_PageScreenProcessInput(u8 taskId)
}
else
{
- BeginNormalPaletteFade(-0x15, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFEB, 0, 0, 16, RGB(0, 0, 0));
gTasks[taskId].func = Task_InitSizeScreenMultistep;
PlaySE(SE_PIN);
}
@@ -3234,7 +3219,7 @@ static void Task_InitCryScreenMultistep(u8 taskId)
}
break;
case 8:
- BeginNormalPaletteFade(-0x15, 0, 0x10, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFEB, 0, 16, 0, RGB(0, 0, 0));
SetVBlankCallback(gUnknown_03005CEC);
gMain.state++;
break;
@@ -3275,7 +3260,7 @@ static void Task_CryScreenProcessInput(u8 taskId)
{
if (gMain.newKeys & B_BUTTON)
{
- BeginNormalPaletteFade(-0x15, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFEB, 0, 0, 16, RGB(0, 0, 0));
m4aMPlayContinue(&gMPlay_BGM);
gPokedexView->unk64F = 1;
gTasks[taskId].func = sub_808FFBC;
@@ -3285,7 +3270,7 @@ static void Task_CryScreenProcessInput(u8 taskId)
if ((gMain.newKeys & DPAD_LEFT)
|| ((gMain.newKeys & L_BUTTON) && gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_LR))
{
- BeginNormalPaletteFade(-0x15, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFEB, 0, 0, 16, RGB(0, 0, 0));
m4aMPlayContinue(&gMPlay_BGM);
gPokedexView->unk64F = 2;
gTasks[taskId].func = sub_808FFBC;
@@ -3301,7 +3286,7 @@ static void Task_CryScreenProcessInput(u8 taskId)
}
else
{
- BeginNormalPaletteFade(-0x15, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFEB, 0, 0, 16, RGB(0, 0, 0));
m4aMPlayContinue(&gMPlay_BGM);
gPokedexView->unk64F = 3;
gTasks[taskId].func = sub_808FFBC;
@@ -3411,7 +3396,7 @@ static void Task_InitSizeScreenMultistep(u8 taskId)
gMain.state++;
break;
case 7:
- BeginNormalPaletteFade(-0x15, 0, 0x10, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFEB, 0, 16, 0, RGB(0, 0, 0));
SetVBlankCallback(gUnknown_03005CEC);
gMain.state++;
break;
@@ -3438,7 +3423,7 @@ static void Task_SizeScreenProcessInput(u8 taskId)
{
if (gMain.newKeys & B_BUTTON)
{
- BeginNormalPaletteFade(-0x15, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFEB, 0, 0, 16, RGB(0, 0, 0));
gPokedexView->unk64F = 1;
gTasks[taskId].func = sub_8090498;
PlaySE(SE_PC_OFF);
@@ -3446,7 +3431,7 @@ static void Task_SizeScreenProcessInput(u8 taskId)
else if ((gMain.newKeys & DPAD_LEFT)
|| ((gMain.newKeys & L_BUTTON) && gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_LR))
{
- BeginNormalPaletteFade(-0x15, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFEB, 0, 0, 16, RGB(0, 0, 0));
gPokedexView->unk64F = 2;
gTasks[taskId].func = sub_8090498;
PlaySE(SE_Z_PAGE);
@@ -3522,7 +3507,7 @@ static void sub_8090584(u8 a, u16 b)
}
}
#else
-__attribute__((naked))
+NAKED
static void sub_8090584(u8 a, u16 b)
{
asm(".syntax unified\n\
@@ -3666,7 +3651,7 @@ static void sub_8090644(u8 a, u16 b)
}
}
#else
-__attribute__((naked))
+NAKED
static void sub_8090644(u8 a, u16 b)
{
asm(".syntax unified\n\
@@ -3849,7 +3834,7 @@ static void sub_8090750(u8 taskId)
case 4:
spriteId = sub_80918EC(dexNum, 0x30, 0x38, 0);
gSprites[spriteId].oam.priority = 0;
- BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
SetVBlankCallback(gUnknown_03005CEC);
gTasks[taskId].data[3] = spriteId;
gTasks[taskId].data[0]++;
@@ -3878,7 +3863,7 @@ static void sub_8090A3C(u8 taskId)
{
if (gMain.newKeys & B_BUTTON)
{
- BeginNormalPaletteFade(0x0000FFFC, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFC, 0, 0, 16, RGB(0, 0, 0));
gSprites[gTasks[taskId].data[3]].callback = sub_8090C28;
gTasks[taskId].func = sub_8090B8C;
return;
@@ -3898,7 +3883,7 @@ static void sub_8090A3C(u8 taskId)
}
else
{
- BeginNormalPaletteFade(0x0000FFFC, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFC, 0, 0, 16, RGB(0, 0, 0));
gSprites[gTasks[taskId].data[3]].callback = sub_8090C28;
gTasks[taskId].func = sub_8090B8C;
return;
@@ -3922,8 +3907,8 @@ static void sub_8090B8C(u8 taskId)
const u8 *lzPaletteData;
REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG3_ON | DISPCNT_OBJ_ON;
- CpuCopy16(gUnknown_08D00524, (void *)(VRAM + 0xC000), 0x1000);
- sub_800D74C();
+ CpuCopy16(gBattleTextboxTilemap, (void *)(VRAM + 0xC000), 0x1000);
+ ApplyPlayerChosenFrameToBattleMenu();
species = NationalPokedexNumToSpecies(gTasks[taskId].data[1]);
otId = ((u16)gTasks[taskId].data[13] << 16) | (u16)gTasks[taskId].data[12];
personality = ((u16)gTasks[taskId].data[15] << 16) | (u16)gTasks[taskId].data[14];
@@ -4584,7 +4569,7 @@ u16 sub_80918EC(u16 num, s16 x, s16 y, u16 paletteNum)
return spriteId;
}
-u8 sub_8091A4C(u16 gender, s16 x, s16 y, u16 paletteNum)
+u16 sub_8091A4C(u16 gender, s16 x, s16 y, u16 paletteNum)
{
u8 spriteId;
@@ -4775,7 +4760,7 @@ static void sub_8091E54(u8 taskId)
gMain.state++;
break;
case 2:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
gMain.state++;
break;
case 3:
@@ -5095,7 +5080,7 @@ static void sub_8092644(u8 taskId)
static void sub_80927B8(u8 taskId)
{
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gTasks[taskId].func = sub_80927F0;
}
@@ -5120,7 +5105,7 @@ void sub_8092810(u8 a, u8 b, u8 c, u8 d)
}
}
#else
-__attribute__((naked))
+NAKED
void sub_8092810(u8 a, u8 b, u8 c, u8 d)
{
asm(".syntax unified\n\
diff --git a/src/pokedex_area_screen.c b/src/pokedex_area_screen.c
index 67ca276c4..76efdf08d 100644
--- a/src/pokedex_area_screen.c
+++ b/src/pokedex_area_screen.c
@@ -1,20 +1,1437 @@
-
// Includes
#include "global.h"
+#include "constants/species.h"
+#include "constants/maps.h"
+#include "constants/songs.h"
+#include "constants/region_map_sections.h"
+#include "sound.h"
+#include "ewram.h"
+#include "main.h"
+#include "palette.h"
+#include "task.h"
+#include "sprite.h"
+#include "region_map.h"
+#include "string_util.h"
+#include "text.h"
+#include "wild_encounter.h"
+#include "roamer.h"
+#include "overworld.h"
+#include "event_data.h"
+#include "trig.h"
+#include "graphics.h"
// Static type declarations
+struct PokedexAreaScreenSubstruct0010
+{
+ u8 mapGroup;
+ u8 mapNum;
+ u16 regionMapSectionId;
+};
+
+struct PokedexAreaScreenEwramStruct
+{
+ void (*callback)(void);
+ MainCallback prev;
+ MainCallback next;
+ u16 state;
+ u16 species;
+ struct PokedexAreaScreenSubstruct0010 overworldAreasWithMons[0x40];
+ u16 numOverworldAreas;
+ u16 numSpecialAreas;
+ u16 drawAreaGlowState;
+ u16 areaGlowTilemap[0x280];
+ u16 areaShadeOrMarkerFrameCounter;
+ u16 areaShadeFrameCounter;
+ u16 areaShadeBldArgLo;
+ u16 areaShadeBldArgHi;
+ u8 whichMarkersFlashing;
+ u8 specialMarkerCycleCounter;
+ u16 specialAreaRegionMapSectionIds[0x20];
+ struct Sprite * areaMarkerSprites[0x20];
+ u16 numAreaMarkerSprites;
+ u8 * errno;
+ struct RegionMap regionMap;
+ u8 charBuffer[0x40];
+ struct Sprite * areaUnknownSprites[3];
+ u8 areaUnknownGraphicsBuffer[0x600];
+};
+
+#define ePokedexAreaScreen (*(struct PokedexAreaScreenEwramStruct *)gSharedMem)
+
// Static RAM declarations
+// Static ROM declarations
+
+static void CB2_UnusedPokedexAreaScreen(void);
+static void VBlankCB_AreaScren(void);
+static void MainCB_AreaScren(void);
+static void SetCallback(void (*func)(void));
+static void ResetDrawAreaGlowState(void);
+static bool8 DrawAreaGlow(void);
+static void FindMapsWithMon(u16 mon);
+static void SetAreaHasMon(u16 mapGroup, u16 mapNum);
+static void SetSpecialMapHasMon(u16 mapGroup, u16 mapNum);
+static bool8 MapHasMon(const struct WildPokemonHeader *header, u16 mon);
+static bool8 MonListHasMon(const struct WildPokemonInfo *info, u16 mon, u16 size);
+static void BuildAreaGlowTilemap(void);
+static void StartAreaGlow(void);
+static void DoAreaGlow(void);
+static void DebugCB_WaitFade(void);
+static void DebugCB_WaitButton(void);
+static void DebugCB_GoBack(void);
+static void DebugCB_GoNext(void);
+
+// .rodata
+
+static const u16 gUnknown_083F8418[] = INCBIN_U16("graphics/pokedex/area_glow.gbapal");
+
+static const u8 gUnknown_083F8438[] = INCBIN_U8("graphics/pokedex/area_glow.4bpp.lz");
+
+static const u16 sSpeciesHiddenFromAreaScreen[] = {SPECIES_WYNAUT};
+
+static const u16 sFeebasData[][3] = {
+ {SPECIES_FEEBAS, MAP_GROUP(ROUTE119), MAP_NUM(ROUTE119)},
+ {NUM_SPECIES}
+};
+
+static const u16 sLandmarkData[][2] = {
+ {MAPSEC_SKY_PILLAR, FLAG_LANDMARK_SKY_PILLAR},
+ {MAPSEC_SEAFLOOR_CAVERN, FLAG_LANDMARK_SEAFLOOR_CAVERN},
+ {MAPSEC_NOTHING}
+};
+
+static struct PokedexAreaScreenEwramStruct *const gPokedexAreaScreenPtr = &ePokedexAreaScreen;
+
+// .text
+
+void UnusedPokedexAreaScreen(u16 a0, MainCallback a1, MainCallback a2)
+{
+ gPokedexAreaScreenPtr->prev = a1;
+ gPokedexAreaScreenPtr->next = a2;
+ gPokedexAreaScreenPtr->species = a0;
+ SetMainCallback2(CB2_UnusedPokedexAreaScreen);
+}
+
+static void CB2_UnusedPokedexAreaScreen(void)
+{
+ switch (gMain.state)
+ {
+ case 0:
+ SetVBlankCallback(NULL);
+ REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_BG1_ON | DISPCNT_WIN0_ON | DISPCNT_WIN1_ON;
+ ResetPaletteFade();
+ ResetSpriteData();
+ ResetTasks();
+ FreeSpriteTileRanges();
+ FreeAllSpritePalettes();
+ REG_BG0HOFS = 0;
+ REG_BG0VOFS = -8;
+ REG_BG2VOFS = 0;
+ REG_BG2HOFS = 0;
+ REG_BG3HOFS = 0;
+ REG_BG3VOFS = 0;
+ break;
+ case 1:
+ InitRegionMap(&gPokedexAreaScreenPtr->regionMap, FALSE);
+ StringFill(gPokedexAreaScreenPtr->charBuffer, CHAR_SPACE, 16);
+ break;
+ case 2:
+ ResetDrawAreaGlowState();
+ break;
+ case 3:
+ if (DrawAreaGlow())
+ return;
+ break;
+ case 4:
+ CreateRegionMapPlayerIcon(1, 1);
+ RegionMapDefaultZoomOffsetPlayerSprite(0, -8);
+ SetVBlankCallback(VBlankCB_AreaScren);
+ break;
+ case 5:
+ BeginNormalPaletteFade(0xFFFFFFEB, 0, 16, 0, RGB(0, 0, 0));
+ break;
+ case 6:
+ REG_BLDCNT = BLDCNT_TGT1_BG0 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG0 | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BD;
+ StartAreaGlow();
+ REG_DISPCNT = DISPCNT_MODE_1 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_BG2_ON | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON | DISPCNT_WIN1_ON;
+ break;
+ case 7:
+ SetCallback(DebugCB_WaitFade);
+ SetMainCallback2(MainCB_AreaScren);
+ return;
+ }
+ gMain.state++;
+}
+
+static void VBlankCB_AreaScren(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+static void MainCB_AreaScren(void)
+{
+ gPokedexAreaScreenPtr->callback();
+ DoAreaGlow();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+static void SetCallback(void (*func)(void))
+{
+ gPokedexAreaScreenPtr->callback = func;
+ gPokedexAreaScreenPtr->state = 0;
+}
+
+static void ResetDrawAreaGlowState(void)
+{
+ gPokedexAreaScreenPtr->drawAreaGlowState = 0;
+}
+
+bool8 DrawAreaGlow(void)
+{
+ switch (gPokedexAreaScreenPtr->drawAreaGlowState)
+ {
+ case 0:
+ FindMapsWithMon(gPokedexAreaScreenPtr->species);
+ break;
+ case 1:
+ BuildAreaGlowTilemap();
+ break;
+ case 2:
+ LZ77UnCompVram(gUnknown_083F8438, BG_CHAR_ADDR(3));
+ break;
+ case 3:
+ DmaCopy16(3, gPokedexAreaScreenPtr->areaGlowTilemap, BG_SCREEN_ADDR(30), 0x500);
+ break;
+ case 4:
+ LoadPalette(gUnknown_083F8418, 0, 32);
+ break;
+ case 5:
+ REG_BG0CNT = BGCNT_PRIORITY(1) | BGCNT_CHARBASE(3) | BGCNT_16COLOR | BGCNT_SCREENBASE(30) | BGCNT_TXT256x256;
+ gPokedexAreaScreenPtr->drawAreaGlowState++;
+ return FALSE;
+ default:
+ return FALSE;
+ }
+ gPokedexAreaScreenPtr->drawAreaGlowState++;
+ return TRUE;
+}
+
+static void FindMapsWithMon(u16 mon)
+{
+ u16 i;
+ struct Roamer *roamer;
+
+ if (mon != ROAMER_SPECIES)
+ {
+ gPokedexAreaScreenPtr->numOverworldAreas = 0;
+ gPokedexAreaScreenPtr->numSpecialAreas = 0;
+ for (i = 0; i < ARRAY_COUNT(sSpeciesHiddenFromAreaScreen); i++)
+ {
+ if (sSpeciesHiddenFromAreaScreen[i] == mon)
+ return;
+ }
+ for (i = 0; sFeebasData[i][0] != NUM_SPECIES; i++)
+ {
+ if (mon == sFeebasData[i][0])
+ {
+ switch (sFeebasData[i][1])
+ {
+ case MAP_GROUP(PETALBURG_CITY):
+ SetAreaHasMon(sFeebasData[i][1], sFeebasData[i][2]);
+ break;
+ case MAP_GROUP(METEOR_FALLS_1F_1R):
+ case MAP_GROUP(SAFARI_ZONE_NORTHWEST):
+ SetSpecialMapHasMon(sFeebasData[i][1], sFeebasData[i][2]);
+ break;
+ }
+ }
+ }
+ for (i = 0; gWildMonHeaders[i].mapGroup != 0xFF; i++)
+ {
+ if (MapHasMon(gWildMonHeaders + i, mon))
+ {
+ switch (gWildMonHeaders[i].mapGroup)
+ {
+ case MAP_GROUP(PETALBURG_CITY):
+ SetAreaHasMon(gWildMonHeaders[i].mapGroup, gWildMonHeaders[i].mapNum);
+ break;
+ case MAP_GROUP(METEOR_FALLS_1F_1R):
+ case MAP_GROUP(SAFARI_ZONE_NORTHWEST):
+ SetSpecialMapHasMon(gWildMonHeaders[i].mapGroup, gWildMonHeaders[i].mapNum);
+ break;
+ }
+ }
+ }
+ }
+ else
+ {
+ gPokedexAreaScreenPtr->numSpecialAreas = 0;
+ roamer = &gSaveBlock1.roamer;
+ if (roamer->active)
+ {
+ GetRoamerLocation(&gPokedexAreaScreenPtr->overworldAreasWithMons[0].mapGroup, &gPokedexAreaScreenPtr->overworldAreasWithMons[0].mapNum);
+ gPokedexAreaScreenPtr->overworldAreasWithMons[0].regionMapSectionId = Overworld_GetMapHeaderByGroupAndId(gPokedexAreaScreenPtr->overworldAreasWithMons[0].mapGroup, gPokedexAreaScreenPtr->overworldAreasWithMons[0].mapNum)->regionMapSectionId;
+ gPokedexAreaScreenPtr->numOverworldAreas = 1;
+ }
+ else
+ gPokedexAreaScreenPtr->numOverworldAreas = 0;
+ }
+}
+
+static void SetAreaHasMon(u16 mapGroup, u16 mapNum)
+{
+ if (gPokedexAreaScreenPtr->numOverworldAreas < 0x40)
+ {
+ gPokedexAreaScreenPtr->overworldAreasWithMons[gPokedexAreaScreenPtr->numOverworldAreas].mapGroup = mapGroup;
+ gPokedexAreaScreenPtr->overworldAreasWithMons[gPokedexAreaScreenPtr->numOverworldAreas].mapNum = mapNum;
+ gPokedexAreaScreenPtr->overworldAreasWithMons[gPokedexAreaScreenPtr->numOverworldAreas].regionMapSectionId = GetOverworldMapFromUnderwaterMap(Overworld_GetMapHeaderByGroupAndId(mapGroup, mapNum)->regionMapSectionId);
+ gPokedexAreaScreenPtr->numOverworldAreas++;
+ }
+}
+
+static void SetSpecialMapHasMon(u16 mapGroup, u16 mapNum)
+{
+ const struct MapHeader *mapHeader;
+ u16 i;
+
+ if (gPokedexAreaScreenPtr->numSpecialAreas < 0x20)
+ {
+ mapHeader = Overworld_GetMapHeaderByGroupAndId(mapGroup, mapNum);
+ if (mapHeader->regionMapSectionId < MAPSEC_NOTHING)
+ {
+ for (i = 0; sLandmarkData[i][0] != MAPSEC_NOTHING; i++)
+ {
+ if (mapHeader->regionMapSectionId == sLandmarkData[i][0] && !FlagGet(sLandmarkData[i][1]))
+ return;
+ }
+ for (i = 0; i < gPokedexAreaScreenPtr->numSpecialAreas; i++)
+ {
+ if (gPokedexAreaScreenPtr->specialAreaRegionMapSectionIds[i] == mapHeader->regionMapSectionId)
+ break;
+ }
+ if (i == gPokedexAreaScreenPtr->numSpecialAreas)
+ {
+ gPokedexAreaScreenPtr->specialAreaRegionMapSectionIds[i] = mapHeader->regionMapSectionId;
+ gPokedexAreaScreenPtr->numSpecialAreas++;
+ }
+ }
+ }
+}
+
+static bool8 MapHasMon(const struct WildPokemonHeader *header, u16 mon)
+{
+ if (MonListHasMon(header->landMonsInfo, mon, 12))
+ return TRUE;
+ if (MonListHasMon(header->waterMonsInfo, mon, 5))
+ return TRUE;
+ if (MonListHasMon(header->fishingMonsInfo, mon, 12))
+ return TRUE;
+ if (MonListHasMon(header->rockSmashMonsInfo, mon, 5))
+ return TRUE;
+ return FALSE;
+}
+
+static bool8 MonListHasMon(const struct WildPokemonInfo *info, u16 mon, u16 size)
+{
+ u16 i;
+ if (info != NULL)
+ {
+ for (i = 0; i < size; i++)
+ {
+ if (info->wildPokemon[i].species == mon)
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+#ifdef NONMATCHING
+static void BuildAreaGlowTilemap(void)
+{
+ static EWRAM_DATA u16 gUnknown_02039260 = 0;
+ static EWRAM_DATA u16 gUnknown_02039262 = 0;
+ static EWRAM_DATA u16 gUnknown_02039264 = 0;
+ static EWRAM_DATA u16 gUnknown_02039266 = 0;
+ static EWRAM_DATA u16 gUnknown_02039268 = 0;
+ static EWRAM_DATA u16 gUnknown_0203926A = 0;
+ u32 r3;
+
+ for (gUnknown_02039260 = 0; gUnknown_02039260 < 0x280; gUnknown_02039260++)
+ gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039260] = 0;
+
+ for (gUnknown_02039260 = 0; gUnknown_02039260 < gPokedexAreaScreenPtr->numOverworldAreas; gUnknown_02039260++)
+ {
+ gUnknown_02039266 = 0;
+ for (gUnknown_02039264 = 0; gUnknown_02039264 < 20; gUnknown_02039264++)
+ {
+ for (gUnknown_02039262 = 0; gUnknown_02039262 < 32; gUnknown_02039262++)
+ {
+ if (GetRegionMapSectionAt_(gUnknown_02039262, gUnknown_02039264) == gPokedexAreaScreenPtr->overworldAreasWithMons[gUnknown_02039260].regionMapSectionId)
+ {
+ gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039266] = 0xFFFF;
+ }
+ gUnknown_02039266++;
+ }
+ }
+ }
+
+ gUnknown_02039266 = 0;
+ for (gUnknown_02039264 = 0; gUnknown_02039264 < 20; gUnknown_02039264++)
+ {
+ for (gUnknown_02039262 = 0; gUnknown_02039262 < 32; gUnknown_02039262++)
+ {
+ if (gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039266] == 0xFFFF)
+ {
+ if (gUnknown_02039262 != 0 && gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039266 - 1] != 0xFFFF)
+ gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039266 - 1] |= 0x02;
+ if (gUnknown_02039262 != 31 && gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039266 + 1] != 0xFFFF)
+ gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039266 + 1] |= 0x01;
+ if (gUnknown_02039264 != 0 && gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039266 - 32] != 0xFFFF)
+ gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039266 - 32] |= 0x08;
+ if (gUnknown_02039264 != 19 && gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039266 + 32] != 0xFFFF)
+ gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039266 + 32] |= 0x04;
+ if (gUnknown_02039262 != 0 && gUnknown_02039264 != 0 && gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039266 - 33] != 0xFFFF)
+ gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039266 - 33] |= 0x10;
+ if (gUnknown_02039262 != 31 && gUnknown_02039264 != 0 && gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039266 - 31] != 0xFFFF)
+ gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039266 - 31] |= 0x40;
+ if (gUnknown_02039262 != 0 && gUnknown_02039264 != 19 && gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039266 + 31] != 0xFFFF)
+ gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039266 + 31] |= 0x20;
+ if (gUnknown_02039262 != 31 && gUnknown_02039264 != 19 && gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039266 + 33] != 0xFFFF)
+ gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039266 + 33] |= 0x80;
+ }
+ gUnknown_02039266++;
+ }
+ }
+
+ for (gUnknown_02039260 = 0; gUnknown_02039260 < 0x280; gUnknown_02039260++) // Register difference on induction: expected r3, got r1
+ {
+ if (gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039260] == 0xFFFF)
+ gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039260] = 0x10;
+ else if (gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039260] != 0)
+ {
+ if (gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039260] & 0x02)
+ gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039260] &= 0xFFCF;
+ if (gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039260] & 0x01)
+ gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039260] &= 0xFF3F;
+ if (gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039260] & 0x08)
+ gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039260] &= 0xFFAF;
+ if (gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039260] & 0x04)
+ gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039260] &= 0xFF5F;
+ gUnknown_02039268 = gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039260] & 0x0F;
+ gUnknown_0203926A = gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039260] & 0xF0;
+ if (gUnknown_0203926A)
+ {
+ gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039260] &= 0x0F;
+ switch (gUnknown_02039268)
+ {
+ case 0:
+ if (gUnknown_0203926A != 0)
+ gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039260] += (gUnknown_0203926A >> 4) + 0x10;
+ break;
+ case 2:
+ if (gUnknown_0203926A != 0)
+ gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039260] += (gUnknown_0203926A >> 4) + 0x1E;
+ break;
+ case 1:
+ if (gUnknown_0203926A != 0)
+ gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039260] += (gUnknown_0203926A >> 6) + 0x20;
+ break;
+ case 8:
+ if (gUnknown_0203926A != 0)
+ {
+ r3 = 0;
+ if (gUnknown_0203926A & 0x80)
+ r3 |= 1;
+ if (gUnknown_0203926A & 0x20)
+ r3 |= 2;
+ gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039260] += r3 + 0x20;
+ }
+ break;
+ case 4:
+ if (gUnknown_0203926A != 0)
+ {
+ r3 = 0;
+ if (gUnknown_0203926A & 0x40)
+ r3 |= 1;
+ if (gUnknown_0203926A & 0x10)
+ r3 |= 2;
+ gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039260] += r3 + 0x21;
+ }
+ break;
+ case 5:
+ case 6:
+ gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039260] += 0x27;
+ break;
+ case 9:
+ case 10:
+ gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039260] += 0x25;
+ break;
+ }
+ }
+ }
+ }
+}
+# else
EWRAM_DATA u16 gUnknown_02039260 = 0;
EWRAM_DATA u16 gUnknown_02039262 = 0;
EWRAM_DATA u16 gUnknown_02039264 = 0;
EWRAM_DATA u16 gUnknown_02039266 = 0;
EWRAM_DATA u16 gUnknown_02039268 = 0;
EWRAM_DATA u16 gUnknown_0203926A = 0;
+static NAKED void BuildAreaGlowTilemap(void)
+{
+ asm_unified("\tpush {r4-r7,lr}\n"
+ "\tmov r7, r10\n"
+ "\tmov r6, r9\n"
+ "\tmov r5, r8\n"
+ "\tpush {r5-r7}\n"
+ "\tsub sp, 0xC\n"
+ "\tldr r1, _08110E5C @ =gUnknown_02039260\n"
+ "\tmovs r0, 0\n"
+ "\tstrh r0, [r1]\n"
+ "\tmov r9, r1\n"
+ "\tldr r0, _08110E60 @ =gSharedMem\n"
+ "\tmov r8, r0\n"
+ "\tldr r1, _08110E64 @ =gUnknown_02039262\n"
+ "\tmov r12, r1\n"
+ "\tmov r1, r9\n"
+ "\tmovs r4, 0x8B\n"
+ "\tlsls r4, 1\n"
+ "\tadd r4, r8\n"
+ "\tldr r3, _08110E68 @ =0x0000027f\n"
+ "\tmovs r2, 0\n"
+ "_08110C5C:\n"
+ "\tldrh r0, [r1]\n"
+ "\tlsls r0, 1\n"
+ "\tadds r0, r4\n"
+ "\tstrh r2, [r0]\n"
+ "\tldrh r0, [r1]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrh r0, [r1]\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tcmp r0, r3\n"
+ "\tbls _08110C5C\n"
+ "\tmovs r0, 0\n"
+ "\tmov r3, r9\n"
+ "\tstrh r0, [r3]\n"
+ "\tmovs r1, 0x88\n"
+ "\tlsls r1, 1\n"
+ "\tadd r1, r8\n"
+ "\tldrh r0, [r1]\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _08110D04\n"
+ "\tldr r4, _08110E6C @ =gUnknown_02039266\n"
+ "\tmovs r2, 0\n"
+ "\tldr r5, _08110E64 @ =gUnknown_02039262\n"
+ "\tmov r0, r8\n"
+ "\tstr r0, [sp, 0x8]\n"
+ "\tmovs r1, 0x8B\n"
+ "\tlsls r1, 1\n"
+ "\tadd r1, r8\n"
+ "\tmov r10, r1\n"
+ "\tldr r6, _08110E70 @ =gUnknown_02039264\n"
+ "\tmov r7, r9\n"
+ "_08110C9A:\n"
+ "\tstrh r2, [r4]\n"
+ "\tldr r3, _08110E70 @ =gUnknown_02039264\n"
+ "\tstrh r2, [r3]\n"
+ "_08110CA0:\n"
+ "\tmov r0, r12\n"
+ "\tstrh r2, [r0]\n"
+ "_08110CA4:\n"
+ "\tldrh r0, [r5]\n"
+ "\tldrh r1, [r6]\n"
+ "\tstr r2, [sp]\n"
+ "\tbl GetRegionMapSectionAt_\n"
+ "\tldrh r1, [r7]\n"
+ "\tlsls r1, 2\n"
+ "\tldr r3, [sp, 0x8]\n"
+ "\tadds r1, r3\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tldr r2, [sp]\n"
+ "\tldrh r1, [r1, 0x12]\n"
+ "\tcmp r0, r1\n"
+ "\tbne _08110CCC\n"
+ "\tldrh r0, [r4]\n"
+ "\tlsls r0, 1\n"
+ "\tadd r0, r10\n"
+ "\tldr r1, _08110E74 @ =0x0000ffff\n"
+ "\tstrh r1, [r0]\n"
+ "_08110CCC:\n"
+ "\tldrh r0, [r4]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrh r0, [r4]\n"
+ "\tldrh r0, [r5]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrh r0, [r5]\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tcmp r0, 0x1F\n"
+ "\tbls _08110CA4\n"
+ "\tldrh r0, [r6]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrh r0, [r6]\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tldr r1, _08110E64 @ =gUnknown_02039262\n"
+ "\tmov r12, r1\n"
+ "\tcmp r0, 0x13\n"
+ "\tbls _08110CA0\n"
+ "\tldrh r0, [r7]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrh r0, [r7]\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tldr r3, _08110E78 @ =gSharedMem + 0x110\n"
+ "\tldrh r3, [r3]\n"
+ "\tcmp r0, r3\n"
+ "\tbcc _08110C9A\n"
+ "_08110D04:\n"
+ "\tmovs r0, 0\n"
+ "\tldr r1, _08110E6C @ =gUnknown_02039266\n"
+ "\tstrh r0, [r1]\n"
+ "\tldr r3, _08110E70 @ =gUnknown_02039264\n"
+ "\tstrh r0, [r3]\n"
+ "\tldr r6, _08110E64 @ =gUnknown_02039262\n"
+ "\tmov r10, r0\n"
+ "\tadds r3, r1, 0\n"
+ "\tldr r5, _08110E7C @ =gSharedMem + 0x116\n"
+ "\tldr r4, _08110E74 @ =0x0000ffff\n"
+ "\tldr r7, _08110E70 @ =gUnknown_02039264\n"
+ "_08110D1A:\n"
+ "\tmov r0, r10\n"
+ "\tstrh r0, [r6]\n"
+ "_08110D1E:\n"
+ "\tldrh r1, [r3]\n"
+ "\tlsls r0, r1, 1\n"
+ "\tadds r0, r5\n"
+ "\tldrh r0, [r0]\n"
+ "\tcmp r0, r4\n"
+ "\tbne _08110E10\n"
+ "\tldrh r0, [r6]\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _08110D42\n"
+ "\tsubs r0, r1, 0x1\n"
+ "\tlsls r0, 1\n"
+ "\tadds r2, r0, r5\n"
+ "\tldrh r1, [r2]\n"
+ "\tcmp r1, r4\n"
+ "\tbeq _08110D42\n"
+ "\tmovs r0, 0x2\n"
+ "\torrs r0, r1\n"
+ "\tstrh r0, [r2]\n"
+ "_08110D42:\n"
+ "\tldrh r0, [r6]\n"
+ "\tcmp r0, 0x1F\n"
+ "\tbeq _08110D5C\n"
+ "\tldrh r0, [r3]\n"
+ "\tadds r0, 0x1\n"
+ "\tlsls r0, 1\n"
+ "\tadds r2, r0, r5\n"
+ "\tldrh r1, [r2]\n"
+ "\tcmp r1, r4\n"
+ "\tbeq _08110D5C\n"
+ "\tmovs r0, 0x1\n"
+ "\torrs r0, r1\n"
+ "\tstrh r0, [r2]\n"
+ "_08110D5C:\n"
+ "\tldrh r0, [r7]\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _08110D76\n"
+ "\tldrh r0, [r3]\n"
+ "\tsubs r0, 0x20\n"
+ "\tlsls r0, 1\n"
+ "\tadds r2, r0, r5\n"
+ "\tldrh r1, [r2]\n"
+ "\tcmp r1, r4\n"
+ "\tbeq _08110D76\n"
+ "\tmovs r0, 0x8\n"
+ "\torrs r0, r1\n"
+ "\tstrh r0, [r2]\n"
+ "_08110D76:\n"
+ "\tldrh r0, [r7]\n"
+ "\tcmp r0, 0x13\n"
+ "\tbeq _08110D90\n"
+ "\tldrh r0, [r3]\n"
+ "\tadds r0, 0x20\n"
+ "\tlsls r0, 1\n"
+ "\tadds r2, r0, r5\n"
+ "\tldrh r1, [r2]\n"
+ "\tcmp r1, r4\n"
+ "\tbeq _08110D90\n"
+ "\tmovs r0, 0x4\n"
+ "\torrs r0, r1\n"
+ "\tstrh r0, [r2]\n"
+ "_08110D90:\n"
+ "\tldrh r0, [r6]\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _08110DB0\n"
+ "\tldrh r0, [r7]\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _08110DB0\n"
+ "\tldrh r0, [r3]\n"
+ "\tsubs r0, 0x21\n"
+ "\tlsls r0, 1\n"
+ "\tadds r2, r0, r5\n"
+ "\tldrh r1, [r2]\n"
+ "\tcmp r1, r4\n"
+ "\tbeq _08110DB0\n"
+ "\tmovs r0, 0x10\n"
+ "\torrs r0, r1\n"
+ "\tstrh r0, [r2]\n"
+ "_08110DB0:\n"
+ "\tldrh r0, [r6]\n"
+ "\tcmp r0, 0x1F\n"
+ "\tbeq _08110DD0\n"
+ "\tldrh r0, [r7]\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _08110DD0\n"
+ "\tldrh r0, [r3]\n"
+ "\tsubs r0, 0x1F\n"
+ "\tlsls r0, 1\n"
+ "\tadds r2, r0, r5\n"
+ "\tldrh r1, [r2]\n"
+ "\tcmp r1, r4\n"
+ "\tbeq _08110DD0\n"
+ "\tmovs r0, 0x40\n"
+ "\torrs r0, r1\n"
+ "\tstrh r0, [r2]\n"
+ "_08110DD0:\n"
+ "\tldrh r0, [r6]\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _08110DF0\n"
+ "\tldrh r0, [r7]\n"
+ "\tcmp r0, 0x13\n"
+ "\tbeq _08110DF0\n"
+ "\tldrh r0, [r3]\n"
+ "\tadds r0, 0x1F\n"
+ "\tlsls r0, 1\n"
+ "\tadds r2, r0, r5\n"
+ "\tldrh r1, [r2]\n"
+ "\tcmp r1, r4\n"
+ "\tbeq _08110DF0\n"
+ "\tmovs r0, 0x20\n"
+ "\torrs r0, r1\n"
+ "\tstrh r0, [r2]\n"
+ "_08110DF0:\n"
+ "\tldrh r0, [r6]\n"
+ "\tcmp r0, 0x1F\n"
+ "\tbeq _08110E10\n"
+ "\tldrh r0, [r7]\n"
+ "\tcmp r0, 0x13\n"
+ "\tbeq _08110E10\n"
+ "\tldrh r0, [r3]\n"
+ "\tadds r0, 0x21\n"
+ "\tlsls r0, 1\n"
+ "\tadds r2, r0, r5\n"
+ "\tldrh r1, [r2]\n"
+ "\tcmp r1, r4\n"
+ "\tbeq _08110E10\n"
+ "\tmovs r0, 0x80\n"
+ "\torrs r0, r1\n"
+ "\tstrh r0, [r2]\n"
+ "_08110E10:\n"
+ "\tldrh r0, [r3]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrh r0, [r3]\n"
+ "\tldrh r0, [r6]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrh r0, [r6]\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tcmp r0, 0x1F\n"
+ "\tbhi _08110E26\n"
+ "\tb _08110D1E\n"
+ "_08110E26:\n"
+ "\tldrh r0, [r7]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrh r0, [r7]\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tcmp r0, 0x13\n"
+ "\tbhi _08110E36\n"
+ "\tb _08110D1A\n"
+ "_08110E36:\n"
+ "\tmovs r0, 0\n"
+ "\tmov r1, r9\n"
+ "\tstrh r0, [r1]\n"
+ "_08110E3C:\n"
+ "\tmov r3, r9\n"
+ "\tldrh r0, [r3]\n"
+ "\tlsls r0, 1\n"
+ "\tmovs r4, 0x8B\n"
+ "\tlsls r4, 1\n"
+ "\tadd r4, r8\n"
+ "\tadds r3, r0, r4\n"
+ "\tldrh r2, [r3]\n"
+ "\tadds r1, r2, 0\n"
+ "\tldr r0, _08110E74 @ =0x0000ffff\n"
+ "\tcmp r1, r0\n"
+ "\tbne _08110E80\n"
+ "\tmovs r0, 0x10\n"
+ "\tstrh r0, [r3]\n"
+ "\tb _0811105E\n"
+ "\t.align 2, 0\n"
+ "_08110E5C: .4byte gUnknown_02039260\n"
+ "_08110E60: .4byte gSharedMem\n"
+ "_08110E64: .4byte gUnknown_02039262\n"
+ "_08110E68: .4byte 0x0000027f\n"
+ "_08110E6C: .4byte gUnknown_02039266\n"
+ "_08110E70: .4byte gUnknown_02039264\n"
+ "_08110E74: .4byte 0x0000ffff\n"
+ "_08110E78: .4byte gSharedMem + 0x110\n"
+ "_08110E7C: .4byte gSharedMem + 0x116\n"
+ "_08110E80:\n"
+ "\tcmp r1, 0\n"
+ "\tbne _08110E86\n"
+ "\tb _0811105E\n"
+ "_08110E86:\n"
+ "\tmovs r0, 0x2\n"
+ "\tands r0, r2\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _08110E94\n"
+ "\tldr r0, _08110F28 @ =0x0000ffcf\n"
+ "\tands r0, r2\n"
+ "\tstrh r0, [r3]\n"
+ "_08110E94:\n"
+ "\tmov r1, r9\n"
+ "\tldrh r0, [r1]\n"
+ "\tlsls r0, 1\n"
+ "\tadds r2, r0, r4\n"
+ "\tldrh r1, [r2]\n"
+ "\tmovs r0, 0x1\n"
+ "\tands r0, r1\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _08110EAC\n"
+ "\tldr r0, _08110F2C @ =0x0000ff3f\n"
+ "\tands r0, r1\n"
+ "\tstrh r0, [r2]\n"
+ "_08110EAC:\n"
+ "\tmov r3, r9\n"
+ "\tldrh r0, [r3]\n"
+ "\tlsls r0, 1\n"
+ "\tadds r2, r0, r4\n"
+ "\tldrh r1, [r2]\n"
+ "\tmovs r0, 0x8\n"
+ "\tands r0, r1\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _08110EC4\n"
+ "\tldr r0, _08110F30 @ =0x0000ffaf\n"
+ "\tands r0, r1\n"
+ "\tstrh r0, [r2]\n"
+ "_08110EC4:\n"
+ "\tmov r1, r9\n"
+ "\tldrh r0, [r1]\n"
+ "\tlsls r0, 1\n"
+ "\tadds r2, r0, r4\n"
+ "\tldrh r1, [r2]\n"
+ "\tmovs r0, 0x4\n"
+ "\tands r0, r1\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _08110EDC\n"
+ "\tldr r0, _08110F34 @ =0x0000ff5f\n"
+ "\tands r0, r1\n"
+ "\tstrh r0, [r2]\n"
+ "_08110EDC:\n"
+ "\tldr r6, _08110F38 @ =gUnknown_02039268\n"
+ "\tmov r3, r9\n"
+ "\tldrh r0, [r3]\n"
+ "\tlsls r0, 1\n"
+ "\tadds r0, r4\n"
+ "\tldrh r1, [r0]\n"
+ "\tmovs r5, 0xF\n"
+ "\tadds r0, r5, 0\n"
+ "\tands r0, r1\n"
+ "\tstrh r0, [r6]\n"
+ "\tldr r2, _08110F3C @ =gUnknown_0203926A\n"
+ "\tldrh r0, [r3]\n"
+ "\tlsls r0, 1\n"
+ "\tadds r0, r4\n"
+ "\tldrh r1, [r0]\n"
+ "\tmovs r0, 0xF0\n"
+ "\tands r0, r1\n"
+ "\tstrh r0, [r2]\n"
+ "\tldrh r1, [r3]\n"
+ "\tadds r3, r2, 0\n"
+ "\tcmp r0, 0\n"
+ "\tbne _08110F0A\n"
+ "\tb _0811105E\n"
+ "_08110F0A:\n"
+ "\tlsls r0, r1, 1\n"
+ "\tadds r0, r4\n"
+ "\tldrh r2, [r0]\n"
+ "\tadds r1, r5, 0\n"
+ "\tands r1, r2\n"
+ "\tstrh r1, [r0]\n"
+ "\tldrh r0, [r6]\n"
+ "\tcmp r0, 0xA\n"
+ "\tbls _08110F1E\n"
+ "\tb _0811105E\n"
+ "_08110F1E:\n"
+ "\tlsls r0, 2\n"
+ "\tldr r1, _08110F40 @ =_08110F44\n"
+ "\tadds r0, r1\n"
+ "\tldr r0, [r0]\n"
+ "\tmov pc, r0\n"
+ "\t.align 2, 0\n"
+ "_08110F28: .4byte 0x0000ffcf\n"
+ "_08110F2C: .4byte 0x0000ff3f\n"
+ "_08110F30: .4byte 0x0000ffaf\n"
+ "_08110F34: .4byte 0x0000ff5f\n"
+ "_08110F38: .4byte gUnknown_02039268\n"
+ "_08110F3C: .4byte gUnknown_0203926A\n"
+ "_08110F40: .4byte _08110F44\n"
+ "\t.align 2, 0\n"
+ "_08110F44:\n"
+ "\t.4byte _08110F70\n"
+ "\t.4byte _08110FAC\n"
+ "\t.4byte _08110F8E\n"
+ "\t.4byte _0811105E\n"
+ "\t.4byte _08111002\n"
+ "\t.4byte _08111036\n"
+ "\t.4byte _08111036\n"
+ "\t.4byte _0811105E\n"
+ "\t.4byte _08110FCE\n"
+ "\t.4byte _0811104A\n"
+ "\t.4byte _0811104A\n"
+ "_08110F70:\n"
+ "\tldrh r0, [r3]\n"
+ "\tlsls r1, r0, 16\n"
+ "\tcmp r1, 0\n"
+ "\tbeq _0811105E\n"
+ "\tmov r0, r9\n"
+ "\tldrh r2, [r0]\n"
+ "\tlsls r2, 1\n"
+ "\tmovs r0, 0x8B\n"
+ "\tlsls r0, 1\n"
+ "\tadd r0, r8\n"
+ "\tadds r2, r0\n"
+ "\tldrh r0, [r2]\n"
+ "\tadds r0, 0x10\n"
+ "\tlsrs r1, 20\n"
+ "\tb _08110FC8\n"
+ "_08110F8E:\n"
+ "\tldrh r0, [r3]\n"
+ "\tlsls r1, r0, 16\n"
+ "\tcmp r1, 0\n"
+ "\tbeq _0811105E\n"
+ "\tmov r3, r9\n"
+ "\tldrh r2, [r3]\n"
+ "\tlsls r2, 1\n"
+ "\tmovs r0, 0x8B\n"
+ "\tlsls r0, 1\n"
+ "\tadd r0, r8\n"
+ "\tadds r2, r0\n"
+ "\tldrh r0, [r2]\n"
+ "\tadds r0, 0x1E\n"
+ "\tlsrs r1, 20\n"
+ "\tb _08110FC8\n"
+ "_08110FAC:\n"
+ "\tldrh r0, [r3]\n"
+ "\tlsls r1, r0, 16\n"
+ "\tcmp r1, 0\n"
+ "\tbeq _0811105E\n"
+ "\tmov r0, r9\n"
+ "\tldrh r2, [r0]\n"
+ "\tlsls r2, 1\n"
+ "\tmovs r0, 0x8B\n"
+ "\tlsls r0, 1\n"
+ "\tadd r0, r8\n"
+ "\tadds r2, r0\n"
+ "\tldrh r0, [r2]\n"
+ "\tadds r0, 0x20\n"
+ "\tlsrs r1, 22\n"
+ "_08110FC8:\n"
+ "\tadds r0, r1\n"
+ "\tstrh r0, [r2]\n"
+ "\tb _0811105E\n"
+ "_08110FCE:\n"
+ "\tldrh r2, [r3]\n"
+ "\tcmp r2, 0\n"
+ "\tbeq _0811105E\n"
+ "\tmovs r0, 0x80\n"
+ "\tands r0, r2\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tnegs r0, r0\n"
+ "\tlsrs r3, r0, 31\n"
+ "\tmovs r0, 0x20\n"
+ "\tands r0, r2\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _08110FEC\n"
+ "\tmovs r0, 0x2\n"
+ "\torrs r3, r0\n"
+ "_08110FEC:\n"
+ "\tmov r0, r9\n"
+ "\tldrh r1, [r0]\n"
+ "\tlsls r1, 1\n"
+ "\tmovs r0, 0x8B\n"
+ "\tlsls r0, 1\n"
+ "\tadd r0, r8\n"
+ "\tadds r1, r0\n"
+ "\tldrh r0, [r1]\n"
+ "\tadds r0, 0x20\n"
+ "\tadds r0, r3\n"
+ "\tb _0811105C\n"
+ "_08111002:\n"
+ "\tldrh r2, [r3]\n"
+ "\tcmp r2, 0\n"
+ "\tbeq _0811105E\n"
+ "\tmovs r0, 0x40\n"
+ "\tands r0, r2\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tnegs r0, r0\n"
+ "\tlsrs r3, r0, 31\n"
+ "\tmovs r0, 0x10\n"
+ "\tands r0, r2\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _08111020\n"
+ "\tmovs r0, 0x2\n"
+ "\torrs r3, r0\n"
+ "_08111020:\n"
+ "\tmov r0, r9\n"
+ "\tldrh r1, [r0]\n"
+ "\tlsls r1, 1\n"
+ "\tmovs r0, 0x8B\n"
+ "\tlsls r0, 1\n"
+ "\tadd r0, r8\n"
+ "\tadds r1, r0\n"
+ "\tldrh r0, [r1]\n"
+ "\tadds r0, 0x21\n"
+ "\tadds r0, r3\n"
+ "\tb _0811105C\n"
+ "_08111036:\n"
+ "\tmov r3, r9\n"
+ "\tldrh r1, [r3]\n"
+ "\tlsls r1, 1\n"
+ "\tmovs r0, 0x8B\n"
+ "\tlsls r0, 1\n"
+ "\tadd r0, r8\n"
+ "\tadds r1, r0\n"
+ "\tldrh r0, [r1]\n"
+ "\tadds r0, 0x27\n"
+ "\tb _0811105C\n"
+ "_0811104A:\n"
+ "\tmov r0, r9\n"
+ "\tldrh r1, [r0]\n"
+ "\tlsls r1, 1\n"
+ "\tmovs r0, 0x8B\n"
+ "\tlsls r0, 1\n"
+ "\tadd r0, r8\n"
+ "\tadds r1, r0\n"
+ "\tldrh r0, [r1]\n"
+ "\tadds r0, 0x25\n"
+ "_0811105C:\n"
+ "\tstrh r0, [r1]\n"
+ "_0811105E:\n"
+ "\tmov r3, r9\n"
+ "\tldrh r0, [r3]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrh r0, [r3]\n"
+ "\tlsls r0, 16\n"
+ "\tldr r1, _08111080 @ =0x027f0000\n"
+ "\tcmp r0, r1\n"
+ "\tbhi _08111070\n"
+ "\tb _08110E3C\n"
+ "_08111070:\n"
+ "\tadd sp, 0xC\n"
+ "\tpop {r3-r5}\n"
+ "\tmov r8, r3\n"
+ "\tmov r9, r4\n"
+ "\tmov r10, r5\n"
+ "\tpop {r4-r7}\n"
+ "\tpop {r0}\n"
+ "\tbx r0\n"
+ "\t.align 2, 0\n"
+ "_08111080: .4byte 0x027f0000");
+}
+#endif // NONMATCHING
-// Static ROM declarations
+static void StartAreaGlow(void)
+{
+ if (gPokedexAreaScreenPtr->numSpecialAreas != 0 && gPokedexAreaScreenPtr->numOverworldAreas == 0)
+ gPokedexAreaScreenPtr->whichMarkersFlashing = 1;
+ else
+ gPokedexAreaScreenPtr->whichMarkersFlashing = 0;
+ gPokedexAreaScreenPtr->areaShadeOrMarkerFrameCounter = 0;
+ gPokedexAreaScreenPtr->areaShadeFrameCounter = 0;
+ gPokedexAreaScreenPtr->areaShadeBldArgLo = 0;
+ gPokedexAreaScreenPtr->areaShadeBldArgHi = 0x40;
+ gPokedexAreaScreenPtr->specialMarkerCycleCounter = 1;
+ REG_BLDCNT = BLDCNT_TGT1_BG0 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG0 | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BD;
+ REG_BLDALPHA = 0x1000;
+ DoAreaGlow();
+}
-// .rodata
+static void DoAreaGlow(void)
+{
+ u16 x;
+ u16 y;
+ u16 i;
-// .text
+ if (gPokedexAreaScreenPtr->whichMarkersFlashing == 0)
+ {
+ if (gPokedexAreaScreenPtr->areaShadeOrMarkerFrameCounter == 0)
+ {
+ gPokedexAreaScreenPtr->areaShadeFrameCounter++;
+ if (gPokedexAreaScreenPtr->areaShadeFrameCounter & 1)
+ gPokedexAreaScreenPtr->areaShadeBldArgLo = (gPokedexAreaScreenPtr->areaShadeBldArgLo + 4) & 0x7f;
+ else
+ gPokedexAreaScreenPtr->areaShadeBldArgHi = (gPokedexAreaScreenPtr->areaShadeBldArgHi + 4) & 0x7f;
+ x = gSineTable[gPokedexAreaScreenPtr->areaShadeBldArgLo] >> 4;
+ y = gSineTable[gPokedexAreaScreenPtr->areaShadeBldArgHi] >> 4;
+ REG_BLDALPHA = x | (y << 8);
+ gPokedexAreaScreenPtr->areaShadeOrMarkerFrameCounter = 0;
+ if (gPokedexAreaScreenPtr->areaShadeFrameCounter == 0x40)
+ {
+ gPokedexAreaScreenPtr->areaShadeFrameCounter = 0;
+ if (gPokedexAreaScreenPtr->numSpecialAreas != 0)
+ gPokedexAreaScreenPtr->whichMarkersFlashing = 1;
+ }
+ }
+ else
+ gPokedexAreaScreenPtr->areaShadeOrMarkerFrameCounter--;
+ }
+ else
+ {
+ gPokedexAreaScreenPtr->areaShadeOrMarkerFrameCounter++;
+ if (gPokedexAreaScreenPtr->areaShadeOrMarkerFrameCounter > 12)
+ {
+ gPokedexAreaScreenPtr->areaShadeOrMarkerFrameCounter = 0;
+ gPokedexAreaScreenPtr->specialMarkerCycleCounter++;
+ for (i = 0; i < gPokedexAreaScreenPtr->numSpecialAreas; i++)
+ {
+ gPokedexAreaScreenPtr->areaMarkerSprites[i]->invisible = gPokedexAreaScreenPtr->specialMarkerCycleCounter & 1;
+ }
+ if (gPokedexAreaScreenPtr->specialMarkerCycleCounter > 4)
+ {
+ gPokedexAreaScreenPtr->specialMarkerCycleCounter = 1;
+ if (gPokedexAreaScreenPtr->numOverworldAreas != 0)
+ gPokedexAreaScreenPtr->whichMarkersFlashing = 0;
+ }
+ }
+ }
+}
+
+static void DebugCB_WaitFade(void)
+{
+ switch (gPokedexAreaScreenPtr->state)
+ {
+ case 0:
+ gPokedexAreaScreenPtr->state = 1;
+ break;
+ case 1:
+ if (!UpdatePaletteFade())
+ {
+ SetCallback(DebugCB_WaitButton);
+ }
+ break;
+ }
+}
+
+static void DebugCB_WaitButton(void)
+{
+ switch (gPokedexAreaScreenPtr->state)
+ {
+ case 0:
+ if (gMain.newKeys & B_BUTTON)
+ {
+ SetCallback(DebugCB_GoBack);
+ }
+ else if (gMain.newKeys & DPAD_RIGHT || (gMain.newKeys & R_BUTTON && gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_LR))
+ {
+ SetCallback(DebugCB_GoNext);
+ }
+ break;
+ }
+}
+
+static void DebugCB_GoBack(void)
+{
+ switch (gPokedexAreaScreenPtr->state)
+ {
+ case 0:
+ BeginNormalPaletteFade(0xFFFFFFEB, 0, 0, 16, RGB(0, 0, 0));
+ gPokedexAreaScreenPtr->state++;
+ break;
+ case 1:
+ if (!UpdatePaletteFade())
+ {
+ FreeRegionMapIconResources();
+ SetMainCallback2(gPokedexAreaScreenPtr->prev);
+ }
+ break;
+ }
+}
+
+static void DebugCB_GoNext(void)
+{
+ switch (gPokedexAreaScreenPtr->state)
+ {
+ case 0:
+ BeginNormalPaletteFade(0xFFFFFFEB, 0, 0, 16, RGB(0, 0, 0));
+ gPokedexAreaScreenPtr->state++;
+ break;
+ case 1:
+ if (!UpdatePaletteFade())
+ {
+ FreeRegionMapIconResources();
+ SetMainCallback2(gPokedexAreaScreenPtr->next);
+ }
+ break;
+ }
+}
+
+static void Task_PokedexAreaScreen_0(u8 taskId);
+static void Task_PokedexAreaScreen_1(u8 taskId);
+static void CreateAreaMarkerSprites(void);
+static void DestroyAreaSprites(void);
+static void LoadAreaUnknownGraphics(void);
+static void CreateAreaUnknownSprites(void);
+
+void ShowPokedexAreaScreen(u16 species, u8 * errno)
+{
+ u8 taskId;
+ gPokedexAreaScreenPtr->species = species;
+ gPokedexAreaScreenPtr->errno = errno;
+ errno[0] = 0;
+ taskId = CreateTask(Task_PokedexAreaScreen_0, 0);
+ gTasks[taskId].data[0] = 0;
+}
+
+static void Task_PokedexAreaScreen_0(u8 taskId)
+{
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_BG1_ON | DISPCNT_WIN0_ON | DISPCNT_WIN1_ON;
+ REG_BG0HOFS = 0;
+ REG_BG0VOFS = -8;
+ REG_BG2VOFS = 0;
+ REG_BG2HOFS = 0;
+ REG_BG3HOFS = 0;
+ REG_BG3VOFS = 0;
+ break;
+ case 1:
+ ResetPaletteFade();
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ break;
+ case 2:
+ InitRegionMap(&gPokedexAreaScreenPtr->regionMap, FALSE);
+ StringFill(gPokedexAreaScreenPtr->charBuffer, CHAR_SPACE, 16);
+ break;
+ case 3:
+ ResetDrawAreaGlowState();
+ break;
+ case 4:
+ if (DrawAreaGlow())
+ return;
+ break;
+ case 5:
+ CreateRegionMapPlayerIcon(1, 1);
+ RegionMapDefaultZoomOffsetPlayerSprite(0, -8);
+ break;
+ case 6:
+ CreateAreaMarkerSprites();
+ break;
+ case 7:
+ LoadAreaUnknownGraphics();
+ break;
+ case 8:
+ CreateAreaUnknownSprites();
+ break;
+ case 9:
+ BeginNormalPaletteFade(0xFFFFFFEB, 0, 16, 0, RGB(0, 0, 0));
+ break;
+ case 10:
+ REG_BLDCNT = BLDCNT_TGT1_BG0 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG0 | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BD;
+ StartAreaGlow();
+ REG_DISPCNT = DISPCNT_MODE_1 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_BG2_ON | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON | DISPCNT_WIN1_ON;
+ break;
+ case 11:
+ gTasks[taskId].func = Task_PokedexAreaScreen_1;
+ gTasks[taskId].data[0] = 0;
+ return;
+ }
+ gTasks[taskId].data[0]++;
+}
+
+static void Task_PokedexAreaScreen_1(u8 taskId)
+{
+ DoAreaGlow();
+ switch (gTasks[taskId].data[0])
+ {
+ default:
+ gTasks[taskId].data[0] = 0;
+ case 0:
+ if (gPaletteFade.active)
+ return;
+ break;
+ case 1:
+ if (gMain.newKeys & B_BUTTON)
+ {
+ gTasks[taskId].data[1] = 1;
+ PlaySE(SE_PC_OFF);
+ }
+ else if (gMain.newKeys & DPAD_RIGHT || (gMain.newKeys & R_BUTTON && gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_LR))
+ {
+ gTasks[taskId].data[1] = 2;
+ PlaySE(SE_Z_PAGE);
+ }
+ else
+ return;
+ break;
+ case 2:
+ BeginNormalPaletteFade(0xFFFFFFEB, 0, 0, 16, RGB(0, 0, 0));
+ break;
+ case 3:
+ if (gPaletteFade.active)
+ return;
+ DestroyAreaSprites();
+ gPokedexAreaScreenPtr->errno[0] = gTasks[taskId].data[1];
+ DestroyTask(taskId);
+ return;
+ }
+ gTasks[taskId].data[0]++;
+}
+
+const u16 AreaMarkerPalette[];
+const u8 AreaMarkerTiles[];
+
+const struct SpriteSheet sAreaMarkerSpriteSheet = {
+ AreaMarkerTiles, 0x80, 2
+};
+
+const struct SpritePalette sAreaMarkerSpritePalette = {
+ AreaMarkerPalette, 2
+};
+
+const struct OamData sAreaMarkerOamData = {
+ .size = 1,
+ .priority = 1
+};
+
+const struct SpriteTemplate sAreaMarkerSpriteTemplate = {
+ 2,
+ 2,
+ &sAreaMarkerOamData,
+ gDummySpriteAnimTable,
+ NULL,
+ gDummySpriteAffineAnimTable,
+ SpriteCallbackDummy
+};
+
+const u16 AreaMarkerPalette[] = INCBIN_U16("graphics/pokedex/area_marker.gbapal");
+const u8 AreaMarkerTiles[] = INCBIN_U8("graphics/pokedex/area_marker.4bpp");
+
+static void CreateAreaMarkerSprites(void)
+{
+ s16 i;
+ u8 spriteId;
+ s16 x;
+ s16 y;
+ s16 cnt;
+ s16 mapSecId;
+
+ LoadSpriteSheet(&sAreaMarkerSpriteSheet);
+ LoadSpritePalette(&sAreaMarkerSpritePalette);
+ cnt = 0;
+ for (i = 0; i < gPokedexAreaScreenPtr->numSpecialAreas; i++)
+ {
+ mapSecId = gPokedexAreaScreenPtr->specialAreaRegionMapSectionIds[i];
+ x = 8 * (gRegionMapLocations[mapSecId].x + 1) + 4;
+ y = 8 * (gRegionMapLocations[mapSecId].y) + 28;
+ x += 4 * (gRegionMapLocations[mapSecId].width - 1);
+ y += 4 * (gRegionMapLocations[mapSecId].height - 1);
+ spriteId = CreateSprite(&sAreaMarkerSpriteTemplate, x, y, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].invisible = TRUE;
+ gPokedexAreaScreenPtr->areaMarkerSprites[cnt++] = gSprites + spriteId;
+ }
+ }
+ gPokedexAreaScreenPtr->numAreaMarkerSprites = cnt;
+}
+
+static void DestroyAreaSprites(void)
+{
+ u16 i;
+ FreeSpriteTilesByTag(2);
+ FreeSpritePaletteByTag(2);
+ for (i = 0; i < gPokedexAreaScreenPtr->numAreaMarkerSprites; i++)
+ {
+ DestroySprite(gPokedexAreaScreenPtr->areaMarkerSprites[i]);
+ }
+ FreeSpriteTilesByTag(3);
+ FreeSpritePaletteByTag(3);
+ for (i = 0; i < 3; i++)
+ {
+ if (gPokedexAreaScreenPtr->areaUnknownSprites[i] != NULL)
+ {
+ DestroySprite(gPokedexAreaScreenPtr->areaUnknownSprites[i]);
+ }
+ }
+}
+
+const struct SpritePalette sAreaUnknownSpritePalette = {gAreaUnknownPalette, 3};
+
+static void LoadAreaUnknownGraphics(void)
+{
+ struct SpriteSheet spriteSheet = {gPokedexAreaScreenPtr->areaUnknownGraphicsBuffer, 0x600, 3};
+
+ LZ77UnCompWram(gAreaUnknownTiles, gPokedexAreaScreenPtr->areaUnknownGraphicsBuffer);
+ LoadSpriteSheet(&spriteSheet);
+ LoadSpritePalette(&sAreaUnknownSpritePalette);
+}
+
+const struct OamData sAreaUnknownOamData = {
+ .size = 2,
+ .priority = 1
+};
+
+const struct SpriteTemplate sAreaUnknownSpriteTemplate = {
+ 3,
+ 3,
+ &sAreaUnknownOamData,
+ gDummySpriteAnimTable,
+ NULL,
+ gDummySpriteAffineAnimTable,
+ SpriteCallbackDummy
+};
+
+static void CreateAreaUnknownSprites(void)
+{
+ u16 i;
+ u8 spriteId;
+
+ if (gPokedexAreaScreenPtr->numOverworldAreas != 0 || gPokedexAreaScreenPtr->numSpecialAreas != 0)
+ {
+ for (i = 0; i < 3; i++)
+ {
+ gPokedexAreaScreenPtr->areaUnknownSprites[i] = NULL;
+ }
+ }
+ else
+ {
+ for (i = 0; i < 3; i++)
+ {
+ spriteId = CreateSprite(&sAreaUnknownSpriteTemplate, i * 32 + 0xa0, 0x8c, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].oam.tileNum += i * 16;
+ gPokedexAreaScreenPtr->areaUnknownSprites[i] = gSprites + spriteId;
+ }
+ else
+ gPokedexAreaScreenPtr->areaUnknownSprites[i] = NULL;
+ }
+ }
+}
diff --git a/src/pokedex_cry_screen.c b/src/pokedex_cry_screen.c
index 912b9aabd..72972bf06 100644
--- a/src/pokedex_cry_screen.c
+++ b/src/pokedex_cry_screen.c
@@ -1,26 +1,200 @@
#include "global.h"
+#include "m4a.h"
+#include "main.h"
#include "pokedex_cry_screen.h"
#include "palette.h"
#include "sprite.h"
#include "ewram.h"
+#include "trig.h"
+#include "sound.h"
+
+extern struct SoundInfo gSoundInfo;
+extern struct MusicPlayerInfo gMPlay_BGM;
struct Unk201C800 {
- u8 unk_0;
- u8 unk_1;
+ s8 unk_0;
+ s8 unk_1;
u8 unk_2;
- u8 filler_3;
u16 unk_4;
};
+struct PokedexCryScreen_201C000
+{
+ u8 unk0000[0x10];
+ u8 unk0010;
+ u8 unk0011;
+ u8 unk0012;
+ u16 unk0014;
+ u8 unk0016;
+ u16 species;
+ u8 unk001A;
+ u8 unk001B;
+};
+
+void sub_811A0A0(u16 species);
+void sub_811A0C0(void);
+void sub_811A124(void);
+void sub_811A15C(u8);
+void sub_811A1C8(u8, u8);
+void sub_811A324(void);
+void sub_811A350(u8, u16, u8);
+void sub_811A534(struct Sprite *);
+void sub_811A6D8(s8);
+
extern u8 gUnknown_03005E98;
// data/pokedex_cry_screen.o
+
+const u16 CryMeterNeedlePalette[] = INCBIN_U16("graphics/pokedex/cry_meter_needle.gbapal");
+const u8 CryMeterNeedleTiles[] = INCBIN_U8("graphics/pokedex/cry_meter_needle.4bpp");
+
+#if ENGLISH
+const u16 gUnknown_083FAE7C[] = INCBIN_U16("graphics/pokedex/cry_meter_map.bin");
+const u16 gUnknown_083FAF1C[] = INCBIN_U16("graphics/pokedex/cry_meter.gbapal");
+const u8 gUnknown_083FAF3C[] = INCBIN_U8("graphics/pokedex/cry_meter.4bpp.lz");
+#else
extern const u16 gUnknown_083FAE7C[];
extern const u16 gUnknown_083FAF1C[];
extern const u8 gUnknown_083FAF3C[];
-extern struct SpriteTemplate gSpriteTemplate_83FB774;
-extern const struct SpriteSheet gCryMeterNeedleSpriteSheets[];
-extern const struct SpritePalette gCryMeterNeedleSpritePalettes[];
+#endif // ENGLISH
+
+const u16 gUnknown_083FB274[][72] = {
+ {
+ 0x0000, 0x0004, 0x0008, 0x000C, 0x0010, 0x0014, 0x0018, 0x001C,
+ 0x0400, 0x0404, 0x0408, 0x040C, 0x0410, 0x0414, 0x0418, 0x041C,
+ 0x0800, 0x0804, 0x0808, 0x080C, 0x0810, 0x0814, 0x0818, 0x081C,
+ 0x0C00, 0x0C04, 0x0C08, 0x0C0C, 0x0C10, 0x0C14, 0x0C18, 0x0C1C,
+ 0x1000, 0x1004, 0x1008, 0x100C, 0x1010, 0x1014, 0x1018, 0x101C,
+ 0x1400, 0x1404, 0x1408, 0x140C, 0x1410, 0x1414, 0x1418, 0x141C,
+ 0x1800, 0x1804, 0x1808, 0x180C, 0x1810, 0x1814, 0x1818, 0x181C,
+ 0x1C00, 0x1C04, 0x1C08, 0x1C0C, 0x1C10, 0x1C14, 0x1C18, 0x1C1C,
+ 0x2000, 0x2004, 0x2008, 0x200C, 0x2010, 0x2014, 0x2018, 0x201C
+ }, {
+ 0x0000, 0x0004, 0x0008, 0x000C, 0x0010, 0x0014, 0x0018, 0x001C,
+ 0x0400, 0x0404, 0x0408, 0x040C, 0x0410, 0x0414, 0x0418, 0x041C,
+ 0x0800, 0x0804, 0x0808, 0x080C, 0x0810, 0x0814, 0x0818, 0x081C,
+ 0x0C00, 0x0C04, 0x0C08, 0x0C0C, 0x0C10, 0x0C14, 0x0C18, 0x0C1C,
+ 0x1000, 0x1004, 0x1008, 0x100C, 0x1010, 0x1014, 0x1018, 0x101C,
+ 0x1400, 0x1404, 0x1408, 0x140C, 0x1410, 0x1414, 0x1418, 0x141C,
+ 0x1800, 0x1804, 0x1808, 0x180C, 0x1810, 0x1814, 0x1818, 0x181C,
+ 0x1C00, 0x1C04, 0x1C08, 0x1C0C, 0x1C10, 0x1C14, 0x1C18, 0x1C1C,
+ 0x2000, 0x2004, 0x2008, 0x200C, 0x2010, 0x2014, 0x2018, 0x201C
+ }, {
+ 0x0001, 0x0005, 0x0009, 0x000D, 0x0011, 0x0015, 0x0019, 0x001D,
+ 0x0401, 0x0405, 0x0409, 0x040D, 0x0411, 0x0415, 0x0419, 0x041D,
+ 0x0801, 0x0805, 0x0809, 0x080D, 0x0811, 0x0815, 0x0819, 0x081D,
+ 0x0C01, 0x0C05, 0x0C09, 0x0C0D, 0x0C11, 0x0C15, 0x0C19, 0x0C1D,
+ 0x1001, 0x1005, 0x1009, 0x100D, 0x1011, 0x1015, 0x1019, 0x101D,
+ 0x1401, 0x1405, 0x1409, 0x140D, 0x1411, 0x1415, 0x1419, 0x141D,
+ 0x1801, 0x1805, 0x1809, 0x180D, 0x1811, 0x1815, 0x1819, 0x181D,
+ 0x1C01, 0x1C05, 0x1C09, 0x1C0D, 0x1C11, 0x1C15, 0x1C19, 0x1C1D,
+ 0x2001, 0x2005, 0x2009, 0x200D, 0x2011, 0x2015, 0x2019, 0x201D
+ }, {
+ 0x0001, 0x0005, 0x0009, 0x000D, 0x0011, 0x0015, 0x0019, 0x001D,
+ 0x0401, 0x0405, 0x0409, 0x040D, 0x0411, 0x0415, 0x0419, 0x041D,
+ 0x0801, 0x0805, 0x0809, 0x080D, 0x0811, 0x0815, 0x0819, 0x081D,
+ 0x0C01, 0x0C05, 0x0C09, 0x0C0D, 0x0C11, 0x0C15, 0x0C19, 0x0C1D,
+ 0x1001, 0x1005, 0x1009, 0x100D, 0x1011, 0x1015, 0x1019, 0x101D,
+ 0x1401, 0x1405, 0x1409, 0x140D, 0x1411, 0x1415, 0x1419, 0x141D,
+ 0x1801, 0x1805, 0x1809, 0x180D, 0x1811, 0x1815, 0x1819, 0x181D,
+ 0x1C01, 0x1C05, 0x1C09, 0x1C0D, 0x1C11, 0x1C15, 0x1C19, 0x1C1D,
+ 0x2001, 0x2005, 0x2009, 0x200D, 0x2011, 0x2015, 0x2019, 0x201D
+ }, {
+ 0x0002, 0x0006, 0x000A, 0x000E, 0x0012, 0x0016, 0x001A, 0x001E,
+ 0x0402, 0x0406, 0x040A, 0x040E, 0x0412, 0x0416, 0x041A, 0x041E,
+ 0x0802, 0x0806, 0x080A, 0x080E, 0x0812, 0x0816, 0x081A, 0x081E,
+ 0x0C02, 0x0C06, 0x0C0A, 0x0C0E, 0x0C12, 0x0C16, 0x0C1A, 0x0C1E,
+ 0x1002, 0x1006, 0x100A, 0x100E, 0x1012, 0x1016, 0x101A, 0x101E,
+ 0x1402, 0x1406, 0x140A, 0x140E, 0x1412, 0x1416, 0x141A, 0x141E,
+ 0x1802, 0x1806, 0x180A, 0x180E, 0x1812, 0x1816, 0x181A, 0x181E,
+ 0x1C02, 0x1C06, 0x1C0A, 0x1C0E, 0x1C12, 0x1C16, 0x1C1A, 0x1C1E,
+ 0x2002, 0x2006, 0x200A, 0x200E, 0x2012, 0x2016, 0x201A, 0x201E
+ }, {
+ 0x0002, 0x0006, 0x000A, 0x000E, 0x0012, 0x0016, 0x001A, 0x001E,
+ 0x0402, 0x0406, 0x040A, 0x040E, 0x0412, 0x0416, 0x041A, 0x041E,
+ 0x0802, 0x0806, 0x080A, 0x080E, 0x0812, 0x0816, 0x081A, 0x081E,
+ 0x0C02, 0x0C06, 0x0C0A, 0x0C0E, 0x0C12, 0x0C16, 0x0C1A, 0x0C1E,
+ 0x1002, 0x1006, 0x100A, 0x100E, 0x1012, 0x1016, 0x101A, 0x101E,
+ 0x1402, 0x1406, 0x140A, 0x140E, 0x1412, 0x1416, 0x141A, 0x141E,
+ 0x1802, 0x1806, 0x180A, 0x180E, 0x1812, 0x1816, 0x181A, 0x181E,
+ 0x1C02, 0x1C06, 0x1C0A, 0x1C0E, 0x1C12, 0x1C16, 0x1C1A, 0x1C1E,
+ 0x2002, 0x2006, 0x200A, 0x200E, 0x2012, 0x2016, 0x201A, 0x201E
+ }, {
+ 0x0003, 0x0007, 0x000B, 0x000F, 0x0013, 0x0017, 0x001B, 0x001F,
+ 0x0403, 0x0407, 0x040B, 0x040F, 0x0413, 0x0417, 0x041B, 0x041F,
+ 0x0803, 0x0807, 0x080B, 0x080F, 0x0813, 0x0817, 0x081B, 0x081F,
+ 0x0C03, 0x0C07, 0x0C0B, 0x0C0F, 0x0C13, 0x0C17, 0x0C1B, 0x0C1F,
+ 0x1003, 0x1007, 0x100B, 0x100F, 0x1013, 0x1017, 0x101B, 0x101F,
+ 0x1403, 0x1407, 0x140B, 0x140F, 0x1413, 0x1417, 0x141B, 0x141F,
+ 0x1803, 0x1807, 0x180B, 0x180F, 0x1813, 0x1817, 0x181B, 0x181F,
+ 0x1C03, 0x1C07, 0x1C0B, 0x1C0F, 0x1C13, 0x1C17, 0x1C1B, 0x1C1F,
+ 0x2003, 0x2007, 0x200B, 0x200F, 0x2013, 0x2017, 0x201B, 0x201F
+ }, {
+ 0x0003, 0x0007, 0x000B, 0x000F, 0x0013, 0x0017, 0x001B, 0x001F,
+ 0x0403, 0x0407, 0x040B, 0x040F, 0x0413, 0x0417, 0x041B, 0x041F,
+ 0x0803, 0x0807, 0x080B, 0x080F, 0x0813, 0x0817, 0x081B, 0x081F,
+ 0x0C03, 0x0C07, 0x0C0B, 0x0C0F, 0x0C13, 0x0C17, 0x0C1B, 0x0C1F,
+ 0x1003, 0x1007, 0x100B, 0x100F, 0x1013, 0x1017, 0x101B, 0x101F,
+ 0x1403, 0x1407, 0x140B, 0x140F, 0x1413, 0x1417, 0x141B, 0x141F,
+ 0x1803, 0x1807, 0x180B, 0x180F, 0x1813, 0x1817, 0x181B, 0x181F,
+ 0x1C03, 0x1C07, 0x1C0B, 0x1C0F, 0x1C13, 0x1C17, 0x1C1B, 0x1C1F,
+ 0x2003, 0x2007, 0x200B, 0x200F, 0x2013, 0x2017, 0x201B, 0x201F
+ }
+};
+
+struct PokedexCryScreen_201C000 * const gPokedexCryScreenPtr = (struct PokedexCryScreen_201C000 *)(gSharedMem + 0x1c000);
+
+const u16 gUnknown_083FB6F8[] = INCBIN_U16("graphics/pokedex/83FB6F8.gbapal");
+const u16 gUnknown_083FB718[] = INCBIN_U16("graphics/pokedex/83FB718.4bpp");
+
+const u8 gUnknown_083FB738[] = {0xF0, 0x0F};
+const u8 gUnknown_083FB73A[][16] = {
+ {
+ 0x0F, 0x0E, 0x0D, 0x0C, 0x0B, 0x0A, 0x09, 0x08,
+ 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F
+ }, {
+ 0xF0, 0xE0, 0xD0, 0xC0, 0xB0, 0xA0, 0x90, 0x80,
+ 0x80, 0x90, 0xA0, 0xB0, 0xC0, 0xD0, 0xE0, 0xF0
+ }
+};
+
+struct Unk201C800 * const gPokedexCryScreenPtr2 = (struct Unk201C800 *)(gSharedMem + 0x1c800);
+
+union AnimCmd gSpriteAnim_83FB760[] = {
+ ANIMCMD_FRAME(0, 30),
+ ANIMCMD_END
+};
+
+const union AnimCmd * gSpriteAnimTable_83FB768[] = {
+ gSpriteAnim_83FB760
+};
+
+struct OamData gOamData_83FB76C = {
+ .y = 160,
+ .affineMode = ST_OAM_AFFINE_NORMAL,
+ .size = 3,
+ .priority = 1
+};
+
+struct SpriteTemplate gSpriteTemplate_83FB774 = {
+ 0x2000,
+ 0x2000,
+ &gOamData_83FB76C,
+ gSpriteAnimTable_83FB768,
+ NULL,
+ gDummySpriteAffineAnimTable,
+ sub_811A534
+};
+
+struct SpriteSheet gCryMeterNeedleSpriteSheets[] = {
+ {CryMeterNeedleTiles, 0x800, 0x2000},
+ {}
+};
+
+struct SpritePalette gCryMeterNeedleSpritePalettes[] = {
+ {CryMeterNeedlePalette, 0x2000},
+ {}
+};
#if ENGLISH
#define CRY_METER_MAP_WIDTH 10
@@ -28,6 +202,626 @@ extern const struct SpritePalette gCryMeterNeedleSpritePalettes[];
#define CRY_METER_MAP_WIDTH 32
#endif
+#ifdef NONMATCHING
+u8 sub_8119E3C(struct CryRelatedStruct *cry, u8 arg1)
+{
+ u8 i;
+ u8 j;
+ u16 r6;
+ u16 r7;
+ u8 r9 = FALSE;
+ u32 offset;
+
+ switch (gUnknown_03005E98)
+ {
+ case 0:
+ gPokedexCryScreenPtr->unk0014 = cry->unk0;
+ gPokedexCryScreenPtr->unk0016 = cry->yPos;
+ gPokedexCryScreenPtr->unk001A = 0;
+ gPokedexCryScreenPtr->unk001B = 0;
+ gPokedexCryScreenPtr->unk0010 = 0;
+ gPokedexCryScreenPtr->unk0012 = 28;
+ gPokedexCryScreenPtr->unk0011 = 0;
+ sub_811A350(arg1, -8 * cry->xPos, 0);
+ for (i = 0; i < 7; i++)
+ {
+ for (j = 0; j < 32; j++)
+ {
+ DmaCopy16(3, gUnknown_083FB718, gSharedMem[32 * i + j], 32);
+ }
+ }
+ gUnknown_03005E98++;
+ break;
+ case 1:
+ r7 = cry->unk2 << 11;
+ r6 = (cry->paletteNo << 12) + ((unsigned)(cry->unk0 << 18) >> 23);
+ for (i = 0; i < 7; i++)
+ {
+ for (j = 0; j < 32; j++)
+ {
+ offset = j << 1;
+ offset += i << 6;
+ offset += r7;
+ *((u16 *)(VRAM + offset)) = r6++;
+ }
+ }
+ for (i = 0; i < gPokedexCryScreenPtr->unk0016 * 8; i++)
+ {
+ sub_811A1C8(i, 0);
+ }
+ gUnknown_03005E98++;
+ break;
+ case 2:
+ sub_811A324();
+ LoadPalette(gUnknown_083FB6F8, cry->paletteNo * 16, 32);
+ r9 = TRUE;
+ break;
+ }
+ return r9;
+}
+#else
+NAKED u8 sub_8119E3C(struct CryRelatedStruct *cry, u8 arg1)
+{
+ asm_unified("\tpush {r4-r7,lr}\n"
+ "\tmov r7, r9\n"
+ "\tmov r6, r8\n"
+ "\tpush {r6,r7}\n"
+ "\tadds r5, r0, 0\n"
+ "\tlsls r1, 24\n"
+ "\tlsrs r2, r1, 24\n"
+ "\tmovs r0, 0\n"
+ "\tmov r9, r0\n"
+ "\tldr r6, _08119E60 @ =gUnknown_03005E98\n"
+ "\tldrb r0, [r6]\n"
+ "\tcmp r0, 0x1\n"
+ "\tbeq _08119EE0\n"
+ "\tcmp r0, 0x1\n"
+ "\tbgt _08119E64\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _08119E6A\n"
+ "\tb _08119F74\n"
+ "\t.align 2, 0\n"
+ "_08119E60: .4byte gUnknown_03005E98\n"
+ "_08119E64:\n"
+ "\tcmp r0, 0x2\n"
+ "\tbeq _08119F60\n"
+ "\tb _08119F74\n"
+ "_08119E6A:\n"
+ "\tldr r4, _08119ECC @ =gSharedMem + 0x1C000\n"
+ "\tldrh r0, [r5]\n"
+ "\tmovs r1, 0\n"
+ "\tstrh r0, [r4, 0x14]\n"
+ "\tldrb r0, [r5, 0x5]\n"
+ "\tstrb r0, [r4, 0x16]\n"
+ "\tstrb r1, [r4, 0x1A]\n"
+ "\tstrb r1, [r4, 0x1B]\n"
+ "\tstrb r1, [r4, 0x10]\n"
+ "\tmovs r0, 0x1C\n"
+ "\tstrb r0, [r4, 0x12]\n"
+ "\tstrb r1, [r4, 0x11]\n"
+ "\tldrb r1, [r5, 0x4]\n"
+ "\tlsls r1, 19\n"
+ "\tnegs r1, r1\n"
+ "\tasrs r1, 16\n"
+ "\tadds r0, r2, 0\n"
+ "\tmovs r2, 0x1\n"
+ "\tbl sub_811A350\n"
+ "\tmovs r0, 0\n"
+ "\tmov r12, r6\n"
+ "\tldr r1, _08119ED0 @ =0x040000d4\n"
+ "\tldr r7, _08119ED4 @ =gUnknown_083FB718\n"
+ "\tldr r2, _08119ED8 @ =0xfffe4000\n"
+ "\tadds r6, r4, r2\n"
+ "\tldr r5, _08119EDC @ =0x80000010\n"
+ "_08119EA0:\n"
+ "\tmovs r3, 0\n"
+ "\tadds r4, r0, 0x1\n"
+ "\tlsls r2, r0, 5\n"
+ "_08119EA6:\n"
+ "\tstr r7, [r1]\n"
+ "\tadds r0, r2, r3\n"
+ "\tlsls r0, 5\n"
+ "\tadds r0, r6\n"
+ "\tstr r0, [r1, 0x4]\n"
+ "\tstr r5, [r1, 0x8]\n"
+ "\tldr r0, [r1, 0x8]\n"
+ "\tadds r0, r3, 0x1\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r3, r0, 24\n"
+ "\tcmp r3, 0x1F\n"
+ "\tbls _08119EA6\n"
+ "\tlsls r0, r4, 24\n"
+ "\tlsrs r0, 24\n"
+ "\tcmp r0, 0x6\n"
+ "\tbls _08119EA0\n"
+ "\tmov r1, r12\n"
+ "\tb _08119F50\n"
+ "\t.align 2, 0\n"
+ "_08119ECC: .4byte gSharedMem + 0x1C000\n"
+ "_08119ED0: .4byte 0x040000d4\n"
+ "_08119ED4: .4byte gUnknown_083FB718\n"
+ "_08119ED8: .4byte 0xfffe4000\n"
+ "_08119EDC: .4byte 0x80000010\n"
+ "_08119EE0:\n"
+ "\tldrb r0, [r5, 0x2]\n"
+ "\tlsls r0, 27\n"
+ "\tlsrs r7, r0, 16\n"
+ "\tldrb r1, [r5, 0x3]\n"
+ "\tlsls r1, 12\n"
+ "\tldrh r0, [r5]\n"
+ "\tlsls r0, 18\n"
+ "\tlsrs r0, 23\n"
+ "\tadds r1, r0\n"
+ "\tlsls r1, 16\n"
+ "\tlsrs r6, r1, 16\n"
+ "\tmovs r0, 0\n"
+ "\tldr r2, _08119F58 @ =gSharedMem + 0x1C000\n"
+ "\tmov r8, r2\n"
+ "\tmovs r1, 0xC0\n"
+ "\tlsls r1, 19\n"
+ "\tmov r12, r1\n"
+ "_08119F02:\n"
+ "\tmovs r3, 0\n"
+ "\tadds r4, r0, 0x1\n"
+ "\tlsls r5, r0, 6\n"
+ "_08119F08:\n"
+ "\tlsls r1, r3, 1\n"
+ "\tadds r1, r5\n"
+ "\tadds r1, r7\n"
+ "\tadd r1, r12\n"
+ "\tadds r2, r6, 0\n"
+ "\tadds r0, r2, 0x1\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r6, r0, 16\n"
+ "\tstrh r2, [r1]\n"
+ "\tadds r0, r3, 0x1\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r3, r0, 24\n"
+ "\tcmp r3, 0x1F\n"
+ "\tbls _08119F08\n"
+ "\tlsls r0, r4, 24\n"
+ "\tlsrs r0, 24\n"
+ "\tcmp r0, 0x6\n"
+ "\tbls _08119F02\n"
+ "\tmov r2, r8\n"
+ "\tldrb r0, [r2, 0x16]\n"
+ "\tmovs r4, 0\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _08119F4E\n"
+ "\tmov r5, r8\n"
+ "_08119F38:\n"
+ "\tadds r0, r4, 0\n"
+ "\tmovs r1, 0\n"
+ "\tbl sub_811A1C8\n"
+ "\tadds r0, r4, 0x1\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r4, r0, 24\n"
+ "\tldrb r0, [r5, 0x16]\n"
+ "\tlsls r0, 3\n"
+ "\tcmp r4, r0\n"
+ "\tblt _08119F38\n"
+ "_08119F4E:\n"
+ "\tldr r1, _08119F5C @ =gUnknown_03005E98\n"
+ "_08119F50:\n"
+ "\tldrb r0, [r1]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrb r0, [r1]\n"
+ "\tb _08119F74\n"
+ "\t.align 2, 0\n"
+ "_08119F58: .4byte gSharedMem + 0x1C000\n"
+ "_08119F5C: .4byte gUnknown_03005E98\n"
+ "_08119F60:\n"
+ "\tbl sub_811A324\n"
+ "\tldr r0, _08119F84 @ =gUnknown_083FB6F8\n"
+ "\tldrb r1, [r5, 0x3]\n"
+ "\tlsls r1, 4\n"
+ "\tmovs r2, 0x20\n"
+ "\tbl LoadPalette\n"
+ "\tmovs r0, 0x1\n"
+ "\tmov r9, r0\n"
+ "_08119F74:\n"
+ "\tmov r0, r9\n"
+ "\tpop {r3,r4}\n"
+ "\tmov r8, r3\n"
+ "\tmov r9, r4\n"
+ "\tpop {r4-r7}\n"
+ "\tpop {r1}\n"
+ "\tbx r1\n"
+ "\t.align 2, 0\n"
+ "_08119F84: .4byte gUnknown_083FB6F8");
+}
+#endif // NONMATCHING
+
+void sub_8119F88(u8 a0)
+{
+ u8 r4;
+ sub_811A324();
+ sub_811A15C(a0);
+ if (gPokedexCryScreenPtr->unk001B)
+ gPokedexCryScreenPtr->unk001B--;
+ if (gPokedexCryScreenPtr->unk001A && !--gPokedexCryScreenPtr->unk001A)
+ {
+ sub_811A0A0(gPokedexCryScreenPtr->species);
+ sub_811A124();
+ return;
+ }
+ if (gPokedexCryScreenPtr->unk0010 == 0)
+ {
+ sub_811A124();
+ return;
+ }
+ if (gPokedexCryScreenPtr->unk0010 == 1)
+ {
+ sub_811A0C0();
+ }
+ else if (gPokedexCryScreenPtr->unk0010 > 8)
+ {
+ if (!IsCryPlaying())
+ {
+ sub_811A124();
+ gPokedexCryScreenPtr->unk0010 = 0;
+ return;
+ }
+ sub_811A0C0();
+ gPokedexCryScreenPtr->unk0010 = 1;
+ }
+ r4 = 2 * (gPokedexCryScreenPtr->unk0010 - 1);
+ sub_811A1C8(gPokedexCryScreenPtr->unk0016 * 8 + gPokedexCryScreenPtr->unk0011 - 2, gPokedexCryScreenPtr->unk0000[r4]);
+ sub_811A1C8(gPokedexCryScreenPtr->unk0016 * 8 + gPokedexCryScreenPtr->unk0011 - 1, gPokedexCryScreenPtr->unk0000[r4 + 1]);
+ gPokedexCryScreenPtr->unk0010++;
+}
+
+void sub_811A050(u16 species)
+{
+ if (gMPlay_BGM.status & MUSICPLAYER_STATUS_PAUSE && !gPokedexCryScreenPtr->unk001A)
+ {
+ if (!gPokedexCryScreenPtr->unk001B)
+ {
+ gPokedexCryScreenPtr->unk001B = 4;
+ if (IsCryPlaying() == TRUE)
+ {
+ StopCry();
+ gPokedexCryScreenPtr->species = species;
+ gPokedexCryScreenPtr->unk001A = 2;
+ }
+ else
+ sub_811A0A0(species);
+ }
+ }
+}
+
+void sub_811A0A0(u16 species)
+{
+ PlayCry2(species, 0, 0x7d, 10);
+ gPokedexCryScreenPtr->unk0010 = 1;
+}
+
+#ifdef NONMATCHING
+void sub_811A0C0(void)
+{
+ const s8 * src;
+ u8 i;
+ if (gPcmDmaCounter < 2)
+ src = gSoundInfo.pcmBuffer;
+ else
+ src = gSoundInfo.pcmBuffer + (gSoundInfo.pcmDmaPeriod + 1 - gPcmDmaCounter) * gSoundInfo.pcmSamplesPerVBlank;
+ src += PCM_DMA_BUF_SIZE;
+ for (i = 0; i < 16; i++)
+ gPokedexCryScreenPtr->unk0000[i] = src[i * 2] * 2;
+}
+#else
+NAKED void sub_811A0C0(void)
+{
+ asm_unified("\tpush {r4,lr}\n"
+ "\tldr r3, _0811A0D0 @ =gPcmDmaCounter\n"
+ "\tmovs r0, 0\n"
+ "\tldrsb r0, [r3, r0]\n"
+ "\tcmp r0, 0x1\n"
+ "\tbgt _0811A0D8\n"
+ "\tldr r0, _0811A0D4 @ =gSoundInfo + 0x350\n"
+ "\tb _0811A0F0\n"
+ "\t.align 2, 0\n"
+ "_0811A0D0: .4byte gPcmDmaCounter\n"
+ "_0811A0D4: .4byte gSoundInfo + 0x350\n"
+ "_0811A0D8:\n"
+ "\tldr r2, _0811A11C @ =gSoundInfo\n"
+ "\tldrb r1, [r2, 0xB]\n"
+ "\tmovs r0, 0\n"
+ "\tldrsb r0, [r3, r0]\n"
+ "\tsubs r0, 0x1\n"
+ "\tsubs r1, r0\n"
+ "\tldr r0, [r2, 0x10]\n"
+ "\tmuls r0, r1\n"
+ "\tmovs r1, 0xD4\n"
+ "\tlsls r1, 2\n"
+ "\tadds r2, r1\n"
+ "\tadds r0, r2\n"
+ "_0811A0F0:\n"
+ "\tmovs r1, 0xC6\n"
+ "\tlsls r1, 3\n"
+ "\tadds r3, r0, r1\n"
+ "\tmovs r2, 0\n"
+ "\tldr r4, _0811A120 @ =gSharedMem + 0x1C000\n"
+ "_0811A0FA:\n"
+ "\tadds r1, r2, r4\n"
+ "\tlsls r0, r2, 1\n"
+ "\tadds r0, r3\n"
+ "\tldrb r0, [r0]\n"
+ "\tlsls r0, 24\n"
+ "\tasrs r0, 24\n"
+ "\tlsls r0, 1\n"
+ "\tstrb r0, [r1]\n"
+ "\tadds r0, r2, 0x1\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r2, r0, 24\n"
+ "\tcmp r2, 0xF\n"
+ "\tbls _0811A0FA\n"
+ "\tpop {r4}\n"
+ "\tpop {r0}\n"
+ "\tbx r0\n"
+ "\t.align 2, 0\n"
+ "_0811A11C: .4byte gSoundInfo\n"
+ "_0811A120: .4byte gSharedMem + 0x1C000");
+}
+#endif // NONMATCHING
+
+void sub_811A124(void)
+{
+ sub_811A1C8(gPokedexCryScreenPtr->unk0016 * 8 + gPokedexCryScreenPtr->unk0011 - 2, 0);
+ sub_811A1C8(gPokedexCryScreenPtr->unk0016 * 8 + gPokedexCryScreenPtr->unk0011 - 1, 0);
+}
+
+void sub_811A15C(u8 a0)
+{
+ u8 i;
+ u16 r3;
+ sub_811A350(a0, gPokedexCryScreenPtr->unk0011, 0);
+ gPokedexCryScreenPtr->unk0011 += 2;
+ r3 = (gPokedexCryScreenPtr->unk0011 / 8 + gPokedexCryScreenPtr->unk0016 + 1) % 32;
+ for (i = 0; i < 7; i++)
+ {
+ DmaCopy16(3, gUnknown_083FB718, &gSharedMem[32 * (32 * i + r3)], 32);
+ }
+}
+
+#ifdef NONMATCHING
+void sub_811A1C8(u8 a0, u8 a1)
+{
+ u8 sp0;
+ u8 r7;
+ u8 r8;
+ u16 r1 = (a1 + 127) << 8;
+ u8 i = r1 / 1152.0;
+ if (i > 71 - 16)
+ i = 71 - 16;
+ sp0 = i;
+ r7 = a0 % 2;
+ r8 = a0 / 8;
+ if (i > gPokedexCryScreenPtr->unk0012)
+ {
+ do
+ {
+ gSharedMem[(u16)(r8 * 32 + gUnknown_083FB274[a0 % 8][i])] &= gUnknown_083FB738[r7];
+ gSharedMem[(u16)(r8 * 32 + gUnknown_083FB274[a0 % 8][i])] |= gUnknown_083FB73A[r7][((i / 3) - 1) & 0x0F];
+ i--;
+ } while (i > gPokedexCryScreenPtr->unk0012);
+ }
+ else
+ {
+ do
+ {
+ gSharedMem[(u16)(r8 * 32 + gUnknown_083FB274[a0 % 8][i])] &= gUnknown_083FB738[r7];
+ gSharedMem[(u16)(r8 * 32 + gUnknown_083FB274[a0 % 8][i])] |= gUnknown_083FB73A[r7][((i / 3) - 1) & 0x0F];
+ i++;
+ } while (i < gPokedexCryScreenPtr->unk0012);
+ }
+ gPokedexCryScreenPtr->unk0012 = sp0;
+}
+#else
+NAKED void sub_811A1C8(u8 a0, u8 a1)
+{
+ asm_unified("\tpush {r4-r7,lr}\n"
+ "\tmov r7, r10\n"
+ "\tmov r6, r9\n"
+ "\tmov r5, r8\n"
+ "\tpush {r5-r7}\n"
+ "\tsub sp, 0xC\n"
+ "\tlsls r5, r0, 24\n"
+ "\tlsrs r4, r5, 24\n"
+ "\tlsls r1, 24\n"
+ "\tmovs r0, 0xFE\n"
+ "\tlsls r0, 23\n"
+ "\tadds r1, r0\n"
+ "\tlsrs r1, 16\n"
+ "\tadds r0, r1, 0\n"
+ "\tbl __floatsidf\n"
+ "\tldr r3, _0811A280 @ =0x00000000\n"
+ "\tldr r2, _0811A27C @ =0x40920000\n"
+ "\tbl __divdf3\n"
+ "\tbl __fixunsdfsi\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r6, r0, 24\n"
+ "\tcmp r6, 0x37\n"
+ "\tbls _0811A1FE\n"
+ "\tmovs r6, 0x37\n"
+ "_0811A1FE:\n"
+ "\tstr r6, [sp]\n"
+ "\tmovs r7, 0x1\n"
+ "\tands r7, r4\n"
+ "\tldr r0, _0811A284 @ =gSharedMem + 0x1C000\n"
+ "\tmov r10, r0\n"
+ "\tlsrs r5, 27\n"
+ "\tmov r8, r5\n"
+ "\tldr r0, _0811A288 @ =gUnknown_083FB738\n"
+ "\tmov r1, r10\n"
+ "\tldrb r1, [r1, 0x12]\n"
+ "\tcmp r6, r1\n"
+ "\tbls _0811A298\n"
+ "\tadds r0, r7, r0\n"
+ "\tldrb r0, [r0]\n"
+ "\tmov r9, r0\n"
+ "\tmovs r2, 0x7\n"
+ "\tands r2, r4\n"
+ "_0811A220:\n"
+ "\tlsls r1, r6, 1\n"
+ "\tlsls r0, r2, 3\n"
+ "\tadds r0, r2\n"
+ "\tlsls r0, 4\n"
+ "\tadds r1, r0\n"
+ "\tldr r3, _0811A28C @ =gUnknown_083FB274\n"
+ "\tadds r1, r3\n"
+ "\tmov r3, r8\n"
+ "\tlsls r0, r3, 5\n"
+ "\tldrh r1, [r1]\n"
+ "\tadds r0, r1\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tldr r1, _0811A290 @ =gSharedMem\n"
+ "\tadds r5, r0, r1\n"
+ "\tldrb r4, [r5]\n"
+ "\tmov r3, r9\n"
+ "\tands r4, r3\n"
+ "\tstrb r4, [r5]\n"
+ "\tadds r0, r6, 0\n"
+ "\tmovs r1, 0x3\n"
+ "\tstr r2, [sp, 0x8]\n"
+ "\tbl __udivsi3\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r0, 24\n"
+ "\tsubs r0, 0x1\n"
+ "\tmovs r1, 0xF\n"
+ "\tands r0, r1\n"
+ "\tlsls r1, r7, 4\n"
+ "\tadds r0, r1\n"
+ "\tldr r1, _0811A294 @ =gUnknown_083FB73A\n"
+ "\tadds r0, r1\n"
+ "\tldrb r0, [r0]\n"
+ "\torrs r4, r0\n"
+ "\tstrb r4, [r5]\n"
+ "\tsubs r0, r6, 0x1\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r6, r0, 24\n"
+ "\tldr r2, [sp, 0x8]\n"
+ "\tldr r3, _0811A284 @ =gSharedMem + 0x1C000\n"
+ "\tldrb r3, [r3, 0x12]\n"
+ "\tcmp r6, r3\n"
+ "\tbhi _0811A220\n"
+ "\tb _0811A2FA\n"
+ "\t.align 2, 0\n"
+ "_0811A27C: .4byte 0x40920000\n"
+ "_0811A280: .4byte 0x00000000\n"
+ "_0811A284: .4byte gSharedMem + 0x1C000\n"
+ "_0811A288: .4byte gUnknown_083FB738\n"
+ "_0811A28C: .4byte gUnknown_083FB274\n"
+ "_0811A290: .4byte gSharedMem\n"
+ "_0811A294: .4byte gUnknown_083FB73A\n"
+ "_0811A298:\n"
+ "\tlsls r1, r7, 4\n"
+ "\tstr r1, [sp, 0x4]\n"
+ "\tadds r0, r7, r0\n"
+ "\tldrb r0, [r0]\n"
+ "\tmov r9, r0\n"
+ "\tmovs r7, 0x7\n"
+ "\tands r7, r4\n"
+ "_0811A2A6:\n"
+ "\tlsls r1, r6, 1\n"
+ "\tlsls r0, r7, 3\n"
+ "\tadds r0, r7\n"
+ "\tlsls r0, 4\n"
+ "\tadds r1, r0\n"
+ "\tldr r2, _0811A314 @ =gUnknown_083FB274\n"
+ "\tadds r1, r2\n"
+ "\tmov r3, r8\n"
+ "\tlsls r0, r3, 5\n"
+ "\tldrh r1, [r1]\n"
+ "\tadds r0, r1\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tldr r1, _0811A318 @ =gSharedMem\n"
+ "\tadds r5, r0, r1\n"
+ "\tldrb r4, [r5]\n"
+ "\tmov r2, r9\n"
+ "\tands r4, r2\n"
+ "\tstrb r4, [r5]\n"
+ "\tadds r0, r6, 0\n"
+ "\tmovs r1, 0x3\n"
+ "\tbl __udivsi3\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r0, 24\n"
+ "\tsubs r0, 0x1\n"
+ "\tmovs r1, 0xF\n"
+ "\tands r0, r1\n"
+ "\tldr r3, [sp, 0x4]\n"
+ "\tadds r0, r3\n"
+ "\tldr r1, _0811A31C @ =gUnknown_083FB73A\n"
+ "\tadds r0, r1\n"
+ "\tldrb r0, [r0]\n"
+ "\torrs r4, r0\n"
+ "\tstrb r4, [r5]\n"
+ "\tadds r0, r6, 0x1\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r6, r0, 24\n"
+ "\tldr r2, _0811A320 @ =gSharedMem + 0x1C000\n"
+ "\tldrb r2, [r2, 0x12]\n"
+ "\tcmp r6, r2\n"
+ "\tbcc _0811A2A6\n"
+ "_0811A2FA:\n"
+ "\tmov r3, sp\n"
+ "\tldrb r0, [r3]\n"
+ "\tmov r3, r10\n"
+ "\tstrb r0, [r3, 0x12]\n"
+ "\tadd sp, 0xC\n"
+ "\tpop {r3-r5}\n"
+ "\tmov r8, r3\n"
+ "\tmov r9, r4\n"
+ "\tmov r10, r5\n"
+ "\tpop {r4-r7}\n"
+ "\tpop {r0}\n"
+ "\tbx r0\n"
+ "\t.align 2, 0\n"
+ "_0811A314: .4byte gUnknown_083FB274\n"
+ "_0811A318: .4byte gSharedMem\n"
+ "_0811A31C: .4byte gUnknown_083FB73A\n"
+ "_0811A320: .4byte gSharedMem + 0x1C000");
+}
+#endif // NONMATCHING
+
+void sub_811A324(void)
+{
+ DmaCopy16(3, gSharedMem, VRAM + gPokedexCryScreenPtr->unk0014, 0x1c00);
+}
+
+void sub_811A350(u8 a0, u16 a1, u8 a2)
+{
+ switch (a0)
+ {
+ case 0:
+ if (a2)
+ REG_BG0VOFS = a1;
+ else
+ REG_BG0HOFS = a1;
+ break;
+ case 1:
+ if (a2)
+ REG_BG1VOFS = a1;
+ else
+ REG_BG1HOFS = a1;
+ break;
+ case 2:
+ if (a2)
+ REG_BG2VOFS = a1;
+ else
+ REG_BG2HOFS = a1;
+ break;
+ case 3:
+ if (a2)
+ REG_BG3VOFS = a1;
+ else
+ REG_BG3HOFS = a1;
+ break;
+ }
+}
+
u8 ShowPokedexCryScreen(struct CryRelatedStruct *cry, u8 arg1) {
int returnVal = FALSE;
@@ -68,10 +862,10 @@ u8 ShowPokedexCryScreen(struct CryRelatedStruct *cry, u8 arg1) {
{
LoadSpriteSheets(gCryMeterNeedleSpriteSheets);
LoadSpritePalettes(gCryMeterNeedleSpritePalettes);
- EWRAM_1C800.unk_4 = CreateSprite(&gSpriteTemplate_83FB774, 40 + cry->xPos * 8, 56 + cry->yPos * 8, 1);
- EWRAM_1C800.unk_0 = 0x20;
- EWRAM_1C800.unk_1 = 0x20;
- EWRAM_1C800.unk_2 = 0;
+ gPokedexCryScreenPtr2->unk_4 = CreateSprite(&gSpriteTemplate_83FB774, 40 + cry->xPos * 8, 56 + cry->yPos * 8, 1);
+ gPokedexCryScreenPtr2->unk_0 = 0x20;
+ gPokedexCryScreenPtr2->unk_1 = 0x20;
+ gPokedexCryScreenPtr2->unk_2 = 0;
returnVal = TRUE;
break;
@@ -80,3 +874,85 @@ u8 ShowPokedexCryScreen(struct CryRelatedStruct *cry, u8 arg1) {
return returnVal;
}
+
+void DestroyCryMeterNeedleSprite(void)
+{
+ FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(gSprites[gPokedexCryScreenPtr2->unk_4].oam.paletteNum));
+ DestroySprite(gSprites + gPokedexCryScreenPtr2->unk_4);
+}
+
+void sub_811A534(struct Sprite * sprite)
+{
+ u16 i;
+ s8 r3;
+ s16 x;
+ s16 y;
+ struct ObjAffineSrcData sp04;
+ struct OamMatrix sp0c;
+ u8 * r0;
+
+ gSprites[gPokedexCryScreenPtr2->unk_4].oam.affineMode = ST_OAM_AFFINE_NORMAL;
+ gSprites[gPokedexCryScreenPtr2->unk_4].oam.affineParam = 0;
+ switch (gPokedexCryScreenPtr->unk0010)
+ {
+ case 0:
+ gPokedexCryScreenPtr2->unk_1 = 0x20;
+ if (gPokedexCryScreenPtr2->unk_0 > 0)
+ {
+ if (gPokedexCryScreenPtr2->unk_2 != 1)
+ gPokedexCryScreenPtr2->unk_2--;
+ }
+ else
+ gPokedexCryScreenPtr2->unk_2 = 5;
+ break;
+ case 2:
+ r3 = 0;
+ for (i = 0; i < 16; i++)
+ {
+ if (r3 < gPokedexCryScreenPtr->unk0000[i])
+ r3 = gPokedexCryScreenPtr->unk0000[i];
+ }
+ sub_811A6D8(r3 * 0xd0 / 0x100);
+ break;
+ case 6:
+ r0 = &gPokedexCryScreenPtr->unk0000[10];
+ sub_811A6D8(*r0 * 0xd0 / 0x100);
+ break;
+ }
+ if (gPokedexCryScreenPtr2->unk_0 == gPokedexCryScreenPtr2->unk_1)
+ ;
+ else if (gPokedexCryScreenPtr2->unk_0 < gPokedexCryScreenPtr2->unk_1)
+ {
+ if ((gPokedexCryScreenPtr2->unk_0 += gPokedexCryScreenPtr2->unk_2) > gPokedexCryScreenPtr2->unk_1)
+ {
+ gPokedexCryScreenPtr2->unk_0 = gPokedexCryScreenPtr2->unk_1;
+ gPokedexCryScreenPtr2->unk_1 = 0;
+ }
+ }
+ else
+ {
+ if ((gPokedexCryScreenPtr2->unk_0 -= gPokedexCryScreenPtr2->unk_2) < gPokedexCryScreenPtr2->unk_1)
+ {
+ gPokedexCryScreenPtr2->unk_0 = gPokedexCryScreenPtr2->unk_1;
+ gPokedexCryScreenPtr2->unk_1 = 0;
+ }
+ }
+ sp04.xScale = 0x100;
+ sp04.yScale = 0x100;
+ sp04.rotation = gPokedexCryScreenPtr2->unk_0 * 256;
+ ObjAffineSet(&sp04, &sp0c, 1, 2);
+ SetOamMatrix(0, sp0c.a, sp0c.b, sp0c.c, sp0c.d);
+ x = gSineTable[((gPokedexCryScreenPtr2->unk_0 + 0x7F) & 0xFF)];
+ y = gSineTable[((gPokedexCryScreenPtr2->unk_0 + 0x7F) & 0xFF) + 0x40];
+ sprite->pos2.x = x * 24 / 256;
+ sprite->pos2.y = y * 24 / 256;
+}
+
+void sub_811A6D8(s8 a0)
+{
+ u16 r2 = (0x20 - a0) & 0xff;
+ if (r2 > 0x20 && r2 < 0xe0)
+ r2 = 0xe0;
+ gPokedexCryScreenPtr2->unk_1 = r2;
+ gPokedexCryScreenPtr2->unk_2 = 5;
+}
diff --git a/src/pokemon_1.c b/src/pokemon_1.c
index a23bb3324..0622ec614 100644
--- a/src/pokemon_1.c
+++ b/src/pokemon_1.c
@@ -525,7 +525,7 @@ void CalculateMonStats(struct Pokemon *mon)
}
#if DEBUG
-void debug_sub_803F55C(struct Pokemon *mon)
+void Nakamura_NakaGenderTest_RecalcStats(struct Pokemon *mon)
{
s32 currentHP = GetMonData(mon, MON_DATA_HP, NULL);
s32 hpIV = GetMonData(mon, MON_DATA_HP_IV, NULL);
diff --git a/src/pokemon_2.c b/src/pokemon_2.c
index 7fd1aa7b2..9c60ea108 100644
--- a/src/pokemon_2.c
+++ b/src/pokemon_2.c
@@ -22,13 +22,13 @@ extern u8 gPlayerPartyCount;
extern u8 gEnemyPartyCount;
extern u16 gBattleTypeFlags;
-extern u8 gActiveBank;
+extern u8 gActiveBattler;
extern struct BattlePokemon gBattleMons[4];
extern u16 gCurrentMove;
extern u8 gLastUsedAbility;
extern u8 gBankAttacker;
extern u8 gBankTarget;
-extern u8 gAbsentBankFlags;
+extern u8 gAbsentBattlerFlags;
extern u8 gXXX_CritRelated;
extern u16 gBattleWeather;
extern struct BattleEnigmaBerry gEnigmaBerries[];
@@ -60,21 +60,21 @@ u8 CountAliveMons(u8 a1)
case 0:
for (i = 0; i < 4; i++)
{
- if (i != gActiveBank && !(gAbsentBankFlags & gBitTable[i]))
+ if (i != gActiveBattler && !(gAbsentBattlerFlags & gBitTable[i]))
retVal++;
}
break;
case 1:
for (i = 0; i < 4; i++)
{
- if (GetBankSide(i) == GetBankSide(gBankAttacker) && !(gAbsentBankFlags & gBitTable[i]))
+ if (GetBattlerSide(i) == GetBattlerSide(gBankAttacker) && !(gAbsentBattlerFlags & gBitTable[i]))
retVal++;
}
break;
case 2:
for (i = 0; i < 4; i++)
{
- if (GetBankSide(i) == GetBankSide(gBankTarget) && !(gAbsentBankFlags & gBitTable[i]))
+ if (GetBattlerSide(i) == GetBattlerSide(gBankTarget) && !(gAbsentBattlerFlags & gBitTable[i]))
retVal++;
}
break;
@@ -85,11 +85,11 @@ u8 CountAliveMons(u8 a1)
u8 sub_803C434(u8 a1)
{
- u8 status = GetBankIdentity(a1) & 1;
+ u8 status = GetBattlerPosition(a1) & 1;
status ^= 1;
if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
- return GetBankByIdentity(status);
+ return GetBattlerAtPosition(status);
if (CountAliveMons(0) > 1)
{
u8 val;
@@ -98,14 +98,14 @@ u8 sub_803C434(u8 a1)
val = status ^ 2;
else
val = status;
- return GetBankByIdentity(val);
+ return GetBattlerAtPosition(val);
}
else
{
- if ((gAbsentBankFlags & gBitTable[status]))
- return GetBankByIdentity(status ^ 2);
+ if ((gAbsentBattlerFlags & gBitTable[status]))
+ return GetBattlerAtPosition(status ^ 2);
else
- return GetBankByIdentity(status);
+ return GetBattlerAtPosition(status);
}
}
@@ -1102,8 +1102,8 @@ void CreateSecretBaseEnemyParty(struct SecretBaseRecord *secretBaseRecord)
}
}
- gBattleTypeFlags = 8;
- gTrainerBattleOpponent = 1024;
+ gBattleTypeFlags = BATTLE_TYPE_TRAINER;
+ gTrainerBattleOpponent = SECRET_BASE_OPPONENT;
}
const u8 gSecretBaseTrainerClasses[][5] = {
@@ -1226,7 +1226,7 @@ void CopyPlayerPartyMonToBattleData(u8 battleIndex, u8 partyIndex)
GetMonData(&gPlayerParty[partyIndex], MON_DATA_NICKNAME, nickname);
StringCopy10(gBattleMons[battleIndex].nickname, nickname);
GetMonData(&gPlayerParty[partyIndex], MON_DATA_OT_NAME, gBattleMons[battleIndex].otName);
- ewram160BC[GetBankSide(battleIndex)] = gBattleMons[battleIndex].hp;
+ ewram160BC[GetBattlerSide(battleIndex)] = gBattleMons[battleIndex].hp;
for (i = 0; i < 8; i++)
gBattleMons[battleIndex].statStages[i] = 6;
diff --git a/src/pokemon_3.c b/src/pokemon_3.c
index 9346031a6..30e9503cd 100644
--- a/src/pokemon_3.c
+++ b/src/pokemon_3.c
@@ -10,6 +10,7 @@
#include "link.h"
#include "m4a.h"
#include "main.h"
+#include "move_tutor_menu.h"
#include "pokemon.h"
#include "random.h"
#include "overworld.h"
@@ -22,13 +23,14 @@
#include "sprite.h"
#include "string_util.h"
#include "text.h"
+#include "trainer.h"
#include "util.h"
#include "ewram.h"
extern u8 gPlayerPartyCount;
extern u8 gEnemyPartyCount;
extern struct BattlePokemon gBattleMons[4];
-extern u8 gActiveBank;
+extern u8 gActiveBattler;
extern struct BattleEnigmaBerry gEnigmaBerries[];
extern u16 gSpeciesToHoennPokedexNum[];
extern u16 gSpeciesToNationalPokedexNum[];
@@ -51,7 +53,7 @@ extern const u8 BattleText_Wally[];
extern s8 gPokeblockFlavorCompatibilityTable[];
extern u8 gLastUsedAbility;
extern const u8 BattleText_PreventedSwitch[];
-extern u16 gBattlePartyID[];
+extern u16 gBattlerPartyIndexes[];
extern u8 BattleText_Rose[];
extern u8 BattleText_UnknownString3[];
@@ -95,7 +97,7 @@ u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit)
if (itemId == ITEM_ENIGMA_BERRY)
{
- temp = gEnigmaBerries[gActiveBank].itemEffect;
+ temp = gEnigmaBerries[gActiveBattler].itemEffect;
}
itemEffect = temp;
@@ -459,13 +461,13 @@ u16 HoennToNationalOrder(u16 hoennNum)
u16 SpeciesToCryId(u16 species)
{
- if (species <= 250)
+ if (species < SPECIES_OLD_UNOWN_B - 1)
return species;
- if (species < 276)
- return 200;
+ if (species <= SPECIES_OLD_UNOWN_Z - 1)
+ return SPECIES_UNOWN - 1;
- return gSpeciesIdToCryId[species - 276];
+ return gSpeciesIdToCryId[species - ((SPECIES_OLD_UNOWN_Z + 1) - 1)];
}
void unref_sub_803F938(u16 species, u32 personality, u8 *dest)
@@ -643,18 +645,19 @@ u16 nature_stat_mod(u8 nature, u16 n, u8 statIndex)
return n;
}
-const s8 gUnknown_082082FE[][3] =
-{
- // Happiness deltas
- { 5, 3, 2},
- { 5, 3, 2},
- { 1, 1, 0},
- { 3, 2, 1},
- { 1, 1, 0},
- { 1, 1, 1},
- {-1, -1, -1},
- {-5, -5, -10},
- {-5, -5, -10}
+// Friendship deltas. Each event has 3 separate values, depending on the mon's
+// current friendship value. In general, a mon's friendship grows faster if
+// its current friendship is lower. The 3 tiers are 0-99, 100-199, and 200-255.
+static const s8 sFriendshipEventDeltas[][3] = {
+ { 5, 3, 2}, // FRIENDSHIP_EVENT_GROW_LEVEL
+ { 5, 3, 2}, // FRIENDSHIP_EVENT_VITAMIN
+ { 1, 1, 0}, // FRIENDSHIP_EVENT_BATTLE_ITEM
+ { 3, 2, 1}, // FRIENDSHIP_EVENT_LEAGUE_BATTLE
+ { 1, 1, 0}, // FRIENDSHIP_EVENT_LEARN_TMHM
+ { 1, 1, 1}, // FRIENDSHIP_EVENT_WALKING
+ {-1, -1, -1}, // FRIENDSHIP_EVENT_FAINT_SMALL
+ {-5, -5, -10}, // FRIENDSHIP_EVENT_FAINT_OUTSIDE_BATTLE
+ {-5, -5, -10}, // FRIENDSHIP_EVENT_FAINT_LARGE
};
void AdjustFriendship(struct Pokemon *mon, u8 event)
@@ -683,28 +686,32 @@ void AdjustFriendship(struct Pokemon *mon, u8 event)
friendshipLevel++;
if (friendship > 199)
friendshipLevel++;
- if ((event != 5 || !(Random() & 1))
- && (event != 3
+
+ if ((event != FRIENDSHIP_EVENT_WALKING || !(Random() & 1))
+ && (event != FRIENDSHIP_EVENT_LEAGUE_BATTLE
|| ((gBattleTypeFlags & BATTLE_TYPE_TRAINER)
- && (gTrainers[gTrainerBattleOpponent].trainerClass == 24
- || gTrainers[gTrainerBattleOpponent].trainerClass == 25
- || gTrainers[gTrainerBattleOpponent].trainerClass == 32))))
+ && (gTrainers[gTrainerBattleOpponent].trainerClass == TRAINER_CLASS_ELITE_FOUR
+ || gTrainers[gTrainerBattleOpponent].trainerClass == TRAINER_CLASS_LEADER
+ || gTrainers[gTrainerBattleOpponent].trainerClass == TRAINER_CLASS_CHAMPION))))
{
- s8 mod = gUnknown_082082FE[event][friendshipLevel];
- if (mod > 0 && holdEffect == HOLD_EFFECT_HAPPINESS_UP)
- mod = (150 * mod) / 100;
- friendship += mod;
- if (mod > 0)
+ s8 delta = sFriendshipEventDeltas[event][friendshipLevel];
+ if (delta > 0 && holdEffect == HOLD_EFFECT_HAPPINESS_UP)
+ delta = (150 * delta) / 100;
+
+ friendship += delta;
+ if (delta > 0)
{
if (GetMonData(mon, MON_DATA_POKEBALL, 0) == ITEM_LUXURY_BALL)
friendship++;
if (GetMonData(mon, MON_DATA_MET_LOCATION, 0) == sav1_map_get_name())
friendship++;
}
+
if (friendship < 0)
friendship = 0;
if (friendship > 255)
friendship = 255;
+
SetMonData(mon, MON_DATA_FRIENDSHIP, &friendship);
}
}
@@ -987,18 +994,18 @@ u32 CanMonLearnTMHM(struct Pokemon *mon, u8 tm)
}
}
-u8 GetMoveRelearnerMoves(struct Pokemon *mon, u16 *moves)
+u8 GetMoveTutorMoves(struct Pokemon *mon, u16 *moves)
{
- u16 learnedMoves[4];
+ u16 knownMoves[4];
u8 numMoves = 0;
u16 species = GetMonData(mon, MON_DATA_SPECIES, 0);
u8 level = GetMonData(mon, MON_DATA_LEVEL, 0);
int i, j, k;
for (i = 0; i < 4; i++)
- learnedMoves[i] = GetMonData(mon, MON_DATA_MOVE1 + i, 0);
+ knownMoves[i] = GetMonData(mon, MON_DATA_MOVE1 + i, 0);
- for (i = 0; i < 20; i++)
+ for (i = 0; i < MAX_MOVE_TUTOR_MOVES; i++)
{
u16 moveLevel;
@@ -1006,10 +1013,9 @@ u8 GetMoveRelearnerMoves(struct Pokemon *mon, u16 *moves)
break;
moveLevel = gLevelUpLearnsets[species][i] & 0xFE00;
-
if (moveLevel <= (level << 9))
{
- for (j = 0; j < 4 && learnedMoves[j] != (gLevelUpLearnsets[species][i] & 0x1FF); j++)
+ for (j = 0; j < 4 && knownMoves[j] != (gLevelUpLearnsets[species][i] & 0x1FF); j++)
;
if (j == 4)
@@ -1102,48 +1108,48 @@ void ClearBattleMonForms(void)
gBattleMonForms[i] = 0;
}
-u16 GetBGM_ForBattle(void)
+u16 GetMUS_ForBattle(void)
{
if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON)
- return BGM_BATTLE34;
+ return MUS_BATTLE34;
if (gBattleTypeFlags & BATTLE_TYPE_REGI)
- return BGM_BATTLE36;
+ return MUS_BATTLE36;
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
- return BGM_BATTLE20;
+ return MUS_BATTLE20;
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
{
switch (gTrainers[gTrainerBattleOpponent].trainerClass)
{
case 2:
case 0x31:
- return BGM_BATTLE30;
+ return MUS_BATTLE30;
case 3:
case 4:
case 0x32:
case 0x33:
- return BGM_BATTLE31;
+ return MUS_BATTLE31;
case 0x19:
- return BGM_BATTLE32;
+ return MUS_BATTLE32;
case 0x20:
- return BGM_BATTLE33;
+ return MUS_BATTLE33;
case 0x2E:
if (!StringCompare(gTrainers[gTrainerBattleOpponent].trainerName, BattleText_Wally))
- return BGM_BATTLE20;
- return BGM_BATTLE35;
+ return MUS_BATTLE20;
+ return MUS_BATTLE35;
case 0x18:
- return BGM_BATTLE38;
+ return MUS_BATTLE38;
default:
- return BGM_BATTLE20;
+ return MUS_BATTLE20;
}
}
- return BGM_BATTLE27;
+ return MUS_BATTLE27;
}
void sub_80408BC(void)
{
ResetMapMusic();
m4aMPlayAllStop();
- PlayBGM(GetBGM_ForBattle());
+ PlayBGM(GetMUS_ForBattle());
}
void current_map_music_set__default_for_battle(u16 song)
@@ -1153,7 +1159,7 @@ void current_map_music_set__default_for_battle(u16 song)
if (song)
PlayNewMapMusic(song);
else
- PlayNewMapMusic(GetBGM_ForBattle());
+ PlayNewMapMusic(GetMUS_ForBattle());
}
const u8 *GetMonSpritePal(struct Pokemon *mon)
@@ -1298,14 +1304,14 @@ void sub_8040B8C(void)
gBattleTextBuff1[1] = 4;
gBattleTextBuff1[2] = gBattleStruct->unk16054;
gBattleTextBuff1[4] = EOS;
- if (!GetBankSide(gBattleStruct->unk16054))
- gBattleTextBuff1[3] = pokemon_order_func(gBattlePartyID[gBattleStruct->unk16054]);
+ if (!GetBattlerSide(gBattleStruct->unk16054))
+ gBattleTextBuff1[3] = pokemon_order_func(gBattlerPartyIndexes[gBattleStruct->unk16054]);
else
- gBattleTextBuff1[3] = gBattlePartyID[gBattleStruct->unk16054];
+ gBattleTextBuff1[3] = gBattlerPartyIndexes[gBattleStruct->unk16054];
gBattleTextBuff2[0] = 0xFD;
gBattleTextBuff2[1] = 4;
gBattleTextBuff2[2] = gBankInMenu;
- gBattleTextBuff2[3] = pokemon_order_func(gBattlePartyID[gBankInMenu]);
+ gBattleTextBuff2[3] = pokemon_order_func(gBattlerPartyIndexes[gBankInMenu]);
gBattleTextBuff2[4] = EOS;
StrCpyDecodeBattle(BattleText_PreventedSwitch, gStringVar4);
}
diff --git a/src/pokemon_item_effect.c b/src/pokemon_item_effect.c
index 4ebece3b3..d26546f02 100644
--- a/src/pokemon_item_effect.c
+++ b/src/pokemon_item_effect.c
@@ -16,11 +16,11 @@
#include "util.h"
extern s32 gBattleMoveDamage;
-extern u8 gAbsentBankFlags;
+extern u8 gAbsentBattlerFlags;
extern u8 gBankInMenu;
-extern u8 gNoOfAllBanks;
-extern u16 gBattlePartyID[];
-extern u8 gActiveBank;
+extern u8 gBattlersCount;
+extern u16 gBattlerPartyIndexes[];
+extern u8 gActiveBattler;
extern u8 gStringBank;
extern struct BattlePokemon gBattleMons[];
extern struct BattleEnigmaBerry gEnigmaBerries[];
@@ -78,11 +78,11 @@ bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 mo
gStringBank = gBankInMenu;
if (gMain.inBattle)
{
- gActiveBank = gBankInMenu;
- cmdIndex = (GetBankSide(gActiveBank) != 0);
- while (cmdIndex < gNoOfAllBanks)
+ gActiveBattler = gBankInMenu;
+ cmdIndex = (GetBattlerSide(gActiveBattler) != 0);
+ while (cmdIndex < gBattlersCount)
{
- if (gBattlePartyID[cmdIndex] == partyIndex)
+ if (gBattlerPartyIndexes[cmdIndex] == partyIndex)
{
sp34 = cmdIndex;
break;
@@ -92,7 +92,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 mo
}
else
{
- gActiveBank = 0;
+ gActiveBattler = 0;
sp34 = 4;
}
@@ -104,7 +104,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 mo
if (item == ITEM_ENIGMA_BERRY)
{
if (gMain.inBattle)
- itemEffect = gEnigmaBerries[gActiveBank].itemEffect;
+ itemEffect = gEnigmaBerries[gActiveBattler].itemEffect;
else
itemEffect = gSaveBlock1.enigmaBerry.itemEffect;
}
@@ -126,63 +126,63 @@ bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 mo
retVal = FALSE;
}
if ((itemEffect[cmdIndex] & 0x30)
- && !(gBattleMons[gActiveBank].status2 & STATUS2_FOCUS_ENERGY))
+ && !(gBattleMons[gActiveBattler].status2 & STATUS2_FOCUS_ENERGY))
{
- gBattleMons[gActiveBank].status2 |= STATUS2_FOCUS_ENERGY;
+ gBattleMons[gActiveBattler].status2 |= STATUS2_FOCUS_ENERGY;
retVal = FALSE;
}
if ((itemEffect[cmdIndex] & 0xF)
- && gBattleMons[gActiveBank].statStages[STAT_STAGE_ATK] < 12)
+ && gBattleMons[gActiveBattler].statStages[STAT_STAGE_ATK] < 12)
{
- gBattleMons[gActiveBank].statStages[STAT_STAGE_ATK] += itemEffect[cmdIndex] & 0xF;
- if (gBattleMons[gActiveBank].statStages[STAT_STAGE_ATK] > 12)
- gBattleMons[gActiveBank].statStages[STAT_STAGE_ATK] = 12;
+ gBattleMons[gActiveBattler].statStages[STAT_STAGE_ATK] += itemEffect[cmdIndex] & 0xF;
+ if (gBattleMons[gActiveBattler].statStages[STAT_STAGE_ATK] > 12)
+ gBattleMons[gActiveBattler].statStages[STAT_STAGE_ATK] = 12;
retVal = FALSE;
}
break;
// in-battle stat boosting effects?
case 1:
if ((itemEffect[cmdIndex] & 0xF0)
- && gBattleMons[gActiveBank].statStages[STAT_STAGE_DEF] < 12)
+ && gBattleMons[gActiveBattler].statStages[STAT_STAGE_DEF] < 12)
{
- gBattleMons[gActiveBank].statStages[STAT_STAGE_DEF] += (itemEffect[cmdIndex] & 0xF0) >> 4;
- if (gBattleMons[gActiveBank].statStages[STAT_STAGE_DEF] > 12)
- gBattleMons[gActiveBank].statStages[STAT_STAGE_DEF] = 12;
+ gBattleMons[gActiveBattler].statStages[STAT_STAGE_DEF] += (itemEffect[cmdIndex] & 0xF0) >> 4;
+ if (gBattleMons[gActiveBattler].statStages[STAT_STAGE_DEF] > 12)
+ gBattleMons[gActiveBattler].statStages[STAT_STAGE_DEF] = 12;
retVal = FALSE;
}
if ((itemEffect[cmdIndex] & 0xF)
- && gBattleMons[gActiveBank].statStages[STAT_STAGE_SPEED] < 12)
+ && gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPEED] < 12)
{
- gBattleMons[gActiveBank].statStages[STAT_STAGE_SPEED] += itemEffect[cmdIndex] & 0xF;
- if (gBattleMons[gActiveBank].statStages[STAT_STAGE_SPEED] > 12)
- gBattleMons[gActiveBank].statStages[STAT_STAGE_SPEED] = 12;
+ gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPEED] += itemEffect[cmdIndex] & 0xF;
+ if (gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPEED] > 12)
+ gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPEED] = 12;
retVal = FALSE;
}
break;
// more stat boosting effects?
case 2:
if ((itemEffect[cmdIndex] & 0xF0)
- && gBattleMons[gActiveBank].statStages[STAT_STAGE_ACC] < 12)
+ && gBattleMons[gActiveBattler].statStages[STAT_STAGE_ACC] < 12)
{
- gBattleMons[gActiveBank].statStages[STAT_STAGE_ACC] += (itemEffect[cmdIndex] & 0xF0) >> 4;
- if (gBattleMons[gActiveBank].statStages[STAT_STAGE_ACC] > 12)
- gBattleMons[gActiveBank].statStages[STAT_STAGE_ACC] = 12;
+ gBattleMons[gActiveBattler].statStages[STAT_STAGE_ACC] += (itemEffect[cmdIndex] & 0xF0) >> 4;
+ if (gBattleMons[gActiveBattler].statStages[STAT_STAGE_ACC] > 12)
+ gBattleMons[gActiveBattler].statStages[STAT_STAGE_ACC] = 12;
retVal = FALSE;
}
if ((itemEffect[cmdIndex] & 0xF)
- && gBattleMons[gActiveBank].statStages[STAT_STAGE_SPATK] < 12)
+ && gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPATK] < 12)
{
- gBattleMons[gActiveBank].statStages[STAT_STAGE_SPATK] += itemEffect[cmdIndex] & 0xF;
- if (gBattleMons[gActiveBank].statStages[STAT_STAGE_SPATK] > 12)
- gBattleMons[gActiveBank].statStages[STAT_STAGE_SPATK] = 12;
+ gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPATK] += itemEffect[cmdIndex] & 0xF;
+ if (gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPATK] > 12)
+ gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPATK] = 12;
retVal = FALSE;
}
break;
case 3:
if ((itemEffect[cmdIndex] & 0x80)
- && gSideTimers[GetBankSide(gActiveBank)].mistTimer == 0)
+ && gSideTimers[GetBattlerSide(gActiveBattler)].mistTimer == 0)
{
- gSideTimers[GetBankSide(gActiveBank)].mistTimer = 5;
+ gSideTimers[GetBattlerSide(gActiveBattler)].mistTimer = 5;
retVal = FALSE;
}
if ((itemEffect[cmdIndex] & 0x40) // raise level
@@ -278,15 +278,15 @@ bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 mo
{
if (sp34 != 4)
{
- gAbsentBankFlags &= ~gBitTable[sp34];
- CopyPlayerPartyMonToBattleData(sp34, pokemon_order_func(gBattlePartyID[sp34]));
- if (GetBankSide(gActiveBank) == 0 && gBattleResults.unk4 < 255)
+ gAbsentBattlerFlags &= ~gBitTable[sp34];
+ CopyPlayerPartyMonToBattleData(sp34, pokemon_order_func(gBattlerPartyIndexes[sp34]));
+ if (GetBattlerSide(gActiveBattler) == 0 && gBattleResults.unk4 < 255)
gBattleResults.unk4++;
}
else
{
- gAbsentBankFlags &= ~gBitTable[gActiveBank ^ 2];
- if (GetBankSide(gActiveBank) == 0 && gBattleResults.unk4 < 255)
+ gAbsentBattlerFlags &= ~gBitTable[gActiveBattler ^ 2];
+ if (GetBattlerSide(gActiveBattler) == 0 && gBattleResults.unk4 < 255)
gBattleResults.unk4++;
}
}
@@ -325,16 +325,16 @@ bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 mo
if (gMain.inBattle && sp34 != 4)
{
gBattleMons[sp34].hp = data;
- if (!(r10 & 0x10) && GetBankSide(gActiveBank) == 0)
+ if (!(r10 & 0x10) && GetBattlerSide(gActiveBattler) == 0)
{
if (gBattleResults.unk3 < 255)
gBattleResults.unk3++;
// I have to re-use this variable to match.
- r5 = gActiveBank;
- gActiveBank = sp34;
+ r5 = gActiveBattler;
+ gActiveBattler = sp34;
EmitGetAttributes(0, 0, 0);
- MarkBufferBankForExecution(gActiveBank);
- gActiveBank = r5;
+ MarkBufferBankForExecution(gActiveBattler);
+ gActiveBattler = r5;
}
}
}
diff --git a/src/pokemon_menu.c b/src/pokemon_menu.c
index 532340ce4..23020383d 100644
--- a/src/pokemon_menu.c
+++ b/src/pokemon_menu.c
@@ -6,13 +6,11 @@
#include "palette.h"
#include "menu.h"
#include "mail_data.h"
-#include "constants/songs.h"
#include "sound.h"
#include "main.h"
#include "overworld.h"
#include "menu_helpers.h"
#include "pokemon_summary_screen.h"
-#include "constants/moves.h"
#include "data2.h"
#include "strings.h"
#include "item_use.h"
@@ -32,6 +30,9 @@
#include "player_pc.h"
#include "ewram.h"
#include "script.h"
+#include "constants/field_effects.h"
+#include "constants/moves.h"
+#include "constants/songs.h"
/*
Pokemon menu:
@@ -51,7 +52,7 @@ extern u8 gUnknown_020384F0;
extern u8 gUnknown_0202E8F4;
extern u8 gUnknown_0202E8F5;
extern u8 gUnknown_0202E8F6;
-extern u8 gUnknown_02038561;
+extern u8 gPokemonItemUseType;
extern u16 gUnknown_0202E8F8;
extern void (*gPokemonItemUseCallback)(u8 taskID, u16 itemID, TaskFunc func);
extern TaskFunc gUnknown_03005CF0;
@@ -84,7 +85,7 @@ static void sub_808A848(u8 taskID);
static void sub_808AAF0(u8 taskID);
static void sub_808ABF4(u8 taskID);
static void sub_808AB34(u8 taskID);
-static void sub_808ABA8(u8 taskID);
+static void FieldCallback_AfterFadeInFromMenu(u8 taskID);
static void sub_808B224(u8 taskID);
static void sub_808B2EC(u8 taskID);
static void sub_808B2B4(u8 taskID);
@@ -118,7 +119,7 @@ EWRAM_DATA static u8 sPokeMenuOptionsOrder[8] = {0}; // 4 possible field moves a
// iwram common
u8 gLastFieldPokeMenuOpened;
-void (*gUnknown_03005CE4)(void);
+void (*gPostMenuFieldCallback)(void);
// const data
@@ -267,7 +268,7 @@ void HandleDefaultPartyMenu(u8 taskID)
break;
case B_BUTTON:
PlaySE(SE_SELECT);
- BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gTasks[taskID].func = sub_8089E4C;
break;
}
@@ -309,7 +310,7 @@ static void sub_8089E4C(u8 taskID)
if (!gPaletteFade.active)
{
gLastFieldPokeMenuOpened = 0;
- SetMainCallback2(sub_805469C);
+ SetMainCallback2(c2_exit_to_overworld_1_sub_8080DEC);
DestroyTask(taskID);
}
}
@@ -358,7 +359,7 @@ static void sub_8089F44(u8 taskID)
static void PokemonMenu_Summary(u8 taskID)
{
- BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gTasks[taskID].func = sub_8089F44;
}
@@ -439,7 +440,7 @@ static void sub_808A228(u8 taskID)
{
if (ItemIsMail(gSpecialVar_ItemId) && gUnknown_0202E8F4 != 0)
{
- BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gTasks[taskID].func = sub_808A180;
}
else
@@ -591,7 +592,7 @@ static void sub_808A604(u8 taskID)
static void PokemonMenu_GiveItem(u8 taskID)
{
gUnknown_0202E8F5 = sub_806CA38(taskID);
- BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gTasks[taskID].func = sub_808A604;
}
@@ -657,7 +658,7 @@ static void sub_808A73C(u8 taskID)
static void PokemonMenu_ReadMail(u8 taskID)
{
- BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gTasks[taskID].func = sub_808A848;
}
@@ -740,7 +741,7 @@ static void PokemonMenu_FieldMove(u8 taskID)
if (!IS_SOFTBOILED_MILKDRINK(tFieldMoveId))
{
gTasks[taskID].func = sub_808AB34;
- BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
}
else
sub_8133D28(taskID);
@@ -780,18 +781,18 @@ static void sub_808AB34(u8 taskID)
#undef tFieldMoveId
-void FieldCallback_Teleport(void)
+void FieldCallback_PrepareFadeInFromMenu(void)
{
pal_fill_black();
- CreateTask(sub_808ABA8, 8);
+ CreateTask(FieldCallback_AfterFadeInFromMenu, 8);
}
-static void sub_808ABA8(u8 taskID)
+static void FieldCallback_AfterFadeInFromMenu(u8 taskID)
{
if (IsWeatherNotFadingIn() == TRUE)
{
gFieldEffectArguments[0] = GetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_SPECIES);
- gUnknown_03005CE4();
+ gPostMenuFieldCallback();
DestroyTask(taskID);
}
}
@@ -815,8 +816,8 @@ static bool8 SetUpFieldMove_Surf(void)
{
if (PartyHasMonWithSurf() == TRUE && IsPlayerFacingSurfableFishableWater() == TRUE)
{
- gFieldCallback = FieldCallback_Teleport;
- gUnknown_03005CE4 = sub_808AC2C;
+ gFieldCallback = FieldCallback_PrepareFadeInFromMenu;
+ gPostMenuFieldCallback = sub_808AC2C;
return TRUE;
}
else
@@ -833,14 +834,14 @@ static bool8 SetUpFieldMove_Fly(void)
{
if (ShouldDoBrailleFlyEffect())
{
- gFieldCallback = FieldCallback_Teleport;
- gUnknown_03005CE4 = DoBrailleFlyEffect;
+ gFieldCallback = FieldCallback_PrepareFadeInFromMenu;
+ gPostMenuFieldCallback = DoBrailleFlyEffect;
return TRUE;
}
if (Overworld_MapTypeAllowsTeleportAndFly(gMapHeader.mapType) == TRUE)
{
- gFieldCallback = FieldCallback_Teleport;
- gUnknown_03005CE4 = sub_808AC8C;
+ gFieldCallback = FieldCallback_PrepareFadeInFromMenu;
+ gPostMenuFieldCallback = sub_808AC8C;
return TRUE;
}
return FALSE;
@@ -882,11 +883,11 @@ static void sub_808ADAC(void)
static bool8 SetUpFieldMove_Dive(void)
{
- gFieldEffectArguments[1] = sub_8068F18();
+ gFieldEffectArguments[1] = TrySetDiveWarp();
if (gFieldEffectArguments[1])
{
- gFieldCallback = FieldCallback_Teleport;
- gUnknown_03005CE4 = sub_808ADAC;
+ gFieldCallback = FieldCallback_PrepareFadeInFromMenu;
+ gPostMenuFieldCallback = sub_808ADAC;
return TRUE;
}
else
@@ -907,8 +908,8 @@ static bool8 SetUpFieldMove_Waterfall(void)
if (MetatileBehavior_IsWaterfall(MapGridGetMetatileBehaviorAt(x, y)) == TRUE
&& IsPlayerSurfingNorth() == TRUE)
{
- gFieldCallback = FieldCallback_Teleport;
- gUnknown_03005CE4 = sub_808AE08;
+ gFieldCallback = FieldCallback_PrepareFadeInFromMenu;
+ gPostMenuFieldCallback = sub_808AE08;
return TRUE;
}
else
@@ -943,11 +944,11 @@ static void sub_808AE8C(void)
gUnknown_020297ED == 0 &&
#endif
(GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG) || !CanMonLearnTMHM(&gPlayerParty[i], arg)))
- sub_806BC3C(i, 0x9A);
+ DrawMonDescriptorStatus(i, 0x9A);
else if (pokemon_has_move(&gPlayerParty[i], ItemIdToBattleMoveId(gSpecialVar_ItemId)))
- sub_806BC3C(i, 0xA8);
+ DrawMonDescriptorStatus(i, 0xA8);
else
- sub_806BC3C(i, 0x8C);
+ DrawMonDescriptorStatus(i, 0x8C);
}
}
}
@@ -962,7 +963,7 @@ static void sub_808AF20(void)
if (GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG) || !GetEvolutionTargetSpecies(&gPlayerParty[i], 3, gSpecialVar_ItemId))
{
sub_806D668(i);
- sub_806BC3C(i, 0);
+ DrawMonDescriptorStatus(i, 0);
}
}
}
@@ -974,7 +975,7 @@ static void sub_808AF80(void)
{
if (InitPartyMenu() == TRUE)
{
- if (gUnknown_02038561 == 0)
+ if (gPokemonItemUseType == ITEM_USE_SINGLE_MON)
{
switch (CheckIfItemIsTMHMOrEvolutionStone(gSpecialVar_ItemId))
{
@@ -1001,19 +1002,19 @@ static void sub_808AF80(void)
void sub_808B020(void)
{
gPaletteFade.bufferTransferDisabled = 1;
- switch (gUnknown_02038561)
+ switch (gPokemonItemUseType)
{
- case 0:
+ case ITEM_USE_SINGLE_MON:
if (CheckIfItemIsTMHMOrEvolutionStone(gSpecialVar_ItemId) == 1)
SetPartyMenuSettings(PARTY_MENU_TYPE_STANDARD, 0, sub_808B0C0, 20);
else
SetPartyMenuSettings(PARTY_MENU_TYPE_STANDARD, 0, sub_808B0C0, 3);
break;
- case 4:
+ case ITEM_USE_ALL_MONS:
SetPartyMenuSettings(PARTY_MENU_TYPE_STANDARD, 0, sub_808B1EC, 0xFF);
break;
- case 1:
- case 3:
+ case ITEM_USE_GIVE_ITEM:
+ case ITEM_USE_GIVE_MAIL:
SetPartyMenuSettings(PARTY_MENU_TYPE_STANDARD, 0, sub_808B0C0, 4);
break;
}
@@ -1033,14 +1034,14 @@ void sub_808B0C0(u8 taskID)
else
{
sub_806D5A4();
- if (gUnknown_02038561 == 0)
+ if (gPokemonItemUseType == ITEM_USE_SINGLE_MON)
gPokemonItemUseCallback(taskID, gSpecialVar_ItemId, sub_808B224);
- if (gUnknown_02038561 == 1)
+ if (gPokemonItemUseType == ITEM_USE_GIVE_ITEM)
{
PlaySE(SE_SELECT);
PartyMenuTryGiveMonHeldItem(taskID, gSpecialVar_ItemId, sub_808B2EC);
}
- if (gUnknown_02038561 == 3)
+ if (gPokemonItemUseType == ITEM_USE_GIVE_MAIL)
{
PlaySE(SE_SELECT);
PartyMenuTryGiveMonMail(taskID, sub_808B2B4);
@@ -1050,10 +1051,10 @@ void sub_808B0C0(u8 taskID)
case B_BUTTON:
gLastFieldPokeMenuOpened = sub_806CA38(taskID);
PlaySE(SE_SELECT);
- BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
- if (gUnknown_02038561 == 0 || gUnknown_02038561 == 1)
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
+ if (gPokemonItemUseType == ITEM_USE_SINGLE_MON || gPokemonItemUseType == ITEM_USE_GIVE_ITEM)
gTasks[taskID].func = sub_808B25C;
- if (gUnknown_02038561 == 3)
+ if (gPokemonItemUseType == ITEM_USE_GIVE_MAIL)
gTasks[taskID].func = sub_808B2B4;
break;
}
@@ -1068,7 +1069,7 @@ static void sub_808B1EC(u8 taskID)
static void sub_808B224(u8 taskID)
{
- BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gTasks[taskID].func = sub_808B25C;
}
@@ -1092,7 +1093,7 @@ static void sub_808B288(u8 taskID)
static void sub_808B2B4(u8 taskID)
{
- BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gTasks[taskID].func = sub_808B288;
}
@@ -1100,7 +1101,7 @@ static void sub_808B2EC(u8 taskID)
{
if (gUnknown_0202E8F4 == 2)
{
- BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gTasks[taskID].func = sub_808B338;
}
else
diff --git a/src/pokemon_size_record.c b/src/pokemon_size_record.c
index 2ba4e57cc..6a7ee69b3 100644
--- a/src/pokemon_size_record.c
+++ b/src/pokemon_size_record.c
@@ -198,11 +198,19 @@ void GiveGiftRibbonToParty(u8 index, u8 ribbonId)
s32 i;
bool32 gotRibbon = FALSE;
u8 data = 1;
- u8 arr[] = { 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E };
+ u8 arr[] = {
+ MON_DATA_GIFT_RIBBON_1,
+ MON_DATA_GIFT_RIBBON_2,
+ MON_DATA_GIFT_RIBBON_3,
+ MON_DATA_GIFT_RIBBON_4,
+ MON_DATA_GIFT_RIBBON_5,
+ MON_DATA_GIFT_RIBBON_6,
+ MON_DATA_GIFT_RIBBON_7,
+ };
if (index < 11 && ribbonId < 65)
{
- gSaveBlock1.giftRibbons[index] = ribbonId;
+ gSaveBlock1.externalReservedData.giftRibbons[index] = ribbonId;
for (i = 0; i < 6; i++)
{
struct Pokemon *pkmn = &gPlayerParty[i];
diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c
index 1ea8bc205..770b69813 100644
--- a/src/pokemon_storage_system.c
+++ b/src/pokemon_storage_system.c
@@ -405,7 +405,7 @@ void ResetPokemonStorageSystem(void)
}
#if DEBUG
-__attribute__((naked))
+NAKED
void debug_sub_80A3904(void)
{
asm("\
diff --git a/src/pokemon_storage_system_2.c b/src/pokemon_storage_system_2.c
index 0331abf3e..2cd1a59c6 100644
--- a/src/pokemon_storage_system_2.c
+++ b/src/pokemon_storage_system_2.c
@@ -310,7 +310,7 @@ void sub_80969A0(void)
gMain.state++;
break;
case 9:
- BeginNormalPaletteFade(0xffffffff, 0, 16, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
SetVBlankCallback(sub_8096AFC);
gMain.state++;
break;
@@ -335,11 +335,11 @@ void debug_sub_80A4300(void)
}
extern void (*unk_2038794)(void);
-extern u32 unk_2038798;
+extern struct Pokemon * unk_2038798;
-extern void unref_sub_809CB94();
+extern void debug_sub_809CB94(struct Pokemon *);
-void debug_sub_80A433C(u32 a, void (*b)(void))
+void debug_sub_80A433C(struct Pokemon * a, void (*b)(void))
{
unk_2038794 = b;
unk_2038798 = a;
@@ -351,8 +351,8 @@ void debug_sub_80A435C(void)
switch (gPokemonStorageSystemPtr->unk_0004)
{
case 0:
- unref_sub_809CB94(unk_2038798);
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ debug_sub_809CB94(unk_2038798);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gPokemonStorageSystemPtr->unk_0004++;
break;
case 1:
@@ -408,7 +408,7 @@ void sub_8096BF0(void)
switch (gPokemonStorageSystemPtr->unk_0004)
{
case 0:
- BlendPalettes(0xffffffff, 16, 0);
+ BlendPalettes(0xFFFFFFFF, 16, RGB(0, 0, 0));
gPokemonStorageSystemPtr->unk_0004++;
break;
case 1:
@@ -418,7 +418,7 @@ void sub_8096BF0(void)
gPokemonStorageSystemPtr->unk_000c.unk04 = 0;
gPokemonStorageSystemPtr->unk_000c.unk06 = 0;
sub_80C5CD4(&gPokemonStorageSystemPtr->unk_000c);
- BlendPalettes(0xffffffff, 0, 0);
+ BlendPalettes(0xFFFFFFFF, 0, RGB(0, 0, 0));
gPokemonStorageSystemPtr->unk_0004++;
break;
case 2:
@@ -1083,7 +1083,7 @@ void sub_8097788(void)
{
case 0:
sub_809BC18();
- BeginNormalPaletteFade(0xffffffff, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gPokemonStorageSystemPtr->unk_0004++;
break;
case 1:
@@ -1284,7 +1284,7 @@ void sub_8097B44(void)
{
case 0:
sub_809BB90();
- BeginNormalPaletteFade(0xffffffff, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gPokemonStorageSystemPtr->unk_0004++;
break;
case 1:
@@ -1564,7 +1564,7 @@ const struct SpriteTemplate gSpriteTemplate_83B6DDC = {
0x0002, 0xdac7, &gOamData_83B6EAC, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
};
-__attribute__((naked)) void sub_80980D4(void)
+NAKED void sub_80980D4(void)
{
asm_unified("\tpush {r4,r5,lr}\n"
"\tsub sp, 0x28\n"
diff --git a/src/pokemon_storage_system_4.c b/src/pokemon_storage_system_4.c
index 2f9f79a54..2d156c159 100644
--- a/src/pokemon_storage_system_4.c
+++ b/src/pokemon_storage_system_4.c
@@ -400,7 +400,7 @@ bool8 sub_8099E08(void)
switch (gPokemonStorageSystemPtr->unk_1032)
{
case 0:
- BeginNormalPaletteFade(gPokemonStorageSystemPtr->unk_0d08, 1, 0, 0x10, 0xffff);
+ BeginNormalPaletteFade(gPokemonStorageSystemPtr->unk_0d08, 1, 0, 16, FADE_COLOR_WHITE);
gPokemonStorageSystemPtr->unk_1032++;
break;
case 1:
@@ -409,7 +409,7 @@ bool8 sub_8099E08(void)
u8 curBox = get_preferred_box();
sub_8099EB0(curBox, 0);
sub_809A654();
- BeginNormalPaletteFade(gPokemonStorageSystemPtr->unk_0d08, 1, 0x10, 0, 0xffff);
+ BeginNormalPaletteFade(gPokemonStorageSystemPtr->unk_0d08, 1, 16, 0, FADE_COLOR_WHITE);
gPokemonStorageSystemPtr->unk_1032++;
}
break;
@@ -519,7 +519,7 @@ void sub_8099F58(u16 *vdest, const u16 *src, s8 a2, u8 a3)
}
}
#else
-__attribute__((naked)) void sub_8099F58(u16 *vdest, const u16 *src, s8 a2, u8 a3)
+NAKED void sub_8099F58(u16 *vdest, const u16 *src, s8 a2, u8 a3)
{
asm_unified("\tpush {r4-r7,lr}\n"
"\tmov r7, r10\n"
@@ -808,7 +808,7 @@ void sub_809A14C(u16 *vdest)
}
}
#else
-__attribute__((naked)) void sub_809A14C(u16 *vdest)
+NAKED void sub_809A14C(u16 *vdest)
{
asm_unified("\tpush {r4-r6,lr}\n"
"\tadds r2, r0, 0\n"
@@ -912,7 +912,7 @@ void sub_809A23C(u8 boxId)
gPokemonStorageSystemPtr->unk_0d08 |= 0x10000 << tagIdx;
sub_809A1BC(gPokemonStorageSystemPtr->unk_08ca, gPokemonStorage.boxNames[boxId]);
LoadSpriteSheet(&spriteSheet);
- r6 = sub_809A6D0(sub_8072CA4(gPokemonStorage.boxNames[boxId]));
+ r6 = sub_809A6D0(GetStringWidthInMenuWindow(gPokemonStorage.boxNames[boxId]));
for (i = 0; i < 2; i++)
{
u8 spriteId = CreateSprite(&gSpriteTemplate_83BB2B8, r6 + i * 32, 0x1c, 23);
@@ -947,7 +947,7 @@ void sub_809A3D0(u8 boxId, s8 a1)
sub_809A1BC(gPokemonStorageSystemPtr->unk_08ca, gPokemonStorage.boxNames[boxId]);
LoadSpriteSheet(&spriteSheet);
LoadPalette(gUnknown_083BB0A8[gPokemonStorage.wallpaper[boxId]], r8, 0x04);
- x = sub_809A6D0(sub_8072CA4(gPokemonStorage.boxNames[boxId]));
+ x = sub_809A6D0(GetStringWidthInMenuWindow(gPokemonStorage.boxNames[boxId]));
x2 = x + a1 * 192;
for (i = 0; i < 2; i++)
{
@@ -2061,7 +2061,7 @@ void sub_809C04C(void *pokemon, u8 a1)
buf = gPokemonStorageSystemPtr->unk_1259 + 8;
buf[0] = 0x34; // LV
buf = gPokemonStorageSystemPtr->unk_1259 + 9;
- buf = sub_8072C14(buf, gPokemonStorageSystemPtr->unk_11f8, 0x22, STR_CONV_MODE_RIGHT_ALIGN);
+ buf = AlignInt1InMenuWindow(buf, gPokemonStorageSystemPtr->unk_11f8, 0x22, STR_CONV_MODE_RIGHT_ALIGN);
buf[0] = EXT_CTRL_CODE_BEGIN;
buf[1] = 0x11; // CLEAR
buf[2] = 8;
@@ -2214,7 +2214,7 @@ u8 sub_809C464(void)
return r9;
}
#else
-__attribute__((naked)) u8 sub_809C464(void)
+NAKED u8 sub_809C464(void)
{
asm_unified("\tpush {r4-r7,lr}\n"
"\tmov r7, r9\n"
@@ -2584,7 +2584,7 @@ u8 sub_809C664(void)
return r8;
}
#else
-__attribute__((naked)) u8 sub_809C664(void)
+NAKED u8 sub_809C664(void)
{
asm_unified("\tpush {r4-r7,lr}\n"
"\tmov r7, r10\n"
diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c
index d4c93b93e..aabacbe2f 100644
--- a/src/pokemon_summary_screen.c
+++ b/src/pokemon_summary_screen.c
@@ -9,12 +9,12 @@
#include "event_data.h"
#include "ewram.h"
#include "item.h"
-#include "learn_move.h"
#include "link.h"
#include "m4a.h"
#include "main.h"
#include "menu.h"
#include "menu_helpers.h"
+#include "move_tutor_menu.h"
#include "overworld.h"
#include "palette.h"
#include "party_menu.h"
@@ -30,6 +30,7 @@
#include "task.h"
#include "tv.h"
#include "scanline_effect.h"
+#include "daycare.h"
static void sub_809FC0C(void);
static void sub_809FEB8(void);
@@ -929,7 +930,7 @@ static void sub_809E044(void)
static void SummaryScreenExit(u8 taskId)
{
PlaySE(SE_SELECT);
- BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gTasks[taskId].func = sub_809E13C;
}
@@ -1221,7 +1222,7 @@ static void sub_809E83C(u8 taskId, s8 b)
sub_80A2078(taskId);
}
-__attribute__((naked))
+NAKED
static void sub_809E8F0(/*u8 taskId, s8 direction, u8 *c*/)
{
asm(".syntax unified\n\
@@ -1760,7 +1761,7 @@ static void SummaryScreenHandleUpDownInput(u8 taskId, s8 direction)
}
}
#else
-__attribute__((naked))
+NAKED
static void SummaryScreenHandleUpDownInput(u8 taskId, s8 direction)
{
asm(".syntax unified\n\
@@ -1891,7 +1892,7 @@ s8 sub_809F284(s8 a)
}
}
#else
-__attribute__((naked))
+NAKED
s8 sub_809F284(s8 a)
{
asm(".syntax unified\n\
@@ -2310,7 +2311,7 @@ u8 sub_809FA30(void)
// vramAddr[(d * 32) + c] = (b * 0x1000) + (a * 2) + 0x200 + 0x80;
// vramAddr[(d * 32) + c + 32] = (b * 0x1000) + (a * 2) + 0x200 + 0x81;
// }
-__attribute__((naked))
+NAKED
void GetStringCenterAlignXOffsetWithLetterSpacing(u8 a, u8 b, u8 c, u8 d)
{
asm(".syntax unified\n\
@@ -2570,9 +2571,9 @@ static void sub_809FF64(struct Pokemon *mon)
ConvertIntToDecimalString(buffer, GetMonData(mon, MON_DATA_SPEED));
sub_8072BD8(buffer, 27, 11, 18);
- buffer = sub_8072C14(buffer, GetMonData(mon, MON_DATA_HP), 24, 1);
+ buffer = AlignInt1InMenuWindow(buffer, GetMonData(mon, MON_DATA_HP), 24, 1);
*buffer++ = CHAR_SLASH;
- buffer = sub_8072C14(buffer, GetMonData(mon, MON_DATA_MAX_HP), 48, 1);
+ buffer = AlignInt1InMenuWindow(buffer, GetMonData(mon, MON_DATA_MAX_HP), 48, 1);
Menu_PrintTextPixelCoords(gStringVar1, 126, 56, 1);
}
@@ -2644,9 +2645,9 @@ static void sub_80A015C(struct Pokemon *mon)
maxPP = CalculatePPWithBonus(move, ppBonuses, i);
buffer = gStringVar1;
- buffer = sub_8072C14(buffer, curPP, 14, 1);
+ buffer = AlignInt1InMenuWindow(buffer, curPP, 14, 1);
*buffer++ = CHAR_SLASH;
- sub_8072C14(buffer, maxPP, 32, 1);
+ AlignInt1InMenuWindow(buffer, maxPP, 32, 1);
Menu_PrintText(gStringVar1, 25, (2 * i) + 4);
}
}
@@ -2680,9 +2681,9 @@ static void sub_80A029C(struct Pokemon *mon)
buffer = gStringVar1;
pp = gBattleMoves[move].pp;
- buffer = sub_8072C14(buffer, pp, 14, 1);
+ buffer = AlignInt1InMenuWindow(buffer, pp, 14, 1);
*buffer++ = CHAR_SLASH;
- buffer = sub_8072C14(buffer, pp, 32, 1);
+ buffer = AlignInt1InMenuWindow(buffer, pp, 32, 1);
Menu_PrintText(gStringVar1, 25, 12);
}
@@ -2762,26 +2763,26 @@ static void sub_80A04CC(u16 move)
if (gBattleMoves[move].power <= 1)
{
buffer = gStringVar1;
- buffer = sub_8072C74(buffer, gOtherText_ThreeDashes2, 21, 1);
+ buffer = AlignStringInMenuWindow(buffer, gOtherText_ThreeDashes2, 21, 1);
Menu_PrintText(gStringVar1, 7, 15);
}
else
{
buffer = gStringVar1;
- buffer = sub_8072C14(buffer, gBattleMoves[move].power, 21, 1);
+ buffer = AlignInt1InMenuWindow(buffer, gBattleMoves[move].power, 21, 1);
Menu_PrintText(gStringVar1, 7, 15);
}
if (gBattleMoves[move].accuracy == 0)
{
buffer = gStringVar1;
- buffer = sub_8072C74(buffer, gOtherText_ThreeDashes2, 21, 1);
+ buffer = AlignStringInMenuWindow(buffer, gOtherText_ThreeDashes2, 21, 1);
Menu_PrintText(gStringVar1, 7, 17);
}
else
{
buffer = gStringVar1;
- buffer = sub_8072C14(buffer, gBattleMoves[move].accuracy, 21, 1);
+ buffer = AlignInt1InMenuWindow(buffer, gBattleMoves[move].accuracy, 21, 1);
Menu_PrintText(gStringVar1, 7, 17);
}
}
@@ -2834,7 +2835,7 @@ static void sub_80A057C(u16 move)
}
}
#else
-__attribute__((naked))
+NAKED
static void sub_80A057C(u16 move)
{
asm(".syntax unified\n\
@@ -3046,7 +3047,7 @@ static void PokemonSummaryScreen_PrintTrainerMemo(struct Pokemon *mon, u8 left,
if (GetMonData(mon, MON_DATA_MET_LEVEL) == 0)
{
- ptr = PokemonSummaryScreen_CopyPokemonLevel(ptr, 5);
+ ptr = PokemonSummaryScreen_CopyPokemonLevel(ptr, EGG_HATCH_LEVEL);
*ptr = CHAR_NEWLINE;
ptr++;
@@ -3457,7 +3458,7 @@ static void DrawSummaryScreenNavigationDots(void)
DmaCopy16Defvars(3, arr, (void *)(VRAM + 0xE056), 16);
}
#else
-__attribute__((naked))
+NAKED
static void DrawSummaryScreenNavigationDots(void)
{
asm(".syntax unified\n\
@@ -3640,7 +3641,7 @@ _080A1044: .4byte 0x0600e056\n\
}
#endif // NONMATCHING
-__attribute__((naked))
+NAKED
void sub_80A1048(u8 taskId)
{
asm(".syntax unified\n\
@@ -4043,7 +4044,7 @@ static void sub_80A12D0(s8 a)
// DestroyTask(taskId);
// }
// }
-__attribute__((naked))
+NAKED
static void sub_80A1334(u8 taskId)
{
asm(".syntax unified\n\
@@ -4239,7 +4240,7 @@ static void sub_80A1488(s8 a, u8 b)
gTasks[taskId].data[3] = b;
}
-__attribute__((naked))
+NAKED
static void sub_80A1500(u8 taskId)
{
asm(".syntax unified\n\
@@ -4481,7 +4482,7 @@ static void sub_80A16CC(u8 a)
}
}
#else
-__attribute__((naked))
+NAKED
static void sub_80A16CC(u8 a)
{
asm(".syntax unified\n\
@@ -4817,20 +4818,20 @@ void sub_80A1C30(u8 a)
}
}
-u8 pokemon_ailments_get_primary(u32 status)
+u8 GetPrimaryStatus(u32 status)
{
- if (status & 0x88)
- return 1;
- if (status & 0x40)
- return 2;
- if (status & 0x7)
- return 3;
- if (status & 0x20)
- return 4;
- if (status & 0x10)
- return 5;
-
- return 0;
+ if (status & (STATUS_POISON | STATUS_TOXIC_POISON))
+ return STATUS_PRIMARY_POISON;
+ if (status & STATUS_PARALYSIS)
+ return STATUS_PRIMARY_PARALYSIS;
+ if (status & STATUS_SLEEP)
+ return STATUS_PRIMARY_SLEEP;
+ if (status & STATUS_FREEZE)
+ return STATUS_PRIMARY_FREEZE;
+ if (status & STATUS_BURN)
+ return STATUS_PRIMARY_BURN;
+
+ return STATUS_PRIMARY_NONE;
}
u8 GetMonStatusAndPokerus(struct Pokemon *mon)
@@ -4838,15 +4839,15 @@ u8 GetMonStatusAndPokerus(struct Pokemon *mon)
u8 statusAilment;
if (GetMonData(mon, MON_DATA_HP) == 0)
- return 7;
+ return STATUS_PRIMARY_FAINTED;
- statusAilment = pokemon_ailments_get_primary(GetMonData(mon, MON_DATA_STATUS));
- if (statusAilment == 0)
+ statusAilment = GetPrimaryStatus(GetMonData(mon, MON_DATA_STATUS));
+ if (statusAilment == STATUS_PRIMARY_NONE)
{
if (!CheckPartyPokerus(mon, 0))
- return 0;
+ return STATUS_PRIMARY_NONE;
else
- return 6;
+ return STATUS_PRIMARY_POKERUS;
}
return statusAilment;
@@ -4878,7 +4879,7 @@ void sub_80A1D18(void)
StartSpriteAnim(&gSprites[ewram1A000[29]], statusAndPkrs2);
}
#else
-__attribute__((naked))
+NAKED
void sub_80A1D18(void)
{
asm(".syntax unified\n\
diff --git a/src/pokenav_before.c b/src/pokenav_before.c
index 4f7eb66b4..49df4863e 100644
--- a/src/pokenav_before.c
+++ b/src/pokenav_before.c
@@ -524,7 +524,7 @@ void sub_80EBDD8()
ewram0_10.var304++;
break;
case 11:
- BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
ewram0_10.var304++;
break;
case 12:
@@ -597,7 +597,7 @@ void sub_80EC00C()
ewram0_10.var304++;
break;
case 6:
- BeginNormalPaletteFade(ewram0_10.var308, -1, 0x10, 0, 0);
+ BeginNormalPaletteFade(ewram0_10.var308, -1, 16, 0, RGB(0, 0, 0));
SetVBlankCallback(&sub_80EBD18);
ewram0_10.var304++;
break;
@@ -784,7 +784,7 @@ void sub_80EC4A0()
case 2:
if (!sub_80EEF34())
{
- BeginNormalPaletteFade(ewram0_10.var308, -1, 0x0, 0x10, 0);
+ BeginNormalPaletteFade(ewram0_10.var308, -1, 0, 16, RGB(0, 0, 0));
ewram0_10.var304++;
}
break;
@@ -830,7 +830,7 @@ void sub_80EC4A0()
ewram0_10.var304++;
break;
case 0xC:
- BeginNormalPaletteFade(ewram0_10.var308, -1, 0x10, 0, 0);
+ BeginNormalPaletteFade(ewram0_10.var308, -1, 16, 0, RGB(0, 0, 0));
ewram0_10.var304++;
break;
case 0xD:
@@ -905,7 +905,7 @@ void sub_80EC67C()
}
break;
case 4:
- BeginNormalPaletteFade(ewram0_10.var308, -1, 0, 0x10, 0);
+ BeginNormalPaletteFade(ewram0_10.var308, -1, 0, 16, RGB(0, 0, 0));
ewram0_10.var304++;
break;
case 5:
@@ -1051,7 +1051,7 @@ void sub_80ECA10()
ewram0_10.var304++;
break;
case 6:
- BeginNormalPaletteFade(ewram0_10.var308, -1, 0x10, 0, 0);
+ BeginNormalPaletteFade(ewram0_10.var308, -1, 16, 0, RGB(0, 0, 0));
SetVBlankCallback(&sub_80EBD18);
ewram0_10.var304++;
break;
@@ -1152,7 +1152,7 @@ void sub_80ECD80()
switch (ewram0_10.var304)
{
case 0:
- BeginNormalPaletteFade(ewram0_10.var308, -1, 0, 0x10, 0);
+ BeginNormalPaletteFade(ewram0_10.var308, -1, 0, 16, RGB(0, 0, 0));
ewram0_10.var304++;
break;
case 1:
@@ -1206,7 +1206,7 @@ void sub_80ECD80()
ewram0_10.var304++;
break;
case 12:
- BeginNormalPaletteFade(ewram0_10.var308, -1, 0x10, 0, 0);
+ BeginNormalPaletteFade(ewram0_10.var308, -1, 16, 0, RGB(0, 0, 0));
SetVBlankCallback(&sub_80EBD18);
ewram0_10.var304++;
break;
@@ -1278,7 +1278,7 @@ void sub_80ED01C()
case 2:
if (!sub_80EEF34())
{
- BeginNormalPaletteFade(ewram0_10.var308, -1, 0x0, 0x10, 0);
+ BeginNormalPaletteFade(ewram0_10.var308, -1, 0, 16, RGB(0, 0, 0));
ewram0_10.var304++;
}
break;
@@ -1330,7 +1330,7 @@ void sub_80ED01C()
ewram0_10.var304++;
break;
case 13:
- BeginNormalPaletteFade(ewram0_10.var308, -1, 0x10, 0, 0);
+ BeginNormalPaletteFade(ewram0_10.var308, -1, 16, 0, RGB(0, 0, 0));
SetVBlankCallback(&sub_80EBD18);
ewram0_10.var304++;
break;
@@ -1454,7 +1454,7 @@ void sub_80ED3D0()
break;
case 6:
sub_80F3008(0);
- BeginNormalPaletteFade(ewram0_10.var308, -1, 0x10, 0, 0);
+ BeginNormalPaletteFade(ewram0_10.var308, -1, 16, 0, RGB(0, 0, 0));
SetVBlankCallback(&sub_80EBD18);
ewram0_10.var304++;
break;
@@ -1478,7 +1478,7 @@ void sub_80ED4D8()
switch (ewram0_10.var304)
{
case 0:
- BeginNormalPaletteFade(ewram0_10.var308, -1, 0, 0x10, 0);
+ BeginNormalPaletteFade(ewram0_10.var308, -1, 0, 16, RGB(0, 0, 0));
ewram0_10.var304++;
break;
case 1:
@@ -1509,7 +1509,7 @@ void sub_80ED4D8()
case 6:
sub_80F35B4();
sub_80EEFBC(0x2);
- BeginNormalPaletteFade(ewram0_10.var308, -1, 0x10, 0, 0);
+ BeginNormalPaletteFade(ewram0_10.var308, -1, 16, 0, RGB(0, 0, 0));
SetVBlankCallback(sub_80EBD4C);
ewram0_10.var304++;
break;
@@ -1547,7 +1547,7 @@ void sub_80ED620()
case 2:
if (!sub_80EEF34())
{
- BeginNormalPaletteFade(ewram0_10.var308, -1, 0x0, 0x10, 0);
+ BeginNormalPaletteFade(ewram0_10.var308, -1, 0x0, 16, RGB(0, 0, 0));
ewram0_10.var304++;
}
break;
@@ -1588,7 +1588,7 @@ void sub_80ED620()
break;
case 10:
sub_80F33A8();
- BeginNormalPaletteFade(ewram0_10.var308, -1, 0x10, 0, 0);
+ BeginNormalPaletteFade(ewram0_10.var308, -1, 16, 0, RGB(0, 0, 0));
SetVBlankCallback(&sub_80EBD4C);
ewram0_10.var304++;
break;
@@ -1793,7 +1793,7 @@ label2:
}
#else
#if DEBUG
-__attribute__((naked))
+NAKED
void sub_80ED858()
{
asm("\
@@ -2216,7 +2216,7 @@ void sub_80ED858()
.word 0xfbd");
}
#else
-__attribute__((naked))
+NAKED
void sub_80ED858()
{
asm_unified("push {r4,r5,lr}\n\
@@ -2610,7 +2610,7 @@ void sub_80EDB88()
case 2:
if (!sub_80EEF34())
{
- BeginNormalPaletteFade(ewram0_10.var308, -1, 0x0, 0x10, 0);
+ BeginNormalPaletteFade(ewram0_10.var308, -1, 0, 16, RGB(0, 0, 0));
ewram0_10.var304++;
}
break;
@@ -2667,7 +2667,7 @@ void sub_80EDB88()
ewram0_10.var304++;
break;
case 15:
- BeginNormalPaletteFade(ewram0_10.var308, -1, 0x10, 0, 0);
+ BeginNormalPaletteFade(ewram0_10.var308, -1, 16, 0, RGB(0, 0, 0));
SetVBlankCallback(&sub_80EBD18);
ewram0_10.var304++;
break;
@@ -2741,7 +2741,7 @@ void sub_80EDE70()
switch (ewram0_10.var304)
{
case 0:
- BeginNormalPaletteFade(ewram0_10.var308, -1, 0, 0x10, 0);
+ BeginNormalPaletteFade(ewram0_10.var308, -1, 0, 16, RGB(0, 0, 0));
ewram0_10.var304++;
break;
case 1:
@@ -2764,7 +2764,7 @@ void sub_80EDEE4()
switch (ewram0_10.var304)
{
case 0:
- BeginNormalPaletteFade(ewram0_10.var308, -1, 0, 0x10, 0);
+ BeginNormalPaletteFade(ewram0_10.var308, -1, 0, 16, RGB(0, 0, 0));
ewram0_10.var304++;
break;
case 1:
@@ -2798,7 +2798,7 @@ void sub_80EDEE4()
ewram0_10.var304++;
break;
case 7:
- BeginNormalPaletteFade(ewram0_10.var308, -1, 0x10, 0, 0);
+ BeginNormalPaletteFade(ewram0_10.var308, -1, 16, 0, RGB(0, 0, 0));
SetVBlankCallback(&sub_80EBD18);
ewram0_10.var304++;
break;
@@ -2916,7 +2916,7 @@ void sub_80EE294()
switch (ewram0_10.var304)
{
case 0:
- BeginNormalPaletteFade(ewram0_10.var308, -1, 0, 0x10, 0);
+ BeginNormalPaletteFade(ewram0_10.var308, -1, 0, 16, RGB(0, 0, 0));
ewram0_10.var304++;
break;
case 1:
@@ -2948,7 +2948,7 @@ void sub_80EE294()
ewram0_10.var304++;
break;
case 6:
- BeginNormalPaletteFade(ewram0_10.var308, -1, 0x10, 0, 0);
+ BeginNormalPaletteFade(ewram0_10.var308, -1, 16, 0, RGB(0, 0, 0));
ewram0_10.var304++;
break;
case 7:
@@ -2985,7 +2985,7 @@ void sub_80EE3D8()
case 2:
if (!sub_80EEF34())
{
- BeginNormalPaletteFade(ewram0_10.var308, -1, 0x0, 0x10, 0);
+ BeginNormalPaletteFade(ewram0_10.var308, -1, 0, 16, RGB(0, 0, 0));
ewram0_10.var304++;
}
break;
@@ -3027,7 +3027,7 @@ void sub_80EE3D8()
break;
case 11:
sub_80F6F10();
- BeginNormalPaletteFade(ewram0_10.var308, -1, 0x10, 0, 0);
+ BeginNormalPaletteFade(ewram0_10.var308, -1, 16, 0, RGB(0, 0, 0));
SetVBlankCallback(&sub_80EBD68);
ewram0_10.var304++;
break;
@@ -3208,7 +3208,7 @@ void sub_80EE8F4()
switch (ewram0_10.var304)
{
case 0:
- BeginNormalPaletteFade(ewram0_10.var308, -1, 0, 0x10, 0);
+ BeginNormalPaletteFade(ewram0_10.var308, -1, 0, 16, RGB(0, 0, 0));
ewram0_10.var304++;
break;
case 1:
@@ -3231,7 +3231,7 @@ void sub_80EE96C()
if (!ewram0_10.var304)
{
PlaySE(0x6F);
- BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
ewram0_10.var304++;
}
else
@@ -3239,7 +3239,7 @@ void sub_80EE96C()
if (!gPaletteFade.active)
{
sub_80F5BDC();
- sub_805469C();
+ c2_exit_to_overworld_1_sub_8080DEC();
}
}
}
@@ -3277,7 +3277,7 @@ bool8 sub_80EEA0C() {
}
}
#else
-__attribute__((naked))
+NAKED
bool8 sub_80EEA0C() {
asm_unified(
"push {r4,lr}\n\
@@ -3851,7 +3851,7 @@ void sub_80EF428(u8 a, u8 b)
}
tileBuffer = gUnknown_083DFEC8;
- sub_8072C74(&tileBuffer[0x800], pcText, 0xC0, 2);
+ AlignStringInMenuWindow(&tileBuffer[0x800], pcText, 0xC0, 2);
Menu_PrintText(&tileBuffer[0x800], 3, 17);
}
@@ -3969,7 +3969,7 @@ void sub_80EF624(const u16 *a, const u16 *b, u8 c, u8 d, u16 *palettes)
}
}
#else
-__attribute__((naked))
+NAKED
void sub_80EF624(const u16 *a, const u16 *b, u8 c, u8 d, u16 *palettes)
{
asm(".syntax unified\n\
@@ -4713,7 +4713,7 @@ bool8 sub_80F02A0(void)
return TRUE;
}
#else
-__attribute__((naked))
+NAKED
bool8 sub_80F02A0(void)
{
asm(".syntax unified\n\
diff --git a/src/record_mixing.c b/src/record_mixing.c
index a2660bf82..0eb13899e 100644
--- a/src/record_mixing.c
+++ b/src/record_mixing.c
@@ -635,7 +635,7 @@ void sub_80B9C6C(u8 *a, u32 b, u8 c, void *d)
SeedRng(sp40);
}
#else
-__attribute__((naked))
+NAKED
void sub_80B9C6C(u8 *a, u32 b, u8 c, void *d)
{
asm(".syntax unified\n\
diff --git a/src/region_map.c b/src/region_map.c
index e40fb7752..74062f435 100644
--- a/src/region_map.c
+++ b/src/region_map.c
@@ -1,4 +1,5 @@
#include "global.h"
+#include "constants/region_map_sections.h"
#include "event_data.h"
#include "field_effect.h"
#include "field_specials.h"
@@ -19,97 +20,6 @@
#include "trig.h"
#include "ewram.h"
-// Map Section IDs
-#define MAPSEC_LITTLEROOT_TOWN 0
-#define MAPSEC_OLDALE_TOWN 1
-#define MAPSEC_DEWFORD_TOWN 2
-#define MAPSEC_LAVARIDGE_TOWN 3
-#define MAPSEC_FALLARBOR_TOWN 4
-#define MAPSEC_VERDANTURF_TOWN 5
-#define MAPSEC_PACIFIDLOG_TOWN 6
-#define MAPSEC_PETALBURG_CITY 7
-#define MAPSEC_SLATEPORT_CITY 8
-#define MAPSEC_MAUVILLE_CITY 9
-#define MAPSEC_RUSTBORO_CITY 10
-#define MAPSEC_FORTREE_CITY 11
-#define MAPSEC_LILYCOVE_CITY 12
-#define MAPSEC_MOSSDEEP_CITY 13
-#define MAPSEC_SOOTOPOLIS_CITY 14
-#define MAPSEC_EVER_GRANDE_CITY 15
-#define MAPSEC_ROUTE_101 0x10
-#define MAPSEC_ROUTE_102 0x11
-#define MAPSEC_ROUTE_103 0x12
-#define MAPSEC_ROUTE_104 0x13
-#define MAPSEC_ROUTE_105 0x14
-#define MAPSEC_ROUTE_106 0x15
-#define MAPSEC_ROUTE_107 0x16
-#define MAPSEC_ROUTE_108 0x17
-#define MAPSEC_ROUTE_109 0x18
-#define MAPSEC_ROUTE_110 0x19
-#define MAPSEC_ROUTE_111 0x1A
-#define MAPSEC_ROUTE_112 0x1B
-#define MAPSEC_ROUTE_113 0x1C
-#define MAPSEC_ROUTE_114 0x1D
-#define MAPSEC_ROUTE_115 0x1E
-#define MAPSEC_ROUTE_116 0x1F
-#define MAPSEC_ROUTE_117 0x20
-#define MAPSEC_ROUTE_118 0x21
-#define MAPSEC_ROUTE_119 0x22
-#define MAPSEC_ROUTE_120 0x23
-#define MAPSEC_ROUTE_121 0x24
-#define MAPSEC_ROUTE_122 0x25
-#define MAPSEC_ROUTE_123 0x26
-#define MAPSEC_ROUTE_124 0x27
-#define MAPSEC_ROUTE_125 0x28
-#define MAPSEC_ROUTE_126 0x29
-#define MAPSEC_ROUTE_127 0x2A
-#define MAPSEC_ROUTE_128 0x2B
-#define MAPSEC_ROUTE_129 0x2C
-#define MAPSEC_ROUTE_130 0x2D
-#define MAPSEC_ROUTE_131 0x2E
-#define MAPSEC_ROUTE_132 0x2F
-#define MAPSEC_ROUTE_133 0x30
-#define MAPSEC_ROUTE_134 0x31
-#define MAPSEC_UNDERWATER1 0x32
-#define MAPSEC_UNDERWATER2 0x33
-#define MAPSEC_UNDERWATER3 0x34
-#define MAPSEC_UNDERWATER4 0x35
-#define MAPSEC_UNDERWATER5 0x36
-#define MAPSEC_GRANITE_CAVE 0x37
-#define MAPSEC_MT_CHIMNEY 0x38
-#define MAPSEC_SAFARI_ZONE 0x39
-#define MAPSEC_BATTLE_TOWER 0x3A
-#define MAPSEC_PETALBURG_WOODS 0x3B
-#define MAPSEC_RUSTURF_TUNNEL 0x3C
-#define MAPSEC_ABANDONED_SHIP 0x3D
-#define MAPSEC_NEW_MAUVILLE 0x3E
-#define MAPSEC_METEOR_FALLS_1 0x3F
-#define MAPSEC_METEOR_FALLS_2 0x40
-#define MAPSEC_MT_PYRE 0x41
-#define MAPSEC_EVIL_TEAM_HIDEOUT 0x42
-#define MAPSEC_SHOAL_CAVE 0x43
-#define MAPSEC_SEAFLOOR_CAVERN 0x44
-#define MAPSEC_UNDERWATER6 0x45
-#define MAPSEC_VICTORY_ROAD 0x46
-#define MAPSEC_MIRAGE_ISLAND 0x47
-#define MAPSEC_CAVE_OF_ORIGIN 0x48
-#define MAPSEC_SOUTHERN_ISLAND 0x49
-#define MAPSEC_FIERY_PATH_1 0x4A
-#define MAPSEC_FIERY_PATH_2 0x4B
-#define MAPSEC_JAGGED_PASS_1 0x4C
-#define MAPSEC_JAGGED_PASS_2 0x4D
-#define MAPSEC_SEALED_CHAMBER 0x4E
-#define MAPSEC_UNDERWATER7 0x4F
-#define MAPSEC_SCORCHED_SLAB 0x50
-#define MAPSEC_ISLAND_CAVE 0x51
-#define MAPSEC_DESERT_RUINS 0x52
-#define MAPSEC_ANCIENT_TOMB 0x53
-#define MAPSEC_INSIDE_OF_TRUCK 0x54
-#define MAPSEC_SKY_PILLAR 0x55
-#define MAPSEC_SECRET_BASE 0x56
-#define MAPSEC_UNK_0x57 0x57
-#define MAPSEC_NONE 0x58
-
#define MAP_WIDTH 28
#define MAP_HEIGHT 15
#define MAPCURSOR_X_MIN 1
@@ -149,13 +59,6 @@ static const u8 sRegionMapBkgnd_TilemapLZ[] = INCBIN_U8("graphics/pokenav/region
#include "data/region_map_names_de.h"
#endif
-struct RegionMapLocation
-{
- u8 x, y;
- u8 width, height;
- const u8 *regionMapSectionId;
-};
-
const struct RegionMapLocation gRegionMapLocations[] =
{
{ 4, 11, 1, 1, gMapName_LittlerootTown},
@@ -248,21 +151,21 @@ const struct RegionMapLocation gRegionMapLocations[] =
{ 0, 0, 1, 1, gMapName_None},
};
-static const u16 gUnknown_083E7684[][2] =
+static const u16 sUnderwaterMaps[][2] =
{
- {MAPSEC_UNDERWATER1, MAPSEC_ROUTE_124},
- {MAPSEC_UNDERWATER2, MAPSEC_ROUTE_126},
- {MAPSEC_UNDERWATER3, MAPSEC_ROUTE_127},
- {MAPSEC_UNDERWATER4, MAPSEC_ROUTE_128},
- {MAPSEC_UNDERWATER5, MAPSEC_SOOTOPOLIS_CITY},
- {MAPSEC_UNDERWATER6, MAPSEC_ROUTE_128},
+ {MAPSEC_UNDERWATER_124, MAPSEC_ROUTE_124},
+ {MAPSEC_UNDERWATER_125, MAPSEC_ROUTE_126},
+ {MAPSEC_UNDERWATER_126, MAPSEC_ROUTE_127},
+ {MAPSEC_UNDERWATER_127, MAPSEC_ROUTE_128},
+ {MAPSEC_UNDERWATER_SOOTOPOLIS, MAPSEC_SOOTOPOLIS_CITY},
+ {MAPSEC_UNDERWATER_128, MAPSEC_ROUTE_128},
{MAPSEC_EVIL_TEAM_HIDEOUT, MAPSEC_LILYCOVE_CITY},
- {MAPSEC_UNDERWATER7, MAPSEC_ROUTE_134},
+ {MAPSEC_UNDERWATER_SEALED_CHAMBER, MAPSEC_ROUTE_134},
{MAPSEC_PETALBURG_WOODS, MAPSEC_ROUTE_104},
- {MAPSEC_JAGGED_PASS_1, MAPSEC_ROUTE_112},
+ {MAPSEC_JAGGED_PASS, MAPSEC_ROUTE_112},
{MAPSEC_MT_PYRE, MAPSEC_ROUTE_122},
{MAPSEC_SKY_PILLAR, MAPSEC_ROUTE_131},
- {MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NOTHING, MAPSEC_NOTHING},
};
static u8 sub_80FAB78(void);
@@ -276,7 +179,7 @@ static u16 GetRegionMapSectionAt(u16, u16);
static void InitializeCursorPosition(void);
static void sub_80FB600(void);
static u16 sub_80FB758(u16);
-static u16 sub_80FB9C0(u16);
+static u16 GetOverworldMapFromUnderwaterMap_(u16);
static void sub_80FBA18(void);
static bool8 sub_80FBAA0(u16);
void CreateRegionMapCursor(u16, u16);
@@ -338,7 +241,7 @@ bool8 sub_80FA940(void)
gRegionMap->unk74 = gRegionMap->cursorPosX;
gRegionMap->unk76 = gRegionMap->cursorPosY;
gRegionMap->unk16 = sub_80FB758(gRegionMap->mapSectionId);
- gRegionMap->mapSectionId = sub_80FB9C0(gRegionMap->mapSectionId);
+ gRegionMap->mapSectionId = GetOverworldMapFromUnderwaterMap_(gRegionMap->mapSectionId);
GetMapSectionName(gRegionMap->mapSectionName, gRegionMap->mapSectionId, 16);
break;
case 6:
@@ -676,7 +579,7 @@ void UpdateRegionMapVideoRegs(void)
}
}
-void sub_80FB2A4(s16 a, s16 b)
+void RegionMapDefaultZoomOffsetPlayerSprite(s16 a, s16 b)
{
CalcZoomScrollParams(a, b, 0x38, 0x48, 0x100, 0x100, 0);
UpdateRegionMapVideoRegs();
@@ -690,7 +593,7 @@ void sub_80FB2A4(s16 a, s16 b)
static u16 GetRegionMapSectionAt(u16 x, u16 y)
{
if (y < MAPCURSOR_Y_MIN || y > MAPCURSOR_Y_MAX || x < MAPCURSOR_X_MIN || x > MAPCURSOR_X_MAX)
- return MAPSEC_NONE;
+ return MAPSEC_NOTHING;
y -= MAPCURSOR_Y_MIN;
x -= MAPCURSOR_X_MIN;
return sRegionMapLayout[x + y * 28];
@@ -725,11 +628,11 @@ static void InitializeCursorPosition(void)
case 5:
gRegionMap->mapSectionId = gMapHeader.regionMapSectionId;
gRegionMap->playerIsInCave = FALSE;
- mapWidth = gMapHeader.mapData->width;
- mapHeight = gMapHeader.mapData->height;
+ mapWidth = gMapHeader.mapLayout->width;
+ mapHeight = gMapHeader.mapLayout->height;
x = gSaveBlock1.pos.x;
y = gSaveBlock1.pos.y;
- if (gRegionMap->mapSectionId == MAPSEC_UNDERWATER6)
+ if (gRegionMap->mapSectionId == MAPSEC_UNDERWATER_128)
gRegionMap->playerIsInCave = TRUE;
break;
case 3:
@@ -737,8 +640,8 @@ static void InitializeCursorPosition(void)
mapHeader = Overworld_GetMapHeaderByGroupAndId(gSaveBlock1.warp4.mapGroup, gSaveBlock1.warp4.mapNum);
gRegionMap->mapSectionId = mapHeader->regionMapSectionId;
gRegionMap->playerIsInCave = TRUE;
- mapWidth = mapHeader->mapData->width;
- mapHeight = mapHeader->mapData->height;
+ mapWidth = mapHeader->mapLayout->width;
+ mapHeight = mapHeader->mapLayout->height;
x = gSaveBlock1.warp4.x;
y = gSaveBlock1.warp4.y;
break;
@@ -746,8 +649,8 @@ static void InitializeCursorPosition(void)
mapHeader = Overworld_GetMapHeaderByGroupAndId(gSaveBlock1.warp2.mapGroup, gSaveBlock1.warp2.mapNum);
gRegionMap->mapSectionId = mapHeader->regionMapSectionId;
gRegionMap->playerIsInCave = TRUE;
- mapWidth = mapHeader->mapData->width;
- mapHeight = mapHeader->mapData->height;
+ mapWidth = mapHeader->mapLayout->width;
+ mapHeight = mapHeader->mapLayout->height;
x = gSaveBlock1.warp2.x;
y = gSaveBlock1.warp2.y;
break;
@@ -756,7 +659,7 @@ static void InitializeCursorPosition(void)
struct WarpData *r4;
gRegionMap->mapSectionId = gMapHeader.regionMapSectionId;
- if (gRegionMap->mapSectionId != MAPSEC_UNK_0x57)
+ if (gRegionMap->mapSectionId != MAPSEC_DYNAMIC)
{
r4 = &gSaveBlock1.warp4;
mapHeader = Overworld_GetMapHeaderByGroupAndId(r4->mapGroup, r4->mapNum);
@@ -768,8 +671,8 @@ static void InitializeCursorPosition(void)
gRegionMap->mapSectionId = mapHeader->regionMapSectionId;
}
gRegionMap->playerIsInCave = FALSE;
- mapWidth = mapHeader->mapData->width;
- mapHeight = mapHeader->mapData->height;
+ mapWidth = mapHeader->mapLayout->width;
+ mapHeight = mapHeader->mapLayout->height;
x = r4->x;
y = r4->y;
}
@@ -799,7 +702,7 @@ static void InitializeCursorPosition(void)
x = 0;
break;
case MAPSEC_ROUTE_126:
- case MAPSEC_UNDERWATER2:
+ case MAPSEC_UNDERWATER_125:
x = 0;
if (gSaveBlock1.pos.x > 32)
x = 1;
@@ -855,14 +758,14 @@ static void sub_80FB600(void)
u16 r1;
gRegionMap->mapSectionId = mapHeader->regionMapSectionId;
- r1 = mapHeader->mapData->width / gRegionMapLocations[gRegionMap->mapSectionId].width;
+ r1 = mapHeader->mapLayout->width / gRegionMapLocations[gRegionMap->mapSectionId].width;
if (r1 == 0)
r1 = 1;
x = sp2 / r1;
if (x >= gRegionMapLocations[gRegionMap->mapSectionId].width)
x = gRegionMapLocations[gRegionMap->mapSectionId].width - 1;
- r1 = mapHeader->mapData->height / gRegionMapLocations[gRegionMap->mapSectionId].height;
+ r1 = mapHeader->mapLayout->height / gRegionMapLocations[gRegionMap->mapSectionId].height;
if (r1 == 0)
r1 = 1;
y = sp4 / r1;
@@ -880,7 +783,7 @@ static u16 sub_80FB758(u16 mapSectionId)
{
switch (mapSectionId)
{
- case MAPSEC_NONE:
+ case MAPSEC_NOTHING:
return 0;
case MAPSEC_LITTLEROOT_TOWN:
return FlagGet(FLAG_VISITED_LITTLEROOT_TOWN) ? 2 : 3;
@@ -929,21 +832,21 @@ u16 GetRegionMapSectionAt_(u16 x, u16 y)
return GetRegionMapSectionAt(x, y);
}
-static u16 sub_80FB9C0(u16 mapSectionId)
+static u16 GetOverworldMapFromUnderwaterMap_(u16 mapSectionId)
{
u16 i;
- for (i = 0; gUnknown_083E7684[i][0] != MAPSEC_NONE; i++)
+ for (i = 0; sUnderwaterMaps[i][0] != MAPSEC_NOTHING; i++)
{
- if (gUnknown_083E7684[i][0] == mapSectionId)
- return gUnknown_083E7684[i][1];
+ if (sUnderwaterMaps[i][0] == mapSectionId)
+ return sUnderwaterMaps[i][1];
}
return mapSectionId;
}
-u16 sub_80FBA04(u16 mapSectionId)
+u16 GetOverworldMapFromUnderwaterMap(u16 mapSectionId)
{
- return sub_80FB9C0(mapSectionId);
+ return GetOverworldMapFromUnderwaterMap_(mapSectionId);
}
static void sub_80FBA18(void)
@@ -952,7 +855,7 @@ static void sub_80FBA18(void)
u16 y;
u16 i;
- if (gRegionMap->mapSectionId == MAPSEC_NONE)
+ if (gRegionMap->mapSectionId == MAPSEC_NOTHING)
{
gRegionMap->everGrandeCityArea = 0;
return;
@@ -1307,7 +1210,7 @@ const u8 *GetMapSectionName(u8 *dest, u16 mapSectionId, u16 length)
{
if (mapSectionId == MAPSEC_SECRET_BASE)
return GetSecretBaseMapName(dest);
- if (mapSectionId < MAPSEC_NONE)
+ if (mapSectionId < MAPSEC_NOTHING)
return StringCopy(dest, gRegionMapLocations[mapSectionId].regionMapSectionId);
if (length == 0)
length = 18;
@@ -1318,7 +1221,7 @@ const u8 *CopyMapName(u8 *dest, u16 mapSectionId)
{
switch (mapSectionId)
{
- case MAPSEC_UNK_0x57:
+ case MAPSEC_DYNAMIC:
return StringCopy(dest, gOtherText_Ferry);
case MAPSEC_SECRET_BASE:
return StringCopy(dest, gOtherText_SecretBase);
@@ -1438,8 +1341,8 @@ static const struct SpritePalette sFlyTargetIconSpritePalette = {sFlyTargetIcons
static const u16 sSpecialFlyAreas[][2] =
{
// flag, mapSectionId
- {0x848, MAPSEC_BATTLE_TOWER},
- {0xFFFF, MAPSEC_NONE},
+ {FLAG_LANDMARK_BATTLE_TOWER, MAPSEC_BATTLE_TOWER},
+ {0xFFFF, MAPSEC_NOTHING},
};
static const struct OamData sFlyTargetOamData =
@@ -1572,7 +1475,7 @@ void CB2_InitFlyRegionMap(void)
CreateFlyTargetGraphics();
break;
case 8:
- BlendPalettes(0xFFFFFFFF, 16, 0);
+ BlendPalettes(0xFFFFFFFF, 16, RGB(0, 0, 0));
SetVBlankCallback(VBlankCB_FlyRegionMap);
break;
case 9:
@@ -1662,7 +1565,7 @@ static void CreateFlyTargetGraphics(void)
// Draws a light overlay on cities and towns that the player can fly to
static void CreateCityTownFlyTargetIcons(void)
{
- u16 canFlyFlag = 0x80F;
+ u16 canFlyFlag = FLAG_VISITED_LITTLEROOT_TOWN;
u16 i;
for (i = 0; i < 16; i++)
@@ -1704,7 +1607,7 @@ static void CreateSpecialAreaFlyTargetIcons(void)
{
u16 i;
- for (i = 0; sSpecialFlyAreas[i][1] != MAPSEC_NONE; i++)
+ for (i = 0; sSpecialFlyAreas[i][1] != MAPSEC_NOTHING; i++)
{
u16 x;
u16 y;
@@ -1756,7 +1659,7 @@ static void sub_80FC5B4(void)
switch (sFlyDataPtr->unk4)
{
case 0:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
sFlyDataPtr->unk4++;
break;
case 1:
@@ -1802,7 +1705,7 @@ void sub_80FC69C(void)
switch (sFlyDataPtr->unk4)
{
case 0:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
sFlyDataPtr->unk4++;
break;
case 1:
@@ -1880,7 +1783,7 @@ void debug_sub_8110D84(void)
switch (sFlyDataPtr->unk4)
{
case 0:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
sFlyDataPtr->unk4++;
break;
case 1:
@@ -1905,14 +1808,14 @@ void debug_sub_8110D84(void)
break;
case 5:
m4aSongNumStart(SE_SELECT);
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
sFlyDataPtr->unk4++;
break;
}
break;
case 3:
if (!UpdatePaletteFade())
- SetMainCallback2(sub_805469C);
+ SetMainCallback2(c2_exit_to_overworld_1_sub_8080DEC);
break;
case 4:
if (sub_80FAB60() != 0)
diff --git a/src/reset_rtc_screen.c b/src/reset_rtc_screen.c
index 8c2c23569..52ec0a919 100644
--- a/src/reset_rtc_screen.c
+++ b/src/reset_rtc_screen.c
@@ -278,10 +278,10 @@ void ResetRtcScreen_PrintTime(u8 x, u8 y, u16 days, u8 hours, u8 minutes, u8 sec
hours %= 24;
minutes %= 60;
seconds %= 60;
- sub_8072C44(gStringVar1, days, 24, 1);
+ AlignInt2InMenuWindow(gStringVar1, days, 24, 1);
dest = StringCopy(dest, gStringVar1);
dest = StringCopy(dest, gOtherText_Day);
- sub_8072C44(gStringVar1, hours, 18, 1);
+ AlignInt2InMenuWindow(gStringVar1, hours, 18, 1);
dest = StringCopy(dest, gStringVar1);
dest = StringCopy(dest, gUnknown_08376500);
dest = ConvertIntToDecimalStringN(dest, minutes, STR_CONV_MODE_LEADING_ZEROS, 2);
@@ -426,8 +426,8 @@ void CB2_InitResetRtcScreen(void)
ResetSpriteData();
ResetTasks();
ResetPaletteFade();
- Text_LoadWindowTemplate(&gWindowTemplate_81E6CE4);
- InitMenuWindow(&gWindowTemplate_81E6CE4);
+ Text_LoadWindowTemplate(&gMenuTextWindowTemplate);
+ InitMenuWindow(&gMenuTextWindowTemplate);
REG_DISPCNT = 4352;
SetVBlankCallback(VBlankCB_ResetRtcScreen);
SetMainCallback2(CB2_ResetRtcScreen);
@@ -504,7 +504,7 @@ void Task_ResetRtcScreen(u8 taskId)
switch (data[0])
{
case 0:
- BeginNormalPaletteFade(0xFFFFFFFF, 1, 0x10, 0, 0xFFFF);
+ BeginNormalPaletteFade(0xFFFFFFFF, 1, 16, 0, FADE_COLOR_WHITE);
data[0] = 1;
break;
case 1:
@@ -574,7 +574,7 @@ void Task_ResetRtcScreen(u8 taskId)
case 5:
if (gMain.newKeys & A_BUTTON)
{
- BeginNormalPaletteFade(0xFFFFFFFF, 1, 0, 0x10, 0xFFFF);
+ BeginNormalPaletteFade(0xFFFFFFFF, 1, 0, 16, FADE_COLOR_WHITE);
data[0] = 6;
}
else
diff --git a/src/roamer.c b/src/roamer.c
index 6ed5b6c89..57dd0745b 100644
--- a/src/roamer.c
+++ b/src/roamer.c
@@ -6,12 +6,6 @@
#include "region_map.h"
#include "constants/species.h"
-#ifdef SAPPHIRE
-#define ROAMER_SPECIES SPECIES_LATIAS
-#else
-#define ROAMER_SPECIES SPECIES_LATIOS
-#endif
-
enum
{
MAP_GRP = 0, // map group
@@ -228,7 +222,7 @@ void GetRoamerLocation(u8 *mapGroup, u8 *mapNum)
}
#if DEBUG
-void debug_sub_814A714(void)
+void Debug_CreateRoamer(void)
{
if (gSaveBlock1.location.mapGroup == 0)
{
@@ -238,7 +232,7 @@ void debug_sub_814A714(void)
}
}
-void debug_sub_814A73C(u8* str)
+void Debug_GetRoamerLocation(u8* str)
{
GetMapSectionName(str, sRoamerLocation[1], 0);
}
diff --git a/src/rom3.c b/src/rom3.c
index 7b3051b86..a9433695d 100644
--- a/src/rom3.c
+++ b/src/rom3.c
@@ -30,10 +30,10 @@ static EWRAM_DATA u8 gUnknown_020238C6 = 0;
extern u32 gUnknown_020239FC;
extern u8 gBattleBufferA[][0x200];
extern u8 gBattleBufferB[][0x200];
-extern u8 gActiveBank;
+extern u8 gActiveBattler;
extern u32 gBattleExecBuffer;
-extern u8 gNoOfAllBanks;
-extern u16 gBattlePartyID[];
+extern u8 gBattlersCount;
+extern u16 gBattlerPartyIndexes[];
extern u8 gBanksBySide[];
extern u16 gCurrentMove;
extern u16 gChosenMove;
@@ -43,7 +43,7 @@ extern u8 gBankAttacker;
extern u8 gBankTarget;
extern u8 gEffectBank;
extern u8 gStringBank;
-extern u8 gAbsentBankFlags;
+extern u8 gAbsentBattlerFlags;
extern u8 gMultiHitCounter;
extern u8 gUnknown_02024C78;
extern u8 gBattleOutcome;
@@ -120,7 +120,7 @@ void sub_800B950(void)
sub_800BD54();
if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
sub_8094978(i, 0);
}
}
@@ -139,7 +139,7 @@ void sub_800B9A8(void)
gBanksBySide[0] = 0;
gBattleBankFunc[1] = SetBankFuncToOpponentBufferRunCommand;
gBanksBySide[1] = 1;
- gNoOfAllBanks = 2;
+ gBattlersCount = 2;
}
else
{
@@ -152,7 +152,7 @@ void sub_800B9A8(void)
gBanksBySide[2] = 2;
gBattleBankFunc[3] = SetBankFuncToOpponentBufferRunCommand;
gBanksBySide[3] = 3;
- gNoOfAllBanks = 4;
+ gBattlersCount = 4;
}
}
@@ -170,7 +170,7 @@ void sub_800BA78(void)
gBanksBySide[0] = 0;
gBattleBankFunc[1] = SetBankFuncToLinkOpponentBufferRunCommand;
gBanksBySide[1] = 1;
- gNoOfAllBanks = 2;
+ gBattlersCount = 2;
}
else
{
@@ -178,7 +178,7 @@ void sub_800BA78(void)
gBanksBySide[1] = 0;
gBattleBankFunc[0] = SetBankFuncToLinkOpponentBufferRunCommand;
gBanksBySide[0] = 1;
- gNoOfAllBanks = 2;
+ gBattlersCount = 2;
}
return;
}
@@ -195,7 +195,7 @@ void sub_800BA78(void)
gBanksBySide[2] = 2;
gBattleBankFunc[3] = SetBankFuncToLinkOpponentBufferRunCommand;
gBanksBySide[3] = 3;
- gNoOfAllBanks = 4;
+ gBattlersCount = 4;
}
else
{
@@ -207,7 +207,7 @@ void sub_800BA78(void)
gBanksBySide[3] = 2;
gBattleBankFunc[2] = SetBankFuncToLinkOpponentBufferRunCommand;
gBanksBySide[2] = 3;
- gNoOfAllBanks = 4;
+ gBattlersCount = 4;
}
return;
@@ -237,12 +237,12 @@ void sub_800BA78(void)
case 0:
case 3:
gBanksBySide[gLinkPlayers[i].lp_field_18] = 0;
- gBattlePartyID[gLinkPlayers[i].lp_field_18] = 0;
+ gBattlerPartyIndexes[gLinkPlayers[i].lp_field_18] = 0;
break;
case 1:
case 2:
gBanksBySide[gLinkPlayers[i].lp_field_18] = 2;
- gBattlePartyID[gLinkPlayers[i].lp_field_18] = 3;
+ gBattlerPartyIndexes[gLinkPlayers[i].lp_field_18] = 3;
break;
}
}
@@ -257,12 +257,12 @@ void sub_800BA78(void)
case 0:
case 3:
gBanksBySide[gLinkPlayers[i].lp_field_18] = 0;
- gBattlePartyID[gLinkPlayers[i].lp_field_18] = 0;
+ gBattlerPartyIndexes[gLinkPlayers[i].lp_field_18] = 0;
break;
case 1:
case 2:
gBanksBySide[gLinkPlayers[i].lp_field_18] = 2;
- gBattlePartyID[gLinkPlayers[i].lp_field_18] = 3;
+ gBattlerPartyIndexes[gLinkPlayers[i].lp_field_18] = 3;
break;
}
}
@@ -274,18 +274,18 @@ void sub_800BA78(void)
case 0:
case 3:
gBanksBySide[gLinkPlayers[i].lp_field_18] = 1;
- gBattlePartyID[gLinkPlayers[i].lp_field_18] = 0;
+ gBattlerPartyIndexes[gLinkPlayers[i].lp_field_18] = 0;
break;
case 1:
case 2:
gBanksBySide[gLinkPlayers[i].lp_field_18] = 3;
- gBattlePartyID[gLinkPlayers[i].lp_field_18] = 3;
+ gBattlerPartyIndexes[gLinkPlayers[i].lp_field_18] = 3;
break;
}
}
}
}
- gNoOfAllBanks = 4;
+ gBattlersCount = 4;
}
void sub_800BD54(void)
@@ -295,7 +295,7 @@ void sub_800BD54(void)
if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
for (j = 0; j < 6; j++)
{
@@ -308,7 +308,7 @@ void sub_800BD54(void)
&& GetMonData(&gPlayerParty[j], MON_DATA_SPECIES2) != SPECIES_EGG
&& GetMonData(&gPlayerParty[j], MON_DATA_IS_EGG) == 0)
{
- gBattlePartyID[i] = j;
+ gBattlerPartyIndexes[i] = j;
break;
}
}
@@ -319,7 +319,7 @@ void sub_800BD54(void)
&& GetMonData(&gEnemyParty[j], MON_DATA_SPECIES2) != SPECIES_EGG
&& GetMonData(&gEnemyParty[j], MON_DATA_IS_EGG) == 0)
{
- gBattlePartyID[i] = j;
+ gBattlerPartyIndexes[i] = j;
break;
}
}
@@ -332,9 +332,9 @@ void sub_800BD54(void)
&& GetMonData(&gPlayerParty[j], MON_DATA_SPECIES) != 0 //Probably a typo by Game Freak. The rest use SPECIES2
&& GetMonData(&gPlayerParty[j], MON_DATA_SPECIES2) != SPECIES_EGG
&& GetMonData(&gPlayerParty[j], MON_DATA_IS_EGG) == 0
- && gBattlePartyID[i - 2] != j)
+ && gBattlerPartyIndexes[i - 2] != j)
{
- gBattlePartyID[i] = j;
+ gBattlerPartyIndexes[i] = j;
break;
}
}
@@ -344,9 +344,9 @@ void sub_800BD54(void)
&& GetMonData(&gEnemyParty[j], MON_DATA_SPECIES2) != 0
&& GetMonData(&gEnemyParty[j], MON_DATA_SPECIES2) != SPECIES_EGG
&& GetMonData(&gEnemyParty[j], MON_DATA_IS_EGG) == 0
- && gBattlePartyID[i - 2] != j)
+ && gBattlerPartyIndexes[i - 2] != j)
{
- gBattlePartyID[i] = j;
+ gBattlerPartyIndexes[i] = j;
break;
}
}
@@ -371,14 +371,14 @@ void PrepareBufferDataTransfer(u8 a, u8 *data, u16 size)
case 0:
for (i = 0; i < size; i++)
{
- gBattleBufferA[gActiveBank][i] = *data;
+ gBattleBufferA[gActiveBattler][i] = *data;
data++;
}
break;
case 1:
for (i = 0; i < size; i++)
{
- gBattleBufferB[gActiveBank][i] = *data;
+ gBattleBufferB[gActiveBattler][i] = *data;
data++;
}
break;
@@ -416,12 +416,12 @@ void PrepareBufferDataTransferLink(u8 a, u16 size, u8 *data)
}
ewram14000arr(0, gTasks[gUnknown_020238C4].data[14]) = a;
- ewram14000arr(1, gTasks[gUnknown_020238C4].data[14]) = gActiveBank;
+ ewram14000arr(1, gTasks[gUnknown_020238C4].data[14]) = gActiveBattler;
ewram14000arr(2, gTasks[gUnknown_020238C4].data[14]) = gBankAttacker;
ewram14000arr(3, gTasks[gUnknown_020238C4].data[14]) = gBankTarget;
ewram14000arr(4, gTasks[gUnknown_020238C4].data[14]) = r9;
ewram14000arr(5, gTasks[gUnknown_020238C4].data[14]) = (r9 & 0x0000FF00) >> 8;
- ewram14000arr(6, gTasks[gUnknown_020238C4].data[14]) = gAbsentBankFlags;
+ ewram14000arr(6, gTasks[gUnknown_020238C4].data[14]) = gAbsentBattlerFlags;
ewram14000arr(7, gTasks[gUnknown_020238C4].data[14]) = gEffectBank;
for (i = 0; i < size; i++)
@@ -563,7 +563,7 @@ void sub_800C47C(u8 taskId)
{
gBankAttacker = ewram15000arr(2, gTasks[taskId].data[15]);
gBankTarget = ewram15000arr(3, gTasks[taskId].data[15]);
- gAbsentBankFlags = ewram15000arr(6, gTasks[taskId].data[15]);
+ gAbsentBattlerFlags = ewram15000arr(6, gTasks[taskId].data[15]);
gEffectBank = ewram15000arr(7, gTasks[taskId].data[15]);
}
break;
diff --git a/src/rom6.c b/src/rom6.c
index ffd01fdb9..be14f1731 100644
--- a/src/rom6.c
+++ b/src/rom6.c
@@ -1,5 +1,5 @@
#include "global.h"
-#include "constants/map_objects.h"
+#include "constants/event_objects.h"
#include "constants/songs.h"
#include "rom6.h"
#include "braille_puzzles.h"
@@ -13,14 +13,15 @@
#include "sound.h"
#include "sprite.h"
#include "task.h"
+#include "constants/field_effects.h"
extern u16 gSpecialVar_LastTalked;
extern void (*gFieldCallback)(void);
extern u8 gLastFieldPokeMenuOpened;
-extern void (*gUnknown_03005CE4)(void);
+extern void (*gPostMenuFieldCallback)(void);
extern u8 S_UseRockSmash[];
-EWRAM_DATA struct MapPosition gUnknown_0203923C = {0};
+EWRAM_DATA struct MapPosition gPlayerFacingPosition = {0};
static void task08_080C9820(u8);
static void sub_810B3DC(u8);
@@ -31,39 +32,39 @@ static void sub_810B58C(void);
static void sub_810B5D8(void);
static void sub_810B634(void);
-bool8 npc_before_player_of_type(u8 a)
+bool8 SetLastTalkedObjectInFrontOfPlayer(u8 graphicsId)
{
- u8 mapObjId;
+ u8 eventObjId;
- GetXYCoordsOneStepInFrontOfPlayer(&gUnknown_0203923C.x, &gUnknown_0203923C.y);
- gUnknown_0203923C.height = PlayerGetZCoord();
- mapObjId = GetFieldObjectIdByXYZ(gUnknown_0203923C.x, gUnknown_0203923C.y, gUnknown_0203923C.height);
- if (gMapObjects[mapObjId].graphicsId != a)
+ GetXYCoordsOneStepInFrontOfPlayer(&gPlayerFacingPosition.x, &gPlayerFacingPosition.y);
+ gPlayerFacingPosition.height = PlayerGetZCoord();
+ eventObjId = GetEventObjectIdByXYZ(gPlayerFacingPosition.x, gPlayerFacingPosition.y, gPlayerFacingPosition.height);
+ if (gEventObjects[eventObjId].graphicsId != graphicsId)
{
return FALSE;
}
else
{
- gSpecialVar_LastTalked = gMapObjects[mapObjId].localId;
+ gSpecialVar_LastTalked = gEventObjects[eventObjId].localId;
return TRUE;
}
}
u8 oei_task_add(void)
{
- GetXYCoordsOneStepInFrontOfPlayer(&gUnknown_0203923C.x, &gUnknown_0203923C.y);
+ GetXYCoordsOneStepInFrontOfPlayer(&gPlayerFacingPosition.x, &gPlayerFacingPosition.y);
return CreateTask(task08_080C9820, 8);
}
static void task08_080C9820(u8 taskId)
{
- u8 mapObjId;
+ u8 eventObjId;
ScriptContext2_Enable();
gPlayerAvatar.preventStep = TRUE;
- mapObjId = gPlayerAvatar.mapObjectId;
- if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(&gMapObjects[mapObjId])
- || FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[mapObjId]))
+ eventObjId = gPlayerAvatar.eventObjectId;
+ if (!EventObjectIsMovementOverridden(&gEventObjects[eventObjId])
+ || EventObjectClearHeldMovementIfFinished(&gEventObjects[eventObjId]))
{
if (gMapHeader.mapType == MAP_TYPE_UNDERWATER)
{
@@ -73,7 +74,7 @@ static void task08_080C9820(u8 taskId)
else
{
sub_8059BF4();
- FieldObjectSetSpecialAnim(&gMapObjects[mapObjId], 0x39);
+ EventObjectSetHeldMovement(&gEventObjects[eventObjId], MOVEMENT_ACTION_START_ANIM_IN_DIRECTION);
gTasks[taskId].func = sub_810B3DC;
}
}
@@ -81,7 +82,7 @@ static void task08_080C9820(u8 taskId)
static void sub_810B3DC(u8 taskId)
{
- if (FieldObjectCheckIfSpecialAnimFinishedOrInactive(&gMapObjects[gPlayerAvatar.mapObjectId]) == TRUE)
+ if (EventObjectCheckHeldMovementStatus(&gEventObjects[gPlayerAvatar.eventObjectId]) == TRUE)
{
FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT);
gTasks[taskId].func = sub_810B428;
@@ -90,9 +91,9 @@ static void sub_810B3DC(u8 taskId)
static void sub_810B428(u8 taskId)
{
- if (!FieldEffectActiveListContains(6))
+ if (!FieldEffectActiveListContains(FLDEFF_FIELD_MOVE_SHOW_MON))
{
- gFieldEffectArguments[1] = player_get_direction_lower_nybble();
+ gFieldEffectArguments[1] = GetPlayerFacingDirection();
if (gFieldEffectArguments[1] == 1)
gFieldEffectArguments[2] = 0;
if (gFieldEffectArguments[1] == 2)
@@ -101,7 +102,7 @@ static void sub_810B428(u8 taskId)
gFieldEffectArguments[2] = 2;
if (gFieldEffectArguments[1] == 4)
gFieldEffectArguments[2] = 3;
- sub_805B980(&gMapObjects[gPlayerAvatar.mapObjectId], GetPlayerAvatarGraphicsIdByCurrentState());
+ sub_805B980(&gEventObjects[gPlayerAvatar.eventObjectId], GetPlayerAvatarGraphicsIdByCurrentState());
StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], gFieldEffectArguments[2]);
FieldEffectActiveListRemove(6);
gTasks[taskId].func = sub_810B4CC;
@@ -120,7 +121,7 @@ static void sub_810B4CC(u8 taskId)
#if DEBUG
void debug_sub_8120968(void)
{
- if (npc_before_player_of_type(MAP_OBJ_GFX_BREAKABLE_ROCK) == TRUE)
+ if (SetLastTalkedObjectInFrontOfPlayer(EVENT_OBJ_GFX_BREAKABLE_ROCK) == TRUE)
{
gLastFieldPokeMenuOpened = 0;
sub_810B53C();
@@ -134,10 +135,10 @@ void debug_sub_8120968(void)
bool8 SetUpFieldMove_RockSmash(void)
{
- if (npc_before_player_of_type(0x56) == TRUE)
+ if (SetLastTalkedObjectInFrontOfPlayer(EVENT_OBJ_GFX_BREAKABLE_ROCK) == TRUE)
{
- gFieldCallback = FieldCallback_Teleport;
- gUnknown_03005CE4 = sub_810B53C;
+ gFieldCallback = FieldCallback_PrepareFadeInFromMenu;
+ gPostMenuFieldCallback = sub_810B53C;
return TRUE;
}
else
@@ -173,8 +174,8 @@ int SetUpFieldMove_Dig(void)
{
if (CanUseEscapeRopeOnCurrMap() == TRUE)
{
- gFieldCallback = FieldCallback_Teleport;
- gUnknown_03005CE4 = sub_810B5D8;
+ gFieldCallback = FieldCallback_PrepareFadeInFromMenu;
+ gPostMenuFieldCallback = sub_810B5D8;
return TRUE;
}
else
@@ -197,7 +198,7 @@ int FldEff_UseDig(void)
gTasks[taskId].data[8] = (u32)sub_810B634 >> 16;
gTasks[taskId].data[9] = (u32)sub_810B634;
if (!ShouldDoBrailleDigEffect())
- SetPlayerAvatarTransitionFlags(1);
+ SetPlayerAvatarTransitionFlags(PLAYER_AVATAR_FLAG_ON_FOOT);
return 0;
}
diff --git a/src/rom_800D42C.c b/src/rom_800D42C.c
deleted file mode 100644
index a1b0f5ecb..000000000
--- a/src/rom_800D42C.c
+++ /dev/null
@@ -1,119 +0,0 @@
-#include "global.h"
-#include "battle.h"
-#include "link.h"
-#include "text.h"
-#include "ewram.h"
-
-extern u16 gBattleTypeFlags;
-extern u8 gBattleOutcome;
-
-extern struct Window gUnknown_03004210;
-
-extern u8 BattleText_Win[];
-extern u8 BattleText_Loss[];
-extern u8 BattleText_Tie[];
-
-#if ENGLISH
-#define LEFT_MESSAGE_X 6
-#define RIGHT_MESSAGE_X 21
-#define TILE_OFFSET_LOSS 168
-#elif GERMAN
-#define LEFT_MESSAGE_X 5
-#define RIGHT_MESSAGE_X 20
-#define TILE_OFFSET_LOSS 172
-#endif
-#define TILE_OFFSET_WIN 160
-#define CENTER_MESSAGE_X 13
-#define MESSAGE_Y 2
-
-#define PRINT_MESSAGE(text, tileDataStartOffset, x) \
-{ \
- Text_InitWindow(&gUnknown_03004210, text, tileDataStartOffset, x, MESSAGE_Y); \
- Text_PrintWindow8002F44(&gUnknown_03004210); \
-}
-
-#define PRINT_MESSAGE_LEFT(text, tileDataStartOffset) PRINT_MESSAGE(text, tileDataStartOffset, LEFT_MESSAGE_X)
-#define PRINT_MESSAGE_RIGHT(text, tileDataStartOffset) PRINT_MESSAGE(text, tileDataStartOffset, RIGHT_MESSAGE_X)
-
-void PrintLinkBattleWinLossTie(void)
-{
-
- if (gBattleOutcome == 3)
- {
- PRINT_MESSAGE(BattleText_Tie, TILE_OFFSET_WIN, CENTER_MESSAGE_X);
- return;
- }
-
- if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
- {
- // Double battle?
-
- if (gBattleOutcome == 1)
- {
-
- // lp_field_18 = player position?
- switch (gLinkPlayers[gBattleStruct->linkPlayerIndex].lp_field_18)
- {
- case 0:
- case 2:
- PRINT_MESSAGE_LEFT(BattleText_Win, TILE_OFFSET_WIN);
- PRINT_MESSAGE_RIGHT(BattleText_Loss, TILE_OFFSET_LOSS);
- return;
-
- case 1:
- case 3:
- PRINT_MESSAGE_RIGHT(BattleText_Win, TILE_OFFSET_WIN)
- PRINT_MESSAGE_LEFT(BattleText_Loss, TILE_OFFSET_LOSS)
- return;
- }
- }
- else
- {
-
- switch (gLinkPlayers[gBattleStruct->linkPlayerIndex].lp_field_18)
- {
- case 1:
- case 3:
- PRINT_MESSAGE_LEFT(BattleText_Win, TILE_OFFSET_WIN);
- PRINT_MESSAGE_RIGHT(BattleText_Loss, TILE_OFFSET_LOSS);
- return;
-
- case 0:
- case 2:
- PRINT_MESSAGE_RIGHT(BattleText_Win, TILE_OFFSET_WIN);
- PRINT_MESSAGE_LEFT(BattleText_Loss, TILE_OFFSET_LOSS);
- return;
- }
- }
-
- return;
- }
-
-
- if (gBattleOutcome == 1)
- {
- if (gLinkPlayers[gBattleStruct->linkPlayerIndex].lp_field_18 != 0)
- {
- PRINT_MESSAGE_RIGHT(BattleText_Win, TILE_OFFSET_WIN);
- PRINT_MESSAGE_LEFT(BattleText_Loss, TILE_OFFSET_LOSS);
- }
- else
- {
- PRINT_MESSAGE_LEFT(BattleText_Win, TILE_OFFSET_WIN);
- PRINT_MESSAGE_RIGHT(BattleText_Loss, TILE_OFFSET_LOSS);
- }
- }
- else
- {
- if (gLinkPlayers[gBattleStruct->linkPlayerIndex].lp_field_18 != 0)
- {
- PRINT_MESSAGE_LEFT(BattleText_Win, TILE_OFFSET_WIN);
- PRINT_MESSAGE_RIGHT(BattleText_Loss, TILE_OFFSET_LOSS);
- }
- else
- {
- PRINT_MESSAGE_RIGHT(BattleText_Win, TILE_OFFSET_WIN);
- PRINT_MESSAGE_LEFT(BattleText_Loss, TILE_OFFSET_LOSS);
- }
- }
-}
diff --git a/src/rom_8077ABC.c b/src/rom_8077ABC.c
index 9d864fec3..00ce3d8df 100644
--- a/src/rom_8077ABC.c
+++ b/src/rom_8077ABC.c
@@ -27,18 +27,12 @@
#define NUM_BATTLE_SLOTS 4
-#define gBattleMonPartyPositions gBattlePartyID
+#define gBattleMonPartyPositions gBattlerPartyIndexes
#define gCastformElevations gUnknownCastformData_0837F5A8
#define gCastformBackSpriteYCoords gUnknown_0837F5AC
#define gTransformPersonalities gTransformedPersonalities
#define gBattleMonSprites gBankSpriteIds
-struct TransformStatus
-{
- u16 unknown;
- u16 species;
-};
-
struct Struct_gUnknown_0837F578
{
u8 field_0;
@@ -56,7 +50,6 @@ struct Struct_2017810
#define BG2CNT (*(vBgCnt *)REG_ADDR_BG2CNT)
#define BG3CNT (*(vBgCnt *)REG_ADDR_BG3CNT)
-extern struct OamData gOamData_837DF9C[];
extern const union AnimCmd *const gDummySpriteAnimTable[];
extern const union AffineAnimCmd *const gDummySpriteAffineAnimTable[];
@@ -70,7 +63,7 @@ extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
extern s16 gBattleAnimArgs[8];
extern u8 gBanksBySide[NUM_BATTLE_SLOTS];
-extern u8 gNoOfAllBanks; // gNumBattleMons?
+extern u8 gBattlersCount; // gNumBattleMons?
extern struct OamMatrix gOamMatrices[];
extern struct Struct_2017810 unk_2017810[];
extern u8 gAnimFriendship;
@@ -129,7 +122,7 @@ const struct SpriteTemplate gSpriteTemplate_837F5B0[] =
{
.tileTag = 55125,
.paletteTag = 55125,
- .oam = gOamData_837DF9C,
+ .oam = &gOamData_837DF9C,
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
@@ -138,7 +131,7 @@ const struct SpriteTemplate gSpriteTemplate_837F5B0[] =
{
.tileTag = 55126,
.paletteTag = 55126,
- .oam = gOamData_837DF9C,
+ .oam = &gOamData_837DF9C,
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
@@ -154,7 +147,7 @@ const struct SpriteSheet gUnknown_0837F5E0[] =
// pkmn_form.c
-u8 GetBankPosition(u8 slot, u8 a2)
+u8 GetBattlerSpriteCoord(u8 slot, u8 a2)
{
u8 var;
u16 species;
@@ -169,10 +162,10 @@ u8 GetBankPosition(u8 slot, u8 a2)
{
case 0:
case 2:
- var = gUnknown_0837F578[IS_DOUBLE_BATTLE()][GetBankIdentity(slot)].field_0;
+ var = gUnknown_0837F578[IS_DOUBLE_BATTLE()][GetBattlerPosition(slot)].field_0;
break;
case 1:
- var = gUnknown_0837F578[IS_DOUBLE_BATTLE()][GetBankIdentity(slot)].field_1;
+ var = gUnknown_0837F578[IS_DOUBLE_BATTLE()][GetBattlerPosition(slot)].field_1;
break;
case 3:
case 4:
@@ -186,7 +179,7 @@ u8 GetBankPosition(u8 slot, u8 a2)
}
else
{
- if (GetBankSide(slot))
+ if (GetBattlerSide(slot))
{
transform = &eTransformStatuses[slot];
if (!transform->species)
@@ -220,7 +213,7 @@ u8 sub_8077BFC(u8 slot, u16 species)
u8 ret;
u16 var;
- if (GetBankSide(slot) == 0 || IsContest())
+ if (GetBattlerSide(slot) == 0 || IsContest())
{
if (species == SPECIES_UNOWN)
{
@@ -294,7 +287,7 @@ u8 sub_8077BFC(u8 slot, u16 species)
u8 sub_8077DD8(u8 slot, u16 species)
{
u8 ret = 0;
- if (GetBankSide(slot) == 1)
+ if (GetBattlerSide(slot) == 1)
{
if (!IsContest())
{
@@ -314,7 +307,7 @@ u8 sub_8077E44(u8 slot, u16 species, u8 a3)
u16 offset;
u8 y;
- if (GetBankSide(slot) == 0 || IsContest())
+ if (GetBattlerSide(slot) == 0 || IsContest())
{
offset = sub_8077BFC(slot, species);
}
@@ -323,10 +316,10 @@ u8 sub_8077E44(u8 slot, u16 species, u8 a3)
offset = sub_8077BFC(slot, species);
offset -= sub_8077DD8(slot, species);
}
- y = offset + gUnknown_0837F578[IS_DOUBLE_BATTLE()][GetBankIdentity(slot)].field_1;
+ y = offset + gUnknown_0837F578[IS_DOUBLE_BATTLE()][GetBattlerPosition(slot)].field_1;
if (a3)
{
- if (GetBankSide(slot) == 0)
+ if (GetBattlerSide(slot) == 0)
y += 8;
if (y > 104)
y = 104;
@@ -362,22 +355,22 @@ u8 sub_8077EE4(u8 slot, u8 a2)
}
else
{
- return GetBankPosition(slot, a2);
+ return GetBattlerSpriteCoord(slot, a2);
}
}
u8 sub_8077F68(u8 slot)
{
- return GetBankPosition(slot, 4);
+ return GetBattlerSpriteCoord(slot, 4);
}
u8 sub_8077F7C(u8 slot)
{
u16 var;
- if (GetBankSide(slot) != 0)
- var = GetBankPosition(slot, 1) + 16;
+ if (GetBattlerSide(slot) != 0)
+ var = GetBattlerSpriteCoord(slot, 1) + 16;
else
- var = GetBankPosition(slot, 1) + 17;
+ var = GetBattlerSpriteCoord(slot, 1) + 17;
return var;
}
@@ -387,10 +380,10 @@ u8 sub_8077FC0(u8 slot)
u8 r6;
struct TransformStatus *transform;
- r6 = GetBankPosition(slot, 1);
+ r6 = GetBattlerSpriteCoord(slot, 1);
if (!IsContest())
{
- if (GetBankSide(slot) != 0)
+ if (GetBattlerSide(slot) != 0)
{
transform = &eTransformStatuses[slot];
if (!transform->species) {
@@ -407,13 +400,13 @@ u8 sub_8077FC0(u8 slot)
else
var = transform->species;
}
- if (GetBankSide(slot) != 0)
+ if (GetBattlerSide(slot) != 0)
r6 -= sub_8077DD8(slot, var);
}
return r6;
}
-u8 GetAnimBankSpriteId(u8 whichBank)
+u8 GetAnimBattlerSpriteId(u8 whichBank)
{
u8 *sprites;
@@ -634,8 +627,8 @@ void unref_sub_8078414(struct Sprite *sprite)
{
sprite->data[1] = sprite->pos1.x + sprite->pos2.x;
sprite->data[3] = sprite->pos1.y + sprite->pos2.y;
- sprite->data[2] = GetBankPosition(gAnimBankTarget, 2);
- sprite->data[4] = GetBankPosition(gAnimBankTarget, 3);
+ sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2);
+ sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3);
sprite->callback = sub_80782F8;
}
@@ -702,8 +695,8 @@ void unref_sub_8078588(struct Sprite *sprite)
{
sprite->data[1] = sprite->pos1.x + sprite->pos2.x;
sprite->data[3] = sprite->pos1.y + sprite->pos2.y;
- sprite->data[2] = GetBankPosition(gAnimBankAttacker, 2);
- sprite->data[4] = GetBankPosition(gAnimBankAttacker, 3);
+ sprite->data[2] = GetBattlerSpriteCoord(gAnimBankAttacker, 2);
+ sprite->data[4] = GetBattlerSpriteCoord(gAnimBankAttacker, 3);
sprite->callback = sub_80782F8;
}
@@ -741,14 +734,14 @@ void sub_8078634(u8 task)
void sub_8078650(struct Sprite *sprite)
{
- sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2);
- sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3);
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 3);
}
void sub_807867C(struct Sprite *sprite, s16 a2)
{
- u16 v1 = GetBankPosition(gAnimBankAttacker, 0);
- u16 v2 = GetBankPosition(gAnimBankTarget, 0);
+ u16 v1 = GetBattlerSpriteCoord(gAnimBankAttacker, 0);
+ u16 v2 = GetBattlerSpriteCoord(gAnimBankTarget, 0);
if (v1 > v2)
{
@@ -760,7 +753,7 @@ void sub_807867C(struct Sprite *sprite, s16 a2)
}
else
{
- if (GetBankSide(gAnimBankAttacker) != 0)
+ if (GetBattlerSide(gAnimBankAttacker) != 0)
sprite->pos1.x -= a2;
else
sprite->pos1.x += a2;
@@ -820,21 +813,21 @@ void InitAnimSpritePos(struct Sprite *sprite, u8 a2)
sprite->pos1.y += gBattleAnimArgs[1];
}
-u8 GetBankSide(u8 slot)
+u8 GetBattlerSide(u8 slot)
{
return gBanksBySide[slot] & 1;
}
-u8 GetBankIdentity(u8 slot)
+u8 GetBattlerPosition(u8 slot)
{
return gBanksBySide[slot];
}
-u8 GetBankByIdentity(u8 slot)
+u8 GetBattlerAtPosition(u8 slot)
{
u8 i;
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
if (gBanksBySide[i] == slot)
break;
@@ -856,7 +849,7 @@ bool8 IsBankSpritePresent(u8 slot)
{
if (gBanksBySide[slot] == 0xff)
return FALSE;
- if (GetBankSide(slot) != SIDE_PLAYER)
+ if (GetBattlerSide(slot) != B_SIDE_PLAYER)
{
if (GetMonData(&gEnemyParty[gBattleMonPartyPositions[slot]], MON_DATA_HP) != 0)
return TRUE;
@@ -891,7 +884,7 @@ void sub_8078914(struct Struct_sub_8078914 *unk)
}
}
-void sub_8078954(struct Struct_sub_8078914 *unk)
+void sub_8078954(struct Struct_sub_8078914 *unk, u8 b)
{
if (IsContest())
{
@@ -899,7 +892,7 @@ void sub_8078954(struct Struct_sub_8078914 *unk)
unk->field_4 = (u8 *)(VRAM + 0xf000);
unk->field_8 = 0xe;
}
- else if (GetBankIdentity_permutated(gAnimBankAttacker) == 1)
+ else if (GetBattlerPosition_permutated(gAnimBankAttacker) == 1)
{
unk->field_0 = (u8 *)(VRAM + 0x4000);
unk->field_4 = (u8 *)(VRAM + 0xe000);
@@ -1159,7 +1152,7 @@ bool8 sub_8078E38()
{
if (IsContest())
{
- if (gSprites[GetAnimBankSpriteId(0)].data[2] == 0xc9 /* XXX SPECIES_UNOWN? */)
+ if (gSprites[GetAnimBattlerSpriteId(0)].data[2] == 0xc9 /* XXX SPECIES_UNOWN? */)
return FALSE;
return TRUE;
}
@@ -1338,25 +1331,25 @@ u32 sub_80792C0(u8 a1, u8 a2, u8 a3, u8 a4)
}
} else {
if (a1) {
- if (IsAnimBankSpriteVisible(GetBankByIdentity(0))) {
- var |= 1 << (GetBankByIdentity(0) + 16);
+ if (IsAnimBankSpriteVisible(GetBattlerAtPosition(0))) {
+ var |= 1 << (GetBattlerAtPosition(0) + 16);
}
}
if (a2) {
- if (IsAnimBankSpriteVisible(GetBankByIdentity(2))) {
- shift = GetBankByIdentity(2) + 16;
+ if (IsAnimBankSpriteVisible(GetBattlerAtPosition(2))) {
+ shift = GetBattlerAtPosition(2) + 16;
var |= 1 << shift;
}
}
if (a3) {
- if (IsAnimBankSpriteVisible(GetBankByIdentity(1))) {
- shift = GetBankByIdentity(1) + 16;
+ if (IsAnimBankSpriteVisible(GetBattlerAtPosition(1))) {
+ shift = GetBattlerAtPosition(1) + 16;
var |= 1 << shift;
}
}
if (a4) {
- if (IsAnimBankSpriteVisible(GetBankByIdentity(3))) {
- shift = GetBankByIdentity(3) + 16;
+ if (IsAnimBankSpriteVisible(GetBattlerAtPosition(3))) {
+ shift = GetBattlerAtPosition(3) + 16;
var |= 1 << shift;
}
}
@@ -1371,7 +1364,7 @@ u8 sub_80793A8(u8 a1)
u8 unref_sub_80793B0(u8 a1)
{
- return GetBankByIdentity(a1);
+ return GetBattlerAtPosition(a1);
}
void sub_80793C4(struct Sprite *sprite)
@@ -1421,12 +1414,12 @@ void TranslateAnimSpriteToTargetMonLocation(struct Sprite *sprite)
v2 = 1;
InitAnimSpritePos(sprite, v1);
- if (GetBankSide(gAnimBankAttacker) != SIDE_PLAYER)
+ if (GetBattlerSide(gAnimBankAttacker) != B_SIDE_PLAYER)
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
sprite->data[0] = gBattleAnimArgs[4];
- sprite->data[2] = GetBankPosition(gAnimBankTarget, 2) + gBattleAnimArgs[2];
- sprite->data[4] = GetBankPosition(gAnimBankTarget, v2) + gBattleAnimArgs[3];
+ sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2) + gBattleAnimArgs[2];
+ sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, v2) + gBattleAnimArgs[3];
sprite->callback = StartTranslateAnimSpriteByDeltas;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
}
@@ -1434,11 +1427,11 @@ void TranslateAnimSpriteToTargetMonLocation(struct Sprite *sprite)
void sub_80794A8(struct Sprite *sprite)
{
InitAnimSpritePos(sprite, 1);
- if (GetBankSide(gAnimBankAttacker))
+ if (GetBattlerSide(gAnimBankAttacker))
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
sprite->data[0] = gBattleAnimArgs[4];
- sprite->data[2] = GetBankPosition(gAnimBankTarget, 2) + gBattleAnimArgs[2];
- sprite->data[4] = GetBankPosition(gAnimBankTarget, 3) + gBattleAnimArgs[3];
+ sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2) + gBattleAnimArgs[2];
+ sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3) + gBattleAnimArgs[3];
sprite->data[5] = gBattleAnimArgs[5];
InitAnimSpriteTranslationOverDuration(sprite);
sprite->callback = sub_8079518;
@@ -1474,12 +1467,12 @@ void sub_8079534(struct Sprite *sprite)
sub_8078764(sprite, r4);
slot = gAnimBankTarget;
}
- if (GetBankSide(gAnimBankAttacker))
+ if (GetBattlerSide(gAnimBankAttacker))
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
sub_8078764(sprite, r4);
sprite->data[0] = gBattleAnimArgs[4];
- sprite->data[2] = GetBankPosition(slot, 2) + gBattleAnimArgs[2];
- sprite->data[4] = GetBankPosition(slot, r7) + gBattleAnimArgs[3];
+ sprite->data[2] = GetBattlerSpriteCoord(slot, 2) + gBattleAnimArgs[2];
+ sprite->data[4] = GetBattlerSpriteCoord(slot, r7) + gBattleAnimArgs[3];
sprite->callback = StartTranslateAnimSpriteByDeltas;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
}
@@ -1487,7 +1480,7 @@ void sub_8079534(struct Sprite *sprite)
s16 duplicate_obj_of_side_rel2move_in_transparent_mode(u8 a1)
{
u16 i;
- u8 sprite = GetAnimBankSpriteId(a1);
+ u8 sprite = GetAnimBattlerSpriteId(a1);
if (sprite != 0xff)
{
@@ -1573,7 +1566,7 @@ void sub_80796F8(u8 taskId)
// arg 4: number of times to blend in and out
void AnimTask_BlendMonInAndOut(u8 task)
{
- u8 spriteId = GetAnimBankSpriteId(gBattleAnimArgs[0]);
+ u8 spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
if (spriteId == 0xff)
{
DestroyAnimVisualTask(task);
@@ -1767,7 +1760,7 @@ u16 sub_8079B10(u8 sprite)
}
else
{
- if (!GetBankSide(i))
+ if (!GetBattlerSide(i))
{
transform = &eTransformStatuses[slot];
if (!transform->species)
@@ -1872,7 +1865,7 @@ void sub_8079E24()
{
int i;
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
if (IsAnimBankSpriteVisible(i))
{
@@ -1896,12 +1889,12 @@ u8 sub_8079E90(u8 bank)
}
else
{
- identity = GetBankIdentity(bank);
- if (identity == IDENTITY_PLAYER_MON1)
+ identity = GetBattlerPosition(bank);
+ if (identity == B_POSITION_PLAYER_LEFT)
ret = 30;
- else if (identity == IDENTITY_PLAYER_MON2)
+ else if (identity == B_POSITION_PLAYER_RIGHT)
ret = 20;
- else if (identity == IDENTITY_OPPONENT_MON1)
+ else if (identity == B_POSITION_OPPONENT_LEFT)
ret = 40;
else
ret = 50;
@@ -1911,7 +1904,7 @@ u8 sub_8079E90(u8 bank)
u8 sub_8079ED4(u8 slot)
{
- u8 status = GetBankIdentity(slot);
+ u8 status = GetBattlerPosition(slot);
if (IsContest())
return 2;
@@ -1921,13 +1914,13 @@ u8 sub_8079ED4(u8 slot)
return BG1CNT.priority;
}
-u8 GetBankIdentity_permutated(u8 slot)
+u8 GetBattlerPosition_permutated(u8 slot)
{
u8 status;
if (!IsContest())
{
- status = GetBankIdentity(slot);
+ status = GetBattlerPosition(slot);
if (status == 0 || status == 3)
return 2;
else
@@ -1971,7 +1964,7 @@ u8 sub_8079F44(u16 species, u8 isBackpic, u8 a3, s16 a4, s16 a5, u8 a6, u32 a7,
);
}
- DmaCopy32Defvars(3, (void *)0x2000000, (void *)(VRAM + 0x10000 + (sheet * 0x20)), 0x800);
+ DmaCopy32Defvars(3, (void *)0x2000000, (void *)(OBJ_VRAM0 + (sheet * 0x20)), 0x800);
if (!isBackpic)
sprite = CreateSprite(&gSpriteTemplate_837F5B0[a3], a4, a5 + gMonFrontPicCoords[species].y_offset, a6);
@@ -2037,7 +2030,7 @@ s16 sub_807A100(u8 slot, u8 a2)
}
else
{
- if (!GetBankSide(slot))
+ if (!GetBattlerSide(slot))
{
transform = &eTransformStatuses[slot];
if (!transform->species)
@@ -2112,15 +2105,15 @@ s16 sub_807A100(u8 slot, u8 a2)
case 1:
return (coords->coords >> 4) * 8;
case 4:
- return GetBankPosition(slot, 2) - ((coords->coords >> 4) * 4);
+ return GetBattlerSpriteCoord(slot, 2) - ((coords->coords >> 4) * 4);
case 5:
- return GetBankPosition(slot, 2) + ((coords->coords >> 4) * 4);
+ return GetBattlerSpriteCoord(slot, 2) + ((coords->coords >> 4) * 4);
case 2:
- return GetBankPosition(slot, 3) - ((coords->coords & 0xf) * 4);
+ return GetBattlerSpriteCoord(slot, 3) - ((coords->coords & 0xf) * 4);
case 3:
- return GetBankPosition(slot, 3) + ((coords->coords & 0xf) * 4);
+ return GetBattlerSpriteCoord(slot, 3) + ((coords->coords & 0xf) * 4);
case 6:
- ret = GetBankPosition(slot, 1) + 0x1f;
+ ret = GetBattlerSpriteCoord(slot, 1) + 0x1f;
return ret - coords->y_offset;
default:
return 0;
@@ -2143,12 +2136,12 @@ void SetAverageBattlerPositions(u8 slot, bool8 a2, s16 *x, s16 *y)
v1 = 2;
v2 = 3;
}
- v3 = GetBankPosition(slot, v1);
- v4 = GetBankPosition(slot, v2);
+ v3 = GetBattlerSpriteCoord(slot, v1);
+ v4 = GetBattlerSpriteCoord(slot, v2);
if (IsDoubleBattle() && !IsContest())
{
- v5 = GetBankPosition(slot ^ 2, v1);
- v6 = GetBankPosition(slot ^ 2, v2);
+ v5 = GetBattlerSpriteCoord(slot ^ 2, v1);
+ v6 = GetBattlerSpriteCoord(slot ^ 2, v2);
}
else
{
@@ -2176,7 +2169,7 @@ u8 sub_807A4A0(int bank, u8 sprite, int species)
void sub_807A544(struct Sprite *sprite)
{
sub_8078650(sprite);
- if (GetBankSide(gAnimBankAttacker))
+ if (GetBattlerSide(gAnimBankAttacker))
{
sprite->pos1.x -= gBattleAnimArgs[0];
gBattleAnimArgs[3] = -gBattleAnimArgs[3];
@@ -2197,7 +2190,7 @@ void sub_807A544(struct Sprite *sprite)
void sub_807A5C4(struct Sprite *sprite)
{
- if (GetBankSide(gAnimBankAttacker))
+ if (GetBattlerSide(gAnimBankAttacker))
{
sprite->pos1.x -= gBattleAnimArgs[0];
gBattleAnimArgs[3] *= -1;
@@ -2221,7 +2214,7 @@ void sub_807A5C4(struct Sprite *sprite)
void sub_807A63C(struct Sprite *sprite)
{
sub_8078650(sprite);
- if (GetBankSide(gAnimBankAttacker))
+ if (GetBattlerSide(gAnimBankAttacker))
sprite->pos1.x -= gBattleAnimArgs[0];
else
sprite->pos1.x += gBattleAnimArgs[0];
@@ -2237,8 +2230,8 @@ void sub_807A69C(u8 taskId)
u16 src;
u16 dest;
struct Task *task = &gTasks[taskId];
- task->data[0] = GetAnimBankSpriteId(0);
- task->data[1] = (GetBankSide(gAnimBankAttacker)) ? -8 : 8;
+ task->data[0] = GetAnimBattlerSpriteId(0);
+ task->data[1] = (GetBattlerSide(gAnimBankAttacker)) ? -8 : 8;
task->data[2] = 0;
task->data[3] = 0;
gSprites[task->data[0]].pos2.x -= task->data[0];
@@ -2253,7 +2246,7 @@ void sub_807A69C(u8 taskId)
else
task->data[6] = 3;
CpuCopy32(&gPlttBufferUnfaded[src], &gPlttBufferFaded[dest], 0x20);
- BlendPalette(dest, 0x10, gBattleAnimArgs[1], gBattleAnimArgs[0]);
+ BlendPalette(dest, 16, gBattleAnimArgs[1], gBattleAnimArgs[0]);
task->func = sub_807A784;
}
@@ -2318,9 +2311,9 @@ void sub_807A8D4(struct Sprite *sprite)
// file_4
void sub_807A908(struct Sprite *sprite) {
- sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2);
- sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3);
- if (!GetBankSide(gAnimBankAttacker))
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 3);
+ if (!GetBattlerSide(gAnimBankAttacker))
sprite->data[0] = 5;
else
sprite->data[0] = -10;
@@ -2346,7 +2339,7 @@ void sub_807A9BC(struct Sprite *sprite)
sprite->data[0] = gBattleAnimArgs[2];
sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[4];
sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[5];
- if (!GetBankSide(gAnimBankTarget))
+ if (!GetBattlerSide(gAnimBankTarget))
{
x = (u16)gBattleAnimArgs[4] + 30;
sprite->pos1.x += x;
diff --git a/src/rotating_gate.c b/src/rotating_gate.c
index 69f655a65..2d2d4437d 100644
--- a/src/rotating_gate.c
+++ b/src/rotating_gate.c
@@ -872,18 +872,14 @@ static void RotatingGate_DestroyGatesOutsideViewport(void)
}
}
-#ifdef NONMATCHING
-static int RotatingGate_CanRotate(u8 gateId, int rotationDirection)
+int RotatingGate_CanRotate(u8 gateId, int rotationDirection)
{
const struct Coords8 *armPos;
u8 orientation;
- s16 x;
- s16 y;
- int shape;
- int i;
- int j;
+ s16 x, y;
+ u8 shape;
+ int i, j;
int armOrientation;
- const u8 *gateArmCollisionData;
u8 armIndex;
if (rotationDirection == ROTATE_ANTICLOCKWISE)
@@ -902,146 +898,22 @@ static int RotatingGate_CanRotate(u8 gateId, int rotationDirection)
// Loop through the gate's "arms" clockwise (north, south, east, west)
for (i = GATE_ARM_NORTH; i <= GATE_ARM_WEST; i++)
{
- armOrientation = orientation + i;
- gateArmCollisionData = sRotatingGate_ArmLayout[shape][i];
-
// Ensure that no part of the arm collides with the map
for (j = 0; j < GATE_ARM_MAX_LENGTH; j++)
{
+ armOrientation = orientation + i;
armIndex = 2 * (armOrientation % 4) + j;
- if (*gateArmCollisionData)
+ if (sRotatingGate_ArmLayout[shape][i * 2 + j])
{
- if (MapGridIsImpassableAt(
- armPos[armIndex].deltaX + x, armPos[armIndex].deltaY + y) == 1)
+ if (MapGridIsImpassableAt(x + armPos[armIndex].deltaX, y + armPos[armIndex].deltaY) == 1)
return 0;
}
- gateArmCollisionData++;
}
}
return 1;
}
-#else
-__attribute__((naked))
-static int RotatingGate_CanRotate(u8 a, int puzzleType)
-{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0xC\n\
- lsls r0, 24\n\
- lsrs r4, r0, 24\n\
- cmp r1, 0x1\n\
- bne _080C7EAC\n\
- ldr r0, _080C7EA8 @ =sRotatingGate_ArmPositionsAntiClockwiseRotation\n\
- mov r10, r0\n\
- b _080C7EB8\n\
- .align 2, 0\n\
-_080C7EA8: .4byte sRotatingGate_ArmPositionsAntiClockwiseRotation\n\
-_080C7EAC:\n\
- cmp r1, 0x2\n\
- beq _080C7EB4\n\
-_080C7EB0:\n\
- movs r0, 0\n\
- b _080C7F48\n\
-_080C7EB4:\n\
- ldr r1, _080C7F58 @ =sRotatingGate_ArmPositionsClockwiseRotation\n\
- mov r10, r1\n\
-_080C7EB8:\n\
- adds r0, r4, 0\n\
- bl RotatingGate_GetGateOrientation\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- str r0, [sp]\n\
- ldr r0, _080C7F5C @ =gRotatingGate_PuzzleConfig\n\
- ldr r1, [r0]\n\
- lsls r0, r4, 3\n\
- adds r0, r1\n\
- ldrb r2, [r0, 0x4]\n\
- ldrh r1, [r0]\n\
- adds r1, 0x7\n\
- ldrh r0, [r0, 0x2]\n\
- adds r0, 0x7\n\
- movs r3, 0\n\
- lsls r2, 3\n\
- str r2, [sp, 0x4]\n\
- lsls r1, 16\n\
- asrs r1, 16\n\
- mov r9, r1\n\
- lsls r0, 16\n\
- asrs r0, 16\n\
- mov r8, r0\n\
-_080C7EE8:\n\
- movs r6, 0\n\
- ldr r2, [sp]\n\
- adds r7, r2, r3\n\
- lsls r0, r3, 1\n\
- adds r5, r7, 0\n\
- ldr r1, [sp, 0x4]\n\
- adds r0, r1\n\
- ldr r2, _080C7F60 @ =sRotatingGate_ArmLayout\n\
- adds r4, r0, r2\n\
-_080C7EFA:\n\
- adds r0, r5, 0\n\
- cmp r5, 0\n\
- bge _080C7F02\n\
- adds r0, r7, 0x3\n\
-_080C7F02:\n\
- asrs r0, 2\n\
- lsls r0, 2\n\
- subs r0, r5, r0\n\
- lsls r0, 1\n\
- adds r0, r6\n\
- lsls r0, 24\n\
- lsrs r1, r0, 24\n\
- ldrb r0, [r4]\n\
- cmp r0, 0\n\
- beq _080C7F38\n\
- lsls r1, 2\n\
- add r1, r10\n\
- movs r0, 0\n\
- ldrsb r0, [r1, r0]\n\
- add r0, r9\n\
- ldrb r1, [r1, 0x1]\n\
- lsls r1, 24\n\
- asrs r1, 24\n\
- add r1, r8\n\
- str r3, [sp, 0x8]\n\
- bl MapGridIsImpassableAt\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- ldr r3, [sp, 0x8]\n\
- cmp r0, 0x1\n\
- beq _080C7EB0\n\
-_080C7F38:\n\
- adds r4, 0x1\n\
- adds r6, 0x1\n\
- cmp r6, 0x1\n\
- ble _080C7EFA\n\
- adds r3, 0x1\n\
- cmp r3, 0x3\n\
- ble _080C7EE8\n\
- movs r0, 0x1\n\
-_080C7F48:\n\
- add sp, 0xC\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r1}\n\
- bx r1\n\
- .align 2, 0\n\
-_080C7F58: .4byte sRotatingGate_ArmPositionsClockwiseRotation\n\
-_080C7F5C: .4byte gRotatingGate_PuzzleConfig\n\
-_080C7F60: .4byte sRotatingGate_ArmLayout\n\
-.syntax divided\n");
-}
-#endif
static int RotatingGate_HasArm(u8 gateId, u8 armInfo)
{
diff --git a/src/roulette.c b/src/roulette.c
index 5e7517d79..c8804a543 100644
--- a/src/roulette.c
+++ b/src/roulette.c
@@ -436,7 +436,7 @@ void sub_8115384(void)
break;
case 0x2:
Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C);
- InitMenuWindow(&gWindowTemplate_81E6CE4);
+ InitMenuWindow(&gMenuTextWindowTemplate);
LoadPalette(&gUnknown_083F86BC, 0x0, 0x1C0);
gMain.state++;
break;
@@ -1055,13 +1055,13 @@ void sub_8116638(u8 taskid)
case 0x2:
if (gTasks[taskid].data[0x2] == 0xC)
{
- PlayFanfare(BGM_ME_B_BIG);
+ PlayFanfare(MUS_ME_B_BIG);
Menu_DrawStdWindowFrame(0x0, 0xE, 0x1D, 0x13);
Menu_PrintText(&gUnknown_081C41A5, 0x1, 0xF);
}
else
{
- PlayFanfare(BGM_ME_B_SMALL);
+ PlayFanfare(MUS_ME_B_SMALL);
Menu_DrawStdWindowFrame(0x0, 0xE, 0x1D, 0x13);
Menu_PrintText(&gUnknown_081C4199, 0x1, 0xF);
}
@@ -1547,7 +1547,7 @@ void sub_811755C(u8 taskid)
{
Menu_EraseWindowRect(0x14, 0x8, 0x1A, 0xD);
Menu_EraseScreen();
- BeginNormalPaletteFade(-0x1, 0x0, 0x0, 0x10, 0x0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gPaletteFade.delayCounter = gPaletteFade.multipurpose2;
UpdatePaletteFade();
gTasks[taskid].func = &sub_8117528;
@@ -2733,7 +2733,7 @@ void sub_811952C(struct Sprite *sprite)
sprite->callback = sub_8118CEC;
}
#else
-__attribute__((naked))
+NAKED
void sub_811952C(struct Sprite *sprite)
{
asm_unified("push {r4-r7,lr}\n"
diff --git a/src/safari_zone.c b/src/safari_zone.c
index f371b08b3..9272da902 100644
--- a/src/safari_zone.c
+++ b/src/safari_zone.c
@@ -102,7 +102,7 @@ void sub_80C824C(void)
else if (gBattleOutcome == 8)
{
ScriptContext2_RunNewScript(&gUnknown_081C340A);
- warp_in();
+ WarpIntoMap();
gFieldCallback = sub_8080E44;
SetMainCallback2(CB2_LoadMap);
}
@@ -236,7 +236,7 @@ static void DecrementFeederStepCounters(void)
}
}
-bool8 unref_sub_80C853C(void)
+bool32 debug_sub_80C853C(void)
{
SafariZoneGetPokeblockNameInFeeder();
diff --git a/src/save.c b/src/save.c
index 0b7a3dd79..0df83200a 100644
--- a/src/save.c
+++ b/src/save.c
@@ -927,3 +927,6 @@ u8 unref_sub_8126080(u8 sector, u8 *data)
ReadFlash(sector, 0, data, sizeof(struct SaveSector));
return 1;
}
+
+asm(".section .rodata\n"
+ "\t.align 2");
diff --git a/src/save_failed_screen.c b/src/save_failed_screen.c
index f57315d09..f5544bc65 100644
--- a/src/save_failed_screen.c
+++ b/src/save_failed_screen.c
@@ -122,11 +122,11 @@ static void CB2_SaveFailedScreen(void)
LoadPalette(&gBirchBagGrassPal, 0, sizeof(gBirchBagGrassPal));
LoadPalette(&gSaveFailedClockPal, 0x100, sizeof(gSaveFailedClockPal));
Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C);
- InitMenuWindow(&gWindowTemplate_81E6CE4);
+ InitMenuWindow(&gMenuTextWindowTemplate);
Menu_DrawStdWindowFrame(13, CLOCK_WIN_TOP, 16, CLOCK_WIN_TOP + 3); // clock window
Menu_DrawStdWindowFrame(1, MSG_WIN_TOP, 28, 19); // message window
Menu_PrintText(gSystemText_SaveFailedBackupCheck, 2, MSG_WIN_TOP + 1);
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
ime = REG_IME;
REG_IME = 0;
REG_IE |= INTR_FLAG_VBLANK;
@@ -224,7 +224,7 @@ static void CB2_FadeAndReturnToTitleScreen(void)
if (gMain.newKeys & A_BUTTON)
{
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
SetVBlankCallback(VBlankCB);
SetMainCallback2(CB2_ReturnToTitleScreen);
}
diff --git a/src/scrcmd.c b/src/scrcmd.c
index e5272bc9c..d37e1180d 100644
--- a/src/scrcmd.c
+++ b/src/scrcmd.c
@@ -22,7 +22,7 @@
#include "fieldmap.h"
#include "item.h"
#include "main.h"
-#include "map_obj_lock.h"
+#include "event_obj_lock.h"
#include "menu.h"
#include "money.h"
#include "mystery_event_script.h"
@@ -42,6 +42,7 @@
#include "sound.h"
#include "string_util.h"
#include "tv.h"
+#include "constants/maps.h"
typedef u16 (*SpecialFunc)(void);
typedef void (*NativeFunc)(void);
@@ -548,7 +549,7 @@ bool8 ScrCmd_givedecoration(struct ScriptContext *ctx)
{
u32 decoration = VarGet(ScriptReadHalfword(ctx));
- gSpecialVar_Result = IsThereStorageSpaceForDecoration(decoration);
+ gSpecialVar_Result = GiveDecoration(decoration);
return FALSE;
}
@@ -556,7 +557,7 @@ bool8 ScrCmd_takedecoration(struct ScriptContext *ctx)
{
u32 decoration = VarGet(ScriptReadHalfword(ctx));
- gSpecialVar_Result = sub_81340A8(decoration);
+ gSpecialVar_Result = RemoveDecorationFromInventory(decoration);
return FALSE;
}
@@ -564,7 +565,7 @@ bool8 ScrCmd_checkdecorspace(struct ScriptContext *ctx)
{
u32 decorId = VarGet(ScriptReadHalfword(ctx));
- gSpecialVar_Result = sub_8134074(decorId);
+ gSpecialVar_Result = CheckDecorationInventoryHasSpace(decorId);
return FALSE;
}
@@ -572,7 +573,7 @@ bool8 ScrCmd_checkdecor(struct ScriptContext *ctx)
{
u32 decorId = VarGet(ScriptReadHalfword(ctx));
- gSpecialVar_Result = sub_8133FE4(decorId);
+ gSpecialVar_Result = InventoryContainsDecoration(decorId);
return FALSE;
}
@@ -725,7 +726,7 @@ bool8 ScrCmd_warp(struct ScriptContext *ctx)
Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y);
sub_8080E88();
- player_avatar_init_params_reset();
+ ResetInitialPlayerAvatarState();
return TRUE;
}
@@ -739,7 +740,7 @@ bool8 ScrCmd_warpsilent(struct ScriptContext *ctx)
Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y);
sp13E_warp_to_last_warp();
- player_avatar_init_params_reset();
+ ResetInitialPlayerAvatarState();
return TRUE;
}
@@ -753,7 +754,7 @@ bool8 ScrCmd_warpdoor(struct ScriptContext *ctx)
Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y);
sub_8080EF0();
- player_avatar_init_params_reset();
+ ResetInitialPlayerAvatarState();
return TRUE;
}
@@ -765,12 +766,12 @@ bool8 ScrCmd_warphole(struct ScriptContext *ctx)
u16 y;
PlayerGetDestCoords(&x, &y);
- if (mapGroup == 0xFF && mapNum == 0xFF)
- sub_8053720(x - 7, y - 7);
+ if (mapGroup == MAP_GROUP(UNDEFINED) && mapNum == MAP_NUM(UNDEFINED))
+ SetFixedHoleWarpAsDestination(x - 7, y - 7);
else
Overworld_SetWarpDestination(mapGroup, mapNum, -1, x - 7, y - 7);
sp13F_fall_to_last_warp();
- player_avatar_init_params_reset();
+ ResetInitialPlayerAvatarState();
return TRUE;
}
@@ -784,7 +785,7 @@ bool8 ScrCmd_warpteleport(struct ScriptContext *ctx)
Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y);
sub_8080F68();
- player_avatar_init_params_reset();
+ ResetInitialPlayerAvatarState();
return TRUE;
}
@@ -820,7 +821,7 @@ bool8 ScrCmd_setdivewarp(struct ScriptContext *ctx)
u16 x = VarGet(ScriptReadHalfword(ctx));
u16 y = VarGet(ScriptReadHalfword(ctx));
- sub_8053690(mapGroup, mapNum, warpId, x, y);
+ SetFixedDiveWarp(mapGroup, mapNum, warpId, x, y);
return FALSE;
}
@@ -832,7 +833,7 @@ bool8 ScrCmd_setholewarp(struct ScriptContext *ctx)
u16 x = VarGet(ScriptReadHalfword(ctx));
u16 y = VarGet(ScriptReadHalfword(ctx));
- sub_80536E4(mapGroup, mapNum, warpId, x, y);
+ SetFixedHoleWarp(mapGroup, mapNum, warpId, x, y);
return FALSE;
}
@@ -1012,7 +1013,7 @@ bool8 ScrCmd_removeobject(struct ScriptContext *ctx)
{
u16 localId = VarGet(ScriptReadHalfword(ctx));
- RemoveFieldObjectByLocalIdAndMap(localId, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup);
+ RemoveEventObjectByLocalIdAndMap(localId, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup);
return FALSE;
}
@@ -1022,7 +1023,7 @@ bool8 ScrCmd_removeobject_at(struct ScriptContext *ctx)
u8 mapGroup = ScriptReadByte(ctx);
u8 mapNum = ScriptReadByte(ctx);
- RemoveFieldObjectByLocalIdAndMap(objectId, mapNum, mapGroup);
+ RemoveEventObjectByLocalIdAndMap(objectId, mapNum, mapGroup);
return FALSE;
}
@@ -1060,7 +1061,7 @@ bool8 ScrCmd_setobjectxyperm(struct ScriptContext *ctx)
u16 x = VarGet(ScriptReadHalfword(ctx));
u16 y = VarGet(ScriptReadHalfword(ctx));
- Overworld_SetMapObjTemplateCoords(localId, x, y);
+ Overworld_SetEventObjTemplateCoords(localId, x, y);
return FALSE;
}
@@ -1068,7 +1069,7 @@ bool8 ScrCmd_moveobjectoffscreen(struct ScriptContext *ctx)
{
u16 localId = VarGet(ScriptReadHalfword(ctx));
- sub_805C78C(localId, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup);
+ TryOverrideTemplateCoordsForEventObject(localId, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup);
return FALSE;
}
@@ -1115,10 +1116,10 @@ bool8 ScrCmd_resetobjectpriority(struct ScriptContext *ctx)
bool8 ScrCmd_faceplayer(struct ScriptContext *ctx)
{
- if (gMapObjects[gSelectedMapObject].active)
+ if (gEventObjects[gSelectedEventObject].active)
{
- FieldObjectFaceOppositeDirection(&gMapObjects[gSelectedMapObject],
- player_get_direction_lower_nybble());
+ EventObjectFaceOppositeDirection(&gEventObjects[gSelectedEventObject],
+ GetPlayerFacingDirection());
}
return FALSE;
}
@@ -1128,7 +1129,7 @@ bool8 ScrCmd_turnobject(struct ScriptContext *ctx)
u16 localId = VarGet(ScriptReadHalfword(ctx));
u8 direction = ScriptReadByte(ctx);
- FieldObjectTurnByLocalIdAndMap(localId, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, direction);
+ EventObjectTurnByLocalIdAndMap(localId, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, direction);
return FALSE;
}
@@ -1137,7 +1138,7 @@ bool8 ScrCmd_setobjectmovementtype(struct ScriptContext *ctx)
u16 localId = VarGet(ScriptReadHalfword(ctx));
u8 movementType = ScriptReadByte(ctx);
- Overworld_SetMapObjTemplateMovementType(localId, movementType);
+ Overworld_SetEventObjTemplateMovementType(localId, movementType);
return FALSE;
}
@@ -1156,10 +1157,10 @@ bool8 ScrCmd_createvobject(struct ScriptContext *ctx)
bool8 ScrCmd_turnvobject(struct ScriptContext *ctx)
{
- u8 v1 = ScriptReadByte(ctx);
+ u8 eventObjectId = ScriptReadByte(ctx);
u8 direction = ScriptReadByte(ctx);
- sub_8064990(v1, direction);
+ TurnEventObject(eventObjectId, direction);
return FALSE;
}
@@ -1171,7 +1172,7 @@ bool8 ScrCmd_lockall(struct ScriptContext *ctx)
}
else
{
- ScriptFreezeMapObjects();
+ ScriptFreezeEventObjects();
SetupNativeScript(ctx, sub_8064CFC);
return TRUE;
}
@@ -1185,14 +1186,14 @@ bool8 ScrCmd_lock(struct ScriptContext *ctx)
}
else
{
- if (gMapObjects[gSelectedMapObject].active)
+ if (gEventObjects[gSelectedEventObject].active)
{
- LockSelectedMapObject();
+ LockSelectedEventObject();
SetupNativeScript(ctx, sub_8064DB4);
}
else
{
- ScriptFreezeMapObjects();
+ ScriptFreezeEventObjects();
SetupNativeScript(ctx, sub_8064CFC);
}
return TRUE;
@@ -1204,10 +1205,10 @@ bool8 ScrCmd_releaseall(struct ScriptContext *ctx)
u8 objectId;
HideFieldMessageBox();
- objectId = GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0);
- FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[objectId]);
+ objectId = GetEventObjectIdByLocalIdAndMap(0xFF, 0, 0);
+ EventObjectClearHeldMovementIfFinished(&gEventObjects[objectId]);
sub_80A2178();
- UnfreezeMapObjects();
+ UnfreezeEventObjects();
return FALSE;
}
@@ -1216,12 +1217,12 @@ bool8 ScrCmd_release(struct ScriptContext *ctx)
u8 objectId;
HideFieldMessageBox();
- if (gMapObjects[gSelectedMapObject].active)
- FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[gSelectedMapObject]);
- objectId = GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0);
- FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[objectId]);
+ if (gEventObjects[gSelectedEventObject].active)
+ EventObjectClearHeldMovementIfFinished(&gEventObjects[gSelectedEventObject]);
+ objectId = GetEventObjectIdByLocalIdAndMap(0xFF, 0, 0);
+ EventObjectClearHeldMovementIfFinished(&gEventObjects[objectId]);
sub_80A2178();
- UnfreezeMapObjects();
+ UnfreezeEventObjects();
return FALSE;
}
diff --git a/src/script_menu.c b/src/script_menu.c
index 9d901a03c..1a7489c82 100644
--- a/src/script_menu.c
+++ b/src/script_menu.c
@@ -622,7 +622,7 @@ bool8 ScriptMenu_MultichoiceWithDefault(u8 left, u8 top, u8 multichoiceId, u8 ig
static u16 GetStringWidthInTilesForScriptMenu(const u8 *str)
{
// each tile on screen is 8x8, so it needs the number of tiles and not pixels, hence the division by 8.
- return (Text_GetStringWidthFromWindowTemplate((struct WindowTemplate *)&gWindowTemplate_81E6CE4, str) + 7) / 8;
+ return (Text_GetStringWidthFromWindowTemplate((struct WindowTemplate *)&gMenuTextWindowTemplate, str) + 7) / 8;
}
static void DrawMultichoiceMenu(u8 left, u8 top, u8 count, const struct MenuAction *list, u8 ignoreBPress, u8 cursorPos)
@@ -930,7 +930,7 @@ void ScriptMenu_CreatePCMenu(void)
StartScriptMenuTask(0, 0, width + 2, 2 * numChoices + 1, 0, numChoices);
}
#elif GERMAN
-__attribute__((naked))
+NAKED
void ScriptMenu_CreatePCMenu(void) {
asm(".syntax unified\n\
push {r4-r7,lr}\n\
diff --git a/src/script_movement.c b/src/script_movement.c
index 653dffcbf..fec3da88e 100644
--- a/src/script_movement.c
+++ b/src/script_movement.c
@@ -18,25 +18,25 @@ static void sub_80A2490(u8, u8, u8, const u8 *);
bool8 ScriptMovement_StartObjectMovementScript(u8 localId, u8 mapNum, u8 mapGroup, const u8 *movementScript)
{
- u8 mapObjId;
+ u8 eventObjId;
- if (TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjId))
+ if (TryGetEventObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &eventObjId))
return TRUE;
if (!FuncIsActiveTask(Task_80A244C))
sub_80A2198(50);
- return sub_80A21F4(sub_80A21E0(), mapObjId, movementScript);
+ return sub_80A21F4(sub_80A21E0(), eventObjId, movementScript);
}
bool8 ScriptMovement_IsObjectMovementFinished(u8 localId, u8 mapNum, u8 mapBank)
{
- u8 mapObjId;
+ u8 eventObjId;
u8 r4;
u8 r1;
- if (TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapBank, &mapObjId))
+ if (TryGetEventObjectIdByLocalIdAndMap(localId, mapNum, mapBank, &eventObjId))
return TRUE;
r4 = sub_80A21E0();
- r1 = sub_80A2260(r4, mapObjId);
+ r1 = sub_80A2260(r4, eventObjId);
if (r1 == 16)
return TRUE;
return sub_80A2370(r4, r1);
@@ -69,11 +69,11 @@ static u8 sub_80A21E0(void)
return FindTaskIdByFunc(Task_80A244C);
}
-static bool8 sub_80A21F4(u8 taskId, u8 mapObjId, const u8 *movementScript)
+static bool8 sub_80A21F4(u8 taskId, u8 eventObjId, const u8 *movementScript)
{
u8 r4;
- r4 = sub_80A2260(taskId, mapObjId);
+ r4 = sub_80A2260(taskId, eventObjId);
if (r4 != 16)
{
if (sub_80A2370(taskId, r4) == 0)
@@ -82,7 +82,7 @@ static bool8 sub_80A21F4(u8 taskId, u8 mapObjId, const u8 *movementScript)
}
else
{
- sub_80A23C8(taskId, r4, mapObjId, movementScript);
+ sub_80A23C8(taskId, r4, eventObjId, movementScript);
return FALSE;
}
}
@@ -93,7 +93,7 @@ static bool8 sub_80A21F4(u8 taskId, u8 mapObjId, const u8 *movementScript)
}
else
{
- sub_80A23C8(taskId, r4, mapObjId, movementScript);
+ sub_80A23C8(taskId, r4, eventObjId, movementScript);
return FALSE;
}
}
@@ -169,23 +169,23 @@ static const u8 *sub_80A23B8(u8 a)
return gUnknown_020384F8[a];
}
-static void sub_80A23C8(u8 taskId, u8 b, u8 mapObjId, const u8 *movementScript)
+static void sub_80A23C8(u8 taskId, u8 b, u8 eventObjId, const u8 *movementScript)
{
sub_80A2318(taskId, b);
npc_obj_offscreen_culling_and_flag_update(b, movementScript);
- sub_80A22D0(taskId, b, mapObjId);
+ sub_80A22D0(taskId, b, eventObjId);
}
static void UnfreezeObjects(u8 taskId)
{
- u8 *pMapObjId;
+ u8 *pEventObjId;
u8 i;
- pMapObjId = (u8 *)&gTasks[taskId].data[1];
- for (i = 0; i < 16; i++, pMapObjId++)
+ pEventObjId = (u8 *)&gTasks[taskId].data[1];
+ for (i = 0; i < 16; i++, pEventObjId++)
{
- if (*pMapObjId != 0xFF)
- UnfreezeMapObject(&gMapObjects[*pMapObjId]);
+ if (*pEventObjId != 0xFF)
+ UnfreezeEventObject(&gEventObjects[*pEventObjId]);
}
}
@@ -202,23 +202,23 @@ static void Task_80A244C(u8 taskId)
}
}
-static void sub_80A2490(u8 taskId, u8 b, u8 mapObjId, const u8 *d)
+static void sub_80A2490(u8 taskId, u8 b, u8 eventObjId, const u8 *d)
{
u8 var;
- if (FieldObjectIsSpecialAnimActive(&gMapObjects[mapObjId])
- && !FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[mapObjId]))
+ if (EventObjectIsHeldMovementActive(&gEventObjects[eventObjId])
+ && !EventObjectClearHeldMovementIfFinished(&gEventObjects[eventObjId]))
return;
var = *d;
if (var == 0xFE)
{
sub_80A2348(taskId, b);
- FreezeMapObject(&gMapObjects[mapObjId]);
+ FreezeEventObject(&gEventObjects[eventObjId]);
}
else
{
- if (!FieldObjectSetSpecialAnim(&gMapObjects[mapObjId], var))
+ if (!EventObjectSetHeldMovement(&gEventObjects[eventObjId], var))
{
d++;
npc_obj_offscreen_culling_and_flag_update(b, d);
diff --git a/src/script_pokemon_util_80F99CC.c b/src/script_pokemon_util_80F99CC.c
index df83d3e2d..b292265a6 100644
--- a/src/script_pokemon_util_80F99CC.c
+++ b/src/script_pokemon_util_80F99CC.c
@@ -36,7 +36,7 @@ void sub_80F99CC(void)
ScriptContext2_Enable();
taskId = CreateTask((void *)OpenPartyMenuFromScriptContext, 0xA);
gTasks[taskId].data[0] = PARTY_MENU_TYPE_CONTEST;
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
}
void SelectMonForNPCTrade(void)
@@ -46,7 +46,7 @@ void SelectMonForNPCTrade(void)
ScriptContext2_Enable();
taskId = CreateTask((void *)OpenPartyMenuFromScriptContext, 0xA);
gTasks[taskId].data[0] = PARTY_MENU_TYPE_IN_GAME_TRADE;
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
}
void SelectMoveTutorMon(void)
@@ -56,7 +56,7 @@ void SelectMoveTutorMon(void)
ScriptContext2_Enable();
taskId = CreateTask((void *)OpenPartyMenuFromScriptContext, 0xA);
gTasks[taskId].data[0] = PARTY_MENU_TYPE_MOVE_TUTOR;
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
}
void OpenPartyMenuFromScriptContext(u8 taskId)
@@ -144,11 +144,11 @@ void sub_80F9C00(void)
case 0:
case 3:
case 4:
- sub_806BC3C(i, 0x7E);
+ DrawMonDescriptorStatus(i, 0x7E);
break;
case 1:
case 2:
- sub_806BC3C(i, 0x70);
+ DrawMonDescriptorStatus(i, 0x70);
break;
}
}
@@ -246,9 +246,9 @@ void sub_80F9E1C(void)
for (i = 0; i < gPlayerPartyCount; i++)
{
if (!sub_8040574(&gPlayerParty[i]))
- sub_806BC3C(i, 0x9A);
+ DrawMonDescriptorStatus(i, 0x9A);
else
- sub_806BC3C(i, 0x8C);
+ DrawMonDescriptorStatus(i, 0x8C);
}
}
diff --git a/src/secret_base.c b/src/secret_base.c
index 210d49835..5bec7a06d 100644
--- a/src/secret_base.c
+++ b/src/secret_base.c
@@ -52,7 +52,7 @@ static void Task_SecretBasePC_Registry(u8 taskId);
extern u8 gUnknown_0815F399[];
extern u8 gUnknown_0815F49A[];
-EWRAM_DATA u8 gUnknown_020387DC = 0;
+EWRAM_DATA u8 gCurrentSecretBaseId = 0;
const struct
{
@@ -98,7 +98,7 @@ const u8 gUnknown_083D1374[] = {
const struct MenuAction2 gUnknown_083D13D4[] = {
{SecretBaseText_DelRegist, sub_80BCA84},
- {gUnknownText_Exit, sub_80BCBF8}
+ {gOtherText_Exit, sub_80BCBF8}
};
const struct YesNoFuncTable gUnknown_083D13E4 = {
@@ -110,7 +110,6 @@ const u8 gUnknown_083D13EC[] = {
0x23,0x24,0xF,0x1F,0x21,0x2F,0xE,0x14,0x20,0x22,0x0,0x0
};
-extern void *gUnknown_0300485C;
extern u8 gUnknown_081A2E14[];
extern u8 UnknownString_81A1BB2[];
extern u8 UnknownString_81A1F67[];
@@ -172,17 +171,17 @@ void ResetSecretBases(void)
void sub_80BB5D0(void)
{
- gUnknown_020387DC = gSpecialVar_0x8004;
+ gCurrentSecretBaseId = gSpecialVar_0x8004;
}
-void sub_80BB5E4(void)
+void SetCurrentSecretBaseVar(void)
{
u16 i;
gSpecialVar_Result = 0;
for (i = 0; i < MAX_SECRET_BASES; i++)
{
- if (gUnknown_020387DC == gSaveBlock1.secretBases[i].secretBaseId)
+ if (gCurrentSecretBaseId == gSaveBlock1.secretBases[i].secretBaseId)
{
gSpecialVar_Result = 1;
VarSet(VAR_CURRENT_SECRET_BASE, i);
@@ -191,7 +190,7 @@ void sub_80BB5E4(void)
}
}
-void sub_80BB63C(void)
+void CheckPlayerHasSecretBase(void)
{
if (gSaveBlock1.secretBases[0].secretBaseId)
gSpecialVar_Result = 1;
@@ -241,11 +240,11 @@ void sub_80BB764(s16 *arg1, s16 *arg2, u16 arg3)
{
s16 x, y;
- for (y=0; y<gMapHeader.mapData->height; y++)
+ for (y=0; y<gMapHeader.mapLayout->height; y++)
{
- for (x=0; x<gMapHeader.mapData->width; x++)
+ for (x=0; x<gMapHeader.mapLayout->width; x++)
{
- if ((gMapHeader.mapData->map[y * gMapHeader.mapData->width + x] & 0x3ff) == arg3)
+ if ((gMapHeader.mapLayout->map[y * gMapHeader.mapLayout->width + x] & 0x3ff) == arg3)
{
*arg1 = x;
*arg2 = y;
@@ -255,7 +254,7 @@ void sub_80BB764(s16 *arg1, s16 *arg2, u16 arg3)
}
}
-void sub_80BB800(void)
+void SetOpenedSecretBaseMetatile(void)
{
s16 x, y;
s16 tile_id;
@@ -300,7 +299,7 @@ void sub_80BB8CC(void)
u8 nameLength;
u16 idx;
- gSaveBlock1.secretBases[0].secretBaseId = gUnknown_020387DC;
+ gSaveBlock1.secretBases[0].secretBaseId = gCurrentSecretBaseId;
for (idx=0; idx<4; idx++)
gSaveBlock1.secretBases[0].trainerId[idx] = gSaveBlock2.playerTrainerId[idx];
VarSet(VAR_CURRENT_SECRET_BASE, 0);
@@ -342,7 +341,7 @@ void sub_80BB970(struct MapEvents *events)
void sub_80BBA14(void)
{
- s8 idx = 4 * (gUnknown_020387DC / 10);
+ s8 idx = 4 * (gCurrentSecretBaseId / 10);
warp1_set_2(MAP_GROUP(SECRET_BASE_RED_CAVE1), gUnknown_083D1374[idx], gUnknown_083D1374[idx + 1]);
}
@@ -363,7 +362,7 @@ void sub_80BBA48(u8 taskid)
if (gSaveBlock1.secretBases[curbaseid].sbr_field_10 < 0xff)
gSaveBlock1.secretBases[curbaseid].sbr_field_10++;
sub_80BBA14();
- warp_in();
+ WarpIntoMap();
gFieldCallback = sub_8080990;
SetMainCallback2(CB2_LoadMap);
DestroyTask(taskid);
@@ -387,7 +386,7 @@ bool8 sub_80BBB24(void)
void sub_80BBB50(u8 taskid)
{
- FieldObjectTurn(&(gMapObjects[gPlayerAvatar.mapObjectId]), 2);
+ EventObjectTurn(&(gEventObjects[gPlayerAvatar.eventObjectId]), 2);
if (IsWeatherNotFadingIn() == 1)
{
EnableBothScriptContexts();
@@ -414,9 +413,9 @@ void sub_80BBBEC(u8 taskid)
if (!gPaletteFade.active)
{
- idx = 4 * (gUnknown_020387DC / 10);
+ idx = 4 * (gCurrentSecretBaseId / 10);
Overworld_SetWarpDestination(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum, -1, gUnknown_083D1374[idx + 2], gUnknown_083D1374[idx + 3]);
- warp_in();
+ WarpIntoMap();
gFieldCallback = sub_80BBB90;
SetMainCallback2(CB2_LoadMap);
DestroyTask(taskid);
@@ -500,25 +499,25 @@ void sub_80BBDD0(void)
permission = gDecorations[roomdecor[decidx]].permission;
if (permission == DECORPERM_SOLID_MAT)
{
- for (objid = 0; objid < gMapHeader.events->mapObjectCount; objid++)
+ for (objid = 0; objid < gMapHeader.events->eventObjectCount; objid++)
{
- if (gMapHeader.events->mapObjects[objid].flagId == gSpecialVar_0x8004 + 0xAE)
+ if (gMapHeader.events->eventObjects[objid].flagId == gSpecialVar_0x8004 + 0xAE)
break;
}
- if (objid != gMapHeader.events->mapObjectCount)
+ if (objid != gMapHeader.events->eventObjectCount)
{
gSpecialVar_0x8006 = roomdecorpos[decidx] >> 4;
gSpecialVar_0x8007 = roomdecorpos[decidx] & 0xF;
metatile = MapGridGetMetatileBehaviorAt(gSpecialVar_0x8006 + 7, gSpecialVar_0x8007 + 7);
- if (sub_80572D8(metatile) == TRUE || sub_80572EC(metatile) == TRUE)
+ if (MetatileBehavior_IsSecretBaseLargeMatEdge(metatile) == TRUE || MetatileBehavior_IsLargeMatCenter(metatile) == TRUE)
{
- gSpecialVar_Result = gMapHeader.events->mapObjects[objid].graphicsId + VAR_0x3F20;
+ gSpecialVar_Result = gMapHeader.events->eventObjects[objid].graphicsId + VAR_0x3F20;
VarSet(gSpecialVar_Result, gDecorations[roomdecor[decidx]].tiles[0]);
- gSpecialVar_Result = gMapHeader.events->mapObjects[objid].localId;
+ gSpecialVar_Result = gMapHeader.events->eventObjects[objid].localId;
FlagClear(gSpecialVar_0x8004 + 0xAE);
show_sprite(gSpecialVar_Result, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup);
sub_805C0F8(gSpecialVar_Result, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, gSpecialVar_0x8006, gSpecialVar_0x8007);
- sub_805C78C(gSpecialVar_Result, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup);
+ TryOverrideTemplateCoordsForEventObject(gSpecialVar_Result, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup);
gSpecialVar_0x8004 ++;
}
}
@@ -533,16 +532,16 @@ void sub_80BBFA4(void)
VarSet(VAR_OBJ_GFX_ID_F, gUnknown_083D13EC[sub_80BCCA4(curBase)]);
}
-void sub_80BBFD8(struct MapPosition *position, struct MapEvents *events)
+void SetCurrentSecretBaseFromPosition(struct MapPosition *position, struct MapEvents *events)
{
- s16 bgevtidx;
+ s16 i;
- for (bgevtidx = 0; bgevtidx < events->bgEventCount; bgevtidx++)
+ for (i = 0; i < events->bgEventCount; i++)
{
- if (events->bgEvents[bgevtidx].kind == 8 && position->x == events->bgEvents[bgevtidx].x + 7
- && position->y == events->bgEvents[bgevtidx].y + 7)
+ if (events->bgEvents[i].kind == 8 && position->x == events->bgEvents[i].x + 7
+ && position->y == events->bgEvents[i].y + 7)
{
- gUnknown_020387DC = events->bgEvents[bgevtidx].bgUnion.secretBaseId;
+ gCurrentSecretBaseId = events->bgEvents[i].bgUnion.secretBaseId;
break;
}
}
@@ -550,15 +549,15 @@ void sub_80BBFD8(struct MapPosition *position, struct MapEvents *events)
void sub_80BC038(struct MapPosition *position, struct MapEvents *events)
{
- sub_80BBFD8(position, events);
- sub_80BB5E4();
+ SetCurrentSecretBaseFromPosition(position, events);
+ SetCurrentSecretBaseVar();
ScriptContext1_SetupScript(gUnknown_081A2E14);
}
bool8 sub_80BC050(void)
{
sub_80BB5D0();
- sub_80BB5E4();
+ SetCurrentSecretBaseVar();
if (gSpecialVar_Result == 1)
return FALSE;
return TRUE;
@@ -578,7 +577,7 @@ void sub_80BC074(u8 taskid)
break;
case 2:
copy_saved_warp2_bank_and_enter_x_to_warp1(0x7E);
- warp_in();
+ WarpIntoMap();
gFieldCallback = mapldr_default;
SetMainCallback2(CB2_LoadMap);
ScriptContext2_Disable();
@@ -595,7 +594,7 @@ void sub_80BC0F8(void)
void sub_80BC114(void)
{
- if (gSaveBlock1.secretBases[0].secretBaseId != gUnknown_020387DC)
+ if (gSaveBlock1.secretBases[0].secretBaseId != gCurrentSecretBaseId)
gSpecialVar_Result = 1;
else
gSpecialVar_Result = 0;
@@ -632,7 +631,7 @@ u8 *sub_80BC190(u8 *dest, u8 arg1)
u8 *GetSecretBaseMapName(u8 *dest)
{
- gUnknown_020387DC = gSaveBlock1.secretBases[VarGet(VAR_CURRENT_SECRET_BASE)].secretBaseId;
+ gCurrentSecretBaseId = gSaveBlock1.secretBases[VarGet(VAR_CURRENT_SECRET_BASE)].secretBaseId;
return sub_80BC190(dest, VarGet(VAR_CURRENT_SECRET_BASE));
}
@@ -694,7 +693,7 @@ void sub_80BC300(void)
}
}
#else
-__attribute__((naked))
+NAKED
void sub_80BC300(void)
{
asm(".syntax unified\n\
@@ -922,7 +921,7 @@ u8 sub_80BC538(void)
void sub_80BC56C(void)
{
- if (sub_80BC268(sub_80BC14C(gUnknown_020387DC)) == TRUE)
+ if (sub_80BC268(sub_80BC14C(gCurrentSecretBaseId)) == TRUE)
gSpecialVar_Result = 1;
else if (sub_80BC538() > 9)
gSpecialVar_Result = 2;
@@ -932,7 +931,7 @@ void sub_80BC56C(void)
void sub_80BC5BC(void)
{
- gSaveBlock1.secretBases[sub_80BC14C(gUnknown_020387DC)].sbr_field_1_6 ^= 1;
+ gSaveBlock1.secretBases[sub_80BC14C(gCurrentSecretBaseId)].sbr_field_1_6 ^= 1;
FlagSet(FLAG_DECORATION_16);
}
@@ -1011,7 +1010,7 @@ void sub_80BC6B0(u8 taskId)
if (n < 8)
{
Menu_BlankWindowRect(18, 2 * n + 2, 28, 2 * n + 3);
- Menu_PrintText(gUnknownText_Exit, 18, 2 * n + 2);
+ Menu_PrintText(gOtherText_Exit, 18, 2 * n + 2);
DestroyVerticalScrollIndicator(BOTTOM_ARROW);
if (n != 7)
Menu_BlankWindowRect(18, ((n << 25) + (1 << 26)) >> 24, 28, 18); // the shifts are needed to match
@@ -1309,7 +1308,7 @@ void sub_80BCE90()
void sub_80BCF1C(u8 taskId)
{
s16 x, y;
- u32 behavior;
+ u32 metatileBehavior;
s16 *taskData = gTasks[taskId].data;
switch (taskData[1])
@@ -1325,15 +1324,15 @@ void sub_80BCF1C(u8 taskId)
taskData[2] = x;
taskData[3] = y;
- behavior = MapGridGetMetatileBehaviorAt(x, y);
- if (sub_8057350(behavior) == TRUE)
- DoYellowCave4Sparkle();
- else if (sub_8057314(behavior) == TRUE)
- sub_80C68A4(MapGridGetMetatileIdAt(x, y), x, y);
- else if (sub_8057328(behavior) == TRUE)
- sub_80C6A54(x, y);
- else if (sub_805733C(behavior) == TRUE)
- DoDecorationSoundEffect(MapGridGetMetatileIdAt(x, y));
+ metatileBehavior = MapGridGetMetatileBehaviorAt(x, y);
+ if (MetatileBehavior_IsSecretBaseGlitterMat(metatileBehavior) == TRUE)
+ DoSecretBaseGlitterMatSparkle();
+ else if (MetatileBehavior_IsSecretBaseBalloon(metatileBehavior) == TRUE)
+ PopSecretBaseBalloon(MapGridGetMetatileIdAt(x, y), x, y);
+ else if (MetatileBehavior_IsSecretBaseBreakableDoor(metatileBehavior) == TRUE)
+ ShatterSecretBaseBreakableDoor(x, y);
+ else if (MetatileBehavior_IsSecretBaseMusicNoteMat(metatileBehavior) == TRUE)
+ PlaySecretBaseMusicNoteMatSound(MapGridGetMetatileIdAt(x, y));
}
break;
case 2:
diff --git a/src/shop.c b/src/shop.c
index 87dbbeb97..8a5da1117 100644
--- a/src/shop.c
+++ b/src/shop.c
@@ -299,7 +299,7 @@ static void BuyMenuDrawGraphics(void)
DrawFirstMartScrollIndicators();
CreateTask(Shop_DoCursorAction, 0x8);
sub_80B3240();
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
gPaletteFade.bufferTransferDisabled = 0;
SetVBlankCallback(VBlankCB);
SetMainCallback2(MainCB2);
@@ -409,16 +409,16 @@ static void Shop_DrawViewportTiles(void)
s32 r3 = MapGridGetMetatileLayerTypeAt(facingX + x, facingY + y);
if (metatileId < 512)
- BuyMenuDrawMapMetatile(x, y, (u16 *)gMapHeader.mapData->primaryTileset->metatiles + metatileId * 8, r3);
+ BuyMenuDrawMapMetatile(x, y, (u16 *)gMapHeader.mapLayout->primaryTileset->metatiles + metatileId * 8, r3);
else
- BuyMenuDrawMapMetatile(x, y, (u16 *)gMapHeader.mapData->secondaryTileset->metatiles + (metatileId - 512) * 8, r3);
+ BuyMenuDrawMapMetatile(x, y, (u16 *)gMapHeader.mapLayout->secondaryTileset->metatiles + (metatileId - 512) * 8, r3);
}
else
{
if (metatileId < 512)
- BuyMenuDrawMapPartialMetatile(x, y, (u16 *)gMapHeader.mapData->primaryTileset->metatiles + metatileId * 8);
+ BuyMenuDrawMapPartialMetatile(x, y, (u16 *)gMapHeader.mapLayout->primaryTileset->metatiles + metatileId * 8);
else
- BuyMenuDrawMapPartialMetatile(x, y, (u16 *)gMapHeader.mapData->secondaryTileset->metatiles + (metatileId - 512) * 8);
+ BuyMenuDrawMapPartialMetatile(x, y, (u16 *)gMapHeader.mapLayout->secondaryTileset->metatiles + (metatileId - 512) * 8);
}
if (y == 0 && x != 0 && x != 6)
@@ -447,25 +447,25 @@ static void Shop_LoadViewportObjects(void)
GetXYCoordsOneStepInFrontOfPlayer(&facingX, &facingY);
playerHeight = PlayerGetZCoord();
for (y = 0; y < 16; y++)
- gMartViewportObjects[y][MAP_OBJ_ID] = 16;
+ gMartViewportObjects[y][EVENT_OBJ_ID] = 16;
for (y = 0; y < 5; y++)
{
for (x = 0; x < 7; x++)
{
- u8 mapObjId = GetFieldObjectIdByXYZ(facingX - 3 + x, facingY - 2 + y, playerHeight);
+ u8 eventObjId = GetEventObjectIdByXYZ(facingX - 3 + x, facingY - 2 + y, playerHeight);
- if (mapObjId != 16)
+ if (eventObjId != 16)
{
- gMartViewportObjects[r8][MAP_OBJ_ID] = mapObjId;
+ gMartViewportObjects[r8][EVENT_OBJ_ID] = eventObjId;
gMartViewportObjects[r8][X_COORD] = x;
gMartViewportObjects[r8][Y_COORD] = y;
- if (gMapObjects[mapObjId].mapobj_unk_18 == 1)
+ if (gEventObjects[eventObjId].facingDirection == DIR_SOUTH)
gMartViewportObjects[r8][ANIM_NUM] = 0;
- if (gMapObjects[mapObjId].mapobj_unk_18 == 2)
+ if (gEventObjects[eventObjId].facingDirection == DIR_NORTH)
gMartViewportObjects[r8][ANIM_NUM] = 1;
- if (gMapObjects[mapObjId].mapobj_unk_18 == 3)
+ if (gEventObjects[eventObjId].facingDirection == DIR_WEST)
gMartViewportObjects[r8][ANIM_NUM] = 2;
- if (gMapObjects[mapObjId].mapobj_unk_18 == 4)
+ if (gEventObjects[eventObjId].facingDirection == DIR_EAST)
gMartViewportObjects[r8][ANIM_NUM] = 3;
r8++;
}
@@ -479,11 +479,11 @@ static void Shop_AnimViewportObjects(void)
for (i = 0; i < 16; i++) // max objects?
{
- if (gMartViewportObjects[i][MAP_OBJ_ID] == 16)
+ if (gMartViewportObjects[i][EVENT_OBJ_ID] == 16)
continue;
- StartSpriteAnim(&gSprites[AddPseudoFieldObject(
- gMapObjects[gMartViewportObjects[i][MAP_OBJ_ID]].graphicsId,
+ StartSpriteAnim(&gSprites[AddPseudoEventObject(
+ gEventObjects[gMartViewportObjects[i][EVENT_OBJ_ID]].graphicsId,
SpriteCallbackDummy,
(u16)gMartViewportObjects[i][X_COORD] * 16 + 8,
(u16)gMartViewportObjects[i][Y_COORD] * 16 + 32,
@@ -691,7 +691,7 @@ static void Task_DoItemPurchase(u8 taskId)
}
else // a normal mart is only type 0, so types 1 and 2 are decoration marts.
{
- if (IsThereStorageSpaceForDecoration(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]))
+ if (GiveDecoration(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]))
{
if (gMartInfo.martType == MART_TYPE_1)
DisplayItemMessageOnField(taskId, gOtherText_HereYouGo2, Shop_DoItemTransaction, 0xC3E1);
@@ -811,7 +811,7 @@ static void Shop_MoveItemListUp(void)
}
}
#else
-__attribute__((naked))
+NAKED
static void Shop_MoveItemListUp(void)
{
asm(".syntax unified\n\
@@ -950,7 +950,7 @@ static void Shop_MoveItemListDown(void)
}
}
#else
-__attribute__((naked))
+NAKED
static void Shop_MoveItemListDown(void)
{
asm(".syntax unified\n\
@@ -1168,7 +1168,7 @@ static void Task_ReturnToBuyMenu(u8 taskId)
static void Task_ExitBuyMenu(u8 taskId)
{
gFieldCallback = Shop_FadeReturnToMartMenu;
- BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gTasks[taskId].func = Task_ExitBuyMenuDoFade;
}
diff --git a/src/slot_machine.c b/src/slot_machine.c
index 8075f24e4..3de87e0f7 100644
--- a/src/slot_machine.c
+++ b/src/slot_machine.c
@@ -611,7 +611,7 @@ static void sub_8101D24(u8 taskId)
static bool8 sub_8101D5C(struct Task *task)
{
- BeginNormalPaletteFade(-1, 0, 16, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
sub_810423C(eSlotMachine->pikaPower);
eSlotMachine->state++;
return FALSE;
@@ -927,17 +927,17 @@ bool8 sub_81020C8(struct Task *task)
}
if (eSlotMachine->matchedSymbols & ((1 << SLOT_MACHINE_MATCHED_777_BLUE) | (1 << SLOT_MACHINE_MATCHED_777_RED)))
{
- PlayFanfare(BGM_ME_B_BIG);
+ PlayFanfare(MUS_ME_B_BIG);
sub_8104CAC(6);
}
else if (eSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_777_MIXED))
{
- PlayFanfare(BGM_ME_B_BIG);
+ PlayFanfare(MUS_ME_B_BIG);
sub_8104CAC(5);
}
else
{
- PlayFanfare(BGM_ME_B_SMALL);
+ PlayFanfare(MUS_ME_B_SMALL);
sub_8104CAC(2);
}
if (eSlotMachine->matchedSymbols & ((1 << SLOT_MACHINE_MATCHED_777_MIXED) | (1 << SLOT_MACHINE_MATCHED_777_BLUE) | (1 << SLOT_MACHINE_MATCHED_777_RED)))
@@ -1119,7 +1119,7 @@ static bool8 sub_8102424(struct Task *task)
#else
gSaveBlock1.coins = eSlotMachine->coins;
#endif
- BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
eSlotMachine->state++;
return FALSE;
}
@@ -2682,7 +2682,7 @@ static void sub_810437C(struct Task *task)
sub_810545C();
sub_8102680();
StopMapMusic();
- PlayNewMapMusic(BGM_BD_TIME);
+ PlayNewMapMusic(MUS_BD_TIME);
}
static void sub_81043EC(struct Task *task)
@@ -2818,7 +2818,7 @@ static void sub_81046C0(struct Task *task)
{
task->data[4] = 0xa0;
StartSpriteAnimIfDifferent(gSprites + eSlotMachine->unk3F, 5);
- PlayFanfare(BGM_ME_ZANNEN);
+ PlayFanfare(MUS_ME_ZANNEN);
}
else
{
@@ -2830,7 +2830,7 @@ static void sub_81046C0(struct Task *task)
sub_8104098();
eSlotMachine->pikaPower = 0;
}
- PlayFanfare(BGM_ME_B_SMALL);
+ PlayFanfare(MUS_ME_B_SMALL);
}
}
}
@@ -2906,7 +2906,7 @@ static void sub_81048CC(struct Task *task)
task->data[4] = 4;
task->data[5] = 0;
StopMapMusic();
- PlayFanfare(BGM_ME_ZANNEN);
+ PlayFanfare(MUS_ME_ZANNEN);
PlaySE(SE_W153);
}
@@ -3011,7 +3011,7 @@ static void sub_8104B0C(u8 taskId)
static void sub_8104B3C(struct Task *task)
{
- BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
task->data[0]++;
}
@@ -3027,7 +3027,7 @@ static void sub_8104B80(struct Task *task)
sub_81065DC();
BasicInitMenuWindow(&gWindowTemplate_81E7144);
Menu_PrintTextPixelCoords(gOtherText_ReelTime, 10, 32, 1);
- BeginNormalPaletteFade(-1, 0, 16, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
task->data[0]++;
}
@@ -3035,7 +3035,7 @@ static void sub_8104BC8(struct Task *task)
{
if (gMain.newKeys & (B_BUTTON | SELECT_BUTTON))
{
- BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
task->data[0]++;
}
}
@@ -3047,7 +3047,7 @@ static void sub_8104BFC(struct Task *task)
sub_81064B8();
sub_8104CAC(task->data[1]);
sub_810423C(eSlotMachine->pikaPower);
- BeginNormalPaletteFade(-1, 0, 16, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
task->data[0]++;
}
diff --git a/src/sound.c b/src/sound.c
index 159ad3f70..5b41acbc6 100644
--- a/src/sound.c
+++ b/src/sound.c
@@ -44,18 +44,18 @@ extern struct ToneData voicegroup_84549C0[];
static const struct Fanfare sFanfares[] =
{
- { BGM_FANFA1, 80 },
- { BGM_FANFA4, 160 },
- { BGM_FANFA5, 220 },
- { BGM_ME_WAZA, 220 },
- { BGM_ME_ASA, 160 },
- { BGM_ME_BACHI, 340 },
- { BGM_ME_WASURE, 180 },
- { BGM_ME_KINOMI, 120 },
- { BGM_ME_TAMA, 710 },
- { BGM_ME_B_BIG, 250 },
- { BGM_ME_B_SMALL, 150 },
- { BGM_ME_ZANNEN, 160 },
+ { MUS_FANFA1, 80 },
+ { MUS_FANFA4, 160 },
+ { MUS_FANFA5, 220 },
+ { MUS_ME_WAZA, 220 },
+ { MUS_ME_ASA, 160 },
+ { MUS_ME_BACHI, 340 },
+ { MUS_ME_WASURE, 180 },
+ { MUS_ME_KINOMI, 120 },
+ { MUS_ME_TAMA, 710 },
+ { MUS_ME_B_BIG, 250 },
+ { MUS_ME_B_SMALL, 150 },
+ { MUS_ME_ZANNEN, 160 },
};
static void Task_Fanfare(u8 taskId);
diff --git a/src/sprite.c b/src/sprite.c
index a9d84e01a..22b3a6d0f 100644
--- a/src/sprite.c
+++ b/src/sprite.c
@@ -72,7 +72,6 @@ static void JumpToTopOfAffineAnimLoop(u8 matrixNum, struct Sprite *sprite);
static void AffineAnimCmd_jump(u8 matrixNum, struct Sprite *sprite);
static void AffineAnimCmd_end(u8 matrixNum, struct Sprite *sprite);
static void AffineAnimCmd_frame(u8 matrixNum, struct Sprite *sprite);
-static void CopyOamMatrix(u8 destMatrixIndex, struct OamMatrix *srcMatrix);
static u8 GetSpriteMatrixNum(struct Sprite *sprite);
static void SetSpriteOamFlipBits(struct Sprite *sprite, u8 hFlip, u8 vFlip);
static void AffineAnimStateRestartAnim(u8 matrixNum);
diff --git a/src/start_menu.c b/src/start_menu.c
index f2d53eb7f..2024ba89a 100644
--- a/src/start_menu.c
+++ b/src/start_menu.c
@@ -9,7 +9,7 @@
#include "load_save.h"
#include "m4a.h"
#include "main.h"
-#include "map_obj_lock.h"
+#include "event_obj_lock.h"
#include "menu.h"
#include "new_game.h"
#include "option_menu.h"
@@ -300,7 +300,7 @@ static void BuildStartMenuActions_Link(void)
//Show number of safari balls left
static void DisplaySafariBallsWindow(void)
{
- sub_8072C44(gStringVar1, gNumSafariBalls, 12, 1);
+ AlignInt2InMenuWindow(gStringVar1, gNumSafariBalls, 12, 1);
Menu_DrawStdWindowFrame(0, 0, 10, 5);
Menu_PrintText(gOtherText_SafariStock, 1, 1);
}
@@ -379,7 +379,7 @@ void CreateStartMenuTask(void (*func)(u8))
{
u8 taskId;
- InitMenuWindow(&gWindowTemplate_81E6CE4);
+ InitMenuWindow(&gMenuTextWindowTemplate);
taskId = CreateTask(Task_StartMenu, 0x50);
SetTaskFuncWithFollowupFunc(taskId, Task_StartMenu, func);
}
@@ -405,7 +405,7 @@ void sub_8071310(void)
{
if (!is_c1_link_related_active())
{
- FreezeMapObjects();
+ FreezeEventObjects();
sub_80594C0();
sub_80597F4();
}
@@ -503,7 +503,7 @@ static u8 StartMenu_PlayerCallback(void)
if (!gPaletteFade.active)
{
PlayRainSoundEffect();
- TrainerCard_ShowPlayerCard(sub_805469C);
+ TrainerCard_ShowPlayerCard(c2_exit_to_overworld_1_sub_8080DEC);
return 1;
}
return 0;
@@ -524,7 +524,7 @@ static u8 StartMenu_OptionCallback(void)
{
PlayRainSoundEffect();
SetMainCallback2(CB2_InitOptionMenu);
- gMain.savedCallback = sub_805469C;
+ gMain.savedCallback = c2_exit_to_overworld_1_sub_8080DEC;
return 1;
}
return 0;
@@ -551,7 +551,7 @@ static u8 StartMenu_PlayerLinkCallback(void)
if (!gPaletteFade.active)
{
PlayRainSoundEffect();
- TrainerCard_ShowLinkCard(gUnknown_03004860, sub_805469C);
+ TrainerCard_ShowLinkCard(gUnknown_03004860, c2_exit_to_overworld_1_sub_8080DEC);
return 1;
}
return 0;
@@ -588,7 +588,7 @@ static u8 SaveCallback2(void)
case SAVE_SUCCESS:
case SAVE_ERROR:
Menu_EraseScreen();
- sub_8064E2C();
+ ScriptUnfreezeEventObjects();
ScriptContext2_Disable();
return TRUE;
}
@@ -865,15 +865,15 @@ static bool32 sub_80719FC(u8 *step)
ScanlineEffect_Clear();
break;
case 2:
- Text_LoadWindowTemplate(&gWindowTemplate_81E6CE4);
- InitMenuWindow(&gWindowTemplate_81E6CE4);
+ Text_LoadWindowTemplate(&gMenuTextWindowTemplate);
+ InitMenuWindow(&gMenuTextWindowTemplate);
REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_BG0_ON;
break;
case 3:
{
u32 savedIme;
- BlendPalettes(-1, 0x10, 0);
+ BlendPalettes(0xFFFFFFFF, 16, RGB(0, 0, 0));
SetVBlankCallback(sub_80719F0);
savedIme = REG_IME;
REG_IME = 0;
@@ -914,7 +914,7 @@ static void Task_8071B64(u8 taskId)
case 0:
Menu_DisplayDialogueFrame();
Menu_PrintText(gSystemText_Saving, 2, 15);
- BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
(*step)++;
break;
case 1:
@@ -929,7 +929,7 @@ static void Task_8071B64(u8 taskId)
(*step)++;
break;
case 3:
- BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
(*step)++;
break;
case 4:
diff --git a/src/starter_choose.c b/src/starter_choose.c
index 418488774..4e430015e 100644
--- a/src/starter_choose.c
+++ b/src/starter_choose.c
@@ -295,8 +295,8 @@ void CB2_ChooseStarter(void)
LoadCompressedObjectPic(&gUnknown_083F77A4[0]);
LoadSpritePalettes(gUnknown_083F77B4);
Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C);
- InitMenuWindow(&gWindowTemplate_81E6CE4);
- BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
+ InitMenuWindow(&gMenuTextWindowTemplate);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
savedIme = REG_IME;
REG_IME = 0;
@@ -534,7 +534,7 @@ static void CreateStarterPokemonLabel(u8 prevSelection, u8 selection)
AddTextColorCtrlCode(labelText, 0, 15, 8);
//Copy Pokemon name to label
- sub_8072C74(labelText + 5, gSpeciesNames[species], 0x6B, 1);
+ AlignStringInMenuWindow(labelText + 5, gSpeciesNames[species], 0x6B, 1);
Menu_PrintText(
labelText,
gStarterChoose_LabelCoords[selection][0],
@@ -548,7 +548,7 @@ static void CreateStarterPokemonLabel(u8 prevSelection, u8 selection)
REG_WIN0V = WIN_RANGE(labelTop, labelBottom);
}
#elif GERMAN
-__attribute__((naked))
+NAKED
static void CreateStarterPokemonLabel(u8 prevSelection, u8 selection)
{
asm(".syntax unified\n\
@@ -663,7 +663,7 @@ _0810A8CA:\n\
adds r0, r7, 0\n\
movs r2, 0x70\n\
movs r3, 0x2\n\
- bl sub_8072C74\n\
+ bl AlignStringInMenuWindow\n\
adds r2, r5, 0x2\n\
lsls r2, 24\n\
lsrs r2, 24\n\
diff --git a/src/strings.c b/src/strings.c
index 0f599db72..cded04f96 100644
--- a/src/strings.c
+++ b/src/strings.c
@@ -159,7 +159,7 @@ const u8 OtherText_CheckTag[] = _("CHECK TAG");
const u8 OtherText_Confirm[] = _("CONFIRM");
const u8 gOtherText_Walk[] = _("WALK");
-const u8 gUnknownText_Exit[] = _("EXIT");
+const u8 gOtherText_Exit[] = _("EXIT");
const u8 gOtherText_CancelNoTerminator[] = _("CANCEL");
const u8 gOtherText_CancelWithTerminator[] = _("$CANCEL"); // with terminator at beginning?
@@ -1085,7 +1085,7 @@ const u8 OtherText_CheckTag[] = _("PRÜFEN");
const u8 OtherText_Confirm[] = _("O.K.");
const u8 gOtherText_Walk[] = _("LAUFEN");
-const u8 gUnknownText_Exit[] = _("BEENDEN");
+const u8 gOtherText_Exit[] = _("BEENDEN");
const u8 gOtherText_CancelNoTerminator[] = _("ZURÜCK");
const u8 gOtherText_CancelWithTerminator[] = _("$ZURÜCK");
diff --git a/src/text.c b/src/text.c
index 234e6085d..c2f78276b 100644
--- a/src/text.c
+++ b/src/text.c
@@ -618,7 +618,7 @@ const struct WindowTemplate gWindowTemplate_81E6CC8 =
BG_SCREEN_ADDR(15), // tilemap
};
-const struct WindowTemplate gWindowTemplate_81E6CE4 =
+const struct WindowTemplate gMenuTextWindowTemplate =
{
0, // BG number
2, // BG character base block
@@ -1647,7 +1647,7 @@ const struct WindowTemplate gWindowTemplate_81E7224 =
BG_SCREEN_ADDR(31), // tilemap
};
-const struct WindowTemplate gWindowTemplate_81E7240 =
+const struct WindowTemplate gMoveTutorMenuFramesWindowTemplate =
{
1, // BG number
2, // BG character base block
@@ -3458,7 +3458,7 @@ u8 *AlignInt1(struct Window *win, u8 *dest, s32 value, u8 alignAmount, u8 alignT
case 0:
ConvertIntToDecimalString(temp, value);
dest = StringCopy(dest, temp);
- dest[0] = 0xFC;
+ dest[0] = EXT_CTRL_CODE_BEGIN;
dest[1] = 19;
dest[2] = alignAmount;
dest += 3;
@@ -3469,7 +3469,7 @@ u8 *AlignInt1(struct Window *win, u8 *dest, s32 value, u8 alignAmount, u8 alignT
width = GetStringWidth(win, temp);
if (alignAmount > width)
{
- dest[0] = 0xFC;
+ dest[0] = EXT_CTRL_CODE_BEGIN;
dest[1] = 19;
dest[2] = alignAmount - width;
dest += 3;
@@ -3481,7 +3481,7 @@ u8 *AlignInt1(struct Window *win, u8 *dest, s32 value, u8 alignAmount, u8 alignT
width = GetStringWidth(win, temp);
if (alignAmount > width)
{
- dest[0] = 0xFC;
+ dest[0] = EXT_CTRL_CODE_BEGIN;
dest[1] = 19;
dest[2] = (alignAmount - width) / 2;
dest += 3;
@@ -3489,7 +3489,7 @@ u8 *AlignInt1(struct Window *win, u8 *dest, s32 value, u8 alignAmount, u8 alignT
dest = StringCopy(dest, temp);
if (alignAmount > width)
{
- dest[0] = 0xFC;
+ dest[0] = EXT_CTRL_CODE_BEGIN;
dest[1] = 19;
dest[2] = alignAmount;
dest += 3;
diff --git a/src/tileset_anim.c b/src/tileset_anim.c
index abd38edad..37cc88bd3 100644
--- a/src/tileset_anim.c
+++ b/src/tileset_anim.c
@@ -60,158 +60,158 @@ static void sub_807399C(u16);
static void sub_8073974(u16);
static void sub_80739EC(u16);
-static const u8 TilesetAnimTiles_General_0_1[] = INCBIN_U8("data/tilesets/primary/general/anim/0/1.4bpp");
-static const u8 TilesetAnimTiles_General_0_0[] = INCBIN_U8("data/tilesets/primary/general/anim/0/0.4bpp");
-static const u8 TilesetAnimTiles_General_0_2[] = INCBIN_U8("data/tilesets/primary/general/anim/0/2.4bpp");
+static const u8 gTilesetAnims_General0_Frame1[] = INCBIN_U8("data/tilesets/primary/general/anim/0/1.4bpp");
+static const u8 gTilesetAnims_General0_Frame0[] = INCBIN_U8("data/tilesets/primary/general/anim/0/0.4bpp");
+static const u8 gTilesetAnims_General0_Frame2[] = INCBIN_U8("data/tilesets/primary/general/anim/0/2.4bpp");
asm(".space 32");
-static const u8 *const gTilesetAnimTable_General_0[] =
+static const u8 *const gTilesetAnims_General0[] =
{
- TilesetAnimTiles_General_0_0,
- TilesetAnimTiles_General_0_1,
- TilesetAnimTiles_General_0_0,
- TilesetAnimTiles_General_0_2,
+ gTilesetAnims_General0_Frame0,
+ gTilesetAnims_General0_Frame1,
+ gTilesetAnims_General0_Frame0,
+ gTilesetAnims_General0_Frame2,
};
-static const u8 TilesetAnimTiles_General_1_0[] = INCBIN_U8("data/tilesets/primary/general/anim/1/0.4bpp");
-static const u8 TilesetAnimTiles_General_1_1[] = INCBIN_U8("data/tilesets/primary/general/anim/1/1.4bpp");
-static const u8 TilesetAnimTiles_General_1_2[] = INCBIN_U8("data/tilesets/primary/general/anim/1/2.4bpp");
-static const u8 TilesetAnimTiles_General_1_3[] = INCBIN_U8("data/tilesets/primary/general/anim/1/3.4bpp");
-static const u8 TilesetAnimTiles_General_1_4[] = INCBIN_U8("data/tilesets/primary/general/anim/1/4.4bpp");
-static const u8 TilesetAnimTiles_General_1_5[] = INCBIN_U8("data/tilesets/primary/general/anim/1/5.4bpp");
-static const u8 TilesetAnimTiles_General_1_6[] = INCBIN_U8("data/tilesets/primary/general/anim/1/6.4bpp");
-static const u8 TilesetAnimTiles_General_1_7[] = INCBIN_U8("data/tilesets/primary/general/anim/1/7.4bpp");
-
-static const u8 *const gTilesetAnimTable_General_1[] =
-{
- TilesetAnimTiles_General_1_0,
- TilesetAnimTiles_General_1_1,
- TilesetAnimTiles_General_1_2,
- TilesetAnimTiles_General_1_3,
- TilesetAnimTiles_General_1_4,
- TilesetAnimTiles_General_1_5,
- TilesetAnimTiles_General_1_6,
- TilesetAnimTiles_General_1_7,
+static const u8 gTilesetAnims_General1_Frame0[] = INCBIN_U8("data/tilesets/primary/general/anim/1/0.4bpp");
+static const u8 gTilesetAnims_General1_Frame1[] = INCBIN_U8("data/tilesets/primary/general/anim/1/1.4bpp");
+static const u8 gTilesetAnims_General1_Frame2[] = INCBIN_U8("data/tilesets/primary/general/anim/1/2.4bpp");
+static const u8 gTilesetAnims_General1_Frame3[] = INCBIN_U8("data/tilesets/primary/general/anim/1/3.4bpp");
+static const u8 gTilesetAnims_General1_Frame4[] = INCBIN_U8("data/tilesets/primary/general/anim/1/4.4bpp");
+static const u8 gTilesetAnims_General1_Frame5[] = INCBIN_U8("data/tilesets/primary/general/anim/1/5.4bpp");
+static const u8 gTilesetAnims_General1_Frame6[] = INCBIN_U8("data/tilesets/primary/general/anim/1/6.4bpp");
+static const u8 gTilesetAnims_General1_Frame7[] = INCBIN_U8("data/tilesets/primary/general/anim/1/7.4bpp");
+
+static const u8 *const gTilesetAnims_General1[] =
+{
+ gTilesetAnims_General1_Frame0,
+ gTilesetAnims_General1_Frame1,
+ gTilesetAnims_General1_Frame2,
+ gTilesetAnims_General1_Frame3,
+ gTilesetAnims_General1_Frame4,
+ gTilesetAnims_General1_Frame5,
+ gTilesetAnims_General1_Frame6,
+ gTilesetAnims_General1_Frame7,
};
-static const u8 TilesetAnimTiles_General_2_0[] = INCBIN_U8("data/tilesets/primary/general/anim/2/0.4bpp");
-static const u8 TilesetAnimTiles_General_2_1[] = INCBIN_U8("data/tilesets/primary/general/anim/2/1.4bpp");
-static const u8 TilesetAnimTiles_General_2_2[] = INCBIN_U8("data/tilesets/primary/general/anim/2/2.4bpp");
-static const u8 TilesetAnimTiles_General_2_3[] = INCBIN_U8("data/tilesets/primary/general/anim/2/3.4bpp");
-static const u8 TilesetAnimTiles_General_2_4[] = INCBIN_U8("data/tilesets/primary/general/anim/2/4.4bpp");
-static const u8 TilesetAnimTiles_General_2_5[] = INCBIN_U8("data/tilesets/primary/general/anim/2/5.4bpp");
-static const u8 TilesetAnimTiles_General_2_6[] = INCBIN_U8("data/tilesets/primary/general/anim/2/6.4bpp");
-
-static const u8 *const gTilesetAnimTable_General_2[] =
-{
- TilesetAnimTiles_General_2_0,
- TilesetAnimTiles_General_2_1,
- TilesetAnimTiles_General_2_2,
- TilesetAnimTiles_General_2_3,
- TilesetAnimTiles_General_2_4,
- TilesetAnimTiles_General_2_5,
- TilesetAnimTiles_General_2_6,
- TilesetAnimTiles_General_2_0,
+static const u8 gTilesetAnims_General2_Frame0[] = INCBIN_U8("data/tilesets/primary/general/anim/2/0.4bpp");
+static const u8 gTilesetAnims_General2_Frame1[] = INCBIN_U8("data/tilesets/primary/general/anim/2/1.4bpp");
+static const u8 gTilesetAnims_General2_Frame2[] = INCBIN_U8("data/tilesets/primary/general/anim/2/2.4bpp");
+static const u8 gTilesetAnims_General2_Frame3[] = INCBIN_U8("data/tilesets/primary/general/anim/2/3.4bpp");
+static const u8 gTilesetAnims_General2_Frame4[] = INCBIN_U8("data/tilesets/primary/general/anim/2/4.4bpp");
+static const u8 gTilesetAnims_General2_Frame5[] = INCBIN_U8("data/tilesets/primary/general/anim/2/5.4bpp");
+static const u8 gTilesetAnims_General2_Frame6[] = INCBIN_U8("data/tilesets/primary/general/anim/2/6.4bpp");
+
+static const u8 *const gTilesetAnims_General2[] =
+{
+ gTilesetAnims_General2_Frame0,
+ gTilesetAnims_General2_Frame1,
+ gTilesetAnims_General2_Frame2,
+ gTilesetAnims_General2_Frame3,
+ gTilesetAnims_General2_Frame4,
+ gTilesetAnims_General2_Frame5,
+ gTilesetAnims_General2_Frame6,
+ gTilesetAnims_General2_Frame0,
};
-static const u8 TilesetAnimTiles_General_3_0[] = INCBIN_U8("data/tilesets/primary/general/anim/3/0.4bpp");
-static const u8 TilesetAnimTiles_General_3_1[] = INCBIN_U8("data/tilesets/primary/general/anim/3/1.4bpp");
-static const u8 TilesetAnimTiles_General_3_2[] = INCBIN_U8("data/tilesets/primary/general/anim/3/2.4bpp");
-static const u8 TilesetAnimTiles_General_3_3[] = INCBIN_U8("data/tilesets/primary/general/anim/3/3.4bpp");
+static const u8 gTilesetAnims_General3_Frame0[] = INCBIN_U8("data/tilesets/primary/general/anim/3/0.4bpp");
+static const u8 gTilesetAnims_General3_Frame1[] = INCBIN_U8("data/tilesets/primary/general/anim/3/1.4bpp");
+static const u8 gTilesetAnims_General3_Frame2[] = INCBIN_U8("data/tilesets/primary/general/anim/3/2.4bpp");
+static const u8 gTilesetAnims_General3_Frame3[] = INCBIN_U8("data/tilesets/primary/general/anim/3/3.4bpp");
-static const u8 *const gTilesetAnimTable_General_3[] =
+static const u8 *const gTilesetAnims_General3[] =
{
- TilesetAnimTiles_General_3_0,
- TilesetAnimTiles_General_3_1,
- TilesetAnimTiles_General_3_2,
- TilesetAnimTiles_General_3_3,
+ gTilesetAnims_General3_Frame0,
+ gTilesetAnims_General3_Frame1,
+ gTilesetAnims_General3_Frame2,
+ gTilesetAnims_General3_Frame3,
};
-static const u8 TilesetAnimTiles_General_4_0[] = INCBIN_U8("data/tilesets/primary/general/anim/4/0.4bpp");
-static const u8 TilesetAnimTiles_General_4_1[] = INCBIN_U8("data/tilesets/primary/general/anim/4/1.4bpp");
-static const u8 TilesetAnimTiles_General_4_2[] = INCBIN_U8("data/tilesets/primary/general/anim/4/2.4bpp");
-static const u8 TilesetAnimTiles_General_4_3[] = INCBIN_U8("data/tilesets/primary/general/anim/4/3.4bpp");
+static const u8 gTilesetAnims_General4_Frame0[] = INCBIN_U8("data/tilesets/primary/general/anim/4/0.4bpp");
+static const u8 gTilesetAnims_General4_Frame1[] = INCBIN_U8("data/tilesets/primary/general/anim/4/1.4bpp");
+static const u8 gTilesetAnims_General4_Frame2[] = INCBIN_U8("data/tilesets/primary/general/anim/4/2.4bpp");
+static const u8 gTilesetAnims_General4_Frame3[] = INCBIN_U8("data/tilesets/primary/general/anim/4/3.4bpp");
-static const u8 *const gTilesetAnimTable_General_4[] =
+static const u8 *const gTilesetAnims_General4[] =
{
- TilesetAnimTiles_General_4_0,
- TilesetAnimTiles_General_4_1,
- TilesetAnimTiles_General_4_2,
- TilesetAnimTiles_General_4_3,
+ gTilesetAnims_General4_Frame0,
+ gTilesetAnims_General4_Frame1,
+ gTilesetAnims_General4_Frame2,
+ gTilesetAnims_General4_Frame3,
};
-static const u8 TilesetAnimTiles_Lavaridge_0[] = INCBIN_U8("data/tilesets/secondary/lavaridge/anim/0.4bpp");
-static const u8 TilesetAnimTiles_Lavaridge_1[] = INCBIN_U8("data/tilesets/secondary/lavaridge/anim/1.4bpp");
-static const u8 TilesetAnimTiles_Lavaridge_2[] = INCBIN_U8("data/tilesets/secondary/lavaridge/anim/2.4bpp");
-static const u8 TilesetAnimTiles_Lavaridge_3[] = INCBIN_U8("data/tilesets/secondary/lavaridge/anim/3.4bpp");
+static const u8 gTilesetAnims_Lavaridge0_Frame0[] = INCBIN_U8("data/tilesets/secondary/lavaridge/anim/0.4bpp");
+static const u8 gTilesetAnims_Lavaridge0_Frame1[] = INCBIN_U8("data/tilesets/secondary/lavaridge/anim/1.4bpp");
+static const u8 gTilesetAnims_Lavaridge0_Frame2[] = INCBIN_U8("data/tilesets/secondary/lavaridge/anim/2.4bpp");
+static const u8 gTilesetAnims_Lavaridge0_Frame3[] = INCBIN_U8("data/tilesets/secondary/lavaridge/anim/3.4bpp");
-static const u8 *const gTilesetAnimTable_Lavaridge[] =
+static const u8 *const gTilesetAnims_Lavaridge0[] =
{
- TilesetAnimTiles_Lavaridge_0,
- TilesetAnimTiles_Lavaridge_1,
- TilesetAnimTiles_Lavaridge_2,
- TilesetAnimTiles_Lavaridge_3,
+ gTilesetAnims_Lavaridge0_Frame0,
+ gTilesetAnims_Lavaridge0_Frame1,
+ gTilesetAnims_Lavaridge0_Frame2,
+ gTilesetAnims_Lavaridge0_Frame3,
};
-static const u8 TilesetAnimTiles_Pacifidlog_0_0[] = INCBIN_U8("data/tilesets/secondary/pacifidlog/anim/0/0.4bpp");
-static const u8 TilesetAnimTiles_Pacifidlog_0_1[] = INCBIN_U8("data/tilesets/secondary/pacifidlog/anim/0/1.4bpp");
-static const u8 TilesetAnimTiles_Pacifidlog_0_2[] = INCBIN_U8("data/tilesets/secondary/pacifidlog/anim/0/2.4bpp");
+static const u8 gTilesetAnims_Pacifidlog0_Frame0[] = INCBIN_U8("data/tilesets/secondary/pacifidlog/anim/0/0.4bpp");
+static const u8 gTilesetAnims_Pacifidlog0_Frame1[] = INCBIN_U8("data/tilesets/secondary/pacifidlog/anim/0/1.4bpp");
+static const u8 gTilesetAnims_Pacifidlog0_Frame2[] = INCBIN_U8("data/tilesets/secondary/pacifidlog/anim/0/2.4bpp");
-static const u8 *const gTilesetAnimTable_Pacifidlog_0[] =
+static const u8 *const gTilesetAnims_Pacifidlog0[] =
{
- TilesetAnimTiles_Pacifidlog_0_0,
- TilesetAnimTiles_Pacifidlog_0_1,
- TilesetAnimTiles_Pacifidlog_0_2,
- TilesetAnimTiles_Pacifidlog_0_1,
+ gTilesetAnims_Pacifidlog0_Frame0,
+ gTilesetAnims_Pacifidlog0_Frame1,
+ gTilesetAnims_Pacifidlog0_Frame2,
+ gTilesetAnims_Pacifidlog0_Frame1,
};
-static const u8 TilesetAnimTiles_Underwater_0[] = INCBIN_U8("data/tilesets/secondary/underwater/anim/0.4bpp");
-static const u8 TilesetAnimTiles_Underwater_1[] = INCBIN_U8("data/tilesets/secondary/underwater/anim/1.4bpp");
-static const u8 TilesetAnimTiles_Underwater_2[] = INCBIN_U8("data/tilesets/secondary/underwater/anim/2.4bpp");
-static const u8 TilesetAnimTiles_Underwater_3[] = INCBIN_U8("data/tilesets/secondary/underwater/anim/3.4bpp");
+static const u8 gTilesetAnims_Underwater0_Frame0[] = INCBIN_U8("data/tilesets/secondary/underwater/anim/0.4bpp");
+static const u8 gTilesetAnims_Underwater0_Frame1[] = INCBIN_U8("data/tilesets/secondary/underwater/anim/1.4bpp");
+static const u8 gTilesetAnims_Underwater0_Frame2[] = INCBIN_U8("data/tilesets/secondary/underwater/anim/2.4bpp");
+static const u8 gTilesetAnims_Underwater0_Frame3[] = INCBIN_U8("data/tilesets/secondary/underwater/anim/3.4bpp");
-static const u8 *const gTilesetAnimTable_Underwater[] =
+static const u8 *const gTilesetAnims_Underwater0[] =
{
- TilesetAnimTiles_Underwater_0,
- TilesetAnimTiles_Underwater_1,
- TilesetAnimTiles_Underwater_2,
- TilesetAnimTiles_Underwater_3,
+ gTilesetAnims_Underwater0_Frame0,
+ gTilesetAnims_Underwater0_Frame1,
+ gTilesetAnims_Underwater0_Frame2,
+ gTilesetAnims_Underwater0_Frame3
};
-static const u8 TilesetAnimTiles_Pacifidlog_1_0[] = INCBIN_U8("data/tilesets/secondary/pacifidlog/anim/1/0.4bpp");
-static const u8 TilesetAnimTiles_Pacifidlog_1_1[] = INCBIN_U8("data/tilesets/secondary/pacifidlog/anim/1/1.4bpp");
-static const u8 TilesetAnimTiles_Pacifidlog_1_2[] = INCBIN_U8("data/tilesets/secondary/pacifidlog/anim/1/2.4bpp");
-static const u8 TilesetAnimTiles_Pacifidlog_1_3[] = INCBIN_U8("data/tilesets/secondary/pacifidlog/anim/1/3.4bpp");
-static const u8 TilesetAnimTiles_Pacifidlog_1_4[] = INCBIN_U8("data/tilesets/secondary/pacifidlog/anim/1/4.4bpp");
-static const u8 TilesetAnimTiles_Pacifidlog_1_5[] = INCBIN_U8("data/tilesets/secondary/pacifidlog/anim/1/5.4bpp");
-static const u8 TilesetAnimTiles_Pacifidlog_1_6[] = INCBIN_U8("data/tilesets/secondary/pacifidlog/anim/1/6.4bpp");
-static const u8 TilesetAnimTiles_Pacifidlog_1_7[] = INCBIN_U8("data/tilesets/secondary/pacifidlog/anim/1/7.4bpp");
-
-static const u8 *const gTilesetAnimTable_Pacifidlog_1[] =
-{
- TilesetAnimTiles_Pacifidlog_1_0,
- TilesetAnimTiles_Pacifidlog_1_1,
- TilesetAnimTiles_Pacifidlog_1_2,
- TilesetAnimTiles_Pacifidlog_1_3,
- TilesetAnimTiles_Pacifidlog_1_4,
- TilesetAnimTiles_Pacifidlog_1_5,
- TilesetAnimTiles_Pacifidlog_1_6,
- TilesetAnimTiles_Pacifidlog_1_7,
+static const u8 gTilesetAnims_Pacifidlog1_Frame0[] = INCBIN_U8("data/tilesets/secondary/pacifidlog/anim/1/0.4bpp");
+static const u8 gTilesetAnims_Pacifidlog1_Frame1[] = INCBIN_U8("data/tilesets/secondary/pacifidlog/anim/1/1.4bpp");
+static const u8 gTilesetAnims_Pacifidlog1_Frame2[] = INCBIN_U8("data/tilesets/secondary/pacifidlog/anim/1/2.4bpp");
+static const u8 gTilesetAnims_Pacifidlog1_Frame3[] = INCBIN_U8("data/tilesets/secondary/pacifidlog/anim/1/3.4bpp");
+static const u8 gTilesetAnims_Pacifidlog1_Frame4[] = INCBIN_U8("data/tilesets/secondary/pacifidlog/anim/1/4.4bpp");
+static const u8 gTilesetAnims_Pacifidlog1_Frame5[] = INCBIN_U8("data/tilesets/secondary/pacifidlog/anim/1/5.4bpp");
+static const u8 gTilesetAnims_Pacifidlog1_Frame6[] = INCBIN_U8("data/tilesets/secondary/pacifidlog/anim/1/6.4bpp");
+static const u8 gTilesetAnims_Pacifidlog1_Frame7[] = INCBIN_U8("data/tilesets/secondary/pacifidlog/anim/1/7.4bpp");
+
+static const u8 *const gTilesetAnims_Pacifidlog1[] =
+{
+ gTilesetAnims_Pacifidlog1_Frame0,
+ gTilesetAnims_Pacifidlog1_Frame1,
+ gTilesetAnims_Pacifidlog1_Frame2,
+ gTilesetAnims_Pacifidlog1_Frame3,
+ gTilesetAnims_Pacifidlog1_Frame4,
+ gTilesetAnims_Pacifidlog1_Frame5,
+ gTilesetAnims_Pacifidlog1_Frame6,
+ gTilesetAnims_Pacifidlog1_Frame7
};
-static const u8 TilesetAnimTiles_Mauville_0_0[] = INCBIN_U8("data/tilesets/secondary/mauville/anim/0/0.4bpp");
-static const u8 TilesetAnimTiles_Mauville_0_1[] = INCBIN_U8("data/tilesets/secondary/mauville/anim/0/1.4bpp");
-static const u8 TilesetAnimTiles_Mauville_0_2[] = INCBIN_U8("data/tilesets/secondary/mauville/anim/0/2.4bpp");
-static const u8 TilesetAnimTiles_Mauville_0_3[] = INCBIN_U8("data/tilesets/secondary/mauville/anim/0/3.4bpp");
-static const u8 TilesetAnimTiles_Mauville_0_4[] = INCBIN_U8("data/tilesets/secondary/mauville/anim/0/4.4bpp");
+static const u8 gTilesetAnims_Mauville0_Frame0[] = INCBIN_U8("data/tilesets/secondary/mauville/anim/0/0.4bpp");
+static const u8 gTilesetAnims_Mauville0_Frame1[] = INCBIN_U8("data/tilesets/secondary/mauville/anim/0/1.4bpp");
+static const u8 gTilesetAnims_Mauville0_Frame2[] = INCBIN_U8("data/tilesets/secondary/mauville/anim/0/2.4bpp");
+static const u8 gTilesetAnims_Mauville0_Frame3[] = INCBIN_U8("data/tilesets/secondary/mauville/anim/0/3.4bpp");
+static const u8 gTilesetAnims_Mauville0_Frame4[] = INCBIN_U8("data/tilesets/secondary/mauville/anim/0/4.4bpp");
-static const u8 TilesetAnimTiles_Mauville_1_0[] = INCBIN_U8("data/tilesets/secondary/mauville/anim/1/0.4bpp");
-static const u8 TilesetAnimTiles_Mauville_1_1[] = INCBIN_U8("data/tilesets/secondary/mauville/anim/1/1.4bpp");
-static const u8 TilesetAnimTiles_Mauville_1_2[] = INCBIN_U8("data/tilesets/secondary/mauville/anim/1/2.4bpp");
-static const u8 TilesetAnimTiles_Mauville_1_3[] = INCBIN_U8("data/tilesets/secondary/mauville/anim/1/3.4bpp");
-static const u8 TilesetAnimTiles_Mauville_1_4[] = INCBIN_U8("data/tilesets/secondary/mauville/anim/1/4.4bpp");
+static const u8 gTilesetAnims_Mauville1_Frame0[] = INCBIN_U8("data/tilesets/secondary/mauville/anim/1/0.4bpp");
+static const u8 gTilesetAnims_Mauville1_Frame1[] = INCBIN_U8("data/tilesets/secondary/mauville/anim/1/1.4bpp");
+static const u8 gTilesetAnims_Mauville1_Frame2[] = INCBIN_U8("data/tilesets/secondary/mauville/anim/1/2.4bpp");
+static const u8 gTilesetAnims_Mauville1_Frame3[] = INCBIN_U8("data/tilesets/secondary/mauville/anim/1/3.4bpp");
+static const u8 gTilesetAnims_Mauville1_Frame4[] = INCBIN_U8("data/tilesets/secondary/mauville/anim/1/4.4bpp");
-static const void *const gUnknown_0837BAE4[] =
+static const void *const gTilesetAnims_MauvilleVDests0[] =
{
(void *)(VRAM + 0x4C00),
(void *)(VRAM + 0x4C80),
@@ -223,7 +223,7 @@ static const void *const gUnknown_0837BAE4[] =
(void *)(VRAM + 0x4F80),
};
-static const void *const gUnknown_0837BB04[] =
+static const void *const gTilesetAnims_MauvilleVDests1[] =
{
(void *)(VRAM + 0x5000),
(void *)(VRAM + 0x5080),
@@ -235,64 +235,64 @@ static const void *const gUnknown_0837BB04[] =
(void *)(VRAM + 0x5380),
};
-static const u8 *const gTilesetAnimTable_Mauville_0A[] =
-{
- TilesetAnimTiles_Mauville_0_0,
- TilesetAnimTiles_Mauville_0_0,
- TilesetAnimTiles_Mauville_0_1,
- TilesetAnimTiles_Mauville_0_2,
- TilesetAnimTiles_Mauville_0_3,
- TilesetAnimTiles_Mauville_0_3,
- TilesetAnimTiles_Mauville_0_3,
- TilesetAnimTiles_Mauville_0_3,
- TilesetAnimTiles_Mauville_0_3,
- TilesetAnimTiles_Mauville_0_3,
- TilesetAnimTiles_Mauville_0_2,
- TilesetAnimTiles_Mauville_0_1,
+static const u8 *const gTilesetAnims_Mauville0[] =
+{
+ gTilesetAnims_Mauville0_Frame0,
+ gTilesetAnims_Mauville0_Frame0,
+ gTilesetAnims_Mauville0_Frame1,
+ gTilesetAnims_Mauville0_Frame2,
+ gTilesetAnims_Mauville0_Frame3,
+ gTilesetAnims_Mauville0_Frame3,
+ gTilesetAnims_Mauville0_Frame3,
+ gTilesetAnims_Mauville0_Frame3,
+ gTilesetAnims_Mauville0_Frame3,
+ gTilesetAnims_Mauville0_Frame3,
+ gTilesetAnims_Mauville0_Frame2,
+ gTilesetAnims_Mauville0_Frame1,
};
-static const u8 *const gTilesetAnimTable_Mauville_1A[] =
-{
- TilesetAnimTiles_Mauville_1_0,
- TilesetAnimTiles_Mauville_1_0,
- TilesetAnimTiles_Mauville_1_1,
- TilesetAnimTiles_Mauville_1_2,
- TilesetAnimTiles_Mauville_1_3,
- TilesetAnimTiles_Mauville_1_3,
- TilesetAnimTiles_Mauville_1_3,
- TilesetAnimTiles_Mauville_1_3,
- TilesetAnimTiles_Mauville_1_3,
- TilesetAnimTiles_Mauville_1_3,
- TilesetAnimTiles_Mauville_1_2,
- TilesetAnimTiles_Mauville_1_1,
+static const u8 *const gTilesetAnims_Mauville1[] =
+{
+ gTilesetAnims_Mauville1_Frame0,
+ gTilesetAnims_Mauville1_Frame0,
+ gTilesetAnims_Mauville1_Frame1,
+ gTilesetAnims_Mauville1_Frame2,
+ gTilesetAnims_Mauville1_Frame3,
+ gTilesetAnims_Mauville1_Frame3,
+ gTilesetAnims_Mauville1_Frame3,
+ gTilesetAnims_Mauville1_Frame3,
+ gTilesetAnims_Mauville1_Frame3,
+ gTilesetAnims_Mauville1_Frame3,
+ gTilesetAnims_Mauville1_Frame2,
+ gTilesetAnims_Mauville1_Frame1,
};
-static const u8 *const gTilesetAnimTable_Mauville_0B[] =
+static const u8 *const gTilesetAnims_Mauville2[] =
{
- TilesetAnimTiles_Mauville_0_0,
- TilesetAnimTiles_Mauville_0_0,
- TilesetAnimTiles_Mauville_0_4,
- TilesetAnimTiles_Mauville_0_4,
+ gTilesetAnims_Mauville0_Frame0,
+ gTilesetAnims_Mauville0_Frame0,
+ gTilesetAnims_Mauville0_Frame4,
+ gTilesetAnims_Mauville0_Frame4,
};
-static const u8 *const gTilesetAnimTable_Mauville_1B[] =
+static const u8 *const gTilesetAnims_Mauville3[] =
{
- TilesetAnimTiles_Mauville_1_0,
- TilesetAnimTiles_Mauville_1_0,
- TilesetAnimTiles_Mauville_1_4,
- TilesetAnimTiles_Mauville_1_4,
+ gTilesetAnims_Mauville1_Frame0,
+ gTilesetAnims_Mauville1_Frame0,
+ gTilesetAnims_Mauville1_Frame4,
+ gTilesetAnims_Mauville1_Frame4,
};
-static const u8 TilesetAnimTiles_Rustboro_0_0[] = INCBIN_U8("data/tilesets/secondary/rustboro/anim/0/0.4bpp");
-static const u8 TilesetAnimTiles_Rustboro_0_1[] = INCBIN_U8("data/tilesets/secondary/rustboro/anim/0/1.4bpp");
-static const u8 TilesetAnimTiles_Rustboro_0_2[] = INCBIN_U8("data/tilesets/secondary/rustboro/anim/0/2.4bpp");
-static const u8 TilesetAnimTiles_Rustboro_0_3[] = INCBIN_U8("data/tilesets/secondary/rustboro/anim/0/3.4bpp");
-static const u8 TilesetAnimTiles_Rustboro_0_4[] = INCBIN_U8("data/tilesets/secondary/rustboro/anim/0/4.4bpp");
-static const u8 TilesetAnimTiles_Rustboro_0_5[] = INCBIN_U8("data/tilesets/secondary/rustboro/anim/0/5.4bpp");
-static const u8 TilesetAnimTiles_Rustboro_0_6[] = INCBIN_U8("data/tilesets/secondary/rustboro/anim/0/6.4bpp");
-static const u8 TilesetAnimTiles_Rustboro_0_7[] = INCBIN_U8("data/tilesets/secondary/rustboro/anim/0/7.4bpp");
+static const u8 gTilesetAnims_Rustboro0_Frame0[] = INCBIN_U8("data/tilesets/secondary/rustboro/anim/0/0.4bpp");
+static const u8 gTilesetAnims_Rustboro0_Frame1[] = INCBIN_U8("data/tilesets/secondary/rustboro/anim/0/1.4bpp");
+static const u8 gTilesetAnims_Rustboro0_Frame2[] = INCBIN_U8("data/tilesets/secondary/rustboro/anim/0/2.4bpp");
+static const u8 gTilesetAnims_Rustboro0_Frame3[] = INCBIN_U8("data/tilesets/secondary/rustboro/anim/0/3.4bpp");
+static const u8 gTilesetAnims_Rustboro0_Frame4[] = INCBIN_U8("data/tilesets/secondary/rustboro/anim/0/4.4bpp");
+static const u8 gTilesetAnims_Rustboro0_Frame5[] = INCBIN_U8("data/tilesets/secondary/rustboro/anim/0/5.4bpp");
+static const u8 gTilesetAnims_Rustboro0_Frame6[] = INCBIN_U8("data/tilesets/secondary/rustboro/anim/0/6.4bpp");
+static const u8 gTilesetAnims_Rustboro0_Frame7[] = INCBIN_U8("data/tilesets/secondary/rustboro/anim/0/7.4bpp");
-static const void *const gUnknown_0837BFA4[] =
+static const void *const gTilesetAnims_RustboroVDests0[] =
{
(void *)(VRAM + 0x5000),
(void *)(VRAM + 0x5080),
@@ -304,57 +304,57 @@ static const void *const gUnknown_0837BFA4[] =
(void *)(VRAM + 0x5380),
};
-static const u8 *const gTilesetAnimTable_Rustboro_0[] =
+static const u8 *const gTilesetAnims_Rustboro0[] =
{
- TilesetAnimTiles_Rustboro_0_0,
- TilesetAnimTiles_Rustboro_0_1,
- TilesetAnimTiles_Rustboro_0_2,
- TilesetAnimTiles_Rustboro_0_3,
- TilesetAnimTiles_Rustboro_0_4,
- TilesetAnimTiles_Rustboro_0_5,
- TilesetAnimTiles_Rustboro_0_6,
- TilesetAnimTiles_Rustboro_0_7,
+ gTilesetAnims_Rustboro0_Frame0,
+ gTilesetAnims_Rustboro0_Frame1,
+ gTilesetAnims_Rustboro0_Frame2,
+ gTilesetAnims_Rustboro0_Frame3,
+ gTilesetAnims_Rustboro0_Frame4,
+ gTilesetAnims_Rustboro0_Frame5,
+ gTilesetAnims_Rustboro0_Frame6,
+ gTilesetAnims_Rustboro0_Frame7,
};
-static const u8 TilesetAnimTiles_Rustboro_1_0[] = INCBIN_U8("data/tilesets/secondary/rustboro/anim/1/0.4bpp");
-static const u8 TilesetAnimTiles_Rustboro_1_1[] = INCBIN_U8("data/tilesets/secondary/rustboro/anim/1/1.4bpp");
+static const u8 gTilesetAnims_Rustboro1_Frame0[] = INCBIN_U8("data/tilesets/secondary/rustboro/anim/1/0.4bpp");
+static const u8 gTilesetAnims_Rustboro1_Frame1[] = INCBIN_U8("data/tilesets/secondary/rustboro/anim/1/1.4bpp");
-static const u8 *const gTilesetAnimTable_Rustboro_1[] =
+static const u8 *const gTilesetAnims_Rustboro1[] =
{
- TilesetAnimTiles_Rustboro_1_0,
- TilesetAnimTiles_Rustboro_1_1,
+ gTilesetAnims_Rustboro1_Frame0,
+ gTilesetAnims_Rustboro1_Frame1,
};
-static const u8 TilesetAnimTiles_Cave_0[] = INCBIN_U8("data/tilesets/secondary/cave/anim/0.4bpp");
-static const u8 TilesetAnimTiles_Cave_1[] = INCBIN_U8("data/tilesets/secondary/cave/anim/1.4bpp");
-static const u8 TilesetAnimTiles_Cave_2[] = INCBIN_U8("data/tilesets/secondary/cave/anim/2.4bpp");
-static const u8 TilesetAnimTiles_Cave_3[] = INCBIN_U8("data/tilesets/secondary/cave/anim/3.4bpp");
+static const u8 gTilesetAnims_Lavaridge1_Cave0_Frame0[] = INCBIN_U8("data/tilesets/secondary/cave/anim/0.4bpp");
+static const u8 gTilesetAnims_Lavaridge1_Cave0_Frame1[] = INCBIN_U8("data/tilesets/secondary/cave/anim/1.4bpp");
+static const u8 gTilesetAnims_Lavaridge1_Cave0_Frame2[] = INCBIN_U8("data/tilesets/secondary/cave/anim/2.4bpp");
+static const u8 gTilesetAnims_Lavaridge1_Cave0_Frame3[] = INCBIN_U8("data/tilesets/secondary/cave/anim/3.4bpp");
// unused anim tiles for cave
-static const u8 TilesetAnimTiles_Cave_4[] = INCBIN_U8("data/tilesets/secondary/cave/anim/unused/0.4bpp");
-static const u8 TilesetAnimTiles_Cave_5[] = INCBIN_U8("data/tilesets/secondary/cave/anim/unused/1.4bpp");
-static const u8 TilesetAnimTiles_Cave_6[] = INCBIN_U8("data/tilesets/secondary/cave/anim/unused/2.4bpp");
-static const u8 TilesetAnimTiles_Cave_7[] = INCBIN_U8("data/tilesets/secondary/cave/anim/unused/3.4bpp");
+static const u8 gTilesetAnims_Lavaridge1_CaveUnused_Frame0[] = INCBIN_U8("data/tilesets/secondary/cave/anim/unused/0.4bpp");
+static const u8 gTilesetAnims_Lavaridge1_CaveUnused_Frame1[] = INCBIN_U8("data/tilesets/secondary/cave/anim/unused/1.4bpp");
+static const u8 gTilesetAnims_Lavaridge1_CaveUnused_Frame2[] = INCBIN_U8("data/tilesets/secondary/cave/anim/unused/2.4bpp");
+static const u8 gTilesetAnims_Lavaridge1_CaveUnused_Frame3[] = INCBIN_U8("data/tilesets/secondary/cave/anim/unused/3.4bpp");
asm(".space 32");
-static const u8 *const gTilesetAnimTable_Cave[] =
+static const u8 *const gTilesetAnims_Lavaridge1_Cave0[] =
{
- TilesetAnimTiles_Cave_0,
- TilesetAnimTiles_Cave_1,
- TilesetAnimTiles_Cave_2,
- TilesetAnimTiles_Cave_3,
+ gTilesetAnims_Lavaridge1_Cave0_Frame0,
+ gTilesetAnims_Lavaridge1_Cave0_Frame1,
+ gTilesetAnims_Lavaridge1_Cave0_Frame2,
+ gTilesetAnims_Lavaridge1_Cave0_Frame3,
};
-static const u8 TilesetAnimTiles_EverGrande_0[] = INCBIN_U8("data/tilesets/secondary/ever_grande/anim/0.4bpp");
-static const u8 TilesetAnimTiles_EverGrande_1[] = INCBIN_U8("data/tilesets/secondary/ever_grande/anim/1.4bpp");
-static const u8 TilesetAnimTiles_EverGrande_2[] = INCBIN_U8("data/tilesets/secondary/ever_grande/anim/2.4bpp");
-static const u8 TilesetAnimTiles_EverGrande_3[] = INCBIN_U8("data/tilesets/secondary/ever_grande/anim/3.4bpp");
-static const u8 TilesetAnimTiles_EverGrande_4[] = INCBIN_U8("data/tilesets/secondary/ever_grande/anim/4.4bpp");
-static const u8 TilesetAnimTiles_EverGrande_5[] = INCBIN_U8("data/tilesets/secondary/ever_grande/anim/5.4bpp");
-static const u8 TilesetAnimTiles_EverGrande_6[] = INCBIN_U8("data/tilesets/secondary/ever_grande/anim/6.4bpp");
-static const u8 TilesetAnimTiles_EverGrande_7[] = INCBIN_U8("data/tilesets/secondary/ever_grande/anim/7.4bpp");
+static const u8 gTilesetAnims_EverGrande0_Frame0[] = INCBIN_U8("data/tilesets/secondary/ever_grande/anim/0.4bpp");
+static const u8 gTilesetAnims_EverGrande0_Frame1[] = INCBIN_U8("data/tilesets/secondary/ever_grande/anim/1.4bpp");
+static const u8 gTilesetAnims_EverGrande0_Frame2[] = INCBIN_U8("data/tilesets/secondary/ever_grande/anim/2.4bpp");
+static const u8 gTilesetAnims_EverGrande0_Frame3[] = INCBIN_U8("data/tilesets/secondary/ever_grande/anim/3.4bpp");
+static const u8 gTilesetAnims_EverGrande0_Frame4[] = INCBIN_U8("data/tilesets/secondary/ever_grande/anim/4.4bpp");
+static const u8 gTilesetAnims_EverGrande0_Frame5[] = INCBIN_U8("data/tilesets/secondary/ever_grande/anim/5.4bpp");
+static const u8 gTilesetAnims_EverGrande0_Frame6[] = INCBIN_U8("data/tilesets/secondary/ever_grande/anim/6.4bpp");
+static const u8 gTilesetAnims_EverGrande0_Frame7[] = INCBIN_U8("data/tilesets/secondary/ever_grande/anim/7.4bpp");
asm(".space 32");
-static const void *const gUnknown_0837C93C[] =
+static const void *const gTilesetAnims_EverGrandeVDests0[] =
{
(void *)(VRAM + 0x5C00),
(void *)(VRAM + 0x5C80),
@@ -366,88 +366,88 @@ static const void *const gUnknown_0837C93C[] =
(void *)(VRAM + 0x5F80),
};
-static const u8 *const gTilesetAnimTable_EverGrande[] =
+static const u8 *const gTilesetAnims_EverGrande0[] =
{
- TilesetAnimTiles_EverGrande_0,
- TilesetAnimTiles_EverGrande_1,
- TilesetAnimTiles_EverGrande_2,
- TilesetAnimTiles_EverGrande_3,
- TilesetAnimTiles_EverGrande_4,
- TilesetAnimTiles_EverGrande_5,
- TilesetAnimTiles_EverGrande_6,
- TilesetAnimTiles_EverGrande_7,
+ gTilesetAnims_EverGrande0_Frame0,
+ gTilesetAnims_EverGrande0_Frame1,
+ gTilesetAnims_EverGrande0_Frame2,
+ gTilesetAnims_EverGrande0_Frame3,
+ gTilesetAnims_EverGrande0_Frame4,
+ gTilesetAnims_EverGrande0_Frame5,
+ gTilesetAnims_EverGrande0_Frame6,
+ gTilesetAnims_EverGrande0_Frame7,
};
-static const u8 TilesetAnimTiles_Building_0[] = INCBIN_U8("data/tilesets/primary/building/anim/0.4bpp");
-static const u8 TilesetAnimTiles_Building_1[] = INCBIN_U8("data/tilesets/primary/building/anim/1.4bpp");
+static const u8 gTilesetAnims_InsideBuilding0_Frame0[] = INCBIN_U8("data/tilesets/primary/building/anim/0.4bpp");
+static const u8 gTilesetAnims_InsideBuilding0_Frame1[] = INCBIN_U8("data/tilesets/primary/building/anim/1.4bpp");
-static const u8 *const gTilesetAnimTable_Building[] =
+static const u8 *const gTilesetAnims_InsideBuilding0[] =
{
- TilesetAnimTiles_Building_0,
- TilesetAnimTiles_Building_1,
+ gTilesetAnims_InsideBuilding0_Frame0,
+ gTilesetAnims_InsideBuilding0_Frame1,
};
-static const u8 TilesetAnimTiles_SootopolisGym_0_0[] = INCBIN_U8("data/tilesets/secondary/sootopolis_gym/anim/0/0.4bpp");
-static const u8 TilesetAnimTiles_SootopolisGym_0_1[] = INCBIN_U8("data/tilesets/secondary/sootopolis_gym/anim/0/1.4bpp");
-static const u8 TilesetAnimTiles_SootopolisGym_0_2[] = INCBIN_U8("data/tilesets/secondary/sootopolis_gym/anim/0/2.4bpp");
-static const u8 TilesetAnimTiles_SootopolisGym_1_0[] = INCBIN_U8("data/tilesets/secondary/sootopolis_gym/anim/1/0.4bpp");
-static const u8 TilesetAnimTiles_SootopolisGym_1_1[] = INCBIN_U8("data/tilesets/secondary/sootopolis_gym/anim/1/1.4bpp");
-static const u8 TilesetAnimTiles_SootopolisGym_1_2[] = INCBIN_U8("data/tilesets/secondary/sootopolis_gym/anim/1/2.4bpp");
+static const u8 gTilesetAnims_SootopolisGym0_Frame0[] = INCBIN_U8("data/tilesets/secondary/sootopolis_gym/anim/0/0.4bpp");
+static const u8 gTilesetAnims_SootopolisGym0_Frame1[] = INCBIN_U8("data/tilesets/secondary/sootopolis_gym/anim/0/1.4bpp");
+static const u8 gTilesetAnims_SootopolisGym0_Frame2[] = INCBIN_U8("data/tilesets/secondary/sootopolis_gym/anim/0/2.4bpp");
+static const u8 gTilesetAnims_SootopolisGym1_Frame0[] = INCBIN_U8("data/tilesets/secondary/sootopolis_gym/anim/1/0.4bpp");
+static const u8 gTilesetAnims_SootopolisGym1_Frame1[] = INCBIN_U8("data/tilesets/secondary/sootopolis_gym/anim/1/1.4bpp");
+static const u8 gTilesetAnims_SootopolisGym1_Frame2[] = INCBIN_U8("data/tilesets/secondary/sootopolis_gym/anim/1/2.4bpp");
-static const u8 *const gTilesetAnimTable_SootopolisGym_0[] =
+static const u8 *const gTilesetAnims_SootopolisGym0[] =
{
- TilesetAnimTiles_SootopolisGym_0_0,
- TilesetAnimTiles_SootopolisGym_0_1,
- TilesetAnimTiles_SootopolisGym_0_2,
+ gTilesetAnims_SootopolisGym0_Frame0,
+ gTilesetAnims_SootopolisGym0_Frame1,
+ gTilesetAnims_SootopolisGym0_Frame2,
};
-static const u8 *const gTilesetAnimTable_SootopolisGym_1[] =
+static const u8 *const gTilesetAnims_SootopolisGym1[] =
{
- TilesetAnimTiles_SootopolisGym_1_0,
- TilesetAnimTiles_SootopolisGym_1_1,
- TilesetAnimTiles_SootopolisGym_1_2,
+ gTilesetAnims_SootopolisGym1_Frame0,
+ gTilesetAnims_SootopolisGym1_Frame1,
+ gTilesetAnims_SootopolisGym1_Frame2,
};
-static const u8 TilesetAnimTiles_EliteFour_1_0[] = INCBIN_U8("data/tilesets/secondary/elite_four/anim/1/0.4bpp");
-static const u8 TilesetAnimTiles_EliteFour_1_1[] = INCBIN_U8("data/tilesets/secondary/elite_four/anim/1/1.4bpp");
-static const u8 TilesetAnimTiles_EliteFour_0_0[] = INCBIN_U8("data/tilesets/secondary/elite_four/anim/0/0.4bpp");
-static const u8 TilesetAnimTiles_EliteFour_0_1[] = INCBIN_U8("data/tilesets/secondary/elite_four/anim/0/1.4bpp");
-static const u8 TilesetAnimTiles_EliteFour_0_2[] = INCBIN_U8("data/tilesets/secondary/elite_four/anim/0/2.4bpp");
-static const u8 TilesetAnimTiles_EliteFour_0_3[] = INCBIN_U8("data/tilesets/secondary/elite_four/anim/0/3.4bpp");
+static const u8 gTilesetAnims_EliteFour0_Frame0[] = INCBIN_U8("data/tilesets/secondary/elite_four/anim/1/0.4bpp");
+static const u8 gTilesetAnims_EliteFour0_Frame1[] = INCBIN_U8("data/tilesets/secondary/elite_four/anim/1/1.4bpp");
+static const u8 gTilesetAnims_EliteFour1_Frame0[] = INCBIN_U8("data/tilesets/secondary/elite_four/anim/0/0.4bpp");
+static const u8 gTilesetAnims_EliteFour1_Frame1[] = INCBIN_U8("data/tilesets/secondary/elite_four/anim/0/1.4bpp");
+static const u8 gTilesetAnims_EliteFour1_Frame2[] = INCBIN_U8("data/tilesets/secondary/elite_four/anim/0/2.4bpp");
+static const u8 gTilesetAnims_EliteFour1_Frame3[] = INCBIN_U8("data/tilesets/secondary/elite_four/anim/0/3.4bpp");
asm(".space 32");
-static const u8 *const gTilesetAnimTable_EliteFour_0[] =
+static const u8 *const gTilesetAnims_EliteFour1[] =
{
- TilesetAnimTiles_EliteFour_0_0,
- TilesetAnimTiles_EliteFour_0_1,
- TilesetAnimTiles_EliteFour_0_2,
- TilesetAnimTiles_EliteFour_0_3,
+ gTilesetAnims_EliteFour1_Frame0,
+ gTilesetAnims_EliteFour1_Frame1,
+ gTilesetAnims_EliteFour1_Frame2,
+ gTilesetAnims_EliteFour1_Frame3,
};
-static const u8 *const gTilesetAnimTable_EliteFour_1[] =
+static const u8 *const gTilesetAnims_EliteFour0[] =
{
- TilesetAnimTiles_EliteFour_1_0,
- TilesetAnimTiles_EliteFour_1_1,
+ gTilesetAnims_EliteFour0_Frame0,
+ gTilesetAnims_EliteFour0_Frame1,
};
-static const u8 TilesetAnimTiles_MauvilleGym_0[] = INCBIN_U8("data/tilesets/secondary/mauville_gym/anim/0.4bpp");
-static const u8 TilesetAnimTiles_MauvilleGym_1[] = INCBIN_U8("data/tilesets/secondary/mauville_gym/anim/1.4bpp");
+static const u8 gTilesetAnims_MauvilleGym0_Frame0[] = INCBIN_U8("data/tilesets/secondary/mauville_gym/anim/0.4bpp");
+static const u8 gTilesetAnims_MauvilleGym0_Frame1[] = INCBIN_U8("data/tilesets/secondary/mauville_gym/anim/1.4bpp");
asm(".space 32");
-static const u8 *const gTilesetAnimTable_MauvilleGym[] =
+static const u8 *const gTilesetAnims_MauvilleGym0[] =
{
- TilesetAnimTiles_MauvilleGym_0,
- TilesetAnimTiles_MauvilleGym_1,
+ gTilesetAnims_MauvilleGym0_Frame0,
+ gTilesetAnims_MauvilleGym0_Frame1,
};
-static const u8 TilesetAnimTiles_BikeShop_0[] = INCBIN_U8("data/tilesets/secondary/bike_shop/anim/0.4bpp");
-static const u8 TilesetAnimTiles_BikeShop_1[] = INCBIN_U8("data/tilesets/secondary/bike_shop/anim/1.4bpp");
+static const u8 gTilesetAnims_BikeShop0_Frame0[] = INCBIN_U8("data/tilesets/secondary/bike_shop/anim/0.4bpp");
+static const u8 gTilesetAnims_BikeShop0_Frame1[] = INCBIN_U8("data/tilesets/secondary/bike_shop/anim/1.4bpp");
asm(".space 32");
-static const u8 *const gTilesetAnimTable_BikeShop[] =
+static const u8 *const gTilesetAnims_BikeShop0[] =
{
- TilesetAnimTiles_BikeShop_0,
- TilesetAnimTiles_BikeShop_1,
+ gTilesetAnims_BikeShop0_Frame0,
+ gTilesetAnims_BikeShop0_Frame1,
};
static void ClearTilesetAnimDmas(void)
@@ -518,11 +518,11 @@ static void StartTileset1Animation(void)
gTileset1AnimFrame = 0;
gTileset1AnimLength = 0;
gTileset1AnimCallback = 0;
- if (gMapHeader.mapData->primaryTileset)
+ if (gMapHeader.mapLayout->primaryTileset)
{
- if (gMapHeader.mapData->primaryTileset->callback)
+ if (gMapHeader.mapLayout->primaryTileset->callback)
{
- gMapHeader.mapData->primaryTileset->callback();
+ gMapHeader.mapLayout->primaryTileset->callback();
}
}
}
@@ -532,11 +532,11 @@ static void StartTileset2Animation(void)
gTileset2AnimFrame = 0;
gTileset2AnimLength = 0;
gTileset2AnimCallback = 0;
- if (gMapHeader.mapData->secondaryTileset)
+ if (gMapHeader.mapLayout->secondaryTileset)
{
- if (gMapHeader.mapData->secondaryTileset->callback)
+ if (gMapHeader.mapLayout->secondaryTileset->callback)
{
- gMapHeader.mapData->secondaryTileset->callback();
+ gMapHeader.mapLayout->secondaryTileset->callback();
}
}
}
@@ -578,28 +578,28 @@ static void sub_8073070(u16 a1)
{
int v1;
v1 = a1 % 4;
- QueueTilesetAnimDma(gTilesetAnimTable_General_0[v1], BG_TILE_ADDR(127), 0x80);
+ QueueTilesetAnimDma(gTilesetAnims_General0[v1], BG_TILE_ADDR(127), 0x80);
}
static void sub_8073098(u16 a1)
{
u8 v1;
v1 = a1 % 8;
- QueueTilesetAnimDma(gTilesetAnimTable_General_1[v1], BG_TILE_ADDR(108), 0x3c0);
+ QueueTilesetAnimDma(gTilesetAnims_General1[v1], BG_TILE_ADDR(108), 0x3c0);
}
static void sub_80730C0(u16 a1)
{
int v1;
v1 = a1 % 8;
- QueueTilesetAnimDma(gTilesetAnimTable_General_2[v1], BG_TILE_ADDR(116), 0x140);
+ QueueTilesetAnimDma(gTilesetAnims_General2[v1], BG_TILE_ADDR(116), 0x140);
}
static void sub_80730E8(u16 a1)
{
int v1;
v1 = a1 % 4;
- QueueTilesetAnimDma(gTilesetAnimTable_General_3[v1], BG_TILE_ADDR(124), 0xc0);
+ QueueTilesetAnimDma(gTilesetAnims_General3[v1], BG_TILE_ADDR(124), 0xc0);
}
void TilesetCB_Petalburg(void)
@@ -815,37 +815,37 @@ static void sub_807361C(u16 a1)
{
int v1;
v1 = a1 % 4;
- QueueTilesetAnimDma(gTilesetAnimTable_General_4[v1], BG_TILE_ADDR(120), 0x140);
+ QueueTilesetAnimDma(gTilesetAnims_General4[v1], BG_TILE_ADDR(120), 0x140);
}
static void sub_8073644(u8 a1)
{
u8 v1;
v1 = a1 % 4;
- QueueTilesetAnimDma(gTilesetAnimTable_Lavaridge[v1], BG_TILE_ADDR(200), 0x80);
+ QueueTilesetAnimDma(gTilesetAnims_Lavaridge0[v1], BG_TILE_ADDR(200), 0x80);
v1 = (a1 + 2) % 4;
- QueueTilesetAnimDma(gTilesetAnimTable_Lavaridge[v1], BG_TILE_ADDR(201), 0x80);
+ QueueTilesetAnimDma(gTilesetAnims_Lavaridge0[v1], BG_TILE_ADDR(201), 0x80);
}
static void sub_807368C(u8 a1)
{
int v1;
v1 = a1 % 4;
- QueueTilesetAnimDma(gTilesetAnimTable_Pacifidlog_0[v1], BG_TILE_ADDR(244), 0x3c0);
+ QueueTilesetAnimDma(gTilesetAnims_Pacifidlog0[v1], BG_TILE_ADDR(244), 0x3c0);
}
static void sub_80736B4(u8 a1)
{
int v1;
v1 = a1 % 4;
- QueueTilesetAnimDma(gTilesetAnimTable_Underwater[v1], BG_TILE_ADDR(252), 0x80);
+ QueueTilesetAnimDma(gTilesetAnims_Underwater0[v1], BG_TILE_ADDR(252), 0x80);
}
static void sub_80736DC(u8 a1)
{
int v1;
v1 = a1 % 8;
- QueueTilesetAnimDma(gTilesetAnimTable_Pacifidlog_1[v1], BG_TILE_ADDR(252), 0x100);
+ QueueTilesetAnimDma(gTilesetAnims_Pacifidlog1[v1], BG_TILE_ADDR(252), 0x100);
}
static void sub_8073704(u16 a1, u8 a2)
@@ -855,14 +855,14 @@ static void sub_8073704(u16 a1, u8 a2)
if (a1 < 12)
{
v1 = a1 % 12;
- QueueTilesetAnimDma(gTilesetAnimTable_Mauville_0A[v1], gUnknown_0837BAE4[a2], 0x80);
- QueueTilesetAnimDma(gTilesetAnimTable_Mauville_1A[v1], gUnknown_0837BB04[a2], 0x80);
+ QueueTilesetAnimDma(gTilesetAnims_Mauville0[v1], gTilesetAnims_MauvilleVDests0[a2], 0x80);
+ QueueTilesetAnimDma(gTilesetAnims_Mauville1[v1], gTilesetAnims_MauvilleVDests1[a2], 0x80);
}
else
{
v1 = a1 % 4;
- QueueTilesetAnimDma(gTilesetAnimTable_Mauville_0B[v1], gUnknown_0837BAE4[a2], 0x80);
- QueueTilesetAnimDma(gTilesetAnimTable_Mauville_1B[v1], gUnknown_0837BB04[a2], 0x80);
+ QueueTilesetAnimDma(gTilesetAnims_Mauville2[v1], gTilesetAnims_MauvilleVDests0[a2], 0x80);
+ QueueTilesetAnimDma(gTilesetAnims_Mauville3[v1], gTilesetAnims_MauvilleVDests1[a2], 0x80);
}
}
@@ -872,9 +872,9 @@ static void sub_80737A4(u16 a1, u8 a2)
a1 -= a2;
v1 = a1 % 8;
- if (gTilesetAnimTable_Rustboro_0[v1])
+ if (gTilesetAnims_Rustboro0[v1])
{
- QueueTilesetAnimDma(gTilesetAnimTable_Rustboro_0[v1], gUnknown_0837BFA4[a2], 0x80);
+ QueueTilesetAnimDma(gTilesetAnims_Rustboro0[v1], gTilesetAnims_RustboroVDests0[a2], 0x80);
}
}
@@ -882,14 +882,14 @@ static void sub_80737E0(u16 a1)
{
int v1;
v1 = a1 % 2;
- QueueTilesetAnimDma(gTilesetAnimTable_Rustboro_1[v1], BG_TILE_ADDR(240), 0x80);
+ QueueTilesetAnimDma(gTilesetAnims_Rustboro1[v1], BG_TILE_ADDR(240), 0x80);
}
static void sub_8073808(u16 a1)
{
int v1;
v1 = a1 % 4;
- QueueTilesetAnimDma(gTilesetAnimTable_Cave[v1], BG_TILE_ADDR(168), 0x80);
+ QueueTilesetAnimDma(gTilesetAnims_Lavaridge1_Cave0[v1], BG_TILE_ADDR(168), 0x80);
}
static void sub_8073830(u16 a1, u8 a2)
@@ -897,14 +897,14 @@ static void sub_8073830(u16 a1, u8 a2)
int v1;
a1 -= a2;
v1 = a1 % 8;
- QueueTilesetAnimDma(gTilesetAnimTable_EverGrande[v1], gUnknown_0837C93C[a2], 0x80);
+ QueueTilesetAnimDma(gTilesetAnims_EverGrande0[v1], gTilesetAnims_EverGrandeVDests0[a2], 0x80);
}
static void sub_8073868(u16 a1)
{
int v1;
v1 = a1 % 4;
- QueueTilesetAnimDma(gTilesetAnimTable_Cave[v1], BG_TILE_ADDR(232), 0x80);
+ QueueTilesetAnimDma(gTilesetAnims_Lavaridge1_Cave0[v1], BG_TILE_ADDR(232), 0x80);
}
static void sub_8073890(u16 a1)
@@ -951,41 +951,41 @@ static void sub_8073904(u16 a1)
{
int v1;
v1 = a1 % 2;
- QueueTilesetAnimDma(gTilesetAnimTable_Building[v1], BG_TILE_ADDR(124), 0x80);
+ QueueTilesetAnimDma(gTilesetAnims_InsideBuilding0[v1], BG_TILE_ADDR(124), 0x80);
}
static void sub_807392C(u16 a1)
{
int v1;
v1 = a1 % 3;
- QueueTilesetAnimDma(gTilesetAnimTable_SootopolisGym_0[v1], BG_TILE_ADDR(252), 0x180);
- QueueTilesetAnimDma(gTilesetAnimTable_SootopolisGym_1[v1], BG_TILE_ADDR(244), 0x280);
+ QueueTilesetAnimDma(gTilesetAnims_SootopolisGym0[v1], BG_TILE_ADDR(252), 0x180);
+ QueueTilesetAnimDma(gTilesetAnims_SootopolisGym1[v1], BG_TILE_ADDR(244), 0x280);
}
static void sub_8073974(u16 a1)
{
int v1;
v1 = a1 % 4;
- QueueTilesetAnimDma(gTilesetAnimTable_EliteFour_0[v1], BG_TILE_ADDR(254), 0x20);
+ QueueTilesetAnimDma(gTilesetAnims_EliteFour1[v1], BG_TILE_ADDR(254), 0x20);
}
static void sub_807399C(u16 a1)
{
int v1;
v1 = a1 % 2;
- QueueTilesetAnimDma(gTilesetAnimTable_EliteFour_1[v1], BG_TILE_ADDR(248), 0x80);
+ QueueTilesetAnimDma(gTilesetAnims_EliteFour0[v1], BG_TILE_ADDR(248), 0x80);
}
static void sub_80739C4(u16 a1)
{
int v1;
v1 = a1 % 2;
- QueueTilesetAnimDma(gTilesetAnimTable_MauvilleGym[v1], BG_TILE_ADDR(164), 0x200);
+ QueueTilesetAnimDma(gTilesetAnims_MauvilleGym0[v1], BG_TILE_ADDR(164), 0x200);
}
static void sub_80739EC(u16 a1)
{
int v1;
v1 = a1 % 2;
- QueueTilesetAnimDma(gTilesetAnimTable_BikeShop[v1], BG_TILE_ADDR(252), 0x120);
+ QueueTilesetAnimDma(gTilesetAnims_BikeShop0[v1], BG_TILE_ADDR(252), 0x120);
}
diff --git a/src/time_events.c b/src/time_events.c
index 4bd732788..d3acdaf2f 100644
--- a/src/time_events.c
+++ b/src/time_events.c
@@ -81,7 +81,7 @@ void UpdateShoalTideFlag(void)
1,
};
- if (is_map_type_1_2_3_5_or_6(get_map_type_from_warp0()))
+ if (is_map_type_1_2_3_5_or_6(GetLastUsedWarpMapType()))
{
RtcCalcLocalTime();
if (tide[gLocalTime.hours])
diff --git a/src/title_screen.c b/src/title_screen.c
index a1c8e081d..df737fd06 100644
--- a/src/title_screen.c
+++ b/src/title_screen.c
@@ -437,7 +437,7 @@ static void CreatePressStartBanner(s16 x, s16 y)
}
}
#elif GERMAN
-__attribute__((naked))
+NAKED
static void CreatePressStartBanner(s16 x, s16 y)
{
asm(".syntax unified\n\
@@ -673,7 +673,7 @@ void CB2_InitTitleScreen(void)
break;
}
case 3:
- BeginNormalPaletteFade(-1, 1, 0x10, 0, 0xFFFF);
+ BeginNormalPaletteFade(0xFFFFFFFF, 1, 16, 0, FADE_COLOR_WHITE);
SetVBlankCallback(VBlankCB);
gMain.state = 4;
break;
@@ -819,7 +819,7 @@ static void Task_TitleScreenPhase3(u8 taskId)
if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & START_BUTTON))
{
FadeOutBGM(4);
- BeginNormalPaletteFade(-1, 0, 0, 0x10, 0xFFFF);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, FADE_COLOR_WHITE);
SetMainCallback2(CB2_GoToMainMenu);
}
else
@@ -830,13 +830,13 @@ static void Task_TitleScreenPhase3(u8 taskId)
&& CanResetRTC() == 1)
{
FadeOutBGM(4);
- BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
SetMainCallback2(CB2_GoToResetRtcScreen);
}
#if DEBUG
else if (gMain.heldKeys == SELECT_BUTTON)
{
- BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
SetMainCallback2(CB2_GoToTestMenu);
}
#endif
@@ -853,7 +853,7 @@ static void Task_TitleScreenPhase3(u8 taskId)
UpdateLegendaryMarkingColor(gTasks[taskId].tCounter);
if ((gMPlay_BGM.status & 0xFFFF) == 0)
{
- BeginNormalPaletteFade(-1, 0, 0, 0x10, 0xFFFF);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, FADE_COLOR_WHITE);
SetMainCallback2(CB2_GoToCopyrightScreen);
}
}
diff --git a/src/trade.c b/src/trade.c
index 36e6fc757..50de29b7f 100644
--- a/src/trade.c
+++ b/src/trade.c
@@ -207,7 +207,7 @@ static void sub_804E1DC(void);
static void sub_804BBCC(void);
static void sub_804D8E4(void);
static void sub_804C164(void);
-static void sub_804C1A8(void);
+static void SetTradeSceneStrings(void);
#ifdef NONMATCHING
static
#endif
@@ -1089,7 +1089,7 @@ static void sub_8047EC0(void)
ResetTasks();
sub_804A964(&gUnknown_03004824->unk_00c8, BG_SCREEN_ADDR(5));
SetVBlankCallback(sub_80489F4);
- InitMenuWindow(&gWindowTemplate_81E6CE4);
+ InitMenuWindow(&gMenuTextWindowTemplate);
Text_LoadWindowTemplate(&gWindowTemplate_81E6F84);
Text_InitWindowWithTemplate(&gUnknown_03004824->window, &gWindowTemplate_81E6F84);
gUnknown_03004824->unk_007a = TextWindow_SetBaseTileNum(20);
@@ -1208,7 +1208,7 @@ static void sub_8047EC0(void)
sub_8048C70();
gMain.state ++;
nullsub_5(7, 0);
- PlayBGM(BGM_P_SCHOOL);
+ PlayBGM(MUS_P_SCHOOL);
break;
case 14:
sub_804ACF4(1);
@@ -1224,7 +1224,7 @@ static void sub_8047EC0(void)
gMain.state ++;
break;
case 17:
- BeginNormalPaletteFade(-1, 0, 16, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
gMain.state ++;
break;
case 18:
@@ -1269,7 +1269,7 @@ static void sub_80484F4(void)
ResetTasks();
sub_804A964(&gUnknown_03004824->unk_00c8, BG_SCREEN_ADDR(5));
SetVBlankCallback(sub_80489F4);
- InitMenuWindow(&gWindowTemplate_81E6CE4);
+ InitMenuWindow(&gMenuTextWindowTemplate);
Text_LoadWindowTemplate(&gWindowTemplate_81E6F84);
Text_InitWindowWithTemplate(&gUnknown_03004824->window, &gWindowTemplate_81E6F84);
gUnknown_03004824->unk_007a = TextWindow_SetBaseTileNum(20);
@@ -1369,7 +1369,7 @@ static void sub_80484F4(void)
gMain.state ++;
break;
case 17:
- BeginNormalPaletteFade(-1, 0, 16, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
gMain.state ++;
break;
case 18:
@@ -1409,7 +1409,7 @@ static void sub_80489F4(void)
{
if (++gUnknown_03004824->unk_00b4 >= 16)
{
- BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gUnknown_03004824->unk_007b = 10;
}
}
@@ -1492,7 +1492,7 @@ static void sub_8048B0C(u8 a0)
#pragma pop_macro("BLOCKSIZE")
#else
asm(".include \"constants/gba_constants.inc\"");
-__attribute__((naked))
+NAKED
static void sub_8048B0C(u8 a0)
{
asm_unified("\tpush {r4-r7,lr}\n"
@@ -1797,7 +1797,7 @@ static bool8 sub_8048D44(void)
}
break;
case 13:
- Trade_Memcpy(gBlockSendBuffer, gSaveBlock1.giftRibbons, 11);
+ Trade_Memcpy(gBlockSendBuffer, gSaveBlock1.externalReservedData.giftRibbons, 11);
gUnknown_03004824->unk_0075 ++;
break;
case 14:
@@ -1889,7 +1889,7 @@ static void sub_80491E4(u8 mpId, u8 status)
switch (gBlockRecvBuffer[0][0])
{
case 0xeebb:
- BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
sub_804AA0C(4);
gUnknown_03004824->unk_007b = 11;
break;
@@ -1904,7 +1904,7 @@ static void sub_80491E4(u8 mpId, u8 status)
gUnknown_03004824->unk_007b = 7;
break;
case 0xccdd:
- BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gUnknown_03004824->unk_007b = 10;
break;
case 0xddee:
@@ -1957,7 +1957,7 @@ static void sub_80492D8(void)
gUnknown_03004824->linkData[0] = 0xeebb;
gUnknown_03004824->linkData[1] = 0;
sub_804AADC(5, 0);
- BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gUnknown_03004824->unk_0084 = gUnknown_03004824->unk_0085 = 0;
gUnknown_03004824->unk_007b = 11;
}
@@ -2086,7 +2086,7 @@ static void sub_8049680(void)
}
else if (gUnknown_03004824->tradeMenuCursorPosition < 2 * PARTY_SIZE)
{
- BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gUnknown_03004824->unk_007b = 2;
}
else if (gUnknown_03004824->tradeMenuCursorPosition == 2 * PARTY_SIZE)
@@ -2133,7 +2133,7 @@ static void sub_8049860(void)
PlaySE(SE_SELECT);
if (Menu_GetCursorPos() == 0)
{
- BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gUnknown_03004824->unk_007b = 2;
}
else if (sub_80499F0(gUnknown_03004824->unk_0051[0], gUnknown_03004824->partyCounts[0], gUnknown_03004824->tradeMenuCursorPosition) == 0)
@@ -2488,7 +2488,7 @@ static void sub_8049ED4(u8 a0)
}
}
#else
-__attribute__((naked))
+NAKED
static void sub_8049ED4(u8 a0)
{
asm_unified("\tpush {r4-r7,lr}\n"
@@ -3055,7 +3055,7 @@ static void sub_804A41C(u8 whichParty)
}
}
#else
-__attribute__((naked))
+NAKED
static void sub_804A41C(u8 whichParty)
{
asm_unified("\tpush {r4-r7,lr}\n"
@@ -3250,7 +3250,7 @@ static void sub_804A6DC(u8 whichParty)
}
}
#else
-__attribute__((naked))
+NAKED
static void sub_804A6DC(u8 whichParty)
{
asm_unified("\tpush {r4-r7,lr}\n"
@@ -3561,7 +3561,7 @@ static void sub_804ACF4(u8 who)
}
}
#else
-static __attribute__((naked)) void sub_804ACF4(u8 who)
+static NAKED void sub_804ACF4(u8 who)
{
asm_unified("\tpush {r4-r7,lr}\n"
"\tmov r7, r9\n"
@@ -3777,8 +3777,8 @@ static void sub_804AF84(void)
{
int i;
for (i = 0; i < 11; i ++)
- if (gSaveBlock1.giftRibbons[i] == 0 && gUnknown_03004824->unk_00b5[i] != 0)
- gSaveBlock1.giftRibbons[i] = gUnknown_03004824->unk_00b5[i];
+ if (gSaveBlock1.externalReservedData.giftRibbons[i] == 0 && gUnknown_03004824->unk_00b5[i] != 0)
+ gSaveBlock1.externalReservedData.giftRibbons[i] = gUnknown_03004824->unk_00b5[i];
}
static void sub_804AFB8(const struct WindowTemplate *windowConfig, u8 *dest, const u8 *src, u8 size)
@@ -3869,7 +3869,7 @@ static void sub_804B1BC(void)
}
}
#else
-__attribute__((naked)) static void sub_804B1BC(void)
+NAKED static void sub_804B1BC(void)
{
asm_unified("\tpush {lr}\n"
"\tldr r1, _0804B1FC @ =REG_BG1VOFS\n"
@@ -4018,10 +4018,10 @@ static void sub_804B41C(void)
Menu_EraseScreen();
gLinkType = 0x1144;
gMain.state ++;
- LZDecompressVram(gUnknown_08D00000, (void *)VRAM);
- CpuCopy16(gUnknown_08D00524, ewram, 0x1000);
+ LZDecompressVram(gBattleTextboxTiles, (void *)VRAM);
+ CpuCopy16(gBattleTextboxTilemap, ewram, 0x1000);
DmaCopy16Defvars(3, ewram, BG_SCREEN_ADDR(5), 0x500);
- LoadCompressedPalette(gUnknown_08D004E0, 0, 32);
+ LoadCompressedPalette(gBattleTextboxPalette, 0, 32);
gUnknown_03004828->unk_00b6 = 0;
gUnknown_03004828->unk_00c4 = 0;
gUnknown_03004828->isLinkTrade = TRUE;
@@ -4096,8 +4096,8 @@ static void sub_804B41C(void)
case 11:
sub_804BBE8(5);
sub_804BBE8(0);
- sub_804C1A8();
- BeginNormalPaletteFade(-1, 0, 16, 0, 0);
+ SetTradeSceneStrings();
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
gMain.state ++;
break;
case 12:
@@ -4113,7 +4113,7 @@ static void sub_804B41C(void)
UpdatePaletteFade();
}
#else
-static __attribute__((naked)) void sub_804B41C(void)
+static NAKED void sub_804B41C(void)
{
asm_unified("\tpush {r4-r6,lr}\n"
"\tsub sp, 0x4\n"
@@ -4191,11 +4191,11 @@ static __attribute__((naked)) void sub_804B41C(void)
"\tldrb r0, [r1]\n"
"\tadds r0, 0x1\n"
"\tstrb r0, [r1]\n"
- "\tldr r0, _0804B590 @ =gUnknown_08D00000\n"
+ "\tldr r0, _0804B590 @ =gBattleTextboxTiles\n"
"\tmovs r1, 0xC0\n"
"\tlsls r1, 19\n"
"\tbl LZDecompressVram\n"
- "\tldr r0, _0804B594 @ =gUnknown_08D00524\n"
+ "\tldr r0, _0804B594 @ =gBattleTextboxTilemap\n"
"\tldr r1, _0804B598 @ =0xfffe1000\n"
"\tadds r5, r1\n"
"\tmovs r2, 0x80\n"
@@ -4209,7 +4209,7 @@ static __attribute__((naked)) void sub_804B41C(void)
"\tldr r1, _0804B5A4 @ =0x80000280\n"
"\tstr r1, [r0, 0x8]\n"
"\tldr r0, [r0, 0x8]\n"
- "\tldr r0, _0804B5A8 @ =gUnknown_08D004E0\n"
+ "\tldr r0, _0804B5A8 @ =gBattleTextboxPalette\n"
"\tmovs r1, 0\n"
"\tmovs r2, 0x20\n"
"\tbl LoadCompressedPalette\n"
@@ -4267,13 +4267,13 @@ static __attribute__((naked)) void sub_804B41C(void)
"_0804B584: .4byte 0x00001144\n"
"_0804B588: .4byte gMain\n"
"_0804B58C: .4byte 0x0000043c\n"
- "_0804B590: .4byte gUnknown_08D00000\n"
- "_0804B594: .4byte gUnknown_08D00524\n"
+ "_0804B590: .4byte gBattleTextboxTiles\n"
+ "_0804B594: .4byte gBattleTextboxTilemap\n"
"_0804B598: .4byte 0xfffe1000\n"
"_0804B59C: .4byte 0x06002800\n"
"_0804B5A0: .4byte 0x040000d4\n"
"_0804B5A4: .4byte 0x80000280\n"
- "_0804B5A8: .4byte gUnknown_08D004E0\n"
+ "_0804B5A8: .4byte gBattleTextboxPalette\n"
"_0804B5AC_case01:\n"
"\tbl OpenLink\n"
"\tldr r1, _0804B5C8 @ =gMain\n"
@@ -4451,7 +4451,7 @@ static __attribute__((naked)) void sub_804B41C(void)
"\tbl sub_804BBE8\n"
"\tmovs r0, 0\n"
"\tbl sub_804BBE8\n"
- "\tbl sub_804C1A8\n"
+ "\tbl SetTradeSceneStrings\n"
"\tmovs r0, 0x1\n"
"\tnegs r0, r0\n"
"\tmovs r1, 0\n"
@@ -4563,8 +4563,8 @@ void sub_804B790(void)
case 11:
sub_804BBE8(5);
sub_804BBE8(0);
- sub_804C1A8();
- BeginNormalPaletteFade(-1, 0, 16, 0, 0);
+ SetTradeSceneStrings();
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
gMain.state ++;
break;
case 12:
@@ -4709,9 +4709,9 @@ static void sub_804BBE8(u8 a0)
gUnknown_03004828->bg1vofs = 0;
gUnknown_03004828->bg1hofs = 0;
REG_BG1CNT = BGCNT_PRIORITY(2) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(5);
- LZDecompressVram(gUnknown_08D00000, BG_CHAR_ADDR(0));
- CpuCopy16(gUnknown_08D00524, buffer = (u16 *)gSharedMem, 0x1000);
- LoadCompressedPalette(gUnknown_08D004E0, 0x70, 0x20);
+ LZDecompressVram(gBattleTextboxTiles, BG_CHAR_ADDR(0));
+ CpuCopy16(gBattleTextboxTilemap, buffer = (u16 *)gSharedMem, 0x1000);
+ LoadCompressedPalette(gBattleTextboxPalette, 0x70, 0x20);
FillPalette(0, 0, 2);
for (i = 0; i < 0x280; i ++)
buffer[i] |= 0x7000;
@@ -4772,8 +4772,12 @@ static void sub_804C164(void)
LoadSpritePalette(&gUnknown_082159B4);
}
-static void sub_804C1A8(void)
+static void SetTradeSceneStrings(void)
{
+ /*Sets the variable strings printed on the
+ *actual trading screen. For use in strings
+ *like "[Pokemon] will be sent to [Trainer]."
+ */
u8 mpId;
u8 string[20];
const struct InGameTrade *ingameTrade;
@@ -4808,7 +4812,7 @@ static bool8 sub_804C29C(void)
gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].pos2.y = gMonFrontPicCoords[gUnknown_03004828->tradeSpecies[0]].y_offset;
gUnknown_03004828->unk_00c4 ++;
gUnknown_03004828->unk_0124 = GetCurrentMapMusic();
- PlayBGM(BGM_SHINKA);
+ PlayBGM(MUS_SHINKA);
break;
case 1:
if (gUnknown_03004828->bg2hofs > 0)
@@ -4853,7 +4857,7 @@ static bool8 sub_804C29C(void)
// The game waits here for the sprite to finish its animation sequence.
break;
case 14:
- BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gUnknown_03004828->unk_00c4 = 20;
break;
@@ -4865,7 +4869,7 @@ static bool8 sub_804C29C(void)
}
break;
case 21:
- BeginNormalPaletteFade(-1, -1, 16, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, -1, 16, 0, RGB(0, 0, 0));
gUnknown_03004828->unk_00c4 ++;
break;
case 22:
@@ -4940,7 +4944,7 @@ static bool8 sub_804C29C(void)
}
break;
case 29:
- BeginNormalPaletteFade(-1, -1, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, -1, 0, 16, RGB(0, 0, 0));
gUnknown_03004828->unk_00c4 = 30;
break;
case 30:
@@ -4953,7 +4957,7 @@ static bool8 sub_804C29C(void)
}
break;
case 31:
- BeginNormalPaletteFade(-1, -1, 16, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, -1, 16, 0, RGB(0, 0, 0));
gUnknown_03004828->unk_00ba = CreateSprite(&gSpriteTemplate_82159FC, 0x6f, 0xaa, 0);
gUnknown_03004828->unk_00bb = CreateSprite(&gSpriteTemplate_82159FC, 0x81, -0xa, 0);
gUnknown_03004828->unk_00c4 ++;
@@ -4978,15 +4982,15 @@ static bool8 sub_804C29C(void)
}
break;
case 34:
- BlendPalettes(1, 16, 0xffff);
+ BlendPalettes(0x1, 16, FADE_COLOR_WHITE);
gUnknown_03004828->unk_00c4 ++;
break;
case 35:
- BlendPalettes(1, 0, 0xffff);
+ BlendPalettes(0x1, 0, FADE_COLOR_WHITE);
gUnknown_03004828->unk_00c4 ++;
break;
case 36:
- BlendPalettes(1, 16, 0xffff);
+ BlendPalettes(0x1, 16, FADE_COLOR_WHITE);
gUnknown_03004828->unk_00c4 ++;
break;
case 37:
@@ -5024,7 +5028,7 @@ static bool8 sub_804C29C(void)
gUnknown_03004828->unk_00c4 ++;
gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].invisible = TRUE;
gSprites[gUnknown_03004828->pokePicSpriteIdxs[1]].invisible = TRUE;
- BlendPalettes(1, 0, 0xffff);
+ BlendPalettes(0x1, 0, FADE_COLOR_WHITE);
}
break;
case 39:
@@ -5032,7 +5036,7 @@ static bool8 sub_804C29C(void)
gSprites[gUnknown_03004828->unk_00bb].pos2.y += 3;
if (gSprites[gUnknown_03004828->unk_00ba].pos2.y <= -0xde)
{
- BeginNormalPaletteFade(-1, -1, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, -1, 0, 16, RGB(0, 0, 0));
gUnknown_03004828->unk_00c4 ++;
DestroySprite(&gSprites[gUnknown_03004828->unk_00ba]);
DestroySprite(&gSprites[gUnknown_03004828->unk_00bb]);
@@ -5050,7 +5054,7 @@ static bool8 sub_804C29C(void)
}
break;
case 41:
- BeginNormalPaletteFade(-1, -1, 16, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, -1, 16, 0, RGB(0, 0, 0));
gUnknown_03004828->unk_00c4 ++;
break;
case 42:
@@ -5127,7 +5131,7 @@ static bool8 sub_804C29C(void)
gUnknown_03004828->unk_0118 = 0x8000 / gUnknown_03004828->unk_011a;
break;
case 52:
- BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gUnknown_03004828->unk_00c4 = 60;
break;
@@ -5140,7 +5144,7 @@ static bool8 sub_804C29C(void)
}
break;
case 61:
- BeginNormalPaletteFade(-1, 0, 16, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
gUnknown_03004828->unk_00c4 ++;
break;
case 62:
@@ -5156,12 +5160,12 @@ static bool8 sub_804C29C(void)
gSprites[gUnknown_03004828->unk_0103].callback = sub_804D80C;
StartSpriteAnim(&gSprites[gUnknown_03004828->unk_0103], 1);
StartSpriteAffineAnim(&gSprites[gUnknown_03004828->unk_0103], 2);
- BlendPalettes(1 << (16 + gSprites[gUnknown_03004828->unk_0103].oam.paletteNum), 16, 0xffff);
+ BlendPalettes(1 << (16 + gSprites[gUnknown_03004828->unk_0103].oam.paletteNum), 16, FADE_COLOR_WHITE);
gUnknown_03004828->unk_00c4 ++;
gUnknown_03004828->unk_00c0 = 0;
break;
case 64:
- BeginNormalPaletteFade(1 << (16 + gSprites[gUnknown_03004828->unk_0103].oam.paletteNum), 1, 16, 0, 0xffff);
+ BeginNormalPaletteFade(1 << (16 + gSprites[gUnknown_03004828->unk_0103].oam.paletteNum), 1, 16, 0, FADE_COLOR_WHITE);
gUnknown_03004828->unk_00c4 ++;
break;
case 65:
@@ -5191,7 +5195,7 @@ static bool8 sub_804C29C(void)
case 68:
if (++ gUnknown_03004828->unk_00c0 == 4)
{
- PlayFanfare(BGM_FANFA5);
+ PlayFanfare(MUS_FANFA5);
}
if (gUnknown_03004828->unk_00c0 == 0xf0)
{
@@ -5231,7 +5235,7 @@ static bool8 sub_804C29C(void)
gUnknown_03004828->unk_00c4 ++;
break;
case 73:
- BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gUnknown_03004828->unk_00c4 ++;
break;
case 74:
@@ -5330,7 +5334,7 @@ static void sub_804D738(struct Sprite *sprite)
PlaySE(SE_W025);
sprite->callback = sub_804D7AC;
sprite->data[0] = 0;
- BeginNormalPaletteFade(1 << (16 + sprite->oam.paletteNum), -1, 0, 16, -1);
+ BeginNormalPaletteFade(1 << (16 + sprite->oam.paletteNum), -1, 0, 16, FADE_COLOR_WHITE);
}
}
@@ -5609,7 +5613,7 @@ static void sub_804DC88(void)
case 6:
if (IsLinkTaskFinished())
{
- BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gMain.state ++;
}
break;
@@ -5657,7 +5661,7 @@ void DoInGameTradeScene(void)
{
ScriptContext2_Enable();
CreateTask(sub_804E1A0, 10);
- BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
}
static void sub_804E1A0(u8 taskId)
@@ -5684,9 +5688,9 @@ static void sub_804E1DC(void)
void sub_804E22C(void)
{
- LZDecompressVram(gUnknown_08D00000, (void *)VRAM);
- CpuCopy16(gUnknown_08D00524, gSharedMem, 0x1000);
+ LZDecompressVram(gBattleTextboxTiles, (void *)VRAM);
+ CpuCopy16(gBattleTextboxTilemap, gSharedMem, 0x1000);
DmaCopy16Defvars(3, gSharedMem, BG_SCREEN_ADDR(5), 0x500);
- LoadCompressedPalette(gUnknown_08D004E0, 0, 32);
+ LoadCompressedPalette(gBattleTextboxPalette, 0, 32);
REG_BG1CNT = BGCNT_PRIORITY(2) | BGCNT_SCREENBASE(5);
}
diff --git a/src/trader.c b/src/trader.c
index 885557d5a..f8606d499 100644
--- a/src/trader.c
+++ b/src/trader.c
@@ -188,7 +188,7 @@ void ScrSpecial_DoesPlayerHaveNoDecorations(void)
for (i = 0; i < 8; i++)
{
- if (sub_8134194(i))
+ if (GetNumDecorationsInInventoryCategory(i))
{
gSpecialVar_Result = FALSE;
return;
@@ -201,7 +201,7 @@ void ScrSpecial_IsDecorationFull(void)
{
gSpecialVar_Result = FALSE;
if (gDecorations[gSpecialVar_0x8004].category != gDecorations[gSpecialVar_0x8006].category
- && sub_8133F9C(gDecorations[gSpecialVar_0x8004].category) == -1)
+ && FindFreeDecorationInventorySlot(gDecorations[gSpecialVar_0x8004].category) == -1)
{
sub_80FE7D4(gStringVar2, gDecorations[gSpecialVar_0x8004].category);
gSpecialVar_Result = TRUE;
@@ -248,8 +248,8 @@ void ScrSpecial_TraderDoDecorationTrade(void)
{
struct MauvilleManTrader *trader = &gSaveBlock1.mauvilleMan.trader;
- sub_81340A8(gSpecialVar_0x8006);
- IsThereStorageSpaceForDecoration(gSpecialVar_0x8004);
+ RemoveDecorationFromInventory(gSpecialVar_0x8006);
+ GiveDecoration(gSpecialVar_0x8004);
StringCopy(trader->unk5[gSpecialVar_0x8005], gSaveBlock2.playerName);
trader->unk1[gSpecialVar_0x8005] = gSpecialVar_0x8006;
sub_810993C();
diff --git a/src/trainer_card.c b/src/trainer_card.c
index 8d16aa9bf..541a4a061 100644
--- a/src/trainer_card.c
+++ b/src/trainer_card.c
@@ -49,7 +49,7 @@ struct Struct2000000
/*0x9C*/ u8 language; // 0x9C
};
-extern struct LinkPlayerMapObject gLinkPlayerMapObjects[];
+extern struct LinkPlayerEventObject gLinkPlayerEventObjects[];
EWRAM_DATA struct TrainerCard gTrainerCards[4] = {0};
@@ -225,7 +225,7 @@ void TrainerCard_ShowLinkCard(u8 playerIndex, Callback arg2)
#endif
TrainerCard_InitScreenForLinkPlayer(playerIndex, arg2);
SetMainCallback2(sub_8093174);
- ewram0_2.language = gLinkPlayers[gLinkPlayerMapObjects[playerIndex].linkPlayerId].language;
+ ewram0_2.language = gLinkPlayers[gLinkPlayerEventObjects[playerIndex].linkPlayerId].language;
}
#if DEBUG
@@ -673,7 +673,7 @@ bool8 TrainerCard_Init(struct Task *task)
ewram0_2.showColon = gSaveBlock2.playTimeSeconds & 1;
ewram0_2.frameCounter = gSaveBlock2.playTimeVBlanks;
TrainerCard_CreatePrintPlayTimeTask();
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
ewram0_2.current_state++; /* Advance state machine */
return FALSE;
}
@@ -740,7 +740,7 @@ bool8 TrainerCard_WaitForFlipToFinish(struct Task *task)
bool8 TrainerCard_FadeOut(struct Task *task)
{
TrainerCard_DestoryPlayTimeTask();
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
ewram0_2.current_state++; /* Advance state machine */
return FALSE;
}
@@ -864,7 +864,7 @@ bool8 TrainerCard_ScaleDownFlipAnimation(struct Task *task)
}
*/
-__attribute__((naked))
+NAKED
bool8 TrainerCard_ScaleDownFlipAnimation(struct Task *task)
{
asm(".syntax unified\n\
@@ -1028,7 +1028,7 @@ bool8 TrainerCard_SwitchToNewSide(struct Task *task)
return TRUE;
}
-__attribute__((naked))
+NAKED
bool8 TrainerCard_ScaleUpFlipAnimation(struct Task *task)
{
asm(".syntax unified\n\
@@ -1452,7 +1452,7 @@ static void TrainerCard_Front_GetPlayTimeString(u8 *arg1, s16 colon)
playTimeMinutes = ewram0_2.displayedCard.playTimeMinutes;
}
FormatPlayTime(buffer, playTimeHours, playTimeMinutes, colon);
- sub_8072C74(arg1, buffer, 48, 1);
+ AlignStringInMenuWindow(arg1, buffer, 48, 1);
}
static void TrainerCard_PrintEasyChatPhrase(void)
@@ -1548,10 +1548,10 @@ static void TrainerCard_Back_PrintBattleTower(void)
if (ewram0_2.showBattleTowerStatus != 0)
{
- sub_8072C44(buffer, ewram0_2.displayedCard.battleTowerWins, 24, 1);
+ AlignInt2InMenuWindow(buffer, ewram0_2.displayedCard.battleTowerWins, 24, 1);
Menu_PrintTextPixelCoords(buffer, 112, 120, 0);
- sub_8072C44(buffer, ewram0_2.displayedCard.battleTowerLosses, 24, 1);
+ AlignInt2InMenuWindow(buffer, ewram0_2.displayedCard.battleTowerLosses, 24, 1);
Menu_PrintTextPixelCoords(buffer, 149, 120, 0);
}
}
diff --git a/src/trainer_see.c b/src/trainer_see.c
index 2913a0a5a..dfbab1e3a 100644
--- a/src/trainer_see.c
+++ b/src/trainer_see.c
@@ -8,25 +8,26 @@
#include "sprite.h"
#include "task.h"
#include "util.h"
+#include "constants/field_effects.h"
static bool8 CheckTrainer(u8);
static void sub_8084894(struct Sprite *sprite, u16 a2, u8 a3);
static void objc_exclamation_mark_probably(struct Sprite *sprite);
-static bool8 TrainerCanApproachPlayer(struct MapObject *);
-static void sub_80842C8(struct MapObject *, u8);
-static bool8 CheckPathBetweenTrainerAndPlayer(struct MapObject *trainerObj, u8 approachDistance, u8 direction);
+static bool8 TrainerCanApproachPlayer(struct EventObject *);
+static void sub_80842C8(struct EventObject *, u8);
+static bool8 CheckPathBetweenTrainerAndPlayer(struct EventObject *trainerObj, u8 approachDistance, u8 direction);
static void RunTrainerSeeFuncList(u8 taskId);
const u8 gSpriteImage_839B308[] = INCBIN_U8("graphics/unknown_sprites/839B4E0/0.4bpp");
const u8 gSpriteImage_839B388[] = INCBIN_U8("graphics/unknown_sprites/839B4E0/1.4bpp");
const u8 gSpriteImage_839B408[] = INCBIN_U8("graphics/unknown_sprites/839B408.4bpp");
-static u8 GetTrainerApproachDistanceSouth(struct MapObject *trainerObj, s16 range, s16 x, s16 y);
-static u8 GetTrainerApproachDistanceNorth(struct MapObject *trainerObj, s16 range, s16 x, s16 y);
-static u8 GetTrainerApproachDistanceWest(struct MapObject *trainerObj, s16 range, s16 x, s16 y);
-static u8 GetTrainerApproachDistanceEast(struct MapObject *trainerObj, s16 range, s16 x, s16 y);
+static u8 GetTrainerApproachDistanceSouth(struct EventObject *trainerObj, s16 range, s16 x, s16 y);
+static u8 GetTrainerApproachDistanceNorth(struct EventObject *trainerObj, s16 range, s16 x, s16 y);
+static u8 GetTrainerApproachDistanceWest(struct EventObject *trainerObj, s16 range, s16 x, s16 y);
+static u8 GetTrainerApproachDistanceEast(struct EventObject *trainerObj, s16 range, s16 x, s16 y);
-static u8 (*const sDirectionalApproachDistanceFuncs[])(struct MapObject *, s16, s16, s16) =
+static u8 (*const sDirectionalApproachDistanceFuncs[])(struct EventObject *, s16, s16, s16) =
{
GetTrainerApproachDistanceSouth,
GetTrainerApproachDistanceNorth,
@@ -36,21 +37,21 @@ static u8 (*const sDirectionalApproachDistanceFuncs[])(struct MapObject *, s16,
bool8 CheckTrainers(void)
{
- u8 mapObjId;
+ u8 eventObjId;
- for (mapObjId = 0; mapObjId < 16; mapObjId++)
+ for (eventObjId = 0; eventObjId < 16; eventObjId++)
{
- if (gMapObjects[mapObjId].active
- && (gMapObjects[mapObjId].trainerType == 1 || gMapObjects[mapObjId].trainerType == 3)
- && CheckTrainer(mapObjId))
+ if (gEventObjects[eventObjId].active
+ && (gEventObjects[eventObjId].trainerType == 1 || gEventObjects[eventObjId].trainerType == 3)
+ && CheckTrainer(eventObjId))
return TRUE;
}
return FALSE;
}
-static bool8 CheckTrainer(u8 mapObjId)
+static bool8 CheckTrainer(u8 eventObjId)
{
- u8 *scriptPtr = GetFieldObjectScriptPointerByFieldObjectId(mapObjId);
+ u8 *scriptPtr = GetEventObjectScriptPointerByEventObjectId(eventObjId);
if (GetTrainerFlagFromScriptPointer(scriptPtr))
{
@@ -58,12 +59,12 @@ static bool8 CheckTrainer(u8 mapObjId)
}
else
{
- struct MapObject *trainerObj = &gMapObjects[mapObjId];
+ struct EventObject *trainerObj = &gEventObjects[eventObjId];
bool8 canApproach = TrainerCanApproachPlayer(trainerObj);
if (canApproach)
{
- TrainerWantsBattle(mapObjId, scriptPtr);
+ TrainerWantsBattle(eventObjId, scriptPtr);
sub_80842C8(trainerObj, (canApproach - 1));
return TRUE;
}
@@ -74,7 +75,7 @@ static bool8 CheckTrainer(u8 mapObjId)
}
}
-static bool8 TrainerCanApproachPlayer(struct MapObject *trainerObj)
+static bool8 TrainerCanApproachPlayer(struct EventObject *trainerObj)
{
s16 x, y;
u8 i;
@@ -83,8 +84,8 @@ static bool8 TrainerCanApproachPlayer(struct MapObject *trainerObj)
PlayerGetDestCoords(&x, &y);
if (trainerObj->trainerType == 1) // can only see in one direction
{
- approachDistance = sDirectionalApproachDistanceFuncs[trainerObj->mapobj_unk_18 - 1](trainerObj, trainerObj->trainerRange_berryTreeId, x, y);
- return CheckPathBetweenTrainerAndPlayer(trainerObj, approachDistance, trainerObj->mapobj_unk_18);
+ approachDistance = sDirectionalApproachDistanceFuncs[trainerObj->facingDirection - 1](trainerObj, trainerObj->trainerRange_berryTreeId, x, y);
+ return CheckPathBetweenTrainerAndPlayer(trainerObj, approachDistance, trainerObj->facingDirection);
}
else // can see in all directions
{
@@ -99,45 +100,45 @@ static bool8 TrainerCanApproachPlayer(struct MapObject *trainerObj)
}
// Returns how far south the player is from trainer. 0 if out of trainer's sight.
-static u8 GetTrainerApproachDistanceSouth(struct MapObject *trainerObj, s16 range, s16 x, s16 y)
+static u8 GetTrainerApproachDistanceSouth(struct EventObject *trainerObj, s16 range, s16 x, s16 y)
{
- if (trainerObj->coords2.x == x
- && y > trainerObj->coords2.y
- && y <= trainerObj->coords2.y + range)
- return (y - trainerObj->coords2.y);
+ if (trainerObj->currentCoords.x == x
+ && y > trainerObj->currentCoords.y
+ && y <= trainerObj->currentCoords.y + range)
+ return (y - trainerObj->currentCoords.y);
else
return 0;
}
// Returns how far north the player is from trainer. 0 if out of trainer's sight.
-static u8 GetTrainerApproachDistanceNorth(struct MapObject *trainerObj, s16 range, s16 x, s16 y)
+static u8 GetTrainerApproachDistanceNorth(struct EventObject *trainerObj, s16 range, s16 x, s16 y)
{
- if (trainerObj->coords2.x == x
- && y < trainerObj->coords2.y
- && y >= trainerObj->coords2.y - range)
- return (trainerObj->coords2.y - y);
+ if (trainerObj->currentCoords.x == x
+ && y < trainerObj->currentCoords.y
+ && y >= trainerObj->currentCoords.y - range)
+ return (trainerObj->currentCoords.y - y);
else
return 0;
}
// Returns how far west the player is from trainer. 0 if out of trainer's sight.
-static u8 GetTrainerApproachDistanceWest(struct MapObject *trainerObj, s16 range, s16 x, s16 y)
+static u8 GetTrainerApproachDistanceWest(struct EventObject *trainerObj, s16 range, s16 x, s16 y)
{
- if (trainerObj->coords2.y == y
- && x < trainerObj->coords2.x
- && x >= trainerObj->coords2.x - range)
- return (trainerObj->coords2.x - x);
+ if (trainerObj->currentCoords.y == y
+ && x < trainerObj->currentCoords.x
+ && x >= trainerObj->currentCoords.x - range)
+ return (trainerObj->currentCoords.x - x);
else
return 0;
}
// Returns how far east the player is from trainer. 0 if out of trainer's sight.
-static u8 GetTrainerApproachDistanceEast(struct MapObject *trainerObj, s16 range, s16 x, s16 y)
+static u8 GetTrainerApproachDistanceEast(struct EventObject *trainerObj, s16 range, s16 x, s16 y)
{
- if (trainerObj->coords2.y == y
- && x > trainerObj->coords2.x
- && x <= trainerObj->coords2.x + range)
- return (x - trainerObj->coords2.x);
+ if (trainerObj->currentCoords.y == y
+ && x > trainerObj->currentCoords.x
+ && x <= trainerObj->currentCoords.x + range)
+ return (x - trainerObj->currentCoords.x);
else
return 0;
}
@@ -148,7 +149,7 @@ static u8 GetTrainerApproachDistanceEast(struct MapObject *trainerObj, s16 range
#define COLLISION_MASK 1
#endif
-static bool8 CheckPathBetweenTrainerAndPlayer(struct MapObject *trainerObj, u8 approachDistance, u8 direction)
+static bool8 CheckPathBetweenTrainerAndPlayer(struct EventObject *trainerObj, u8 approachDistance, u8 direction)
{
s16 x, y;
u8 unk19_temp;
@@ -159,23 +160,23 @@ static bool8 CheckPathBetweenTrainerAndPlayer(struct MapObject *trainerObj, u8 a
if (approachDistance == 0)
return FALSE;
- x = trainerObj->coords2.x;
- y = trainerObj->coords2.y;
+ x = trainerObj->currentCoords.x;
+ y = trainerObj->currentCoords.y;
for (i = 0; i <= approachDistance - 1; i++, MoveCoords(direction, &x, &y))
{
- collision = sub_8060024(trainerObj, x, y, direction);
+ collision = GetCollisionFlagsAtCoords(trainerObj, x, y, direction);
if (collision != 0 && (collision & COLLISION_MASK))
return FALSE;
}
- // preserve mapobj_unk_19 before clearing.
+ // preserve trainer sight range before clearing.
unk19_temp = trainerObj->range.as_nybbles.x;
unk19b_temp = trainerObj->range.as_nybbles.y;
trainerObj->range.as_nybbles.x = 0;
trainerObj->range.as_nybbles.y = 0;
- collision = npc_block_way((struct MapObject *)trainerObj, x, y, direction);
+ collision = GetCollisionAtCoords((struct EventObject *)trainerObj, x, y, direction);
trainerObj->range.as_nybbles.x = unk19_temp;
trainerObj->range.as_nybbles.y = unk19b_temp;
@@ -188,7 +189,7 @@ static bool8 CheckPathBetweenTrainerAndPlayer(struct MapObject *trainerObj, u8 a
#define tTrainerObjHi data[1]
#define tTrainerObjLo data[2]
-static void sub_80842C8(struct MapObject *trainerObj, u8 b)
+static void sub_80842C8(struct EventObject *trainerObj, u8 b)
{
u8 taskId = CreateTask(RunTrainerSeeFuncList, 0x50);
struct Task *task = &gTasks[taskId];
@@ -208,20 +209,20 @@ static void sub_80842FC(TaskFunc followupFunc)
taskFunc(taskId);
}
-static bool8 sub_8084394(u8 taskId, struct Task *task, struct MapObject *trainerObj);
-static bool8 sub_8084398(u8 taskId, struct Task *task, struct MapObject *trainerObj);
-static bool8 sub_80843DC(u8 taskId, struct Task *task, struct MapObject *trainerObj);
-static bool8 sub_808441C(u8 taskId, struct Task *task, struct MapObject *trainerObj);
-static bool8 sub_8084478(u8 taskId, struct Task *task, struct MapObject *trainerObj);
-static bool8 sub_8084534(u8 taskId, struct Task *task, struct MapObject *trainerObj);
-static bool8 sub_8084578(u8 taskId, struct Task *task, struct MapObject *trainerObj);
-static bool8 sub_80845AC(u8 taskId, struct Task *task, struct MapObject *trainerObj);
-static bool8 sub_80845C8(u8 taskId, struct Task *task, struct MapObject *trainerObj);
-static bool8 sub_80845FC(u8 taskId, struct Task *task, struct MapObject *trainerObj);
-static bool8 sub_8084654(u8 taskId, struct Task *task, struct MapObject *trainerObj);
-static bool8 sub_80846C8(u8 taskId, struct Task *task, struct MapObject *trainerObj);
+static bool8 sub_8084394(u8 taskId, struct Task *task, struct EventObject *trainerObj);
+static bool8 sub_8084398(u8 taskId, struct Task *task, struct EventObject *trainerObj);
+static bool8 sub_80843DC(u8 taskId, struct Task *task, struct EventObject *trainerObj);
+static bool8 sub_808441C(u8 taskId, struct Task *task, struct EventObject *trainerObj);
+static bool8 sub_8084478(u8 taskId, struct Task *task, struct EventObject *trainerObj);
+static bool8 sub_8084534(u8 taskId, struct Task *task, struct EventObject *trainerObj);
+static bool8 sub_8084578(u8 taskId, struct Task *task, struct EventObject *trainerObj);
+static bool8 sub_80845AC(u8 taskId, struct Task *task, struct EventObject *trainerObj);
+static bool8 sub_80845C8(u8 taskId, struct Task *task, struct EventObject *trainerObj);
+static bool8 sub_80845FC(u8 taskId, struct Task *task, struct EventObject *trainerObj);
+static bool8 sub_8084654(u8 taskId, struct Task *task, struct EventObject *trainerObj);
+static bool8 sub_80846C8(u8 taskId, struct Task *task, struct EventObject *trainerObj);
-static bool8 (*const gTrainerSeeFuncList[])(u8 taskId, struct Task *task, struct MapObject *trainerObj) =
+static bool8 (*const gTrainerSeeFuncList[])(u8 taskId, struct Task *task, struct EventObject *trainerObj) =
{
sub_8084394,
sub_8084398,
@@ -240,7 +241,7 @@ static bool8 (*const gTrainerSeeFuncList[])(u8 taskId, struct Task *task, struct
static void RunTrainerSeeFuncList(u8 taskId)
{
struct Task *task = &gTasks[taskId];
- struct MapObject *trainerObj = (struct MapObject *)((task->tTrainerObjHi << 16) | (task->tTrainerObjLo));
+ struct EventObject *trainerObj = (struct EventObject *)((task->tTrainerObjHi << 16) | (task->tTrainerObjLo));
if (!trainerObj->active)
{
@@ -253,125 +254,125 @@ static void RunTrainerSeeFuncList(u8 taskId)
}
}
-static bool8 sub_8084394(u8 taskId, struct Task *task, struct MapObject *trainerObj) // cant be void because it is called with RunTrainerSeeFuncList with arguments.
+static bool8 sub_8084394(u8 taskId, struct Task *task, struct EventObject *trainerObj) // cant be void because it is called with RunTrainerSeeFuncList with arguments.
{
return FALSE;
}
-static bool8 sub_8084398(u8 taskId, struct Task *task, struct MapObject *trainerObj)
+static bool8 sub_8084398(u8 taskId, struct Task *task, struct EventObject *trainerObj)
{
u8 direction;
- FieldObjectGetLocalIdAndMap(trainerObj, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]);
- FieldEffectStart(FLDEFF_EXCLAMATION_MARK_ICON_1);
- direction = GetFaceDirectionAnimId(trainerObj->mapobj_unk_18);
- FieldObjectSetSpecialAnim(trainerObj, direction);
+ EventObjectGetLocalIdAndMap(trainerObj, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]);
+ FieldEffectStart(FLDEFF_EXCLAMATION_MARK_ICON);
+ direction = GetFaceDirectionMovementAction(trainerObj->facingDirection);
+ EventObjectSetHeldMovement(trainerObj, direction);
task->data[0]++;
return TRUE;
}
-static bool8 sub_80843DC(u8 taskId, struct Task *task, struct MapObject *trainerObj)
+static bool8 sub_80843DC(u8 taskId, struct Task *task, struct EventObject *trainerObj)
{
- if (FieldEffectActiveListContains(0))
+ if (FieldEffectActiveListContains(FLDEFF_EXCLAMATION_MARK_ICON))
{
return FALSE;
}
else
{
task->data[0]++;
- if (trainerObj->animPattern == 57 || trainerObj->animPattern == 58)
+ if (trainerObj->movementType == MOVEMENT_TYPE_TREE_DISGUISE || trainerObj->movementType == MOVEMENT_TYPE_MOUNTAIN_DISGUISE)
task->data[0] = 6;
- if (trainerObj->animPattern == 63)
+ if (trainerObj->movementType == MOVEMENT_TYPE_HIDDEN)
task->data[0] = 8;
return TRUE;
}
}
-static bool8 sub_808441C(u8 taskId, struct Task *task, struct MapObject *trainerObj)
+static bool8 sub_808441C(u8 taskId, struct Task *task, struct EventObject *trainerObj)
{
- if (!(FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(trainerObj)) || FieldObjectClearAnimIfSpecialAnimFinished(trainerObj))
+ if (!(EventObjectIsMovementOverridden(trainerObj)) || EventObjectClearHeldMovementIfFinished(trainerObj))
{
if (task->data[3])
{
- FieldObjectSetSpecialAnim(trainerObj, GetGoSpeed0AnimId(trainerObj->mapobj_unk_18));
+ EventObjectSetHeldMovement(trainerObj, GetWalkNormalMovementAction(trainerObj->facingDirection));
task->data[3]--;
}
else
{
- FieldObjectSetSpecialAnim(trainerObj, 0x3E);
+ EventObjectSetHeldMovement(trainerObj, MOVEMENT_ACTION_FACE_PLAYER);
task->data[0]++;
}
}
return FALSE;
}
-static bool8 sub_8084478(u8 taskId, struct Task *task, struct MapObject *trainerObj)
+static bool8 sub_8084478(u8 taskId, struct Task *task, struct EventObject *trainerObj)
{
- struct MapObject *playerObj;
+ struct EventObject *playerObj;
- if (FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(trainerObj) && !FieldObjectClearAnimIfSpecialAnimFinished(trainerObj))
+ if (EventObjectIsMovementOverridden(trainerObj) && !EventObjectClearHeldMovementIfFinished(trainerObj))
return FALSE;
- npc_set_running_behaviour_etc(trainerObj, npc_running_behaviour_by_direction(trainerObj->mapobj_unk_18));
- sub_805C774(trainerObj, npc_running_behaviour_by_direction(trainerObj->mapobj_unk_18));
- sub_805C754(trainerObj);
+ SetTrainerMovementType(trainerObj, GetTrainerFacingDirectionMovementType(trainerObj->facingDirection));
+ OverrideMovementTypeForEventObject(trainerObj, GetTrainerFacingDirectionMovementType(trainerObj->facingDirection));
+ OverrideTemplateCoordsForEventObject(trainerObj);
- playerObj = &gMapObjects[gPlayerAvatar.mapObjectId];
- if (FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(playerObj) && !FieldObjectClearAnimIfSpecialAnimFinished(playerObj))
+ playerObj = &gEventObjects[gPlayerAvatar.eventObjectId];
+ if (EventObjectIsMovementOverridden(playerObj) && !EventObjectClearHeldMovementIfFinished(playerObj))
return FALSE;
sub_80597E8();
- FieldObjectSetSpecialAnim(&gMapObjects[gPlayerAvatar.mapObjectId], GetFaceDirectionAnimId(GetOppositeDirection(trainerObj->mapobj_unk_18)));
+ EventObjectSetHeldMovement(&gEventObjects[gPlayerAvatar.eventObjectId], GetFaceDirectionMovementAction(GetOppositeDirection(trainerObj->facingDirection)));
task->data[0]++;
return FALSE;
}
-static bool8 sub_8084534(u8 taskId, struct Task *task, struct MapObject *trainerObj) // technically only 1 parameter, but needs all 3 for TrainerSeeFuncList call.
+static bool8 sub_8084534(u8 taskId, struct Task *task, struct EventObject *trainerObj) // technically only 1 parameter, but needs all 3 for TrainerSeeFuncList call.
{
- struct MapObject *playerObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+ struct EventObject *playerObj = &gEventObjects[gPlayerAvatar.eventObjectId];
- if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(playerObj)
- || FieldObjectClearAnimIfSpecialAnimFinished(playerObj))
+ if (!EventObjectIsMovementOverridden(playerObj)
+ || EventObjectClearHeldMovementIfFinished(playerObj))
SwitchTaskToFollowupFunc(taskId);
return FALSE;
}
-static bool8 sub_8084578(u8 taskId, struct Task *task, struct MapObject *trainerObj)
+static bool8 sub_8084578(u8 taskId, struct Task *task, struct EventObject *trainerObj)
{
- if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(trainerObj)
- || FieldObjectClearAnimIfSpecialAnimFinished(trainerObj))
+ if (!EventObjectIsMovementOverridden(trainerObj)
+ || EventObjectClearHeldMovementIfFinished(trainerObj))
{
- FieldObjectSetSpecialAnim(trainerObj, 0x59);
+ EventObjectSetHeldMovement(trainerObj, MOVEMENT_ACTION_REVEAL_TRAINER);
task->data[0]++;
}
return FALSE;
}
-static bool8 sub_80845AC(u8 taskId, struct Task *task, struct MapObject *trainerObj)
+static bool8 sub_80845AC(u8 taskId, struct Task *task, struct EventObject *trainerObj)
{
- if (FieldObjectClearAnimIfSpecialAnimFinished(trainerObj))
+ if (EventObjectClearHeldMovementIfFinished(trainerObj))
task->data[0] = 3;
return FALSE;
}
-static bool8 sub_80845C8(u8 taskId, struct Task *task, struct MapObject *trainerObj)
+static bool8 sub_80845C8(u8 taskId, struct Task *task, struct EventObject *trainerObj)
{
- if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(trainerObj)
- || FieldObjectClearAnimIfSpecialAnimFinished(trainerObj))
+ if (!EventObjectIsMovementOverridden(trainerObj)
+ || EventObjectClearHeldMovementIfFinished(trainerObj))
{
- FieldObjectSetSpecialAnim(trainerObj, 0x3E);
+ EventObjectSetHeldMovement(trainerObj, MOVEMENT_ACTION_FACE_PLAYER);
task->data[0]++;
}
return FALSE;
}
-static bool8 sub_80845FC(u8 taskId, struct Task *task, struct MapObject *trainerObj)
+static bool8 sub_80845FC(u8 taskId, struct Task *task, struct EventObject *trainerObj)
{
- if (FieldObjectCheckIfSpecialAnimFinishedOrInactive(trainerObj))
+ if (EventObjectCheckHeldMovementStatus(trainerObj))
{
- gFieldEffectArguments[0] = trainerObj->coords2.x;
- gFieldEffectArguments[1] = trainerObj->coords2.y;
+ gFieldEffectArguments[0] = trainerObj->currentCoords.x;
+ gFieldEffectArguments[1] = trainerObj->currentCoords.y;
gFieldEffectArguments[2] = gSprites[trainerObj->spriteId].subpriority - 1;
gFieldEffectArguments[3] = 2;
task->data[4] = FieldEffectStart(FLDEFF_POP_OUT_OF_ASH);
@@ -380,33 +381,33 @@ static bool8 sub_80845FC(u8 taskId, struct Task *task, struct MapObject *trainer
return FALSE;
}
-static bool8 sub_8084654(u8 taskId, struct Task *task, struct MapObject *trainerObj)
+static bool8 sub_8084654(u8 taskId, struct Task *task, struct EventObject *trainerObj)
{
struct Sprite *sprite;
if (gSprites[task->data[4]].animCmdIndex == 2)
{
- trainerObj->mapobj_bit_26 = 0;
- trainerObj->mapobj_bit_2 = 1;
+ trainerObj->fixedPriority = 0;
+ trainerObj->triggerGroundEffectsOnMove = 1;
sprite = &gSprites[trainerObj->spriteId];
sprite->oam.priority = 2;
- FieldObjectClearAnimIfSpecialAnimFinished(trainerObj);
- FieldObjectSetSpecialAnim(trainerObj, sub_806084C(trainerObj->mapobj_unk_18));
+ EventObjectClearHeldMovementIfFinished(trainerObj);
+ EventObjectSetHeldMovement(trainerObj, GetJumpInPlaceMovementAction(trainerObj->facingDirection));
task->data[0]++;
}
return FALSE;
}
-static bool8 sub_80846C8(u8 taskId, struct Task *task, struct MapObject *trainerObj)
+static bool8 sub_80846C8(u8 taskId, struct Task *task, struct EventObject *trainerObj)
{
- if (!FieldEffectActiveListContains(49))
+ if (!FieldEffectActiveListContains(FLDEFF_POP_OUT_OF_ASH))
task->data[0] = 3;
return FALSE;
}
-static bool8 (*const gTrainerSeeFuncList2[])(u8, struct Task *, struct MapObject *) =
+static bool8 (*const gTrainerSeeFuncList2[])(u8, struct Task *, struct EventObject *) =
{
sub_80845C8,
sub_80845FC,
@@ -417,27 +418,29 @@ static bool8 (*const gTrainerSeeFuncList2[])(u8, struct Task *, struct MapObject
void sub_80846E4(u8 taskId)
{
struct Task *task = &gTasks[taskId];
- struct MapObject *mapObj;
+ struct EventObject *eventObj;
- // another mapObj loaded into by loadword?
- LoadWordFromTwoHalfwords(&task->data[1], (u32 *)&mapObj);
+ // another eventObj loaded into by loadword?
+ LoadWordFromTwoHalfwords(&task->data[1], (u32 *)&eventObj);
if (!task->data[7])
{
- FieldObjectClearAnim(mapObj);
+ EventObjectClearHeldMovement(eventObj);
task->data[7]++;
}
- gTrainerSeeFuncList2[task->data[0]](taskId, task, mapObj);
- if (task->data[0] == 3 && !FieldEffectActiveListContains(49))
+ gTrainerSeeFuncList2[task->data[0]](taskId, task, eventObj);
+ if (task->data[0] == 3 && !FieldEffectActiveListContains(FLDEFF_POP_OUT_OF_ASH))
{
- npc_set_running_behaviour_etc(mapObj, npc_running_behaviour_by_direction(mapObj->mapobj_unk_18));
- sub_805C774(mapObj, npc_running_behaviour_by_direction(mapObj->mapobj_unk_18));
+ SetTrainerMovementType(eventObj, GetTrainerFacingDirectionMovementType(eventObj->facingDirection));
+ OverrideMovementTypeForEventObject(eventObj, GetTrainerFacingDirectionMovementType(eventObj->facingDirection));
DestroyTask(taskId);
}
else
- mapObj->mapobj_bit_7 = 0;
+ {
+ eventObj->heldMovementFinished = 0;
+ }
}
-void sub_8084794(struct MapObject *var)
+void sub_8084794(struct EventObject *var)
{
StoreWordInTwoHalfwords(&gTasks[CreateTask(sub_80846E4, 0)].data[1], (u32)var);
}
@@ -490,7 +493,7 @@ static const struct SpriteTemplate gSpriteTemplate_839B528 = {
0xffff, 4100, &gOamData_839B4D8, gSpriteAnimTable_839B508, gSpriteImageTable_839B4F0, gDummySpriteAffineAnimTable, objc_exclamation_mark_probably
};
-u8 FldEff_ExclamationMarkIcon1(void)
+u8 FldEff_ExclamationMarkIcon(void)
{
u8 spriteId = CreateSpriteAtEnd(&gSpriteTemplate_839B510, 0, 0, 0x53);
@@ -500,7 +503,7 @@ u8 FldEff_ExclamationMarkIcon1(void)
return 0;
}
-u8 FldEff_ExclamationMarkIcon2(void)
+u8 FldEff_QuestionMarkIcon(void)
{
u8 spriteId = CreateSpriteAtEnd(&gSpriteTemplate_839B510, 0, 0, 0x52);
@@ -536,21 +539,21 @@ static void sub_8084894(struct Sprite *sprite, u16 a2, u8 a3)
static void objc_exclamation_mark_probably(struct Sprite *sprite)
{
- u8 mapObjId;
+ u8 eventObjId;
- if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data[0], sprite->data[1], sprite->data[2], &mapObjId)
+ if (TryGetEventObjectIdByLocalIdAndMap(sprite->data[0], sprite->data[1], sprite->data[2], &eventObjId)
|| sprite->animEnded)
{
FieldEffectStop(sprite, (u8)sprite->data[7]);
}
else
{
- struct Sprite *mapObjSprite = &gSprites[gMapObjects[mapObjId].spriteId];
+ struct Sprite *eventObjSprite = &gSprites[gEventObjects[eventObjId].spriteId];
sprite->data[4] += sprite->data[3];
- sprite->pos1.x = mapObjSprite->pos1.x;
- sprite->pos1.y = mapObjSprite->pos1.y - 16;
- sprite->pos2.x = mapObjSprite->pos2.x;
- sprite->pos2.y = mapObjSprite->pos2.y + sprite->data[4];
+ sprite->pos1.x = eventObjSprite->pos1.x;
+ sprite->pos1.y = eventObjSprite->pos1.y - 16;
+ sprite->pos2.x = eventObjSprite->pos2.x;
+ sprite->pos2.y = eventObjSprite->pos2.y + sprite->data[4];
if (sprite->data[4])
sprite->data[3]++;
else
diff --git a/src/tv.c b/src/tv.c
index 17e98f940..fd6b7c62f 100644
--- a/src/tv.c
+++ b/src/tv.c
@@ -41,7 +41,7 @@
#include "text.h"
#include "ewram.h"
#include "constants/moves.h"
-#include "region_map_sections.h"
+#include "constants/region_map_sections.h"
struct UnkTvStruct
{
@@ -69,10 +69,9 @@ struct UnkTvStruct gUnknown_03005D38;
extern u16 gSpecialVar_LastTalked;
-extern u8 gSpecialVar_ContestCategory;
-extern u8 gUnknown_03004316[11];
+extern u16 gSpecialVar_ContestCategory;
+extern u16 gSpecialVar_ContestRank;
extern u8 gBattleOutcome;
-
extern u16 gLastUsedItem;
static EWRAM_DATA u16 gUnknown_020387E0 = 0;
@@ -90,31 +89,31 @@ const struct OutbreakPokemon gPokeOutbreakSpeciesList[5] =
.species = SPECIES_SURSKIT,
.moves = {MOVE_BUBBLE, MOVE_QUICK_ATTACK, MOVE_NONE, MOVE_NONE},
.level = 3,
- .location = MAPSEC_Route102,
+ .location = MAPSEC_ROUTE_102,
},
{
.species = SPECIES_SURSKIT,
.moves = {MOVE_BUBBLE, MOVE_QUICK_ATTACK, MOVE_NONE, MOVE_NONE},
.level = 15,
- .location = MAPSEC_Route114,
+ .location = MAPSEC_ROUTE_114,
},
{
.species = SPECIES_SURSKIT,
.moves = {MOVE_BUBBLE, MOVE_QUICK_ATTACK, MOVE_NONE, MOVE_NONE},
.level = 15,
- .location = MAPSEC_Route117,
+ .location = MAPSEC_ROUTE_117,
},
{
.species = SPECIES_SURSKIT,
.moves = {MOVE_BUBBLE, MOVE_QUICK_ATTACK, MOVE_NONE, MOVE_NONE},
.level = 28,
- .location = MAPSEC_Route120,
+ .location = MAPSEC_ROUTE_120,
},
{
.species = SPECIES_SKITTY,
.moves = {MOVE_GROWL, MOVE_TACKLE, MOVE_NONE, MOVE_NONE},
.level = 15,
- .location = MAPSEC_Route116,
+ .location = MAPSEC_ROUTE_116,
},
};
@@ -443,6 +442,8 @@ void ClearTVShowData(void)
sub_80BEBF4();
}
+bool8 sub_80BF1B4(u8);
+void sub_80BF20C(void);
void InterviewBefore_FanClubLetter(void);
void InterviewBefore_RecentHappenings(void);
@@ -649,7 +650,7 @@ void GabbyAndTyBeforeInterview(void)
{
for (i=0; i<11; i++)
{
- if (gBattleResults.unk36[i] != 0)
+ if (gBattleResults.usedBalls[i] != 0)
{
gSaveBlock1.gabbyAndTyData.valA_3 = 1;
break;
@@ -718,7 +719,7 @@ u8 GabbyAndTyGetLastBattleTrivia(void)
return 0;
}
-void GabbyAndTySetScriptVarsToFieldObjectLocalIds(void)
+void GabbyAndTySetScriptVarsToEventObjectLocalIds(void)
{
switch (GabbyAndTyGetBattleNum())
{
@@ -814,7 +815,7 @@ void PutPokemonTodayCaughtOnAir(void)
if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_POKEMON_TODAY_CAUGHT) != 1)
{
for (i = 0; i < 11; i++)
- total += gBattleResults.unk36[i];
+ total += gBattleResults.usedBalls[i];
if (total != 0 || gBattleResults.unk5_1 != 0)
{
struct TVShowPokemonToday *pokemonToday;
@@ -831,7 +832,7 @@ void PutPokemonTodayCaughtOnAir(void)
else
{
for (i = 0; i < 11; i++)
- total += gBattleResults.unk36[i];
+ total += gBattleResults.usedBalls[i];
if (total > 0xff)
total = 0xff;
item = gLastUsedItem;
@@ -875,8 +876,8 @@ void sub_80BE074(void)
if (sub_80BF77C(0xffff) == 0)
{
- for (i = 0, total = 0; i < ARRAY_COUNT(gUnknown_03004316); i++)
- total += gUnknown_03004316[i];
+ for (i = 0, total = 0; i < 11; i++)
+ total += gBattleResults.usedBalls[i];
if (total > 0xff)
total = 0xff;
if (total > 2 && gBattleOutcome == 1)
@@ -986,7 +987,7 @@ void InterviewAfter_BravoTrainerBattleTowerProfile(void)
bravoTrainerTower->kind = TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE;
bravoTrainerTower->active = 1;
StringCopy(bravoTrainerTower->trainerName, gSaveBlock2.playerName);
- StringCopy(bravoTrainerTower->pokemonName, gSaveBlock2.battleTower.defeatedByTrainerName);
+ StringCopy(bravoTrainerTower->enemyTrainerName, gSaveBlock2.battleTower.defeatedByTrainerName);
bravoTrainerTower->species = gSaveBlock2.battleTower.firstMonSpecies;
bravoTrainerTower->defeatedSpecies = gSaveBlock2.battleTower.defeatedBySpecies;
bravoTrainerTower->var16 = GetCurrentBattleTowerWinStreak(gSaveBlock2.battleTower.lastStreakLevelType);
@@ -2183,7 +2184,7 @@ void GetMomOrDadStringForTVMessage(void)
void sub_80BFD20(void)
{
VarSet(VAR_BRAVO_TRAINER_BATTLE_TOWER_ON, 0);
- RemoveFieldObjectByLocalIdAndMap(5, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup);
+ RemoveEventObjectByLocalIdAndMap(5, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup);
}
typedef union ewramStruct_02007000
@@ -2417,7 +2418,7 @@ void sub_80C01D4(void)
}
}
#else
-__attribute__((naked))
+NAKED
void sub_80C01D4(void) {
asm(".syntax unified\n\
push {r4-r6,lr}\n\
@@ -2950,7 +2951,7 @@ void DoTVShowBravoTrainerBattleTowerProfile(void)
sTVShowState = 4;
break;
case 2:
- TVShowConvertInternationalString(gStringVar1, bravoTrainerTower->pokemonName, bravoTrainerTower->language);
+ TVShowConvertInternationalString(gStringVar1, bravoTrainerTower->enemyTrainerName, bravoTrainerTower->language);
sub_80BF088(1, bravoTrainerTower->var16 + 1);
if (bravoTrainerTower->var1b == 0)
sTVShowState = 5;
@@ -2958,7 +2959,7 @@ void DoTVShowBravoTrainerBattleTowerProfile(void)
sTVShowState = 6;
break;
case 3:
- TVShowConvertInternationalString(gStringVar1, bravoTrainerTower->pokemonName, bravoTrainerTower->language);
+ TVShowConvertInternationalString(gStringVar1, bravoTrainerTower->enemyTrainerName, bravoTrainerTower->language);
StringCopy(gStringVar2, gSpeciesNames[bravoTrainerTower->defeatedSpecies]);
if (bravoTrainerTower->var1b == 0)
sTVShowState = 5;
@@ -2966,7 +2967,7 @@ void DoTVShowBravoTrainerBattleTowerProfile(void)
sTVShowState = 6;
break;
case 4:
- TVShowConvertInternationalString(gStringVar1, bravoTrainerTower->pokemonName, bravoTrainerTower->language);
+ TVShowConvertInternationalString(gStringVar1, bravoTrainerTower->enemyTrainerName, bravoTrainerTower->language);
StringCopy(gStringVar2, gSpeciesNames[bravoTrainerTower->defeatedSpecies]);
if (bravoTrainerTower->var1b == 0)
sTVShowState = 5;
@@ -2974,11 +2975,11 @@ void DoTVShowBravoTrainerBattleTowerProfile(void)
sTVShowState = 6;
break;
case 5:
- TVShowConvertInternationalString(gStringVar1, bravoTrainerTower->pokemonName, bravoTrainerTower->language);
+ TVShowConvertInternationalString(gStringVar1, bravoTrainerTower->enemyTrainerName, bravoTrainerTower->language);
sTVShowState = 11;
break;
case 6:
- TVShowConvertInternationalString(gStringVar1, bravoTrainerTower->pokemonName, bravoTrainerTower->language);
+ TVShowConvertInternationalString(gStringVar1, bravoTrainerTower->enemyTrainerName, bravoTrainerTower->language);
sTVShowState = 11;
break;
case 7:
@@ -3001,7 +3002,7 @@ void DoTVShowBravoTrainerBattleTowerProfile(void)
case 13:
EasyChat_GetWordText(gStringVar1, bravoTrainerTower->var18[0]);
TVShowConvertInternationalString(gStringVar2, bravoTrainerTower->trainerName, bravoTrainerTower->language);
- TVShowConvertInternationalString(gStringVar3, bravoTrainerTower->pokemonName, bravoTrainerTower->language);
+ TVShowConvertInternationalString(gStringVar3, bravoTrainerTower->enemyTrainerName, bravoTrainerTower->language);
sTVShowState = 14;
break;
case 14:
diff --git a/src/unk_text_8095904.c b/src/unk_text_8095904.c
index 4b190bdaa..df0a35e7c 100644
--- a/src/unk_text_8095904.c
+++ b/src/unk_text_8095904.c
@@ -64,7 +64,7 @@ void sub_8095904(const u8 *src, u8 *dest, u8 bgOverride, u16 width, u8 bg, u8 *b
}
}
#else
-__attribute__((naked)) void sub_8095904(const u8 *src, u8 *dest, u8 bgOverride, u16 width, u8 bg, u8 *buffer)
+NAKED void sub_8095904(const u8 *src, u8 *dest, u8 bgOverride, u16 width, u8 bg, u8 *buffer)
{
asm_unified("\tpush {r4-r7,lr}\n"
"\tmov r7, r10\n"
diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c
index 8ea93aab8..bdf6f4a44 100644
--- a/src/use_pokeblock.c
+++ b/src/use_pokeblock.c
@@ -354,7 +354,7 @@ static void sub_81365C8(void)
switch (gUnknown_02039304->unk50)
{
case 0:
- BeginNormalPaletteFade(-1, 0, 16, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
SetVBlankCallback(sub_8136264);
gUnknown_02039304->unk50++;
break;
@@ -467,7 +467,7 @@ static void sub_8136808(void)
gPokeblockMonID = sub_81370A4(gUnknown_083DFEC4->unk87DC);
gUnknown_02039308 = gUnknown_02039304->callback;
gUnknown_0203930C = gUnknown_02039304->pokeblock;
- BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gUnknown_02039304->unk50++;
break;
case 1:
@@ -509,7 +509,7 @@ static void sub_81368A4(void)
}
break;
case 3:
- BlendPalettes(-1, 16, 0);
+ BlendPalettes(0xFFFFFFFF, 16, RGB(0, 0, 0));
gUnknown_02039304->unk50++;
break;
case 4:
@@ -518,7 +518,7 @@ static void sub_81368A4(void)
break;
case 5:
SetVBlankCallback(sub_8136264);
- BeginNormalPaletteFade(-1, 0, 16, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
gUnknown_02039304->unk50++;
break;
case 6:
@@ -585,7 +585,7 @@ static void sub_8136B44(void)
switch (gUnknown_02039304->unk50)
{
case 0:
- BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gUnknown_02039304->unk50++;
break;
case 1:
@@ -697,7 +697,7 @@ static void Pokeblock_BufferEnhancedStatText(u8 *dest, u8 statID, s16 a2)
}
}
#else
-__attribute__((naked))
+NAKED
static void Pokeblock_BufferEnhancedStatText(u8 *dest, u8 a1, s16 a2)
{
asm_unified("\tpush {r4,lr}\n"
diff --git a/src/util.c b/src/util.c
index 582b9f806..2e76cf4de 100644
--- a/src/util.c
+++ b/src/util.c
@@ -231,7 +231,7 @@ void CopySpriteTiles(u8 shape, u8 size, u8 *tiles, u16 *tilemap, u8 *output)
#else
-__attribute__((naked)) void CopySpriteTiles(u8 shape, u8 size, u8 *tiles, u16 *tilemap, u8 *output)
+NAKED void CopySpriteTiles(u8 shape, u8 size, u8 *tiles, u16 *tilemap, u8 *output)
{
asm("\n"
" .syntax unified\n"
@@ -490,7 +490,7 @@ int CountTrailingZeroBits(u32 value)
return 0;
}
-u16 CalcCRC16(u8 *data, int length)
+u16 CalcCRC16(const u8 *data, int length)
{
u16 i, j;
u16 crc = 0x1121;
diff --git a/src/wallclock.c b/src/wallclock.c
index 1f743a61a..bdef8e0f4 100644
--- a/src/wallclock.c
+++ b/src/wallclock.c
@@ -222,14 +222,14 @@ static void LoadWallClockGraphics(void)
LoadCompressedObjectPic(&gUnknown_083F7A90[0]);
LoadSpritePalettes(gUnknown_083F7AA0);
Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C);
- InitMenuWindow(&gWindowTemplate_81E6CE4);
+ InitMenuWindow(&gMenuTextWindowTemplate);
}
static void WallClockInit(void)
{
u16 ime;
- BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
ime = REG_IME;
REG_IME = 0;
REG_IE |= INTR_FLAG_VBLANK;
@@ -430,7 +430,7 @@ static void Task_SetClock4(u8 taskId)
static void Task_SetClock5(u8 taskId)
{
RtcInitLocalTimeOffset(gTasks[taskId].tHours, gTasks[taskId].tMinutes);
- BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gTasks[taskId].func = Task_SetClock6;
}
@@ -456,7 +456,7 @@ static void Task_ViewClock2(u8 taskId)
static void Task_ViewClock3(u8 taskId)
{
- BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gTasks[taskId].func = Task_ViewClock4;
}
diff --git a/src/wild_encounter.c b/src/wild_encounter.c
index 19778e29b..133f8b3aa 100644
--- a/src/wild_encounter.c
+++ b/src/wild_encounter.c
@@ -3698,7 +3698,7 @@ const u16 gRoute119WaterTileData[] =
extern u16 gSpecialVar_Result;
extern u8 S_RepelWoreOff[];
-EWRAM_DATA u8 sWildEncountersDisabled = 0;
+EWRAM_DATA u8 gWildEncountersDisabled = 0;
EWRAM_DATA static u32 sFeebasRngValue = 0;
#define NUM_FEEBAS_SPOTS 6
@@ -3712,7 +3712,7 @@ static void ApplyCleanseTagEncounterRateMod(u32 *encRate);
void DisableWildEncounters(bool8 disabled)
{
- sWildEncountersDisabled = disabled;
+ gWildEncountersDisabled = disabled;
}
static u16 GetRoute119WaterTileNum(s16 x, s16 y, u8 section)
@@ -3725,9 +3725,9 @@ static u16 GetRoute119WaterTileNum(s16 x, s16 y, u8 section)
for (yCur = yMin; yCur <= yMax; yCur++)
{
- for (xCur = 0; xCur < gMapHeader.mapData->width; xCur++)
+ for (xCur = 0; xCur < gMapHeader.mapLayout->width; xCur++)
{
- if (sub_805759C(MapGridGetMetatileBehaviorAt(xCur + 7, yCur + 7)) == TRUE)
+ if (MetatileBehavior_IsFeebasEncounterable(MapGridGetMetatileBehaviorAt(xCur + 7, yCur + 7)) == TRUE)
{
tileNum++;
if (x == xCur && y == yCur)
@@ -3803,7 +3803,7 @@ void FeebasSeedRng(u16 seed)
}
#if DEBUG
-u16 debug_sub_8092344(u8 arg0)
+u16 FeebasDebug_GetTrueNumberOfWaterTilesInMapThird(u8 arg0)
{
if (arg0 == 0)
return 131;
@@ -4105,23 +4105,23 @@ static bool8 DoGlobalWildEncounterDiceRoll(void)
return TRUE;
}
-bool8 StandardWildEncounter(u16 a, u16 b)
+bool8 StandardWildEncounter(u16 curMetatileBehavior, u16 prevMetatileBehavior)
{
u16 headerNum;
struct Roamer *roamer;
- if (sWildEncountersDisabled == TRUE)
+ if (gWildEncountersDisabled == TRUE)
return 0;
else
{
headerNum = GetCurrentMapWildMonHeader();
if (headerNum != 0xFFFF)
{
- if (MetatileBehavior_IsLandWildEncounter(a) == TRUE)
+ if (MetatileBehavior_IsLandWildEncounter(curMetatileBehavior) == TRUE)
{
if (gWildMonHeaders[headerNum].landMonsInfo)
{
- if (b != a && !DoGlobalWildEncounterDiceRoll())
+ if (prevMetatileBehavior != curMetatileBehavior && !DoGlobalWildEncounterDiceRoll())
return 0;
if (DoWildEncounterTest(gWildMonHeaders[headerNum].landMonsInfo->encounterRate, 0) == TRUE)
@@ -4150,12 +4150,12 @@ bool8 StandardWildEncounter(u16 a, u16 b)
}
}
}
- else if (MetatileBehavior_IsWaterWildEncounter(a) == TRUE
- || (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING) && MetatileBehavior_IsBridge(a) == TRUE))
+ else if (MetatileBehavior_IsWaterWildEncounter(curMetatileBehavior) == TRUE
+ || (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING) && MetatileBehavior_IsBridge(curMetatileBehavior) == TRUE))
{
if (gWildMonHeaders[headerNum].waterMonsInfo)
{
- if (b != a && !DoGlobalWildEncounterDiceRoll())
+ if (prevMetatileBehavior != curMetatileBehavior && !DoGlobalWildEncounterDiceRoll())
return 0;
if (DoWildEncounterTest(gWildMonHeaders[headerNum].waterMonsInfo->encounterRate, 0) == TRUE)